From 085d092b91b1f7d6eb31a93dea95d83e20c07781 Mon Sep 17 00:00:00 2001 From: david Date: Mon, 10 Sep 2007 17:18:54 +0000 Subject: [PATCH] git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.TB2k-TBX@2 4e37a1f5-3b83-2843-91c9-eaf97b5a2236 --- official/2.1.6+2.1.beta1/DemoProj/.cvsignore | 5 + official/2.1.6+2.1.beta1/DemoProj/Demo.cfg | 33 + official/2.1.6+2.1.beta1/DemoProj/Demo.dof | 29 + official/2.1.6+2.1.beta1/DemoProj/Demo.dpr | 14 + official/2.1.6+2.1.beta1/DemoProj/Demo.res | Bin 0 -> 876 bytes official/2.1.6+2.1.beta1/DemoProj/Demo1.dfm | Bin 0 -> 11901 bytes official/2.1.6+2.1.beta1/DemoProj/Demo1.pas | 253 + official/2.1.6+2.1.beta1/DemoProj/DemoBCB.bpr | 179 + official/2.1.6+2.1.beta1/DemoProj/DemoBCB.cpp | 22 + official/2.1.6+2.1.beta1/DemoProj/DemoBCB.res | Bin 0 -> 876 bytes .../2.1.6+2.1.beta1/DemoProj/DemoBCB6.bpr | 115 + .../2.1.6+2.1.beta1/DemoProj/DemoBCB6.cpp | 34 + .../2.1.6+2.1.beta1/DemoProj/DemoBCB6.res | Bin 0 -> 876 bytes official/2.1.6+2.1.beta1/GPL-LICENSE.txt | 340 + official/2.1.6+2.1.beta1/Glyphs.zip | Bin 0 -> 11257 bytes official/2.1.6+2.1.beta1/LICENSE.txt | 17 + official/2.1.6+2.1.beta1/Lib/D10/TB2Acc.dcu | Bin 0 -> 37653 bytes official/2.1.6+2.1.beta1/Lib/D10/TB2Anim.dcu | Bin 0 -> 5759 bytes .../2.1.6+2.1.beta1/Lib/D10/TB2Common.dcu | Bin 0 -> 20434 bytes .../2.1.6+2.1.beta1/Lib/D10/TB2Consts.dcu | Bin 0 -> 1476 bytes official/2.1.6+2.1.beta1/Lib/D10/TB2Dock.dcu | Bin 0 -> 116431 bytes .../Lib/D10/TB2DsgnConvertOptions.dcu | Bin 0 -> 5083 bytes .../Lib/D10/TB2DsgnConverter.dcu | Bin 0 -> 9051 bytes .../Lib/D10/TB2DsgnItemEditor.dcu | Bin 0 -> 40616 bytes .../2.1.6+2.1.beta1/Lib/D10/TB2ExtItems.dcu | Bin 0 -> 36952 bytes official/2.1.6+2.1.beta1/Lib/D10/TB2Hook.dcu | Bin 0 -> 5794 bytes official/2.1.6+2.1.beta1/Lib/D10/TB2Item.dcu | Bin 0 -> 147732 bytes official/2.1.6+2.1.beta1/Lib/D10/TB2MDI.dcu | Bin 0 -> 24891 bytes official/2.1.6+2.1.beta1/Lib/D10/TB2MRU.dcu | Bin 0 -> 13398 bytes official/2.1.6+2.1.beta1/Lib/D10/TB2Reg.dcu | Bin 0 -> 10554 bytes .../2.1.6+2.1.beta1/Lib/D10/TB2ToolWindow.dcu | Bin 0 -> 13984 bytes .../2.1.6+2.1.beta1/Lib/D10/TB2Toolbar.dcu | Bin 0 -> 51532 bytes .../2.1.6+2.1.beta1/Lib/D10/TB2Version.dcu | Bin 0 -> 745 bytes official/2.1.6+2.1.beta1/Lib/D10/TBX.dcu | Bin 0 -> 141798 bytes .../Lib/D10/TBXDefaultTheme.dcu | Bin 0 -> 48685 bytes .../2.1.6+2.1.beta1/Lib/D10/TBXDkPanels.dcu | Bin 0 -> 196614 bytes .../2.1.6+2.1.beta1/Lib/D10/TBXExtItems.dcu | Bin 0 -> 93964 bytes official/2.1.6+2.1.beta1/Lib/D10/TBXLists.dcu | Bin 0 -> 45304 bytes official/2.1.6+2.1.beta1/Lib/D10/TBXMDI.dcu | Bin 0 -> 31123 bytes .../Lib/D10/TBXOffice2003Theme.dcu | Bin 0 -> 55911 bytes .../Lib/D10/TBXOfficeXPTheme.dcu | Bin 0 -> 47168 bytes official/2.1.6+2.1.beta1/Lib/D10/TBXReg.dcu | Bin 0 -> 25957 bytes .../2.1.6+2.1.beta1/Lib/D10/TBXStatusBars.dcu | Bin 0 -> 39525 bytes .../2.1.6+2.1.beta1/Lib/D10/TBXStrEdit.dcu | Bin 0 -> 6084 bytes .../2.1.6+2.1.beta1/Lib/D10/TBXSwitcher.dcu | Bin 0 -> 5385 bytes .../2.1.6+2.1.beta1/Lib/D10/TBXThemes.dcu | Bin 0 -> 30129 bytes .../2.1.6+2.1.beta1/Lib/D10/TBXToolPals.dcu | Bin 0 -> 39481 bytes official/2.1.6+2.1.beta1/Lib/D10/TBXUtils.dcu | Bin 0 -> 64333 bytes .../2.1.6+2.1.beta1/Lib/D10/TBXUxThemes.dcu | Bin 0 -> 34516 bytes .../Lib/D10/TBXWhidbeyTheme.dcu | Bin 0 -> 51496 bytes official/2.1.6+2.1.beta1/Lib/D10/TBX_MDI.res | Bin 0 -> 712 bytes .../2.1.6+2.1.beta1/Lib/D10/rmkThemes.dcu | Bin 0 -> 13522 bytes official/2.1.6+2.1.beta1/Lib/D10/tb2k_d10.dcu | Bin 0 -> 2371 bytes .../2.1.6+2.1.beta1/Lib/D10/tb2kdsgn_d10.dcu | Bin 0 -> 4159 bytes official/2.1.6+2.1.beta1/Lib/D10/tbx_d10.bpl | Bin 0 -> 446976 bytes official/2.1.6+2.1.beta1/Lib/D10/tbx_d10.dcp | Bin 0 -> 819351 bytes official/2.1.6+2.1.beta1/Lib/D10/tbx_d10.dcu | Bin 0 -> 3292 bytes .../2.1.6+2.1.beta1/Lib/D10/tbx_glyphs.res | Bin 0 -> 256 bytes .../2.1.6+2.1.beta1/Lib/D10/tbxdsgn_d10.bpl | Bin 0 -> 63488 bytes .../2.1.6+2.1.beta1/Lib/D10/tbxdsgn_d10.dcp | Bin 0 -> 28660 bytes .../2.1.6+2.1.beta1/Lib/D10/tbxdsgn_d10.dcu | Bin 0 -> 4442 bytes official/2.1.6+2.1.beta1/Lib/D7/TB2Acc.dcu | Bin 0 -> 35600 bytes official/2.1.6+2.1.beta1/Lib/D7/TB2Anim.dcu | Bin 0 -> 5480 bytes official/2.1.6+2.1.beta1/Lib/D7/TB2Common.dcu | Bin 0 -> 19757 bytes official/2.1.6+2.1.beta1/Lib/D7/TB2Consts.dcu | Bin 0 -> 1426 bytes official/2.1.6+2.1.beta1/Lib/D7/TB2Dock.dcu | Bin 0 -> 108135 bytes .../Lib/D7/TB2DsgnConvertOptions.dcu | Bin 0 -> 4828 bytes .../Lib/D7/TB2DsgnConverter.dcu | Bin 0 -> 8740 bytes .../Lib/D7/TB2DsgnItemEditor.dcu | Bin 0 -> 38477 bytes .../Lib/D7/TB2DsgnItemEditor.res | Bin 0 -> 2520 bytes .../2.1.6+2.1.beta1/Lib/D7/TB2ExtItems.dcu | Bin 0 -> 34254 bytes official/2.1.6+2.1.beta1/Lib/D7/TB2Hook.dcu | Bin 0 -> 5578 bytes official/2.1.6+2.1.beta1/Lib/D7/TB2Item.dcu | Bin 0 -> 135570 bytes official/2.1.6+2.1.beta1/Lib/D7/TB2MDI.dcu | Bin 0 -> 23673 bytes official/2.1.6+2.1.beta1/Lib/D7/TB2MDI.res | Bin 0 -> 712 bytes official/2.1.6+2.1.beta1/Lib/D7/TB2MRU.dcu | Bin 0 -> 12437 bytes official/2.1.6+2.1.beta1/Lib/D7/TB2Reg.dcu | Bin 0 -> 10212 bytes .../2.1.6+2.1.beta1/Lib/D7/TB2ResCursors.res | Bin 0 -> 1304 bytes .../2.1.6+2.1.beta1/Lib/D7/TB2ToolWindow.dcu | Bin 0 -> 12689 bytes .../2.1.6+2.1.beta1/Lib/D7/TB2Toolbar.dcu | Bin 0 -> 47523 bytes .../2.1.6+2.1.beta1/Lib/D7/TB2Version.dcu | Bin 0 -> 708 bytes official/2.1.6+2.1.beta1/Lib/D7/TBX.dcu | Bin 0 -> 137912 bytes .../Lib/D7/TBXDefaultTheme.dcu | Bin 0 -> 49273 bytes .../2.1.6+2.1.beta1/Lib/D7/TBXDkPanels.dcu | Bin 0 -> 184673 bytes .../2.1.6+2.1.beta1/Lib/D7/TBXExtItems.dcu | Bin 0 -> 89361 bytes official/2.1.6+2.1.beta1/Lib/D7/TBXLists.dcu | Bin 0 -> 42913 bytes official/2.1.6+2.1.beta1/Lib/D7/TBXMDI.dcu | Bin 0 -> 30588 bytes .../Lib/D7/TBXOffice2003Theme.dcu | Bin 0 -> 56412 bytes .../Lib/D7/TBXOfficeXPTheme.dcu | Bin 0 -> 47497 bytes official/2.1.6+2.1.beta1/Lib/D7/TBXReg.dcu | Bin 0 -> 25833 bytes .../2.1.6+2.1.beta1/Lib/D7/TBXStatusBars.dcu | Bin 0 -> 37250 bytes .../2.1.6+2.1.beta1/Lib/D7/TBXStrEdit.dcu | Bin 0 -> 5915 bytes .../2.1.6+2.1.beta1/Lib/D7/TBXSwitcher.dcu | Bin 0 -> 5017 bytes official/2.1.6+2.1.beta1/Lib/D7/TBXThemes.dcu | Bin 0 -> 27648 bytes .../2.1.6+2.1.beta1/Lib/D7/TBXToolPals.dcu | Bin 0 -> 37838 bytes official/2.1.6+2.1.beta1/Lib/D7/TBXUtils.dcu | Bin 0 -> 63805 bytes .../2.1.6+2.1.beta1/Lib/D7/TBXUxThemes.dcu | Bin 0 -> 33331 bytes .../Lib/D7/TBXWhidbeyTheme.dcu | Bin 0 -> 52644 bytes official/2.1.6+2.1.beta1/Lib/D7/TBX_MDI.res | Bin 0 -> 712 bytes official/2.1.6+2.1.beta1/Lib/D7/rmkThemes.dcu | Bin 0 -> 13688 bytes official/2.1.6+2.1.beta1/Lib/D7/tb2k_d7.dcu | Bin 0 -> 4257 bytes .../2.1.6+2.1.beta1/Lib/D7/tb2kdsgn_d7.dcu | Bin 0 -> 5882 bytes official/2.1.6+2.1.beta1/Lib/D7/tbx_d7.dcu | Bin 0 -> 5325 bytes .../2.1.6+2.1.beta1/Lib/D7/tbx_glyphs.res | Bin 0 -> 256 bytes .../2.1.6+2.1.beta1/Lib/D7/tbxdsgn_d7.dcu | Bin 0 -> 6620 bytes .../Packages/tb2k_GroupD10.bdsgroup | 18 + .../2.1.6+2.1.beta1/Packages/tb2k_cb4.bpk | 183 + .../2.1.6+2.1.beta1/Packages/tb2k_cb4.cpp | 29 + .../2.1.6+2.1.beta1/Packages/tb2k_cb5.bpk | 96 + .../2.1.6+2.1.beta1/Packages/tb2k_cb5.cpp | 29 + .../2.1.6+2.1.beta1/Packages/tb2k_cb6.bpk | 130 + .../2.1.6+2.1.beta1/Packages/tb2k_cb6.cpp | 14 + .../2.1.6+2.1.beta1/Packages/tb2k_d10.bdsproj | 658 + .../2.1.6+2.1.beta1/Packages/tb2k_d10.dpk | 47 + .../2.1.6+2.1.beta1/Packages/tb2k_d10.res | Bin 0 -> 5056 bytes official/2.1.6+2.1.beta1/Packages/tb2k_d4.dpk | 49 + official/2.1.6+2.1.beta1/Packages/tb2k_d4.res | Bin 0 -> 32 bytes official/2.1.6+2.1.beta1/Packages/tb2k_d5.dpk | 49 + official/2.1.6+2.1.beta1/Packages/tb2k_d5.res | Bin 0 -> 32 bytes official/2.1.6+2.1.beta1/Packages/tb2k_d6.dpk | 49 + official/2.1.6+2.1.beta1/Packages/tb2k_d6.res | Bin 0 -> 32 bytes official/2.1.6+2.1.beta1/Packages/tb2k_d7.cfg | 41 + official/2.1.6+2.1.beta1/Packages/tb2k_d7.dof | 474 + official/2.1.6+2.1.beta1/Packages/tb2k_d7.dpk | 47 + official/2.1.6+2.1.beta1/Packages/tb2k_d7.drc | 34 + official/2.1.6+2.1.beta1/Packages/tb2k_d7.res | Bin 0 -> 1536 bytes official/2.1.6+2.1.beta1/Packages/tb2k_d9.dpk | 49 + official/2.1.6+2.1.beta1/Packages/tb2k_d9.res | Bin 0 -> 32 bytes .../2.1.6+2.1.beta1/Packages/tb2kdsgn_cb4.bpk | 183 + .../2.1.6+2.1.beta1/Packages/tb2kdsgn_cb4.cpp | 23 + .../2.1.6+2.1.beta1/Packages/tb2kdsgn_cb5.bpk | 96 + .../2.1.6+2.1.beta1/Packages/tb2kdsgn_cb5.cpp | 23 + .../2.1.6+2.1.beta1/Packages/tb2kdsgn_cb6.bpk | 125 + .../2.1.6+2.1.beta1/Packages/tb2kdsgn_cb6.cpp | 18 + .../Packages/tb2kdsgn_d10.bdsproj | 175 + .../2.1.6+2.1.beta1/Packages/tb2kdsgn_d10.dpk | 42 + .../2.1.6+2.1.beta1/Packages/tb2kdsgn_d10.res | Bin 0 -> 5056 bytes .../2.1.6+2.1.beta1/Packages/tb2kdsgn_d4.dpk | 44 + .../2.1.6+2.1.beta1/Packages/tb2kdsgn_d4.res | Bin 0 -> 32 bytes .../2.1.6+2.1.beta1/Packages/tb2kdsgn_d5.dpk | 44 + .../2.1.6+2.1.beta1/Packages/tb2kdsgn_d5.res | Bin 0 -> 32 bytes .../2.1.6+2.1.beta1/Packages/tb2kdsgn_d6.dpk | 44 + .../2.1.6+2.1.beta1/Packages/tb2kdsgn_d6.res | Bin 0 -> 32 bytes .../2.1.6+2.1.beta1/Packages/tb2kdsgn_d7.cfg | 40 + .../2.1.6+2.1.beta1/Packages/tb2kdsgn_d7.dof | 473 + .../2.1.6+2.1.beta1/Packages/tb2kdsgn_d7.dpk | 42 + .../2.1.6+2.1.beta1/Packages/tb2kdsgn_d7.drc | 14 + .../2.1.6+2.1.beta1/Packages/tb2kdsgn_d7.res | Bin 0 -> 1536 bytes .../2.1.6+2.1.beta1/Packages/tb2kdsgn_d9.dpk | 44 + .../2.1.6+2.1.beta1/Packages/tb2kdsgn_d9.res | Bin 0 -> 32 bytes official/2.1.6+2.1.beta1/README.txt | 22 + official/2.1.6+2.1.beta1/Source/.cvsignore | 4 + official/2.1.6+2.1.beta1/Source/Readme.txt | 2 + official/2.1.6+2.1.beta1/Source/TB2Acc.pas | 1224 + official/2.1.6+2.1.beta1/Source/TB2Anim.pas | 293 + official/2.1.6+2.1.beta1/Source/TB2Common.pas | 1087 + .../2.1.6+2.1.beta1/Source/TB2Common.pas.orig | 1043 + official/2.1.6+2.1.beta1/Source/TB2Consts.pas | 33 + official/2.1.6+2.1.beta1/Source/TB2Dock.pas | 5554 ++++ .../2.1.6+2.1.beta1/Source/TB2Dock.pas.orig | 5538 ++++ .../Source/TB2DsgnConvertOptions.dfm | Bin 0 -> 903 bytes .../Source/TB2DsgnConvertOptions.dfm.txt | 65 + .../Source/TB2DsgnConvertOptions.pas | 67 + .../Source/TB2DsgnConverter.dfm | Bin 0 -> 795 bytes .../Source/TB2DsgnConverter.dfm.txt | 51 + .../Source/TB2DsgnConverter.pas | 217 + .../Source/TB2DsgnItemEditor.dfm | Bin 0 -> 2866 bytes .../Source/TB2DsgnItemEditor.dfm.txt | 184 + .../Source/TB2DsgnItemEditor.pas | 1401 + .../Source/TB2DsgnItemEditor.pas.orig | 1348 + .../Source/TB2DsgnItemEditor.res | Bin 0 -> 2520 bytes .../2.1.6+2.1.beta1/Source/TB2ExtItems.pas | 1008 + .../Source/TB2ExtItems.pas.orig | 962 + official/2.1.6+2.1.beta1/Source/TB2Hook.pas | 311 + official/2.1.6+2.1.beta1/Source/TB2Item.pas | 6905 +++++ .../2.1.6+2.1.beta1/Source/TB2Item.pas.orig | 6813 +++++ official/2.1.6+2.1.beta1/Source/TB2MDI.pas | 682 + official/2.1.6+2.1.beta1/Source/TB2MDI.res | Bin 0 -> 712 bytes official/2.1.6+2.1.beta1/Source/TB2MRU.pas | 403 + .../2.1.6+2.1.beta1/Source/TB2MRU.pas.orig | 395 + official/2.1.6+2.1.beta1/Source/TB2Reg.dcr | Bin 0 -> 3156 bytes official/2.1.6+2.1.beta1/Source/TB2Reg.pas | 257 + .../2.1.6+2.1.beta1/Source/TB2Reg.pas.orig | 251 + .../2.1.6+2.1.beta1/Source/TB2ResCursors.res | Bin 0 -> 1304 bytes .../2.1.6+2.1.beta1/Source/TB2ToolWindow.pas | 268 + .../Source/TB2ToolWindow.pas.orig | 258 + .../2.1.6+2.1.beta1/Source/TB2Toolbar.pas | 1716 ++ .../Source/TB2Toolbar.pas.orig | 1711 ++ official/2.1.6+2.1.beta1/Source/TB2Ver.inc | 37 + .../2.1.6+2.1.beta1/Source/TB2Version.pas | 55 + .../Source/_cvs_patch-2_1_4.bat | 1 + .../Source/_cvs_patch-2_1_4.diff | 1441 + .../Source/_tb2k_2.1.6_patch.diff.txt | 1748 ++ official/2.1.6+2.1.beta1/Source/patch.bat | 3 + official/2.1.6+2.1.beta1/Source/patch.exe | Bin 0 -> 59904 bytes official/2.1.6+2.1.beta1/TB2k-LICENSE.txt | 61 + .../TBX/Converter/Converter.ico | Bin 0 -> 19790 bytes .../TBX/Converter/MainUnit.dfm | 501 + .../TBX/Converter/MainUnit.pas | 527 + .../TBX/Converter/TBXConverter.dpr | 14 + .../TBX/Converter/TBXConverter.exe | Bin 0 -> 850432 bytes .../TBX/Converter/TBXConverter.res | Bin 0 -> 20080 bytes .../TBX/Converter/conversions.ini | 69 + official/2.1.6+2.1.beta1/TBX/DTM/Project1.exe | Bin 0 -> 141312 bytes .../TBX/DTM/Themes/TBXAluminum_d7.tbxt | Bin 0 -> 45568 bytes .../TBX/DTM/Themes/TBXAthen_d7.tbxt | Bin 0 -> 49152 bytes .../TBX/DTM/Themes/TBXDream_d7.tbxt | Bin 0 -> 50688 bytes .../TBX/DTM/Themes/TBXEos_d7.tbxt | Bin 0 -> 45056 bytes .../TBX/DTM/Themes/TBXMacOSX_d7.tbxt | Bin 0 -> 74240 bytes .../TBX/DTM/Themes/TBXMonaiXP_d7.tbxt | Bin 0 -> 40448 bytes .../TBX/DTM/Themes/TBXMonai_d7.tbxt | Bin 0 -> 38912 bytes .../TBX/DTM/Themes/TBXNexos2_d7.tbxt | Bin 0 -> 53760 bytes .../TBX/DTM/Themes/TBXNexos3_d7.tbxt | Bin 0 -> 52736 bytes .../TBX/DTM/Themes/TBXNexos4_d7.tbxt | Bin 0 -> 52224 bytes .../TBX/DTM/Themes/TBXNexos5_d7.tbxt | Bin 0 -> 51200 bytes .../TBX/DTM/Themes/TBXNexosX_d7.tbxt | Bin 0 -> 51712 bytes .../DTM/Themes/TBXOffice11Adaptive_d7.tbxt | Bin 0 -> 45568 bytes .../TBX/DTM/Themes/TBXOffice11XP_d7.tbxt | Bin 0 -> 44544 bytes .../TBX/DTM/Themes/TBXOfficeC_d7.tbxt | Bin 0 -> 46080 bytes .../TBX/DTM/Themes/TBXOfficeK_d7.tbxt | Bin 0 -> 44544 bytes .../TBX/DTM/Themes/TBXRelifer_d7.tbxt | Bin 0 -> 50688 bytes .../TBX/DTM/Themes/TBXRoma_d7.tbxt | Bin 0 -> 40448 bytes .../TBX/DTM/Themes/TBXSentimoX_d7.tbxt | Bin 0 -> 50688 bytes .../TBX/DTM/Themes/TBXStripes_d7.tbxt | Bin 0 -> 39936 bytes .../TBX/DTM/Themes/TBXTristan2_d7.tbxt | Bin 0 -> 45568 bytes .../TBX/DTM/Themes/TBXTristan_d7.tbxt | Bin 0 -> 46592 bytes .../TBX/DTM/Themes/TBXXito_d7.tbxt | Bin 0 -> 48640 bytes .../2.1.6+2.1.beta1/TBX/DTM/Themes/Theme.ini | 3 + official/2.1.6+2.1.beta1/TBX/DTM/tbx_d7.bpl | Bin 0 -> 415232 bytes .../TBX/DTMCtrl/TBXDTMCtrl_d6.dpk | 38 + .../TBX/DTMCtrl/TBXDTMCtrl_d6.res | Bin 0 -> 2312 bytes .../TBX/DTMCtrl/TBXDTMCtrl_d7.cfg | 42 + .../TBX/DTMCtrl/TBXDTMCtrl_d7.dof | 150 + .../TBX/DTMCtrl/TBXDTMCtrl_d7.dpk | 38 + .../TBX/DTMCtrl/TBXDTMCtrl_d7.res | Bin 0 -> 1536 bytes .../TBX/DTMCtrl/TBXDTMForm.dfm | 116 + .../TBX/DTMCtrl/TBXDTMForm.pas | 156 + .../2.1.6+2.1.beta1/TBX/DTMCtrl/TBX_DTM.dcr | Bin 0 -> 1748 bytes .../2.1.6+2.1.beta1/TBX/DTMCtrl/TBX_DTM.pas | 372 + .../TBX/DTMCtrl/rmkThemes_Modified.zip | Bin 0 -> 348135 bytes .../2.1.6+2.1.beta1/TBX/Demo/Project1.bpr | 93 + .../2.1.6+2.1.beta1/TBX/Demo/Project1.cfg | 44 + .../2.1.6+2.1.beta1/TBX/Demo/Project1.cpp | 23 + .../2.1.6+2.1.beta1/TBX/Demo/Project1.dof | 462 + .../2.1.6+2.1.beta1/TBX/Demo/Project1.dpr | 16 + .../2.1.6+2.1.beta1/TBX/Demo/Project1.drc | 552 + .../2.1.6+2.1.beta1/TBX/Demo/Project1.exe | Bin 0 -> 1199616 bytes .../2.1.6+2.1.beta1/TBX/Demo/Project1.res | Bin 0 -> 876 bytes official/2.1.6+2.1.beta1/TBX/Demo/Unit1.dcu | Bin 0 -> 24839 bytes official/2.1.6+2.1.beta1/TBX/Demo/Unit1.ddp | Bin 0 -> 51 bytes official/2.1.6+2.1.beta1/TBX/Demo/Unit1.dfm | Bin 0 -> 95591 bytes official/2.1.6+2.1.beta1/TBX/Demo/Unit1.pas | 487 + official/2.1.6+2.1.beta1/TBX/Demo/Unit2.dcu | Bin 0 -> 4227 bytes official/2.1.6+2.1.beta1/TBX/Demo/Unit2.dfm | Bin 0 -> 547 bytes official/2.1.6+2.1.beta1/TBX/Demo/Unit2.pas | 44 + official/2.1.6+2.1.beta1/TBX/Diffs/Readme.txt | 2 + .../TBX/Diffs/_cvs_patch-2_1_4.bat | 1 + .../TBX/Diffs/_cvs_patch-2_1_4.diff | 1441 + .../Documentation/TBX Reference A4 Print.pdf | Bin 0 -> 667661 bytes .../Documentation/TBX Reference LTR Print.pdf | Bin 0 -> 672051 bytes .../TBX/Documentation/TBX Reference LTR.pdf | 23199 ++++++++++++++++ .../TBX/Documentation/TBX Reference.chm | Bin 0 -> 437963 bytes .../TBX/Packages/tbx_GroupD10.bdsgroup | 20 + .../2.1.6+2.1.beta1/TBX/Packages/tbx_cb5.bpk | 48 + .../2.1.6+2.1.beta1/TBX/Packages/tbx_cb5.cpp | 33 + .../2.1.6+2.1.beta1/TBX/Packages/tbx_cb5.res | Bin 0 -> 808 bytes .../2.1.6+2.1.beta1/TBX/Packages/tbx_cb6.bpk | 115 + .../2.1.6+2.1.beta1/TBX/Packages/tbx_cb6.cpp | 16 + .../2.1.6+2.1.beta1/TBX/Packages/tbx_cb6.res | Bin 0 -> 808 bytes .../TBX/Packages/tbx_d10.bdsproj | 658 + .../2.1.6+2.1.beta1/TBX/Packages/tbx_d10.dpk | 52 + .../2.1.6+2.1.beta1/TBX/Packages/tbx_d10.res | Bin 0 -> 5056 bytes .../2.1.6+2.1.beta1/TBX/Packages/tbx_d4.dpk | 47 + .../2.1.6+2.1.beta1/TBX/Packages/tbx_d4.res | Bin 0 -> 808 bytes .../2.1.6+2.1.beta1/TBX/Packages/tbx_d5.dpk | 47 + .../2.1.6+2.1.beta1/TBX/Packages/tbx_d5.res | Bin 0 -> 808 bytes .../2.1.6+2.1.beta1/TBX/Packages/tbx_d6.dpk | 48 + .../2.1.6+2.1.beta1/TBX/Packages/tbx_d6.res | Bin 0 -> 808 bytes .../2.1.6+2.1.beta1/TBX/Packages/tbx_d7.cfg | 45 + .../2.1.6+2.1.beta1/TBX/Packages/tbx_d7.dof | 475 + .../2.1.6+2.1.beta1/TBX/Packages/tbx_d7.dpk | 51 + .../2.1.6+2.1.beta1/TBX/Packages/tbx_d7.drc | 14 + .../2.1.6+2.1.beta1/TBX/Packages/tbx_d7.res | Bin 0 -> 1536 bytes .../TBX/Packages/tbxdsgn_cb5.bpk | 46 + .../TBX/Packages/tbxdsgn_cb5.cpp | 25 + .../TBX/Packages/tbxdsgn_cb5.res | Bin 0 -> 808 bytes .../TBX/Packages/tbxdsgn_cb6.bpk | 60 + .../TBX/Packages/tbxdsgn_cb6.cpp | 17 + .../TBX/Packages/tbxdsgn_cb6.res | Bin 0 -> 876 bytes .../TBX/Packages/tbxdsgn_d10.bdsproj | 658 + .../TBX/Packages/tbxdsgn_d10.dpk | 40 + .../TBX/Packages/tbxdsgn_d10.res | Bin 0 -> 5056 bytes .../TBX/Packages/tbxdsgn_d4.dpk | 39 + .../TBX/Packages/tbxdsgn_d4.res | Bin 0 -> 808 bytes .../TBX/Packages/tbxdsgn_d5.dpk | 39 + .../TBX/Packages/tbxdsgn_d5.res | Bin 0 -> 808 bytes .../TBX/Packages/tbxdsgn_d6.dpk | 40 + .../TBX/Packages/tbxdsgn_d6.res | Bin 0 -> 808 bytes .../TBX/Packages/tbxdsgn_d7.cfg | 44 + .../TBX/Packages/tbxdsgn_d7.dof | 474 + .../TBX/Packages/tbxdsgn_d7.dpk | 40 + .../TBX/Packages/tbxdsgn_d7.drc | 14 + .../TBX/Packages/tbxdsgn_d7.res | Bin 0 -> 1536 bytes official/2.1.6+2.1.beta1/TBX/TBX.inc | 16 + official/2.1.6+2.1.beta1/TBX/TBX.pas | 3837 +++ official/2.1.6+2.1.beta1/TBX/TBX.pas.orig | 3588 +++ .../2.1.6+2.1.beta1/TBX/TBXDefaultTheme.pas | 1788 ++ .../TBX/TBXDefaultTheme.pas.orig | 1777 ++ official/2.1.6+2.1.beta1/TBX/TBXDkPanels.pas | 5552 ++++ .../2.1.6+2.1.beta1/TBX/TBXDkPanels.pas.orig | 5459 ++++ official/2.1.6+2.1.beta1/TBX/TBXExtItems.pas | 2376 ++ .../2.1.6+2.1.beta1/TBX/TBXExtItems.pas.orig | 2370 ++ official/2.1.6+2.1.beta1/TBX/TBXLists.pas | 1387 + .../2.1.6+2.1.beta1/TBX/TBXLists.pas.orig | 1385 + official/2.1.6+2.1.beta1/TBX/TBXMDI.pas | 728 + .../TBX/TBXOffice2003Theme.pas | 2040 ++ .../TBX/TBXOffice2003Theme.pas.orig | 1983 ++ .../2.1.6+2.1.beta1/TBX/TBXOfficeXPTheme.pas | 1700 ++ .../TBX/TBXOfficeXPTheme.pas.orig | 1688 ++ official/2.1.6+2.1.beta1/TBX/TBXReg.dcr | Bin 0 -> 13936 bytes official/2.1.6+2.1.beta1/TBX/TBXReg.pas | 486 + official/2.1.6+2.1.beta1/TBX/TBXReg.pas.orig | 485 + .../2.1.6+2.1.beta1/TBX/TBXStatusBars.pas | 1030 + official/2.1.6+2.1.beta1/TBX/TBXStrEdit.pas | 92 + .../2.1.6+2.1.beta1/TBX/TBXStrEdit.pas.orig | 87 + official/2.1.6+2.1.beta1/TBX/TBXSwitcher.pas | 133 + official/2.1.6+2.1.beta1/TBX/TBXThemes.pas | 897 + .../2.1.6+2.1.beta1/TBX/TBXThemes.pas.orig | 896 + official/2.1.6+2.1.beta1/TBX/TBXToolPals.pas | 986 + official/2.1.6+2.1.beta1/TBX/TBXUtils.pas | 2329 ++ .../2.1.6+2.1.beta1/TBX/TBXUtils.pas.orig | 2263 ++ official/2.1.6+2.1.beta1/TBX/TBXUxThemes.pas | 2091 ++ .../2.1.6+2.1.beta1/TBX/TBXWhidbeyTheme.pas | 2244 ++ official/2.1.6+2.1.beta1/TBX/TBX_MDI.res | Bin 0 -> 712 bytes official/2.1.6+2.1.beta1/TBX/_clean.bat | 11 + .../TBX/_tbx_2.1.beta_patch.diff.txt | 2649 ++ official/2.1.6+2.1.beta1/TBX/license.txt | 47 + official/2.1.6+2.1.beta1/TBX/patch.bat | 3 + official/2.1.6+2.1.beta1/TBX/patch.exe | Bin 0 -> 59904 bytes official/2.1.6+2.1.beta1/TBX/readme.txt | 1 + official/2.1.6+2.1.beta1/TBX/registration.txt | 26 + official/2.1.6+2.1.beta1/TBX/rmkThemes.pas | 550 + official/2.1.6+2.1.beta1/TBX/tbx_glyphs.res | Bin 0 -> 256 bytes official/2.1.6+2.1.beta1/tb2k.chm | Bin 0 -> 79536 bytes official/2.1.6+2.1.beta1/whatsnew.htm | 361 + 345 files changed, 134822 insertions(+) create mode 100644 official/2.1.6+2.1.beta1/DemoProj/.cvsignore create mode 100644 official/2.1.6+2.1.beta1/DemoProj/Demo.cfg create mode 100644 official/2.1.6+2.1.beta1/DemoProj/Demo.dof create mode 100644 official/2.1.6+2.1.beta1/DemoProj/Demo.dpr create mode 100644 official/2.1.6+2.1.beta1/DemoProj/Demo.res create mode 100644 official/2.1.6+2.1.beta1/DemoProj/Demo1.dfm create mode 100644 official/2.1.6+2.1.beta1/DemoProj/Demo1.pas create mode 100644 official/2.1.6+2.1.beta1/DemoProj/DemoBCB.bpr create mode 100644 official/2.1.6+2.1.beta1/DemoProj/DemoBCB.cpp create mode 100644 official/2.1.6+2.1.beta1/DemoProj/DemoBCB.res create mode 100644 official/2.1.6+2.1.beta1/DemoProj/DemoBCB6.bpr create mode 100644 official/2.1.6+2.1.beta1/DemoProj/DemoBCB6.cpp create mode 100644 official/2.1.6+2.1.beta1/DemoProj/DemoBCB6.res create mode 100644 official/2.1.6+2.1.beta1/GPL-LICENSE.txt create mode 100644 official/2.1.6+2.1.beta1/Glyphs.zip create mode 100644 official/2.1.6+2.1.beta1/LICENSE.txt create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TB2Acc.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TB2Anim.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TB2Common.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TB2Consts.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TB2Dock.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TB2DsgnConvertOptions.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TB2DsgnConverter.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TB2DsgnItemEditor.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TB2ExtItems.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TB2Hook.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TB2Item.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TB2MDI.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TB2MRU.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TB2Reg.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TB2ToolWindow.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TB2Toolbar.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TB2Version.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TBX.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TBXDefaultTheme.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TBXDkPanels.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TBXExtItems.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TBXLists.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TBXMDI.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TBXOffice2003Theme.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TBXOfficeXPTheme.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TBXReg.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TBXStatusBars.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TBXStrEdit.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TBXSwitcher.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TBXThemes.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TBXToolPals.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TBXUtils.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TBXUxThemes.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TBXWhidbeyTheme.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/TBX_MDI.res create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/rmkThemes.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/tb2k_d10.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/tb2kdsgn_d10.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/tbx_d10.bpl create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/tbx_d10.dcp create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/tbx_d10.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/tbx_glyphs.res create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/tbxdsgn_d10.bpl create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/tbxdsgn_d10.dcp create mode 100644 official/2.1.6+2.1.beta1/Lib/D10/tbxdsgn_d10.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TB2Acc.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TB2Anim.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TB2Common.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TB2Consts.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TB2Dock.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TB2DsgnConvertOptions.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TB2DsgnConverter.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TB2DsgnItemEditor.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TB2DsgnItemEditor.res create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TB2ExtItems.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TB2Hook.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TB2Item.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TB2MDI.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TB2MDI.res create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TB2MRU.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TB2Reg.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TB2ResCursors.res create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TB2ToolWindow.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TB2Toolbar.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TB2Version.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TBX.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TBXDefaultTheme.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TBXDkPanels.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TBXExtItems.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TBXLists.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TBXMDI.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TBXOffice2003Theme.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TBXOfficeXPTheme.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TBXReg.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TBXStatusBars.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TBXStrEdit.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TBXSwitcher.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TBXThemes.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TBXToolPals.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TBXUtils.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TBXUxThemes.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TBXWhidbeyTheme.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/TBX_MDI.res create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/rmkThemes.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/tb2k_d7.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/tb2kdsgn_d7.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/tbx_d7.dcu create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/tbx_glyphs.res create mode 100644 official/2.1.6+2.1.beta1/Lib/D7/tbxdsgn_d7.dcu create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2k_GroupD10.bdsgroup create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2k_cb4.bpk create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2k_cb4.cpp create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2k_cb5.bpk create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2k_cb5.cpp create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2k_cb6.bpk create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2k_cb6.cpp create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2k_d10.bdsproj create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2k_d10.dpk create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2k_d10.res create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2k_d4.dpk create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2k_d4.res create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2k_d5.dpk create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2k_d5.res create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2k_d6.dpk create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2k_d6.res create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2k_d7.cfg create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2k_d7.dof create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2k_d7.dpk create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2k_d7.drc create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2k_d7.res create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2k_d9.dpk create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2k_d9.res create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2kdsgn_cb4.bpk create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2kdsgn_cb4.cpp create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2kdsgn_cb5.bpk create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2kdsgn_cb5.cpp create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2kdsgn_cb6.bpk create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2kdsgn_cb6.cpp create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d10.bdsproj create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d10.dpk create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d10.res create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d4.dpk create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d4.res create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d5.dpk create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d5.res create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d6.dpk create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d6.res create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d7.cfg create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d7.dof create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d7.dpk create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d7.drc create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d7.res create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d9.dpk create mode 100644 official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d9.res create mode 100644 official/2.1.6+2.1.beta1/README.txt create mode 100644 official/2.1.6+2.1.beta1/Source/.cvsignore create mode 100644 official/2.1.6+2.1.beta1/Source/Readme.txt create mode 100644 official/2.1.6+2.1.beta1/Source/TB2Acc.pas create mode 100644 official/2.1.6+2.1.beta1/Source/TB2Anim.pas create mode 100644 official/2.1.6+2.1.beta1/Source/TB2Common.pas create mode 100644 official/2.1.6+2.1.beta1/Source/TB2Common.pas.orig create mode 100644 official/2.1.6+2.1.beta1/Source/TB2Consts.pas create mode 100644 official/2.1.6+2.1.beta1/Source/TB2Dock.pas create mode 100644 official/2.1.6+2.1.beta1/Source/TB2Dock.pas.orig create mode 100644 official/2.1.6+2.1.beta1/Source/TB2DsgnConvertOptions.dfm create mode 100644 official/2.1.6+2.1.beta1/Source/TB2DsgnConvertOptions.dfm.txt create mode 100644 official/2.1.6+2.1.beta1/Source/TB2DsgnConvertOptions.pas create mode 100644 official/2.1.6+2.1.beta1/Source/TB2DsgnConverter.dfm create mode 100644 official/2.1.6+2.1.beta1/Source/TB2DsgnConverter.dfm.txt create mode 100644 official/2.1.6+2.1.beta1/Source/TB2DsgnConverter.pas create mode 100644 official/2.1.6+2.1.beta1/Source/TB2DsgnItemEditor.dfm create mode 100644 official/2.1.6+2.1.beta1/Source/TB2DsgnItemEditor.dfm.txt create mode 100644 official/2.1.6+2.1.beta1/Source/TB2DsgnItemEditor.pas create mode 100644 official/2.1.6+2.1.beta1/Source/TB2DsgnItemEditor.pas.orig create mode 100644 official/2.1.6+2.1.beta1/Source/TB2DsgnItemEditor.res create mode 100644 official/2.1.6+2.1.beta1/Source/TB2ExtItems.pas create mode 100644 official/2.1.6+2.1.beta1/Source/TB2ExtItems.pas.orig create mode 100644 official/2.1.6+2.1.beta1/Source/TB2Hook.pas create mode 100644 official/2.1.6+2.1.beta1/Source/TB2Item.pas create mode 100644 official/2.1.6+2.1.beta1/Source/TB2Item.pas.orig create mode 100644 official/2.1.6+2.1.beta1/Source/TB2MDI.pas create mode 100644 official/2.1.6+2.1.beta1/Source/TB2MDI.res create mode 100644 official/2.1.6+2.1.beta1/Source/TB2MRU.pas create mode 100644 official/2.1.6+2.1.beta1/Source/TB2MRU.pas.orig create mode 100644 official/2.1.6+2.1.beta1/Source/TB2Reg.dcr create mode 100644 official/2.1.6+2.1.beta1/Source/TB2Reg.pas create mode 100644 official/2.1.6+2.1.beta1/Source/TB2Reg.pas.orig create mode 100644 official/2.1.6+2.1.beta1/Source/TB2ResCursors.res create mode 100644 official/2.1.6+2.1.beta1/Source/TB2ToolWindow.pas create mode 100644 official/2.1.6+2.1.beta1/Source/TB2ToolWindow.pas.orig create mode 100644 official/2.1.6+2.1.beta1/Source/TB2Toolbar.pas create mode 100644 official/2.1.6+2.1.beta1/Source/TB2Toolbar.pas.orig create mode 100644 official/2.1.6+2.1.beta1/Source/TB2Ver.inc create mode 100644 official/2.1.6+2.1.beta1/Source/TB2Version.pas create mode 100644 official/2.1.6+2.1.beta1/Source/_cvs_patch-2_1_4.bat create mode 100644 official/2.1.6+2.1.beta1/Source/_cvs_patch-2_1_4.diff create mode 100644 official/2.1.6+2.1.beta1/Source/_tb2k_2.1.6_patch.diff.txt create mode 100644 official/2.1.6+2.1.beta1/Source/patch.bat create mode 100644 official/2.1.6+2.1.beta1/Source/patch.exe create mode 100644 official/2.1.6+2.1.beta1/TB2k-LICENSE.txt create mode 100644 official/2.1.6+2.1.beta1/TBX/Converter/Converter.ico create mode 100644 official/2.1.6+2.1.beta1/TBX/Converter/MainUnit.dfm create mode 100644 official/2.1.6+2.1.beta1/TBX/Converter/MainUnit.pas create mode 100644 official/2.1.6+2.1.beta1/TBX/Converter/TBXConverter.dpr create mode 100644 official/2.1.6+2.1.beta1/TBX/Converter/TBXConverter.exe create mode 100644 official/2.1.6+2.1.beta1/TBX/Converter/TBXConverter.res create mode 100644 official/2.1.6+2.1.beta1/TBX/Converter/conversions.ini create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Project1.exe create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXAluminum_d7.tbxt create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXAthen_d7.tbxt create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXDream_d7.tbxt create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXEos_d7.tbxt create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXMacOSX_d7.tbxt create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXMonaiXP_d7.tbxt create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXMonai_d7.tbxt create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXNexos2_d7.tbxt create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXNexos3_d7.tbxt create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXNexos4_d7.tbxt create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXNexos5_d7.tbxt create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXNexosX_d7.tbxt create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXOffice11Adaptive_d7.tbxt create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXOffice11XP_d7.tbxt create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXOfficeC_d7.tbxt create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXOfficeK_d7.tbxt create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXRelifer_d7.tbxt create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXRoma_d7.tbxt create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXSentimoX_d7.tbxt create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXStripes_d7.tbxt create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXTristan2_d7.tbxt create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXTristan_d7.tbxt create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXXito_d7.tbxt create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/Themes/Theme.ini create mode 100644 official/2.1.6+2.1.beta1/TBX/DTM/tbx_d7.bpl create mode 100644 official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMCtrl_d6.dpk create mode 100644 official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMCtrl_d6.res create mode 100644 official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMCtrl_d7.cfg create mode 100644 official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMCtrl_d7.dof create mode 100644 official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMCtrl_d7.dpk create mode 100644 official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMCtrl_d7.res create mode 100644 official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMForm.dfm create mode 100644 official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMForm.pas create mode 100644 official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBX_DTM.dcr create mode 100644 official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBX_DTM.pas create mode 100644 official/2.1.6+2.1.beta1/TBX/DTMCtrl/rmkThemes_Modified.zip create mode 100644 official/2.1.6+2.1.beta1/TBX/Demo/Project1.bpr create mode 100644 official/2.1.6+2.1.beta1/TBX/Demo/Project1.cfg create mode 100644 official/2.1.6+2.1.beta1/TBX/Demo/Project1.cpp create mode 100644 official/2.1.6+2.1.beta1/TBX/Demo/Project1.dof create mode 100644 official/2.1.6+2.1.beta1/TBX/Demo/Project1.dpr create mode 100644 official/2.1.6+2.1.beta1/TBX/Demo/Project1.drc create mode 100644 official/2.1.6+2.1.beta1/TBX/Demo/Project1.exe create mode 100644 official/2.1.6+2.1.beta1/TBX/Demo/Project1.res create mode 100644 official/2.1.6+2.1.beta1/TBX/Demo/Unit1.dcu create mode 100644 official/2.1.6+2.1.beta1/TBX/Demo/Unit1.ddp create mode 100644 official/2.1.6+2.1.beta1/TBX/Demo/Unit1.dfm create mode 100644 official/2.1.6+2.1.beta1/TBX/Demo/Unit1.pas create mode 100644 official/2.1.6+2.1.beta1/TBX/Demo/Unit2.dcu create mode 100644 official/2.1.6+2.1.beta1/TBX/Demo/Unit2.dfm create mode 100644 official/2.1.6+2.1.beta1/TBX/Demo/Unit2.pas create mode 100644 official/2.1.6+2.1.beta1/TBX/Diffs/Readme.txt create mode 100644 official/2.1.6+2.1.beta1/TBX/Diffs/_cvs_patch-2_1_4.bat create mode 100644 official/2.1.6+2.1.beta1/TBX/Diffs/_cvs_patch-2_1_4.diff create mode 100644 official/2.1.6+2.1.beta1/TBX/Documentation/TBX Reference A4 Print.pdf create mode 100644 official/2.1.6+2.1.beta1/TBX/Documentation/TBX Reference LTR Print.pdf create mode 100644 official/2.1.6+2.1.beta1/TBX/Documentation/TBX Reference LTR.pdf create mode 100644 official/2.1.6+2.1.beta1/TBX/Documentation/TBX Reference.chm create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbx_GroupD10.bdsgroup create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbx_cb5.bpk create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbx_cb5.cpp create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbx_cb5.res create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbx_cb6.bpk create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbx_cb6.cpp create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbx_cb6.res create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbx_d10.bdsproj create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbx_d10.dpk create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbx_d10.res create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbx_d4.dpk create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbx_d4.res create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbx_d5.dpk create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbx_d5.res create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbx_d6.dpk create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbx_d6.res create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbx_d7.cfg create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbx_d7.dof create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbx_d7.dpk create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbx_d7.drc create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbx_d7.res create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_cb5.bpk create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_cb5.cpp create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_cb5.res create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_cb6.bpk create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_cb6.cpp create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_cb6.res create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_d10.bdsproj create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_d10.dpk create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_d10.res create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_d4.dpk create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_d4.res create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_d5.dpk create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_d5.res create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_d6.dpk create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_d6.res create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_d7.cfg create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_d7.dof create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_d7.dpk create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_d7.drc create mode 100644 official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_d7.res create mode 100644 official/2.1.6+2.1.beta1/TBX/TBX.inc create mode 100644 official/2.1.6+2.1.beta1/TBX/TBX.pas create mode 100644 official/2.1.6+2.1.beta1/TBX/TBX.pas.orig create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXDefaultTheme.pas create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXDefaultTheme.pas.orig create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXDkPanels.pas create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXDkPanels.pas.orig create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXExtItems.pas create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXExtItems.pas.orig create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXLists.pas create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXLists.pas.orig create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXMDI.pas create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXOffice2003Theme.pas create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXOffice2003Theme.pas.orig create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXOfficeXPTheme.pas create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXOfficeXPTheme.pas.orig create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXReg.dcr create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXReg.pas create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXReg.pas.orig create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXStatusBars.pas create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXStrEdit.pas create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXStrEdit.pas.orig create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXSwitcher.pas create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXThemes.pas create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXThemes.pas.orig create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXToolPals.pas create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXUtils.pas create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXUtils.pas.orig create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXUxThemes.pas create mode 100644 official/2.1.6+2.1.beta1/TBX/TBXWhidbeyTheme.pas create mode 100644 official/2.1.6+2.1.beta1/TBX/TBX_MDI.res create mode 100644 official/2.1.6+2.1.beta1/TBX/_clean.bat create mode 100644 official/2.1.6+2.1.beta1/TBX/_tbx_2.1.beta_patch.diff.txt create mode 100644 official/2.1.6+2.1.beta1/TBX/license.txt create mode 100644 official/2.1.6+2.1.beta1/TBX/patch.bat create mode 100644 official/2.1.6+2.1.beta1/TBX/patch.exe create mode 100644 official/2.1.6+2.1.beta1/TBX/readme.txt create mode 100644 official/2.1.6+2.1.beta1/TBX/registration.txt create mode 100644 official/2.1.6+2.1.beta1/TBX/rmkThemes.pas create mode 100644 official/2.1.6+2.1.beta1/TBX/tbx_glyphs.res create mode 100644 official/2.1.6+2.1.beta1/tb2k.chm create mode 100644 official/2.1.6+2.1.beta1/whatsnew.htm diff --git a/official/2.1.6+2.1.beta1/DemoProj/.cvsignore b/official/2.1.6+2.1.beta1/DemoProj/.cvsignore new file mode 100644 index 0000000..9783b61 --- /dev/null +++ b/official/2.1.6+2.1.beta1/DemoProj/.cvsignore @@ -0,0 +1,5 @@ +*.dcu +*.exe +*.hpp +*.obj +*.tds diff --git a/official/2.1.6+2.1.beta1/DemoProj/Demo.cfg b/official/2.1.6+2.1.beta1/DemoProj/Demo.cfg new file mode 100644 index 0000000..6b67b6f --- /dev/null +++ b/official/2.1.6+2.1.beta1/DemoProj/Demo.cfg @@ -0,0 +1,33 @@ +-$A+ +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J+ +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$Y- +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 diff --git a/official/2.1.6+2.1.beta1/DemoProj/Demo.dof b/official/2.1.6+2.1.beta1/DemoProj/Demo.dof new file mode 100644 index 0000000..d8a22f2 --- /dev/null +++ b/official/2.1.6+2.1.beta1/DemoProj/Demo.dof @@ -0,0 +1,29 @@ +[Compiler] +A=1 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=1 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=0 +Z=1 +ShowHints=1 +ShowWarnings=1 diff --git a/official/2.1.6+2.1.beta1/DemoProj/Demo.dpr b/official/2.1.6+2.1.beta1/DemoProj/Demo.dpr new file mode 100644 index 0000000..e91b3df --- /dev/null +++ b/official/2.1.6+2.1.beta1/DemoProj/Demo.dpr @@ -0,0 +1,14 @@ +program Demo; + +uses + Forms, + Demo1 in 'Demo1.pas' {Form1}; + +{$R *.RES} + +begin + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. + diff --git a/official/2.1.6+2.1.beta1/DemoProj/Demo.res b/official/2.1.6+2.1.beta1/DemoProj/Demo.res new file mode 100644 index 0000000000000000000000000000000000000000..a8371ab57e62b805e3cbaca0141aa85575085c64 GIT binary patch literal 876 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 E0X5XFmH+?% literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/DemoProj/Demo1.pas b/official/2.1.6+2.1.beta1/DemoProj/Demo1.pas new file mode 100644 index 0000000..5ad5d76 --- /dev/null +++ b/official/2.1.6+2.1.beta1/DemoProj/Demo1.pas @@ -0,0 +1,253 @@ +unit Demo1; + +{ + Toolbar2000 demo project + + $jrsoftware: tb2k/DemoProj/Demo1.pas,v 1.8 2003/07/09 21:16:25 jr Exp $ +} + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + StdCtrls, ExtCtrls, Menus, ActnList, ImgList, ComCtrls, + TB2Item, TB2ExtItems, TB2Dock, TB2Toolbar, TB2MRU; + +type + TForm1 = class(TForm) + ActionList: TActionList; + actNew: TAction; + actOpen: TAction; + actSave: TAction; + actSaveAs: TAction; + actPageSetup: TAction; + actPrint: TAction; + actExit: TAction; + actUndo: TAction; + actCut: TAction; + actCopy: TAction; + actPaste: TAction; + actDelete: TAction; + actSelectAll: TAction; + actTimeDate: TAction; + actWordWrap: TAction; + actSetFont: TAction; + actFind: TAction; + actFindNext: TAction; + actReplace: TAction; + actHelpTopics: TAction; + actAbout: TAction; + actTestButton: TAction; + actTestEdit: TTBEditAction; + DockTop: TTBDock; + MenuToolbar: TTBToolbar; + ImageList: TTBImageList; + FMenu: TTBSubmenuItem; + FNew: TTBItem; + FOpen: TTBItem; + FSave: TTBItem; + FSaveAs: TTBItem; + FPageSetup: TTBItem; + FPrint: TTBItem; + FExit: TTBItem; + EMenu: TTBSubmenuItem; + EUndo: TTBItem; + ECut: TTBItem; + ECopy: TTBItem; + EPaste: TTBItem; + EDelete: TTBItem; + ESelectAll: TTBItem; + ETimeDate: TTBItem; + EWordWrap: TTBItem; + ESetFont: TTBItem; + SMenu: TTBSubmenuItem; + SFind: TTBItem; + SFindNext: TTBItem; + SReplace: TTBItem; + HMenu: TTBSubmenuItem; + HHelpTopics: TTBItem; + HAbout: TTBItem; + FMRU: TTBMRUListItem; + NBSeparatorItem3: TTBSeparatorItem; + NBSeparatorItem4: TTBSeparatorItem; + TestEdit: TTBEditItem; + MainToolbar: TTBToolbar; + NewButton: TTBItem; + OpenButton: TTBItem; + SaveButton: TTBItem; + DockBottom: TTBDock; + DockLeft: TTBDock; + DockRight: TTBDock; + BottomToolbar: TTBToolbar; + PopupMenuBarButton: TTBItem; + PopupToolbarButton: TTBItem; + Memo1: TMemo; + ContextPopupMenu: TTBPopupMenu; + StatusBar: TStatusBar; + ToolbarPopupMenu: TTBPopupMenu; + MRUList: TTBMRUList; + PrintButton: TTBItem; + CutButton: TTBItem; + CopyButton: TTBItem; + PasteButton: TTBItem; + UndoButton: TTBSubmenuItem; + actPrintPreview: TAction; + TBItem1: TTBItem; + FormatToolbar: TTBToolbar; + BoldItem: TTBItem; + ItalicItem: TTBItem; + UnderlineItem: TTBItem; + TBSeparatorItem1: TTBSeparatorItem; + AlignLeftItem: TTBItem; + CenterItem: TTBItem; + AlignRightItem: TTBItem; + TBSeparatorItem2: TTBSeparatorItem; + BulletsItem: TTBItem; + NBItem34: TTBItem; + NBSeparatorItem6: TTBSeparatorItem; + NBItem35: TTBItem; + NBItem36: TTBItem; + NBItem37: TTBItem; + NBItem38: TTBItem; + NBSeparatorItem7: TTBSeparatorItem; + NBItem39: TTBItem; + ComboBox1: TComboBox; + TBControlItem1: TTBControlItem; + TBSeparatorItem3: TTBSeparatorItem; + TBControlItem2: TTBControlItem; + ComboBox2: TComboBox; + actBold: TAction; + actItalic: TAction; + actUnderline: TAction; + actAlignLeft: TAction; + actCenter: TAction; + actAlignRight: TAction; + TBSeparatorItem4: TTBSeparatorItem; + actRedo: TAction; + RedoButton: TTBSubmenuItem; + TBItem2: TTBItem; + TBItem3: TTBItem; + TBItem4: TTBItem; + ERedo: TTBItem; + VMenu: TTBSubmenuItem; + VToolbars: TTBSubmenuItem; + VTStandard: TTBVisibilityToggleItem; + VTFormatting: TTBVisibilityToggleItem; + VTBottom: TTBVisibilityToggleItem; + VStatusBar: TTBItem; + actBullets: TAction; + procedure FormCreate(Sender: TObject); + procedure ItemClick(Sender: TObject); + procedure PopupMenuBarButtonClick(Sender: TObject); + procedure PopupToolbarButtonClick(Sender: TObject); + procedure MRUListClick(Sender: TObject; const Filename: String); + procedure AlignClick(Sender: TObject); + procedure BulletsItemClick(Sender: TObject); + procedure BoldItemClick(Sender: TObject); + procedure ItalicItemClick(Sender: TObject); + procedure UnderlineItemClick(Sender: TObject); + procedure VStatusBarClick(Sender: TObject); + procedure VMenuClick(Sender: TObject); + private + { Private declarations } + procedure OnHint(Sender: TObject); + public + { Public declarations } + end; + +var + Form1: TForm1; + +implementation + +uses + CommCtrl, TB2Version; + +{$R *.DFM} + +procedure TForm1.FormCreate(Sender: TObject); +begin + Memo1.Text := 'Running on TB2000 version ' + Toolbar2000Version; + Application.OnHint := OnHint; +end; + +procedure TForm1.OnHint(Sender: TObject); +begin + StatusBar.Panels[0].Text := Application.Hint; +end; + +procedure TForm1.ItemClick(Sender: TObject); +begin + if Sender is TComponent then + Application.MessageBox(PChar('You selected:'#13#10#13#10 + + TComponent(Sender).Name), 'OnClick handler', + MB_OK or MB_ICONINFORMATION); +end; + +procedure TForm1.MRUListClick(Sender: TObject; const Filename: String); +begin + Application.MessageBox(PChar(Format('You selected "%s" from the MRU list.', + [Filename])), 'MRUListClick', MB_OK or MB_ICONINFORMATION); +end; + +procedure TForm1.VMenuClick(Sender: TObject); +begin + VStatusBar.Checked := StatusBar.Visible; +end; + +procedure TForm1.VStatusBarClick(Sender: TObject); +begin + { Force the StatusBar to always be at the bottom of the form. Without this + line of code, the status bar sometimes may appear above the bottom dock. + This is not a bug in Toolbar2000, but rather is due to the design of the + VCL's alignment system. } + StatusBar.Top := ClientHeight; + + { Toggle the status bar's visibility } + StatusBar.Visible := not StatusBar.Visible; +end; + +procedure TForm1.AlignClick(Sender: TObject); +begin + AlignLeftItem.Checked := (Sender = actAlignLeft); + CenterItem.Checked := (Sender = actCenter); + AlignRightItem.Checked := (Sender = actAlignRight); +end; + +procedure TForm1.BulletsItemClick(Sender: TObject); +begin + BulletsItem.Checked := not BulletsItem.Checked; +end; + +procedure TForm1.BoldItemClick(Sender: TObject); +begin + BoldItem.Checked := not BoldItem.Checked; +end; + +procedure TForm1.ItalicItemClick(Sender: TObject); +begin + ItalicItem.Checked := not ItalicItem.Checked; +end; + +procedure TForm1.UnderlineItemClick(Sender: TObject); +begin + UnderlineItem.Checked := not UnderlineItem.Checked; +end; + +procedure TForm1.PopupMenuBarButtonClick(Sender: TObject); +var + P: TPoint; +begin + P := Memo1.ClientToScreen(Point(8, 8)); + MenuToolbar.Items.Popup(P.X, P.Y, True); +end; + +procedure TForm1.PopupToolbarButtonClick(Sender: TObject); +var + P: TPoint; +begin + P := Memo1.ClientToScreen(Point(8, 8)); + MainToolbar.Items.Popup(P.X, P.Y, True); +end; + +end. diff --git a/official/2.1.6+2.1.beta1/DemoProj/DemoBCB.bpr b/official/2.1.6+2.1.beta1/DemoProj/DemoBCB.bpr new file mode 100644 index 0000000..9800232 --- /dev/null +++ b/official/2.1.6+2.1.beta1/DemoProj/DemoBCB.bpr @@ -0,0 +1,179 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.04.04 +# --------------------------------------------------------------------------- +PROJECT = DemoBCB.exe +OBJFILES = Demo1.obj DemoBCB.obj +RESFILES = DemoBCB.res +RESDEPEN = $(RESFILES) Demo1.dfm +LIBFILES = +LIBRARIES = vcl40.lib +SPARELIBS = vcl40.lib +PACKAGES = +DEFFILE = +# --------------------------------------------------------------------------- +PATHCPP = .; +PATHASM = .; +PATHPAS = .; +PATHRC = .; +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +USERDEFINES = +SYSDEFINES = _RTLDLL;NO_STRICT +# --------------------------------------------------------------------------- +CFLAG1 = -I$(BCB)\include;$(BCB)\include\vcl -Od -Hc -H=$(BCB)\lib\vcl40.csm -w -Ve -r- \ + -a8 -k -y -v -vi- -c -b- -w-par -w-inl -Vx -tW -tWM \ + -D$(SYSDEFINES);$(USERDEFINES) +PFLAGS = -U$(BCB)\Projects\Lib;$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -I$(BCB)\include;$(BCB)\include\vcl -$YD -$W -$O- -v -JPHNE -M +RFLAGS = -i$(BCB)\include;$(BCB)\include\vcl +AFLAGS = /i$(BCB)\include /i$(BCB)\include\vcl /mx /w2 /zd +LFLAGS = -L$(BCB)\Projects\Lib;$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) -aa -Tpe -x \ + -Gn -v +# --------------------------------------------------------------------------- +ALLOBJ = c0w32.obj Memmgr.Lib sysinit.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cp32mti.lib +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +InMemoryExe=0 +ShowInfoMsgs=0 + +!endif + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project file is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(CPP32) +CPP32 = cpp32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = ilink32 +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif + +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif + +!if $d(PATHRC) +.PATH.RC = $(PATHRC) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.cpp.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) $<, $@ + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) -fo$@ $< +# --------------------------------------------------------------------------- + diff --git a/official/2.1.6+2.1.beta1/DemoProj/DemoBCB.cpp b/official/2.1.6+2.1.beta1/DemoProj/DemoBCB.cpp new file mode 100644 index 0000000..b4ea3e5 --- /dev/null +++ b/official/2.1.6+2.1.beta1/DemoProj/DemoBCB.cpp @@ -0,0 +1,22 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +USERES("DemoBCB.res"); +USEFORMNS("Demo1.pas", Demo1, Form1); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + try + { + Application->Initialize(); + Application->CreateForm(__classid(TForm1), &Form1); + Application->Run(); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + return 0; +} +//--------------------------------------------------------------------------- + diff --git a/official/2.1.6+2.1.beta1/DemoProj/DemoBCB.res b/official/2.1.6+2.1.beta1/DemoProj/DemoBCB.res new file mode 100644 index 0000000000000000000000000000000000000000..32b522d0446895614bc4b68603238d2e2e1f4263 GIT binary patch literal 876 zcmb7@&q~BF5XQf53&o4>!Mia|mo;g+5L__E9`~^tgwG_$B?b zEiQ=Dew~^AW+ovJ0H~-CdNEws*J|WBYqG@F>$74kx@J&OcT|SqH+xQ-0DK|RJAN5b zg0AZb;wGXCz2mpvS3vzvYut|ZZN*CMX^nYm+t&NN-_JPd#LY*mNhj`hPA|C8YQeqM zTgzvdZ;aAuz4DOOcYdfZ_i24&v<}fGuC%ghV~<>^?Z#o^I&$V?KkJuVEjjBKJkHl< z)*t7~G~YS)8yvZD$_evf|IT?uJmXRjBOP$#Xi^Ah@c2h`ybzzr3` eIi7KkN4!uEc%>h0elOx}$WT>9x)t#jW%vP1A`iy^ literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/DemoProj/DemoBCB6.bpr b/official/2.1.6+2.1.beta1/DemoProj/DemoBCB6.bpr new file mode 100644 index 0000000..28a1267 --- /dev/null +++ b/official/2.1.6+2.1.beta1/DemoProj/DemoBCB6.bpr @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +Launcher= +UseLauncher=0 +DebugCWD= +HostApplication= +RemoteHost= +RemotePath= +RemoteLauncher= +RemoteCWD= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + + \ No newline at end of file diff --git a/official/2.1.6+2.1.beta1/DemoProj/DemoBCB6.cpp b/official/2.1.6+2.1.beta1/DemoProj/DemoBCB6.cpp new file mode 100644 index 0000000..c762f01 --- /dev/null +++ b/official/2.1.6+2.1.beta1/DemoProj/DemoBCB6.cpp @@ -0,0 +1,34 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +//--------------------------------------------------------------------------- +USEFORMNS("Demo1.pas", Demo1, Form1); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + try + { + Application->Initialize(); + Application->CreateForm(__classid(TForm1), &Form1); + Application->Run(); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + catch (...) + { + try + { + throw Exception(""); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + } + return 0; +} +//--------------------------------------------------------------------------- + diff --git a/official/2.1.6+2.1.beta1/DemoProj/DemoBCB6.res b/official/2.1.6+2.1.beta1/DemoProj/DemoBCB6.res new file mode 100644 index 0000000000000000000000000000000000000000..e468bf918a523af7a3091b3eec019fa7b1c1693c GIT binary patch literal 876 zcmb_bF;2uV5Zu5uH0X-!NlA%xEfPT&DWU*=!4q&17bzp%{pX4_DNahW&!C{N_=1_S z(;tv z|In#nuj{navMjJhZPaM_QfNJD4x+|BdQI?CM=$p}-Rz^@qE3JH8vXRJG5P7?`N>Z` z^;5UnYGuEjugCL0h&O2V;=F@MIaK@b1)ytaHG_$|4Ry9gjf8ce7r;f$G$71Q;+N=W zkSqKfCkk>9V-oqZ{(-ldmnrWs9vrd4up7|(OL>%gd5|Y?BhQEl(|f_AGs*KsxD~ub GnS25s111yz literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/GPL-LICENSE.txt b/official/2.1.6+2.1.beta1/GPL-LICENSE.txt new file mode 100644 index 0000000..45645b4 --- /dev/null +++ b/official/2.1.6+2.1.beta1/GPL-LICENSE.txt @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/official/2.1.6+2.1.beta1/Glyphs.zip b/official/2.1.6+2.1.beta1/Glyphs.zip new file mode 100644 index 0000000000000000000000000000000000000000..60704428f161bb9768d0c5f4b7c214157ca99588 GIT binary patch literal 11257 zcmb`M30PCtw#UzqfgvQ31{ox9u;M)q#aOX2eQ?4c1S6b6RODhzz1o69jYy#=LIPHx zS{kpmT5E5Eg4bH#eQmX`IC4;|UZ*0pw_>3nZ7fz4hg*efNZvV+c*2&7eR(Qh{677C z`=7P}+!Nz5cHucnPr| zZbZoQXDDR!N~m*nkw7q`*Qbd<7Q*iZZt}5M%Sp_|6Y)%T=|B)S zfxtrCozi{%x`nvyeZ6xLClE)jJ&M%#TCGQLxQ|#OOeUhmKKN8`=mpIba?zBot}YG# z-o`_|FG;*{_(IzSisBrc2`f*~s)lH8F(;?LV$TZnHn;mo0pI37{{l z{?|v#Z2I{0XWSf>v+}eZNOfjJRAv-*Fwxz!?HW=W8I=`99YojvnyvGrD7ZQt%R~97 z>M%UX0|xZe{g!Aga)?(dnUL~SK|{99u&RTCF%Qo^(M*BW8i$KHu5e{;DD+a5G-(W~ zmluZ5m{!rCzE}^BrTWK=rRq!2j0q1{V$i-{+C>~<$DZKTySXet79Xz5%X<@QksanHudUOWW<_L1L|k2v zHL*fA8c@M0J}_JDpkhwSA5k%UoYIK5))pSx=x(?JT_W_J*ezl0EbL%pQZu^$>Z#g~ zjGF-s-z7azSK2fTq=hs^inFIDSq8mSu258?E`EMk7Ed_7s;cUCn^b@uK6bRM%yr_A z6#Vk{M(BF348M!cegs|Kdq=OohMvJNYs_;^nqnTWSmu!i)igwO{0jl}mi*j1Nnz6~ zpg-kGMPf=?qO+2vVel1=DgZ^jOhI54N}QFOT;i}K$%KeZdwM1sa$ttrD%W6Kw|#db zC6bt}a#)GZUW7CUUY!)SRTrArw~;5lpjN*O?fEz^yQ;uTv&tATKDZ(}IJhD_886Bo zj|VOdGhd%bq5v&CfzMNWi82u zF8Q1N{RPSpbD-{j@*MF>l_x8*n^&2<3TZ=9IO3QD*wbmah znRckej6-QX3o|lA%{?K#3tHj5u4lIKFWqjhFX3Mz)`ehKPyez>w5f+v0}p+h@GRmB_dZx7j@~H{K@;9_oG0_4)K=>G`1y~yPA}sB&Yu078M)yXzc1S#^$=lYyW=r zGi1YtHcY?ag1-jF+MqoJV+e`1hj*?3l76lKOajPQ_UWFA0-Frx3eHSTQKiU7*tus& z@&3lfQ^#6QovJ;0l>T#~R*H8BYxJI8w@twTm=`g>K-`ul{3~yQ7QVS(dspWJZ{|(R zF88av5C90YtO!FB90U&Jh?#Sg!-eV(R6Eiz=(1+VUAiC{dJ@9@vEnCEQk*Ky+2!h> zD_Nl-8zAmI5?u1Tf{)|hbohqM7No1@|AB8fTuQ3U4b#Ht;^S+>w~HEsZ<{oTvP@Na z!}Fo%!_s?*5i-2K5^}4nn0L-0nmy5VIC-gVAb*Nh#8agSa4 zHB=pfdvtC?KWc8OdR+wU-hI*8cj@>J)WuAV8Jnt%fA*alK8&$OXs=${sL@Q(P{}`S zE5CVK2(0S$y!Yh{+p2E#r$R*^(m3bW)#>%p6CFAi74>h~!MH9uHb>ob<2zmgugIeR zbnl#NTc5eZbm@_hrc^w=OdIh{tIW+ZLW@IoK-*u3OAFBVseXCEe zzLieIQ4f0_9qcLg*@*S@$p*QVKCG)x;Vo+DQ( z9dyy~9xwUOn|WFyhqqUTqK5oWx}X-f+VF_XC?b!agq&GXa06e(&;4_2WM®~o53 zyM+Hib0>1y1uOvPizgRu1B5ww8(o7rq)sczcz!#jGC$8o)U1@)Il=9&SlJ-oZu7;mI*JnL|zB38- z%Mk8qpxUIdM~D@xSAm(W{?@}4c7K97mW)jzS3bQM7*P#saVT-*He)P!VtnExQhs*;`#E z>5=lpg!BZ}oZ$}Q!j)+1ZJVTYyp0ia#IMbyZcpZ?)DN;*LB*a}1w|x4aBm z6Jx&$xMF_<26QmJ94*8-9j?JXIv+Yx>P)pd(^%8!=f;6uqJu-vWEl#(m1OkgXv`Z3 z$Pwd7e|x55%8uD`h0`0B1uc?onaTH&7vLLZesFc$)X89t;65IK?I9YxVhQr6=h_hujBBtzw7BFs!(4pI zl-G34{z_t1KHcz0G*(N09G@hrj~@>RYT|flN?pv1f08Tyuges5Y5fybktV9X7OR@gAiR9r<%V%Ajw;%6B{g0tV^^6 zthRgcf82fDCWkrJjGUB&3@10uHCWQYsa>#jt4c?mI^}vXar3;iMH(cCbD_c51np|^ zmAFxz1hmUbm!i)mHL=yzpstQa*Z5+aE+#Y4M@cDG0ZT< zWvdkzUUzpp8`s<3a4&@DfK;MA^RxV^>j!jiDwC5nLIV#_d$aH8_j(7lBf2IdUJJVM z!!^)qx88?6{Hb*%D7?0?p;&x{RNomh?oRbi+C(uxkp{k}hQIGe`jCDjoGZLmW^$)m zMcRJiezfj<*@vPp!NzLOg)^yIn@nc!;}hr#Kf%ctzA|^e@lK?RUT=&t7|NTl&tn^U zOr`A&o^RdLd|6uBK5F8qB4bpBZ~VHTjQXPRc#(=P1`lQXa_gBVg*n}O>^FAM!eBJU z(7^~pHuRVTv@ot&^QA!GAPmlkDH&ea{QbX}UUi5VZCNPO1Yb;+|_#n?Fhj|C)DN=sNM7KX7~B8jy$P6zEAUGC>z z?d~3QGC_N%24J?-g_42jVqC4t@qn%XQM^lZ*QZgm|Y&MC>deDB;h# zF230sRAdoWM8!0b`NlPts;c6AW3eo7ZyVR8_1vh?Cw3EEB@ozMJDWP%!=C%pH1`bZ z1SC{joyHYmq3x(K1$!tJLvQs`p(wiEYDMFZ|Adn3;HFj)(a(*E(3$Tcc>U2vu8SdC z2A;Oe75{i)8L*@B^fkiCFj9bdNG$Ivj?@u9_tzKco5^VM!K`rA;iIkXfypO( z#W!;Culy%^`~sFBYi@0HO&cmom6V#6>8z+wvJ>H%g01on_wgQEtVr!YRU&Y0<9hg{ zqeVj>C)Hfq&j0^f+gbvTJ)5(=aA8)~aa}eZ2tG3_nk!ygXZ!B91EW-=JGnglE^1-q zPuQ)63m1xZwbA~3Rbvcl`naHcZ=`5WNkI15Ami)!tzz@}52lr8WtqRx<@~84#9LG` zA!Q=j_5#_K0$jS_6R+cQhVD>0sZ=;AlP<` zD`(ml7?D7~KgOrOIs`))^FjZ5Jk$p|6Pfil(R;5-$iz_}~C))tzwPhmj{ zoRqSZH;0bAeQpY3;J}iVc$&r>$Cn@p&K=nWBe=E&ZBs~)1P6gE`O^T&js-yyoXW8z zU4{<1ciurWapv=dpd*pmqhYc7H$ zXaKS#?>Spiwb_9n2|9Kx`7TY`{X38X%`}#pNV_d})n=pYW)et(1`kWVF?xvI1A?IC!h-(ZtN{a3p!LC0XKCv9o+i+V zV5wC;LwpHvInXI!K{sDJIN%$AAlS*X;BFdp=<7ic?73O+ML)+59OS@$nB^`Ga*w-X zkOaF{mRvMuNDm8wU_;4*kpBQ^Z!bX*?DSaBI0(ks`#z8a+cB1$E*)6%adQTeU^B&% zpW8@#YXy>E8^n@R0|wT#H$@-_b|x(N{UG?bPXS4=sbI*#+&wqYR%+N<400BiF3TWj Q2K_sLelSnb{|-U_3juy0{{R30 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/LICENSE.txt b/official/2.1.6+2.1.beta1/LICENSE.txt new file mode 100644 index 0000000..0cc17e9 --- /dev/null +++ b/official/2.1.6+2.1.beta1/LICENSE.txt @@ -0,0 +1,17 @@ +All files included in the Toolbar2000 archive are Copyright (C) 1998-2005 +Jordan Russell. + +Use and/or distribution of the files requires compliance with the +"Toolbar2000 License", found in TB2k-LICENSE.txt or at: + + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + +Alternatively, at your option, the files may be used and/or distributed under +the terms of the "GNU General Public License", found in GPL-LICENSE.txt or at: + + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + +NOTE: If you choose the GPL license option, your application as a whole must +also be licensed under the GPL. (Refer to section 2b of the GPL license.) +Therefore, you cannot choose the GPL license option if your application is +proprietary/closed-source. diff --git a/official/2.1.6+2.1.beta1/Lib/D10/TB2Acc.dcu b/official/2.1.6+2.1.beta1/Lib/D10/TB2Acc.dcu new file mode 100644 index 0000000000000000000000000000000000000000..f063c7666ca7a424778aa28a4a260176cdc7aba7 GIT binary patch literal 37653 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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D10/TB2Anim.dcu b/official/2.1.6+2.1.beta1/Lib/D10/TB2Anim.dcu new file mode 100644 index 0000000000000000000000000000000000000000..3466cc8ef0cdc7f90cae8913dc768c00c2396702 GIT binary patch literal 5759 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 L4S_%UiK71p!G}@c literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D10/TB2Common.dcu b/official/2.1.6+2.1.beta1/Lib/D10/TB2Common.dcu new file mode 100644 index 0000000000000000000000000000000000000000..473733274a8225fe9f5a7e7c372d89320d6a8c2a GIT binary patch literal 20434 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 EZ}()EG5`Po literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D10/TB2Consts.dcu b/official/2.1.6+2.1.beta1/Lib/D10/TB2Consts.dcu new file mode 100644 index 0000000000000000000000000000000000000000..acde0fe24503cd63c61d7858478f0f07edc12269 GIT binary patch literal 1476 zcmb7E-)mGy82$E=uIsYKC{k_O*wLcKUrXX8TBPVE8)7y!Cb%0Vl2Rvg=VpiA%v|ow zCQU0C@JR$oRm3MN2tN7Hr{aSTLiE{x!B>C$0g7P!W_CBx)t2@?9PZqEzH`oe^D*B6 zY<~O&z~tSoBR$W0-hj8hGH|G@w12D{>b{)GA+W-53WA-Sl_Bq8|z!E%rU>STp6e+6;0EmBm@5I zSj~)u1F9wiy$C{tg*Mog$^*1{<16@l3jhr|5ty6^TSQdN5EYVy${7y+whuIsbD9gO zd183bqIl9OcC{+fDB(0%K;?Q7_?uAgjNtP;Ii<{y&DJ8cWQC5SP`|9FnsaPIwN^|} zbS9?CiH`k&QvW5h*XA5a}ruv@Vn5eSmkqxk|m5jsuDg>GX@WMSV+@id%)Um zKwC>A4c>+N{zp$woD|wvkwG37X>5d&E%m!?eHQDxkxeXpFSr949W0&2#;W;$Enl_o zu9KSzTX7GAiv2Q96D|$5tUrp>{3qSNXWd6^(@3RWK$wyyQ4wKOHrf(Ll-YjaKn9#p zVsKQ*yvs&ZLMYOzJZTDm|8>K==oE@oI}qbai_h%-mh~^9f1OL1Ba zk>+UFoD?%P18eZNps^iH%yx>-a@=*9x1QG>>v&?#QPVk20_+r>j(B5Ndo+m~d2uWl zt!YlIAc+$d;}GLqYBw{Q8}PqbbG04kK}G$e`(M_5?Ekwrg)!O3LF^IP6i2*#?+~P+ zJLfJ4@f)po+ujo}wPPs*?6%ka;iZ5f06KPL?4NgokO4?<#4n2*G2z8K1^YL8Xz{;1 z6IWjOk0z?SkQ=P@1eeJQUXTF(qjQs!!R3zX0bDFUx1V0V{%QHrLHm|kp8XzjUqY%q zlk0T2-QiA$yB+Rxn0I){;bDhI9TwVCg>9*0ovA|3%XZ|vw$!oQ25-sxDs}&lw3h{M V#LFFpYj7RlMy5c}v%|9p^gW3!#H0WK literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D10/TB2Dock.dcu b/official/2.1.6+2.1.beta1/Lib/D10/TB2Dock.dcu new file mode 100644 index 0000000000000000000000000000000000000000..4bcd690a39ecce99470d1ca619fcbc40b7b6a47a GIT binary patch literal 116431 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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D10/TB2ExtItems.dcu b/official/2.1.6+2.1.beta1/Lib/D10/TB2ExtItems.dcu new file mode 100644 index 0000000000000000000000000000000000000000..833aadc8e7e4d656d11b4ab5ad059e4630e3431f GIT binary patch literal 36952 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 Fe*nDyfLQ<$+qIwqb5#AaV0l#k~)zsb;`Jm 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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D10/TB2Item.dcu b/official/2.1.6+2.1.beta1/Lib/D10/TB2Item.dcu new file mode 100644 index 0000000000000000000000000000000000000000..8b003a68e1544107c4052e6eb1269dd648dc45be GIT binary patch literal 147732 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 F{}b-EXPp25 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D10/TB2Reg.dcu b/official/2.1.6+2.1.beta1/Lib/D10/TB2Reg.dcu new file mode 100644 index 0000000000000000000000000000000000000000..d506163c014c682761fdf81a4bbf7f9d93a52c89 GIT binary patch literal 10554 zcmc&(3v^Rey547>({wkSmQYG*u|j}S3qmZkFo2aIeLxEofuOa=#{%trM$nNvp-B6?gC&z~;3M5x78HerFRJU}d^p+Qiu2rK?-Rc@~I z_|!ni5t73L*Zt>MA!r3`p&WAf{O8r0-?}w8-c81XhP3=~7$^AY~#~4i9yE81$%9 zeN8}D803#D0AaW=W8fZzLB$mSQs`**x6ohnQ^x-NTr*`A(0QSN`~EQ#KL^4*ITZFm zPW#ov-1t+<09SdSIT-Lm+c75~d1TK~si+GEBTil*OP*R)Qsq|=$xJ|MWp%F9EWeKQ z+yr`E&;#r+7eP^|^>|Nsq15El8T`=u9fSuZ^j;M5sj{Z$uQ}21J&+;|NZYaK#;Q9ENm3P1Yl8u`9^sVc&|*1!=&t`B56M&k{Q?RmowY^|he2XRlk(X{ z|J{&FHDLuBnAp#}?0;EFYgQLYAwMjP*Wcc>#A`M1GSxp#nmrH1Hh|cD*6Pm`p}Aph z;2_k%Y^PiGqmiH?7F(dfLK0r`#Me)Q3DwPt&ftacMZ#*JIp$gP`dvTA)ay=lfJ5bh zh+lnW_QCftw|cfKXcYFvT$5gy#TX8`+tki0KWlnP0eK0 z1ZEsi&Di@k7w0E|VIk7stvY;j$b;K~smkGm-Rbs-)MVK+^>NtSdcq(a4V~j__Nl4J zk{64j?tla2qp(VtV6E1@UG2R&Kt^@ALf_R2kR!XNjB?nERJjnb!96i!8ybyZPEQag z!z$=HCOH~W1Gt!sMKr5tU$lQ*Qk7sZuHEAiytZdI0FB`Jm+|i1WAvXzw zHYSUHhVYP{aC}Lcig+)t%^|%B(Ov@r2FBLv8-N2>hVD7KY5b}?F~53{gDI}pab9<4 zcIboi-2CXk#I48}{qjJt^#z0y_8J447m|ZgNXBF4i@*W%bYb}%9mA|2QmrpNW+vh? zh6@NRk=u@q|K2+wwr`jmU;TO3c_q`)i+=o2VHrq=^QjAtmkm+~q+4CCGNbjI&b8(mtQHtH2R zQ7-ZXg_eecxogOPu!D!}tF?EPAFtv3=o=$KN}r42(M(1D4(M+>LNx?$yBo zbJypW<5~Z^KYX!98J2``Zb0>UeQpVNsHc!AHwlxTPkRv_k_0y9`#!|;lHrge+6ibs zaCk-Fm=_2}f;F-~a{og`>y&i#EJkVxWxS^`#k^d~Jv%{Xijk(B*t||l2#hTr6(n#s zH0;}(s`P~DMy9V`^Po1CNac>scIab?tv_uW-KHs<3F8<ALe$U8NwYH=P(a8E;^?dA56;WrypJ89SnqpzOb*s*W^=MT>(XD(w2mg8w(#(a*#b4 zYFS~q?DpWTwPryb*n`swu3Par<`$Re8| zw4&N@vZkWixM(dLwP=a%WSlnTQpp}|2!N!|Y838#qo1e`K{s;#Bj=X6Jp*vUce`DK zCLC_;8OG2ALjSR6`5$%b5{UPpxCWy7C`ay{Yq%XPu{D5F?M3U8=&~cE1mKW7g#6lU zVA4DdjbuZ7l)5M3?e*h=JZ+dT$l4LL`&hM+y}vm$b_p4C4UT0WOdH5MfB5)=`U1N- z;C(T+kw*J~Uo9tNa4kk(`eNKb*3T)PzT#)pQ9Oe*5G~kxPMo3c!qGos3!X0H=jb+a z@r!RlBxgrn{cr)!%ie5KPwbWjau^QK*(8s+cW{gOR6=a^{R_ujMQm*Ob*gRTGRn1V z%t??tJVgs&HlZ}GA_rB-rixKlQK22O!foUdO8;;Cb^~uC-=qFjKTW^IsdY-G{;;Y3YSRL9wp()jwyEkQ`NhVZ6=u?|Ajy*phQB0QykAQu%I=PPp&)z@cO;>nntzR|{{eVuMMd^I3sWzxPT+EjRL zUxFR_941c-+dPe?Z;h6OaVxQa1Dt>}vax?*e&2#xWH(%t;nQyeEMi$362v8j3WTMb z!f@^-4Tg3h1wqX?_3u7B1D1@*LXGrdvNf;sZZ_^o#tdb|p zPFkFNK^MuV`J^l8Nbj~vc2L`5e#Z{(Ce4ic{*E+&^`)qT4vp{|c5qG;%IJ}+G+*X7 z?%*m-d_b@HOz2;Cqljvg#g@RLO&;Jlj2ty4M|!ta3gC8x=NqtF^KHc^bViWXfN%Ar zrCRfiIC@yuLGw?cb#+?L75&{67?ph0bVT-+;Ukr04>l z0kI+u0TZ@^Qcl;oOQ}D03K2ka z>W?v?Q~IAVWpqDHVzT%Dm!DTVA8Ec`jVX!0{r9E71R$O5@F?!+tc(6-C8=Fle7vr4 z1yDR!CV1LM6d#YWEAy+OC)b}=3!|N%13;?Qcl;u6dV6Q_x0~v|j~>%#QK(glSL)b| z*^zU_9ZME3_O#m?72w`f`Mt)`sio`}=a(;CyzC`LK-=0Q7i$+TYOlH24xN{YrmFMN zccPUSb*VS5eVMNRRvjKK7uI&rc~L{wyp>$^&1l_4LpgtU2_W;Lvjyj-MZDShR?yT< zm7yuZOid>>t94Z%zTE;&W=6}4)^-RtTJC0gt=*!_5n?7^MUJ4!Nr{%1aIvls*3-I2 z=cC7>gD{F(b6tmeEf8*Ttv?;fineVA`uYyl8r`-7Yp2z-(az;dJL6-A9ee*Z0x73A z`5&hAc?QrjtWPvpCJsR+9ev(yM?{e0;wPUfN)CN%b``W$G*Bz z);qut$<20O*dCUE>`1q!TPp&Z)YXz-wW|R;{9>VV%GwtK)V^A3{W-Wr)*p|gU|59C z{kZ3J)<#bODI?l>un?MBT$Xkw1O?+U5Rljr*s#&zaFDe}PCg6}X&3VKH|%m|g_#x6 ztk}#-mRZR$D|u$c9)0%!1Bv^KsA0@XVq%4xT=|8?zc234jMSor~fXj|(!55jOfE<>jssDPOD6lb#cq({?n;11pbUE*>KVpB5Wx@5$i$%q}@h-;4& zc47|o19iq1l?g>fMcO>G0!_;+?P{*iJv;=#@Ba1zoC;9KzIY_mXxe8_yY`(0>6s=S zzO3l;M}xFJxTa$t_^4(tFg`YEJci6`%)apthU4__iMo8)4~skM8b<+}=Sq>M-F_tn zs<1B`Tj^M67+dJYWu0sB3`e-m=1~F>Z{n@=FmI!~p|tZ^G$V`JvS_B2yNPE>N)ga< zL?=%;r-o04w~gD+xFL+oVq7-k@)$RiaXE~$Gwv0}on+igj624-BaC~MafcZ98spwz z@U4V#9gKU6amN|=F5?a|?mY%y9vJrm<33>Up<}uT*A1?cFVj@*9V%8svzng{#io(| z*(y)*RU+I1xEg*I=wP6FsJNK7fT@|H%v;0=pA80<(5;1ZMhVnxG+(3zL&SEzjQWdc z)lmAtSQ;E6?uK?~u6P(;YKeFX0{mfC%C*!=$GXG|ApZjRZ~=VyxR0ng822fIt1E*W zCxaUugR3Ir{=~TdnkvGrg8POqh5n5DXsCDznwNMx_XCtmAaWFC+zQ4OF>bjz5)-tM zm9fz#!aD9MYuEukBUnNci2hymG z`+FwWmB~42CRYt*K9m7ac0oBn?c7A*Z^+=<=?MBuE4LWjY7=cnol&dJ zMg@yNGw29Gpca8qQ7?sc7HR?Zp&2EhU>6T^tc+5tg#wugc|e>_E$k(s$g-d92S)8* zC=@4&MPP~XFKp+xSZFDsv*@%fJoy#erOBS06@` zPs#XvW;Z_fAI9ek?fC3Ch0o)h0MBYZ9bYv(tX7oF=X3E@$8UXdF<*r1n8argS+CyC z3nap~Fe|j9f%=iI-F%yk710Cy2=)X&g1pF=Sf1cZx?belx(+}&tiwkEdK*|y0DKhS z6QJa6D5rP{wv{4s2JHES7wB1@SV~9&+;pQ9_r$RHuw}nQUr@7O(?LW2nAhfLJJmX-`kZgtbiDh0dNc*1c4bO vu&x0@W>>DD#b&r*C8Gqme%r`+5HJqXW1NuDHBqnwjZ6{j@U&5U66t>dWsXnR literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D10/TB2ToolWindow.dcu b/official/2.1.6+2.1.beta1/Lib/D10/TB2ToolWindow.dcu new file mode 100644 index 0000000000000000000000000000000000000000..0c5931f95f89f0b218f13bca853d9289a4a797a0 GIT binary patch literal 13984 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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D10/TBX.dcu b/official/2.1.6+2.1.beta1/Lib/D10/TBX.dcu new file mode 100644 index 0000000000000000000000000000000000000000..a11edaa76cfa50aaeb0b4e34a5a08c2d75780c66 GIT binary patch literal 141798 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�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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D10/TBXDefaultTheme.dcu b/official/2.1.6+2.1.beta1/Lib/D10/TBXDefaultTheme.dcu new file mode 100644 index 0000000000000000000000000000000000000000..af135622f63a62b76fc47a51ae3c85462bc69f29 GIT binary patch literal 48685 zcmdSC4O~>$wKsg`oHJ+6%p90u1Vls&6b<-6{fJgm&E@ML7{HNXP|^@XU>JuW7@V=O zEy-Bq-te5zThrP%_9nfxPrSG3jlD59=FxmujL~Rs(yGmeCNag_*htV6)0mhy^*Of=kHAVAk107U5_r4#_ z<=3a8Y8;LH^$i4%`zR|L+X2qQ? zfyVH6Kls)8W?Ok%I1mhU*ta*o&}=JeZ*L7Ww0-`SM*_`qaYIK_sI8&3{MeaWnr+_p z5HLF)`BU1q;3R`WzOSJ{~2am#3RVKZ73x3__rNF!DM$C&D( zKy!OXpd=8heu}EyCh?NchV>2M#%2$(f{sYddJz8zT6jG^IzN<7xjQQIsQZ3+kWOgxhmR0@h)8#Zhx?g%u5 z1Mg3&Js9*9TqV^%rgq&DbeU9`JnftIQ8%7~t7Lpe^!-~fK__dVUOCkN{h+n9p>;!G z!_l8y4vOkMp)j%5Z1oneZRq%6t~u(!DQWRy$u}=>jJPCP;74B^3H_|!HGU^ z`I=>FP1TC3;)-&$s-{w{sV*<}-Ei;wbAujzR7%_1!sTsEp$_!I5B}JL4ry@TN?sTZ zioP`~Zh5>D$O*p6HN~q-DwdU27gnkV2;^WOR#u1}L#Z=SUW}pCF%%b}xR(XOIYeC0~=H?9nRy*;h z#s7uzB}*H+GJHixRGWfNP%p)h%k(3V)4S{UmW?D=J-6trpjuqJkZT z!jk2FU(M|5KhM=0R2P=})ROY5Dz$nq;W(klRv0dEL;VGvYRNKnjgIy#Fq*}(>Sa}I zf=gvZ)qY1xJWWqCv|! ztlI>g{i2$x(!yeu4Y!+mVOoYi4R^G+_VO?jC&XA|D2?eeiOFR^iYr$5RA&8&Wa@Rk zN~1z$=3Y{>##dgotU|3QuTt3zZ~#(L3`s#bWb)zb3S%*^bppO~Q~u%fTHdPPNr-^;Y1v!{bfR;<$5 ziw9CiY>?b>jjPL-mDMnY9e}RUn^PH+$E&i*6V%mS8aK;!TtOMD+jmIJ@U%{aE>h?%m6PaP=?xkIgO>$*m!-j@nfE=z|V-!v= zU66{ZWgQLc*TTOtU(Bql{N2WXX|~lAH?(bR*zkmB;Uf4+a-CP6{nM48l+T|3@Q<%l zAsiAoUw5vH-WInZv@wV;5Y{8W90Dd8r1Iesb?~`)w;T)F8(WLQZRGGSYYhv5RTK)Z zYgkWMde>XOT5v2VH@51*;y5AcZAu#&1An5Tv$3@-6kOYiD?C5|M`J7G*+fJyQP~xT zK)~|^OpGzf#QhraC^fbs-~@iHHEf3vY<}fK3SW3rYoNC9nbpls9moLBed}{MXuA_J zG0@PlDC_b+1rwPpF8&O37^OHD)Pve4PaK7Oh_6 ztMe7FsH`lkDtXQF=ef-ap_C)xq zWIcgiOPx1Or&fd1_0EP40_G0S*&lS|6Cx9*V&^TZp$4;PnD!4Ye($Hj$%Rc#fFq_O z(P|3@s@lV$=1^k;C95ngn_3-M*S<0E7je>SDvQ>vC@n27R#$tyE4+ShVMY0}DtI>C zZKYB@;xe+ADu1cJqQa+EAdEAg;xX&WRPr-wty;w<`$U3!3*lKyRutb-R9Jk=vg#H7 zsuGIYL5JU`uBjCR@XFBWm1eJl+FmY6PT%w5hPWxz*AmT0yFBMT1RaSq8}UI+1W^? zWR#h;u>>%|YZj^P9Lfo8jje2=tSamLm!OmCE6RN}MJra%r&0=`F$|7uXTK|JLoE3VKU~csjFa_ojy;?Fm*a^!Lp#D zy6&x@wDvA?$A`YCZ3{YUK!$n&k@+Nz0wRT87zE{p%qCoG@46+h>CSd6Lm8bT)GmQc zpMpHK)vX`#f{95^kcp}g?b3=Bg~$z;vD_emAjmz+Z!IiBR!WgLp@hU8gO$iYW6@kl zWKH49Yt%}XhbROj1_;6uhD3tsS|LrbsqKnsDQ^165R--URvJ>qsajd2mXzpuXi!m$ zpm1Y)vCb0Iq7vVll5!uhUcx{!1C_1NlNB@p0x}^Vl7Bt#hnFtGn2?8HlNJpyXx{QF z#w;lMuBHf(Nzuj-{9Z=PLG9vb+4a_#{gmVA<6PXn?#_0s-@@F;+7ja6vwJ+@0y|&)g@}RuH)j8BHx1tdpo(@DNm-c&nGFHU0uxd4`HM_@ z(Un?Kh7nldhipa$h_arIGyaox{*m+t_2i0{wA+%BXq^a5tcP`-IIC4mpg3M98x0Y1 z15M*pwL9s}qgb7ISwhWBR7Qch8OBtC*H^Pfm)^J9%XDt@`d~SJy8O$ELK8$^b1@sRQ5kC0b7e0rWoRJ)2gUk!QnishGk~1{mF26|64t+> zXUuWJyNCvxU3wKmlYK>GSS58#(X2#Mlu=ZuuAZ;w*=b4cPW*MtT*&a&TSwI;7$R(`N4cJA}G%(0p3I4c_w18;t=Q z+jXI|Jt&f8`sSUg2wK^O$sHZmg^dB(SmFVL71pgQ4tKP&0u0R`4z*HSJ5gNLx@rB| z4W6$K#T6$u{dr?B#TSMNU|wPiEp%sVKu^QlLnVuX3aioqa~Z^8W}NChuIC==3p!&f z4fUSB7kADH+ABl%F!SEfllotO7j#hCS`lgssP`OxqbVck)R+H|MZIUnPgedu=pf#7 zgrv?VZw@Bts|l8YtM_beaU20kD7-e%K?|f9Z#r%@U*Owj% z+A7E~1=_4xv;P_X3u}ue+LEF;b*A*6?hi`AyUN--zJ2S^LzC$l`>)}8dZtxX6RB$D zSI%??ow`g&_zj7Ys<3dt)&O*csYh~F+V=z@-=55wa0o=&*JahP?sH?Vp1(?XuK=fLCa7wQRs|@ z?|Vy5EehIvUZktWv`Q#ON*xPXOa_I43_q*;9tJTPakA2=l)(vX_(_z}PFYV$#okze zjFU?7d&hO@BuIRZHUgL(I;arW9|WlKnx0N6sTxm=AY+ITAV!P|am4J5SjefLTy@g=jd6 z5!Ce%z{IstIi^J_#Az|c3ERlh6?fL;1Q|Vcm~0FTC4izEyltRexbA+ z+m^IH`|MOC=nO;)9R}JDP-6f)2J;YO*0r}GAh~G9R=0<-;oL;I_{?=5WFXD1SyNVC zqQZo+QTMfuiBATF%1~SPiKiwa5~4ZnA0Ui+usk0ZGQa(AuMY$#&@z5pMg4tGeWNiT zz^zhDw3fDatfL(ZH+FzJ))lpPGzB`?j?TlLKR*+cu|I>8u+~7@b3>KDuGzGn?U=1h2{QgP+ z6i2g&La}jr65FtdKOBs5%F*Suw{kPs-bH-P{aoIqR`Is4^ZD~ix!bt~qbWrtxQojl z>hz+SLDW-`!jYasG@v*(IvoWheo$Yrg3Z_{okmGl`v9Iy#b2;CW+wR78Cy}bRoKkU zvGTbtIv5Hyv?9c@i~|QzKXu>1WxB^70yT4KTw`tmJ6MWC&H-{`%MCVfLl~zjZKd3u z++DeBA6(D=^$Z47JGeWzEJ@!{OXc#VEK7AWmkN>-Y0oEKZ^qV7l&eYk-oxAjNx~hs zWr;ZKXinvBld~-OsW?N;vKCe$SMYG6*!Zv|BH1|3eVZ#c?J8Qv>0Olb6S38Et=Aw1 z3f(4!?5ikX-WeyZ#&J@Vt0h|Bf50)y7nfzl@mAoTR8HnIC7eCr>^PNka3H<)FOn|T zPj+LZR}<+5>jUy%qb+mOY$a-Gp}(TW!QqVb%S_()?Pe~Wy4+!QIptc?)P@4zVon6J zhI+fiKQJr4H<=J<296bG7HN9lU!+WK!k~OBQU2K&!r8L94e8+)#%XC5m+2_qP#I{8 zP(8Fp9UV10%DR>agh<}Y=I;`MPXznTh2aN^uYvrwA?+hm|Hw zXIIR0>!9MbfsGyQZ90?~{LEmm>#6+?;wX_G!d*pB&|GC$5hR z_s2~XE^CZUWJ@~kY@SPoHev0dZ#Q810!>L|g|Hj4!YMXmR!+WFmqzLuDA>WWP{l@0~sAIk}`G2k;zxjg9FJ#M+?l3t~PgXL#Qpx#-yz&$~90|8^`uE>XP_u zdm-(DQ@ZToQpId*Aw6busdG?co-U%8nQMAP36Xgq*j>y_0*})q9_+2h9-?sryLiq9HR^!8)XQ73+TFRHL=q9Ooxy1 zO*pdP27S;d^!H`*MRY&&B}T8AoAomcX)`D9#gO9m1XPwJ8xG_;_C)fsErTf6LgH>8 zbz05bZI{jAixc-wF7@1~xYHqSwrn0|dAOTlN5s()eefi(;5S%k$ra71dR%0gjP3z2 zH6%>duU>mVN;=xtm$ZMYt+1n`{aaCPEit)+j~|m*N(3e^kB*5r%H*A7^h`6bDbmb2 zu+?d@b%TV%ENoGfa&6oVBE6X+aqD638P{e=AKEB)CvkFd)H<%CE;x@k>wvX8bOrq) z(`pQ+B4s-DWh(=~iJTiBUhNc2+1UUr9WR{LV4?ALd@D#=$wK8T(k#pXVY;GKxnJ*b(DHrB$a2b#yeLD-l zjob}xT|=YxTFTu6b>>`Kou#eq*tly8nxXS9QtN5=H3t|uufrH%SmEVt$LNu%hbxe# znQu{dP1kc_@=@hS9beo1`qQ z(YKq!P_g5DrlqKv%b}Qb(VS{m$7<%fjcL|O0Lqn#6$+9Zc6kdyY zL@x4-sokp=QcMtbDvMVU@bYYw>mXS|W3nKJDGSD%*B9;m+1R)@-tF*kMY5q;8p{+% zY>FC#T*`g#`ljX!Aa8EKdwNlB19d%ROxLmC$o30j8DW1`Y`P+0`9YQg=K!H^V@IQ* zbvotW33R3rqYMz@C#@rBBf%~{$rR~yggIGP+zBIIh$7Gbai%*CXa?txpr8grLAmMI z4tcadigL{)%O}?pMap*Q?+?dTQgYn7O3qT)yGHFBu<_L1#+(`xo#N0ob9`EE5GmS~ zat}bkPBVDpScm3m0-L8sqq}maU7uC5v=0;I>WOpZ z;rLCV(H#wD*aIfPYX(DFkj56=cM!3MVp?E!ICgy>zuuDSh@7e33^i1%Gv z&A@Rt^)WoE>T$*{ji$P?87fFp7(-f?fJKEqYiUB99Mv(hPg?XLiJ(QFL*MX{FM~m= z({MYv4i+U?gd|I8O2+O|Y(EYQ>s+}c)PQ5*wg6Q>NdBHJaB0bX_1@oT?qi(xM!5({ zw#_qEeWSUAv9EbDOQg^Tc`~!CEStpiP0NztK^oR=n9e1RniR|JkC_WuGqE=F9w}46 z;bkh9ix7(BSATXGIdLkNEnSrp7shn)7eu|m`X=DTTl%m{5k~3hBms7fWvOrF9 zifmNOg|MXrvK})=2WzQvRy!&f#;eER@fs^xyZ{+l&&IE~p>Zv2-$#s8@(;!BM^U8N zZIZY;Kx03d-W9}=2Y&w~%2g48squnv*iq77%T48G(B9cTlbB-cZ?ks`qa6MI1lN*9 z>+qjquYBA_brjp$_?em|Q~j6A5MsF74hf}Aa-PJ=H*$-nNu^(MB9~8Zql|K75x6tS z`<(YMAj%6!;z+^kBBIV!VZ?!%VXVzsf+G;8Nz z8^Wl~ca2xHShCys5cW9@gs(~Z(Rm-wMWiGFiG)!x$7bxQ_wiqLOLMIcTh5v^>4l!L zd*yw6(N^h!hb;ppO5)hmypQMW?Wn(C))R@bd*Xe3!44vE(L`|o#c*bQykmh4io9gj zDb(EDh3@0Uqtx;-(Ns%C@J$Gi7Y2MJ~^=_$@@_wk-f4zx}(>lHR% zjh)RtKDm-;rQvEA^&ENbTd(HdE6nW^E#C8r!PtKB{!6BvQ9tM@)W_aY%JHIW=T61|er$Ir;K zqpoml9W#jhwCYoDEqf}i_f%^D`DWvT>6GP`UmMi!1i{?^&y;-j_GbWMk z<8NvpoCXsoX;e=}knH1^6cQr=6UFGp3@&~A%{^2fGU^*k$aCKAf-jA_Mn*>N`&j`V zxe6{5pWk;Eay-X1as04QLQl6_z8tpvvVwDSoZyg0?*%}1{D3tQ%HrVT@jz5?JZQEn zfq%x~>=z@#MT0yyY#A2xz8%R1+H@1Wf}2Cle`MT$Y`_&A{~>n;k>eZ{I;Y%JlhRL6 zV=|Hk3J-%py8l!j#k}fCG$rQn)Vk->3Xs0u&q-AD|J$&PP(*R z1szqx_<+oDn_qnV%aM^MEjx(bIr{jY^zo9IQ)A({7OuA>NA$LEEqSc2yDyvy$ZcL$ z(vFR`+WaEn9~=eD?_-1x9_CuPMflgs9VWt@uXa_}i$mH+y-RX-;zv8#BCRF(S`WvK zXa^bL-kKa`9|DKYP}hs@HMf8Bps#kziLi{edf#tqL-S8)hxLMa)7&Eu-j8vP+;{%#~^n*xd@xMmsmui-uq z*8*HO<0`~8zwe;_pJ~ALG-nh6?0WHX*9)I?eZI)`55>@t>*)ulpaJOC;s${6!wcpU z$B9&krApjp=7dDmd0Ym>P;#Tn(*fL;X^0ktJPL3+J9;vZT=&< zip^irXT+xc=fF>Z%fOiojL%3tl`X7HpAm;f1UbzoF3uwcl($!xfFw9W6*@NWK`J_(dIXx#^w zJ)#|8cBswMe!KaM1(Y^_MxPPslOoX)7Uv%wx^YfU)Z6o61(2b#2gam zpBUtyv}`#VnGn5C<{}Bv`y7^tZGRFGUrwO#-=WV$G@8W>fUG1NNZ??9A|Xu!6$3wA zqglXd3kTf*DmoD>yJ?5l+i2IXe zqGb$)zCr#8$P!Lu49ZMJ=y%JBhywyR8PuwkDuZ@yqIQ_63)SRYK##&GmxT*nNxL|| zkBuYQ(r3(;yxI%X2xTdKL>6H{VXYWYe7b&gQ2V0m{rfcWc{JyAhu9;HEtZM{KSU+7 z<$*1DV)Qc^eSAhTHowaZ?{nSo*o+xm!zR$+>TxzzHinl4e*-Ur4#r52)Ke-lhuZaG zzjkVQ*tt9$SRTH2z+-{m7ieC-R4nQ@S-&ZCGe^y}^BCE zpw0Zg9syUe_)>8^;ep5FsE0dRnpn))*F-H&%Tt@^xHtvskV zSLNtEn2L)vRn`g=kdV9jhUlghxEaRP&*ybG`>a1W+E6RdYtTjS@*&odPNH7t`8>1r z9{+i*KDoDZhy`I3suisxZ8LI#k*`GT+V5$iD44kFd95J%NsG><5bs)E(2B*bez=xM zdh|QsJvsUvxRFG^5kKn&x}ZO*2`|J%ydnA>J6v4!J5DY<8J=QvnkOLiSYrB$H6L7N z8eG^p3Y<3`||1_2-59kB@(`N$C1LcZ(Jo5+aw6e~HrTTq#sdgB7;@n*8mc_1EM$0sOQ;EP%+a z@Bbq{dy7SHZz=D^{NVRR0eFU3)m~y;c-NAewcmCPh}!SFKHxR=3WLWQNiEWFFC_;&zd}->VJ?e9s`ima5ueb7HY9)d(qs_xT>WiBCvmW(GZ{?4uP8hBGQIGnv zrasi89_y`qptsf%Bltj%`l_b>phrE~Te(GheR(_+TYA*DHTC`;wZFIbyHLw`F1rcX zqrRu9(H`|&um7oilqs0P#Wd0fAk#uj&@a0FBpCW8QM+ldN!sq!cwhoAk5xa~(|sGO z{zXss9jyA{-dgA?CUkcbtNvL}H)(lPbgO~!qn_?ohVf8O_j-o$010BnAQ>1B^mKHYUgfjl72& zoTRD!UFYl=D^}INpP;{{dYZvuW44~uy_@Ul;xwVJS3HDju1CGhru(E-ntIvG^7&r> zN$t1hSPiQB><6BD;c?_ADmY@Znc9L1Z2p7&+>&m2XiB}^HPGN*Tfgfw(;Qoln5X%G^CD33>KZc~UUhX>hwic1Q z4xeP+wO^~0g_Y-ye-8I>0)r{Lo-P;>j`d7nweR&NS2Kk3T`vgTCxG*UaNu*EK*xGg zS*LGsk-4lxMJv!biPtmb~e}j5~@lwGtaybJJqc|drNUYIigb3zb7^5aA zc@)%J*{`K)!sxv3$3)W9_j=UxWEND_XS#%wJt}DZp7lyT4#?Syl&JxkMJ(E2PWaSUQO%YNMtVKYVT z_xf5aCfDY&+Pse(8#o9OU1~p1UAekx$q?=QgbTZS{r&pdQ5|A4$Mv*2;!r;g!)x`I zc{Ts}qH3*Hsn(8Zm57u&&fv|gZ49NF`O>i{lg;+kYvJcd##H*jF6*og3iZ-lg~|_W zX(PUhfyu<@W!}~8!NWMUnF@1l`QqA&=#BLEcJ8I2f)^6h^JT{`!z~^|0D18f^<}2? z{~cA6UibcGy^ilO*5PyLP^MA-TRKGEX2cmLvc|;?Bv$>gfs6#q;llc0%y3n{R}Pi` z9~!UmLKeiNjHwlTeCkj~!oo=9izIQxfkED@53*msji(YL5>wSE5%sz25HVu3Olfx4 zi|=9L_Edh18B3WpHjvbhYqg=?&iBmO3gdc@j0?4}u9|0-KzUS}r+-+b z9sKmtco$R=62S>r*Fmep`M>vDzfAg6QC3;(0D!z#!7iiPe!zYD+tKi?+rc>CQ(j~ zFJtwP#)a>t2}N=8<1Y9@7EX;OW5ctKLTiLrTBE6B!!$$D>qmq9)#3WeXt*ByZmjq5 z?XJC?dn|lvhy%ixJaV5Ozi4+qt`8eK-Ej? z$Al5RZ;}v!J9)KNJ&#?FSG|~2Uf0vhCTU_fsyURe=Oc}#>Z{RCkaw8mBTH!N7bt9~ zSf+Z;TWb_Bna_dZc>{p(5qmnPyM@v58{d=`AAhwu(Pn*7Pa8By#9D@CruI1BDiZdyn{e-;zL1PyW?C~H08CiOmVe)YvJkaEN50}|3F{>SP zJze>U(HINl*^>)P@kP<_1mTE1-gGNv|SKfKIj`dZ2(9*MKwTo+)^*v*(dm_Wq|W>H&aZc4AsiMlZr zj(J-~wBlT^xx>oz2P|XXm-Tx4NF_4Gb2HWR0_}eE>vk36I`bDI8&S5TOa2AV3N)&0 zcxjyD)HLC0HO1Tua~u8FNDXwWFe9RN{nX&CLH<81nr++~_L>XWPj`SZI>>cx`2n%W zw!saV^kpdviG$cIA}fIi{(kL<5i;}*ITM>g1yU4*3dfeWa2&ZzbcZu^nQ=hOT`ln# z1v1KP$IJ|Gzb3|LWgK`(9m2^ck_GfIjrH&q^e}l0vzsf2xB}y_Y|y%w4!kx0P<7m_ zWz8L|xrp=q#xczYYgqMo{u2=&`1pxWrv!$;ln>}3wBOVRX(wKW*qDMF_Csbs7slA9 zonnU?4m#8@oh~^Lob4!w2)oCD2TB-wmW$u4e<5x;q+K+YKW6TzXc4#el0FBR?INvE zqxV8zQuJQr62?}7x%gq8T1KK(Dtn{%Iyks4DmcBg{>Mt{C0a<83>1P@O`2xOG|x|^ zPfFPtGcz#gaP$}^b<10>?svfJs68D+>G~|ZPRhe)hT8t$VHQ(J&bug;^4i=j#6VOR>T>5ye2lnm+WP`8Ec_|(aOyLe7$@w`nEMbyafU^G z^^;H1r zvF)FJrq#+bk6{-dZidNz6C35k_+{>3)qiI(JebRvP9~vn$h()`17T{b8%!L#)P_mQ z+3H}pm>R%)(TVTZHK_+jfW8dMZr+Z~k|a`R6}3}oVH`OY+S zgq%{ujVGcnot8Lm~sg5afjoqY;|dF@(W1<0P_I9WX16r4w=_*Om(K_{lQ1c>BWj^cp$(XUpi> zF5P$$Lgq&(2g&YyQ*AwIf|;gyRFk@gD!_ zuKp{6db*%TJv)e|rv>$FeACmc=~+!ZGgCdK`A@|+J;j=WI1l19)~BE}Y`5U`!fx=) z#k9g?i683$9ukg~37p@oEz7{F?+YBa_9n9>DHeVf^%N7AM8(!9goS)veFAkkqIaqf z$C7KeJ{{j08iI(d^;zV@$RkhbL#A&*oQiSGNb1`cm1oN#w=wz{A1+b`UR`J|#F`H# zvqP*3uy)=+@T`V zTEb!D=<4&>HlZ`x`570svXd>HM>@aKU$-?+JIwpYv1lh+8kwr88{1kMP5td&y&d=) zeYtlqz#8S~!El@o_2r2{X>c;*CFPp>Y56PN#N6d*AbC@ZjOJ^%B3J3^8-|T+_?nT^ zjleS*dn}mE*K<6BnOGRn>gc){M%OZYjo!Jwf@XPRO!K$sxe^v=&wLznA`C`v6X1%H z7AdvGu{&Xr_hoj5wHyI)C_lu?gA)xTimO9<9jm}@gt_gGw-{EcT^nLYmn>kvj|s)7(mZ^>xAP6%x1hV|JsDgWfgKMB zB34V}twF&Oc>}8SzoD_?D%cOub!KpPgQosrCi-{--QXbX4OVHqN%n?5w@1`B z2B&H2e-YYS;Oly5mH!nR%ewvGhr=|p?WagHh&hBcuysF$8M3H1yhzodKXcxg_mN|0 zW6U0-cYT3v6b8w4Wa<;;jnS-8pCl&EMAli7K1t%S*dCgJg`qG;7vj9HOKpw-`6leP zy|0T8-}EK%Y!r20LYp1ZO_(AiXS$ zY;7q!`=5aW6qy~M;4_l(l7(`amkRZFPzy!9#9sHr>*YNbT!r+aXCd}cdkPi(r0O}g z+|%B~5`n!cc)K~=t}PFM9hNcKe$B?)`fGipYgb{IujeoGfh%R<^fK3$ zEszv9dSe&2W*FwcSHT^u&xr5B<=#rXw0A`~tm)>D!+c8BRh;1AZM_$X8}qj#H1$RH zvfdGTS+DXr;_*tX)pKkkvJYE|bjm>*Fk~Ni620mYt}sQ6bwBg3b??6-;Jr0nyuYpc z`P6-^Lt%*I9Yb}jykmqKEAJRpTwmT7NOm^7Rp$7{x}W*ix*szVe@pj+rG_nX1#FW6 zGY_`lEDI-;gY^wy-Y*P_3q`=-Gsow=&+vakZn?t;M$ zgfNrMX&K%Cx!LQ<;FuEqLA+}R0MFQ^RRY+BWgu`UUGIu`BiV{6Hki(e^s5Xg@`FxR zlu@)4Py{<)?QOxf#x-2`z`QRXnzT` z4)M}q7M;Wx%l?6FAgk|lng^3u+MdU6y~Ls@dPs&)9)OKkg!ITfh<6H&-Y2f5-#Z}$ zXaWXdAmFW{u@KfkpcCGy=oT9*g8K33N&LC-uR()4vxsNeZ;r(2_gS(7oE=kqpk1R! zvFnc1N_*WH-$#4Y$Jqb4;j2T(;RcPZSW4OI2xxHTf zP2G5&*~`1+{n*R9;#9VdHIKqn&>CXcY7lK7EVCRHkdo-($wM47Uu^ zBw;2q`c{WF6!(1cuW%N})=KdDH}GWmM}?gP{Gal6T`xX0#?^g}oh|Hgy~IQ%e|Na+ zoTbB!xzthN+VZbZ#y~2(M$GJTC|5g=g*4V9*EF1S7;o|)w_rzJ_W}d20Td%}W7n5_ z#KzW*hJV!EUJI=~u4Re;4_a5z8w(%vY{kpa_pyyKvx9Ja2csNb$B&i*8+jMrQ1)M@ zL`ePE%!FW8ETM*(;05&#rR$u~kwqT`gH7=pn(=S-4Bq3{iqn|->aL4ZGq#49H(Su} zRp`%y`PZX#ZTu=%w+}%;Tjth$Is;(DOBt2_@^U8CxiUtXWmQPQkX0R{tV*vo>z-rD z81#W;>?x*_b1ZUxY$80xQnJ0wBfYHWU54UgDKTD5d#PBVDg9Ehn|$(1#c5QEjry&< z#fo?Bo7gWS%VFU74VT_xw|DJZ*RM_c3vKrmz)0DPd0MgYN>6bzezo@7A`inheqEOW zJuN+Gv zWqfzDjBoOh@%^(hzBp0F*R{&{x>On8Oe*7hE@gb(ri|}jlJVU{GQMC^#&-hB_{u%d z#kB+18C(Z&S)DSz=S#+SY03DyDA`hoau2Q@puZK@Zl@bxs4_#rm!Mekq*;vl5I;w$ zlRTEs9sCuC#V_Uat26l967l5Vzf4scB%VFyFo+V6GL?{&YY9kcyoJx;Lt?5Dk&^k` zbbcG3$ZzLo@H3_>-IB!Tr}B^RY5c5IeomsYl{929as7LSu$#|Tc1Ss3I1$&k8RNwK z-*!1bZ@REfOyupn1MDio0p2aVBCh0>eNt4g3xAI*tQ?g}fOwm7T6#iQER+gMg`1Sm zq#1Z#f~yQyR7tV9l}Wg!*zU2U*c86SW0^#^566`9l?AptKdbUp%=Zn9mn zHgDZxqGFfdfqt9$LVh~0@>4-}p>f^JmqXw}KKB~%WFD2IR>Es1!1q7s*MgjxT$ZPWeU1mk3vtfh!kR4z5&XyPT;!BD<9x zaw#}D0S4=N%XS&u8rJN$dih>x{r+tJe_7dw^tAj7SiSPI+O+QdA;X9V_+c2Wr#cKW$F-hl2L2jb8mW!-5)mGz=?SS?QRg_;J;tMZF_aX>is;M-vAq+mZMqGNh(ZkPZ zsM!e<-OWE9N9DWxQ)&DGM5A7WnrJ3}e;R-PZTxxoI5LAlf7UZNoPj63RX&Gv;Jo2uZrL7OdEG)j4Q|2PlvwqAtFUr z5_1uYp1Ym%KsTR_%K_`G*q!)5nLmVSzRx*TIpj>V9CD^vW=n~DgOrYE46$3`ML^tq zo#aU1f6$pY3BtlCvXOk{^0N?=lKDhOHp)egL`*vm;K|aBd@Al~aKo#4iT(5Nk|>Et zQgE;2#boIY(Jdxoe!A&m{}g(TmE593lq884kxAuaF5d{ra*;pGKp=NG9FoW{5mWhW zDOpT(NW6^XaVoE1p681ShC7{46_dqOkuVj032@86+;q|7L2F(VGsO(x=kl58B^h7b zKf{q22NOl$@RCCo6)6L>GWZN-E$?wm7n9Ndoe(mWPnFa8bVLu2n4IW zA?{Ru3tuXV5|o5EpA8D&4LlGh>0&D8S2{A)bTLg#PxOFdGWEbzhrc+2T&Vz*Z{-^V zK3%d1>D36|z!1~XUIvx}O80=C1H4biA5Xa%)bc?sH=Up!WE38LA+B6#FBd(Qf`<}$ zD%w`?M|c@Bc=;pH3e_#YRvr48!>3BA(yd6kiKc=!kQV1 zahZ1q5(`ph6NqMF2xzF2L4%mj0XrVaBiCU1FG709(Jf?&8XcQPN)#U~6)PL>v7Qh+K^1V%caC@t~897q%5 z60r)rk$ej9)6v5sw3!8bOaQ`#elV5fn^8mcIdZl#5B%1;9nun{DD%WB$sye+mqF%q zXn{;62efY#bLE@(dD4yUY&;V$i9|~jfd#XXOQo9?4`fJ$7SqznOs`;)hu($j>zQOXc!fJ-;OP@3xS@cGd9R2W7!vO@BplDM2NNGE=i#UGPv<7;5e9#AHCk%9Ug^fsM$OLM@f zo53<*zi#LbdP7gflO%x)2e~a+QMNo4d}Oo!;Iiao;LZUrG~R?&0Sio)E8u2%X%TqB zNXl-w4+ps%HxDebZ*m6YdeZSZozIa9;O~C}8uV#ADKDZ{1ovo(wvw2eiZ}pk$>rg| zG5%p_owS$CW&lMIa^q9sTuYhFXQMUBSl5sXUBnkLC!LL67_NJd0I|k5VkFRnJg)=F zn9inFEhz-u!AIeq#{Q*aN;0UTxIHm;;BB!fkt~+UG<0cXya;iN04)Q1#5#NtoDAyl z2}&?Y!b>}mwkVNL_4H$aBvKlTohI!PaS1;|77;^uammN|5X`aF!6$R*99x{QiL|4W zxd&I@#&JKmbK!9be{d;z;aLfPfhK36#m04to<)T=Zk=`c!mT#0Tbh^Oqu(aUT#uZX zkK1YeHp%|n!YrA?t+o(vCfk$gHrJut9Fn<14vuce9o)iR0G+dHd)RH^ZUCK6adHW8ZfDZD+HFp5_GCVPtCP#ia8n7lAJ!+F#kch1A9j~`?)xD;4GZ5N zqHjoiaC^o&R(x=ulas_Bp`0i2JojK8<^lKP9-&v*A#4}B?TZ~D<&-k4e9R>e3qOA7 zCl5dM^xpl4Hw$@4J-CO~Wo$+}S>k@OOX$Uu!^1tiTWFYkc5+h2+zd72?u_n?-PFO) ze%gR)MdE(CnctBS!n_<79^J%8B-B0n^Si-eBG3KYF%RHhZs)rR{L4ps0e17;qYCx? z%U?b5%yawu4j+3bkrfaB=8qrj`$OPuXq;0|Ff4-3Dlw}aZR z9-r;bgZJYe4`J6}Sa@Ow_3^~7PNNT4=dU6>5qYAo-gZ_Pt` zz&#Pdq!<>SK1%JLe(C^Jm(Fufh2S@ag}tWoG0DHb0?W1W9`p(Gwe5)CWPR`hlRH<6876D=SfR=?oDj< z0{TuK8QME&JeV{!L@cszF``=j!11#XVcS6YVhlO`{5cJ)COHv-vHm*N} zBx6{3?+iiTdv`maB|P_T2*F@j_~QYB{_(xL0WB4|_Yyp8F8%Stp`H9`ezUMk+#~K2 z55XvI0`@s8P1SRMT%48%PtN_ZhcSQdfF}eeJuG~XLTdg1wE|e#FtsNS%LeLI}D0u<&66HTn?cJgJK3&NHo1 zn}9Vznj)1;e%2CyvJ$wHCWZJSG#V--_J&Z-le|3lVF;PQu<%h2K|dNwnw%$9^W2bM z!i&FFehM<*rC9BqO?+(PWg;r`b{PP(O5#^=W7(ls_@13|#f2im0HXj1?;KvThbWR!; z{5V@1m|$fdsGd&|r`RsoHp{Qc0q4<_ODVf1;spj}Sg7YO*oJLZnP8i!J>SW1Cg=V0 z?aW(u@;wB#J@noFZP?5wp0@GZ2*LL2@Ahw}x}E$k{t*c;KRw3p=J)XX_~-cp{2~4o zeg{L}&CjE`s#ob1b+RRKhii{(Cqvl7KgRC+K!@l*4>Hu^d48BbEp%J=Sr197{ebzXboM_+oSfz_@w+50nLEQL36q2@Ay1esEWke3QlU`T4d29_ z}TX==t7YN7MeX;NwyDt?^ zv3sF#n%z|af_R1nRVWu$3U%0#Xb=KI2+W^h_2t4@c3&wBuzMYZpnmFwi|pPYTw?bC zgd%uIc%BW~zjpQ?0AX%3;_X&pyYL92?oMHsuv<7pit83A5XXb}2*W%XO0RHS%(4$S zyImJ2;ydyo`&MCCv z2PR#Z)SDhcxMyjC?kJO_Iw>GoZFA)WXTbFe$;%;mb8rWQPXLbDMkXggk-l;H;pE+r;hSDQBLtK>18bN$7N?uqb?1 z*d{)&^d_C5&Jr@uk`-FTN#X#_2fLUe&J|U$T&xuRV!e2QI!_R@kUcCFFY1M9z*s6? z(hGS&^^3Cwitkxsx41((>zvDE&l492oO@W9D?TQjb|xvCT|G$`k^-JdY;5MTcJ*SG z&7QuPal90*dmzgmX}9v4@`(E}&#-3-^N6b0<5|i^sZ!MC?DY&2_y0CiKyE8?>%>mc zY6GWtGnpR|@h6HT{K{c36p)}lcB3Xqf9wI2rAHCw*bj(FQl(Tc?UW+;p4BWH=sLO8 z(`>M~UE*=^lz2uQ7VXw7Yo2wkHO~gexl24N4u}h^i>;N`mDUuZx(A>I);np;_lQmU zZ4y=N1Lk6DGeP!=YxUb~B60w9iOgIp5t?g*@(+oxh?me+f>mXd3z?0b5<4ecny50J zo)KF}rDpftiKi1UCT&l>ku2eYxYT+;IgqeBvD;mqJSp`+YPmiR)=GAtYh_`r-kKy? zY+G%4@&b96!|Hs*xzo9rgqD_)D(kIxTd`1(@UYI>YgLKWfc1d&koBnb73*>9Yu0ib zrvNkxSjosotY?@L>9O9;+)NKJ&N4UCV|~P_JEH-SCPR-k2`0Hxc|N6bVnf;mqt!)r z@3s0Fwe8kAcHeDX$>0a9m)QM~wVoNmA#2^_&69Uc?#}p(^>)bGIe8^Xv213z-%o-h zNYkV`f+R@wdU>wYU_J!sAxT<*z{?);q;-UvB;8G-PeRiLQY%fPNz$;?ZOf9McdkqD zyEY~5NIL3?5Y7~7E^yjtK<7#kk#HACo%ZLk4(LsK%+r}VFzMo?hRJs`2U3nez0NjC z-r*Q_Y;z)mK`z}*9lkW{-u@mNrn@SwlkS!xQn%Dg9F>2U`QlApnPrG3(I>6EmS2B}WkipGyg&r64-$EaPsv_sk>?V_1N_Wl?Oo7iX? zNU!0KS9B890N7bbvfV8$(r?GD%J3uhUa z3HX+B$QNik3*fOWQ4ba2Wz@Nv?L)i%YJWt$5Um9_?EjnizM%nIk) zHi;y%PTtQ(zZ_UZal5=rz93udQ=D1O%?yjWUyyN{@qfp?{bz{nkZrqdhwUth60$vF z8=(Hy0rHsb3Av{8|ZeZ&<&qW&|UJqLAu~8dQG-eHZ2MySQhT9&mwli8dHZR*)saUPS#q76Wbd?h+k5TXu(mFAlsjfq z#WXo0AC(u|EA0`qIAgav<~ru;6_xT*yWd`K-wZ-W?F05C#{#`VmDkC4%Ln8`a-n@C zs!!V&%Mg8==O*&~LEcjm}lQ z;x+pz`$hY(-Qt+!@H^@p4UTddRyG%MZiX#C25Db|MGwoBgueiUw#wV(N1&hs(CP*G zA{53d?v7O)GAb-G=IBy+yFK98?6B$u(r=x74+Vg7IVs_c%j(YaEcKj8xqITbX|SmN ztdf*4En#=UE39(LgzxIudc~9pb0-ugzm|G0g^QK)PUp0Q!sG=hl_?ifUQ69Pv76a( zolI$Nf;-85)hH}7h z#<4SDTH=AkJl8hYPFI4JY8o)AlN>vgNMcXo_Qaiui(R{1n^vgc*7b*|mfd%~qxZ+TUiGS1z1NYxc|>>yW_d1ai4d1Jp{Df@ z%eq7oL#DhbI}qCpJlh&#s3DeEG9`wckO?uwvX)q4nkj3jrG{E!nn^Pyv+R^wG9?q< zgqX%sOQ&>}&L4B>=X;#DY1#+({P_Ml-}C)`&yRb~bsky$e~0gmnTj>Iaz{#&=VPVC z^NF(0C0{7p%;1tQ6@)G=@)!>qOS5gnRUPBcC8ZM9&j2rQtXBqs;SaUy-xvn%Tj8aG`wYTHKiWNSVi0% zol$A-Yp91m2W9U-H4>z$JL;}lSDR{`_%)T}cKA*uhcMqppeMCHH%jtTPX{FBP(4-4 zo(qqH@tV|*sQp9rL>-bP4%IU??%Cj69TM0DY0q=WBc`inxsST)7SDTXmjw6KKOi6U z)oagCqme!$6COci$y0^~JW+&8b@P5TfpBa@2w6f}~7AO|)&#A5ySQ)s&fAg{mj-rm&2A z#zsD}9W8KZ(o^L5rl-rTznYW=KBvFL;bl*opJ!Ik%Aqy0K278OSqnX@Zw;-Hb#7f) ze?&T0J)fZsYu$5zUW~1YwY09R&k|w!q?+Y zTYC6C$P z(d}zf?NqzcoZbv5-3mf4ryXkw74n$BFDV!c+Kt9v7-&W>X**g~+wm3sBYmtFgP$iG z6tp=J7D2e6LP^Vb`II3pWKJM+N%#Xg$*w+6L6!^H#mMNgzZ|>uX2o#Wnij_9|Y@%lAMPjQFyT zMtl_`zK=1V3mU|+2m1`bG1Nxd9OACETg@ayRjYWPP4%0;lrQbe_~Ht}xdx-$pi>(P z#$-)9(Js&&n7j$HR2|sYr~`Fv$ak=9t?ldjO?@wz4AnzTeLnGav>orCP`C`x za?1M^Djq?FwD(V`ID*iucfbSoL_7DIzGCPye8dCiRQnYQ(UrS2z9!R(+z-#qAzu+^ zTGD&!9jz7tnBuFX(zW)rRrd8&_U9Ch8tg}wpi;`4MlI{jzuoiKpOJinSTwRS!g9l# z0A=1g!y@hUjd?3M@45Fc$WwW5SwA!D)?X4URsL#K*wiQdJfPs+^i_>TxXg!M#k+l% zPuFODdS>#BFR$-#OwCI^CrsVjz&P3Wwh_38ScALXZ<3+teYX?d<;45m3eP)tOg${r z6D;J%&~?L?@Fn5JJxR}5q@-4Beqn+6ng>BilhdoOV zyOty05Xf_&a}=rDzJ_n$JM&#(*2_~IZ~I!lj_=r4pvsQ#)OP{W;;M4#TcA>+$}Why z5Xg5&L&&@GDSpjJ8d_vCQjWAD-zM!BKD3U7<_fw14Q-yM-HPsC2DIP?&d*YzariK{ zLtXRXzeWA+T`DF0xX^PU%lh}IzUi-0J>}o>m#L6O!HK&yY&nqAv2og8C&Di`5QmO} zzu}+wkNu}~`sQy^_Y3|yfJbkG=RmY@knbq^EB>K>pQgH^zxoS|ZIV^=H{WJj_z#Gs z42F^azbGop{;8fcGiJ$5#17F>$2Ks>{u4Ca;TH2B_`3jIa;K8`OE+COH2g_^+ST+= z{aboVU+9UzexMULlFfVdMrz9IN7?{SKmKj-=wnb}|Er*%%9rm=jm zPsV7w2c+(;Kd+bdqn{Utq?uFC>RbA@J|ehN-$1cTrd3e*4tY+|#}ppAp3sx}rk>XG z`hXzrUu>zI_p z;n@kbyQeqxQz}&TwtluMwDcKiR|l%C&xv}^y&&Z~`nj$Jjsi>aP)EPf%KIf-$a3EYzKfj$SK6L8`_ z#c>4JWCCu6jt_Nbz#TB)C%$YAVdi4+B6t~`2bEAcTnT5Q3ek4>s#x8Pu9ND zE5ffMztzupSU3Y8rFn>Y`F)xJGl6b!6ntY<%mzk5^c;gR3p@2;hoiuZvlRk3Zo#Om z1u{m_IE>9=%b0sTzP>tYY2c-9%gmdabr?H~En>GZ=eo(@44(u4hijaX(t)$U27^(j zfuFwyYQZ>0cq*7+FzPgLfdg72m?WwbkpEx0GM{7T0lZdXT&?DYet3+93oPhU3UkHB z=}nYgO6e{1lD~&mBh3g}h7Hoew`d8<1!qAeycJGIO;eAhNl)!whE&J}$r#5$dR+O&Ik8Fl3&5jwFLV-~!HdO8#=hIbG#TTpYCloTptnOV>br9xYwIl7oZ zCyU0^*khQRo*{NZyP;<2I#gXzCqSJK6+@-acBl$2r%@zf7r}GBwor6tjSIdGQ@KQ4 zybL;xxKXB_%`qkqd5`A7&RxDuG>afzm({4{>)>{XTHOz|LvCZks8h?g!6pX`LPw!t zXcQWUPC^Z`t1~n*#>NC{H;K-Dhdm3;Lg%4|(ZmwiBB=_LZt)Fm95O4${t8$^Q~RM_ z=q8jiT1J~BDxoSQ9vkPz0eMjg)gXRpTyu33p#dK&snB8U=&n=?U-GEl4$XO94Ux*& z6opn=%way-Nh^kCEV!BGA)1!>mOF0rjbwNj9)BOav=xmfzdC!Ti6RZ5tY?-5K1_g9bvAOmu+5{`$D z$ZUEz5l({giZ>h&U*F|Z;**aVrlPHIJA4psN5+v!gTj3fg&lq+ac@!I9q@h}j&}jS!^(Y_SFwNMEoLUHXxIIaZGqMpmC(%U+CL@m_ z*cow0l!z9&AnH;$7s*Eokz!=T6}hAkD2Er}e54eqMCR0&a(EdoL>iG1Rd&KkBnidF zq}UGEW=K7+pg81fWF@ugyU;r+~dKI|RH-v?Q4QU0McR>15?e3Qk6fBv>(qh~fuuT_^dD#z z7)6$3@L&C<_dmTNEoYJQ$PIS|a>4}V=q>eR9=VEKNAP(P25Dp&@zB(kiRPkt%ohnv zZ1I?)lAyo+-KUxgKcu6((OR?~eYQ|2rj9#&M!A{tj= z@hy;4qI=P5v>QE%D&~d?|Kvci1I|Ts8NH6)L~o-`GeL+vXsf)H5zgpN5UFR;!p2bA4J|CzGe=npA#nm?k9_lM^>ve&hkCzG0H&BVuEI8`>c z&AxeNUYc{0Zd|WSr&U~0)Xmb0V#~~#ZSw#VLD%e=Q}e_ulPItfe#6{>Fp}|1f?@68 zr<0BZ5W5gZOZF~VJz=_er9x~8F7ohBXdhya%{@XS%@J-%=B8q4mJZe(YuBo(SZp@U zeXD1UVW)E(EYwtti%qkK6NqzbZat;GZklx>Oqqu`nV7(w7dU@t5Mj#f}%_y*qanXv>Tn0!<<%s7|ShW&2LtW~v+tuCL#+vWzp_&b0RmcVINkHZhlKF<%$7b*J5 z_&F85qWRmxgJo^M$c zC^%RKC7l@^y?ttQX^l8V(fU_Xl`Di9qsmQsY(a7Kg=(Y+ie%|yYs$O6k3c}cfP5d& z1M3inQ_y)1AEUXu()&oP9&3|FgadND9?Qj&>xUF+dTcXRj_u%L^dN@SGd2ODLouPp z^07LAU7A?TSPCpFI-*Li_b9sK0HjYN#B*~u`#z-J(l70z1W1; zkEjLk8SCb1*NW~_c|`q|UUfa4aT&CHoZ5O#G7LLfpWK!ehrA--j>ovxBAh&~b%N?ytpHgr)dx`wGtj z&s_YWeJ%bc%93VnzT6$wDj$@{RZ=$#F^^b}M>hP5L!_KJh6*k-qQHr2nuL z3F_f8Rj{2>QLt}CByN-(acK*G8s&*2Au%B-F*zk+{*s=v6Viw6P3gm8QhFWv>vmH5 zCU9?n?hPR&{X6g}!A?m90g!?KP+I`ZxdvkA8n_Oqgd{0-*1(9vv6M8WDw4GH_z|sp zk_X=~c!aF7HGM8g&WYa=03j=x9jqu$$7;2lt-f zy8S+G`tRea^uFAd9@>5BJ#tHW#U4ms7LKH^;@#VyhEiMts>tk9O3tOHFM($vJuhBJ&&!w6^Xx+Ueftv6 zjr4W-M*1f5AIrDWzp;gMDWGz_X5Uicl%cra<(56TEB}G5$oC#Q9*Wv3(`Bdds{e^- z$PeYX{7{U`AF>VE6zr^gA^$g3^Y0FWOnT%NO0vp@8&}Y2k?3GZWmB@Z6@;H(s3;z>qWq>^LtF2PJ`q~VyXAf5-K?ej z$lk}(QhtW|&sayv2x3P$U9%67I9ke_N=RBt&V>)naxTEyF2D}mfGMKfQf4AVAn7Si z;U0W5R9+AV$_s3SK97`F?6LAWd8mBXo+xjMLuFGC$4F2^GC~3zx;LO?M9EZn%^^P& z&XkaNqJ)G~B_z+3`;HUkzI~>=Y|oV6vQP1xE8O1~N6$|W(jsp9NU0~lsjya-0pUD>30^VXbYxWKV(QvAw z)e2hQXL&(vvTc{6$xdB%ljYqgjoo$?cYUZPRs7ZYI+cd1-C#>qY_OTfuCT1nK4hOH z+jiNy*k|i!h;j;4M@+E7oi8EGq*)ukC z$uoBCvM*TQEnl#jXkW51CD)>O$=nhUJq3tkW*@U9vlr|krXt4`!`Cb9F%_M()Z@M3 zmc7e%s$a0(>Xz_nD5a^EsH>K|p?-vIs9&>nJPGwXa#H;f`lP$S(Q1m>L=_ib?Qn9(I?nZKZoZ%c18W3 zqoPg)drzGU;-2bW1E{zLSlk6z+yxlobXUb63fWV22~~7#my(K_Q$bhrfUe^KVhkJO zV_3jC8o@NcCYoJE0$#(5YQ}5Vk%%>Q%eLOz{&w& zs{y;Y>PQP6X`v(g>ekv95vOhSd9kBDFCVDSvyS?E_5q%@`e{6G0{52PQQwj~Y7W!7 zio>c7Iw>C^0UYa2Tdl5%2S`{OH@V+RDPfmE0#Gt;5@>dd4x zNO7uG3sSXu>r1g!s#fj2qE>Ica<$&pE53mAO4XuOil7v!*h0}Fs4efa_TFcmea>V8 z@B9D#`RT8jv!3(pueH}+d+m>NnGll;#3Ui^zv5k2#n0X+JjLOLl}+oqB16%E)MrJ( zwIhXiP?s3$E3Q~|m3L%XUER(2U(fJpvM+jbxMAV)Xp*G$AN)+cXJj%&#`|?6k<_BT z@FLM)&@+}wM+b$76}Aqgqw#36XlLw4@fqRHHMd3k(sezNShO)RFc8|<7ad6_hKIiG z|M5p`aWIySCL4!`Qt9MqABn%?5I00)!^vn8qz2W3&bi-yC!#9N7aSNE?rV<@E_(1Y z>*Iw~>-Zr_eM|MPbN9XNM=@VxB-u|j-ulF|H^$Mk`vyk)qXg{hFGP=T9U{HN-zySB z{lmAXpj8E7seKp!aoVqA`QdK#{n0lLUlNg!v^&OI~1TCiC>l#iy@amlY zcty{Ou3MVBgYBWlmSD&Ap{A0%{#YL`qo*C6!Nzdw@?bdh)FwPDQO|Db>~0Emf6sW* z9ctJIjVWU8eE>FpwMN9T$K=kQiJJqot9HMX?2HFbwNzJ8C)Z!{f_ zZcH~04-6+i@uLNMkh^HQVV&{2eRxAu<>iW1H-8{jl8(ezbTl=#1$%meJ5EiR8TU8# z+|r`T_sH1qo|eCttKSdPZ{PA8Z|Ug@Hil%am0TZ9H;yJ#!%5Wc&zJr1x_DXZ(1yrB zq92`_n&rc_^D5)TtwXT^{b1VX8~+gVhTBu|_nw;enRr1r-!35Pqoo}fQ{E#Zbv{Axc=zo+cg8D_ zB{hh(M`4`%QXhTsn_q_VwcpaXs;3>f2)A~2gh(NafmAJ}OIOMdD1|qE`N&7&{?1q| z6;0D`s@HfqObYd##(~5LJ^ad7pLi`+(9+P|+tVU@Lxr+1J;P|BhU92!t*kfM;|c$> zUk=?6FKI%K(@`~~9{SgYs@PO$Nk?O2u&t5Q`j)OBI#16t*Z5wJSN06TP|CgtgF*ws zJHu=4iu=0KtwTgO@3HbhYQM&|)=)=S>2^yPO576a4t*W<9V={U?CtL9?3UT15kRSv zYR|UeNWc0m&fosusNAN;TPO=q{LkRd5E^;X^#z9rPrbW5nM zt+lJCwP(RAZ=hB2uqzmDv7dhXFX-QRx&ocMp*s}3QTF&!dU<76u%js)Z0M1E#dt(T z?+!JFWry|S!SY5FN81En6Z$uGyNedCe0#hQQqpKDT-=8rQl+J7C?Y2Lo~#H;tEaW& z`nFJ8YlrGilvYP)S9hqnb>#v-a!AVA9SZk$cl?6*O3^90gB|F9=Qni`Hih@ZOxsHy*+Xy zDaI49$_Iz3xKt^P ze<+J$6{Ml9vF*mIUwfrK<|oGC!9h5yAN=?4TqY~DeRwn#rC~w7N7-uc?Cp^Xw1D0z z!#f>~jFJ^q1{9uIxDr%T+%KPX1zS79-=``r#Cy~PkAMH0$#@}^4ITIUq{W21F|>** zSdL{r^}Dz0DjL~{+sZi*S0N9wvh=gwu6NKALUr2>wV0k!^R??|vdk@%{{rOW#^~5b z9*%96*;v-w8vZ?HgWwj0gumA!wn&hC13jY*hFjZ1-7(6bzoFw6*t5nPLrv7l;g?9y zD@s~j9PWxHQwdB`hSG=g>W`y_JBHJV*jQ)-o>ac@omb-}bq40k$I9M@X@UJxopPST z!+)%4ULU{Mlr%+SiJ@p$a(D!uZX%j`fe=%i2zdCzV}F7GO^t>g86HBi9}Zp=!z74* z*Y%F5;W>_sCdYmrx$1&Lyqw4HA$Y96AaRxP_KIX89qmbDgnZKd=CaXfat!l;XfhV* zi~fql7aMP8d9Kg65m^(smk2T0ETpQS7paV}XKNF&w9LzWTl)TtLbpX@>Fz{)ZF<$; zrrd+y!2wJ~22lx<-mz&xyfhslzzw4*YLh#ky5kTaov6+Mlzb4Dk^Zd1i2nKc9}C5c`^a%eP62HPG+rVfP-EiB4f2V4 zLygT}rI$+7lkVssI`4PrNkN@_wCY6X8}TwFCBuaoQ2I+G*Qs`mrXQf6s4dC__5E+t z?^5-<6|=RCow099#s-=`r5;^1SQ@JgY1fV`?9>NdULK!Zm-YPd&j0yZJYTv4wC9pgApP2jF4<-9@JVYmxNcrFgxBuN2FJ6;sZc0Sr!G)+% z!^7RzH!NHJ#p!sxA(0-8j8H8r^6i%`eFCM>DS?&R>kM(0$)@AtzWpih4kDNJwus0% zf7Bhq!-Z4=e%1!V8y?PA&xn)T<7y((rzknqenjq6Vq3a!u21s>nQ~2DL=E3T9vcY8jsyZiL|)9@LNOx+3tmmDe$Q z;Wd*nj^KwSw8oM0Yk&AV7-3V=e;a6&=SK-u5Mr8%K>Yts%q=lST(yR8D7SrJ}`VaV{fJ^*9_T&m5A~IAp_p z>$;;OFd5M%{HdDka)MoC!btt4AK#fwAQrfY0FHbzfSUVi5<8lW#7fI#tS+5;7eO3# z0Z3DHL!vKAKumS6A%sIM$YRTZ_y!U=Y8(BqE0V;R*#O%YPtu68fsdQ|yUxWb z628qWp>kNXSd}s|pg2iM-$yUN1-G>y)d@$b@BJj0X$sJ&M!5EaBzH829liKu7Acy7 zdfW~YILeL!s&Vo@5;?k|v_UZE_mgC@nG;o}&#C9SXk^Kh=keoTy|fBBGoE8)h_?-YQU{bHkWufJ&D^_Vz0%=Or0Ztt_U?X^n8ncwe*Y(B+`rYFOqfi+@OCgm$HTQ%h8=>d+4mDCPRTR$C1ze z@yV`RX;8H*P(EIb+QED~IMlaxIGK9aQ%CN0Hi{O!k1BCGzulVB&wFT^-+zN5p;#BJ zB`q-+4G4Xr07!@!9L-8k*SmQ&hvID`sUy#FlwU)SZT-hO1;sSgEA3gy&`=wtr?&34 zrquXLdG93AWG)%httCpHP|TSKo-2i;HwQ^Jjxv&+YJn9Pb|y#f4v&nEv`2?VM@VFM zLx`-GhDbs)G1b3XQ< zo({{TC*p%{Fi9P4u_Do*UYn+Dsp>;>%3{jt>@S;7eid3yy}b#uQu!>o@FzFu zXPq0ON%?HjWN#YXLxvFKgE{l+PR7dB19G?I!yAu2`$oJ99ZLnb%>LOzeXbIsP)D$# zE!3pD-7@NSrD5ezqU9oksYhOY<_M;6GAR|@dHv+U0Vuz&@<+e>o5S()I%m&3aZ)@^ z?Un6Z)sS1|@L$Y{Mibd?_duXDXgP`Ci0X!>SzxsP394S(O0l|0)gGWqt_YI_z+0G? z(@>LI_xQYN&Q}cKZhECi*8h!I89Cc|>J|NyjPJ;ur(SV1wYI&gsXHhyj*$=9fo?%M z@*UD1Q%O39;9p>vkcOa}QY{UKhWe@DReRq4-<@br4FAbAjVJQq&d>hlKlq`A3_rek zo3x(IogJ3-T%nt>9g~WI;W(`=$zV+>8oa4B*w%SH+PnL`qyvsVtgQRZR1mXES!06A z?TwV%5}0;HZUur$m>YqpYl*rTwisbCIcW{R}dclFD^_gs6dG7LLKJ_VM2hUM!YUvZfw^bQHP075tlt^A{2;S z2!nNSTHvKy`EG1ic14;B{o;0&Kd0GJrJe)3MPaD=Zv+vBs_aVz`)ET122nZiq%MCE zah1|O%&pO_WqqfvqDN&2I}MM*m6U?iwe-x_m+Bmez!6+bzc3^_%%s-iS~8Rl1xHV# z##~DEUupD{ItY44g7mmxa1BM{lArwk8%EETNZc5A?a~T` zBguF)y(a&Y8{+x${n8ItA4Ib9ZxtSpOLU8tOzw3jMFY?;C@H%Q78rWI&W zYxa2~mB29#Q>q~sz2STI-%9|8g+)A^A`*S0si&#U?V_pGm+-JE;zBB#?fO9JY;{^n zS#s1f=3Nxx{1-~ip{xx_3_5*?seM4!bsr*bL(!YbnJnx}Vk^b)?W^dAWB#4Ji19Gx z)M05F+sQrBI{4x^V)FU4*hfhtmWgs}r|)V~qDxq>F@(saGs|c<4@BarOQ-@IqpoGX zL7RMD)t%8QmK2(Gl7x;?Lb?5YSxsrIB>jqBg14>*YpMI+q!(<{fC5OR&`Z7RAVvRL zSU-pQ7s9;qooN396tA@3LerUVH4&#nWdP8r${_7d%7{Z{Y`}da%a06%hevKFdjsp! zFpSl!!8_zg53Nq9*unZl;=)zDS?FfdbeZWS_ zk_G|%HZ=_(596OV&76xotV13)dZ#~xJgifBxQl)jMAlIrM(OXu$U2#a56};xY&B|QYiSGyWfMsqV}x3v z`rqI~q^&32-)G+2;lyAxIptmFI^uc^}8Up#(6h-AVNjKdIt82MKN_k^my%i{_6pn z=nf30qH?W9+Wx0*y+CWbFm2JH6F2+*8Jil$4>SY<2X;5xd|~c_cvanaqW+(IKZxkU zI4{+yXRT1L=?hV8mwtoa`1D1Zu~9^t1=@kx16@8E}G{3 z7iZ1>AzPMYaRBPA_et*F_^iM4!+hs?z8c9}W$&|x? zJw2OhJu{~cEhIrx%gj+QS=B%*J*I3@2J3oLXaGBfHb)9dWjY-xsAr(UOsI<_JmanXiU5p1-j7U|J_CRQt+2Gidby)KbH&E2i z;-SX4rf~TiP@iyvTqHCle~LZR8=p>+`tt|g3@dxOnh4)X*sCVsHL&o}rQ;p#-}I&_j3z0xOA33}n_+eEm9QTK z7PCmDbkr5Gtg|ltC)Pu%iCh1&cXfRB1UV)mG)0EeeKTD5@a>x^P11f#uPKphH+}up z_~jEMVuC+HDP1-JnAR{US05u_PAzRsSvWOc+eqk~T8bu@(=@83t%RINIb;}J#pv#S zGi+}vYUShOz{-A0nU~HROphEKCO!JqF*t1FciTE;=YB>h)#Spkb^8Uua@HPg+39Gc z&XPJdAs?o#l*{n&lM}+4hH1YrHsbu2U^&%;tawLb5N`d`6J`&66dMDgl)v8*FlSE! zkg^x;H~JIJ1fQX|CNcpq7}!Nk3H*Vex%B}EtBGDDWX{%6 z{F+EI6`~Prh9y@s3OQ|8)AI%r(k?^pJo@UqrIh z<1jt;^^Yi@_A`{d{QeO*yPu*zb2eRLyD{UrpXxEEj-x9yj}8n_8-H{{ppjW0)nCq* z;mrF9mNQ{vw)3S4Te>v`KbkB}8S&+`i!RUls}mMR&U@87?CSt32d!0}XwBK@lC>&~T#y-o|l{%zi0Xu}+} z#0qTW7=ihEVZ|z6ydZr$O=Ti^D?Uemlk7J7yArw@ip9_`6B`h4#o9vUi_cfZr(!=y zcx`mhv7tn6rk|!Zn~X1)VqN4CGVfARnRXly#vZ>7~KOg}1I{x4U>OHeB`dP>&Y z-}SMA_zd!p#(m*ke^~z^>{z7kNjm z3s!D-EtZcuI=kD0ZCB9_-7@(A6sa{h@S8& zt4w$p?85eUQc=0{lYE$!*jl${810`HZ`6Mi@s$zz;LfkTy+O543+ARtnnAa9uljAg zWbHaRW0g;T`j6#92$77)wLWPVKZMsX+f+};YJQL&6n6DAgmDN!=DtY&pbeC2W3l{6 zyN+dP{qm>WcdQOAbT#*I>E)ARdeYbuqCJe75D(g0SB9D-VIj%UPU?gM{pi9D@=%l9 zBQ0N+yHxejiIT47M#a|9xl+=V)06ICQ){Q%j!C5G_N{|)+HnRg!z^$ujm_9tvo16* zFCP!2O1IM9vm!dngjuQ#G|I>H*2mwr_q`Nyw_lw1&!?AD=--KxlSbO|_Q;L@`77wX zTTDIZMH0=<67?b;PJ1G8NKED~mEQ(jAPeV0y#Y4NxM}H+dXOJyQ}jw;)fWQS!sC>` zQ=3@6i}jko@v z6@@mI|KPqu@hMad_2et2NIMH-X+~1T)uZTMKzWDdYYvNP*r=HR^52hcR z`TK{kvO?5JIv-S*|K~g7m9UiWSlAx9Z8(X8fhjCFzxKZH^VZ|UkmGS*G@oXzRQ1MD zAmfBk-y-ugVn*EZy-)ni)3=BZ6MFj=*~g4B_@V4H2tU-f$k?-PDk+D?oX%j z%hJC}e_w4$3oIeFEVRM;F26?T<4zzHq_(J)Xr}8~>)mYPxC9(t!8X57|miiZq@RGEP{CumZ z9PQaz>Zyf$h3GRjm)#?N_vvGYDm^&mRa+(>4%{9YOSKFq@3=?&UW+`Y2%3<-N1W6m zFS6CtrK8H-!`O}tE!iq!r+&4d(o=&WQGbrm=F~yQ1 z4!05F9+5otYj zJac9IWTi8JBFE{BxHsH+S1szDqDSK)wu*h3^;gdK%$+RTnsP*Lo__nQ-@N~&1$diB zf0k_(KmP3xcGr7qEBi)<)#6aYC>$qjtGGwJ4>?~%B|^@x&WPV5=Zid7aA;PpfOg6a zBPhdt3!<|Yd*)Us?}SbUt0P7kQ90#~e_w*sX>Pt!=157lin{miS`+kW{bUQOGre`! zs<9AWlltitZWVhU`M~9^p1D}-2Pe6OR$^b>bj4%sc&p4QKsoodZCqyMPt|c-WKDD+ zBYqtDLS3(wKSKgF*mn4-Ri3$inTkg5if;b;YM`ZqB%f^+4{iU_O%W?MngK%}8hd6} zd(_H}E!ZlmuTTCX;h9^cm?ieEW6!M}1lC76r;&53_*`D$wDq3a;xz-;4~&hhC2!## z@%}y4-yc<~uAgHLbB~DV$DY~}{aCsi_lSNi@Ya@Uftmr`BjQ?8fbQHN&&sq##)e1J zTgA!0O`kW4?z{#I2uYj)yGJzEO@3`mrdogv!Z<*8k7(A9JXatJEnk;W=&j>U{!asKZY!6S(I zOc~v@*HT48k`e!1`oN|8@TTl4hGeUFX7P`XJczbUkEDjlRAM(gT4mA?e!hRdY?U$+ zz`Q2zfF&nUffjkLxQMdR1-quA_0c4@Si(`!CiR}l$1d5ArpEhgx{}ci%8(t9r1D`0 zdY7_d^w4v~q`IpXDl>M#qwJB%t?B^wp!$WUKlzYn?lhy4Ok75MZq2-p9Yk3v;;w7S z1Z)-G`@{{44qNJCiZbG>2k!dw!+2M!izz}sfA)d6zx7bUP8{~Y4vwQ_%OC;772r8TWX_Fdd zGbAWm3+8hT3)kJE0#AN%3aS{qv=%2O)pHq*Q;$QJ)|T^Q6)RPO)=O)vrC=qFIJdQi z<-9XQ^D4i9pR_8kc3QSr&a5lgEwk3v)N-JNF37vwFXxtWDKI8}c+sCdmzT;XtwU-AjESJ4^0%vn#}mj~fq#5~ycYc9 z@0<lLv$`HD0$i{Bo~@<X3j#i0TqpVsmS>$`h0oP4h z>ao$YZS=(em(iSx5AQ4l_orn26{zzl)ndShWY!>=fTsz$xuhWAX{@gnYyJ3lA^t7t zyY2Fd?&tgUMTP!zA^!B#V9tikhqRc7pI)1hTB=Ml+C=Yn5cw46n-K*(T`0B( z)zF1vQ$16d*EPk^Cm}Q9$lLEvi-lWHd-6RsUQC8#)o7c7nn^v$zG~6o>D!feuB1?i zihNJ`JUNm%rz$w#)}M$aqWu~1Kg2ZeJ|~j^L0+jvKmlcUM&z0sZMDdVMS1?)_k{dn5Pu~Jp4ReiG+2Decm=TY^1*Qee zB>fkj$<)!9g&2XVy`|h@rO>zXAnA=gh*gWn3`^jphFC1AOFiYc!Hako zy3je#ylNQ~>Wo>@3LWZ)+O8qx^HRKIvRGp%KQt?^6^eyE;6t~eKt?LhQz3dM$^Mux z=MOPa?|E&umxM<=!t*jZGgfTzYXN@wsB6o$82W|&*>gus%zP%`14bGsSj=AsittMr zIsAMA!pKHT_y~lNjVwHbzN4(1g`xZ$%F50pFsk$^zN6AM(|p;P<_nHApK+%7>%MjK zW|0OO4Ww4YtQD4wSWFGIY(Bb#)l@N2>UpNNvZ?3#j$4|#JG*Yebrf`RTMjRQD+&?J z!t@!p0=@1D6yt&;YEo)}m{{}c0PX}zk>!Y?-ChV3k)lftjS24s-6Vm$8)RkW-G~PA z2lCqR3zbEUE87`A4+VwH?*)pnU8GODIC$`_K#{y*gPIFJzZO7PhCJ34 z`0;@CqXj?i3-~C58i(2oBT^vOUu5bP@+ay%F*rJ?L7xifr;&}u)2)HLa5XdrIqrcb zoV^ezM(iGo%3X<#FiFDm?1g||J<&WzF9a%k(#a@pjFS3h4YY>=)XxzuK+PPy5b&Yr zU~s33o4ol#U=n`fui%A1zJBVdzYr*B9m3%t2s|}-!%)OZ`f00P9uj7gZ^2}7jmI|p z?D;@mcT8No9{<*%OQP@KpYzm*_}>_QKTC4@wmJsVTayBq@y0# zYg4^nt0{!yQZp$PBvau7_j=}*qk!FQtON1tP+>+~L$rA&EoD~J_=7Y)V!3Guo=rDp zcQaE4D7!LW%I~UcbnOGqh?{TO|9A0aWH!iVGw3ORB~n+|REvc)*lm-PLDT@P5W6VV z8kD(9I3wOiv}-4#rNZxIS~=Zv1amWPDJ}Xm6Mz~^wm(S=S?c8DF}AnJ`_!& z>|QYLWky+@*^J06HY#OAKk;6ZmB9ifuNI%6{2gF68R0V7^b&SPY$T$u)aU2OA6O1E zOIDtmhNYVvqTO{F5hbd3Lmkbwpb_fGn=-UTaZ5@@#Bwnl%gvyM2sLVC!~ik)b~&@) zaL9J$onSIOiRZ8yt%F#-KO+X;0@o?#%Bo_$n>!=o#Iqr*ttJ6bEqw6*2vc31 zV?yaDm~94pFWil_MEAv9bbcpYemV7hX#Q>UO4Md+H3Ood^hr6CdU`M)`E&sWzO344 zkF1Mo>yQy+lx&^Rx-=9)8k7sjP0O6TXRMFFOrloDxJf|;{aR#qkH*gE1%yZC%>wXw!Hg)9rMb_B?DWC=3j z{gl)-t{SI&Zf6$Sh~qHY@Vw19IhLo0bAw>iRN{fn1DvN{K=$H+DiK z-3u4$kIUQj2>3taQesZ60zuT5`w4f{UvU~v-6Xi^=sYh6eDHy+*$RAh{NmZlGccg@ zbJdAlS0kr7+7A~BE^J2RQKi(E8MP7<^F460^i^GOS)T|L(z$(=_#Qa3oddLS7&*xV zCgH-dn3ywmUODSj6Hvxq;};Bx{`ILq3B7MTISdyZB*v3(1q$^BLeOr8Q*2ce*n$de zJb~Zq!}x(c?@f&{aS0skQh5WJ4e_2nAE1cGU_x!cL|Lnaw;X9*V!t;zV3D2MOf~tR?Q&Z9XdIpDw(`(UIpC4DnbIqF3lhIL1tZB2J z>elch6*B<}bJ9}M2(voBi#|M{?{icY{1dD1??F%FIjc48f53PqO?@@2N^U`b>Pa*)(Ph?5n1QQdFKj|@BPk*d`j*PXL9h8tkU@GiIOCLh{=5$rxy&Ki9Fv(!reYIJ?6^lsnf1QXL1-SJD~yv-yd zULj`kgUtpq!wVZI%cq!`HazEGHa0wG#9xT_^Aqq&*Xr&xk^5f}dw` zbM%YM@@z*K_O;m@3&V74I)qjj7C$TW;Q0aynm5_%kJ5u4SKD;p<08sMo|gh2j=DqO zBZgt_f-CSbi3nkhGM$b>h4_O4ais-A?Aulrdt+bu9!&^*~OeSIubCh zuE3k1efLCQZ;{G~BFg4-&YtDN+M?dKAe|5GA7hNdLJ|2qvP<=HnmN7pChSvkCg-Q* zD)XJ``JL&_HiCj|JSg$n>h{(SeJcrF{2A(?dwX?6e5vVkda#a13!=zxBdv%E%!QE? z6_ms3V+lgUGES|=&6$%?hY2pv+j7?-Hm13YRQ&&3gF84yIutX0t6?EitpaC62_>|r z$moOQ+`n9-u00-ZYFs0{XKE$|n;IvJOMEq6lyGFW2%xJ;zxo;F`h5>oLN4Hafx@6# z4vmR{UsJovdMZ`*gy0qJFOP}mFep=?y^Mk~`#8fn2O`XgtkXFeQA#=PHZrVCXnv5Y zy;{hT^Eh+TL7s6d0i3GRT?ctGqKp!F?B0u=UDmPOVNUN#0(mP@N;tu*@DIGioA3{X zaZYk3a_X|qgmihRYBHjn60fDOjG27FY-bf>s_-0{^SmjRmCM;hk%ZOZ?TrT+F^ke^ zo7n#-W%hSYP>UA3+Pb1c)O3tABPuA7l3h=jMKPA`pCHF+1}BnpL_!e|>V&0No=zpP zzTZ_tVs?2DAiYpT_Zp!UJhLn8hid+dr(S|aHX2YllmKcyR8SgGkilBc;6(aq?VHGm z$*N`@?PnAk>*0v-F=x&~x2DKk>K(8dF@;#~*yVJ;Tux9cv*sN0)QP@~m`ZeW5y~=~ zhLpCKIppHvc%z$M(y1bf$6XX^k~BbbsF?UWweM;s%-IXD@xgJ-I3q40?z3K38zT^- zHZJ^}bbpYEbJii|v!>4fkzAR1E>hR>{us079FHX{-J6>cmr_2j%w`Nyh?W$v#v8=K zJ1HH!2pNwdU8^Y!I#g^6Cz^92iA1$7Si7M!;sq*C#+AAiN~{)@Qq^`dcTQgt+{zTH zOl8C=BF^&5?0pba{ri|Vr^n5_vfvr7E7v1h-x9H7{p3|5K0vGej@of#Igr;L6ANiH z>*WM;c1RU-ZCsl`FpTE@7$ySL0ynvaO2i#4)+n>)tZv2XuI}kX-0vc$VSGI^=2Q~r zde7ge8a_KgExgko$d_N5sTOmovyZ)%6zorRV8=M6uxo-8uHi^4=Nz7` zBlf7dNI}yAztN0W`)W%Y)jkrn3smjC)vJwa9wQ?N7_Bk2Q~noivzOD=N?fPlyj_?c zBcnSxqd9Go>o|2r{GBqp&8>6h64tvB2<2#MOk6<|rGuQ(1XTh9tAer_@efKxuJD?g zZLYdqTM(E8bhSuRiymSAoa0#b4PqJbPfF&a6SV7fM1F$Fb9S7pOJy>mhV(m<(+~V5 zF`r^)xms=?2GZ+$be~y9y!vRQLQst_{?L#_4sgciWrB;p1o4O|hdNs@_7m6K>#tm^8w~6lEE;@%{rm9^q0UdF3 zfb`|JM7Nmf$Z& z`ht61rL)q!*riUivI_l^62H>u zouuGos`oL8G@wS_;mKIRQ{I7}5yjL<6}wiNO=QgESCT`ppE=!%15Q3I0DqA(HTT|& z9b9U!fX9lvVut}`^Wa33^28zKJR>d;<(yq*CS`%mRVHmZbGhpc*&`aGxNi{On-urB z#dq7~zMG=SVOpna#&(Bnoz(ogaj><5Dl@RlSpjx#al!(o++v^S?$%b^B9B-oZs902 zUOmUJy4%*F9=r|dEERULt0N0@8xly*Tco#L?&pd^C#;+#9G$WXzsqP|LtEtK$29?( zK|Pf&OEb==s*iePgolc;&Fe0Q)d@Y_3uU*XebcwgLzU_Q`UN!N{(=99woaMHt*V(Rbw^d z8&9T1f~@H(_8nF^cJ4l)wnA^D-W!p$t1#vp2OBl59-F2T;TLJW$s}as?^eob|;#Y$sdR$Z94=pi;vWFxMs@VmA~ z`)Z2#BU07kCaRU~oPg}vW@YPeVmUGY9X-O#Ck6q%69BU%?7kQvo3@9!q)wS!Py%Ul zwK2!?2C=Sj<=3A5ZzR6`%$HSo@bPDTGQv+}q@a#0vQ|k2J;-E6TtzjENv5aE#l%Rx z(PXq^Kx?UO9%V*#vPT|Wrt{$r|F$XqvCoJuFeO+=6Q+Mljc`mdB`p6|R~#`p6+TE@ zn@QnKGSjDffPw_iGMzdJWoOKy!#3cIXdpIGVANycEL@0eQlaRY1GF3EB>Ld4~+e%s-K=DK!A zkm6M_y|mdzdpLKiHxoHIG-f`jL2KWPKyOyRJ{Q3PCNQRyvVgE6<9I}2BAUEwrI``8 zN3_V|bULmzWUSofL@I`l)I#icPrCPFlfFPXNyhdSc&VN+d8?j45e>TX4k22~MU8~4 z#OIl|ftp>LMPn#zrQ`}GF3f7?b8CRx%-%q3U)kl%yW!tZgD05HwAz$ASq3_2rM%dT zxQ^(qb@v*Ve=^E^?uvC!>-@%9b~$(4*~(xhS?V zg|Qx_D|YU%GCu#F#s*kh4m5Vsa#Qq9_QdF6RBx(BQ@)L~CYU&|h?&k!x56DFy4cBNZ~)SrlpBNF*nDoFZXhvQN(8~(s#Y{xSl808yKpShdqFSA#eH9h@pbNk8@maXl4V%NeA!yKqTTv7(HeY64tGI5 zN0f71l;&!D15vJK%4|2wF&8~abWgeH%<0iMQ_%#I%j#u2DEA+aa~$@_3!nNgx$Uc! zXQZuIDz=Wps*`eRU2v16ZpA!IMk!s?>Qe<7ag+$ZM=?B;G1sE(Hs+K{>f+?N)6a=i z&YetBbMCa8iKKCK5y3OW4mvB6_cLPq^)5#S`SPI{4ZK>p?0eI2B>@%}IStw0$4x`; z@_K@jcSde~77w`kI4E59#{O zGcu(om`(OF7aOb#FCjfnl+#_Avn`ccLORWK#s(Yn&c|^SSA6r9BjQ2w77nxK9(En% zeqHh&hQ=COq@29;={+k7igVCJN*i4qoHagN3nMR2hOP0>&JWUpg+42ue-VuVl!US6 z)R_cr0+C%;9 z#0`7tvBE-!(11NjYxIu z*t7Gc&t)Q8Q?h~8XTT5{qux7pV#_{@NptlXYb#7K6@|9KIC>27 zHJ>SR^$rYC@^f6uK$eVG!_*_{naG$^I$F!V)S#3|$T=``Lp@ zRTOQ`agdpFeGmtkIM+y^iH93;V;kN2HC;Bor?SRPtOjkgybi8lBQl-kBaLnUzfNTa zrSeyIBDh-D@DngYAw{G5iEskBS_^i<7-wImx@pL&8*2lPoE@)c&Rm)a&IT0{ke3I% zM5HtWbym1VDr;gBljf}NXd0J7pt9xF;yCO+G3$OwdpFbO8hVjet1n{z5^?5bd3M@X z!efA|q%NO915*9&VE$Z6Y}?_#5IH%^W;NKc44L1(%$Kun)59Z5^<=Q%uSEK5SI?mC zwf{|-)Rb2>6lUXPq*)Qucu6y^1Ju4iB?_(=6ZJdQ;vu+TG9U<7wj&ztkM`>=!w+%l zx%#DbFQQ%f=cp)IA2*Yc{N|$1pSv9Bdjw1|bnLT%wI~w&RN;niiMBGPN4{Sv#dcV*NB>R`rsdw(2plb=iO8{RZN_#yA!btvI!zdj0(adv{?QAI!)Op3&}*yPA9D z+dDAHGz^^mwqsF!lt|>Fx`Tx?R4wGruGLIw#4fWa<+Az)Vx(pDT!eC2J;8)VRLdsp zpli7BEgf7!N_6C@n{;LmYobAUlGfmvs zFyr8Mu{~iqk|EE%7n^BLut$xW?Sz$uT>NTvL3(1F ziN9o*qt%S)k929yGM_PQapmiUZVtO;#D`@Q>{@AN+2EAB2+lL-c=nJg}XglhBEA!?)C9Yy< zH|yX=N{3u$GZ{OEDgE&vvyIpB?Y=TbTw7gS)^bZs{D73How>%dec|DFd;rn7j}p_J zuENvntN8WtOgjyQ?2z0+9OuZ@HjCzRNX*@C2-@|~mI=C0AJZFodq#xQGm36}*~l8+ zy5Dh6mFPl-_ww+zR}OERB*9(`Z-y7;AaIOu?ZhKTI0un?gxkWbMwfT6+GA1&QP!av zOvbD+X*)9-L!5(A4@+x^P7X^ZU#?+kH`5yKl1b|xnR~#-P$1HZ&u!4_JIF1IbA~ThvLYyPZD#`$jEM^YgWMnyQP!)=Vy5C4q?S<%a*%RV zzhUoP>)_)JQkyx+l4iQ(HgSiJV4b>k}ltR1`{U1D@j^$;3T-dBmf#G=oo0Ir?QFG^zGSWhHU4`(HC8;Zd@>uVj zDJtEHC%kS~XSNC4JKm(33AYT>9@9|2=zDsK~plNnIfw zd&IYt4ta+bm)?s&6idpisGIs4$!3rDh0SHC%2SLe$DsjQaa9 zVkmvcGY~1m^RxVXin{&6@f8)}IkTSl&snIx#z>y$xL+LcS9*l^{G`Tcp68TbobXr4 zpDjU8#c96?oc7#i#p4S^0TzC(%N+}_CzdZ;EI_Bg4pI83Zh-*7Y%KR;x17ocA^RFP zdS3U7v;JAQ{QCT)8?Nx2_X{!0BkOm*XLDimZNB_s;d@LxTbfr~lego-OjK|&xy1|Ci>B4NUK;{s-Pw@${b`Jov7*N)1T~B54?}xmG<>f5r6b=JW%Ye#e`cAT{Bz2jG z5b2|U%x6f2gvhId7;zkk1&kETu-t4?l z3RQ3xfW-``umN0zyi)A1Vgx9x%k->Ds01L$08m%}rlK1F&RH`!w@ra&8F0%OSJG@;?gW+yq`fRHR#K}V>mgjl!t&;x(UB2+ z&^;?c9dvQe`i%R7XVE36bV^h%S*Ry;wFN^P)H*&g>(^7$eFU zp)2dm0Rn7d06ur`y1We}hY7QpF%<^JqB%m4EexUTvW{B%bLKdK?q(3B#UP95Bw@BO zW;!rAROHNgf^KIhmENgrXNsl*v4at1jgH%%aYO#P%=r_Q!0cp9Ibq~>AvIP5^qtM; zPZ4N0gGw9Q>23yv=m+F8ne*oevWFp4$Gd+E$cLsZp-k;%V43qKEkF)TX(h-$2gJA& z3y@P&dkOL&LrTmw8vy2wk$gYPiw&m?;!4j>k{@6>-nSQ004Vj`O@N0OP)-1A$0YUw z1GB|*kT3@sgGA5<%HBb~^azO$vv_j$?LJB89;qS0xX@W zA^8zYer37q^9sW2J&b;M)B@C1xIZj%$lG$f9300OQfb_qj2=tf*?VS21u(}MGdcU? z0RR<|9-LrMG4*-z3g| z-i^meTEx=nkg9CB?h8KTz2hXMQp!;JmMcN+TYbGVa8obnDj9PzFt(R4gx&AzCdEd& zI2TUeLlsdZ^yvyv6>Ge~Q#3Bn;k1N>Nf$@6P%%DC%9>1O#EM_P^7c7-kx-%Abk%?VmVc%Y$ zHX|SMRL`1RISD?ACAq3lZz(?Hxv*ezeLkEKOH@~7w3qFB9`Y3Bl~P5vG7um5bzWw> z+2h%LVUQ}Qok40sMpwul@-%HB*)o<@TKnAj{y@0sQL33<8b`4Fy60$_%_42A45d znRE*q35}W4dNH zGp<;f87E;?-~a*hP+MCVS)!1xe9j2$v!Hh~wA3~>xEh<&uL&H{>2G6bnFV$6)&>r1 z>~_W$SQt?v`=r30CaZVuU{pocbjFib<)0szPYrMe9ulL=2`ziGp4nL71%U+weh!`z zgR91O-aOh|EDM~cJfqh3@GHfV+se3Zh~7ZeQ~;qhdl~4LKxaFw3e;%aKE{=~CIFrq zO}aX;Isi^>tsdkTCXX|*v2xrRXr*_M9vLb7yVO3rv5Fy@I z;Bzs$oY3RdbTkkp@bBS#F*sjWgz#sz^kD{7WKB{$GjwGn0tw>OmGQ9kN}rtR*Lz;i zZ{9KASBk0rd=KXOMRKnH`MIJ#tE2nHOq~PJp}`)NRP~Ms0?|oE6>FoD9vg^)>t!e<$(#|OW-$_D81;T(gCjqw3VFSMb^-Rlg?F^u@dI~^~a=NIVX%}MM-B>M>7 zt8JM43ohYoatWo*xJDemxW-1KMEQ&?*4Mvk(s$c1O-s8Nd;Rnd~@kCI!`Iuyaa?hRCJT{bJ)V6lO9N96pX+s0x5Tf*3^0n9JL zHWb5GkfA<`6l;ZAZe!$Ma6cL6S0+UleWi^=CR-U*rcg8_wjcnE;@spwwllJ*Yj|XI zgigl-bh8c82`{sO(gP<|2Jrnh5b5?ZsMr{U0lU=!Tg9*(W3^wbalEjaU+@_v>9;ZR zFZiO2bBySI5woFC+9<=!@!T)gI#3Blxkq!qxXniDqz4)8*F!lzWr>mx*ho~+dPa>m z;QPgp13k)U=Wy>ABQ_4@8DpF;99h#zAw8s=v@z(*n;27!YpV?%OWQDHa5KZQ{RY3- zU}NDmY+-Dc*Wec$ZRqb2fn#W)UTQ!F@30|Ac^gBtTj3wat=P_>LaY!C45vs3@3eX3 zUx>dktVF|>jYgAWz}}UG-O1Q8U|~oQWs_Y2=)Alv_-=;#;n<*!>0CLW`PtAtZfNHQ z*)T=f(7g;TRqm3G^MSZD8@-Rw$TFDGn$^Y&7G*JdLRGqQk?l5l=D z>|ur>qd4{=_u%w{azQrsQN}`%G?oH$eo>zdKEhxuU+Nf{Uo6T79%UfvR`&+pFCx`ZDLY5$ZgnDrFU!_m5zTnxFt~ z-eu%Bq8{rI=NW|7*+@XPmm^A(&k$NLaMtCSokUW^2#U?S1MhnYQp%95!21D`SF#*2 zasJLW3R7{I#8oWz+aJz`wCo5;XRx$Hg~H%A;Bxar-i`xQ53_8sW5g^DI zrJaO}SXe0El&oJKBhg|Om8jsUn)7G8$rELW*)3r)#ZD2(krUjEH+_nvK}%Y%XEI(h zXr*T|AqJJn#O+>X#UM}2rpccksahFc;?N84Vm(KGcJ@w!YIr-tilAD%O_sAH~Y zX^EZLXg{K>OGrG*Vx@v|tBL1Kh-71ytWVnBR?mX`=J}I-^I?30h*lKUlJ#8<>+8d+ zb`l@Ngx$>d9EOqFB;Ulf7^p+(V0-y%?$IyXfVf_(_l5~e9HQHd?OlpIjmc(p>-7~2Tc3Yx) zhtj%(HhUPxu@GmhW-kMbScnm$K`dk+Lws~TQZ9TuqBH0m4>E=W5=Kx)cjNsGD&|G4 zG|iBW@Ql{t0}Q3LB>nwsAdM)^3kb0>N`B=2#>5c09L^ZcK_^DfdW`@La(|dHg?a}) zXp8_2Jn4rSVoi*Vh>Xtkql_uERLh_5nJ%T9E;~Kb?xaT;>6~#IK^&xclu_mk&4}LU zbdT9MW2#~VZ7@|i&X_`Aa8jE5JtJU)S~y`ttS;?{(jZ6A+7OxpU;zOv*%6wP49j-^ zjVO)I{wYS2_pcWwz-t6*H1f0qY0nduN;#^Rt>9TVvQteHjBt(SJjY15!g_HNi5o#1 z4Sd}VRC7@ybfbai8R&A_jo^)j=FK5L2WG3@Y1$p(8;#A+!Yae=7e)w2V~ZGTWkI{{ z+0mR*hB~GKMu0|hRx%Kr*lL!v0xCv)MnkKzp{lZs_>6|mu%OE1FZ1LVG_Um4D~q4! zUr=0{ryOp7GoQ2(VmaCTS@KnU^~X6J9EGTcMMcfl*9wGq`dNr-SyU!BE%ApD;4Ghn zd_K#In&lFq+ydl115%v(&G4 zVo+%_-VNtyeRLTMOUx_WvHYA@g%PvY7Q39|UMklr7GvXuxwWFS3VQ%nv$V{0EW^8T zJ-r@b07ArkldkuUZS;1Oh1l}o@D}?m9>egATF$>HxK3 z#+#RSqzWVYdY0231rl+~WUx$soG_z|DbpC8m5jFtA7}w$j1l&(fpe6*O)Ow9q^cUv zH(Sr^i#R>uU4B7!wOMoOtI0sZ&taH7o;#df82Y;z<8q-*?;N;oj4O32kmbhCpM!ge zwMNI9IZFtoZNd&l`dH<>Ppe|o&gs>~*lD2*w<%ObZqsf{V!BO{Dsr3l zSfaYAsCB(VEXB2j<^6xzPj$c7!YQ+~%5yj$QGmrTOZb{u(7%YyQfaf)4$UOQ#yo65 z-Y4J2w@I$_H}iKbU|%XBdyr-2w#?e#S_8m-3s6^Lecu7TY!c?<9hvhH>URfh1bU^B zz?p+2eu%}iGmphOjWdrD<{)Ee_UtUenf-(~%m|l$9)f;usYV?=%!m^63fMzl-*zH+ zl*O#2dq_)D?In z=R8W-!aVUZydj1g8fL0C+};xw#?Y_z)udm~S`wuk5zpQE&8MgNg3yjtq#aA7cHD+V z)dE_o9HxNXOsU(*0BiY4$r8cXpTjjj#Q>u_I~GvUnNKsw@ZSS=VkpR2hS>exy=HpO z#xx|F65317_RC*qoUxQ?IOVzrpJy0P2Mn)VPY3d9$@!rQa7_mc=UnsUGt@a9FnshE z5b$A?IUO+kbktX=6Qc`i_}#!%GRBw=7;ZQ0UKK-}O6*uG)tR5cSZnHF_}v;ai!p2* z{X)$gOr5D=m|lZ28tWQKCDF)WEhAm?L&IA~QRg$vIT10ubdW7zRQA%>b&h1~8R=O1 z%68BfG0-(|IF?kA_F@K_lb~$(dd)fb#6Z`a$yhtpoSUyi5+tHWn5tA%bkLkYlpl64aH;m+a5zfOd2m zhWs6jpuOED^O?OQ-^p^?nJMKUKeL}?yID4l+w&|r6nhv^Y&k{=9At6UjDa@xuAT;e>o8-+@yHT{c$g9Fa&4!?ALZw6Pi-@m?1&|< zFVI^7y`s$4zkxf>I7j%~^ul0a zPcVw(R_?jVvlhf~)Lxg4+DS`dP6Udk(L~^sCCWV!SVUEN+QO;6w%)TPzxm`0-!gPI zeD^KrZW`|)z49xNe4PTF3E(V(ZV0IL?opGjlakzP4TgE7JmyhA(A#~o$7&bu;9}hIE zY=|8?H+(!mRx`wO6%Ef0wI5-O;VNdkbWw(7yNcOvU4qe0S25eI8+0ITS25eKTkl3{ zS25eM8)c-!Rm^tl#@s;V{bc)en;3{nQY)d3y>Pk*ZDtrYu7oxwXq#TPC%1)BmeZ&G z&TL=qZic%3&TMCHTNc*xJF~sH?Todup#9Fl-}li$$V%Odc+8S&~;VTI@QyjxX%ZE|rJU zt&cj%W9f38cZ=spLG#VNP0E3-DIP1HF<#JrCAqE-$~@pZbXQKsf`IFbFbJ{b1GAqo zt^@4k-X36~uUTJQg4f8ueTXI4++%(!1@cTgybA5x1ehao%7vJx$8iVj4^Py;P_sl~CD`i;LS@MTTUdeJgVCzt{Ge-$f#Q<9KVHH1ff`l_zNNYZp z7RwI;p%|wKGK(Sd9J)i%&zvJfjRWCS<}-P;PokC)R0va_&yBwxUC z$3(G~Wc3c2rJQH#Nw$b(<4htesU;UPB6|`!ivUX)fGuHId(xk(!8G%_Wt2paPLRBn6l9P zI)(c4jX3W+HXYonSn8g|Zkdjm;_581HH+Ow;)pGF&0_aZ(oq)EJ{SH}Atk#<^?dgXlz9sy+;i*2M0_`kCtC+j?GG!_0b;p*$O1VQ?pCT<^Mi9AoB=1mivSG6 zDznXpwI;HE?n4BJH@So1<{2ih-UD}F?!$!hAu7YTV$+;>$29WcxkokQZblYbcEw8e zp}8kCXb*!*o%Y3o9-MnhL-#VY#DdBJ)%#af^uu${5mGxf`)sts=2#_qbZ#DPu|bI* zWTfA)Jr?fB+)~1!hW6Vy!v5iWN+aomPp@&OJ-OAfnNa zGO|n|c^tLC=jNUx@b*0T9Sk<-Q11B4QAY9n$PGEh5V^r$55L|`x?;}HJx@vMc0O)_ zjd;%d>9p{6!jhQroW;{Ap7X3Fs>_#t3|4ZVe4S!nCs~kl#dimpl~Wc@1$wr54(2yk z1$;H$nw}Fqcy7R@K z$xOl|nJ_^D2IN(Pf&mJG76{rvm=KWA5f~H|D-|fPCDvqM3c1EtXRC?z*dc z>%F?Sy~SFQm#PskK-CJqv{1CA+qxwkwXwd%ispWQzw`2(XJ(Rs?fviF|1$ZUJkN8^ z@4UZ#f4}oP=V+=N!+~po4^913O>D@H44Ds_hG!&!97?+>J2Dpcz{Tb}G=}WRT-!rE z#sPLTojLZnHb$bKmS`&1$m7zzL)!ajGD8qGHj6#!XOOMnK^82Zdu4BcCdm*(8LNA; z6%N*RAESXy$Z_`w!bnZr{1=AipO`~TYm!JoU+U$@hZnelV z1Uw*V(j=yI&JgUNT$7r{kj`bxb5fctTRN95(z!=dyQOp4GM#NMN=G`EEz-F^lTu3O zvL!kXxGCkl?AqoiJL5x|(j~`>I&~olAI>Bc(xk6v5k9I3mE22;-Zo^B{y>vvir#L| zqJ1ojR*Bv=X3;*OX;l)W=xtLL=`Ky`620Zv%=nb1%#gk1*vo_7u51Oy_WS85|zEE?On&3 z4u{hbPN}>(=2DjRzF70o>7FnP&+s|YmLef9ly0}FgVP7?Mlk1 zVhZNNPTzT#s-n>4taVkfvit`5F44|8neI<1h(4Mo2h&|R1Qh)=h31b(4MEBWX!`+%c$Y&X4~+y=#IQPC6J{}$hXzj@;v94{LKB*EMkcEkB! zs8O5=`xC)by*RRdh=_5FCec$yW+>w|iF0bM+Cg<>b#nj)OK}n?N>iB}fWc3o^lx_4NDjc@BtUbkrZK>}!APK3W12*P zb%TkJg>aju=@t?s~nCtSP%)IBwEpZbNVw zCd`7S2IGMcw`oEXn$~7Dqx&_TIn20N4}|uBrjo-?xA9&>20acc#gYYpZ&d$ITlO=n#<&LS zAgQ0y)NYJxunv;)Sr?^)akCkS=Q1fJ#=Rk{J`ZV17jiYY2pRc{nS=t0WiJ{Z(S!;% zO5|$r6f(@$G-)PsHFyh2dn}7qA=hjs;|)!#lF;R%@ozM#3%O=97;kFA4B(p0VYFqF zio(ifG2T|BVitTjZ(2d^a{mJgw%%XdPpjTFRv||=- z{a87Tbpyx9P++)EwPOz4+C=!!b1`8tL_0PUmfl0o`Pw;aWorpVP^jI58MicGeeLF< z07fO6A`75yrV#pQcL$(05Tfd*9kK!H4=8N|G=U4CKE-fMyJZ5@=g4_@ma_t=FOu^J z(-{C&asvcWUmF6DIm&U*fT*6KK#yZw&L%{Cn|zPg&N(4!2?cSfrpWHm@^myIWE&ACUP{;C8oQT4vm2v4Rk5T%9}NvfgG~|=B);qMvex+M9s%E ziAIekv=m3J-lmB%P@@SjQDt$+qco`-H5&NxBt%l0%0!I@vP8<7+%yt3x{+m4(-^4H z0G24ylqONA(Lj~5IPcLkX7hI`CL%%GG*!3Q@_tR$6SjOnQ+A6jAJSyqVata#RZrOR zQBBzcw)}x6>;YRorU|>pmQQH9?y%)9O=UvI*-mEybbLzF=piOkDe+l{#DR`;olwv= zp3@{IbTr^4YWZG(qRFzMV>ZxyO;fv}V>ZY<=Av|ZZq zBa>1>$83=K8%^ngj@cOV%}hdphO#kcnXB zFsxaT_f)acFmGt-jp7W=#yI zHsTHw?CCG$IGzQ{!~p|1-DDoKM!2^GZYA2SnBDYIUlBO=F&w4Z1PSG!um{I}+Od~B zsRj;oQr7_O5U4foaJQ_-@;1YHuy!u2Ro8*T=RI&5?sk&t%zFqFElY*c-f!T3sdmTBF6>`x z-NALTb}iLMDTt!Nt{)alU#=;FwQ`Ko1iSJ`Ks`-Sj4h!X7>p`Rq8uQB3Pse=nw^`THo15u8XxRUj!zq@12LqX^D0!p#xh)`nmAmd2A5!zD&E9 zs@trL&|jn=R%()N4sVN{2g;i@CD;<)-bBL!1o9sLn-tQm+CBS@k#~t8W)g(fEm^;8 z`rmx*7P?hscsB(Jr~phx(Wl`?hHk=sM$qHg&*2 zi*I&574rSsy$>Iy#9c-nITZJ;?spzq>;synx44*uiKyCr?+m9v9&!k%OF-QPM=(#r ziHjhJPzVoef{ep6mYfG}>rw5R^Jrg6@_7)1`xYKH($5z6R5n6a^l<~c@i`-vS?&FJ`deO%W^r`Gq32+a*bi|=E#(c#l_N#2bYK2vX z;bk25&5;Z z4)Gts)c-70wu)Y)x&NDBf1RRrU5SB0^Nc1ma>!(U2RaBD1o@i4;A;mtB;accHHneh z%ySw_G?CfDT!q3`zb3kR!VH9CFv&8U$(pEZM)`70qdH_4TFWEeEHYdDUQ@eTQ zY)-hzMTs-7Nedf&BbyUWW>R*!+>&xpI(&FGFMLlXr3^Eh72c*PU3_>pAAEl%pX zMJhS<>{XV>G^vYIU+44)*>j%Igi5M_n;Dj^MpC0$w7WDdj?`wX&9pMTU(cd{O4Fm6 zI`n+B_=YU%XEn8XviI#-bkAuzEie$*jcm*!J(Nu<8o;J3(ib%;VvpP+?}o^s&UHi) z-ZX=5n|?8mgCcE$J09fSi?8J!^VQzqZ)1VOw8A%wSMz~|0+YOv*C)Srp8s7qmgM2? z;rbsEfe&z&050AgYauEhUvm9Pr}tfNHQ~ECxct|$uDK>O z+dr$sy4726jeD%5B+rW^jmCP%EvUl0@p%~2UgPwB41q>3oVCn{wdTy|}t!VOoxkpPa$>822s(c5{`aHE(7 z#tByqBf(2btr!wq-LKE690`7#Jr{bBU|{91iTIG}BGR;t#Y#Avvgvqmb;6 zwTqMNPqm%O9}?^tL$HtIbP8!4(4Jwh3uzJ{p0dAbj#Y}B{mMVbDz_}}HFNH(q(>shHx9aA0uRX z+w3hw8U&4O>(*xvI&Z7(3wzD6+&?r^{ksNlH^K~qIn$rV`m~e$oU>rT^lK#7EYCxv zD0=0vS4r_%=5_HRLHN(Xc|23gr~ zYu2n@w&WI1uergF9ze zj;iuYGPDIS@E$~vE9nRd$O`41p|G8rgR&GsDoTOLjCrq-P(icg9VTu)HqEXpXudwmY7iI#c4BfQ-RA~LFE zVHLmB%DmnYw!cDV$tXg4UWU+aUb7~;f^K=iw>1YLkuizBXyv-t5yW8-k|#w>?~^R| zy^drje~OH{=48v!t%CE>92GIea^30(s;?qGGAf{t5m1$teW@czmx7FpB7GO6Q?0B! z9YKlp8dvWkAD3JD$YFfdWl+E>o^Qz;9r4kO#FJ5Rk^2=E3!&*UNBnlem5fR8B?}Tj zzV1=n;|Q{09;=g#NmgxT%A7%X6e%KO5>B&7+^ht?AUXj8GA7Yp;mplbmQ8Ix`XC5?t^-q65`5#TC7M8+fxS-CH1M7S$ZM`TR$S}Xf{MoI$mLdGPW zX}P4hpgIT&GA31>reXmus1AdIj7c@iGGw=)xevJ@W75pF)HRGCco2?cOoA&ZD(3=5 zP(1<)GA7j=s(a(=MUb6DYRH&m^_C-=1<7`VLdGPSOJyY&PsF~Gr9O~?k-SWj;S0Y$ zH?3XcUdzkkAIlaUfNAv(9;v3@d zxfsq%GZNfSkg!4mNWySl0Ykp=i&JRe&D8yH_=2n1lj1~mu7jE}AZ6t!U}?>HQ0Ky= z<(Zf?7nmF126G6Ce=5T$l+J+}_y)5&(I^snKhM$&^kHw5HIa>$r87bqGDPFoNL8Iz_$&+WV}ijZzZ#gj3qM$m-IOQK@28DuL! zLdGNmZzjov{x--CB0e%E*+n|e?(oFO3_Q_}P{^1ejiQhs;gy%UAwD#bPBJFd#SRrp zLX9{?Oh1|t)bAR2TL-i8?4YiS;0^BW6s&8Fs2t&SVCr z%DNHe?z5Gpi~4k5JXXPWqGcph!@_aC2hM>IN@-^@NjhO!yFM8+#@Z#uALbc&J~T#LK1KVkt^a zA2*iz3IYLM($EAHz)H?#4k~o#87C5mvE|w*Ijqe{2{6OZvK{~#B-p0`$oiiSAUn5b zKvv!}ARFKUWO2-2Ps3e`58`YA ztM#^3Smwgt5NBuL?_4kt;%q@xiz_t|Qclt2P!%U#y;!$W5XNP_nuRbdLo|tV+Fb=j zw8O28J&v%;g+0%AW6#Enpx_HaZQ}|qd^cy%lp={0R^|;{Ak2k9N4PNPhK!)7|6FJ} zn-}q!3#MMwBTOB6x-fOr>A=*B6$0%JrdBGV?qKR@1wkR^LgsS9)G>;t8<;v)L&ol4 z>K8Qr>=veu(`4Pk)bTpb?qKRArvXzTnm!GfI?e#6X_)K6bCGRW}IO-VfHTkm zI60HO1#Nf)?b5@`pJQK*cb6}0vV$qVCCeCwYgB01iO?&WwydSQ=pJis5dzXkM}7>eQ@ z*)xV3)gy+w_;fLpKt4T)`mj3R^LpYKMbsUJ!peM)qCTw53mS=`+93iXqv`@>6dy+= zpn*{bT*;Ue<7s)0FPj2=3t%o8li(5!iMoSf6EwckvE`B$PSj-G!Z0wqQmEJ+47=_7zude1JP3J6I9xamZ3)ZX+$k%x* zzqTS;B0r|Di9!i6bK%e%kfG0y-nLpO=E@?s{9j!^cg?z+m#i-M>iXK%OR^Mu{k<0u zLZ`Y2eSH}is63^6TS^nBz%3%_9{254S*o;ZN=0`0NBLI2rAW`ez#Kd)%TY!0xt>J~ zJ%?g-xzQ3Und#1K7}{0PSyjpaHOp32;_a*S_PEj2F4 z`b7@+FNUm{k|XM;nW8&V#h}>a*b=ArQp-Fq3l^Jm5cRQg+|L2pB~nsD0pZ88z;k+( z1@`S(7Kp`86JBNFJu2CLnF^~AGiT+lKNMEYi|ja==D#>Tu;giq6?5Q5Y+uqR@4-W^ zm0nUr?Rlkl;OPh!&+A#RILIwnOyZbb|4v>W*83Y2?(phRR zLtS#pT=;yLgU`Q{5f9bZaLax72CN>;AcIx>{7e}Cy&Oarm@xj)Yytq&0(Gt0>EQhD zBM35P#~5L`uG&D_ZbWO(6q;VBkh$4hbBRMQIvt!35uRWMdcygmGI0KOB%X|!fs08~ zbM3MvQK?q;W4M!1G+Xcjl?(H>C1i3ZD99+PrLY@q_0G6y36{Aeuwzb>wHVtoYw?BC zVJ*h>%vy}^k+ry_N7iCO&#cA79$5=0l=5czC>BA(Yu3illAwtX^i4*UHmu@MC9fiX~%4H(3zLi!+dbT&f0B6mQXu47W=j1)Jka@UHD(t4nSBSCVWmTERRy_hRMq^4Nqh-n zlQBk5z-QNO6v*(B9GJLIkC+&X-=?nNR}e_%`Z!>-2{JOuHjeLjnG49~qUh%WvY3O+ z4il#p^!`1ppr3nMKo?4YJ*zZA39u)XMkoOiNp~uZPy*~hrE!phOwY=ES3}1ghhyem z8vi^p-&_pi2;R+&Q@D(u>NX@3#)7v#^#~+K0fC58krwVU43Maz-^Qp zxDjVZMn!{g;}_Eg0ipI!@#I>1uj~=q0U)0qwiCkM93sAcEHC%wydySF4#6s zL9%XO+jvFO4Q%_bC-YU44YdjS5nfQg8_|AlhdDdns}ec$CoRF}25kKtvGu$qOINNj zWNEpbR8^fRWTR?4TZLy{b;<|pjb>I+rlqPJtf)XPI^%D6Bgp#E9L8TP^IVIuoI*0j z^DLR?k_?FRAE&NJ&@nT$1lZKIgjP<4#(q7(F-SO1L+*I)>A*3mt=QcT6N%WmgJT1G zgky%LVy0l1%4blfMEWdd`>SI%Drfqsoj{%x+#@EdJY7sCR_S}d zWO|jpJ4~j5TX&dDFVlB}$uw^329r6eiQS3PF3~cwZbfO%a(%a=G*(aKJwV-w(k?v> zQQBpWkgOX~nz34sk{}G`J&)i)7zag(qnVejGft=G)-0Q}6^O1~zlM&&T8VSEd(#I_ zXjpkWl#!RLHs>M^)jM|FB`)87c=&2~-LkLq%UsB8GyN3sxj|-11XAhwFY2U z{LcO|N}$Lp+-~J1u-mZ_r$7Bm-h)?F!#UQ9-FsS& z$&7)ResMAbQ9OLOH$HN$B^wYiQ|}Ny01?&M<@mTUqmGCGTU3mBfoyI>xj~ZT+VO&o zy<)l5l&fa$c%c%&sY@BEoNr{*7Euk;R4Qw^7J{+0w`YaV^Hs`vS_sBQ6<$oNUv^6j zNw8MS!k~Bj;$$jt@~60zCAZKIz|V|^{LxQUJz>Kh>nk8@+cod|=B8BV2@^I&p>Hw^Vg#-#rI(z_D~iHsSV0DNbf+T zkm6C~fQ(5rPKo$bNGCu*#v~fAh*U@&ARuEB@dlM1c8X8PkOPwHC>b*xUgg$6vIDMU zOo~fQ^-+r&W5ytI8J&z{o-mF|X+d(ym;o{LW2mX%?LknGF{xNlvqwNWIRlVZBhh5c zkfvy$EKU>gIaTtcuCu4?HP0@+-!qqHHDWe|&CG%GSf8qb)Ag9lQt8rE%*aqA! zHtnXHmaSjUa5CFk73SwblF-aM`^zYSVm^%5D00(66?Wzs%F14amD!@NL5s%mmuG)x zSOUcC5)`Fl|Ii^oy$|+BI{$2f}tuowqf7r1Lg!;un@(Go$iA_{eAY_&GkRD_g^> zELVUlnt<0SDwpk7Zn$pWeEVqp8`tH>M%er8ew02=Kx0cZ0E^PjZ~qQf>0-MkYFC$D zw-1r`?1e&*UdqTz9sY69_Br;vrH^@U{R>z^FREJ+E|BIIzzyB5NO8``J1`)+o@(Rmrjn6lSX^v7@W3`Qoi(1+bj@IBA1O zkX$X?BjR!GV#>Y8%A>mJun#PM`lmE!p?;3i#{uzyawrP!*caS!A3NA0im<%ay-^isL^D>oqBPCMAQ{OM0c zEL0846B`Cv(IPk>wrd7;&M&`i-@>YJX*7@wmpX)G=Oa6x+b%$M0k@r>?EHq^eEXNK zO1^F%4IF*EW50MwIb{z&B$UPXCci2Q=x_aVn?Bq)xOT#E`xW~DmsEUbAq_H7pS>^L zt7dNO-xCKrsemH(TZ#QA$lJTgNJlbs%5LzdBJDO_{GIn;*0=0XAikl~ik6aH9EV(5 zHVE_5z4;r*S&HuoEy>VZ^zV1{?R zzm@DIVxU6Xyng|TA5lzrIT?AMLyoNID8wO^o#U1!hrwrJ=LWPe>yARae^`xn7Q{qm+nJWb#v^9wqpCXPyAHp z?RIsY9ci!pW}HJkoM<>~HRMy053?iu!I1=p$j?zR!homKYJ5C}i`x^h1iBGJJS2#AWaANEZ^iY44ic?Zbd-{g%xMlx>>EOFF zw%4Ir%N<|{b$|??6JBNy=mBs3$ny}2M~tCp5DsM+>3>Va4{H(D1v$d952AZXN(6X9 zz1v53Q@|K2onSaPbO|IhT46^tZG2}D_sdfIdBZlj_yh;RX`*~iIK%<0vQnY(#aM~4 zEs_fR=cVd=sc^s+<+cd<-jZlIVQn0*!nWIK@HrppNcpZqD0UetMiggN=tL|Zc}x4? z?KcxTsW}~_fBU=gobv5WZYcF`2-sntCvwoP_IpD6$#YdhN3ijG)B-{Wt3n+cC%8fg z-u+cLIZ2qY*Ow~0&aQtyIpatG-cPnoXRrI=^^Q!h7iD<$XL#+!UOOreBtv&o;f_@L5B>w?W=k^ko#n~Uee~Y!&QiTQOHriWZleF3oXX=jZ#jPRgTH$Ac*B-| zz&od)5@Bp363_I2vO~B?_Kpb{!bEH178AVt0W@oO3~MwEXc4+P7es1*6K2=vwnMef+Fx~Pn(8j*kyVW&S-lzbAwIGDJdaQ>0GQ$kABwK znURN${axwjhKsDet-ELN?j0hND(iJkEgQqt$)?o^{y>O}3^SqZepB~4<4aYq*kHRC zCYvoQsQE=srpo4_J=+V8lqR`YNGv8U1F<2$JXSkdWD2mns^vR?rR?0dqNurRxtGgq=y>S zk5%4fwSNiC(+LH6o*A&uO@5Q+$yDSgnA#-{p_wH*IJJ%DU19q=LbRLc+Z+0c-H|>o z+wmH9Y_U747N3X>P%+nS0(ij$&B`{L@+NdvHT-y!H`(xG%IkV~Y5P}7ER9c18!0-o zp>CXp)JEjk=G&X9kEbGyTyu-68X6nCc0;2bidTgiH}2JA8I=D@D%DM~>DsDCWN+Ei$BnB*ptooM*6wF!`=-H!Y?xrK7&N^$V+ z`;i^9j5z@VQPSa5)Aa~GY+qe!*Z+7z3+E$Uj>xpjmjm|9QaNp=wh^`6OEy$7t$%S9 zh5^Fyl}$HtSWQd$Lj zN%9AY0tEuU2)-6fxxQx2&1=`(g6+=B)?dHitC#%E^;kqAqZEwBu3fU85qlrdPg}p9 zmVwvYGHm&hm8)axmced*Vt>1R^urn;w;SzOf&KlRSIw~hfrMQXUbbsWIgz`|5NXCo z8N2+*XV-`~dq#ynjDMwJdrn2bUQpqee54ahVn5hJfY_@DBLA5{f9RAf&d7=_NQ?rp z0Q`)yfX|waZ=6{(;X_awP;@=Il%n}Lhadr2`rIxYYOjp_L>KYBh)P8*3%4DGyJ+#g z`J4B5V0_JBf`E0$r6@yQjw^+nCVdsHGb(((1*@!G*CRL+)G^WK{eBEE*XU*81(Ay8@#ih|yfw_;S>b zhQVYgjCRzaLyO{~x`4!Qte>aN=^jTUKoBghOUQ{CBdP@bW|S;GlLl z;LZ8$1T5fYCc-8bc&Lg;M%UVSJQ`%bOTWd`iTwe)6=_VuXElt-pUww0lW`rDqLb8aFhl?8hoPPu0CZ~k85g)me~=1)zN4P9`j(h0u~_* z>h|dI5$d1SqWvvGhm)g0b3OIBj>hA$f$?WJLnwl~L=hYy5fi7M-l$7NdnxI{GbBy1 zV&{=KW``EX1Z?*6DxA{OZQskEZJ1 zLfOhffQTbi|BOQF1l7t z528J^x8BKZ!EV(}z+DxpTP|9RnyBLOA=cL%aAbepH~*?;$oP&1cOH76ckAkQ>4rc8p>cjPp<03T;K~!r!Z%XC%O3xX<9`e zkME&St*GCw^;OmSW0!6I1~CsqW9RBX>=*2X5Rb9vbbrVCRd}(lT+8+cY6BhwgRs$S zTjQcsWVhJ2P)j)DPg4uFVrsy03Xa8!Jm$!l>;y^w(P7WAx6<23znu5c(Rm9wHZd}w zvS^;h=x=}WFn+1}4#MlQt1}@MAQ}ZFf$aJoO9oz%dUqpZZzZEXhTJKNY z`j-7?N-f^)Stk>1MbVO3(Q{`-FG#d`qhr%kZ2zoek!@8cr~A`m>^lCc_VecuyUsT& zIooGf`|urrq_Hj_z613Al^b}t5@O3#s6$jY^}~5BD2S@Vu^@l!uZo-sHr|1Xpid-e z-S*UN2RThddouBdqGRle!a?t06l7)ik=b0Hhb#9& zdI*7`C|%6O<(*rJxUnVJcpN?@6+mOepPYWM?Eu+PT!&Ra9Na-j47&(rn+oNiSB7%9 zZL_j_!HY3F;;)?keTe1|>Z_H9lacmReY;4{k33F#qF-jaS1W;;DJ?IgAzMR}cvT0% z0YN&~g@2w}su82`|0;Z^!r%@4iI$_gN|7RNcgT3t5GpNhZt0p6r+@W?>g#w%Ka%9Cf@Lbw?$@#(=?lhq;T*lPE^)G8-Pm+l z;wh3Dofn;w9v%_poh~=yGv8Gm*+-eO>S(a>I(XKMQWHukizb%O#E=(t(PYY~XC93| zMJ0e<8Anoc7N98b6t!zrhKX&0_YKh&36vz%6e~KEb73~X|b!FseC09Gs zVOb&ayUNJxl@aty(Jr+&D}5P&%eC{GL zkr$0OxxP2QOiB^3_Nd=ekv~dXPXAlnz(zp6 z75bzy^j_EweN;&i@hhG}3?VwmOh~haaS!r`WdcPZh_Z3!002@Tr1n%pJB?5FpHngM z67mOkRHr{X7!8ijLu;DuuS@220vr|D(*t$M>Ap@vK3LzRd8BLT_LgGmazjFw^O-2mHWTsKzxt%=os&sc2-b=U~XVP5*PpGNz}|BwfvHvyjG_@A8qYMN0=btENLtKQCR(w5cy`mv8_%CUp~XJP?HC>Ry7yCo=j}zlf4#huh|tVs?o=diE%n|?H9)C|Z+OXyVmaFBIBhs3pX-xg z)HA8uf5=@$4iy4B9(INid&b^zgor)UALqCqPqgH5gV`goV@}#1GVKo)?UVRS)!j$` z!@}tiHDa_@->V_sZyDlo*-_eln7aKwN}Iz~ZQef;qX5Rn35SwcZ;W6)4WoTz#cwd> zD6#5W_I(74GsHQlLC_=@w?lj_<*wB<8s=W8RU{kyUvBE$ST_^p-YSYj46Djrie*i? zQLu3UB64C8BuQ`Wmt%WiYshznssRh=%ZT2k6VO4+6|gf^0XmH3eVXWafwY<4uqYz? zW(Ots%8Ud@QZ<9ZDH^h`EKlk2co7EvBn>BbgR@Q6l;YD9y4$WP_h4PIW{@Y;h&1oC zL(N#n4SuVJQBotl-~B~?-;y}FFxnqTEt+2!^{3Bi4W+GgDgJxXMfjhW_Tj&`HT06l zUi_9jfooj}#0pJmd^fW~L^LC=FqR52N;^rVp_Ydm$DMc6XqJ zcaDT4L^L8*HTLy;PsAJ2d9ebDn4|Y})*nVLwi2k{!;M6Mda-0KCKnCr9|2^d_9cY} zsV4eJZJUJu9MPiG6ZD>XiWa`8VJdo56fG!p>7n5nqE3a5iwNz|@ni@i^skel-y;YP zvx&lV$5JO_Ax7Xn7bt&%oKg+4JO$|@^~!!R5|gy^T^quBC}mz7+`-aiQlwgck)0TZu%O%} z7ToUP6=ktLUI~FBVsCo^apiLMRlr*Ucb!{A^*=zB*fW|E7OR$dh*sJO8s_DAiueY) z0;;L2L?8+Bln%(0@K<6FE+a=kH7cO7u7Eh{=edKL!^usMKMISJ#a}juNJ%9(By|xl zIBfUG1u4B?gCXo9h$+o^A{zKGaU*=?1-G@Ni^RJJ@2C-!Dy{?xf{KuDIZiJ4t5BnX8PaJ?nhY-svHUXJ}o=f(A@_ zn(Yu*bx@MNfKWl27cKbg`3&N+EaJQgEtsT*@Sh{J=dZOB-$U!+FICjT<;aSp_Rp<| zE1F##sgk5r8e$m?FcAc1tWHhyG%7xFOHp>jhP^0HWv_6(#I{j^RJw zzL#30MWhF!H;yG4`iZ%gD%mkABw2K% z?Jm(7a<*k88V@Y&>N1f?0NaPq34!=i^{?AdV}}lVoyJIe5DrE?9e@Z(Dzp5%Cc}11 zC}MvE-49BtN}@=!BtD^u^HKCEnR@9+YB55$U5F~r6m*d)3Te13ShHre*ex>_o3#IS zZq2lH%a#laty_nU;bJ_ZwaFLkt%5)060jNS2sosNk*n-BTFGsf)ngyMlE$G}Z?V!T zKpCW1a%}8K9LTHuJ=36L{BpmY83RM)&1t$LaaC+yJD} z90DB33Fq+UpIUyz{4j$(+FNKiOhTR>u$yTt#d0a6rg0h; zlX;jy{MK$yHDccx=hPI4kmEaF)1N>O_Fim=*)j-zAWg^xaLRD?P{ZC&Z>oe@^{%7^e1V7K{eSFen!D2%w-UVEt8LYf58;v_%0=ZL1Y zI56K{?4Qpz+=2j1rfj9w5uMP?PlY{|Iu!8efK^{q8{abaq!IF^*^v4v!@R0?O!Mtk zk5e^7XD0cnLY$<#B;kDGz9e*WaWX(HUZo2sk((TIbVO4TxQd8cMzk*ZI6YNFlU)%p zLvdlQsLCq3kE!XyhP(+M%1~pys~)HR*ic~ev+8kbHqpzH{8U7rFH2bwQ4T30>XS za-)|f`Kcm0lME&P?8mk?KiW@{hm?J$1w~=-FWfS+*g!iG23hjXDE9jVdK zQntH=jBa!x$3*r`J$mDKjTje z4)iknPMQb|+2#5Rgq1tQ-qI2}JCxTO%y6%#aBGs^rKbvaqAOgq+S3bFN*%EMj8u=- zB0wwH^e_0Yit6I*MyfQCm|LrySRq<^R{dEIS>T&Kgguji`w?K<$9$fur_xUtP3_WUPJKzKtBp zIkb(IkLA1jfgz<5>Y;vYW33tIuARP$68kF0aa&B6I#zND)q0c%d=W0wv=;tfp+tW5bfn z)IN7#CV91%szfPhZDq&5qaUE)Q!g1`ZD-AX-ra287ZhlU%U{!Xa6>j_)fz@t3TZ~kUo?zn%6sTPrNOTl!EKGC+gMa@LSu6}B{=5(te_j;) z`=?>SO^S4 z;-oJPxgoyKg*c_O@^DpI#T~SzBH%q-g)V)^07yfI;JXY?^nDH_9DX$7P1M4U^g{cA zu7BV#y*Mo*vA>+UIj}xNXsp&*Bf*W{b(Wxby`9~<0irB?23?xsB z6~0gOTWFGv?`DYG1z@rUG9nXQ3E?qD0fpx z>{1==tzFoI6NJN!FgbAvf@!H% zUW^<#T@X3&x-$Twhm-!+&?m^U+|I^5ONFCT2ofON&?lTyA&92LI(p|q`Vxm7^vnT8 zG7*!sK$qywQH)Go3-|3B>^=GpB1zVSP0^a&o_rifBU{NE1|6v7Qz}{$w^2<7cl5gt zE1nq@!{D`y&>hDL`OyZ@2cPtX z5RJ9Gq}msJvL&3FgWYSGDG)B2?fYhzJt^-^qLKd@8Cncf z3$0(2f#?q;=_HZLJya|o9`Hpg5)G$VjpkH*(uJ}9+#EettOSz8-S>e;7KR+(QU429 zNHAkxjjdc1)LTf8y>Eo&v#iVMUuLWJBShT%CZ4pU9Xh2rO@f7Da3@cjY;Nsxpt z>8miCHkzru)#)PGrS`ZeUBHRqXrzi5YiP7G2Co$&98QVs$cYno*b|#5F4@{`AAcnd zRu@Byi2HuAAb<=R0(H65h(qIbN$ObirMu0-RJ6jM+E`Ieg>Zx2T0+f`dQG{#m9l|; zGpX}l>Nn^`elLTvBY(zON-tZ)$a(jI@he@(y-d-|ekM{N_c15-Pb3J|%y33kCk_kZ zE{>tePo+O)D-B-JbDQ}o^Na+@?LIt+HgBa~?pR7H?!;&cRHxL|A}dItO?2FZWak&K zFWyEsE53)KvZB@0tL31L%_~pN6oUyWcYq=$ZirBLD}tHrqkmB1j5kt(MUwzG zi-@nbj}aqk$oh@f_$QuNY1NaI%NTL+chMWw63G}(=*|$|L%~|uB>gxy2r&6Hnar^F z8x0z53UUJ)(qs!OwfBpbyOlC#*OrPe+8~WlUu0TumlmIi{lhqNA>E|JRJBKkK!2u} zM3#1IGC|gc6?veBLrJ8D!zG|wjBXssEu0G3kl+Of}%r|6d&O z+tKob=rS9Fa%sORLGAJmxx~}#tANLkFz6PFnFpN*RbzA>LN!9I-#yL)(}3YS$m4Uq z9-l{cZlm#;)e!rZVr*Wb)}IF~#B29h ztP=d&D$l}QNH!L|@NXx*aYZEdP&TdT#ZFYEHkY|wJu%Ue4~4Lx>$}!33cren0^$PI zh%Q5*5hr`3s(O;*iS?#os!+>;vd1U;aW3``g)BoBeemvAkVZMqh~f|aeG6IT9KM{a z1Tbwu1V*zO%ftK-o!Ol5%IOoy7K4`0OT(DRa(Goxz18VQ7(}_iuRkM+6v#00FtL9eHG;%W(qyxs zmL~A~Q6w-GJ8BM1B$I(I#TU?i#m2q1E%5QU2Z~{r)7G(u-iedvM2C#|BM2ZZxibIL zPsJ{?{@7BMx307dM>m(c0m|pz4!19t2`?Tk(d=8{99!SjtU}QK4wSH0hb|(@GH+8n~0-j zXh*W#?iCKq17if^n`c`hO^z!k0B7L5q{t=r{TK>SZ*Dm{Uvb^rsZgT>Kpfxsuk?;_ zM8?xrf^RC&OYzh@AzR~*;FER~DlOOHhG*KO72LtIZ~RY0B+A2i%4$Sgq!^PFBhFBA zV!sUUiJjkP`@xt?q)#+z>^VMVf16yATfT$;%BgK8$_nF!q-+hn$0dgWodi`RETIjw z1QC0~m*nkei!p>3bEL9ws-9K(bTW@(8!}XE_-MUT_I=dyf;(z%Y!1B#Z^@daXvnT* zv}LIXbh&9?CU6p-TL|Z-LcbMlhXN;OSr!N!UkLp79Bta=f-kuIQHIBd!^orQFpBT9 z!K`|Qvm0pC5{@4c_;cN!r z*wD2XT8CGOnatag=qTOjgGKd$0^*m`lYrF}%GKU42=3VWC_;i1ET8tF^>qbTRR9nN z^>isiAhta>BxYI83-cGU>K^Y0>d>;BsYtq$o70x%(1Fpi#Go2us9TGFDlK#VHza)IBX~O z{1iv}}XWz1bP?_tsMPYu2a$J2QLp`laF_feCgarPm^DXJX6aT1)c z&aoYKAHBT%g75--FHiDAMjULS?Js1l&bn&bCM@DR8NdY_NiJv-bRA}5=TA5@<#zok z*TjS^3g09rc(u3ClteFavQgy_UV&J$tp$<9#JVOQL4FWIYn=O$S_4x18z>1}XV^?Z z8rL}MiK@%~nQ@#_Vh^V@T1jWQKr>T_jr5)i(j!CzEdfeQ=v1nq3}IvOSDvnvajumJ z2P?~c?K`zc2*mh&NooaZV#SRbQ8&in8`^H|WY){6XPsZMB4ejz`>lRg3 zbLi1j=s_IZ{k-&J->asb(ICr{2bV<)a`#s9duK%OA{-es- z<0`*JQ&;6dC040_$*zAXS^w+!GZeiCVoY5wOzEkA3A=Cj)qBuW|7&mPrDODK*n*`!T@~IeN*x!tNCIiy*G=@w z$e+jlKlL@L{uO#hbz$2&)vCKbb&_zb)$hA0IqBCZApmNfrMijsv);R?jJ%;&?8x(# zd$HN%6S0G@7u^z&P7kyfzgLOXXdDi+IPInPBcC8&uK=n9clb8U zafmLLiT7FXq5zno---w-_o6#JFGUKW_o_m#G&6W>a~htR4gP3oK?!OpMyIxi!+mB@Xf!*gCsb%Kwf z6F!gHTZua}=9&eZI9>}wkYad307)#xL9q@pL99ZvEu^#k41btvc*06gjql;jN{qhhFg_sO<}EY}>10Xl zo}hUWi#(&z916ia$TEY3k{sNYns*>sB;|lQfWuKpzt`=n+CqsXReXAi99M0jMixCc z$&Xv|hl<>U_TT8e;(i)u+Z=A?qf^6K9;Ik&+J6HvdUFD7ZLuD`>48 zjm)Os3eo^@~|D$0s|`9p5@z%h2>8rY1g^$D9iW#fUSHJ@+{ zWT}Mm_S^tg4k{1YTUWzR)lVDdVOFlCcBX>ECO8hRAS*OKCRG)lNTWU1k6pY@VEGgn zuawb3OS@QL)a5D~moB)g?axSWLo6Q}(llh8cnwmEi=7kS`8p;{D;kLJJkBpT32h(F zAz&`!1WEi8e;$IPJ42@qur>`Xu0W`)KFJF)Ae-2BSv1cifZYmZH4?|0ut_;EmBRV7~ zmFNbqdS{31tu(y^@1Be>#S|m0+vA(A#@1xoZWwIr3)c^8ukr<(3h@@-!yPEt)JUn_ zQF~q8=)84w5D)EshYXaK0y)2S33L)p;cW_Z zQGWzydn;wbyKshg;T$hU7Nyfi8Eqq#a%|Lx!k@p5r5Yj@`c7}4xO|_E_CjNuG*FBL zc-HlXu&D?eBfbPPBVCU)c!`P0w-A>|gAZ@ei?~F^U+rC3ml;1+fotnHvSJxLeT2Ro zZ2BpkmoLi<0}kfzARrC5};vGBJa)$VrxR z>>@R;WDiqc5EYJL>hy*mP}$gWN~065z<>_$Kl3U-fxB<;0r@o~c11al<0_;hpd7_? z8Zk%)($jQmlbY&}5e(E+TN4q)W_H&Mj=& zVs|yAPZYQL-u*0X(P{Z~wVTjQPux^->biZMaq4aR?4Kr^X(Vqt)Ib}Ow$M9Ag^TY* z{g7@lgz7>t)q>tilBrL`QYo5n93BL~4mQrkJF{VG&%YQd#Gr)LL)!EIK3y_)3ka8X z(j{XwuBhQc&|&D}UHP=5UynKf(wh_+@8y4=6G><2HXNoIU_uKTS^cRGHxrbjIgN&0 zs%dRW(;6+7O3U~z?!_@&?eyxX$m{6>?D8KKfxL~*7BKhuzb}$yRvcZth9%%>oC`iT z3+s=ec1{vS9A1kry_KI%{?%?D#zg{e;-t4w(%}QLa7qnWB5b^tY4k?+CnGOFjl{8N zNk$Hm`lIhT)Q3gome@&?kA=IOAem};h^(<7g0ls{IuaN|q)!Mo zRcOS*BC(UFh)rdk&GaHa)vSWHnb?0)9Wl=^N%oa62bvRGtEr*w*9c$iX2go#K%}2L zBYVVb!g|GAPB8z|x!RAZ1`CY}01yZ{Ku3w@T_R--p00^84@zot>nHJPQ?^hkM$4P|2?nf} z$PDh&;umn~)a!^#r>C%+vW3ctWEJ!jcJuijQ@W)m5Bhv`dKV!DtSS-{!6X7!V+&X` zj511cvqEDi@bb))z!@31ziBJQ0-i<8tWbNk4_B5|;J!c+283n@D+3j1b23cvKs4Ct z(RwH41v8bJ)LBzpHtSeF+2C=xCU=_nhH5K1iyA+*Mb!yhtyxAwir?~8^ijw=oMtN# zva>k>vkvV>!N4ZZp9nUQViUf(7ziB>#WxMkqyS^+=fo-R?2pRTgM&{oPOq(_%Odfd zga5d}m4;@1>$d>Dg}8{^`P7QaRz~+LK!dAW0k)x6rS3(;kWE#>v_xPZoK z7bq&fr0T7R3KbCzxYGl4+XYPoQXoTc5~rilM$er{4f3HB_0V_2uGW`ph7d>GDin%i z(x?GhxYiA9h3H?jRd~}-6vYrKivDo$O9$-9B#k|?SKP2GfU-*Npu8=a0-ytPIDk^= zfKAL40NG=3)&=_zzOBTh{Dw05=8K&t--9frF}M}Yf9d=J+HCJG!~)ADc7>sw#q z+&Y3#&5G%|>bM{|4Wx11-a{h9kZC01X-Spw-nju);t?mM+({6ca}8;^^C73gR>gIbgaA2h z$2kHx5R?$Oa)AR22cV0sytQQSO11eEU zsph(}h5RYLlZX4@cUrLDAkV4*bp^Z_8uqmPL@C&lp1c%v0geEy&@`N}$s~uCJhaJZ z0uDY|7D4z{F&46*xUF^Ofn6H_+Hcn%_{1hYI*fsGC98n)=F4+5^1LQH#%$ zYVlMYJLw;HIX$aGqNYl+z(Zwce6oO#I12TneojHq&o3TgPZ{2a!7#3;Ge1O-Hp_{e z>B!uIqe$9u{0RjKkRv>K0h^FF=U@*ADzI!VMNX>_HJ#4sN<236E(4=zi3GnK8YWDY$8<)K3)a26T1~4fs%A!4x9foEGX! zi~sjWV=-z%?~E5ip?J|1EnTL z1Xlf3R~L3Mii({{YTV3M9gr8kA!P=ydsQ-XrTa_SE8QazJZW5su@Eftxv=0(PgUP- zM5%)*gWz3#=_~idBm5qv0TV*^b5g5@V=nJo|3` z_zElVRFUO*s%V(!*`jhh{V=7TeqO)F@Au#<;P>?QdrJMDbNrq%zh^ic2EYu4`5;j0 z@sx}WJc|IHEgHw3OS~gJ1@K=omL6kDM$=<>$vAoxmRu5e4z$l9vO|dMIRyV4BKx$L z-*Y*_!{=l?5Z#MD9UoG0GrqRLOoL+~zDrQVF)-s{E`=EYx7*+rgK2dU!srL{a7n3WbMK14 zA(YXfq6@ivKIkk2&{Q*z0JmwF~6-mc1i462;Uei~?~>?3_4_{aM$ z*ySqw!JxklZV&fC*mytFvVRxhcUAUHaHFz67DO6QCsg*ABQ2k|>=z@vB+|JHW){Mk zjPyPVbBxjrQxCflpt%aqF=+QCc#pt-CCoM$558yht@FGA|7|cIz+4WxSuhcp+hFd8 zNy0n@^CHX}FazN4W|+3JNr8OSM}F}Xu8WUR&xQCdME#V&6rygZj?UK2=dGL3ffAHw zN%2^eCHhz~#-#!=4Y|a|wOUYqrDn0UO{x0=45MdEJrmwFofS9p#gni!(FE&oDt zYRJFD(|@67Kt7oT9R6nN3jVPa`{w*9^k~YT?&*hQCi5rJXVTA)lt|&HeZyp#LYVjD z^GMyVj8iqdYzl^pd7l2WJ^inxxC+az@N5Iw{V)&YUq-&}K^Q7-d_Dx1heeS+ic;+3 zo#8puYp&-9`SU!F<H=A3?yjvZTVAk z4jlb!U4z2g7*pN_=>YVC5Ath0AH(!7_k2oYh|#H^MMr&m;6w^oc3;&sGy0yVfQeL} z>*Fo=S&^4&D9;QqyTmWa{^vqBBJh&*$w-{eYiTrHjslPJ`L{R)m>?c@*X;m=|G=!L;=o zZu1A`^vZiI!D}jAg7~8Ec6aE385kRwfEj7=`G4eg!@MGUH^O zeJka?sCD{#@9+G%=luSkb1with5qmS6zBi5^>sX!((UlB-IsxH=q!5Lga0YA>fZ5U z9o%PQP47#C@MgWZm{P0epQJ$VO?`fbm#fABF2&xT!icwPjp4}1GtNBeyMFHjX-h|} zP1-#6hFq>PMS1o{jO6Xz?4!a@ok3S?_yulw&Mx{$h*c1YEjU$BEC+ zZN+y!xTW|&TJtY8X4z}V{^4h(IsGuM-`7O>k{;rEh`q#+uT2kgJ?#6MV-$vRW-`L< z2zoh+?TTNS}Kt1C%4~{ft{gIl(_n$1C+HJRkK{<@qiCVT}7RWH3${ zga0CjkMa-y&i{|%e@2hP$1@(1d4Gtn=p=kDCYoe>?@#6r3sw@hKPv9iXg$$_$%GtR ziGO+$LI~bP+5FjX=U@Ue$!V8?Qn zD}315#%%}Hoa-=?4`vJhT0b-FyOZBW{c~HX2^c={jB7=iqzDtz%I*%#tA14mGT#NHK1--PN16L?LnLYTWCW@`V%sf8Rh{``A|8CW-i`pshUGq7*wf3wNYqWb?<@`dKh zywhU7o0RvO{37>{P5w~oF?m026O>i%w=*fnI5p#c- z|6d-_|8?fQ1k09u4=FF{Rjya@lB>LpSmS!lca>|8UgvrpwcNl3ti#%M)U%bhupgzK zIqKfKWvEDDEyhr+vZM**dXQcY>4bfg>g27KILhbBC%=1s&V_nYu_i?Rt%h5qk6 z6`oe=EqJrVmT427Y+%YC_U;n<97^%FFaNf2G}ZEZA?unfp|G%FPOj%Jmz>1om@aPEZfUXJ0U zeD~6-J-VHeqjczy8nYs5+^Xb5dab@1IKTbe*==DSej}uNb<#}xY*l_k54?LhtXKg&|&8S}1mR`|uRhv|`DaW#o>UEveJNjjP ztOKgu8B?_Z?eOzWjz6VpwJtb=qBE#IgJyrg^vV>p?(lQe?Z2Zt{grCi*`#~@-A+C3 z|Id1!Pv7SKpQX}P_lmi^sdhY{RlA-timmQ9DB9PmF=wF~cRu7gpoTp$$Ar^XS8LRy z^D3mcnxb_21CAXXRi$=_>oVw7YMPUr9bE{Gw-!9%L1Vu8o+qwuoKs@z#sk$$`x}jF z#(7iS_>#KuId$V}>V`ux9b1aJUH|Uo9d+Xk^{`w$ELJzdPIcpT8DQA?B}#_5CDo88 z%5@2os>zS`x9Y}c)s1Uv+~29xjnAlAXFVmUrmQ#f!ur;ImfA!~@{o_8%`>L%YV{}s zA#%nV?tWkQ1#YNgdOBQ5<#k1s-&Lm);IT8JhXRFapYLIY0&nv4fLgv#lE;M$#n3|P zz{3!6Jr+ow$t0s*D(7pufMXt3cH6f4_?vn%pw+Z>Q%wbLs~Jn{nLv$d@W$1wRjlU& zQT2(WnzJH~c|<=SNIF_|+_C7k)soxhIzX}2vOAi`6}NWebVMDPaW!ZLRI@jxUT)OO zftVU$w6%bxJ{eQ3-T)7imQqL$8R4!B6jv)&OuZ7&n}HU+O<~`pd5foy17&K}y06XP zE2_3etyvLW5R97JOryM5?YLv+x@cUn>Py{J1;LO`2Qzsr4Zf*bgXOCBwyK3Q`W3Zd z#dT}&q0R+wFo}BI8LU$aaCg&+sx2aOJIiZlQteDC$0XaCJZ}&x+}(po^g*`C*nBhT-*0@HMq>1@wFn zj#-U)wfOyrUJkyh+P$@^*@k1mLcJN(>d-1wX|8vIF*W3BQr`*a{oqX|eT`D1kGMYK z`iSe(;PNIcnofj%(~+Q^_>=zIWe@2GpNaGRFC3ME%(p zXb{WS=nLJ^{hj^ zsSsBBMNFlJ(sGVvsvsIyMbRh&J<8AcTV?r{2cDQ-34KMchu&qz7T1rNu`7)DV|8N! z8=T3T?OZ6UnBgnh8*X%X!!_nQR#1MI`QRu%jq&I+OR44Z`|8F^sz3Bs>c+3p)Rv-d zzXZI?wc#ADe>5I-+&bju9bFS@vkZa!XyIgBJZyZ;1G@F9~k6Bg1 zvm*Ja-NTOG(i7n?sUOGGkE41z{3_Al8ezci)bnBdb~vWyJ@K>U+|V20+Ox|Ts#WK} zkK+zMu9lrriuG<-tD$HLe^N+&d7h=eQLOr-S|5ZzjT;E)W11X$0#vu0RhOLs_7M4j zPDfJe6DhUk`IhSSd{v#`Th9zW;7CWx)XPn}I&yC8akY+IvFheXMoot!x;yf1HEJf+ zf{D3A?yGh?#TTTu6m>i7($nv$Ux?K61uB|*ZXbVM%dIU%-R5(_NLzkV|GiTEB+gY# zRoK_mcarMI_tam+RG%4AuSOkdm#vCiFPjyOBKGA?n$6*_mi3z3riSU<|U z;Dty?eTJ(a=$%M8v#!+p%>Kt$VR$`^FGn$>+Hs*+y`E967rwxFDXOAW{kHaBh(OB- zO(!lWN2k};r59e-trzapo9B)_st0l4gBR*Qq|7Tl zav`HmEL)FXNU9A_M9*Gmfk8F->3>!0g$ut2e+%{Ug}2~wpR5_00{iArJSI=rnbV2lUXUbHoi=uBlzO0U#PTd+U)*Vq(nWV z;K08RMMZPU&PKrHUx=y>0z)gT>Cm52r+D!G=p8VmhoXhh1F)-6k3@@A)}_^7HmSeT z>aY1VkI_c;ovY_cKNEeRekyX->c5w$zZq6)BYcZ;^Bf;4(;I!KMgIq@e_eftUT>-& z{}JtCdNtal5}``v4VNgdw^03qR&U4nEIFh6-Xs`NZ=(P)?jm|KI-y9R0&3q)t6~-Q z2J~(;ro8S#BvGGVZhthO52D3<#9aO%Wm4(msM3yt6nwesa1;b6w<(3roE=aNu3wgG z^{7ny3vTjxSb)+-$(&cqHPtP;s6ea9K%uS%{qADrDA2l@>+tz?jwfK5^MQyXR}kgL z56GEH9H)Gnl`9CSnP8>ZoqGA2?kTX=E5vQ@!!2*O*@O3q%GmgQ6 zPwL5nCQdA0r`YPvh)THQs@e5Oy%ABbhR7qeN~>$?CrQ;xf+ED|IWhSj;#sre_jSrJ z;+d7T=>--iD_P>%s|86sqSl*Cu+I$W9ccRnh5DetcI+3#^f9a5C%cgLrv(x1jm5P; zR;a_VkS>VbQ{$RM^^Te)XI;@zhc}jT_+w>`a4d<5HL|SlfiazpWppcDJ7VPwRj9jT zRrw+NVugHW^>H2@R|oD&ReO`$vw6n#P%NJiNK$b~SL%!08GRDVYXKs6oMPT+!0^SI z{B%p*NWW5hFFuxfA8bbI1s6#z3R-mOMXfePzrby<;bKI$Uo6zQi?1k${idwL(SGqE zto>!(d(qMZ7weE#A@>jU@WtBvI>s&v531DCMfh=1cyN=xH{pYb#IKZTx2Y~~RL@^* z(@RXuYu6~horD>p&@kj;Mpd{=)K8OyavUx$<8P|;*2S3Ky_h-M2gDq^7r(5&n-qKR zRFb^as?SB$hBHKjyQW%IB@HBsm#c27he>#UF`oDJNquthuBwKMCl`NF?IuEGYHyO8 zG(yX$tos`DDw4t!xz$6nN4#SjQ;^&Ge9G19ZKBERYWHG5J&K->gmK1nI9|w${tpT( z9DgjVbo?D*rQ`1it0I0btecO8wI6?ku=0Xxj(K zM0lNYZl_7?^b>iLi=3O}4UDu5PuuoBYKAUngIv=i@z?Zt{7eNVK~aI}ctp>|%hY#5 zdMO^#%ke_>ddjgB|8uo<@e_It(q^2~x40xSmFkV}LN4JUU!vTE{CIx*@iXl>ir-YF zV>Xc@@h)VKk)#eTmuP>YNp%KAL{}ll zby4D~8X?QPTc(>6XPQ@L<6=Pkt%i?~P*o$qh=9;m;PE)DwwD z9+XjkQ>bSX<*Y=jw?vt%R4Yn$_jOg9k!_P+Ol0&*f+Qko>-EH$2ik(RoA?qmA_~{X zi8@?GrC5h{B+uITlV^Pr$u?b@{HGR_J#W{Vysg^Z>`&Y&b3`^tU)Np9sJfex-Hq-| zCQ0^eJ&;Vj-`)t6e2S8k-NtP_No_u)1RjTzE&Aa^W|NO~^E`AcFspWV8Be>Xdi5>6 z`p*3WHNgE=QWGx=^=`5pjVx9@Dy6id!R>`sath71b4~voO4p(mIh((M7WajY zmDDd$=9J2&in*v|AeIL!Q}ud>HtpULHHOjcGu@>W=V|VMK1%(8cBF5j@v&VOqZN_+Z@VO+R*>1L=3-#z6X=xG|hA)MM%Mgybx`lZ;HIC6EWy z5sy1c$MsygMK7e!Jo*wS9(^Tk>5X(uZ>K$ahf#LZFXsdMPP*K&o&JJ8N|RdA#+#Ag zEThcFXr@?o zUoOrwaGZ~1#xoye;5cK;E-tR8G9|RN^=#&Y>{?{%!Y;>U^0Uivy_#v!>zOllZGytC z?Tn@OGn_?b3iV;;j8zAja>st=3)*p6YyV|SCoaFsD#zsvV#r3@uMrjDc#;2A$o0Ba zWqFjvcC3Y6vSqp6y$-lkOu3XtdH%tojZ0f9<|12A(X;>QA5}?8Kn3iGvbnC~D3Zj4 zJ|U$UGvbOUSIFW%pkkJ#lq%*43TI}yB0u|zr&}u7c8_sms)TvC{$AOZvb0B)tCTC^ zDJ0J>S5>N#`Dj)WrBxyGD13(+P&ZvtYcocQ*`{3Ot~j$SRCUZl+RMl>mBN7}t(dDs zl`vAFtMI2P2DAUMmgi+uIq6l@m2t)FI+b);9*mSH$0=>}fJau@|4@aN()6xk&aS^x zoQlL%35SNv7rOqbidxJpq#pjG;{QBag0?F_FH!|{Rb~EG1uR!R>!_!9G4w{TT*dxY z!9ka*qFvmjIol{vQQJO4cpCWuC-!fJ9!662t%z(Kyx@4A7SJ_XkNQjlo+LNxP z|E9{37^6fOk&*vaT1Vkg6}@A$`6Xr(`l*V?88O5-Rm`;M?-cT{r&kjKg+|*pIFW>} zum4XKhu7Ag%1XR6+V zK6w-xj{d@h4C6*2#9X!XiLw49v(xGZtGeN0CTN6(#w4X3PrmJXDDz^}N+f5=Jn1ji zaz0~raV|6q*}>^DMk?eg;<`(ZVq}jNsB)gics#$-6TsTyF3!psCk{pC6F}dztkzX- zVWoumh^q#j;&7Z^D1mT@aiiFVthp&8D-I#8HjZiEy%H|h@}vx0P6a%)q%A6Xi`g}D zI$V?gzfskAifLD4Wn5QXWvUomNqVlqn-;JPKGdr+)}C<{vIcAeElu$c->P0kVseE9 zTzCW3qVCWy?ulD%aNR|Hj5WvqJYLC}Ja&>)_c?(%STm62ocQzU!q>PyTC zn^rMiu*BfZhuL*NmHlItOYA>R&$z0?CL^lFQ-kNK6fb~9$JL!5sY)b|Rl;}Xml4^b zWAAe3{EGd-IbV2kh8b4obxQvoDg}3A+}X_0c7?=$pogBHAV?@03y?bTaH0JFXLXib z!=sPrTVi8PmH${}S!^&1nRz4JZ)BtzW-5{jz{9I(-YxVb&i^HOyDvuyC1gPvY&#B@ zM33@5Md`m5ms*QlpkZzJX=Rk)7V zV$CA|{IzI=x@mu#@uZ*VHa%kzJVjexj`ewtm!MZ3RfcX>(nCCrW!3Ryk!Xtl%U!q7 z+!j}xOBJlZB~zf7%qt~I@9fPtB$TBC#e-) z)>#4ZROgf?D78W%@@Z9*Zxwmm3SD?Fjdn~BZZc*5Khq2*8W-uF_l$Yuc>(%qmX3!P z&6hg$iYrCUPop>u2)?VdPF!eM&uTw(JSSuvWl@HyUt_142NDJ zww(P-qF0s7kNH!?zGNKntgIAoL)>}%&s828V3th#YYd&@vdQ(bRl*rm-1Tyv;=v^q z6W%>mS)L*J5C>z<3{Y5fb|q#e$%(K~QmeRiUmi_43&R+3sEQUOS4=M@daNFiwupli zF`YS-By`L52s0xw$=4)3ZLYi4>pYv03E2n_hKsNn9Ze4K+EG%jybH*;2qo``d&wKr zCtaUnoJMBU1WRCxD~T169HL|~(f+*hoCj{`JcCeLuU^lmi2)0z%Nj&j5#I2LxNW#0 zb}0s1iFx5faEIa^>Uau)1NLf!O;B;=XO({fX##WSxdE}bYZk`h`YNW+*w!tC^5FbB zmUmZYTolI?W9uwWlEg*0NkBVa={s^@+z{_ia8K4FX3z-t#7%iT@SdZU0Nf_s#!uI%e^^%c011=YO6s0ZBciT5%sQ$*&bYS;Q6#5) zR}qERWzZ#kDr7yyj8V*Wy{i(lD#WA+#~4D1W&cc0igrfxS}75q2ZvtAQzBef-Ba~^H?6Da+__}nTp0;ht*qVkb#%*vTnaII5=r{s zrqoz1SS#FyJFgP#Bxw=pgqR=NL!wgVDlWMX$D^zSEk&>6tXno?67;3*m=cX{bGVm&sa zC$SomSG)*`GL#x(5q^MnDc%l7afz}KDYugLZRRMpREb}ZbWKt#;ZBsaAc^zNTdr7C zJ`{;_gU4rN+s=8Pvr*W^%4o&;-tW`xciWQ26WEBY zakMW5Mu?rszfc&F*p{S^GKb=j_=R_@!PUYV#QADgEIvUqqIgNH`>_u4c0ppgXty}! z)ZdDG%fOR&sa21u`OPC5C$nKpNsmO!B&n!$h2RZuj(AFh^_QU2^>7a)NXXVxG+($L zP%Yx^+0;nlF1lApJG9?Z%L{*Yed^P(5Z*uXy-3S#WZK3X_XrjyJe3*B)|(^=Es9z7 zXbfJPjlwm?i}M~wQuQkI;wqjw_Q$GCd}F;UPI@DJU}kKUi(Ms1rZ6uTWQ=qpoH598 zg78LW8pSeX(@yBeZ(t43JR)O!Hd`cR$BU_};wh5Co~Kjv;y?iJREaKGBoZ=a9hxaA zRWZ6LTdHe_?9t;ZK9I?$Ssn?q+Qn%xqvyBmY?9F!ybuX0Rugw*9K;$( zXz}F|y5I3IF1FwNOS)dlAHjI=AmTI2nV0yja-LX6e-GDHt~PiY;-j7@vX8RS<(NZ! zJY!cg+mvlQZ7<)*=UyN?|Jef$pq;Z+j>E}Dj(ObqO0Y|U3%w7k(8ay zVlgz)N!jYMV*H29SGJ}}s}R|GNX11D$uY1Y)|%I&2rQ5Yf(=`)5BKBv3HG!|S!_Z$ zE~yur37LIY)rP}9A1Fp_imycA#7bdo8;l|TZ!kEs`_7> z{l8%5j~>sQ*^8GXsr#oZ!2h4kUNWh(72qw1J;Fsf3W^gwYkmqt2}mEhBG+qEq~iv= z!I&}#!tt3$#;^TXliwHl^+G@Y|7oa#|Nr)XWch!?`Rna~-+ZY9*fKxS1-v>>VAkKV2&4m_Tmw!6U)%uv zp*OaHaM;)d3c|)dkO&)}@6^UjIAy9yZSZU9-k#CMWW;kqWmnYt(}sXi6f;g#bHJF3 z*(a(sV4TDPC#pSQ^j_pX7ciy;I|9ba#i|q488E8j^zI56J#pG~2aNeR^*sS&Tkd-U zMlKP0I~y?i62@zT0b?x@DqaoT_FgjHZVef0h1$zsJ*qBpWz}rR@D>|h=W@tsC@y<@ zDP)Yw?NP|6_?XA*JPsKhA4_?iCm~}-@HAxXe~fxZ*f^4VGi4}a}0V( z#OoXn8=a+@3e^=hW=oBK*owsFDx+_&M-1S#{tL!XRp9M`3&wbr@q^(D##~jXd^&1O z)au5$sIgmHE0D`R{IjE|G5B<-xVPZ;X1!smi2|db!SnWbfst)6-ev`j#%t9vW41B# z`N5bmbj9=bWXxE-qF-B#8R4eT-Gi91)uitp$Bfgaz}rI?jqw)GYjYQkOS#Or>PQ;vxd@L>8e_Ng+xtml z_Bo??>C)}(JI31wmyFrxjq=l!vHL=@(VI3J?zi0SPaB6_`tDHLNIVF<9nKg-FS=f9 z%^1rsrtVH=jO~Z|?V`&@!6VmeotKTCN9CsKx@`16(w`rN`U{bHHFDXg_yz0#?tOBO zKkCfCW!uokuMOPpy+3$=^L};Lip}2_`}K+YGu&mn)@&nc{MNR)Yi6x^Yr{&r`y#XT zr;UE6VVydE>)X8-)(AMpZ!ce1<;um?=>;>oW?NkCT-bx=;cDu_%mvGco;rW~8{hoa z?|$bG{_u~!yT+-l@jIgz!cL+8&RZ2`wK;3fnK`|v7yM?x>o+XdH@`8#2-;MAMll+>(u#s{TGfk6~C9C zXw)*kZC+V>&LM5z`n_S=##viWP zh06G&4ciD9e^L;hD;a-c?TO=>qNk4CM&Q)>C!K0j?Wnb~p(olaHiRADJ%~3XPTaDx z@BK|8Y+fk3P@r$$$A*VO5|iR8|eCWwoJ>-4E5N^ZU&*weNqgBDz5e zY<#aY&z(o^-ExwmoZhsq+&w|G`**=0Es;Hn~AGGQNN8{yb9op-gRF z2KwQjwK9-L8Gm-{{tWGZ)F_=~^qRvk{Wdei3bnf*nFb1RPxRoi)Nt~wC>AAhx*hrx=yJermJd91EH zv<=Jn%MP{VjLX{pvf11**Q`-bgWYWBf{AobBfp>2GXA=iPt%X`SF=wfDvtA4lU$iT zYX4^4*;i!x;O^gTSM64rK9ue6{nZ84rq7BPZ|{_)pV%p1s2ZsrtIj<&{Iu!wM2vqp zDruuQWpt{J zio}y67oc`C%}oSV?=rg7pmSDeJ$##lrTZFPhN#qn(0W-+7Fv_b=;5=aWuf)4yg_I! zE~8fsIoE{N&w>}AU3D3KYSg(Yv;kOf1nrv3=vO1o9ia`vlm^z_<}#>u<{3ArhSh>v zRI6$YW7}4H>QwDZ;~_PuI%#~vWzf%gDzss2atzu{modZ-UwEU?Mi^iP+AaRvp_+3J zDq+Zo8dKwHLQSfy*?xzpaUA5CM3@h>KQ>w!p z3XVwoX*H#~YE2)1!fJ}8$eJN}M(sYm<{u6&)=oW>y_LQ{njh)CH8awCMop_ldOuRe zGz&32r_LEQ7#ykHet{H-dCA>`w47BlYJ`^j38NXNFD+;J!pTv$e4i|dmU6c$E$7s% za$r{)ple#(8T}KiHZ|2mdw3$~zGJX6(lQ{;KHuI|DX)-L@%&T2#v!H}z`d(JX zJRjRbSwum0knks6#sWXpQY5q`RK|o~uegjwe$2-7eJW}!tC`D-msc)t6mAzD6dv)r zGQAaF7S61wBRFgxce0I-%t}$xq&T?VsfuVjdisj zPZaK!9hMc~p%%*LE4r(z&3T0=H~C6rAviA`HqrauCrlrIKypLnW6-AB!kl-pg?)9v z+)ZcNdE)L@uxm?=Jh39Zwg_!Q^x{u~Y^qX^sK=HXC|Y`ALu$7fVTsx|BF2_VWYgKA zY-x5RJDMHKj$_eFGSrS*3_2n--ofl<(B(Hh#lcepwj@>cq`YRGd1G)Q(gg;RM6D<}Y}RLvOpSPfG9C6{rm#w)AyTsTqNPoB7^WRO#pkY=Y!Xr_-m?Su); zNR`7`Dpd~J98&caWtnte@? zk!MYd^@N>=rr+HwwP6|#Q2VRO@H?wbnNHZ*>F#%rxK9G%@I<&e(h!+J#yv73lBTK|5Ah!en9hpwwWqo;-v6kK zG)DOw$|!Q?Rl3MI>6~?j%>vwTky&bvn^WeA+jR2SYUgHoT4Yo0tZ=TQhrg+e3Lfi~ z%B(Y6Q7x5O+LfYHzom?7DqEe*sln-&={C@64W55p88pw!tid@`b>i-nM$OJaY1B;X z8Cdb#%4nc}feha2JgFL&%2rw(QTaPAquFUz^vk;1srIw3Z+MJWXGeK&Rrk{k`LWxb z{ZF5`yJhU0^FW&BoI*2w-&96BtNvEV$T|DV_bX?g9C_;KsnXg$hWTBW(c#SUjQ^yK zPG@y_UwODf(w%LmBq*KEG4mj~mp-HJUYmWv^nKf7bUBa8=bl{7CPi{xXDoCl+#8-v zkJsn-&1uv3d&Fz!ad}EwbUVkKi_Tfsq&aQQn4|7Zd&f3?Z&^mKbEW(k=Ka29^f{Ny zx48U{Hu{}QlfG7_N38{XZn|I=gUve`Fa$&e_YGBuM|6 zKU(Eny1d2Z9}_vxLimVt)H&sxb`pHeA#>OqF-J|)_g|DT3N!v|#29lnJTXu)T(MtK zTG>$9UA@E8{={XBJ9p|D@=*nJ4F-oUWbE zo)9{|N5Es)?-RLzA9#!z=j0QTm72akvy55i_~k5<`=QI2a}KkJAGwTq=U!cFe$aWR z3-Xg(%TIEuI!)(4SH_al?_;C2?#xEJqNCBBXs%!( zwh#{|6G^{MDPxOz_5<4hdHxPSQojq3#qR@T>IXnT8HYd!uLDGsaSTLp9{@)g7_^TK zj>F~mvBNO|wm4oOgW&>fa>76{MhBEABLS3QV?a4J29Pb50#(=!P=l2KwO9mDht31_ z%4h}}$t!^-loe=EMh>{Dj1J(MGCF}aWpn{Il+g{`R7MYQOBubuZDsTUBt`uI`Og4w zPZ@*2ePs**Br(GPxycAXk}(R9L5u;U2jc)4zy$Cz=??HogbKWZP=Qa8YXF}nkpNyL z4*))+j0NB|L;}1{dU<=LPo$ZBO~Ao$O!nN zGWLKkAu8a@hzj@$qH-mCY_1$;!fZDu%#n21$DgHfm<8_1^g?}+kA1n<+%#vbk?>)- zAd<}|jb5|Jr#wd3>`wKjN;5@1SI8(Z`;&vok)t>fddRmJ_ZHgEOwJ8PIP*<2emx^RJQ*91jS~DdsX3hR!fBC^v>Dn3D z5;mAwb23>ZT9q}|^IF|tE?bjQ*G%@?LtWHmG?**afaEx>X0w^#`7xZGd6=3KTD#e5 zc0*&=(`pVSD=sahW`v%D0VB|pY(n6~ywEz#oH-8-70sE;Lg^&K-hzU*c9?VdWUkX( zlbS9vZwI_UfjdcjB+ctGH>IYVj66XNI^AV%n3C}Jn0wY@@Fclfzj3G9TvOzlz2;KT zacS$$vMi?8>@iPROo?UmnETdx{iaa+%wDq#7L`SfUUS|vV~^+^|9EP$IdOgAL0|W_ zwCOkd%zoOGM~yyn!82=*>RtbEaxpdEoV~vGAR{}@esjQ_yR>oXq~7u3e0MItzZcq> zPg}H?>}6Z(tIckS9RudVrDGX;!0e|Vzp5RBU<1`7m4oKNB~w;8$N(EuVwMAFj1iK$ zVRMnODpJkqp0?ArEpuAB44M6@Qt2|p6D!b^8p{|om+S!=%t(V_)1U5?2E#bnH5%07 zmd$1RkOs5TV8rZ5k4S?Np3saq*z^sXE4JCbEAt%1FOM*lddnCwkIcjHfl$Zr)ss*g zEo0O?HVYy}z9x@x7K{!VqeUCz=4#W_^@Z#EFU~zG5=SwCX0olDH1`okTgaF)w=VUx zPF>$>KYsSC(G3nS&BaSwms*?s*ZLo%yYo4K1f@l5$=bB`t%SSF-RmB87x`{l#*EpK z>SRTDm|4cg!_1-6a!j;nt|jMXo{Q#!xx(Y_*v5i+YF4|a>lbfj%>Zqd%-p3lX|rT5 znrYT@*ESYShn02j*KgiR3rCjCCG(h?doE+iEX}kEZN*$Rhj{3H%UCvZspC{msH^6R zISuuJHdf62l$owh?_BlXs_+@O6SKmnY-8J8y0v_3E%sp#>->v;dVHWLRUj{LghV3Dmm* z8d0YiAnLRNbp#lIsFMSTIvoH}rwbtJ^Z+PRFK~^J0<>X4zzu8#AnFVP=)@3!P7DKg z2r0l_LJC0C83Twq<5pI@@{E;p4|sOG4SL3(l@qBsYp3C`vBN3uWzJf+{OZ2esQUcGrGE0S8U+OJf2C68LLwyYxeN&QG;^OddUo_6!a1$uZq#-cS}pSV&) zdplq(SsPDpJ$>-BS?{ketv@?=ShiNIRjWTZ8XOPyBqx(wX}n(nqFAw(t=9Ui2yodd zu*4CrSk+RqN|$bG5af#0ER;2d7=nTzSFKZ_tXpeVPh(cjtk$f#`fLo^2Fuxp#_^S` ztKDuD>Ly3Qr%-Y3awgm%v@I+y%$(ycV-v%}7}+4Q#AawXc3JC=Q+D<{){JN2>E)(l zNosek9c$s~tS{v;c2LK@hUIGxnaiHFYpp=faB6S$*N@e&H*_|ZUg@|p+O*s<{!F*D z*|+wrRaSr=?OA@I9ANXO^g^Zft=+tHJyY`ud(s}%oBoAJcjZpykhDF-0*>fi5;YF2 zIri#9ddt82bfSK!x&PYegF>0=p*3kwHKuP(N{1s1rnMpKD+?Ki)|6e{u->@UXttET zxY4~J^~ctcwL*Ql%Q&+78drsO!fC)hv`TFpTZ^7KdqN-h7aKRF?$kQ5PN}Pk8Yfm~ z!**pp3+DDaKmcjmO1HUSzh;Au%oe{^H`dD-KM*p z<`|OcE)c2t-Cp+~l=`UQb&qi3ylPMDW52)Yux07R?nhZ)qc;5RL?bI_?cLs& zk#-j}EHtK@9M7yg)7(1JHr>AbY}VJtODuPF!xGFMxFPJW&YyP`xpOlAYIlWuk}+>Y zjSBaad&iUZt>|!I`bu^4L2K`WK53J6SG#v;bJI4e-MgM5UvG28wJmeog=24UA4Zm> zQG+|{-a;O?EFy0JcWpjQTas11Thk}3?sfOL`>!;MyY6wX z3Z;*L)z65$9+AkkA+&zZs3)QECPWUamxMOJ{<;+!$(wAn$Avb;xzi$}k;e_Xi<-Lg z4rvGhuGxE6)>}&3tId8VNyxB!)w6CNTsge5*;3s;C0&Qnls&rQ#E0B-LK$%nyHBCu z&xhdv{(J<86T#hESHe6QqaJgYHtpq4(#PDRRnrZ#SLUDFd2#wtvm9TKyJxOs^XHFp zH6&wB@d9I#F$n;Z?skcGbATf023*Qm1T1oI0FEpJM6DG7hqemfz19F+);hpkHvlHM z2{6GefPk|N5O8(?0?sbL^Y#E7#Xf*{I0OhdM*som7$D%B0OVJv0HMa=X_ruA0)!eb zfQ9%0LQNPT)D!@Ongl?oDFO&J6#${88X(kU0YXg!K&WX32sNz$p{5-m)Z_p{O$R`z z=>!NhUBCl2MxG8)!U4|_7fKsLo@{eNb5C>sGsDjudBsHyc}zRoeA3z>>NxCaf2QM^ zW3Oa@!=5qEn#XJR*@t%XGZncGpQVivPyaIm&kWLgQfv4@wI!!vXOzRdPIx9g$FxVNlb%%>b=ouKnPODrJLTDyHnW}? z&oXTg^^B)L+RS-oJp;`hBK28MsZi!UbDnW1D8QVjS||&idCx2qbYb3;6Uw4z!LtDc z?OgDzKGQ3-CC{R#pSALyWznrhan6~t4<*{vtnoVDaoQ?5GXUCWy1sQIX+^qC44RLK_KGu%AVeAGOSpPXu0XxVBx zVg%m4YR)2Cm z-8OV%?nbZd;5WR3*G{kJp6xrkakNR@ko4U2o_IU#ZF~57@67?R>rL;rJ(y4Wz5FEt z%h>W}?XWMujoI?CI{`i9ZM4 zqt*^CNgxlsV>c)GOVFcYtViBOE;I><*KvLQ=H|_x*rPZ7xq{qMZqyg$h}b@9J#8($)}8Bzz-vseoy|3K87CpIyK_Cc zUTOv)ByA&XZ(SX39c`O#8x?yiuqU9C&L!;itJ_z1uTEW`zCOc-Z?tWK7HCr1ZpfQX z+CE{Wyvr=2<*2WO_n)@o+Nju9g>7ET2iOWbXZP5>w&ZnZo8~S0u<@?8SK3zF*4ozF zj@rWQ1?}6<9z46?7AI6~XM@Axt>jAE!ktlHrOU|L=JowJM$~LK*bU49D{Qb&TW1r{ zT6s6U{_Ln2WV5~2wkR}`U)zK+wJxKTRBT0PIYg6&R>#qWy=kutt%J$6L*vC~&fc=O zgw|4W$)U@LhG@+^J2QnF)R{u z$hNB&1{~0iJ#vq|Z~KMT2TM%Y+(z9;pgrC?Dz-Ifr-d?X57|plFtZ_hA^&b|*gnbey%J7u*d9%G z$yg({5J$xdhwY_&-H2UqYgtJOG-8hzhRgb{uHEjHwxhOGjf$y`*aJctvq$YL6s&gC z&KtwHJ!P-L-W?cnYPa(H0ekr67&M)*$L+mmMtu)F#<)Fy-P<`w#t7!Rg>!@HjXpP3P=cyPKvjyNp?TuYDjNrRVJFYlGKE z+Lxupygg?R(&Cfs9POQJbM0$FT_C?-hRVCfdAsBKrqC97$Og1e;j!!^p)8^9J?QGE zabC7xbYqz_qkSl^;>YYFp{#K3a|-1%xHP+4D6960-Pt}W=b9__gizMt=N$U|x@D}| zM{UQ?HVbv#=F<||eU?1SZWUQ<*z5Kzl6=EstlQa}(>D{`yh-9^_vJqU+OYQ{hv>uS zaAx)d>iBtWY}uXHx~>gh+r7TeSik5pw(W5i@k^E=Nd-v+}_4(`Jwz0PP z_QUr4s|Atn48N}N*nb-Aj_h1Ky*Qp2^?e~~?AZs;>|QNuEp4rC&9!#6cH>w^eP4_k z`}Y3z89eX&jlCQDHyqD4Jlpkb-b3u8{|=w&8`NX``o$Ihrhm^rDzDrQn8T>=%P!;4 z9)2(K#|4PUZKYw)Y+V^gxY5i5pII;Jy9x=k#@Rarf zoE!E1s>^WrR_XI=F2nR~L-}>S3-NhTtN+0FAHFab|B*=RJNup|;ak@Jz(FvZTuH8% zPu5Rf*}GC9!cF@UzCD=v8^mE>vrvkBXIvfjiNXRvqOb_Gp!WcY!ZJXj zumZHPUjRrH)<Pb$~=+1HhSW0(h`302j3l;C*%gT+S{)qOb?xJq`d8g(HAO;TXUv zoB()&Q{ZKiD?Ki+7EIt3k}Cjn^#j;w7{D+K0IV?qV1jAjb&@Ojixz|&y~c$|0wAQf z>w<^rhtv5_%i8$`r=xmaZ#|fL(f@E#&X00>`oTsTiFV=z_a973j^2UE^a`y@ck2DF z$-M0JfKa-1mk!fP#Hd&DUsiPMWqvmd-r1?b!PjbPBDH8OcmIBkE;heM0NkeYyvlr~|*@0m>l1jdg>0kRlA|ldg&fQ$iimgL;@J zpeTdZA1_2IcO-*uwD|%s23| zKlYnJZ?HPJB2C9&*A`7l+(+T#k0KXA~N3Zb9Y`Ym2Ygm@Q=z-z` zXw?RQeQyF58V_LK+klP611QEWfYkQ@?0X-;z7GHddI(_OM*w0w2C(lF0P&mx$i(5F z7W+1VV)P%tzQX|QD*&+X1OS`TKoyD))Zm8zxKaUN-_-#2odvM(1_1kR23S!mfPJ?E z*mn-VzB_;$Xf=R+_W-x>N&xoV2i(Cc0eA6Az&&&hz`ln7?0Xo%zDEG;dlbOF#{lem z+|M7N;GM5O5h(qIieH$`pYi%vAFV%{l>_*B{~;IH;)1`kyZbWSUqTa?q4BZnA_|%P zg>g}bW&e_Y^Wm&;ddWW}lokK7{{#w5U-tJ&&s9RxK0QgmSNtdbL7}brSN*5Z$i-Lv zn~#njjR|$#zvj;|7i6>MAC=KI{Tu!zM&q^HhJWwjqR_Sobk*InBC}2Zs!+E5TmBpr z&Skg!+mF_Tw&UOS_dr9I+x|_V?D}{7Lr@Sal|tFWwkDvkFWzPC4w=I~L39sVVZhk) zH+Lr;Ut?zZ=<)Y&C=%hZ~oh`&-(tFJJe| zSe#b+k7nQ8z@W&y<40AMrC05;PKAeVLko5=z2zXQN#Isy3H1;E^H z0GsInu$f)}o9P2!!vKKI3<4~72*75B0hT!eU^AltHZumWj&Xp=PXO4=B!JCK0ocqm zfX&PR*vu?|&CCPX%p!ozECJZeGJwsj0NBhba2FK=u$grLo7n&!piuxevjt!?+W*n~!qE%n z{SE1S67Yt+sSP=sbp%^G4(?RnZMfTfccE*!Ys2UA7-n#{bH8)`-iDZ}H#m1^!{@OL zf3V}u{2j+VFLcBi4sOWlRY9K8VAA#J3C=@*J#klP6e z5z8nFp5Adhzu}8Ujnd%2?cv)y&!0R$dUy8j+}-)R3wJksF^-~x!?!2S35$1^?ylb3 z-~n-dydpSqd*b%?-GjS_ce|NrGHPUlqqiq-FWgzYvvg5dIwp>4DVt8X{oJ?Nb2N~fsFG1dvs!CKpcdqEO#cCNu(u&Z-Jf?+PWd}mZ>omkQd zG_0~CxD^}{S{Jj}hDJE-WEvAf>qh)(*2vCU^dN7Q-NBw;owkk8VbfV6m&?C9SIHx(m?w!Tjs-XKHRHinshQx7-Y{B$b&dzO^1Ua56J7k| z54|UX9nxkpD5MQB-3h*9fHEDN3hq9)AyzyU+{%A|Hyu0)?uO0CZshdRW@;g~f2;I4 ze!@brOP>ig-!_F=Gi+N+Z*PdzPX`NxGK+5Ipxh;E3FbPAgf@r#dZ687KO5Y--z~Ix zw!0>5#x=|Z`-H+*ronb7c!~Mom{1mx`6v_|#zJsGC`-Y`;06?Y$6|0*D9dQYF_f1) z#!~RG_Brr;W1W%Y`tS?-5rl@ZNvAOsPSHJw~fC$ z#^Y_s_qjX4fWrX(>QptN;j%)c}Dp3q**PK$K_+#E6yvfw3JRFy;UP zV+TNB>;wpmT>ycx8z3jZECBLEgY3Sib_ z0Jc01V89aqRyzq`s#5^gI0ImMa{$&g4`5OY04A~s5Ez#L0^>4(_OAe_{3?K+uK_6c zIzV9D06tF81U^B~1W?Rv;FAPR;1x1&;8SGYz^BQ)fme|v@EODxIuOo>!$)$)To7(8 znlD*-V&jREe4-LQl@M4FUZ@&=+QE-F8P(y%Dt^F4F01vi|4ulWxwrUc9;qXRsE4iKANj6_ys5O7*APHJQao zcsI45I!N`V2hus2!)SOfS$!#csY8aE2+QZp{17DHb%tlcT{8WNaJNivDm))v4zGsS z!aZlV3*nXg?N{X(auIsEdakCr^J{Xu6kgBYW;=iN@oiD{d`-6V*WQ2o>*9%*!v8_G zYD?j>CjarQiQF_io$dS$soMxQmyefEl>g>?Z+`2&H(!?{)6H;e`ENhI_?^cWy|OY4 z|GD{&KAHM%c%N?okHRP6eqq4g`OTyyFZ%Yw{)qWp?zxGM`Hq#2?T!KIY({d=ZFdYx zXEWlD6hsn{qR5bR_MYDi3(Kk_ovD%Yi^!;S%tmsN?#P&QY>2c+IwGBsuE?faX4W3@ zK3yqipPiBQ=xD)mf&a4iW9g60m8_K{O2JGYW+voueUYKaaAZ=Z&=(nqR7vBZ$aKVe(SI>~aq!~YMSr|GzL%_#is8siWUpZN zq9a~?Y2ssZAKUxbXz7$_-gu;fuN#V*94$pJu6IxWKV`iSaAMneCy0=^0!2uGxQL6m z2-HF?q(&0mLfv$WZXq?2Xf@rUCDg_f;+A8QN9OU|ygVE$WxTCPG|$wADYFxj$Wu%` z)mllEF{zM^GLb8Cg;dCkGEv5OgV$_DJC7-A*JPvJr|fDsc%+;CeV1;(?1ZXw&-Z=j zJKy=v|8vhh=Ys@qLCCgdn*?uZ(wZF6_B8panrEj89%_y>yA-?!V2>JFL35}nYD$`8 zO<9vCrhTBtnnDvSf%@xI3`DE9QZp!Oev=3kawZZ=niKqe3o2i8K*e#Q*`H#?0}+0fCogtzp_da5K|-Q(3IbSF*Ff=h@s3RdGj;wiDKd+LOY2ZLWg9J#g=o#*jDIrE_PWDVuMJ0PeeX%}2 zy6w?W^9tFyOQ{57_b>glTBXL_L`kaWN4G-rJ>{N@o}f0aO=!2YDQ#A}t>uVY$`fb4 zhi;cziSTV35z0MuwbVg`KXDS_qK9ssx`}{I0w`kBI<#H_>;U$Nt~BQf_iAfwfdIcY zsx81UH*QH6l$g?j@Gzy3hbfIbOljm{N(*Vl#dk;>)26ja)0W9+iCZo#>_GVXz7o|O z(QdI0om1!1d30W#Ul-Cvb@5gj6C&DOtwYC6JEjkaF{(|mTe_TXM|Z3%>n?N+owN6l z0%F>8Eysr0ESqP`?5WzK3 z{+Mza*OrwSdE?rqA~D?&(yHp}`ic^5Jg&{@3;GgLuyWNV`-u{LJ)zxY_mFylt&zlp zw#b%9l_qk;9=xdKJAq2!Y-L`Yo$JZ$>}Y zDZzR122mqYgQ6t04fcvv=rX#jZcn$V-_ob_S5%?6U8q0Rw{#&pTUuEcShuvt$RKHL zJ z?)2{V-l6`R(Q-u1YJI&)L}&FpMb3hWSS*BWYtV7ijVv;Bs(~z`VAo zJ=TV(unJnD7PVn&u~ltBw@y`6)t+e^S_R9pktRxrlXbCCs^BUb63<##J4i7l#>O`U z8%QoTPNHg%ke~!kwQ7jr*o{vRo=tv&aO~zM2+wYbU5Hh4sU{F&)18w25? z_>GJ9cQE>Fuv^?k`@aR0WtE1qoQ50`8gy7A)`Yb@eN5tT!Jgh4zVZ)S_GQytKBM09z4qV z6;I2uq6|}Vfjwdq+-4u=K76$0S3bRH|Cdm<2--#aR{$L$+C}>^I6vv$G=8M@$yRZI zXOG6?tp?~M(_OSb!$_jQD6TNjg^+kF{&fU6Of6v?*5xK0F2{7kU6{Ax!Za=mf${h{ zE}tWrkghlwZ=C>pR98fY!?AE(3cZa+pX%%J$K89M79}(+rMdjzzLJ&{#8lS#_3Qdg zeOjM^u5Up|RyRX3n&a06#x8ens5jHQ-)qyyTSvf9);%PK6WzXk-5fI~&0FS_IeG2) znsx9%Or9cy5haUA2Z(0Z2lW_LplSfUuc_jH%|Tks(_l({JZ9auB}X1n4C-O~C3wzJOH0zo*5I1W?xOwY5xK>X?zatG zw0{Y(#c} z%VaX>k~Bny`S~14TKI>Xmpi0++K@Hm3_Av=cm{FD5PgJ85LALY2Bne5Re)_%&a`hj zFqH<52KG=>lArr%t?kTEASnmXCq|M>hV9ARqdoCkS;>%ll>ZS_5Kpo-!}rCr)+NJU zyAE-hhfG{zx@QK~c0dy4hg3!lLrb5c@3*NU6n)2&l}EorEkw~*c~l||+MVu8YoA+; zY3;My%0%q`l>XI&P+yf`Nvy9%(mp(xzC0yDvTw8Rj40hVCGWg6=V1f zuueHY0;Otj2Y83U#Smb5qpn1=nwbrc8A$m=WQL^uUX5!M$$4MiOPf+?6-iDhYzeo3mY`mi1 zVwPRowN~dMkCVi-Fn|AYlK>aL)$~$LFWvOAB=p1niOVpbBTD-h?_KUtUN(5T8kXj9 z*NciUjZvryWRvciX8AqhUHDD=WuAatzCfDf`9qYYUA9Fz*yoGa9mC1t=m=-ejUA2S zg2I#Erv_2v55$Ztk6)hhhuv7Klp&c0s|(&Ew&_!T_o=Icc+dC}$^TF`etASdi%A?J z6(+jLebDd6?fP?A%U}n#2AY>1aE)s?J{%uUjpxR9$Jq(@WN@-fG36C{a;6jV@ZGLP z3VTg{Q^52GG?@iVdn2^-u#V#>+Y37jyb9$aQCKW0+Osf~O>BRrztMlypEp~H6fs%) zUHyUnC<@$awy98J5tFjN)^9b7W-ubAxT#?ZSW=e8Kys)!v@`6n*(qYw6gEfA8<_X9 z=56ygX&8)}f)?v^YI=RqfouMfnCaN0Hak^V(8f&aeoMa%DS41q2&u*UT`CkA1t`tD z`OFN1N}WKH{ipq``OsW6dx#J><@yW#ocY*XHhU@Agz31y++XQ;ncZfO*+()GCL(yu z2WCG-*#N3Q=z+Om4p4Z~RPFbg{pNx>NZCu8@{nIMhe*dwlft63oV3#rwP{LNuI`12 zyk%p64fzNMisp-uJjrOt>#gOhl>{pw2 z26qS5*Bvl6bab5?b;D2-rj~xH#^m6U)jK2}45;?o%wF>mOi|bek^`HA9_xYiPpIx> z7+>Oxe=1Hd=51>kHz6_jE77j<;wqOF8$`iMlFpr*cTXO~R{o5VprMHdrtG59_va)j zY_3~#i+@3SM$H%2;Pl>NRs5imG%JP<7h#VKOilPNKLKl^Q4l)n=bB!h=I4uxuviAh zl$jkmUaX5pQPO5^C^CJrcqSeUB+NA(1^#Vf%$hAj7mME^aNBGhYApU0X|QK@4k>+y zkH1TU$f5arL~EFXLoK81s_mzI7-q(IKT8?X3H!C6V{M){r$a1QTjF zTWYadVMGlxki}zR)z}EI!^1{^10FU4$iqeedDsXb4;umGVQ-r}+S|6k{F+wcw%7(z z1G|Iy!2&kIN`vLW${Cao~bCYP*R zyw{xa!`<4Ss$r7UhXA^{d%c-Sq ziPM0yi8?yAlr1M9C7My1gepjN%Z50JLc)P1Ns?0#xJjdI+ERqXBg@t&$gw5$336mf ze}WuaG9>51V#frSB{>%s#lSYvuEch=L%i&OcaR#xF42MDJtR*cFE+aZDQ5w-`F;|^ z_;5gyvIBYRVH3y=6iLqZKyF}nU~fR&ekCAqt#Qqb3W^UZtV*ledM3U}?+vim?A8sd z`g-lU=Z4SDj|ay~l-|KW&bnhgBAEvR#erjzc?f_ONM#kK<;p;X0xJV2162yF0-$mJ z^@^Op)bO6|XzY0G81_jD-sqzfif}%l9I8>FHwI+a6xXP6rUy@H{=5=q__~B za*mhbLF%AL4kHOs#aB!hh(2q=nRaeF_nhAQNB8UZF%W>IipG5|7L*N*Q+@s9M}^b^ zyEqsVFp^Pkk6W8|G|)anL-p&*;frB~&3Pka&)P9QKu`=U=p`87j&WQY^Fi6_LM=zG zpAR>NuZCM}N?XJxzG|OY8&<`TdWangP46t`7Y`Rpi)qA^e0bk=nW0|0Ig}pC4AEDZ z{7_-2(SAhp%hphHUU6XU869!m@Z8|+V%-zZ!N}pr_C#)?=-{0er^ER_)0{;C`y)cRKIDT1wLRi}ziaF=PeAy3 zq3P|@c)Wf+a$VeRjbATZciTL+pl#Ep9`Ru1V7qZBCi1zbKle_Nx^?{e#`Uf1B}y*= zFnOJ9bR1L2`?qdg)~?Hj%Y+oJSFc}PuTbyb$7EVU#ni6Xu|FgmRt{Hb{Gjh@$JjEW zC?hlnmaa!f)VER(-Af*r1*+3ja)Jo))-lu}aiyoRxrD`~Y zVRaMOA7-1t!7!&mu6Ks_z*QLDA3hkiP)PgR&PBPk`kS?|+=L1wGnD&xBPYp~IN ziDs#^If(zmHRq+><|clLhn{YmmpqTn*Yy0v1-mOd7NF4TgB%8JaSfop6Fj;QeO12|g#a6eS*%}~jQ23Uu zWkfcTBrs(w!WPUXWi(^k60FstVr*&&1lw|&GhvP%f}IwVg;_zNSyP#~gbBtDWEX&K!Y%W)(z za?k{}M-Hhh{0L5rBuBPKN+UI}6*cG*fsxcmdL%beA1RTD0KlD*y^$lz6y1WZjhrIv zeB@%}n8HIN`y0S*#dJOgbH{nRG#Z2Wg!0xjZg6r&(iC+**Fr}MvC+$wLTGW z#22%RA5jlVjS%Wziaz!%|7Yqc>5(mG#_62%&(U#+z>=+lL~W0Rm%dK}V`(I}kXtIt zTBx^_M`XAh{8Kc_R7TzmwKUM4w9X?^b!2bJC*Gm2kECJJ$}>^Bub#2sCPBed^28Lh z7g--Up#r@2!LQe-sMMp}Xq^a>GeWJSuF-P>Y@_R=7nFVbs0ZJu*GC&o#EZ|>>!Vjx zj`mR}!U!$Hzz4MRjAll|zOpPxNN6-Wy6%(pK(tiRgNZ3Nni$;}O~R7a)@W)p4c_eN z+mzMB=q7fuTIc}B#%Kxl+{C3mvC&*g!^p)LKW-WKj5pf9j~t{%V+t*pDTk1Zx5@3% z-00qDezY(eSJ3RR2a92U13y2S5b-?lzXe_x-4OA@sG9U@zm0C)gUps7DJi~(AB}Q1 zcna%odFylUS}3qOdNOJg*)x-ucB0frFGd|rpfTzs;B542)YSx9Zg_}U;_X47*&0^BavDnKwZ84Y2(N*bx(Y_{_V!O9{#BWSTTDMlYc5Bo4dF zPF6^R_SaJ|)%cX68Tt&U+P#b8f#PQ(drz%8#9hL6W)o&(tWN z&N26xXRJ=d-;lld=!|IovEW!}40hm9>5(z_oeK(WU$}GGpwP$|O=aQ?zd3d^adm5J zN_~6(cI3{ft9Fl{Zh_rxi9`m|5R%O?vR|qsLihN)zwx_jEgH+gSaGa`RU#+y@kFYQ z)yBxUsa52>{=vr^HX_T$mE&aORGcjxt*cw-lWu2XYGZ0^Dm`CHyzdCy77 zImW5DTuqQljVcN+m%;I^iSk5I?5`r)mV%x=dV?5RDr%20AyKjZ@v`E+o!AXR}@#eR% zqwy11CZo^qN0WQ^eDhlifhVtb#cSif$@R(PWYKv(WxMUYy>Vyzj$P)VVWu%|pNNuH zcVd(-3HwBX$nW#c%a}rkbUYJDB6L4{_L;d&%2Hq=G7+2DqJj*;vRq^$ zI`O~KkQ18t0eR~a4zXLVPy7v`k%_-0FFKJXDV-UTuraYYk($VfVxK;nd%8oi@)IW$ zPKVdAtHnsUKXEnD;*dEMSUWXsM}{4H6mU3kI&t=21?DNBI8py60pdneaiYa3bGn_U zPV1C?Dm|6IExS{oJeROqEjo@IWkeh3-451+?pmP+bok(MRAaeN8{noJt zjQ+?1CaFvzfqxQWmj$SPoDRn_UKjwa;}jLj1U>ivFXI2Ez_i1;{Qpq-ZaW|nN#`89 zVh)frM%gBePnXC6+Q{qnk?+`6P7+fAYAl}U`GLSlk9OE=3mmA9%| z+8DTbe6xD9cC&u-{AS~3%PqyN7V(SZF<_ba@t|?DCdNIbRBgAMw|uu?jjIj9J-1ru zTuH0%)|tq0PQ52`D|QRRJW6BhR_azm47j4_-YppmZ((ufQo%xv;;rhflUuc02h9&( z=rMsOUU8{Gwq5M9eM+KsOHGj^EIqGoaWMY@kDcTuc>-IoUUN)ZMHU-9-IEUT^iFyP z$qEl@AwC&=bh?}fxQY0_BYNo}AU^3Mue8$4hPNlhm0^C;<#M|`F7I?= zx;(A8ue`6mA0j?Um_HChQy`{u6doV$v?H|}LH;Dgy z((X)>&ICA|F`_j9%EaBb#$RR_GR|-MpKcQ?=3AQ+uPMg#2 z++xvxWKOk{UIT3qt`_#Gzn~X2Aok?!;#(Hy?=QB^gi9L&5)K0zcX{0Wzihm z&aiXcnQ*4?)|?gJo3~l4GBFlAw?N8>q+F9T;0!@p96`-D>>bj{1C(C3cUi1B12hb{6h)qHb|#*;R2>U8Vc76~&4YCYJI+Ud+cE`LwLeizU8K z&mX&LKcGUaIIGU0n2BGNmP-VjI*%xz?mTyv3D;H#ZJClyoe zd)8rrN=+|=gU#ziQJCePTsD!(~7xi zVTisLCPb##%g?`)Bq)8`F1w%_*twk|{Qb$f%QVF<+&;WrzP(AZ_W_8jhyB}8SJ`Em zcHVcRBPJe{AB1MIuM^$)*=>qegE5`++qqA`Lvj2$zg@oT@a&4bKmJ?)?*5*R`qUln z4u8jT$9Bhl=cM(gpo9(nXQ}${?30A1o zXdQBA<6h-q)LSIk`SucVM(&U`qGO^gaC4Vs%0&83_D+>3?celXo`~7Hb9g5t&fbT2 zPDRbW5Lx|voq~?;l<$;b0}t}aG82{CIdObgzI}N?DO}vSx+8Nr#f^NbQ~ueRxaTf& z72TF+xZaF8$m%NHt+}n9-TBO;;4@|LiX^=67`v490pPG?^^CUK=9r5-woak-SrTE*@d3gi@~P`_LjRck%u@!r1B{&x+w38J7^)%u*;ik z-RZsQ!t^Pn z#ZS}JzByed#PT}qj1cRzYuXL=b3$y>vFSJ%-QrruHSKxrUx>bcx*__J=_}EXPWwb3 zaaw7;o|^swEs;{w0dbs8LxG^kusi)l3fP-2%Pce#D%`a>UQ}M`4vMe-WI!RPpvlJT zW;@LA{ciD1FyXG<&pz0BP@ZYbB_CG3n~V8JtR9uL@Ra`ue`AA*!JT$nM9OpiBP$hT z!F}K^y6r^k9%SyQodng~Zjtcb`cFlD1bz53lT|+naNdvH4^Tln?~{p$AkdBbK@#MK z{e_MDVdBPsuueSb`-S`a*j_)u1RbHuNCT+>iRx)ay1#orkL5;5B%XpCBRLsyKR!-i z_I?%Y2|X4X+pw#*dw=hB{FuUoT-WY5PfgYCmpm2EiKphd^3cj9F_)SXUr!tND-R-` zlxJs-f0%f<`_Q}Sd6cAF{N!k>?7=1_adp4tf$Tv_%6_pSeQh(Ae@#2#!u*m{t9kbclK zlaoWe6ewB(&9lvyNHktasKw8=Q^L*2SE! zu7CFF8Kvz63(P)Zyz|Wj9yT5(yczEW1+@Q$>Z60127#fO*vu703(d4}BEC5z<3wD+ zLBI8x#LNbE1L;T^Mzh$=dEjKFwo+Z)UdyeOVJsJ=keS(^af$CF1i>;9-f+q@MNioy zPWg0(Dd-7#BA&Qs)8lzqe<<^+DG3Qn&(j%>5tfHrU`l>A(hSIZ z3g9n+vw=R)G8>r{=gydCZ_YiRnBQ19S+Fk39@&?IkE2w)aZk&fa*mygaTo*R9)*b5 z=InD0Z0^Q6w3mcOIoquF1SPTI+3_5Dib&!ZcPY0&t}hOspOyleV3d)0i^-snN+~GITv*ttf`2r1zf?o_*`Pn?S)dHQu&a{8yCtw zfMS7kbU7#BAh==*Iw+i&LluaAn%bTuL(OGp?qDuUz%GDoD#g9I!rVTP9kGFaA@a_9 zy9AZy_9*mtt~z%zN2YFuk-*tp1Lsp^^9ADg@L$hEeVBPzcvyXS@zCv!d(++%Z$*q1}$io_;-S50NyM8LR zsfWpjn=opYeRwAFos0TE%s*_1=oKY;_^<@?W-KwaN7$Bg ziOfqj&3K}9zx_P=ISUbOUNU8duQ&Lt^(Vf|sMk)QA2!XL#Q3W(zlt-hplo_mUXKB7 zyj!xm94&f}yk+mH*GnRHz5CunuQ+_{daLubd2Ye75L(PFT75R3-RCnM zQOt`Wf*Rg+^7yYuC=GU=pN|pV(iSJdj`_fRcs@a(O9X$B#sYwkt;_4H{^uJc**zbe z4}lGaR1p}OFRpB@M%LobH%X9W%Yg2dm`~1Ai=?ff43XRaclYHs0lV`>agU@hf3UDa zgl@^QXF*RZh@*MM<9w48`P_R2%KFLt+3QxlPde4+&*vNS2NZG&;7Sa$%TDM^&iTA! zA?mZss)RJ=T?=uaPc(DVg8OP&-?q;$zCRGQ<111!KPUNgTZv@x3-;H&=7>_UEI1Zi z3&#{<1>hFL0-`L>!hx^kJMslZS%j5+6;b71z>&}@K_T3J&a|P2MHVW7{Ik+C%j)53 zB$y1A*J>2bYfhbY;4|Z^y54rG>;e-04B)*JM-?lC~eR;p)IsR`Eb@Z7(_*ef?*$1)KMc1Ml zmwf>^0df>7;VHzo=wB?$u4o(2zXqX}3=P8)HC7Nd*yK1}HAXt8^X2RKV` zvDjFANP|aZu|+(^T|-Rq5UbMXS@JK1m)OVA$98}DiD$XA>=b3WL^XU-U)<;JLtWW? zL0?F``|Kgq?(>Vtna@jU*?j@jdo!nJJ|D$(_`<%l&))>seTP1=Lpgj{d_B5kCQ zLXX3bWB!Ie(1*FjiG&iq4POe8GH6dZ$b<2G%3j157I)q@eCy&wpG6~yHuvIuvDdy` zZ1!|D8`5Y46;~(^eMK~;W3l+-BHxiO@!Ge`;v~B63sG+W&1h@553NM;Ncrf^W$*|E z{A%~|Wt0HVqZk#g=aKJGoB%I?4GQRf?86)y zdfBFzBMA#1fBJIo(JoOkkMiWT|8(fGK;?DxsQjq%=zwSo(tmbY6ayc8`m#jvE*@Py z64$lrC4Q;#xZ*#5Qho*lQY+b&?UgdIcE4JkOH@cD^^#{Ph{~-}M0Ux$bkYREOGlIr zzeLmLp*Xo(mWr?a(rf?dwO^wOwn35?4JEf!fV@+&&e3uLOY2JqOGiufrFxUJzLZ?r zT*@qE!Ffhq!;aA7r7}{g<1+m@(mN+I?SdAT_7Ry>kUdsBzMy91T#78kAR@EWXrj@j zIOJtvL%@UyHwLT->mll=>{Bl;*au)ZO2NG)=SWn7mnA~5=Jw0jtG}^|&QcQ6d6jD%pv8pVQO%F0+ zaQ1lj$?=o&lg5)4BNh06{Ed>_T0YB%b(vDE{_HU&xqr{Q-ANuKFZ;V9kzebMy z31X6L5J$yNhFj|XO_8)k1<>%5#g?>4$Pj^lVtrzVfrg*KQ3LA}GAMKUG`PHpzga+~ zdY<^6&XsjqPX(HLviD?PL}9lDqwygsGZY91*2TfT{Nzv!D;hB()S;2`DgV@s z{Fg}KvnOgayCX{G9QE&b8h#pkN(buEVy>QinO@AOti*S>@Y5iqW&-QaBG01Fs?QEq zIVyO3V0%hNFm?it=VeN2!8dkUA>qlVTQE*@LOOOw-+6Cv_i2sD*{8ct_ny{?wR1P_!TZJcezHMam8U09m9SVs?_B3-?XqS6@&@p?FxfS6`fphJM_3t8lGfk( z!ny*6NF@BSW7)Z^O5pmOlAgdVJM$gk_ho~N{U7b8N z|7BaiMPg+EE4l{FTu6|G84ub)2?RVMI}O8LVo#uC{UYh@+4Xk=1f>EYkGzbO4Bz)ic|QeZ{d- zp=d2D)|Dy&G648WfEMxQqe&rn#-m-cEBuOu0ucpYe^8fXkpDu|sX;M4E8dkB6H@x{ zZ|s*c6DYxz(2A0PTUYIg75rr}ws==!EAbWlZvdKD0=D=vt5+~4wuS5Qc8V&_jVwh; zubiwLi`!P|6~`J!qzvBV#a^BfXRh4J-b!@U9^4Dof{wMa$eUSlu2sZYD6_&-ob1Z! zN>vQXuDI4LMA`=FL?msmxYw*i%7KKB9T>J&8Y?MCbFR78+-sh-{k59NnOpI!IZPNm zc2^EpilPm{@=673L8l2Nxd*d?gu0pt?Ksp|XzP+jij~dP^|jb@SV_RJNK5nh^O#~5 z#YZopr=qU)6)$C8;v-!eunQOv%i{6Vr%!@ZXv$SG3>g-AcEkmZ2Sx)o#7YRQdY?xq zUiW*k^_Q8|C`AaZCRevtV+5{?V4QT1tZuGut)^DftC`g-!V_YJfRI_;cmrlvaqIxf z(I@0hQH!^6QIG78qURJ>Q$+grEfQ^-l006mtY$^6wnfchoo$EEsC17!Wf1?(KpiiL zRXnzUf|g(=SfG$@ntS#sjy>oM9#G;0xDa6w5uCxIn4?u}toege;`k9f5+hO%EfduG zRVn^&3CtV8D&gNhp=T;sqnK$VbWZrfFWE0INPI3>3?2s?R6#oc%E3zTlsI>TN5MJ) zdjL3bG%p0NOla>1h*1KOSY`c?)&1VPgKGk= zz;m8x-{RIRuw*AuuBq49HQc>`w(7MTVp*)k*5Ye!l5zc4nUAf+?pWJivk~CLUX^Iy z<4r5{ubr;Ro(G@XDb%&Lv*sYc4Zul&2Y{y^D`MXoS{mfi;)HDTrPnfR-hO1+4`Y3V z_?if9hV4=mD73p)7uz6SXh@q6e{AeB+)wlK8d*I&T035gh&jcPpm(E`+UeTaTAZ>a zu|9V^PY@(~&ONt0-yq=%0Ax9lj(4LOsh_jYwF=oi6E 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 C@0m#e literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D10/TBXExtItems.dcu b/official/2.1.6+2.1.beta1/Lib/D10/TBXExtItems.dcu new file mode 100644 index 0000000000000000000000000000000000000000..f3709836a0e62dc8ae1c8675f63c75d5a64f4060 GIT binary patch literal 93964 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
BE3-O8gRD2=cn#d$Z6Qx9y7<=F6 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
7zfG8w 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 F{{r(1h6exu literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D10/TBXReg.dcu b/official/2.1.6+2.1.beta1/Lib/D10/TBXReg.dcu new file mode 100644 index 0000000000000000000000000000000000000000..fdd1c014d9379c10a41f51128a1dc3b22893d075 GIT binary patch literal 25957 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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D10/TBXStatusBars.dcu b/official/2.1.6+2.1.beta1/Lib/D10/TBXStatusBars.dcu new file mode 100644 index 0000000000000000000000000000000000000000..3331b160225db375a9200b18c5aeaeb70057da67 GIT binary patch literal 39525 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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D10/TBXSwitcher.dcu b/official/2.1.6+2.1.beta1/Lib/D10/TBXSwitcher.dcu new file mode 100644 index 0000000000000000000000000000000000000000..e13ef976b321527509eb23b2a931ad0f2783fb52 GIT binary patch literal 5385 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 Uz7Z}WT+AQ6k_$9I{t3?i0vU(gT;bAf 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 D^y3wD literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D10/TBXToolPals.dcu b/official/2.1.6+2.1.beta1/Lib/D10/TBXToolPals.dcu new file mode 100644 index 0000000000000000000000000000000000000000..bd51f42e630da1a2c848204867ad08c96b701b68 GIT binary patch literal 39481 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

;@hkUrVpN?+#Bb$wN-&NdSm4~26Lh1E; zHJv^yID}H*-U$phf|ubidYsdrTX1}>Lwutj`J0uA`+XA}11-4NRC<~kDMki{#nt6B zZdjd-T{PehjW;XkkTGSSoD<XT5(<76dYTo{!>+L9G{oHm)DcS7H@l_vT$UxeRJB*V<`3Sk|B zCGvO(zp`J^`UtsqBBaWR67=)e)rAJytapXBWkHg~T&jsT#d8>qV$*_<8zL z_hGbDx+k;Z0lZy4li-<<^+2I#th`(EOOU9OqEq}ublDfKtkrq{j9qcmCRI6Sl8IIu z=rZmra`DAr+`mO#jySRuiM}Ngk*H&?M=bH~)e18KRTftinVD93%{K1;j2mCck8`W` zRFZAGm8Nt~Fai7(G;s$JlscasUq``r$4MfpeD>+8J=15epwY#TNq=PRU!CN0RRqU3 z``09Q+bf9ks=Wd;HQM8WjT`9W?3vg^RDZ1v{R5OMJSfnZTBK+k)mdX!C;G-j978zL z==m#rXW1)O8(ke{rFh`xGE)|duF zr)k9fdYW(1`|9YD#_Oe+GGjg+Kx>xm4YklA?0-WPFG`NfsV$WnH+_C5YgJ}LrZ(FJ zsX~=16WPP(WMH$GWQ7}&e5*==W}UqvD~xM!yEE(+HlMvj?e^KTv+S9x!INxK*)38| zustVy6iIc+e$pgd$W5H0m7kuX>yT-^p;+7kSGj(Yo0=rY7>C8X6gsyI5|Jcc#1cnz zP37AAV{0m>L8ftmyf0DEO(u{k$o&E+5KM+igWRp!X(DX_ORuA=JVq+NTMW{G6a}cw zoSPARc6B`x}x_yY)Khf!Z$G z`I(mL9O7<)@7H=X9S7`=1tHXE(@p9&3NmzJ>Nch2(2(yvfiy7WJ-F zQlz*xvxB-1H?9q)f_uqGsHpO+ITFdF+@o{yw`kLtvmwP)t^`5!H^hhhXWO`v! zK7vN9PgMZ01LnLxoqkLbdg#R0;Jyxzisw;0kK@^hXEUB>@XQWcX9Ta#$g2pZ>hNBjs+J9Vu(GqYZ)*Qu|}#&x>z(WUu7dqMx$xO%1H znVeOe?fynr?#cvTaW-x|g5G+p5jj+0>k<>l)Fr&M(w4hY!JMWTH`jkN%bD45jha`I z^?JiN)mA2cH3Vi@)anY|YgwW9H%vR2*zHB0Nl$Y&h{CSSD%K#yT55rnNLd z{NNs}=3>t*tsF$Q$WxHuY6r3nQcPu!T4Z33pjw{8Hi4tW^3T_9YWe3$(g2L)%qVE~bnwg2~ z(1=zBmHH;O4q+3cv~2Djjv0e=#Wl}8$f?M~ums;Ngj$vdyoc3=+2oF?x-)y)%S9Cqyu&Pu+*szj zS}wz!xA+utigHrg7>{Ap_KY08A@Px}cStNJB94|1t2No`;jH7UaU~PF^MLwE#;5hS z<+c>`)2MP-_|8E6H4G^A-;p`AWjO}xZ=kzS=|W%eoKyntD~UiWS12GH0I8~`S0I;F z_PL&&F=ddCtV3jxt?@EjL*ni`h+SALq;OFVQoQDz1XISDhvF zdHn3B_792 zH9p;E-=lP`VlOQKUm%HL>G~A8o|lAHP>eFtxg|;yR;MviHHYjk$)5F+Tf3>{-po)%)x=?C7O;11GTt;a#;Dmn4xE_pT~a zJT}@giybgx-20Gedl`+=%fzG)k*vMUx3I9=<~+~_{Y{pfZkugi)RNzA%iBVhTqEvP zfRM~JsKt6p*}hm@4H>7UGDP*W4-l0rlZ@lFSXEbr&p91ksn|nq7&DX!>&dtkHRy8m zkywHWLB$ssApU5@?%4V{YF?dhMO6#jJf-k>7Pnl}wsP5UU)84iqr~<{G`skJ$a^37 zsH$u6_ark(CVwCi0tO8lH7XXARB1~UY#LzpTx~HtUcKDHsI_%TSK#!irkQfxvfDD5Qx`2LL zuWd=vNJ7TA`J)0F&@Wsf!0KL&=(riJ5Eul3j^5hnoKUt)6%M(oY(E9SC|gt(aic`CWD(bWpzdF&5Iybp%0T;m zb{CnFl~(o~AZ_fhk~_c$f6YuFs9^OjqFH?J+kcYH7G;_+j5o|e(617d{V8R$#GpJv zVgf3F&ZMmFOaC(RW?|#H(P#^iZ7IIYzTp3i-RS6o|L5j{f6!d;&!J_FrTr@2gl&^0 zipuI0nf_(E)X$^@tb%K-b-XToqPdROJ^E5wM1%rX+S)lHOvupv)U2^^exJ8h`J5RM za;)#CsOsfo_0pkVtGZV;1X ztl!1-$P+$`UDjnyi5=^ogL5uk24{9vQyO(C1_p(B(ck(zgoN#4t|?u{GAESD2b_G- zGFCywco>A%nhc1L&8`4VBlCgu(Vu~kQK8|a`8Lhhs;vZc^ez?*u@Dk$3!neEsSCN) zd_Jb0oxr)2ev`YR+G{9lXo;38o28SO=#=Bt$qmLqcTw__Q4_ ze2b*u5pp`2PDIvQC+hh0p#CwE?$@RxhK^4@`dxP2uhO^CgTigc<)gVd1t+>+^GSax zZVul$gq89>i1YB?iW5#&?9dozKV?;|6d|NSM4hBX%4O(ASYA@{O_b_fO-!A**C@D# zbnP+5;t|$fgMW!ptkEWDsk3UTSFRSF(;17~Pf+$DOaB?#7)idiUe3#N9No(S@dnZ7 zYa>B%f*^l>`8iV?O|GIhS~2V9n=9*7s;p(gSv@g1`*XDndwQko*iQtkk*eEF)ku1* z+QM0yP1nx@P$@tg0kUQ4pQt4(g}{a?utE$O&W+7XJ4?&(ls7coURz&5PpTK>KLJdf zEgkJ_&9#U_h1agGxkEsZdWNUPrIe?omQ>Z=uCi;Ri_$tL==_`$RWEA1uXE}Kk`ZUi z$)6)2C6zU(TQV08J{#??Qi<_@HErn7;n_mVo=kUThcn3PrZe@g`^o}}1*_kDdww<7~%GDYk7^Tb2%{6lHIQ8Nr~GaC5CEjgr1C#Y8RH& zRj;;CPE4Mq&~aIPTC3=!s^}Xn6_Q>i_+n;+^YEswZIVTxMoKVc7TVb>s@Iq#E73Iz zBOBhR2U@c%4=q&WrFQld?C zU0YKTm%r+C_iG76PpU}VwF%yc_+EUNd?_(X&aauqVRN?4bk-w|?_S5BtAPoP^d1WxE zUFnX-&npF~?ZeJ1Ym(a|^UCrR^l6z>?DNV1;ZyK$#O=WK;EcIOhMN?2KBbVShvx`Y zM}0{7Q$`4uy6Ryzik*oPRH_I%!}FmpX2tn=`p0Uj=3AWq9r0Je+v2`A@hx>+O8Wm_ zt7Bys!A@VOLn&X%2?0_I()lipp^~R5Qdq{6vu#YfeFoId)l!YV58WJYuBXCc=K4XX zBpgt821E<}Oxj3XKI*~NDHVaq14i678_fAi=~p2nAO!@A z+h+s0Kq>ty5VOC93$voQNKO}ODJE?+dt!K79K<9o*`TIE|4PY0oD@}}%kv`0+v@T< z3H~-gIj6$*>dRdQW6tqp(UtYtfithY|I-2z^ox$oE_#8Eg230+FS#1TTY-jJHS+J)U~T^ z1UHL>*qRB8v%?h#oI=N#`T9t&4j6HExUWXw3<65uEZ)bQoDN-|?FE%`Z*)qYLr6;H zO$}nAC5dNQoqWx~oPm8d?gmQQVx+%0&$Uf0CU6@(!O8fVs!gD3Eb3$f@&B1L{-0eZifr2p++3(hSqyq^50Da9;Vy`w=T1#1lh9#t)?k$9 zx!P&7YHlybW|>+e%&o3(@Cs}yaN;aj=~?G#8CF)JGryK4$5tlTtu($348ol;zk2m8 zCBB=g<-mrlr8Wb$DGuy>Z4@92Dp&iACDo?=v2A1T%ku8}A7gEDsxf@3waMf3OIe## zeZ*NI+?QRO6c9(o@NUwPF|6?|V_5ZDtA3=%n&UVhyp4W)VxW|HxUu{gaqQ(U_(SY> zF5l8`H`CJpZ|=A1c%(9`B^45ElX4hmCL^9w)HQVF*bd7&Y8kM`8NQsqQTB+CCUVLNrJShq;8vL=JRm zfIVgdbCK!!!=4Vy1G3EqSqS6>Bv`#VlAxg10+{EM*nBV4IDJxkyTF-p9>iIX1GqdE z&_5}1PHZIdc2OL8`vNkYrS$kb>Qd@t$poqxsQx&p zDfZK1a_B6FJjL1by;zcxL8T6!$(gd{B$X9c6_*Tqrfdz61#ys5PDi+oW7J+9;kYK}J>?t26QbJ}a3y*6mSCZasoFDh1RzzP7hwllt&G}QbA3nx=r|nyyp5%KU zPd}afWc_mMr(aI?p9j3~+wn4*!}#aopMjf!v(9}-W&1sAJEv|3Bh~X%Wy#>Sis zg8IjS>jdv@HoRS0ih20BcuD(k`w;$AEyFqwEZYphwq>tI`vp0j@YhOs0lsUf;8Tsw zWuU!T)|I%mxNW!{xVq1cGw=s_#>?1C3755K1x{q_g~ySx^As6-2JhR6lZP8ClITd2 z8)K{++){=MkV1JuIDXLyeV%_Xw!FLJz8~jXlp+5S`v)iEm9~bBaS(6+pa=iq>>rr) z7DLtsFDiIi^w#v0qKH|8@iF~ATU*Kmxtm_miHq&`$zrP6==Rg-KH_T3?jsHF&{7pw zR8@KNEh1Z*PIxKp;ElrgoiT%F1`x}DSQ~|)&!-eg3Y8UeP$m+YW*=p=5P=$L$y$=K zSKUGr%_O{n6s&N;BSlM}Q{7NkQ+~&S+6u*-4L3;X>~Vv1EjA=<=}2d{@1@BgokMnO z<8OpXwyjc zIW|IjtTnbpn|A!vkdtLS+OB9*RYJS6&(W$G_Bot9#XiS${1dd}VJA;TmQ*j7@oUg4 zKlmE-DlR|@YMA7(Pw5;LDAb0CW0hH+#c#xZPv^S=|Lv#Pv){fucHTZbfxUK|tnHj< zP(Qc<-urO5ygv^7cFM5>w;Pu(^moCcGGX)thZMVqAh`_$VrSq4WlLi@-JmovW?*Wm znhR^#B~{fcyock;Gyl!F^6~wT(qpd!`7`Ai&K^w#C<$K@PmgtM(F{kAmH8mE{L-R= zXG*-M6hl8hp%Uk4Hb#M9x_0&(BiRMvMU+j_sTHMkX zyY)$>FV?H!!Sql|Uzezq-R{9coHBDDsNQq2!vlhIiEPCiSN^c4isB&%;yfb(H=!jrc zRG^P#rss3e{LGn6Qg|2h#2Xb81(j-e2R-Hi6TR_Q(PMh3`*!K~kOx}9<3y0E|KSpl zX!BkYEGYInr6?~JA3+u-nOZNtDJW- zj@NNQ-Z-8YJx(X#O2;d3JkdASIARohXaF4bwUpI6D)9O@AAucmtVdU1a4mht{DV6^#3&-Wj!?YK;la3Q?%-C9eTd5nb=TSRxMu zTcld9r=eo;J(TJA15V zz-Y=I4yCP^mhDG**XXlnOi_LI0;z-_OE=Q@;bWYvat6OIKGGCp!8Y?@%n6%@vVTvq zqPiFWxTAL_zoCA0g&by_8MjJ*R?d(%p>`>!oG@w35u|alU#9=ZWXUqKv53iL%VWwu z#x7WOOe z^DGQlBt-CXw4v4Oc-gUsn~+h*-m7o;CJML7k#hQ+!Q`f7D<+euirL6homWjRow4A# zfHDUVeIFKa42-HQ)M}d4G@;TyNRGYRR9}MrHL{Va|A81FnDUIUy`k|$9w$OGeW&4{ z^vosrt3%5M&579BzMFGmWIIW+T`1Yk&DUpcp(i+uj_8r2yw3I6OjJkb`UznY1`~ytzTyZ@4kis+sE_kn+pXTqlRKf-~~hhwq+awQ@|q)h*wcejD-4lXT2J z?$8~dThMlYc(e|E_hWQh01~dWKyHKDm356~y8= zg2k~vPaa&dSQpxA_8E?Zs$pA0E}>MVo_yyMoQS_(ae>eXH7`?t3aXCUKOKZK;W*H? z#|j7MmJ>tCmtj6i9Pq)kdq2^rTHh3`Yy{rT^X3Hh^atLZT%Q%#^I72Cta?{q&(6TR zGa6=cnkMX*d4eqN{Ukx+Ty%;!oJ7nGZ!qInV+R`#muuc}f;+Xnki+7Tu~&ke8!eg6 z2r}s0y`9)o3R~*w#+|OlvB8_(w@5FV=eqkFaulFHcz3RJOOHC}(p=V(xpP4leGTRJ z<;@FPnjeWQtIO`Bo4&*8lK!i@xVjU zFmsK=OZpqI-@)$Y1&4#*m$^jm-6|BeC#cSOb0TRb)R>dzze!NjT)+M>Ef73twQ-&# zW%aa(uf4B2BEB(w^fE0T8huti4l|!do>Vhu#`+v? zol9&(r&}N~J=fhWcaAqN*k^{y{7)TLSimuOyZaK{7T_*>GIF+JkqaYhW!+MLqc1S( z?(y^1!!lvz&hukqf%ZMaSD)?mpr2X)`Z zmADS~fx^i}1=fA$?%lA+5+>Kyb7I6RB%Z^xWxE$C+Xwp$ey@p@W++R1UT7|Bl~HyX zSHK2UDQT?W`n8Ov!i(J9foFx0;ix3X$rZn6usUy?C+z;e4&uo%mu%?+Y5CyDa1mDY z8hN+I(Zl3rjw4|j^(|Xs$I;&ze6&2cNV^~7i+SftX03cCDUbdK8qMeu2ckh!RM2lD zL9eNx?;jz3B2FW8RGteXPv)(;`mNwA{Yc+rypYjoB1gK&_lU2$$Yb>62(MNR9THyc z)pLbc`xky~$4r84TYBD9>i{SqH>Lo90QIUQDT2!NY_Y6RrZDQvP9o{zAQ|3^Y#R9^w|W^;yBq7{Zqb6^eOxK&~x;O0rbTU`a$t>PDn5S5%m3y7^J%xQ4C{f2&Hyo|75AK&Je$^3k z1o{5OC3=IPCA0n>X@Wtl060A*`sXC%Seu_+R-!KgV6onaM+ta3rCRm|I%h=A@r!vD zj_kuRDn31Yw!+2Te7`Jt^hZFA#Q*ef*lFNw|95f?Qx?YJQ~!w2xRq$LGIgOZCnS_c z%twuwnL9b)PmhVp6<#5uh+Luh14hp8=2omoPnv^PQ0DK(74tau@{04iS2QiI=(-=R zD-An)>Rj43V#b|I(-@ax!PY#h_@Td5BG6rblMuq9DjyCuP;x&Eio>4LRL(syl9HnCVk(}Ov%t^bCuw|B1afml*Z z6VaE!z!o#2Gk2DV{l7xvHI-KnuT68ag(p|GGfl?RJKiF{vq;C9gum0VYM%ZRnh^Hr zJ0164t~jC#R|M{KHu&;5uX@FO8wIJ<;2!-~%uR4!d!9_tAK{hz2=&&ZbVJI=h*Qh5 zhTNlbE4Vv`b-n)?RU9>}Ck9J$kIt^hgCrU}T(Bf#a*1 z{-=y;fX&Xx*Y{G3*Q@hnBGNcl)qJc?pM3nn522P}v*}~3SF!9RqyOrUt7{tw{Bl)pAI))o>`#@YuHWvu;@Up3a?*p;lpSaVqBMs6Zl842KAUWZ=y zxpcZD=Kwved&PN06)QM%+ZB)&Oi)$upez-FFFctL_Dqr6rUav=pUb$|d%uV>_8n`R z+H~XEy>r(bl((OYa_C;wRR>TT+EpmAJM=f`mJt&p{kbuH7b2>zK+^ocD!SOiJzGK+ zn-&amGmj}&8T)suc398DPHOs6N+MietK^}4=HkQbz1Q6X4Y>!o1Gc;F#80Fcep_A2 zQB1BJ!g|fkbN9N162hD)S%)2p)wUeX6q5KJD08dL4f@(CSKQFE?n0HFhzAb$DpE1t z6x^%_uIUEhF|TmzUM$G;UE}+OOwZd00M~!*VD!S{aoy0M?!hn8hG$T`h@j*WLa={v zCJh<6fXgmxTFe1m=`j<~$g)IDL&5E;gg-w_Y1SXg-1r|-Eyj6LDen~rGn+Sw7xoqW z7fbs}3dbU~+PpxFECe4>i995U*p8E@hLr292<~o7AJ=H6mU0qL4zlEO?pN1m61YiTgeh`@KOp zxTdt=h9P-g?d&k)Z4l}x{vu4Z`^&%IG4@Mvu*f2qzWJZzB+4)EKO^OG1ng^UTF zU4B(}`oOyeeKo(Kfq)FwFMuT03a( z@R5i{r!`Jfn{C{o&-`Dues>!YBT3Qk8gr!I;d8VwH_LaLnoVZx== zRJfoxOt`e33YX?n;YQ*cT2%8z`jh^XcFH1i;6Y;o&0H^LPlWfG?F{G_cvG;1=$#(A ziy?CP=Zc*?jn}EXVu+cyUQGK1f27)rO@nm!!=OA_@N7>Al>u;AKoxl%yq3?u53xfw zc()|-F0aAv*}QFyNu&$bP!j24l}93347jrgX&kYbJ)RetbS+uEHHZCtynPOn^_I2$ zasU!1)6@=%)pTR--nlskK5d)Y71+&p0u$Y4zRZa(J?Sw%WWI~cOp8g^##Na!QzCJ* z^038({VM>BJsHVB|HC*w&5f9!gTJ{ElL8c2TaxN6S?Ik8?NWOg&4KMig;!b#6d+2% zQUG{MQ;Q@j&sLsR>|oo5mfy#HOKGCvap`^nQZl!T(gu`8EE^k%6DVqPaP2NmP6 z$Rna|cEi|Ef@7B=Ax%wIHrOPMpQT5Ak%aLGRsAXlpMG+d0q0}WK1|g$6SHw$zm(W zwHJ*Vqx7ml9WT#L7>{>CR%Fsoqwa)p`#Sk`^!BqiXDyQ8+%$L?rKutF53N@g>@`_e zS*Q%6xu!2B29@>|q~Q0f4*A9pHEl)UnLWhNykm*-0t{{N{!Tu_KWgLGl0njE*cYVU z7v}~aln$xyA+6xp)@{<9SE}-3Ad*4fp-<yh>JcYg3i*3%cq#JTX~aa12?gehAYZMG%#gJG+WH@gp5 zqV~U?209qndAW&Bi9yPuT$u*I*I2DAXI&E5mw@<+5HUlEjJ+sU#_m4c<$go!a{n23 zL=2d^4FO-5`%Qe_w|X?YhM0Vf4z4c!Y-lD{D$Ny+jHnDa67F)m06K_l^f1?tEhYaT zR)&nB$3UN(t>2@_qzEe1NSLv{N|1cHk6XaQ`d6k?ttA*rV&#v!wp4{qXBrgyWYvf&OaQ zP00YlMoE?3lr7s1DLQzCnzy~9n$#0KgiskYKG3;OW+$Hu+3&)q*hkVn{>61--qkWo zf6%|K8!Jsm5kmMztvbHyxS0CUpAfQKlzVThiN)F8WxKM#M@sm0R^ej$r%SKkZ597i zl-rFcCi4N@=m^|2-a==F-GgEG(5lQ;$;z4#@*TWA`aO^>rX=I$Pc<(I!k^H~Z^#l^ z(LLX{_if*K*t~II=DkFhxrGm|K`nBb(ms3(@g+I27HaO*M}*zpti6s5YG7}XQyz@K zy$%W`-}2y_d0p1cLf#5zLI-lEIJ`LqErs}cQ&sPsiBV|TNZ5{HY7<{;8eNiUG^1tq zji%_*pWh^g=nAZcECMFBAr1bbaCyfTQO2~|ZBWLZaeJz)E8OVum@AVG{ncI4Jkx^X zB!a$Wv?5wqzM5fh3Th#CF$=LFip4@qw!kIOFjX^%ur&CfqHZNnH`?SH-=RpColib2 zoAdz^#r_w+#?qG+Ws6~bx(VZ3FeKB}+T7TyH+SqK*S20uG}WC!{F~?k8HlUeSlf*7 z)DX%nCuBv_+=}M1fh}19HWv3u^|=Q!cV-C&KP8c{Z?LKcFzGRD)*4`26j-1BO8|=T z)(!6;C~xD&!4WKM~(1-lGdaK-Or2>C{fO<2PmtYk$Gjqop5{8k{m zlbY0X{ZY1wL?7gsZ~%*^FV@d{P3KKg2wkG!B^e`uhKa%Z zgu=jZ1Jo|k>Yg7A<0WGcZq5}YG$moyf&s5ATnoq1Fw-eHJ_7#69V4eG!3DMw#N%%fqvzAiK`2D%-q*1a zfBzARn_$R2#cc2W(inU1pCipfJ*?P!e=)D&Z*|=-Etas$o7_H?xSww%Awx=fKWWAe z2dP3C2a-ksPW4OlHALRjXNlq8CLx0cG%x56vYoH@G76xm=Vks5xp&w%5cc&O$`~~y z6hu(erQb(hzfIttjwo^JB^_>q*Ow5~(R&)dAy_U$lmYD~?}a6%$@1$3A@7+8W?c*I zw#t{`AAV>lzs%yYDupp59$Xb{-kmDaSs;}KQW;?%^4u<^M0NjKiT9&5{N8BHE!>Or zX`=58%JLSTX45NLgV+7cw8*6wb~*E5A6suy>Ex+U%PSs*hb+lRdgZAOCc92>ym%$@2!ce%|)+n%UT9z#o9 zJR{MU1KH5qQ^I0q`ju89YWh3E^_(XDzcl>2^iJV+0v^HRui(KR%LV?YG0;GRjSh|u zcI}#iF$Mi~g5)dskb-9vJOw8P=1^1aL9RSvxLp3dL7B~hvkx!%FHNZOBkYu5^;e_|eVg(#|y}=de z5Q(z*b8p3pCXcJj{jnCjj3ROki@#O+X`=T`%IXL@$Z^U!^%pviP06Z1XG*>=1pgWF z&QjiK&QGQ!*E^@2jzRMD$z1M$S$lnAGChdR0=-S{TriSmi6CiDNz4q0qM1EE&6lb2 za&}Ki%M7F-*iiU*^p}k21Ba$R8oXliaeJHu-!&>uaGaA1$}dm!eGAN_6dwIiiFIh5 z{%BQVp{7;QgpUckJGo15VljE>R{hNnsewb2-fWi#NfQKtY+DbdT90tx{y6j!GS|Dr zOI3&4>zb06x&9cb1|5Y`L6g0sx#1+u`MDtfXZ*vCX8||hXI$({!AO1B5lWsh*=JR% zQP8uDe7JuF>C|<>{(Fya7z-I|PR2h5^{!(d=zoAX7+61NU>&;svZIk&tDh&$kQsP^ zd_z~X|IHcf_V4NTznj*OX7nXTf9PEC`&a+F$ql2FUwNP{4exaIF-v`zjcY}&-|64; z2@&dl-Q?>zBswapx}=WZL2P#2Ke5*g(reyvn7!r)k~rNmfyw1#V^w4E^Rf;TyORS= zH}nga$hZ-{emVAaO!l~~36t}5>>`(J{fWG2dickU)XN6<2mW;*p!2FG$1Z(4*-3NX zAkEOFzr-iwrcBR}+>M*>+(R@lO_&+@Ll_RfOz(%FUl$rpQ>Ll!Bl2AaU#+JR9ld}7 zJ%JaD4_~iWNjf5IlJ!HgXpJyyi}6r()5Tf|d7F?X-@ZfceTQy6^5%1g)*X2i-GL@Y zkP9g&L(r|Oaws&UQC^Wt=SKVAP4K4jW=KglxL;JLltoavC(%UZHeQ++bYHK(Az?5I zzGio~4Gq~O!1udU^NUly;vIc_pLaZ6`7GQ8p_zv!AG)<0q^@{0^i|`%UEa?(-h1VJ z0uTo$dZ~QH9*;MIJ|PG?z#VNqXP5f}HgrrS)s+BJSH?EVTM5E_Jj8D(1OgwJ?M#jE zC)ZOPazgVBR`v~==z4QqdAYit!kf3jxTc~*fBX|RUkyNuaaaHevF2q+|E;cr6Em=S zBuL&q{;3>Z5zKDq_>%rC+zY(uvXkhbWdDV8cVgUI3?^2=@yMj`>S; z)s^`7GjKM>vW@RBbkQF^O68OdJ>?)CDL#2GE@o>zvC(=`W=ABQm(-Zn#c0NE3_IPpgT90A3T{;p7z-Ee)( zKN-J&Gx7U5n053nRro0lSmRC?)?9reFSz{YGSQ;c)unHw!elYHL3zb4^NhjLrRUMc zZ2uh(tbfljKU$&b{&(}e$@7YRfBh}H46=lWe`XKk z4zg6j-??-2QSxqXVECB$%ngjWcw6uy+!AeH!z6n5%Syq6Zm;?8u_<`0K^mF4bBQQ; z)T!5!LSFs6qTpfWO)5&zFT$w_!|8Y^)eh7=o`jyNcf(%0(kxeYda;XXt;|?-8JE`; z7U*}vs-R|ND_Z#utD@3h|Msh=|a zTQvA}CUJpI>-R8G3EyV!TarqFz84Oz_fZ9&6$kDa2K*7gL$xzC$+pVO_5!bqY`OV0 zq|~>1KR7X$a>XaA3~xkg#6H{C1fk>ap9uQ(DClJdXqwpfAJlz+WDRy5f;IYLptGNS z^SjQ`yzb^Ar$?U!VP`{VI;!8nArV9y4P6uD-W0SQd<>)*hJ^+fu&y2s_kff20o;&C$y~J&sVUsb~&^|7+BnH3!-6z*vWwekHxn zY4qO7PumdkTS1Bc1^T>amun@|Q{iSl*eJ$mF_b2Q)C zmpuoaFO-7?%MiAKLP=E>2HOOyoAKDyLet2{HGCkt=WPaW{<{h_?rG}KpM_^$Lbr_G zu_3ye)Qc)dXiRKaHDOeYp?eQ)6f&TOqe?GFm5ChYeiE&Y8_9rao(zl;dx?>RsS5<@ z-&H|v2wvMDIGhS7WVOr%Gr9Wq_oO0O7OStf`zSyA9&>bk&`jM}^9vjJKa|*@%i$!C z-Cp(q0y=sx03X9%c7Bes#Ym1P{%t3$6_-oUzIsY~@X4 z*?kuAuWFwJgrO=U`(mzkO=q#qCoYFXAk)8#kA@Q!&JF zS^Lz%ZvcBa>0JTL%=W2kX0%VOBaIo~!X{~9`_$#L+NW-v-#+z`g~U0do%6WlRU*el zrzdSFZ8vNo&8b{b?yK>ZR#o0w361ThOr}jWTY%I=Pe4w5W+H&KN1-*^?(N)0yV0{| z$W0$(plAQSlzK%QQe<1^=wX_;NdJ){`rh%3r)3^}!)Fli?kxhV4={4??G*Tq7Q^R~ zW72XeB{jCxxc#VkM!p)N2UjImZG=KsjbSN8*W665Ty&K26lXLv{q32;7^z{Y<_$|u zcP?p0_I}oXkG|WbKX8jY7+Z$6m?3;i1u#zdCgWTGk7iJw^5><%&`cg!5EF8K{yq(HhemNQTLdbpZ+b;3>RDONmh$L}w@cDb+(h3Rr zM1HxMy*N9RbMM<3zLaN9lfFdy$rZfVpR^(6OS2N? z(3nxyl=G!dXR3;|hblaYE7dboetcO+=Q)`%Y$>Q?XM(Om(50$~d>dc(rBQ%%<(tGF zH#)heLnfrUpEpF8Q46?3H6cs@L~6@}|-Uancv`bMJjyb+%89&Zb65=(}pr zgqFtjqv9A`zIIYvjzjKjxO^a=bDg0yg-BB}@513Ampu}E?P_oO)!xdhy?6J@{h)gt zGS=AEH6AYGks%L@NEosWl-H}q()z0sS0!xOp(uhLhJ(`I<|j%kHmQ(sckez@fJ<@+ zr{vsQWKXzvn=N&3{i+JZo~hfeE_?a1Hoc#!#4F3A{DnMO89pExeotk%S!LweQekEo zB*J7aTXyi`n#@)f+47prE0_Mbc+KE7x2Y&2RIt|}goQ#o)I;Qce93ZH3yqB+EttFH zCxZv)4k;E(I5Ex z@i0>9NW@@apMJgIROV{F8u=3$W$8^!sj=sRMg6KTctf_O(!j@}j9`7vy-fe%vr%9F zql}LX#w&^=h1saEuNOoec8anmSmX>Gfui`%@ZSac+34DHg{SD><;WVMH$W{)i1+J^ zzYG0$r9#>Kccrtz1c8W-+)+$A398PXqA(KuHL$oYG|%dG-gNQoRGybcfHw-TaT)n9 zB`Bg((Vzkt%3-}l0*oS{gS`iyh2AfFu34%bU{gR;5rF1(eTo~|qvujkSykQ8=eS|O zyoLGOL0`YaH~7-=I~;*mw7FEbG?+K#S)sF`q-TX-;(4slSxA{PANV1^vLb1oo9JPf zBtGTGV^_97?bUBak;zjf^&I>|pw}7vW8htMz=rhjc`!a!q~uk}OStUI9{y*-&73nE zU#5#T7bTH{!?OzDDoH$&Xp$s~SaC>yf=Io;0C-9Bf^ET9B&!ZqX{z4@-P@YnJA&@* zoCRxMuvLkzZlm&o?yXIn0CPXy7zfcLv>$HE|ek!6pfFNZ6Gs zY*Ukaf6)C1=LVY>Y;0c4f?q#h1#A@kCU=V*#aqxAdUwExDed~D zyr=?SO>mJOukoNgIIt*%H3u@y?Nb1>ABy%v7~vyK~(U%*v4Nx#eY|h=9>_3ALfkI;Xqpw z_4kZ$X3xUaaKRvAX9NW_hYC9KjQBn);WA3S=7>D#(J%byxGc_cWSi^1w}~8u8O=utd-GuI}|Mv(sXOIfSAjR8vB5X5Rp@P@$>qg5=ZETD|B3d~-CDXEgd8cF7Z zui7fY*so=|Eklmm*>kHh^JMDb@;)fypuU=whexl2Msg3k0y+kLF@T&F&{YcP+W>_o zDwv~CEB1&GD3D0M;`H<#XF;Q_{km?rO4&O*takbiDmr?EU2(@k{iRPK0x#2KoNq4- zb4YTm3himmUZeo}0(%_mUj}B6qy5uF@#=08g-idMS2f>PRgPSHYEVw^m@SHDV)NeB zG`qX^SF`{SdkedTu=H-`GwfhjQI(a+K#>srdDgX-SGM8xDqieDpe5jtfwi4#m7N7S zzS_gSqVx<2YD?4~RzX~D4QW5jRwNq+!SO;C9QvIqsGBAZx)0F3P!ck-c}kc7y@Nc$ z>EY1^g3@FX>gl#n$X=r|*6+g4hFR&zn0<3(%+5MFW-H0VXhB2PDth9E{v|>@Oyh79un7PB!p^$; z7Y9FXUUx*O-i=88gKYQ16ASPDsp8!;IfQV&MxUK2KcaW23{tp{a_l)U$oB3f%!eEx zeH`6j_p6U5@_X!YC%@qc$Fb7C?p5aZr-e9&&Q_)?Ql1tbF*L@%4hoayB#Ptmd*K z#sZOT#ureELW~wpb070Ux{efk5HQbPgj((*lv@_CMcc2}%F(1NRon>3B1KXoAoB&} zOe_APD#$(Z8Z-V>0@>3%qCfbl;+D9$l72{)E3*jmd(RX+F(9^n3@>rjW>r{b<7Wzg zswP?yKMm1wd`FtswMtV#i5%{};>Z#6PPAuLrGJ^KmU?Zq>a`yB!LwyUT)oEU7|C!q z8M>sE|B(#g&<6E{VKeNNGuu`}`YNsFVmT1gTnl=xqRMHnXW@=d(O#PcWTf`Ghrswk z7Dh@LsaEhfmgWw79pMF?Qes~kjohmL=OB$-rjKW9;=1@$B8fz*Dw>FUw=Iz>BawfR z4rB5x>TY(mE{fGlK~RJp4Kbt9V+~mPSC4s=kCTn1hVdadZp&)W!Qf}d{=6jEaqQrd zW-++1i1R+dxlXp5l9}8tVnrfbALhO2Z@{5I1Qb7>-dx6r7}P%zzho0W!QB(M+o|1M zD0nD)9tsicc}NDw4jFm8uS+t0axbhXJ}?I6vg)+sSr{p(x&G@GO(L0@x&Jha+mA#Ld>2{YO#L~U_ihyyIwII3Ay{%uvV1AEB-Ys7rD@ymkACz$%;0-0RRs=S>b7NQdwmtE2V!| z7JZ>h%UXqp(if_)d?Tj0UYsd@;RS=?1p{TRYN0q;d}Lv$^cn-52W0+{c}G@)>s(7@ z!Z{%Q_q(cp2|LoS7hI3@YJT+3{%<5T64EqVCN>8H?`pT6n82d3SepQiZlp~?hIykw;mn((w@ z`p1}lWEP#dK0?bnIFCBa5(O1eXTorUK=|*O;P62^4zL-CMB{*m;e*wjc@waVv0vm| zQW5>k>QRZ0*PPkRsO|&)btIo=CGVTTA_4h^zK1Pd#hU6K&a(B$l+KXTNwE))wSSQg z-^1Iv1c|@C5HF*hzHg73Xhf9-M>M)S68$ggjp$?4OP@ziJfFD1eya^K*Z0yk z6iQ7=1`m0(C_llwc(IxdyNyYzXac8Yf<@!_ZAOPmf03*g>rHP-hZNI71gas?O*id0 zay(p>$>LdR^#~qs1GWnAt9knG%BJlegmsjT*N=`xl?#faFQ&%P(o7Dl>yMgDb00fe zlqXE-QK8nH+|<9ZBpe34M3Rs(Dg0sXVm(3O(FYDPXnJsx?G@l5$Ob#Gsd1FZPb^kD zs|AeM!;IL#K9mE?j-e3IBjZ;<7Y7|4eX^h_DZ2#eha;)T7PG#BG}J=z0R3iFrv3oH zMpXSwGhSxnZy^}=>N8G6QEiU^BItYPE!O9g@QIao|DTnBp+GQe&i+#$m<65pdGrg6 ze572zC8A*V8K5NQ#Bw3|QB!b_=25vJRXhz#M5P{}R`W!NTnMjFmG932`)!5B0p4CxxsGX+|xD!d1CKpIw}lGzf=^5z+WZh5-xxo&R02{O%7*9kbQ>u_b%wy3e7#PP*SVx zO=C`T5#&LJ?cu{Ff@vzc6P>f0Bhl|6dZ=_*{6|Ch6OAN(LK2ZE^95rjdSh-pLVYBH zvZ@`c3?HIi8EI6}QwhGNb{*1W*TFJO8Nik$+aekN?K~H8W*RRpdAZuj`4AU65Ro;E z9QagA1&a;L2>PeB&DrWv+jdYL51x zZoY;^;Z{KbeP~%$EzE+gruj}Yly1;kcCZx!Yhv;S{=4BHa^R+!o@5F2qICG(%*tY{ zkmRYn3@a1Z%53V7R<;03P%H}FO={z*8VIHTat#B5<64c^czA<{Ik5XFqNLyr8CI=%R|eiss6QPu z6YoPaLgSucLe@fA&y1Hx>ND)5Xq*o?szl)tsn1=CpH|c*>1m6$^m~vK@6~(3z;nVR z5jq>md20H!_1W~V#l{vFz`F%l?|LnQv|)#Xgg!*%%$DM#04Nzdn`N+J8ESKFjM`kw z2)?5DO#Qd)=*f8;r`pF7c_;SM*Z{Crn6mk!mXH6JskbnY-l_%O)m~9Sy zxdIt+h1rf4U3877)=sj&D3V-CgfinkxE)qffxEJ_dtwIT26xC-)GSq0DYk7H^)8y2 zlc+7`&Bf*->_-2(5atMX<|cMyVgG0P$Ux_33-SjaF3 zvdyrMUM1`_ydYbq*PrnM5qOnm!Evs&zE#WH9!Hx}Y5vKvPlAh4Ohoz)iBV<0Ts8A( zb5(kdTDx8ovvwVI!rJvSIZhIqq>#>*La_(iD%u(PTPkF9WM%x4e2WF%bKN0tkwk!U z$%gDVuy@P`T}iGmGlwmD#CK-Ta!1zs160-24<^r@wiH5PewbY93@&zXJ{Dg5hL zp^Z7}e$Is&kPsrKUJ+A^4ubca$|ONjtDIlp@QI^r$lR{F8g=6YcmGB1LH45!TLK;W zS7BK_`eopcA@s6-N7-N$xVV6{&Ei!c4 zf$tp3re7-GL|RQGqF<-~4;>_wV{ZI4yL%;Yp`fFe955J>%*Od}ibvIhnB#>bet=HimYI1*wj*$C3_4@a~J-I9)dZ=j&t<1&)pdegwZ}Ym>q!izU zB7MfhNE$>ODo${}f#o1xE^@zx-xWdkYYz8Y0X;b)VSO#o#*lj}=>F?u_Zz{oH?9uu z3%uocsn_vRQ`sAVBSQ}N8--2ozlMnVhQs|=d(<~n)V~JZZ%uZ;7A$+s9`!X9mBbTC zTpH;$Dh*i&+Is6}s7C72uYhy(Y?&Xor0EqM^4Kzg`IW(Wm~|-ojLpsF?1%G7fz?@p z`!!WuDJt?u3QPF{Z4Sv&MlG4@KmQ}$WXABZ->}D~hA5(n{a1KaRiNi<5GnF^P2w%R^ZK~5CN*lZH**<3|7 z5egTj{jUdoQ9kQ>IE+Bs=k$?=sivk8XV;{}A_!qLcj&){vpBIchVodvm=GI>g)p-= zcqh&Q7?OQupCwZ9-!>Q=)=;|!goYeP6fK-53u(6QasE;@BowD4P(n5JgFvy|5>Ix( z`}OS?QlF=rNr_ml-w4yE!b2l5z_Nuw*F^3lXBE4J@q9-Sw@;C8i=uiey4;4MI(_Kr z*A+9wT6$qOS@p}JW>8JD?=YbBDI_c7@SWy$uNt(4{QPTjHJOfif%+#U_zr~}3BFgU z%Cc9D)ekX0`dnCK1)JHJ536dyrv=?1M^}^k;}G1~JM#8HgiyXCEAUC6s&1D^(8Q9R&JQ3{PSe;c$I9}a(Y$2URV}m9rvn7 zZzPwn`_&LOgZ?65hrmmLT^0j&gMcmgOQbQ4Bbp4elxNg>pE1N{W70FikxP$y)dP!7 z{hc^|h+~c(a$iic#v+)HPyWCF5Ymxn43t+5UhiDIjX?s;`9uhvt};8#7$hdt(Er#{ z`Y)o;6jbHJm(*_RJ9>pMTUMP2ZNf;US|KVi$#Ue?tzDgGX8PQ6lICfOho0yO)&uBLf`%PLVluA4M4zE^DURYX1sb z7)UO46(x)=oI_YtbJaG zyH`4RH(G6;*|?F`Rs2rMv#QaPo;8|#@e83H*hoov$Z205D;O=k=czF_WKQyq!R7^M!wosQxc22NX=nF-;j-PVqfmqE z6l}z_jza}?DlNEuq6N2Lx8TU7BDzj{2Hm@r$goW*za3C}dX)WZ;L`h~j8Rp>Ypo)> zt?Vb;v;S9>P;B;PLk_gX^hOmlZ1&Y7XTK9Ru=g^_K9ZrMU&?EyddV;unuQuWOonDv z4DKJXyl%;G50z~+?=@EYMzWu5&;GwuLb2sFTVj(6iY>31{T(A`-vtvHnrrq&tx!n_ zjJ}Xw>>X9?%`Enw#)U91YN1hq7ZXCRz>A3?N8m-r5@AV@)OYBeq<|gz=i=7=Y6xcp zjyMq}r6|FlrOq2TlB4{Xy3U5jmz9laf8yRwQ6w})9ERTN>*R0~ImmvcJFD26L7xoJ z9eb-8gVuoZHqd*O$}U;4(vnMJ#3NDVgXmV)60|9FKO^wA6D{2&21n=&^(k8Yd?tp{ z)u)TkghH8s`Zzg?ECI?}7|&DoF>28@0NLxX^~tGpbc@lRjb!NpIWfhcQcRExMrn9O z^BW~wqaN7^lHCs0;SWHadLJfPV?JS1ZyGf!Yrj6ufG`QZcT|nhz>#bUH3n}}mxgnX zgoIGQGjl(^3IQiXyDu_--iR7m2=$w&&wMK}hwP4?MYc#Y9PWYWZnYk-8BFS`DW6t{ zC~Wonv@{?ZLqgs~RI?QUA)FECvJ;;dl(#myw<(?5?daT!?x|bXb;=fWZ&q5mk2Q&w z?xx`Jzz2z_c@nwJsqa+)sNJHj`-oE4Ra&P`Gx%{8yisZFwkVBVly4>BAF6;xrLK$S zZMUg;tCB^dpiY8Ky;}&DUkFyS^f^ga;e3sP5HF!yN}p9oSJ}3Ra_%;X0da#FlYx*528stEKT5?_N{8K>F)K);jb5PbdHB}%<=5E~vo*W?@ZK*&)-5-z3s?wZWvPVw8KbK9G!|4guTyTXM! zGEURpQlN8348b#RHQTG#z@Q1$>k8-z+(o1(*3Zvu6szOCKK516SPs!DX#od$~a?FwLrVyRjcUD|K(O;r3=)^~Qk7Rfm$ zeq?O#Ey@z&ytgPvz9K#6`sShxPu1&k;)#C|U6I{tvI}=N7iD>>4vid|V~cAwsTKFB zLi*`0MNo<|^t2vYvM8JL&0Hsui0ITj$*R_uvW)EHsIPV2xs<(E?!NeGr_CwT+l zE|-hNRf-Hrm7;(J+q?poT3T9PUE(eGRz@J|@K5zNn8%Zoy$z&Nnc{7jTVB&pDN&&> z+kr_)Eme1TSKnFbm_W)p2xl#hp7qYPpjgP^XvT{+%E-LZ>!rRLBp>czx8Er)sH`QM6iskW(WF?gH{q5aMo#?tNryk@ z?An?N36{RFJuWywOTNmB?U$PcKqTg_me}}-T58$qipu($>eZD3!^!FJU|b?x-(KRa zufC=7TAz0tFs#?Yx(%j6u+W?(RHfX^jwmGjm@QaXw(9lv*fsT2u#7X>rnYj=@(%8(-p6x0&boVfI~_p!<^jUw?&SmA%iJSwg!`;> zfd4Z0S&x?cjiXJ}B6z06c}iKN5fWAB#@<$3Sq9?1d(5(l_1*uIWm8u*OGkr-2#&_x z&Eg>?kPEtVRf*2fmNImAQ>&dgMVe?BX`DnYdDhKB(Q4>-(-*cO9DbtsH|wAnr8x00fY?^Em=#S zQ{7NkQ+~&S+KNiShMVHTUZ5JybObs@OL4C*zp19OVg~eR2M}xjC5C?ZU0Q~nY)Mz0 zBVcjarD|#O>T7*#hIN{jUR+sISH$Rr`b+8O10il>6w05jIg1%R zrR&%?BB+s^Hk-jvnsA1eriPlz$pcWS#E(VCKMJxa1HC~CUI)Nt8-Nsiv^M&x)m4@C z)!u7WMK@@e_hv>an9j4h1BMR5;SR1FgN~&t>y+uB+BvS((-Ep{#*HV}gD!n&X3B=w^9qE#unNQ98dHux>!a*}*1g>DR7~kmilxyaoty zJEA!I&!FV1i{6_4v;24L4vmb1qy7>a`m&dKe~~R>L#v(e|mE zcrN`>`&2)E(|+7ObvxHN?B#H zgS0@Hu~P$#RaSXcd^h&n!}me_|Jk%Q??1lWJOT?idufU9rduml`=m62XG*-M6h_GI zxvFq^UyST-r(=k-bq>hxX|rl>FTbO~=pb{e>l;+x7xFC5PNJP(fJ6%cJ~@d_J|&4x zIe|o1QHOOnJLWEJ)SUX-x{BJ{R~OaZdQ+{8$KgnM>M2Qi+7~0`>0gADXM7=2j>PU{ zq|O@launSFG|W!vq-tHCR=Irt+BMzKSs-#U%mPkI%PE-vSB2OKlTezd>*4@rz9$XMLdwd|iRR%-1=; z#4elEDXs_j(@&^FV=wyo$T4uBrCkQCholWlg1Y9m*g$r;G?7C6o#Kbk&8%X(KIh5+n2H zrnQ~IkAydouYEK+fMB6eUt2TM632PM{5jmb$V`2TB~Eheyg1V8h3WbWtX^CvpYm8I zoqF|>cB&~a{fka{8P=3H(pVi8Gge1hy^Q_>b6Mu8=d!HGkRNGfa@wiqsWFjxYNUyU zMbar&CfTtQ%SdaEagixwqzPesbV8_E6+4!9+!Fm>#`|NqwTL+9+vbDD3k~_r?uk+P z&D#Hh_M8PB!cXKkow=+rcz5D9p9#%J_A?-|9b7K&`DeFHJq-K+t_L@S-zJ`$am#Rh z0*~8IItOt1q_GK?i`yno;^*VPpZ6W)(ZhQM@w~VhxEfpr{@J)jT>gJDN$}hZ?i+b- zl6TxzzP&s%NN*!?rtuu&S&GZ%eJ#&zzzqC`^$O1((%D8?bGElnP1g#xPuTvRGoY>4 zPIqK$^R%xdZx8=hc-gNIif+SR=9BGHJ-=lR*vTCCJC>1r`*{}P`bc9sX{e=xn!T4) zuZCNe`Zv}SHcx4!Vj5tSxmbdp<<~^pNoaFR-1l0(58z*FYq#O#Zk@~<_Idm;?Xw?0 zp~+6_Kfc|z;$J~MWZ<%Kxww4X6xNc=q9}avk7(KTfro@QOE; z*GtI+N2ASbo>Gu(khDrB^C)nRY$?A?N~QJXs~g~NDp%iphnhiTBVi*T$<Wwobj)reUu(=};4fpg0zVnE%W(EFyO!@$joEzC=p_DT+z#Hi z;kJYSR-U`@>*VRAEqC+u^4+ox{}!IpimU{; z4>#=@_FHgUaXX%6oVB-4-9X${+(ycnE=_E91!$o&^XTGQp%-HPtJX=yoZI%%@aVxI8npH0e%@ zDjV1cnQ>3&)YkwijRQg)IJ>r<4VMz{9W|9bWVM@YI&oVetfb->cUpw~5e8`rRW}Vc zA7?>~(bAFd-d10`T2|0fwtR;co&kg%rLkI;3ALd1HpQVeWKkvO13JeBN}^h}c7_S+ zsjsd@@Oj7F+WKoMZfP`Jzg7UgIZEm zxq42m$fk=M5xxRH4S0d$&oAzDQuWnKQwW@t?K+^uS!EN@9BuTRn`)HEj~y%kB{?rZ zQ)09CBS18F10^{RP=|pMXC;?Oa%X615-g*?w00UmuLB^?0+KwDAqtR)%!Li z0c3>@Qqnpb-n6EcJ<`=H1u5Cls-o*2pg$eP0pS;yr>Q+LsmcSSQWKX7>(;rxni|=_ z6Af6KrfTVel}&Wn3}Qnd)?@2U1&Rw-xKE*7t_H8o zHoT+<2u7-T1Lt0@;WAFZ~5w* z73Qy!&PE&N59pDlNb1S|QL< zM+XzM@O~SJ zo=#Uo4N1uac-gM|A4Q2T%oXNQ^{fs%Pn z(&`36oE@r2OEuFftCPBVgjx`1hnb@#3(Rem0`M4t;_Lu!$%-xg`brwOLZBW8LYy6H zu2iTA1#K3v7C^+=!RBeBs3&HWqN?)ME7@gbIJE&I&JI^B6(4~kK>^$ckT^TwRa$l| zAVj;Oa<$~IQyb#!;8)A~)L>Yq(KQO`$l~lE-N7Noh-%Kf#z#j*RD1f)n-wa z-4W%LHU9R;eYf)6iobIh-r26N@MYznTNz~Yk;~cTpWE=8)WP}?w-INTf2uWx$@$2v zBX}BX44bDa42as+7&GpSEuWOp{?|gd$RxkW9%3$QxXrkH+*;f=oLwe4gYWscjkrdf z7gvf~hO5BU;5JdNO*};=Ifv&s;f-xYFeH+}wr${*GJK#E$-Y(Cl6O~Z8K@|3RFF;vw_`%8HjF`LUEYA)0S*OVAf zDNPNST7xLadF0sg^w_>Td4Cz#NcrZRqI{k7IlF9S+Ifrt+(@#O-M~*FJRdg$Hy^hj zzeMdl=X>EDd%+VI6`%+QCb-#TD&i&R7lPUtQ(DyGxjVKzkK7aeF6I4B+#2KsbD-YR zUY+M4bHmAa*?4YL#y5j?avyAm6F-sh^#L=08^UddJrG&ZGzmjSbeQKf;D?hJWDvHD zbozi78DBQvBI7&2a}(+0;zY(bh3{OP$oOXP98Si!o4n_fkH`z=@bm&#gR|rXYk6

|D1cj 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

pPSO{1@ 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 VDrwU2WW#sSJY*LgD*q=w{|{+E=R^Pi literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D10/tbx_d10.dcp b/official/2.1.6+2.1.beta1/Lib/D10/tbx_d10.dcp new file mode 100644 index 0000000000000000000000000000000000000000..c70e4ff0672e55d5246b3dd4638171be45fba7c2 GIT binary patch literal 819351 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

  • {-&T&-_+B- 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

    mcY;>I?&sN{nm@QSyjq6g*XF4S*!!CO# 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 z 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�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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D10/tbx_d10.dcu b/official/2.1.6+2.1.beta1/Lib/D10/tbx_d10.dcu new file mode 100644 index 0000000000000000000000000000000000000000..7be810d906e9e1c5aaa72faa74d9701d2ad7f201 GIT binary patch literal 3292 zcmeHJ|7%-S6u;-SOHR{lmQuz;iqttqD5b=@bft{arZG!LTVtDkVT9S2o15eL*;BHzMM@PylfO{X4grz{1=%p5tv`ENl{^}7*3kDVVN6- zG#&flO7&MRf<#W)rc~^B)5o-9N(Q=PU~#sf*qkn?eGGT5v(Z#K}XB0B0pspIfAM!E!( z()BCUV8S#kr|7fk;G|_%b8g<-^^v6Gs>|gS?vWW`uljH}>DbbBe7BT|4^7ynk8*{G zU8F3NlzD%dG+}6hb8j+8q>==GHsv^FA2z-!rDOX96{I{TEWbpy&lpwH+pRhvRe3&s zDOnZ&^DDJo=5+A%@DfUD3aYC#$8D}`Qn6sOJ20m4*luHJ=dry$fIQX^^)4RUui-sB z_Fu`?dCWthd&xKHQ(chzceF;7h$`UVGDgl4n@sgl7Vgp* zj~wWrP3Cx=In+t_b6Z+u_cvg(eqt=N_4l}XGqKsQ#S>Ph;n#<1qVgLHZzF8$(2fw$A&HP0f%6E{2(t)jgg8P% zhdG3d4vPrO2p15t2p17n5ON549SR7g6kI~E5Nw314laU3xQwu-!v@0Z2yY;4uECoK zR}tPqcw2{e5Z*<258+w_ZXn#$;TFPeggXcyB5Wai6oF3=?&|Ov!aan~5xzk965*>6 zh#>Uq(1UP11v)H;{X347|28c8-P3mApZZKi6Ml+i6Mf)oxz78k|BV>gCQ8I(m(*AMFYrm z0Ai33BM^c>1DM1l{(~&V3FJTUACN!5V;~^Fe?Y*2EkOWiq<{nS0We*_*Z`vCFF^S6 Y7a;O10z3xt9~cPv;Zst0NM^5t^fc4 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D10/tbxdsgn_d10.bpl b/official/2.1.6+2.1.beta1/Lib/D10/tbxdsgn_d10.bpl new file mode 100644 index 0000000000000000000000000000000000000000..363a9bf14c7f262221efdb9511a50b50ea4073ff GIT binary patch literal 63488 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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D10/tbxdsgn_d10.dcp b/official/2.1.6+2.1.beta1/Lib/D10/tbxdsgn_d10.dcp new file mode 100644 index 0000000000000000000000000000000000000000..df18626527b94a09269652ad294f194673f97380 GIT binary patch literal 28660 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 WF71f+Y$Vd5>DrDi{>dEG%zptDnln-W literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/TB2Acc.dcu b/official/2.1.6+2.1.beta1/Lib/D7/TB2Acc.dcu new file mode 100644 index 0000000000000000000000000000000000000000..78b990b59b9c9c4587cd7e085b68f19c15d4911c GIT binary patch literal 35600 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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/TB2Common.dcu b/official/2.1.6+2.1.beta1/Lib/D7/TB2Common.dcu new file mode 100644 index 0000000000000000000000000000000000000000..caf98bb8634b4d47681c528c96aca21d7953468f GIT binary patch literal 19757 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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/TB2Dock.dcu b/official/2.1.6+2.1.beta1/Lib/D7/TB2Dock.dcu new file mode 100644 index 0000000000000000000000000000000000000000..a8fb5ebe762305e255b658b270c21e6b95fccdb0 GIT binary patch literal 108135 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 C;R#Lv literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/TB2DsgnConvertOptions.dcu b/official/2.1.6+2.1.beta1/Lib/D7/TB2DsgnConvertOptions.dcu new file mode 100644 index 0000000000000000000000000000000000000000..85fe1eb41f494b24a8c3e63cb52779accd79e9e4 GIT binary patch literal 4828 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 X#@v=i?QYBCV=F995apowEr|aIoNHdW literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/TB2DsgnItemEditor.dcu b/official/2.1.6+2.1.beta1/Lib/D7/TB2DsgnItemEditor.dcu new file mode 100644 index 0000000000000000000000000000000000000000..e4eb18ba2e7f5e3ad754a70557a71a2e4fd7a14a GIT binary patch literal 38477 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 rjdp_7E>s$68Gn{_ge{VQKkxqobO+d4 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/TB2DsgnItemEditor.res b/official/2.1.6+2.1.beta1/Lib/D7/TB2DsgnItemEditor.res new file mode 100644 index 0000000000000000000000000000000000000000..938763ea4eb730d48f3bdec584a4c6e0b8f5642e GIT binary patch literal 2520 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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/TB2Item.dcu b/official/2.1.6+2.1.beta1/Lib/D7/TB2Item.dcu new file mode 100644 index 0000000000000000000000000000000000000000..4dc8e06bc1e6fa67afcfe836d9fbb521c34b0c72 GIT binary patch literal 135570 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

  • !73~4!h8pK1kAL!H__P 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 MfwGt-fpo_I2S62iR{#J2 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/TB2Version.dcu b/official/2.1.6+2.1.beta1/Lib/D7/TB2Version.dcu new file mode 100644 index 0000000000000000000000000000000000000000..5c0421e84434937721fc4f12130767930113de01 GIT binary patch literal 708 zcmcc5z`%cmiGiU#Bhb{~fx%A(rfCc|1rmCCF~RwzMaii#Ax=hNsYS(^`FVN;iN)?Y z|BM(4xFCXhnR&^E^^*;mQrLqli#_u)OHMdndd~m^$ti3=k&@J0m_Qm^a7j^SUV8nN z|JT#F9P^4Z5&S%;oDo=(HNZI|u}HM2G(C+o0HhGcP3Lp)NX$#gNp;K2OU%isbp4#z zlxzZZ3dns8nVD%0Ov$Q3A^G_^Nr^>91_lODr+2-1yuE>iN#;Kgumas@q-UsS#-J*N zsWPA_zaS*FqNMA)x2p;ZlM6_PBv1#EN`*2=cql+j(Gm_pl7w0~1LPMrb>`sA^k>%2 z>uNZRG#D5a7-lFi=^3W+Flg|AJ&{?JSORi5$SVvniVA$m^O!V{eFU_afk8u204VX# zg@J>Chabpq;0L;?KEMIU%vsCC0;IUGIRPlnpsRr7G*ox%yO`@JIOi8s7G|?^GNn@>LkB2v_$A2J*FRzpH|v5}jKy3FLG)q}aX43wflZ2mQObx-hJjIzgH3J* zn-U+Rk_4lI6r&OklaK%#6APn)0HX{S5V12&V9R8TWnvOy5}C-xWW&JZ#bjr~Fo|I@ S1H%*!B?X{?0!$#1ArSzszSZ>r literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/TBX.dcu b/official/2.1.6+2.1.beta1/Lib/D7/TBX.dcu new file mode 100644 index 0000000000000000000000000000000000000000..287d2210874d79ab3a7bf2b29e65ab8cc67df03a GIT binary patch literal 137912 zcmeFa4Sd{Hl|TH;%w#f2Ca+D?7uu2(T3c*liqr+9(7ZM&c_T^RP%P7AW|}sc37HAB zATU)bp^8#j5Go)Dtf0731Q%RT5Rf9GqQHU+NEMW#1d7mqVQG23-*bO2_ct?X+0XMl zyZd~eolmEk-#O>LpL^~(=bn3ie=v-aduMu#8EgAKSr^@Rjp4c4IAx@uw)V4q4Qpyg zLWxr@?fs-NG7SLy>y3|%_J@HwepPt1b}-hz_~I)Udq(m|i>JcUwROJH;^g|x>!L$j zMm8jBN5hHVRCd<+2XZ^Yv9ZMN#^1ha;1en6>yD3%jS!fB+%-={%bn-irnumIZ)|%v zTHHqxfEqW1V$tyWrA;qJOB8H*IN2JC4Ge`N1O^qbJsuhe4{RW$OhK4lB_0?gxLkod z{iPJQD2d8x8euY8Xo<B8%yMalI&gV7C11^PzU+s*w0`Dkh1 zhVXDWA)Uph+r zEE(VY)>Vl}iDVIv53LW4GTHq52LBK(sI@bG)%WX#(Ng=dwsABZN`~J$X~m}KbO(wK zX&Vkj!(EX`BAnbuY^58ES~bRp;-ha9H!}m*7v7u{{NIVM%D_wR4d|rkXnZU-@D8ae zTvQ#Q(db|-@h&m5To@VB-VLFF_<4O>M#B3^G0jD>YA}3WLws}~JoIvAEcm^&l-;4hSW;>n8+f0%sZNm!C&T?8*^)JeM#vl=q!lR18aIUdH=)c;2eYQ! z5I%P_9y^pRW%IybvSl|7s*C~>X{;?}2=l3~ zDI`9pqY-(HLstn6)G*Vo$I z(cBw8_Zufh3s&{5TiJPfXV>b^SFd}S5)y!x_OANAw$9~|8Gm~*QpjeQGv}WwM`lEW z9c@kPI+{CIw)Hi4{6!MA^|q{QYU{0UXm4)%Ga-3|w089gx_}SeD|=g;oA%n|z0K{- zjeX5cZvYZ0Vi~RRbHk&j55@+De_wNPG`L|?M|><17U*MN{PxG9{tcTtYq)BX|35-;Os-&&UdhYF8+uke{E@Fmk zl%$K4gD!}4O_*D=w%)#m zt~DDLGaY-(tO7etN(@rCFXsZ-7autv0-j5W326^Ul3NHWZL{m%u(GeOt5cE|0_qw7 zDNzdOTC67dHo{-IKS?K|A-d$kMxcV z4JO%!3kV3B09htKPY7$*Q{U9qHIJnP&|BSI-7C8z(pT)f#@6OlJs4PwM~uLt?%uw2 ztJ^x8x>onD=~e@#fsQ}@HE94rT`etbjm>Mih4YG-ndHr^qRgrQoYo$fRe}>hHAkjC z*VI>T&zT)9YGN{d5=1L71(C36G!#|pMDO7F;eYw(75@|sHa0c%u3OdC+Xm)W11pg3 zp61?Oli>pbv8F>Irx@!)ej!7a5zyJy(^21UGD(!+B7%`i+nJnKk*NU5>}>96Xl`n1 zZW8XR=<97<*U;S3)ziGHt$B50YklW(RgEdc)VK6C_c#dYrV>Gz16|+OEbLHb0-Ks; z`~iNQU0SfZr+ZyPS5H%OkK#N&H`aG^+Nr58fcCE5=7zpb=A;yv)tJWd^Vp+3%f7Q4 zk_b&<+te6tWb+DDmx`YB_x!#k(WB}I2GGa7TM|kW)0M9mW*pTOozoK@hKx8YO-WA} zVlY7>$$3UWUPE+BTf%y-KQ}Zu6k0zNzBBN_>!=s{$mt$wk-w=MRaH!ukKYYln0HFf z<>9ftxus9KF@T4jw&ksT(to8r;pku@86LF?T3kHiGyMYrJg!U*4mpZopik*HiBJFQ z>GwtpS_X%Pdcyt5=FL~Vc^RZ$ZxX9_!(ehaG_rWlO9xt_`L$Mpxotn$3ANTtZmM^m zyy&DCz$q56cSHQVB>?pgK-)gPJ~lX9_j28PqD)h%AwZPbromAZ3dQB%?D)cnr*`p& z_)y;r4RH1U_BnHJjr#eta^z-G*ZRaADXurou>l))XwQ~` z{(&OYgKMMW2)j0v_zw8Yf0*ABEv72#!0I2p<^<6L91t{o=p|I~SG_;wT+xd(B>1TT zBhQ(+nrN=SZgj_BtRu9U1Zzk@#YrO&C15QP)C@EP69`K}>p7En>N^@RPe>*nseCk=G2*pOW?9nw zA66i92+?SYClv*lJ1UajJ^=k2w`sVl)$WYoesaq8+zBP`G|&lOnphe*MOU00l? z&EJbIu-lzR*%Xcp#=_u{k??48Fq{}BwZlhg)VdOP4k@{=sQyf&Yzz(ccQ#VQCB{hT zh{6oQ7$JS}b4gY=S$<#&l7$BvhvJE_viqrNrI>2oVNy9-!WT(8Y14GI;LC@tF=k2w zePM}jAGU0eamDWmC(sEqNjiVBYD$jug7qf1426$660Oz+vq(E>ry*aBcJ+p^bai-O zHd00MP#bpXW550F%ZII6D}~mnGZd* z*8F2-&&u7pGy1W^WTF!v%NkEQJJ7P0v7sUI-25XEwuchZ4Id-nr1Q8fVbQ7ecRHyj zXZCPX_>#l2fRu-0OCWlWu=;s;xvz3H$+)0-R(C;K-XccfxgCc;(|KF(sO zmUH+mUA_5SFyV8?`b#5}npR)yg7Jga-KR(BUZu*Y5S@)Z;epZ6d8;>slGlEB(eu&i zR3ow_{?oH3*NPy?hIFfup5Tw-(zjVj)oP<;ua}fuYY#&iAPrTxtTg8Gly7B}bpohW zD$X9Bl*u!d-1A94DMLZvx-``AbNv4K?B<7I=&Fa>`u_g#NHX#A zRS)_^Cm@BpclQugY|*Qx{e>`#A!_wi=rv->ENaXvwMOnG*b+XqqALH@m4`k`ZxKVL zQk79QscCj3-X>DGCR^7(^UKEvCtus_>Ll1BlP-a_S#bf$CKYp#Y3C`2^hKnbRJdT| zEX(;~5<0pb+vg}5rj~F6X&e(GjmG4^Z;_}5U6id8sIghhtM(Bn*zQ0QkrmGF(T%Ts zW`S}HIIv4ce^r1Dy1oVnRLhoL`<=FSQP(s$%IOXbg_FtfPGV^^Xjsc^Qj3c8XHlk$P-sY!BBsfTA5vCTu+CXFSh-n=9kElHj?s%vZU_V3P$77(a-WSGx| zLZo)xVgyVoVH!JRt5UXv2TmqCPC5ZJz5F&3PCD^y_58aevn2r7%$)s=(DRZ{uy5(2 zkb!cLiC?+~Vs!^i+UEdMiasq@ThXVoMLXsXr@VKKObRuRNHcNriAx2<2hxN`pXs0f zYJ@^fJlW#HV7JD;zi+!(Tmn`L+=KtJtx_}|C$-oIU;h2SuM_u)&{~5Jjro{YrhnE! zs7xfqpU3>4P?OWC+cUerd$cgN1FBWiV&0*7A!XEwH;1Lehb4u5j3~!i5>#`Ha%aGt zcMC}2$T^`vzgi9e+v+=xbevaO@oGV+%aTK9I6Tk?eY;}{S;B+nQ~g#I5gP5X&Dh|?Q=U^nn~f-AQ9h=b zM5c{4k+BV7c)(20&QTzeSu)+qltI)2D1+>7m{jON%j&}4JHOL)vJlk;6f9rGAPYT(iM|QrbvoGB5m)*J`lE5 zXaZdAzpPNnDOO8O^ZWN*^O*Fq1A;Va-W={9ONO7CUy(0W(UDkg`Djjy-;#uDu}0Di zW`UbF`a9xiRcJT}D=4z7LPKNWXNaaWaHGwPxn?~}3bH^N#n@;fKKgG&QUGa4?9y`E z=EW?i_HgK2)afOnI0>{=?btbpMOp6HX!s9V%9IUwX8iJGNG@P|h$Q1^SxZW|55hx# z%2F^4w?r=l=IX(LR{!6_8*b2s*M5{`1Z@5ACd9Y=8kC%Fg$I3mMUPlUCU?}hS7+Y;T7J<7KRGb;H)ma!C8SUK`XqPQ|^$xTgEFsnP(Ve9O4wOilY z+J&9s=ak8imI@at| zm0s=WKSVlKP^S|+@DXAtw{?uh04kTqvQagJBiP%J(#B+G<#A9+lO!*;>vxyF^bgS@ z4xSDA@zgVB3LDrEdn@qa6~Fw9Q%j~7TMFycBg9bZ2ry%Ju)z4s{UWfeG@5U{kT_aY z7S0U!2@-B+3083L6BZFoL1rgQ-ykd|1&s`$Fs0NK0@=|5)OD*0V(faT9wyODS2pI@ z9Yr7|nq-q@`|y(>5S4=jU893o31siPVdzIMh)=O69#4`RV}F}-Pr59pH<~u-ugRQg zaud-6YB!ez|4xE5Y3>lvmG~|xu(duCq6PKyRgq6dgB)(F_?74H_(r-~fWCI-iE#cR ziiR}JR`t-ylnk6D!YvegPrUd0`$f80MMw@m{ot6JHAW-hU6*!zOEgwHsX1>RyMOn~ z4x5p**6jA(#Bhw9B=YMQgo_J@-Tm`lY`Q>VQDtzbjk2!-u5m;gxhqslAhl+v!OH#e ziq-X!znWxb^^~vdr`cwl%vcrcCoznPM@dD&sb^y~hB#_9TG{M+E*tIG+kFmIu%jai zlj{c)rf>4f(Yd$UCYVx@22Q(SceEn8J}#;2*JEWgm-L^!R(?(t;a=y)5f7b2IPuUo zr+$1JELr9^wtg7B`z7SZAd5kG8xUFbWj>Z7FNR|xkVb`LKEQm^mP6FmQnJL_C6^R1 zp>nI=&m@Jh^#j8upyIWq)1##XsA|Rrm~0xMQwZf#S8QlY8zKo2id_jr#9O;q#fOxg zo4|t6Iyf*8j?pbQl-Q1F5a8<+K6oxS4bM}k9JV2CT{rcseH_`ma}zKCLPH-gpalIU zeKCmXm|%P>jlav81Jxkc%4M>^JwNHYOEh5@lI(_^iWG+Cas;K@=&|KKSw{&Neqt z9pHCj-)?XOsUsVY=UfAujfBL3^B81NgyLBSLM?-%Ut98}8^o2+gkVc$V>X47q4G!P z_1SANf`5`>U-jivqNS8%dh&B0K9G{>rUT6}yW~LPXVHpt6K&BLR>hXV(L~bJ4h&&< zWF_)~3LHzQWOXU?TzR#}<0D^UPG#mswNufXCR$hY59A^cVAwfDP}tYlAyyh#bJrD;Krk23`_0e%CKuQT@5oW7&CE}cD zXg3BqlO{GWO4KYJg(>OUNllXCXg7syHR~mek*LB&6j$rOc^PFlK@3O+n~9pCCj#fe zYQmDpEzt{zo|cBTnC?O%%XOr3s9a3=bRDiQ<*AG;MKG(De1XWBdQ$26Hrh{-P=ELm z;$6Mi6AldsOKc-*ww@HsqCEHwgH3~Al<;^)YMW#`QLcVao9&9t6JI9URWBH95|h*u zj=^5JocJkv;m|M1gkK}VH7K%K2J7kyVq8s8gM~nq-9)*XQXfGFz~_K5Q`+J$GDtEM z$|p!tsn^M2;$787PqoDR#}dEKDA>ZlC8y-fzmvq(GRl6LsV@@c zVvW_I7@T#3Lj%wOUm|v1pIW2QMc@fD%i8*Zjc`FZjCt<@|1sEU%t}g~LPGjYXU~sG zJ4v=SZCi{2=3hY?$?fAD4!pLjE$Xk8-*1i`y9j5F2$pU2`m5hT{ADBot(UNGo;LVq zw6J~z!OiMK(Ehq#-vVKxL01v=EN=T!NNT3h$HqY zK3a)xi3Ix0ryu?8**v!_Slyu}4?MHt6h+TlIL9}SIcz-a?JV}GCQh1{I;=Tp#1DsOaq zUi|cj|0cZ&e{;jH?~VHVhZv{-{&&yJMaV#72!VZxx#O>+EBl8UlCc&{@PhB1`3i6< z&h>Yj|ImUBIrSiQkR-qQ^phK5JE-)G++ukjKmEClpf!Q$JjKcL07e5zAtRR<{?zSn zVYL?h5=p6ij^sYTNLc|PAwe4mDz>Slaho(Uq+|nQ8W~e^*%$;&c*QL79pj1ms6Ucu zhz||4fA_T4qk#xwDIq=jJNQ%>NvwpcadZd*ztaRjl^om@?ix#W5#Urq@;`@VLY-DE z&96LbAt=mdD+zLft1D1d)fJ1_75=`4(Xqsaoma2@HM&rKOY9qWvc9%<`QLS*6n76RL>W*mM`b2LW0&vOgjVt-kh|ucMPw@dPCWBOK#V?=A+61Ks`{HfT50e$1 z8_tRb zMYd40@G67W*HA$wsNMy4^G0U~Y&dJ0oNuy}4Bh4``8j&ut$5COj8l80F>BvV1Z1RH4iH>N&L9+;v;$SF(L*@Yv~;+o(Do7U^aXOWFe{0H;%=sN z?O~k(AJVghC&+y2-t_`BX+4>IknA>aa>%LMa!FRDYT%hoMo3 z8b?yRL0p!xu({{p4W3g^MHA1eHTMQZ}`I5 zr@G|}JI6#;b1>Y($3dQuAw$@Kq4g+cWC?LDUN^Vq{?5wjo$K1Nd!AU=SjtNOM}nO$ z#BMWH6V;sGvN>v+VC7vb}5k#+c|66RqnjZ1?@UQol1gz)oOMV;ZAkbf^`dlPQj|5`e;>#!?8=; zNCkw}D$2$UM7q{Z^p+B2N2>{Du?lLSlE_}?9ku8b3 zU#yA-_{gXIp3(Mb5i}dY|zuFirZ4GZWLv6Z8;f>sU>#Zlg0n;izJc5uaE}i-BzHkXlD~9q&DP~S5ynWum zXm0ON7_RhJw+!GME9OjnY@l;+=&9Q-ya!GRQNqHG^;Xyi{z$-00VVscFV8#$juTP8 zl)v?utDZl|9&>1}opJdb2wn$JYl+mGI|FA!L)S3rGVm5sOmR~{h{m`46A-Z4**F)dPx%@mpv{zi~Mw5+W$*|Js-uLvRt!bXnZXmAs{+%7>{u*wt&b(umqHr9^MH+m!ZNh8!>9(?pWQ? z*=X&5y;pPMmmx7a)&W%C-iWINnqRw3j`b7NT@U}s>wFG?q`L=C7giug=FvQgqtp$X zqOpNLjC}7s$)mZa9;f_IU*6gD9?$v1NKNxdh6m1UZ8$kP1(~UH{@q=@rW&;f7d^n? zr-b&vu1o(IWgA!@UNeBjhqbm9w0obv`Q~V`R9m#OjxJnCaXaW>kEWH0E|o$nG74?$ zT>f#ZRBC;5fB5~MOR3C_TXj$gwcI)ql92#A8(Rl)&{BGxb%8j8@WVc=Jp}0W_IQ*E z|NCo>`UEllOK(G#?8F56Lz)R({>H47UVWByg*I zVsOi^qouv8yVte!)OR$S9WM8G6cdWQN#5vz8y(aw9}0G+-02`!7ZfN6yG6Df&1Vh{ zcQ`Q*xe%y}Wq$en<31z)ItP?E@8v_Eh!iJ7QL4=y&3!#>jrBqoG*8k<*Nx1IUx#)y ztya~P>nw`-*w(qKzP+sp^^^TnArV%S+awB+Z+q8rc5gkqI-1wA8doy3H_Zj7M)UEY zF3#A`8(Z=*XS&vJM4$hp?$wTHxe_KECCo3m@!*PA$G(F5J^H|Uoy*&s+uJ(TO(y|H z)3Z(g{@Tx1Mhii}`O-6y&kx| zr15leybKgspm}&Cx#jA;7hM}I#J&L5?l7Ugs+I3V^H~Lwd?X_u8Y;#-L+D-0wf-P+dFtR~*8oYVrNM^wS&u9cFugyJpJNRyfu_J(5vCcAsK zE#4a~BS6I378Cr)SI=A%31Tc(cQ!S)*Z20;$A5SJpP~hgz3ZA9+8f(X@0E*Yrmkx4 zS=ZfO--r81L~keefx=wqnw=zV8m#_JJZD@u`O6=6VC zeVO(X4ac4lEx{@_G&TSy&me>{fDd<+$z39fuBq|L-alQ;2_x5lG&MGT?!fD+=5l=u zMAEjakJ%J0BI~W}CfnieBf0OVgrNF%I6vCjo8a(Jo#fCk4iugV0FAr7jk(6<53 z-+>=L{v3A6^N^YjBWqRZAMmUEEI`DM#TW8b_IC>EV~IiSIghQxg;d;0isYG>PpvM! z=tM|)H7V}Dad^aRHJ|De z(J!75xF;H1COx2P!hvG@uLv*tqzBDuY=b8@TPdC^~{YY7UCr zCzOw6v^^Y)CO1gRVyTS{lREh|ys9k#U-ta6!m9hwDD9m{Znxd2pk&h*7f58^Z=QjE zYjT9tfNJk9_GgI@wv5KH+sq-|@Osg7E8CD7s@w+5*G*D8KU#^c7WtjGOg-FHvU*9> z3#XqzyFRPCiDJJAx zI^2RNnh$e#3vLyS4V?Sq{Yyasd!aEoI^?Kh;{EJJym|82-z|AkZpDP#lFx;q+kVg= z#wO?*)3GGiLfQ9n%6*wSX7{J=U!r2bT?u~hNbPi14M)`xWD>JvWVDnvig_sxMzKF} z`#HDFfyHEQ<5MD+SO4~uNC}$Q(bd`3*9A4ZrK_GmQKU4&9RpV$>EsjnR^@TT%Iwu03{`d>Og)LFvz$>hp*1ic<4$e)k3wB!H zX`#pZ!?>;Vcy#D+JZ2p}iw4muYD40e`t8`Ge~nh+#z@3&$X#%aW8s9k(b4j|O`jEg zin<4`JZouNvth?uXTf6t#>D~|XBgK2HLy9|SeBs#sAW2_rdyIi)8H|U&PLOEj>hiz z_vL?z7AZltx&zm=#F8(4{r!(er%;Z`<*Q;Qh!6MfO|Q+sprFHOL^*eC6(eM9jdEuZ z@yb_M;4V7`s%gL{WYB&4xX%_ z4r5nVz2Qzxw`+S1(TLqx6=dW%F?TmxWfMYy0?p$<#uRXFAPp zFUXFsU2M$b{gY-cWTx%yBkzPjR7au`5CL6vE`1R3Sd}EeEQRx(ms2V$X8Vn}vU01( zF!ol=6C4yG-qzN)w!3+IuZg>7%Dkye2V8SY3p94zUMO2t+xtw4`=-qEC(mO{%J$G@ z-|pLn42^k3$@6fSvv~+=B)n4F*P95>yyE0}-J#?L8`E!Me9UAuLSnWLm=OPQI8?$} z0^kS)_;~)yHFs?D9EXTXK%pMQRGiTG_Me>d+-075`AIB4a@)oBrT5N$>~g7xKbfE+ zvHesN;+dD1Oo*1T{WKHgI}YM)6xtW&()g>zx6irU0|+M-*WmGQ|9RQL9iI8PK21P4 z?2Ni3QqNv~_nB9D4AfBvkH7h0{pM>u$1xCfjqI&hJM$D(<4=D*vFUoxaWa8KOvsWo z9{ps|w{P+sSK6lnw3wkx!1251-?jQywwMA)wsaNz_#c04{q3Il`lKV*rdI9wm!Ewf zmC|M?;p6e%=9hPQ=3_er)e_1t`D>=%1ImB}8UNPiA1}Gj%9AuI*f;gu!Y@}pVCCt+ z$M=16`e_e&=1YX?8Z*vXvYtPsJNhURF!EJLjGwmc#Y-Od%rBQ(xZ;XaOa6Mp`%fYb z&)BYUp~gGUS~UGB&wM%Y??#ywe4ziF70)0oLz%M?j6eI#q3H9T`7@+kvCIZ>f##OJ zcr-c`mMS+qe$%ZlA`3`su4yYc<69&))d*i+hD{ zkf$J6-_+jU{`&4WK+gkH4tU(teAaLGS^1miAB5g}@x@oYYvr#Y#%Jvd{_s7|JpZ8V zq;L1l`@%T~h2;Z-=05rMToZ=5F~~EYjQZa0H-Wz682T&R0J$H7ijPZW`nQbVaY51J z2R-wH(pzSMsrDb2U!UVOj+5JJP2hNV(TzXO^_m=@op(t+@tbcwl@Ds+01YwzN<+=hIq}LXL*cm;7 z$A1ucEVssMa+noKp_XE`J(G&X9$vH<35CP5QH)>ua`%cQUUN>fi&gqmY|3ZWorILd ztce33zjWJcpI_=V=QNk8RNlfDX4QjI<}@MWRo@&ux!F61 zRt3%bmPBCxIr!q(a(_`l6&Gn2`JeB3<_{n*E2#3;9)En~EU$3_bxlkCF@}qkQXsmN z5yF$B85&FRsB5NJ-9c@s!$ujN(sgVjmn4>|ZoF5-1g2_l>?`V5yi4)M10#uq5kf1; zw;CvHayaLoNi}FvX`o^6{0hzkCR8)kq&)|;?xRH}V$3^#4pU@fbdzKY((XTQd+>$(%KHO_TUq z5M##|>o|^)n6T?DNhy3}0&fDLNJ$-dtC!N3?KP=x2UVdC_`Y}kRQ9hX{Y=tbAf;T- z#N6YZU%)hLI>VdC62^TXl(#0R#|OMs)L7*q@_=_<;era@7fhQ+Je6ilc8Zq0G1GX+ zTb)<0%>tBiZRtX_dL>nq!xL8smhBD<5^UAZmA0jZ*XNFnl@>& z;|*i_EAejh-uV9N6_k zLx#}~!fJ10a;W?+fB(jh6*roeyjT~BmPftD#|j!-^?Bx6EFKbQUFznb)O|mQ>^7eA zurvG!zQPfO${PdKvgI4u|8ljD#g{Mi6jb|p^dpp97g5U1>kBP-jHqK`87u>dchQzjaSPPDO*zee)fs$(8RK3Xrm9q z6{)<|gC^2=tGuD0%G1(Yd5gb4d)l{|_9}N;|6EUdOXXXEx%tdO#-?(o58^JZaEW|N z{hc{1_5`%T3#z@nqy3e;Jykg^tV>2x zhf%(!)H}?fC-}DAZoew}ZI7$+0b3lt4FS>K5_t>Lx6)kz)Hb{VC_IpwV4e%~_JDY* zn;5QD9so)Gg|xF=wAHzCx}oxN4;qnH29haOe{J$~JCST!MrrDZNow!p>7=~OYSIgx zdY#GI^=kUfYL;Jz(aB6je?#i8OjV_)GOWh!VB=~i$%S4#(VB!PhEA1lACh&mBj$K zpt?|LhlA&1RR^GIZehK-vJA$ObKjX>oi72E`?d5Q(EUc(-oUl{1321?3`+I%Mzx>Y#puN)9DQDL zqGtkW&UUh&aJG?KFsV562nKt!-ps8hL1nAQZd?y$7cV+W%geRmrbd|4D|&4L`oKh5 z4^$UQ3R8vYF37fKL&I9tM-?Tr3s8G4y{i5>s`{&(>f4oGg)DfgJgw5;e_m*s+8~`5 zgl44VG5E+%Dq2x`T4(J}ohNDarlKrf$D)@7L81>@YLJPhyAoMb^;!;=82gI(gy*?6 zB(EP!ZDh(tSyL7uA#cP;D;Rfws#w(2rpePn?aZ8MC>4oiuOT&bgtX~BgtS)g4m0Vv zUS&&~VNQ6sJ~t}$uB|EIe^vAx=o6#jMD_3GdMyq*hg>IN*^&@We$uauezD*-1pDMBL$UanFK-HL)L(O*@sM+#o5 zDqtv(_4qR99?&u+K+yW-0%>)#N-_hksamxeRB)Vqlx@ zGNl(slYntHmr@rI?&DOv9D$}6A_7h1gu8+&ITeXl zn7TE1z^tVsQtsn-Wj%GOUO zQAZWMz+JR8X;Ob-;wQaY6JRiC<^&1XFZ3L!cBUZ=i3Qbp=G+ClROvj82{K*p12_jN z-^XynIq;jRLTxv-^6i4E03`({M&#|c+!OmDOkY_$wQ8qd)s=dKb^oqw?5cCtKwLo~ zSc^YCn_Vb#lpxFG2j{9Ij_7O5b3o72QL*8t$ef@~avrKqy?vzgqSt7xlD*)SBdG}{ z{E>S~*^Pl%K2TjQq^m;--e=b(x7)~M-3aqm7oIKqurl}?;kH~KZ+RELgN@qWQOkR> zZrD-9EeGWp1{dR{F&sHQtRwcmg(-$aLZseg9dqjRO4{7QMI=r9tl$4uHTKKJJZ6i9 zR{|JDvBmK;y}Asy@tC_N1L_S>Y?8UOK+UZZw@+l)`&yMIO3pbX47K=BRlc-RNt=BK zt8`%(*}v;xl`=^c{+xqVIgOE>FJ~+@FI5FvLkYQSDYDq}0_JT(-v5RNtV_y_m1}`w zfIL@KCXg;%sLb0*DMbK&wyG4f9p?um8(B+b-EZiuCJ*dm}JrW)om1BLZ|Oos>8JEiYV!v)F+rzsWSr~ zPggNBvVaC<-7=-JsACqI9`!g^U}d~gk5WpbYYWtB#gy`c($S6bN<@)IJb7WdRWtgZ^u1<9cv&UG-u+Qn)=iM4{nlLNhU+{lRn1PXW z5q6_UFz7_>>N+n`ivz9k(enwwEZuL~M%lK?YoX?0GqUT@tiKoyP6PIEtoX8yto!S= z?z7dYZl(_EsiA1dNM|k5wMEg%w4c?}!rxbq$)^q_RsJ$ioo^qgseBsM;>G3Js|7|k zHxp9r%(h5VozWs|;@$y8MrK{s+9_W=U+I%bbugEdUOAL6I*?`v*E%<9rS86SOAcIx zPKv!A|6FT7r1A@*oEP~5u)p#t?nS(|l##_`^0{**1)Lz3x8WYV^P6fd5if1FHLATk$Qmn=4dK7>&(p;AS?elFt3Pl?a+pM zTkD|^7fkgThS#tZ`^;R`+MD_bb6x4zdjf9OZYXaC7ahJ5N6n$ic5FE)mqS&N6(=Bg zFfuAHcBo#A<-U1@C45e^L-*PO*3_-Cq%v#wQ>N7{`n^~g3aLVx?~YXNn~Z*gV3y!s z*#LW#d8`QTG&Oegnk}Msg8xMj>oq`Pb@^TDL8e?4e8)*?>$&fMH$~c{r6ezyb$^Jd zPj*%{yEMVT?VjQu%KieDk`Nb2SJX6GOn{u&rpo^qCt8&F#FEW3Va)ap&5*<)oSfw&aJ6&*K>e|?64O-DUKaI zIU?LpM>a`po*ywSTs5sUI_&oXN6zxuD81W<=tmW*I%L zpEpbW3p4!3Nvib{s)b#+cVJD_Ru=h?*%XL1X(bM$(Te6#Kf~BsAbV6eNnSY>J1}Ad z`LUflGQxn@%B5HfXc0Z9Hb${)sw^(p&Pw5}jQFeaC0lMeMJk>;lrjCX@G9G(6!m-A zh&_&U;K*oF2kt`Iv&}M3&4AU^eaxX{l5Thb{4TCmeSBAUAT|@P+`ulQDFajYGZRe` zyN4KxSe8tbpA)WUOM?C@Gr4Gzn*0$RX^w1_FQAoTy_+?Y#1gZh zlBd=(b<$~`EA^e|Xjx;N)Jh7wDsU#V&{)=$1;>h)-AY^&Udw7}x*M73IZe~e^;&*( z*QNr4Pwcdo6yLo<_`>8`PXRc&I9`-kLQp!-P@y8OwADRv)S=kpKfH zcmW#KOWdu~8q++yK8$-{2U0_w*2yCUr%_;HR&m4lmV@>g_ zXK*aIM|Kpn^j4sO^Wvb?Fmvd(R~HPSYjs(mR~$94axiC$th}l!1F9;uS*lW-&dA6} z>$g;xNvj>HQHfEVtM_b;CkTNoE_bap&MFmAWzWx2_I#A>>PD!2G?(s(+W$KOY)TUJlms8qARjXZE^v&m(!(2TFLzBvApi9i8EtqF9@pJ!)#1dU& zN||*`oUbjDZW)21MSronOsUgy-K9vHL@LG%&UBSt1=+}8A(wzsDbw0L$i&~(6Q{G0 zYfV3!F_-KGY3}glCmx_z|Rl9c7zTCX|a~)Ye&aJ>|ep& zej8LEc;;6z8ixg-k!okr{l?aGbN|`gqozO#Si6Enlw6r zWS(fbQUu`AYNdQU+W*J9jSfwWOhx6*AuGSJAk#~TEzU{3gfu56^Ac(v!Q0HaV+9wR ztDJOE^XAk;pC7u;c*A3De@EtFJI@4uXzTdCyThDj)ts~uURTa_j zko=W*@j)o82yJ`WoJn>?GKThH*5wS%BAn+Q+mF8GyOtqe2>Y`&Evo|`VZv%(aD^$_S?BZ)Eay;_VhZ+elDoOpOEs{rAHpV-)2nl_ z38hB^Os}5W6UO^nV&c>Y4{%oT{&s{BIDrByV1LTRyy{rhXyo&6RpAZ_=$eu4*Q$!0 z`?INEM=tseLJjE&txQ4C$f9qz%4*T0Y*DS&Aj4J5^8KF7wtz)^THWV&PFDB%sQbK} z+Ja67g5&QV#%tSiYK5`$-5GDp*!kX!eKT}JiLuTU1y)_vwpnbLY6bQZgps|wUy7A3b5d*1~NU{6EZTTbMLs?-I{sns=3T3@3^lMlF^6R$Q&eV!TBYYK{M)c%Y$zYPb1!y&LI zn0^t};YsSJ`ol6H;fhOL$h@!B79>~Rufe~^H69xs@tAb&pr=Y%m8ie17O8C0ZNDw8 z&)%rpeoNDMO}Rm+R%z*V^Y46SpqYQJ3~2s|x5AYHcWW%$^8zNn!Rdcja!xo~6Sm4% zF%Vy3x;r)NZz%*iEa^R7Y~*VpWwKkTm2Me;momL>06OVS$Aq59u>rR-T}Po^;mFb> zO^*M^Z9s7%Yqf*GwKz$$$HrOFR@)v!zq;(Pk6ZSb*{xb83Sye+5-s)x<`oQDCfQO= zg3}~RXEEf(>cLhgH>SSG)X@KIM;W^Ma8{XFBgg8wgc)d758C3kdc;+y^+>wm^Lb{V z89vNFH+)1aYU#7uJ{K|*&GtbrXp#b)n%)g*OUp$}->vt;k<;rI(8Wxjs|lElsbbqP zW)Ef>L6d-m|~Y^3b|_ipD~4Sx}}jG z@McJ#EyiLW-1dC5ZhMO?@wI*GIB)HePZ~>n3kn&@kMKBgng8vU(U9?VI5ZI?CXmXV z0T?!nzh!)RRZcrS#!6zMJv_A~WVnY?ZiPtkigd_!-$GAyu9bm3n?qVWMeX8fCSa<*S0NT%`OT^Uw<;$_`kmB0CX(gj@U9 zV8ThYWLGtj;_dCm`E=moYKVCMvCkq1junJ3=J_$q4&kfR_ip>eZR(s(LA^lC9>J7m zL-ZqUsn|E(_zz<)dO&M8>ME+K90=kqZfc7yY#3j1SmXhjtoAV=)Il6_Dvf=)q@i2a z4?vXjI8EhA9v*#xBnk~n0Exd{ej`K&ErRWi5IeT3fMbRVt2|XWx?$X+Ee;QO3#`Qf zw?@hNZ)q@w0~L}ZUMjJh2{XUAsjHE%FYImWYwPOlZ8?cL zuXKu(P94{AsHSEzugf%n+6-2eosNRJ;?-3qG$yI?*5GssCx+D)b%AK=DCV*>&+dgt zGi9pjfLQ^yg@fPr!%U};$@R*HECiwHQIyJIlo3j#R$Z-X9I_=tu@x z7p)2=Ki94tlWRj{v5b{o*vWLbO=U{$`~;e%r38n{PNPc6SumhgdIr-*9Dg)QwPco3 zf5ihUY16#iso6}bg)?R(6@5^Wy4IOWrh8A-g*1^SrhUxV+PJv>_`8oWHfqvot;7Ar^)@*VD_3@SeY9meV19dc zZkxSzcE7UW+!;d>)t?(09OBVeCQGEQWf{)}&#;ait#wqk$Qk(U+yZm_=`@)8H!?Or z&SIkiElW9ZtDcI0M!X@Bx_Ae zhNF_9&9Yu@QeMf7#<&2foovh9!8Wrkk+oiX1*}9ZOxLC>O)X}Vt0Pn2WF~#i2(!=4 zdDH>!ERg<_zGMHGJ059yZb``UW1iMaUBfIp9WF;7SLX@^7A_aVSLHNBs$uq3O>Y_8 zY+t0LZh}+(AVh}OpR%Ab6WxLvOblZUw!*(?W|JY$EabdkSB)E#5zbU>-J7}r%T%5TA2sO5-^@r$~eJaB-NGqJEdP!qtDN;0to zkGyrvEP0|H&m@*?COXU~DQaRZo_NuxQ;~_V33BQ>aSlKMu#TKj3rtj(2kHV=RRX^_ z#A|j^v**m7W5};szfw?q69>!6d^NdpP|!E=WLeoV`{6}C@U}7BoBN3Gjj}+^)U1c> zd=vTQ!8#w?S%L1C{B!0kEXR89SM3AXBjDUQ^#teJ^#;Z#nEW~C2*z$CFn+-l%?T6Z zV`o(C@B{={HfL?Qu_LEWDX|qh3j{iK&XRJY1eXdOUFTy@R$Lbp_>4InfU^hsJB-b_ zCEi7H=)$+cSfuR+_*w&tT+unc_R>X}r?;R+PhX^;%ksT5bCKhT^>rS%NZ(WNb=NJ* z;mkR4QO;WYS+=NHEw6OYa&7nRZ(S5X|4Td+2sSLT0vzx#(hmmCFYz0#Pv(>sm0+4| zR40J_D{x{#?HBml;ZkP!xBmv5Msq?}{hXGqmwQUfCQoN775*EIYA43mzu&-C0)zY2 zHKYD_GV|rU+U0rC)6yE4QL+LzHcTz4{k?C#v8cSIe(1c=mV|a14W~aJ@+>N9VI9H8 zaw`!gquBvBJc>c4yD<>kSeaulDo0k(VYQ$X-O zIia&Qvvwc52i2Woft8snzU|%f-@^oylRsAH1h8Eo48Ld2o;jF3LA{p(x0=XT=e%ml zgStYk%L2EX_`P%Xrpb#(DlaTA^L--E)Px^7bYD5-LV_o(aX!SBy7RokP_hYvL;A8VzaH-o#C~1> zrV2v|C!kP*c{ZrRP{PTk&lB44K!u^?lTa7(l2WXWT;?kbC7@I`=8|4v6iaacdg_9D zKUEl|7DiR5K#o*NxLJi!ZsCl&LhYXR3Zue7;7&)pkj<#HAZ9i)Q_O6pTew3I-xLCg z3S*`PQ}o4cu?=C|Q?K544E!t$@3F?M!kA;hP@RrYVv|i=W zo}I&d2bkZ3`_Ma-b5pyYwc&a0#w@9r|wLEL5OK#4IwGLdR?0 z1uUo^;~TGgh-7xPc+6w`_-f=-ntl#xcll)iWA^~>?N~Xod(M3off^{X;Md)A_f!Px zeC!KbuI)N{*U^T@Qez&OfBO`uF*qY>)tCYBk1Y6pMNm5TanBx4%LCTc)CF5Zh_sZBqkwS(SrR%Y2i{h)mJvk`=lLv89DBLTpK)Sj`b3nxt@x z5L;Rpbr=ur3`hmGPbHTvQ@2f}oU#RsEh;huj4dlv@h$;lOO12^V~Y%^X-dGP2@LHL z3r$#P0>%~=s@MzxW6KOpz-R&^h-m*!I8HMNR)jdRg@($_Eq-+2VXr1`;bAQ$ZsB2z zA5D1Z;>Q*rSd1L;V~Y-FCDKF&h78rFg=dM{G@;>I)iuF^+-$jZqBIi%BSUVTY+=lf z&=&a$;}kd2kz1!`AVd+VFqXLynm}uCVPwud<=N|LImr_^spM=#*e}79D}{P!+D|o@ zkYeyqv=|e+^y#$&(<_@^^vK+srozr(iVC<}rNnJjyQUh4(iRwPrZ{VcGfSj)&r>3t z8K^H=Z=AifzBuHA!S?o0<^P zr>ZS{GN!7nyr_P3W}~gYD1DT#4`cd6&?B5vJUQMkZaugb+=Z7wn(^nRxs>C5B6V<>eCOU$%<j^uX~ZZoO8Tq1-GhX&MRheybG!UE7xAfVwXNU=URnI zkB`ss-ah?u=42XIa(HKV`&Lxd1gW-;Z`=V;k!iY^u%UYZqoYtAPubyl^3ao&(0u@5 z^G&MQ^MFygvV(MYcpg9WDu898q3Fjsc1Loj1vCrk_DWbtOlzN>@l8BbsU*cd&*Pq! zmcZJQh;fE@WyzwKU_r|`z6a|V;}|Nbf?0BwLWsI&#@6qibNjSFf8*2~&p9RG65OWh z`;hibuJ;^&Oa1)7mXf)~L&33e(NQU@PGpX05frd(0ul;i#3)`L$1QIYL+Z#mx6QwN_1b_z7CjKU|j zOh<+^nYD0XW8zvsv#{JQfGe`?HspBkn{um}M%zlr@$Rj70AR4Gi{D-Z%&$UPbG!xb z;YrT-s9^iuu^a$sb8AtWVsr2CTz_ck^kB^_4y<|MoifRlcgG}p^w3HW6@$oBOc{$X zeo=@O0Z?P7s}2o=(yzj?cl)=2f(}BJ+wK!C$8$xt-SEJ~Gt)KQ^wnuD^ZeauV7`DA zqVJnnj54NbRdzx(9{GG5aAg_0^}dP6rw8ha-TdR*sci3asx8yFSdP78F;W%QOiWK* zu3TDFVQ6x>fR?n{yV9&nPhFu|A*%11VD@P1TAHd@XpW51J8k)_gk`CTWNZ}q4Z5K% zt37oyO)TV59MT=2%%fu!k>PZkkQY*)TZIxpAArx*T z%_2RdfIac^Tsmb5?767g3y=$BDhyk<^uZNj^0_L&)-9p*(@Bw`PzGAYhK592Gi;60 zs4H!S8OP3Qi-qK-1Wm2P8g8kCx$E(nv88~XKZ5*!ZC|R9H6;PV2oNI zwMigK7T$wVVI*w?cq>Ksk4$ZO<6?zzt{YnnEEpc%64Nf)?8X;}nI-Qgt}xEeit9pj zZiVrAHx52n@qRF>w!*k5JCdTT!pO;SWAn|VD@Q7f+%%k@I3~(ZL!dk;gc1w^p;eTI zMIV@01b@2uyq*gn3d}^X9Rjo z!n%MC;)>7T;dvovrc;t{qG)E?mWJcMKPLAW(|^CjdoZ`!F#b zM_G%uE=wRhT&UGq6x+p6>h(7T=Xh^U9XtuuOIH%N0fyI5cB(g1O3ZeS_p*W=0OO^a zCYX~f$Gg>YJ)n5?rKt^?CvY(Za=bHgzRwh{82!M+V!$+=bBE{lLu+RS>PpiaVf#L3 zp!qWW-BQ`!_?UgnY^#HodYAZHaEscmk~zjhh2MukaMPhnvKj<86=o{_y9%=^{*R)< zSrz}Mq;(xyWOa`B%GALZNuQzDhmSgp0)GyWS(N?@O>mlCe;L5(Lv}l0TCeVoC(mDo5?NoNtEv;C^(z)ebrHuD&NgE8(7Pm zqy5Src!qlEtQy!6Ok2>+Rio{g@KNUEYW8l+ZP}F*xUZznsL#KrWaP<1CxdnJTEOUF zXU?g7?9qyJR?qYD7ge-mi5~;$!u+hPbo;EsFu{!3iV4z2dmg~)qumA=tT;6V{b#8s z>YlLa2JuuXd1%pLBpmY zZ(KS%=xh|+H_OEUkIyO#SP=`(_Lx#drerAt{(Gf<-+oNdYz#_cS&rw)k_So1_!tEX5t_ zo_VFRy33+E>=nn$;?h<)UTR7m$IF-(j+dUmNu^k zma3ITFx$M>64O??$fz%DF1_fcLzOs=z|t>gn$Ex(r8t27P_U!a^u`G8D(_7!XKiT% zG^>@R$G%ixdVa3=UeA5NQ0X1U*4(p7TfPbho}{?dyTc1jWw6w5Ob?ef9WsIn{(bLL zzLti-Ii+=o;TSHBJ$VRQ*plKN?=!xZzQC5!Zewd;taPI|0|oN{c;wW;)>87wg{6u| z@>@FNNk$JPa6GyOFAdW|cXPaZDz3$3$hSkK0~1SU*`m%jvDVG$gWz-tcamx6o46cl z1K=R@acowwrof5RhFb#oB3EFtZ({4LK>so@Z#x3Oyo)_Gp2PmY#XQ*UYB$_}>k&MR zLxY|VGt)K!g^;p?IazR-)Q5pIW27JQngsbC#fK7wbn#nkOM`6D}V#T_X zqrQ6F!0Tf`6C&RO{mmx_o;<4A*KSl9-X?a7w7Jd8itKFXV7B=d`^K^*xPkf*- zyzY0D|jH z+B552XI8=-=e=g$8OZQ8RJC2QR{yQRA67&EY{WyA4)}<_i-k_=hhL@mx?h#Xa`N0D zt15ZY(mcrkWFPW}nNdoBhQ!73XKogBj$uZ~k-(pYz+*VEa-=~?8D)5le8e@FF^ZrG zq|poj<}+m9j9CQJ&{P$24W&X5kM^e*k@6dg{eTW+y!*}Y1tgq~Z|rfdkPev9Y1Vsu zRIFM+Tt&HZF}$J0s#$LlW(8ay_I)7zt#XF{KT)C?;+EH^;^#}9I5+iH_EJ}31;?4LAeDYUZWEtfqK`t=%(@wf>*lGi#TLWrh==Mw$n+(3Bf?v>HibSxBZBmgkrh z*JPo9Z_bWmBh60G@XO!$r1;-d!;UK9qxI1`(5N&lPb{&JJ5~mKOp$V$VfjZ1+6@YR zwLDVO4Oi?N$$kS8es!`Lh8{6Ws?DI_m%s5z@jDYOSJ7|;jRVWCp3hN+y`gQ*R+6TF zz~rngC+GjDkJmW#;lU3-uo^9O6PZe3q?SA%fJ)9fFsG^1cmBU4XXOBrc5Sh=Egfhz zZmvk(D%W`FL+_HhcY-hY)d(PUGlS`v8<-$NLi;{~gr@veZ+&7e*(9|8h!Q$4Lqanz ze)O6L40j|R@!2GK{t+d4!AFzig&#$d2S1V|FFL#=Fa9W!9P;<@lDzbzO7b#YlHY=X zPwVPbx#8N$BRZSFpYo9eKIE_+63Cn$%q);{*oqG%Nj8BGIc#nfk|LYHpY{<1{`4aY z{24BRe_dv6A%WcihOE#dpyOBP*rNY0bgBDW{_;3GYzFV3#&C3K^qBbC+R$24+n!{%G z64kF<$NbASIiPlG5&CR?Hm-)+X>zqy>|`BvBM^0yA^!{Da@ab{mF3cllOdf(ee^Z? zh5v%a9H|I7;+yR@Z)xqMSgX0ygmn-ej?al{Gaew=M*5=pTpDwc!V3yBuoaKl%o<FPJ_+=7&Qv45Vw08c55HvQ!VhJ36or7)U#HKQjY!*ww zk=D7wkGjqU^>uD2vzLvcj5!KPmA)FnLOSvSR&wM8tkjjAMqbF!LDEPGm7pZVSNY57V-b%PoYtF=Zrhw@O{zPW=!)|7|V_0{6GBgF01oDQqPEeAWO8`5*N9Y4z$Ek zp@^d+TST{@=%+tY@&E4;(Y2{=EvKa?&2odRMtxLw8XE-(```MJfiZ(s?PjF|(;LRN zd+nDUIoHSbtjXlZ4KIlM3=AffpwAynnr|)Ql51sZHJ_PUpLXPP1-^@{9SaNb zzkjp#K%r4|=cn$>$IPAZot%r9FylKP?)vc7|J1xKBzv2jAk3`;tid{6=Ib)4#JC4? z7hf53Q^aEdbVml0@-wFRwg?Fe8Y)bfze|w`|5|wdEi$y2VIp^AAu2ZX0Af<5eNuQ% zmAF)zY!q-0YGK8scp*z^WkyDPF-c!cBPFcdI83lH3AU#tVv}LBYB4~h`f?f-VFJyeiAg573{?DD-A!1fkrq8d;G)dpQ`4Z^sk^Kg?nkPB1Qowl zcHEPnZfGIPB>FlC__c@#n_<}T%Y3W=ntv@48ZvMwvKRz26Ei)Hg0Q0$1tOdIbY&U^ zCDAM+Jdeb@zr2%KDPz82MO0gv@UNDU@iCXmxi(EgkaB^c#ac7DDa&01hYrJr7@JL+uV$gCG4w!fQeB&cn`%X~ zmZ)u#c+%=c4*mr8C++ZU5?zhb_|p z|6u4b;-p%g*4v~y(Pe^+q*0*GN1vqajW0tv{95%v2C0*k?SU|ImN5b>zdFUIX~c+( zmUwcK)uHM9>SU)FX@TV=d<`|?S0`L*Xc6WldJ6>n>O`knL<}`2(QiP&uTFFty>NES zIjLyi^Q%)Wv#A(gN2-@W!LLqLZ#Y5dr0GU4@T=1_7-ld!3Dy9~uTId&qU@k_Qk@M7 zes!uQcBm7aPO?^z@T-$G8}1-=(rpF}zdBtDJ6;b~Ct(Ui{OW|ujjTcIBtL-O;8!Pa zrOl~=355i?9Z1WujiY1*v6E;62>8|WSz%-Zvs>yHlkh|RO#j@5hkJFvf75R<986Wp z-k(ngT8){^OiHi&jR4f81OE%3O2?3YT9H|MVA9tAoUISUh-eq zG>-v`QUcvK4=k;5gRJJ1e*~}3GE9mHzNP=`0+@6_{YJ%|6~?zcHySO*ckN+F zCzm||%dpW8Ez1Z^inRu-=pzgk{WTZi`_}(TvGm^0`iy`9_-o4VobbIN{+eBr4xW`< zqD<(W(d1zo?Ehl#UBII_u6*(Cnx0Z?G@6%2qtP&uB}GyMNQw}M6%VljF#y-~-mmhFEjg#FjJKL0*m8lWQEaYxWC!&2Gqs`wzL0gamL%cs~-8Ajc#S8`~ry zu_BXzV=zjL_5Ypf?$JmH{MaPB_uI&>sjgG6Q>V^3b?Q`gV@}vSF=4vcd;^TN^?i=Cd~fL{!*0_Epc}t-1Zj+5#&h&1L&?g3!HU7 zOr0Z>e92hcZzOwF$ZIlXk~>dKw@%mbrrVh^-M7Njq;@eA^cSU{pfujgDAbq5v3S&r z9io=0j(Nw@+yC~H%hishVSMA@fn{kOOBX$WcfA2`T)J$zd9fR9jC$Kcw1KDFJM^yrFO59VsV?o%KjMoAqh(}^mX~&3cs*-adYxe^w~1&Sa*~{U7uWx)|JOkU6mTVt)|kUqtw?a7;rc`j|nD zfZlCTW2fL50IJ3U|BPw+rwc~z5~d7mybN=2?{)7%W)>VgfBCxs1?W@v{Kkn6$bB|=rd#nbvt3Hql;Unyu<`F_iLJ*-((K$6813X{5(XTMNz%bliAAwP7q!zpFGkXK;oiaU;G&~S z@o&)D)P3>!#ftb<#jjm^K|83a!>zB!9x1j6gF05#J-M&s&^x2PqNtoH5 zMQiv}?2zl8gJJFU*rBg1T5_j$Dbe-P7W~D-SL30#HT+*+6%V}`>v~g)WGBKe?IuLD z&{fgoz*}HDAP{<;el8}Ozmf>QjyfVU5&lY|`5Rj3O_9<<-#{@fvy+r`0J|AA$ zk5Mlhu3i=|S}kdzi!EB{bp)fp(a^WO$VWOJLJx^LE>nw)R_+auG9xzoyyb~2iezUYHAdb8j`ILLKy#i z;De}s1g%8#OIr9U)$|X4{^aPc2Y!z9x)&pX!y%`3IuU-3YG8Kf3kp+e6oqwq3ko9-6h0}+y>OFq$V0i)iO@?eiO_Q`tEJU8 z8up@OwPS9*-#yy-_JbrFbESE}AG|vC`JR29Rk4Q@sdExo^#ZZ#^YO)C zRr*!MFR^O$7*T=PRa;za*A9RO51Q4BZ&q=1l`Dr-=Z1X;7ip)pgMuL1N%LV$di7sn zgvNhH5uH&WA+F&&9=Ye>q9w6I+qKhRFr^qj5TCKalSwkR;ydrq2{uMMyIAT>gS079 zWSY?=2A`?5OpAMqNodeSY9S}a0aCvGdQ z-$ROCpDF+FBCmFD@j}bJ#kXm<6|0upiv5=FYn{c4<#)4w(8aVLXiBl=;9CP5-+D(o zrtOa%YPs*8gOG#B$1oc$#q?7)yl{fnQm!qWFn3me#4^0F94Sl7v{@}#pS29vmk%$z zMQf?j7T#iHS0QC-sh!o5L)lfs3#Sb)tUai;6w7F&rA%(A8fjW|#fR&s4cFI##@ZX& z>DVkO;`o{@@D~G%TQrOIWAO;wFq^L;I<=G{Q)smJ>kre}B)^c;Q2#+*;>kDdFh0dRh^ zJ|n~1LwVYPgA#*UJ`J8bH1+tNGQe~^50=o^U1G1vpLSJ{7qT-@ApwKV;NXWa^YkGC znt8%$Foyv3cyQ1IN)1{C-(5KlOH2Z{zjtfB587MNV}-DtBKIDo8z0S<2zxn;ArTWz&G@q zK-WcSLN|>bfUbdO=%j&WsDCV$q2~=GLq9^lEq7`mJ9JE<`J(n?9b@oqm99Y!U@HDB zSZfDkugcTp-Vl^T>{X>V)K4)RA#LdS*w5A8_7RLn<9k;UU!v~swTmlakE+W$3$>$y z0i54jqQ3R(*uLuB%P>zH-x`84(sQ&%dmWujVCgYIu}57}r%hYpGK&}`Pxmz{v*n02 z`h9sYZ8nQoqCbD9uhFW5mn8%?@9GE-$GO&EV9Mfh>|vnjN;C#{--7XIi(F!qeGP?-io93 z>N4qQy`82J8BPIR_P>Ok7dvDZtH&Yjl6HFW>e+XQOekI~7vgcT_>CQ!P1CR<_E3PP z{xo=@AvnCqf6u|0ElQ`_+oFhK2WPd|JJooLT~Ezyu~ME@Pw5I&Yj7FrveTVNJ{z5( zj}^08)Xwx3@fOu=BaPZfGgF*WTu(t=v@TkbI@aFsFqXmRjpkDIw01H6^>2U|;`arQ zHu~`Zg&XY}#^**wTO;Jq4&HZ9TRRz*K=@L0*LEt~sqBykEq%@2zIOkj*1l#}tJZ8s zthQ=D5cTi7r~QCeTC_wYw4Xw0Jx0Ch$sa|3_O^CJJg9Zfppl_88tMi! zM->OVwzVHn^tKOPsb5||rU>XJu+gG~Iz6igXFfr9mpU_hMQq|b>j`={vokX;;t}XR z14^+8#gcfXL3B`kptAy#0`t{+e6 zoJH(}PA7RM<5$b;zG*im0Jj39*+$moSbsBGAI zXrl#sP}izQ8mnaO$hsG=Un7o?zE`2|?+j}LWSU?(yi)(ya;MK!$R};tPY|+(eugp{ zqh89je-LU`-#e^`efN7PE_K!{32Wci76r9`cn-#TW!Gf`sod85%N0zacwvz#( z-yOiv+7H-u6}gL+lZcw=+Sj_9r092B+Q>)pn(iZk$~4!Fi#=ELeLThyd#FWnK2Dnn z6Zu8KS@T*ReKZl;*Rli!wEC8ogit=4QApBihwr?LwC$Jy-X8CQm*MJ)*skZPSmzu} zKKARcwJb@5cAT0b>7Sl=RN(GIymx#u7htObD{#Xer_iP1#bE*V|kb8r{TOhhmwPEWle znpn3lk_UBiMJ%zb(=DFAj#32?>v!mjZyH!j_h@a$K;zACgS)O`2V_c4&%THw+3mny z8rcGUFAkf`V74W8SSOecOw9dJd{h$KWvm3R9SvP1wCGv5yx!D8UVLH%_rqyc%nni> z^yW;ha}itJ(3=?S;H_py7tM#Ocj}f;Jajb?+TNlkw9xjrg(TgyQcxERVdUN^=wZyN z3!;=1BdGrkFk2u5SLR^>_^Xkr@m{|c3}&oepmPzqn-={~3r4RiKmQ?Q7Y=185D;HfM1 zU`CgbtAXc>!715dZRy3dz_~|;k3i2b&j?C0Mt`av(R7JFQuFjzfB+P_4|!qUgJZ}d zI&D})SIHu}n31%IJ{|UFiKGcw%JueTfVasj~`QT#1rg%bj*S z$96qVLx6n;R69L_*guOn5Kogq_7P0JNx13OBpH9OW0FXI!&pz_p`U+X2$@*lCz9OvASD5J5PGpbRP#XJNo$F!H{?R5?n5wWBVITA8!?RP!JBV2p zd>s#wTUTgFXse{F{R_GPlOsrgwR(L6i4s~1blD5Q5%O|BrR(ily`S9h;J$0R-5U=* zM=8V5?hTzAp#k3mV$IJL zXmBm}g;1>N4oRO)&d!gZFYnYYCb}M{CHv#ljC0*utSX5F$$QEMk!(8Z z(YfyLpfZkxcFKZ#rsIj-nTR}|*!u`7h*qvwq7y?;!5)nFP?3QK)Q@)k2uBa!1%*av z*?Er^db%Yc3bkBs0Bez_CSTk`hY{v%3R`{h#UJCS{TwYw*uMC(&^Lt^kV*W+mk{ao1Gk6Xe|Sq|W_|LR&x?4%SAt-HRk7G5{` zWPAhBMGHLvgL!i3SFzXF5CY( z$W4gWQ*5Ezbn3@OQ$Oc=>@aPE_m2mDda!A{j{8DCgO)oI`gh_F%lMs_6T_sc!`1Js zekT!nT(<%Sn+?Vz!$zNHV!UxWyI<=e4wXZXYdwBE5R3H$1>^~>r$9iSCaH9;!&}-y zYdY5*2J7j}`Tz)lO3Z$GgjC0*@&~;zvm3NMHrXzf6059)>OEIYyxreH0 zJ)gp_rRO31rc9K88hN2(agnWw3YMNuQS^{Gr$#f>m?d;5F0y0GpL=KEu$Yox)ytwW z5?Gv~=-vIvdi}%T9ohzgN*F?VX!6Pa--BPDm*N7bCB$Hxv6DMC`Fs6C$m*Bk0;nZK ztz+>74bQ;ufH81glZJH<;gQhGazYGRD7-}IWhgti0if(i?=FsZy$rff2c2o6wa{q< zT{k8~AF143HQ+!w=uen>bToHE?V0E)23lw-b#FUn^2ghbS|Yo~+lb0L#oTWYv%Z0d zq9v#Ut!Em3EypJJ&)Ps-7vaMRDx*)K!2sqY8w@oG~Le$wKC{UQin~G{Ldon~cf*K*N6D)8AQ`I!-vCuAlg5*C4p$)}#pE z3o0j9t?AC*6Dgf^02y4EnU~Zwvi)VO+a*|9q(C&+`&ez=YGVNo|X93 z!oQk)V6;lsbHVA9Kj_C23ah~)+QFW3@;pUvhqOuOC$$aK=Hw03FSJNfyks4cpf)Ba zs6Xn-lrUL`B&e1JlR#}4SQ-5al_>IcIl`IIy@SFIh)g2usIxfw?9-Tc7(Q;psu|p6ctNs0gPSHgGA9^}*8kE#z17 z59W=unIRxB^3n#=jBM;fpOEq*jbP4v92`IrYmJ91^c$|vF&Jt&K|M7#Wv~8kW;3@yahiLDTFHx<#a6E7k;h!BsODm067iT8H6>|v{CzYSQC82? zX&in#+0IW=b7=zx2b6L7>3^fKv11g{bnu^$gAYZ3)OUtkwb!)0gpBqr!WFd5yz&_B zucOYM&r`JbOEMzoy2tPv`>sGZ(xvr80o9iiIL>z%j8FA3f1})L=E6BItR0l3g(VwV1c$a|^ zZhwqGr|#?PAw&(A23=h;FZQIMYSiq^MyBODB=0tyy~zu?n9S}&Z@)wCpQ*N6dcvG7 z#Czx*aAdY`6OYNM-G)rF@Cf^gi&v!mK?i9Og(Y{=os_Ga@hp+z@W-xNB0-Ui)iP(# zDwH%*R_EjQAO!;i_fcA=9-sQWvDFj#MrBkXy{G*HF$@f>b%&6O?IOkjhkT2&qLk3K zlUD{tF6~;4VVoZ2O|~6$uKRZ?WBLu{0{9K-2MWw~+PSVz0*}UyC<)x95~6@BPA(jt zi>{4c#Dy`PNb`$bxT1yojb6H8MP(DXT6VM2xKCpgw+|L1{-FRPO7gSo&cwF}Fw*(r zV!xrNKp%h0YGrkuAWR>8yy$Gqf%vzoP}wM-^d93X4k@|RqikACpFE9`YBxN|)}ElY zz<#}=%>!b%!YMA)fKrvZV*Azwt?FV`lDD@yAMe3X? zitLnQ?hWwNi;|?Au{vw@Z);JZE}jtT0;kRd{d<~kQMdgd4xVDW_8~1j3ZI^;MTto? zJ$KL&J2out0K^XAIudz!Qf^Bf4V{(?$j9<3?q90bMbU=ZE) zH8c#q`+NL~j`rbUVb8utI_sytNPs)u)}9o&J}FS}{&Vy*g;M7o=oP!8l%ePtDo<KfU#TrdckKWwQs-L2;%P$bqp?3o zkE~8DW6)*V)6qwP6x<3XQlj7M@u0d(-~<-gH^zmdr{Tyy>enzaXRXG4T`_3}$s*|{ zf@xvVT${No!u<>~cfdAB8|`ud==v-XuxD7;|4?ru5)EC38$Wik90niI{`VI!%AOZH zKM{NQemPQzb=_EbudBeQ!mRO{qGN->!m&BHo=npRj{th3BDxeowOyoDR*TV6B!)3s z3bi{G(?&3^LC;?-l$(JW?V(3_p2XOjau2O6Y3Un{99>{XKe*58()*7cx+)G+@j!lBJLF;F|ox?#6??eck4!vdC3|ZjH|fT?cKd79ge%Z zK=@tw*xL1D!<5n;>AA?$??}TMGJU?GZ=_0;_Occ`hMoj@;-POCLx-nZiwXIK4#(-3 zsjx?%_eFB`%A@Aox$bo;Z*BwNWI|FX>aN#yJ*{8&7R~EddPV12=quu;_jdC}_?tQg zV~gPI3`KC*^-_y|kfnuQeTzinCHy9E3tY5@P5tYMu5XJD2k+CqPRuuIeF1YWxU>5R z8Q2LEF|#rZmdWp%i$RwzNZe~|H##ZK>Hq`V(eN&n8R7&-Ecb5kMS zEr#6e2HdfriFt@n1Pm zkAtTJ(MVqGSz7WXT*?%6PE+5>+QO0`6?h3+qh7xysGaQo8C}us{yqIhvZ8;$JgEjE?Da=(Fn}03=~95H+1xvYe?g# z;*Sw3dk8NBxOpW|dh6te8e8IxEk_=sEe+Jr4eqrNv(_VwG62O;ZfyNw0goN(r6u_i zw&l76Mt2EHJJ;cJo{$e+u+~A5_aNQZ{)g!AWMGhG=9sej=Ab1Wfp&%cRz?*KF2q?i z3Gx30NEhNnxR(mSrSmqBO@v+JFQV(8Ap8j7hX`-#)l!#vamO&c z^6!)AqifuJ6AkX68;!ai9l7OMN`rfXCKAQ8daphK;?X#495{t)`hnm&JdIaA5&kZL zbwa}Go=>Uz`C^3hPLLSncXezN%_(JpobhfDYIHxO^Z3eSThU#93`FW&qT}{8-KR3R zAXz}i_GAj`iSR4tc&XG)M+V|zb$LY#Ureqpok?vQN6)mn=(ICqQ`;tseG|o^U4M`w z@aVmXIY~WaFbcn_FGaWp8{H*7@kaKht{rfx2N!>g9Ys>ZVls?@b$^ev)tJqRKvvkL zbp7`r?3-yIl3qi10^tIU@qmjkj}d#rE#>Nqy6~jD1E<)N`+6HxJ*O{9V%pn~4wu1W z_;#)o$HgnNwm13Yk3O6(b(TlJgYOYzMm}`3p@8&H^gD+|n#Vp`pbTb4zjH(+6(m{T zW9yOVZLlRinxQRHbQS{f3i199@-NzcP$A%y9D| zhA*8;@yG1=73xda>^)by*wicWuT!4(a8=K6XU?cSICL_Pe~apn39Cg(3gYvWqw|C{ zdN8`{O);2s02me!yxD;qJQ&m1nbv))o#rRH3!jH2gPhU|luj=VCORO0n!j@#ueKDL z^X@n1J>sO2sB_SaX~Q{BS=gD0rL)t$5Wkd()e3c;B zplbwVRuM!s!6reY&+21KOD;QDJMo?kEhpw1IJ)qpzLF;Tz)B~ksNqxMeT_)H(KfAc zF}jQEGO>w^wQ8^g+X~P_pV5@9xt@K`K{FQ0U4JP@JAEYd2OMI(2=qvw7z>%R=eNXj z`qJuLcLWK{Jm_d@Z&LdhfdMtthjSg>&Dn#0M|G_BbN0jlOoRuGR;Vj%C6fSwaw2>z z(F_l^j(_N6JT!>2#(3zrqU7)Nsy8V4J5lnjMDw7wL@_$49sZ}2=+)TsV4U(GE|7}` zKteYGP&mh1@eI1@X82<P%UqiGpFD z^o9Ol8i`P`gQ*65nKAOD3iV+K?`p@BZd0Ca@Cd zUj(;|-nKi}{TlNTeYOdB;4%tr;IzkxV>RKn`B=~JBMTQyyq-1>S+ol&%JF+K2FO1ro8?H~fyVZzGjAL%);c^CE#YGO? za|C4@i$`Crd#ShmEbgI^w@e%u{eljRUh8egixm2$x|hVIx+TRam+D?lUaEUpT&jDS z{IABXIC{qr?{nZzmKdBM7VQCQjn&+^`TQywqi1wWG_jp@PonEpqC5%bmyy(klWdXS zC3aChWoj0>S=M039m&fcm|?q7Hsu!mhM5IEYn@%C$x1mPOOFh77%s05w=!<(7Nnc)y|L{y4rE(6THZ z#v4Q_@A6aC)YgCgPO^1miC&D^Kb5R^8EBaO7?~Fnq1XDtswgkKCi=C09C_Li)H@7@ zq!$r%odKRFcb|Te`J9Gp;9OKrEVv7PJ-jOdw_dzO>05Ar%cAIKSK{rk{n%tKct{j# zyPK>nGNlS&0Kw=z9eq}OeXMilk(hWeCJ?J(nemup%$(KIGq+&`V(Fn*lKzi=H4`oB zuPu`yWh~Wtq`%t*t4#cX%;FDgf%r4ilrN_KX^f4oHb0%*VdACWt}oK8ZbspxG>f5- zxzP$JR=a63(7nMXlPa%ER=%z<-Jv%(h{6k&x`)t0zYyCfa{48ZEBe*H{yZBsF<_<}NX zyR)FY@3F6;M_fi&P=&o8HpbeW<)YM`iRM>RcZ@Ab$+`~}-ouWOHc;=jV@$UBWfV>r z_?gmbXmM2{83Lh5hUj3+v>_uf>h*boV~1?Oi(*S;dX)r3$Z@RJ+T}H#l*k0*$@Ylb zsK3X9)f8E<7^iRvsaA2EIC z$l-4mS`O1EA13eLIQ78f1G8e(SC@72iTLgGhO_oJw~2iFIQe#}Z!aF5V=?O8R;*l? zVTWa;Q$BX6R+v~L+Q_ud|0DiDF>}}X178D++`u20WQvh_sx=Yuuaq$lvS6BA`PdWhc zFT=sE8WB?IHvr6VW;32Oh=9ErcS|4Al`dW@!vzS zcT@36TYQxE#(BieTz+Jdj`8?CM#sH>GKb$J)8SV*#^FaEK4pA&pC)7Uu{WJ~DnoM;_(97e^k=Z;B%i>m+?l=-u3Q!WI=?xHR&@*#|oe%?P}Wr_m8C zzS-iGYr6Je6^xouTQ!ea_M~A{jOUxvi6Aa9K7wAx^TCO+q~GEaJ3K z6vQzII#n}cVcx!rd+i-8uSxgXB_s@=m2o&iO7+DgH0fD62GIEKHCn>|^zJAehM7j} zuVB{x9Dz=0;EXae#&f{oLuh7piZ5>Tc5ke=EguxsR|Rt!{m=Hc(Hz5d@ZP;`C8+SO z-Zrw(92xk$=L3KH=@35gxmE=LdPe+FCIz>pvSun}&>tN;Q%oN}Czl9(NrDvxyW;C? z4RXsa$`_}WDUuR9q#q0<6nrcyJ{7(#?I)rRZ4$*klWw(KO!}PQ#92Dh@Iu^f`Y_#Y z5~8Phe>$r=l4bh%wZ%Wx&w&R&f(uD6t=2!LrAc%n?g-9sGvb}ac09Nw+;vg3qvB;t z(Kp14x)+0@L$i_xODbz0(v4Q_*Tw}xePkDJ@450wdE?X;jr5H(Z~h;n**c2 zu?SQ0M*)sFQoue*@u?w-S$zcS^0l%5S`6PD`)uN)?Q(Prrf6 zjZds`Q3RVXojvc+@y2RmTu?A~ZhEs=PCk~>vBLGWYR_$jyNC~pe<$e*;^?OU&%19y5Sy&xj7sB zq&W04uO)|5xg$l>gmEAmqZ3o}4z;*JtDi?fVc^5Ib*gIU1ADc>2?8OT_fN8{jp z{L4V*26)t`9&k*(?tr7vJmB!^erUJ@;Dk->47mL}z8#TDgi&1lkx^MAj+0d6^?kgK z{4l6Lj2UFj7C{3I~!0&1)P6!uY7Jc|5FY zh8qE*c)PM*4ACeB!N9;Ulp`@h!2BqMo}&9;ltZU-BRS%Xj_5d6;b{Ga=-tH6(E7|W z5D0Hu2*JgT|A=eq^Sg*>0xK-A#@BA~1&=(Vj2y`qud(kU`7?@jW<0YJDVtJ^wyyo9rKrxa>7;q}2{d7N zUatz;Qy(jmeZ(rL5Bb44qJ6!=T@L{y(!1#?b$t=2?vSqoCA;fDg^})r1xgnejDK%i z>L{El@pBGIKIf=KSi#TZ`MhH`o?ZMho-aG95a#hAJP$dl_%+1W9DW2aE@4*LbSXhD&btRPs!;lj%GnZ&FlwGeV}S%4h8=cLVNrR5X5&DrnhcJZDkMvoDb4n@C1wOgXGT@>DS3l1~IuE!NBIE%-g8%2? z7vP1!r_dP$E-LW!%W?+B4BQ8lYWbYqFJDlq) zd?d4~R0NmYin2H3?Ktw=(RLVd8$Bbqy{fzv@p6P!2%C|P zBXr<-4MGHAEkYNkwZ?ydR;^>z6B#ZbArqOZi0LIT36_ zcy0#UR3KdemYIT3@h4!LRoU-{t;_fn;4{TJ3Al{MHg{o8-Ye^XR_MDYyI#!eACZkV zDK0r-o%0`JC*sicRzmG|f!>W+YlC&ZV6PgGr3Ol{Z;6sf?Z~c7(u70}BE{=auFhGH;F5Qu zjdv4?z34AhB=(|Csz{td{(iv56N$rscOzUzncawwBb>{w<#U0m4O8E*v*TcP=gep{iL!$^lg(>8=K=y?fkoAeyd;K<{n zMc$1CHybcw(`;IN5vLj)xqw|po7WIzl(QnFBV;1D5pofRkXOiyc^hzPgVhxVZWkaz z?MSx+ucZj>z-<-#?vJ`Y{2X4!mpRYlB zjk6J9K9Arz0vy+ZFC)m00N0JEH`HPOcQYz;%=1fvCNm_h!d7Mu<%`S9Q`KJ zOGSI@Ez=P%fw2hrM*nA6wLFp6gKu2&T7RQxe*68zZ273B#dylSNN&HiokasBBKJl(zuA%Z#etDp23(*Spw? zAyB;`6F(Zp0^q8?L_`=kd!t$d-1$Ky$lBGe0gr#?egLDJLKc( zx5_6F`qOWdPa*WDFGT)41Tth%#?~V5u-t)gAD$cKP};4Cm+&r3Zx=+U8=(uNkwKEN z;*+{*d%u>4746Z!XEVrYS{~_uxpSd<5NZ%cERQnY4Sc#G?p+Y)YY_JyqW_ zVsuwPt=-JRn1cNMz~yEZMhG~O(M=Xc4WGv2z#;CO4jeEJsO|*P3D9djLIQY^N;hft z-*YLP&eww`>#;#ffEF+l_y(jmfIb@$Hh@NTwA^5cy3v06{qj`^?TzIt+E32~ya)5Q zc@$q^>BueO8-deCXEE@B3Bmn*6VjW2-)1Zyn*iHHJoYYlwjn>&@`k^IcJMb?gu^I} zET}=3DnqfibFW+yfRYXr^UdgeGZtOyxe3^8L3#_Y*$Qm70Ja6#>@}ouBb3-C1TwO= zAU0hnCy-BzSu4TN(JI6p2x}2cBP)()@aWfQCH?>k&2~Y(r=Z%;Z}^!>zEjiGDjRe!dOqZJ_B6&~zJM+d$J0 zl=@gsOf?XO&=%3uG!XhRj++?>11LWpP2Y>*+BN|+0zJnwTvH7M({O#i20|EPH4TJQ zG#^M?(PuMaG7!!nwBq?J;x@!JlsBPVK8!K-Bb-H816UVA9APWM+zF+82k5#3ZU&<1 zTo?tZs}dOqv|n64VGiGkayvo)-Jt(YniJ6f9QwK${f`HA`kNbv3n+hy0_Mcz=~P2^ zH_Crd`d>!7H==*)#$f>Eh^Mb1em@4<5XzrNI0GE(@*wxnP*d{C>1T zdOaX2cz-=Qegc_u4 zT=fWlKC7hzxQtjWReT0;nBl4h4!YG+hjbliH5Z`{c>QH<8EaTRvy^;R1p0+Qzlm6bn~`n??OG9p-S0GG5s6m*4P=_#Asp4(uyA66I z3|vZ}+uD(C2Odii+JVb?@W@zPa$#?pHflDW2dE4}sv|HR@bT7jH{cgg_7cKn1absk zLm)%iieTEPC4fytNVQQzNSpGIiLzv)<{>UbC_$KLE9Fap|58^OaEGo|{d_sn%b}~6 zV=Tq*woIyWsm}c*0sncSjIRRLt6Y;e#WTk+w0X^2Zia-ltMDYmH5zuBWLIm`AH}CaYET*aSsQ@EQLAa3- zx(&4ap!7*)+V|qUUIX072z@`^>j>(cw^sADpu<|%G|&LXJcPLm=`L3-0*rjn<=qU$ zRYADEf9Hvz~8ttzhYFCabUo z*%aF()}P^$x4Np?sf@c3``DQbJFCeovOF-;dd@;s0w_Y+wa6-B8(jfZ4_al1$U_wu ztFhTF6^=PZlhcfNzGaHTYnkB)8g(Y|e%GV?oNEQY!wUtsk z>}*DWr@PCoB~EI;h|S0>V_p1zS~8h~6{>btqI!*I8=HvqP)1N5a{f zcNfV^-9CAh+rihm72f48VByRk$ZOq`&{vQr09)@~2-qGu;hqOrG2aH*4guRGZ*${H z1YjrJMXW}h#-^yHY=&CE>Qo1ttA3TWsV;uj{TN$sJH#)zd)e~L``M~YjL+j?*K96+ z&Fx|xndNLvWYuc#RRyHR5KEA8q-Kwj8|8;}hkU z8~JODxC?D|WCmG?J8;Fr#;&=G<-?u;`kTZPo+WIv)ysE#I9r=Zbn~-qRv+uibnwF- z7w`8l9BbS7Ib8P`a+b0RcYtlNI#`X{!Opqn;n~lJP^KAWtXVGZM##;=J|?T2PeG_d zXv!+XaX)Oita=_sej7qNj{n=U=3%~PTeHR7|0|x4Aoy8N=4!;<3?23&5OG%`tVZ~x z!32Mg=UWkqSUM(f2%F*|XEoc*T`YkHCaPXG*D=p%_><_!#nxvMpXc+fSpg7Z5<70q z2La0Y{;YCLk_+eh4osBKs8hsFxNo;c1k;z|IiH`&a`4MpcYrx(vukN{&|iU3_AY@( zhkHJEdtGd=HDJK!^Fr?f9QOoJr=Hh&Yk89w%j-5%g^ujtE?jk`aa(bg0mWc{w0d>fu?jOX3nYIfNANp_g~ z_z5p25aATU8HBS4=e%%>d-s9BPlBOcs9z?Z!F`4k2>sqt`IOggIh9r*pY`ThK-`lk z_$Aiio&;p!H+L3;vu_71i0}eJ5oYTO;13|sWD%E;)J$S^8Tp8bP*p~nChBg4$5@@6 z%8(?{BvPGP<9R-tYcIw#P3V4(&Yr---RLOanE7g?slp!QQHSQN&oO5G8-T9^oDiDB zTJ6^?cqqn@M_6E0wihfAU|k-_d^WK`C10EE;yu}AxY|%a*BkhHqf9@ag#1#zIh*0E z+s1cf&*poxX&TBAX0ua#B|nutG8O0WY)-`mw0Q~Pa`uuWsV`&~$(OR90A-&iym*PP zjO|Q!u(OJtSNIrf^+C>k1?-ek&O$yH5Bc(ORy~h}GKjUI8`Hh)lHx$Q0O01Bd>r-U zR-X@HJ{wYkyv+x@)mI9({|r0Feb5p0NSo#Td==X6@U3G@?H>7>b2?itVjJ6;SBb+_ zJ3>9HVdZQF%a>RADxs%mvsLyCadbLhikW?k@l@vS~mRnyp742#s%PG1q!mW}WCdC`OeO_%W#J|DY;{C*d8?dNAiUMWBC zV>oZM@k_o&Ou=jfA0Gml!XWJ>-#b{Md_a$w?`v45pu%nWM!J$)a~858pNB=bgS&I; z4fJngm$}`#N@$8nhQ^p=Xn%TR6(YqtgYdEiQ7?6x>q+%<{qO}EMCbEZLDr}4`< z#3Meo-sNZ67M)LI|E*|$nlYY*II{(dV{AID2zMIK9MB}ljs@7US{ApDP+#^JfihlT zThBUFES_p3;=4fQb$BiiMo)+8W8G?*k*`x!_NP)bAH5c*P${2J@mKLWKf}?RjW_vW ze8IjWjtv901+b;)HwABIakVabKPWg6!Yb|^Ko|dX;?;nD=Zrj@ph!k z!PdpRC$}1%7NMa!DxBK-h)J{=J&;MXEw@b01J;FUK6zX2JPK@L+H_Wt)`I8hcs6A% zA8GR$R7&&nv$^>UFfIp}3_0eRfil*baVtBU>*XZ@7oQTS1V6*<1rINUd`<}zV4V!` z838+612cO{z|KP`*M!iF(25X7XbWH|2n11Ar((j6r2=i~{IAQfE)&&kTZ#m<1xNx? z^D71Ah%-qaox^T|^k>NSs@xoa>j@!@e!9|KuyDNKoLWc*&2};ROP%d}q(?~w(&qA! z&wGIL`T+DU+Qu09ra%Ff5w8fFZG?}PwL@-GX@N4Jg^zCwJjTwac`SvF8H`;3Q4fPS znwc-v!oh0y`67WxKvlq5Z=EkS2xGj=f17gV~$z6Sl!nU_{yE zDY~+;P8h9htP|dkvawDeQj;Qi{|d)CVKiy26GoAi*GwQG*OkoN3A&PL21UX!u|^ck zGnghnZ<{b$ku0AuqDavv`5OsR4NX(VM35^ z0A)y_&@7xY6v@^J<0%r_tP%^(!A`Vzlrq^m;pWO@>nIuo_~8kXe0V}N-Hqla@O)xI z0BIKm-jDeB1RL9%=|k*8o{jB?HFF$uuqxBV&rir_J*vkj6GWVk;6Yx%veh<6K9BNS zY_A@m)d4iuM)B-%4EFR$5K|fos+EAYGp!!w3 zFsN_t6WGvC4BEv;KN7U_DJUDx2x7N;2d@i0#M&~dd0Ws&oN4TYz3kUyU^&?9#Gmk5 z1$F-X4MA<}BB>cHi&!4Xe2N4~nY%C^JMRvv*ge~LBIsdnkTrtR4!yNfRu?pbgKrei zHohgu_*M*LE%Z$nw)EXLyS2wg3NwIb8w+ELzB{OkO<3_mWJq*$u{my_MQe1MAvULi z1^i6#Hmn|%#)SJI2nF(~AZc>bUJ9^gcu_6{gDehnGOjFU3B_)W2t{3n=ang|0<9L4 zz?7yN;DMC9IYPv@*o#H|ZK8ewo;@k$r}50ZvXr!)=jPQzmrds-c|krUZ#wY83Z8cx zYlR1_DerOQL1PICudI$OGu(xLxG)Yk6=P%9u*w{;!s>@O?4=!;Zw>z^Z5e~PVMnp=1{%RC?1sZ;=fV^zr%r% z<%>KI@*Ehohtb%lffYyRc!66HTB?F?$N@@}vI3Oz<2f~WI8k6WVCBg7f#NPR0A(9S ztf-FyH+@E2h#O4p6R)1+alZOCpy__|O_~L@#4v^v|Jq z$}qE@s%o|nBl5B!Fv85RT1N9~=YCd<#%$=Z6yx@S9;NC$#F$l81^0LqkCG4ixG+0* zr4r+Cp~o`jQj3v0U-5zqThv;midCsILHC)gn92a7fKr56@&SXV(B9qLi*%WCA1FBq zb2J^}^s+e|<5A{dgo+YSeG0d$>^Ahdkkw+OoCR!;z*%Giq*2hH^H11_YiN#apaW>i zDP4>)DHxH$=7EE`Qi@Sh2^(4l-(%jq>@HD*W{x<^hAp=j65+v&`k@l%0Mh^%RYm^% zlsLc(_?Vu-N?S+JSF)l$%;9`g87W7hxUisja{{zX@c?Z9!Q4P4tABFS~ zJqep)uJY;Qwm{HgHjNcvW=N(=MUVNws{mUvk_wEA+iZR4-ODCX%P66u-$@EV{QR4? z?dX3JoZ{8or}&Xu26!bxqrDQ`K&4giotS@YxF-QdRDo<^R5Sumix=Rx7S9N9*?Ga6 zM#^Dl)A3(WCG1o{y=n{MIm#rKuY7_nR_x#xJ;!cqM0;K=9Qo{C%1OfKp{IPLKf$N5 zh2V@TJkQ2|Xwz1Xx$}TtD`8oYl-~v?0@MR$+2Cc!Ho@mXLP!pX*TDVoE(Jkd6&z5; z%bCI*prj2m1L=h38a1ze(hD3q4YQ@(igtCHkR~g@I7r7-EA!B9HMoz1LJm~{)k*Gs ztQ>lvTJ%Y67As}SLdX+`E}7{d&aeTae9Yh+e!n;9aoD~9tr`&g04_zjGP?pw`@rY3 zp`+)MW&yuD_%qmgy7&^bSgK41_49#=3n9SnQa=G27O<7z3I{O2Y(iy|BR3oS)B(L5G2h%QR!LyLe@Xk3ts>B=)qd6Sx;nVZf($CNji2i%NOL}3SW zVaT98=vo9Ufi`ByqZC0}rf~-()eBsL`1L@xNZ&f3(13%2c|i(u0$C(Et3sf1`H)Y< zN)Vd!)4;0{|AB{jP^kn40r5!&s-$NQsJy z*BCqI6PS6q7Y;NJD2I__-J)L`>Jmoy59c%(lR_MVluButDc96H(khSS( zql^b=TzsZd56P+|9S_d3vpK}icp`f1I;sFI(QHFj03`}}Kp79#SK@nGVQG#>#!&?6 zr!?svXdsjW{wPUvSpd#1Qeat#I;F&Q_^%dls_y}nNsnUA(I3$OmI82xZ2|3U$4VUl z=RgbaXMo*e{3mDy`m0<>5wsE6D2tW5Fxn-c4CW2%Hue8)r1IIVEO3Pk4QdluCh46dQsp!F4FMem{qFGD@zs#4Jc@yv8+vV8RB!Q8+uu({A*fk#l==7+v6 zhck;40(`KB*sD`th7V^F(*}+r)uK8HS@p>B}~f1I7jm} z;Fza*z*eDFi3a#>1g8jo_Pz^0qjh~G)b_h_H0cS@QRigR_ryjOU!!KmZ4-1;)Z$7x4R%G3dv?=wV z4KywKnGH;c_GGPAf(Ed?p|P>0zNRgY?xQwcd-BlGEA-!7K;A zKcJ5hp;E8R!^mNM zuI_pQ)@K;z3%3BncKOV@jhk zJ)qD^qOAUzBG%smR&Hxq4_iqBOW+gzP<{Rrv!o}VqOWQmm`7hi%x1nFh&HfW>03lK zmTCJDZMBpir#$7henk5f?-@jw6~{S5dDb}th_+cPhY*!;#fnc|g!q9>L}$}%*@&*C z@e)KOYOn&)D%DeiXrr26hv=L-J%p$&y}S+4sdV37L<2Ve*JQU;lc_GA;+BRo%NNgZ zOUps)HEt=_sVu(akrFse9&$=G@1#n{j(SHobr&Ze!Wm(wTg(XdSU?&6eD^ zNNToEDk-!-vD_zR7J0rJNAw|AhXv?omMCp3lp~!fv4`1QBVLtLwWCyOW9>Q8&Qd9t zZOM^ZKkN##iGE+nM0*>{^Gk>qPsx?S752p&a;2Wie2NZNy4qMIARVqkrTqcv!W4g) zRZQ?TO+}@`36hBSPLOujNK^1hl$z|zRUFVja%q|_e(&TP)pLbtCQn5=%t~R;b z-4&i1)aG{S*zcR%OWk`thmln6()ZqOb}x5t^lV1b=8~R!XQ!*#y~@489r1JlWOqnE zkXf_4!@bd+?s0ppf?z-R@o(OcL0T(s;=B2IRdzb;(n%|8b+2)^dfGhcDxq}pr&iX4 zHe6hK{+Ipk!!}8|W_kXX6Fm}Fe*D5&VCUh|3s=s%YY1}s$1=)#x%6Y1$)33c`swKs zfP7p!eYM2XOpup;N)7tCB${p`(916oSpr-l`Yb2Nt1qtyB*>+g-(K%oLy(`nx)YFm zF1`Buot{F1{PGva(SLzg`bETj+%UH*UNM&tU-o3G5|!v?XDwS?)|?Ym;y15vapChRb_ww%*KT)SPEF2E zAp^g;FH@fS}!eyJvWamtqWMzACfsNR}>IDD0nbpY{R*y|WUb9&j>tX95uFYzj+N18U zo$y+n3WNT!IysZ_*k(~KPn0{uwpfPJ*4TF2+B4I$tWK3lg(zoZQVH9eL2_Hd;_Mu| zVBNu|r0>qi%qlECQDSx4nKY4Y5e-d5c8%JkhE;b~NoD#+;vX6Mh!w7Ise)}41u9Tr zfNiy&PpeVu)H61BRu_80r{JcbCyyTCA8e>$`$dN}P~}U}=}yaT%NffB%Qa<()#}8O zIRnN0OsZq)H0&l8Af4CBGHv~~4!5L24_$L?%)x;Nq20>PSgtwhoV%S*=A5ZFOb~N}K(iu$&S-4k_0ZYbLeQ&W>A7Sk9&o*|s{*d&B;Se{Nt0 zRbI*pU6<2{F_+>(Se|Qnj_l8LN?htRH%pT zWY<`(6MAbsn__V*xz@bwexExhJ7-l+cTTR8Dbhx0KrFa+X%p1YWzUdjZq~J|Tqjqh z%{X;-dvm?{60X{8W`~hX_x5`$0=Z6AmA0U(8gHF9*J)FwtvGCM^Dafgu1MRURdbyV zjs<#%6`~iHDiI!uob@^9g$mw{lf)*QJ0m-zB4chwYu1Git@*3NBolktZq|z4p-XnN zAx~?TH4D)FP}U~^g+AHKN-TIJ=wT?%%YZ_qkOsY+RYK6?z%w0qK&|KqPa)_D(53=V zXqMx^yTV&X(0AOp5ft`naV9AIm+ zc8VUU^bB=(*4m0osQ<6P@iGoV>(n8tahY9WyHTT5k@SZ$Rl1Bri{m+KO40?-=}TWo zxxh($<7y~PvWfK@A!{xFT>GqqEcLcpNEvMtS)W+iOR125IOq+H7?%POS!)m1kLFi6{~4SzoSmwoNLuL@aBSwbnC8&QYZjOOGY4^jHf?$fsBe zNw?KtsJ{fVHI@pckaXD$0A2%NhNT7oXtg>3eho_3S!O69)P)|K3(#+X!CXt7ayF2d zFch@jGEi7Zx-EpPi;&%rWvp0zf1-~x&XjD4LK=_ibe;X24zr~S)#q%T4c)l)<=dqyqqrN7;%>RSzvtffO*7J1 zx}4|VdCqgrea^YhIrp4vUV}$|LVK<2>#o6E)Tpk(T+*m+kgRA_NywN^jYg8%FTtrK0)4CMoHZ-aM9XVSx*X$~RvA_I+BBcx6SKF=kyX#MhEjBysy(xHot}l;g(6lM#@dFq zX){|O)4*U_h77Ay5zw4e%@FrN8|Pb=k>%NTV|O~j4ll_z!FYx&0fg7+pQxy zcS^h#hU8PbXWF1s5fCQYgSMqT2hE5<2|#sD8O`bG(35R_);4u5T~GI{J16-zioJpS zltBeRxVCrao}5M9Hf}>l%P~T5ef&vxSo&lNGJ#(<~I zki-zi3n(9hEdg0raDp}+X;Wg2_#+4=!Jo%q2B3(UF@`=Zr|%Q@5rQ>v7j&wTwh92F z?4x!l@baMbsCCU=%sMS0OU!a-X;`1FV|!8eFQEXVpS47WkG0R*k<~-vEdfQ{N6`b- zIx`a&i;L0KG8LkR)D?8EOsSC5GP0f7{o<8)F{YahG!m`6kBE) zeNsSnr%u$Jzwnc%iI6ydktV7O^f;(GRz>;ZFXBY?=-j$fP~kxefFZ-H^V9I)M}pxX zfCQaChy zygG;)gQ^K9ue|8J7`&)ZlRd!e+b@FDkmUaD7kNgH8`ja4Uu22j!BglSd^9Nmd4`3m zuC7SDF1U5@^l)$)FtDl~%Iq%&sjd4c5N$osg{Cptd(<^wRAfUQ5&UV$i*$j-I_Vjs z*O?bX6d^t9_{9pNLm3S7L_CHW>#E@CbgHqgve+RS2QNv12Ac@z6U_|2$%BRgfoHsn z(Z&4Y^1a$%|(bLCtmSH(4Somr8~gZXO_La4nP+@dQ=R4?OUdY~dM z^Dwur2UpL$1jOY#)MT3O#3Ys1WCA4BVu%!_Rwm$D=Czn>;ys|y&T4deN~a>=M&>;* zDdM$Z4!;(qJ3&Blk|N1AbHj4n4VQ60Z6*W7quWV}Mu}R|6MZ!4qP!iZ&16s}27Urk zvSl6SY%ML9&|&f<)n$kjowlI&0C-?%>eFR%OQWSb;`h)TF7U00d;#3+sXhD5^HNEE zYz`Q1IYn(VV2FtCmgrOjWQjIp225}{I_=P_2nejj*Q!JxG2nncuU8G3&hlV6wpPO8 zEglJsXXSw;9+?s2T8YY!1OQ#4Jz+!+g0`qvJu>2QaK*pYX2_Z+CbCk(qAwl;%zz}H z86rjLd7$vNAT?%0H$ycVGtbNwxQMI?DCu^=W!Ua=iSjb6ntgz6t2z|{4We-@!*a;6 z&Z-C~yDw-cF|+3@Be}WEta&xCdPPJRo8E|FC2g#Av2K>E^RU@9W%}u1)q0QKj|pv5 zpVDWzq~U%tulp2az1TmEa=a`FU(pCez%{vikd3fctZO2>5u^EC5TJiEPUA_CO;CwJ zHn^FjaW=#@4fkv5ApXTMREF3jEhftx+VE^R=g1e%*^xfZHORgT_MBC(C&~W_xZr4+=z@LJ``6>UmmJlW zum_U8WG`4hWYI4OxZ-F=d&!2@OPk5vvp|<*uF%aQkU_7I0Xt|h)HVzIFbpZx&J#5b z^Ln6SEsE^yZB&SwKqnPYEqFKq_e8r!w;e+g{!BofXgBD{5y-)Z3Fr|m$=jYN+VyDD^q5Jr0;eWrX*R{SP-(8Dj%Eq%v%p9eR?~ z0SLenJIu>Khk1kF_h_@E@{Sd`a}vH|GprePUeu`wSfb&8n7wuPhI-Gne?>xB_KtN! zXo*$bv7E=fk&{c#vbP&|nqNlAIc!0PT#hADlDdb&`xO+GXDb_N;^x^LTLKr|gMb)E z(Q%%2a^*=c-=Au1B==h{A6|O2_!i1oTVP#WYa_LPM_CJOo&}%Q%?Riat;iPGCho!p z79&`0{c^p!5#MZX-f4ahg_hXt`hfhT#NM+RG})F;MZlfr_rWc*_4Oy>me~?p0e4%c zBEV02D~Q}WXg;4oRc6oEJD$#FXv>2+92~mJ1~|1pOk!2G!j2(^SttQ5qSe?cn}$jVP99UE}_-3=+Fd? zh^Ynke*)S9`YsIPY<$C`{aX+oKtK%DhJ0R&3bom$D@oy0hrQE$6#^XyAgt;F{Tk3N zP()Qdp#L6d59s$Jyn%X}ul8BSpPYUlRvg$U3i!{E7(n6&EUFc8FP3i>T{|b@R#GU5Pfr>!?HP#)0Qbgkf`lA?v zC%m|0KZbQiWP7G;ZZJNEWktySB~TC0A7@qG3Fl@8uJ%_Tc|m#$;W;F}4%83y;|SAX zR+G#M0RIV$xWHS42Z4VAfjjUA!cT#J5)nMI|25DM(4W+)&L%vY9xX!_oPqKw1og0p zqnT`YV(g>)^-~C}pv25TCIXqa5n(~ee*hW<`qPNCkcB4|=fHmkgXu&YeduQqbb(f ze*?1);5^|);J=CK2g>tOdH2A73)2ta@^qvG{I@l#GVlQL%fNp}qpARR5nciQyBbv$ zxIE*j0{=aYss`Lc{2K7z*Qn|!&q?Lgfqx189xeF0KpQ~+0R0}~IG2EaKary6a(Cj< zGnOC4-3gb7fn_++pNM!<^mOk}guMZxjV6W@NzgE_AYhDF-{^7^X5u~KjaUFY#Ha*h zNa^#$saIK9R_jaCPE*BlX1laq+p8ibEQ@E94M*(t_mD<0YJJh0r69trPcEOjBdaNI zo=}%QxtdyS>^$vwSUFVD=cn=d*rQLa2Dd}o(d~=v)b`zWe!H@*OpE>cGkpY6%Y{B6 zFB}&14SkFX3nH9xZ|5nn@atXM{+%LGPxV3lBdD;PfHcw0ut1*x4Y9+iKE7QhS`=#e zoji`isLu4vPHrbCM@;xZ}1J}g@u(-*0d2`pqP@%y#@ zUSHCe^&|b0evJ2#3>W9zSjyMk=&$vRuSl&-KtwJjsjuyXu@xEqitj%_>Q+yrB3Z5Q zmcYyCdE#Xdu(iR1^(p-W00aCPcL2-mIlZ{?u+iQaZ9L-5WMNm>Pw!W?^ia>~>sZ`J z5LVE)^a0{Uw-w?kiE*1mJ%};JJp%#2}9{3CI$yg6btf zLsUgTR*q9D`m8@E$Mh9_fuyQ>B9$nvA|NkIRrOteL6)lO%Oq9P6RAY=4g&l{Yv}8G zFYLhjJpos~l)om|rK!L6RkgdYxTU`!$rfDT8j>@5RYQN~OZZw)g`lgY7yOFTv=9Vc za#vi8OLJK+hqdM&SDLn3RBe45Z8h?9yZo+sSJ=($m-Z{<-93FT7?Qh8PhX)`f`LBB zHFo2HM4&=0Hbh`r+;39xkGRXB-HO~f0JMqrq<_@MK|_NP(32bZN#7&hGkhWq9vY5- z*c@nMM7lYY4ELgtH@AOHR5dr&S3yOy5O7O0hEsD7pkW$DK!#`>{A&mrf=>cUMB_P* zOTt#P0|5-t5VCP2l#Jlh%nf%#L=!oIB$}IZaaSm1L9cRg;aw(h6$oMf4xVCMb$3X$^>QArj4}}r5`c#e1sHy=xBEcOl5k*qzZ92yN%uE?)@I!%{&a=hcAV= z3I%m%TpiXRehYJ%{Tg|~IoI5ZY31n$*D*MaHJa{Ua@nKjBlU4@TBlcCK|(lo0>S!7 z49>+JnU6~IusVTmUwK(0Hy}V68?YOJdo)~5HYSV4zVUR)?e46KPDo#K3C?>|BgY`X zO|%;bM?gdWAs|e&Bqr8H(BKvX6qOkQ_jq(K_o*azNm9355~LbA3ITDVrMO#;hn;W~ z0{leFpikUD&Z1YPIZyEBD0>vsei(CyJI-so_4v1nd-Xs#*rod1VUocIYxLHOfW}c? ze@?eE%O!#%63B9Q+&Ki`O$6{%Kn`6_jRN3JSu~Cs>OThcd2YNeZq>J3dxb#m=#(V$ z=$aWwVltlNu7dy}`*G+ma{ZSz(qF`@pDr2{a}fe!+E0Lckg;@)#b?g?D@ngT3g zorW8{3>@7ab)f2(aG&w2nO?e=Id?F7gfH)5lMXlFM%?*Q@;G&TcU(HI9ygBbG{J3f zh2zn2LjmuXddE!#ygTk6w`iK%;Hpb^$AjY`?WJgPEw0NAxhL+K^B<3o+a%oNGE33p z4n66b;P{VY$DQM@!igPsk9)7d-f{mm*gqbS@+Ox!u0c7z0%%aRxIQ=L&W_b5_^=;d z4RU5f5g?X;yC_aLX;bs{F{-&hg-iCh+;RTcb&?_a0GZE@pJ<+~XsHr)h-xQ6)nlO? z^-mr*h&nb;d&#kuyjN0XSotjG$p3mkPR50pHa);aT~IDbvov1$K1&? zwJcs*^Mz@%DPy{uHCu13x3-*ZEC&IG%u->gcv3%c&Eq|D(BMDx5O8WZJIt6=`0R?o zJDFRr?G9gN2@M-UleP8k?)YVU4r1qq=)n_41)QvG9x#U@PqWMmgL?I8Rahg6GU{I# z>XRbROmoxxw0Sx(U77Zn29*EOkUrq3yeq@_Kp-GyFdsVQenb#wR!!lk>m^^a3Uh+% zX61GzPuqTIC^hnvsJXZMUQwV`caswYH0FRdr!P@6y|Q0Z&qq6 z-B+8Hs)oFgnT^dRXGd0g;T!hGxAA>IytOvu_~>fLgvg|B2ot4YDEfLnkCvYA4MUVT zO#{9GhPj}@ts`p7a7BU-hTLS+6(>&Ha82cR3|`}S{njIH`O!-o=%>X!d~gWSq@lQ! zqC5kGd$Mqn!e)5Y$dEiN999n>4j&JlFMo_ejz>f6WuAKFli|^D@iJvXutC5n(Z*QQ z$sDFk*hNIZ>rGr2#A7DalTGm8m;@9~21Z&I<0hXD&ek1ZCER9o(1j?V|YyH@V@&7(vOohrBWSg&kG0_DTlq#p9Okbj;u8ym(JPQ`J2z#VcAj2q|~smbwV z)5!3irRrgGf^K?dvN`bqIc>kf^ZJ53-x*C*8(s zpd*hh!%2@(S>q&w^Tw`G*r+`{`{~5tO zMPvA1-M2AMTCa>=`Od_RF%BoMF+Vqk`O#EkIk-AleZ=58#_)<;jEu@XOQX35B$zOk z+&3QcmU}C)mEX$+N`YZu$Q$sKzc%L3Bp$R_8Lc(sjiB8a^UGJOUbJB)@EGvRWhRY* zS7}gAZ;c(g&v|3n*fe$tEEr4h>>l0nqOoeM8S8NMCP+U{El~n8gx{y9yN2JuXi+xa zujTRj9>q0bLLPO9tkS(1kgl$Ag#Iuju!n3MKO(h#^ucHJD>cuc|2$D27kL-|On?)> zTePC;;wx*_HD<%TsowAIkI99-JZ%Ft2gCsO6zhQo_%I*k88Ze`FQ3;BbujRhZ>@}0 z!W(D%d3{fZCJgb9E0K-xeouCdFh5-C%i&vuAIOdn;loRjrQ!F$qwj$qzXy(Sr*spd zynFq2y|8hErKHPUS0EL*_9QP&C-|WyV?T4aNZU2vleM`?+cn>TR1eBMl<9_V zgYa>3m>d4l5^)sPM!W{5-pU1#`T@@fypR#pYRfdo$Vahq>n(|C}r_SaZ^UZmuv!bJ(X$D7>dG4vZ?IF*i zhD2-GJNBS>HXok9oWGh+%vW?K*haFaQ~>-Me!GMct+2t3I$VR62W2RGiyOHqm& z$XD_;{gK`5F2BbG)JAzf-juK&-OcY7cFVzGP&{J(n^f+J>*sQA=g~Da zz<5fWc22vdZ^#}sz)J!c0G}WyWv1_@)uyEBil`jql*f`1DSM|&(=Jnb)@zAcDwa=@ zJU5-2=1eJ5jO2M}`AMSk)7fdpbZd$e)eJ44BC2^hKh2xcrg`!x=c|G`jwi>n<9V^P z((=yh@uJ50DsR`(pMRPkFFttZ4Ul)eDu|@jb0hDg_u2b4)zI}SfPZ#8dgqN$;CfX| z&oP*Po>#lt-W1(M?{pYNW}zlOohG~d(}n3I0Rhl{istdkOyH;Kv7vzKxo2;NhQHJ4 zv+48ci|P1uaytD=O+@zLv+2fk(A01Y7mF+YRqsaKJMcxnhf_6wFYjllnDBIS`qcEZ z1V*M?(;Cn(j@Xn|_}1#-Z%eRA2iX(XXdR(=pTM2~47hgb7uH59iSi4%#4I zm@dxcs6k4Yn&n>uh1WpwHE>VOSwbb$CdR~>c+(wmD)566wN(u*(uPe`jn@*61-k#H zzSF;uUVs#W3bRSs@M$&;XA?qJNI0^NiX%3co@>ulNud+d!`f@0{u*cy-~y{jR=7;3 zaMoKmVA@nBjt5|itnizHrm!g@H{)vwW%lIR3Z5dOW zp3(pB|2NU0QtnMvQ_WO2HB19jmz0+Q(zbZo2v0lRX>Yq%-i1*%@i?rH7kEgI;GH#7 z@w*QgUjHs|>fpQww}6!KwhNy6`RhX(<)zBf=}zJ}tf!kqCGfUOd3N~vz{cfHMBd#% zB}Zk5%0HJOvI6FzjDe~D%KibF`-qM9YBTNOr(OHBE#GM#Qfob8b3MNMi5$ z&1QU!Oi2xB6UrnQiNlyhImM9?d}IQB9IDJX-G@g26q=1DK(xOfB|_ST0}o0IKGAqb z2S?7#&twdpDGB2gKorLbE^#^_hNB>0Aa??L`qeW^F8)<&o`IS7<|PVN z&CVGNXJxQzgvhp4%`Q2u<17NCu1jt6joiR(v&(j8~ z3Ce_1BB*ER6v`P90yta(ihG8RwnSx-b0UO+T;MPVL>S!_Q4%wBm?cgW^Dse_>!1nf1)(3E%(}UIRq}cx)oSR{-y9=`~O$z&z`n ztq>p}SCv{soOMCmJ6o4kx9C^%K)=!1g6?y0wu{-}ceg6uz8Jpf5R+f*QWBf(k+S$~ zVs@aAhlD3*^RpwW!!3Z~?BfhN#qI3fYz}B)_I~z>cxiC%XB|HZ&%K*H_crlxcHpkw z&-S)|k;bC?+0e?RySF_i#VYkI^wwt^v)nAu?8kV*+q0e7G)uyr*;`B6lEE(be~Yp4 zHAX8T4>n~jM4)`1KF~NR7#s4`-6t9Jj2ZV_7 zl@xnMq^N}s2}BeueHwt(ORY}s{vfv-)A~H4$9TZNbsI54EXi+^_o-IznkIm-PN=|Ft+P0>M z(FWNixUmo2FPsV?p(nVlY0}!ZxFMY(uw%Ipt^{R#>{z;%o+WI<9$FX|#s<`+csGl) zWL?W8D~`tc((91Ix6C_ zd2C)A?I%y!?pS(eQ{6rCM*D*9AK>VOJFUFUGZ&Jnzf41|A1y$pd*=Muq@Q%=v8xIqzJ3?g9a^*_CDKc)@>*^D9)`DO%DyckZlW=3s}@UkFv9hCRphmLo2-=G;cQ ztJgwjF2&Puo)$)Pu>)nEL-$T?bz8%zw_x|!3y7_ic}_>Zr-ebyQXQ9a(Ei zQdg2DjSb76!Kt4XIV@x2ZBF=4!1h242H?H?wwAYD%L>V{uH4sCZ@|EStw&1u#Xcox zwtIZ0&x9FqT*JoGowTEHurwUCTb4v+=}> z+cJ1gWo=Ir^w$0cCrhZUGq#rP!PXVe9oKH96DX8{ZD0H+59BNFXGrTUN72sdyouO+c`UL z7wn=vMC?!h@0v3zA!I+ZhwZ;go^fXXHA=$v2nl@U|74;haACj1Jo-#tyScL0lXEh$aQJVs0r zJqJACf`QwUk|cz`E1LYIo~-i}B`z z_f$mV|0q!r5iu&Bi(eq$qxFwF9Ey&+Z`>6U(I(g`$;8AsSjsakDK^BW*b*PawkSG+ zj`j=lVx5Fl4XQyBr!AVVffmu}dXK~Agqe7 z7ks*NrTMDdQX>lnI27rIh^0OsQO|9<<2 zC3)2D&GW=~6hrdDO#JJk!!0=J+nxIc-{Vs){- z7+TJ`xz+4iXI;I8j|o^*&th?*vQS-UEHoF|3*Cjm!sCJ{pr4J!*K28b(~imNSmag$ z2hoG{!T6wjkcIKFQ=lrSDMR_^LDNxURdEQNOJX$1h&0qxP zi}N00m@!SvW1`r{R55|c;@w=t>BX@Im4HKT`31!t1c%Gvc6c0q$EoA|Mf^nyXB_+_ zBsy-<00C0ublf^p=zV3m^`dj<=z&49#D#(rD7HU;D!_x>j@n#fF5nDNCXb_z>1k)K zJNJmrnwHz_Ou$QCufsX#!hQ21tcW5c2$Qtm(Sbw{{_0uqlE*Hj79zw5I9gCKn(I5C z&`%=^Q8;u|fF}kWIjl%_=Y}{#bxy{dI+*$Bd~Lq6a6uVEj;dUG*m>>D<9|AO#R1 zgb+%|kk`>3%{acPi;8+mY9O8>3zaM+WCk1y8XNz05jM3 zw&XB{o4ee}>lj)X<>XhM;njHy5c3?38e{Lg1CI`2j#&^~<(0|`Iu*hns>hui_dU-? z7MK_O3%c!CNJf*~%1eqANhn^7-UjoOxKCM?c$^!|KRMG2Y8T@wyYJWet+rPQ(4Ob0 z_bAJX8Rwm|=4?3Ut+0k_Fr0s!|6S_Z{`udd%A5js`~aA=WE#g(=BfPtm%^&6<<`n@ z<#y{i@M`IMURfH=I&;pdv+fkp!<5BWS~zWBd6sVBYwoE$p6BNs^Dw+54`oWbDg#@8 zegIoWC>`V0ykiR%RcRoANmY=4pG+Lihl~`Vsh#waE4oJm2w}o^o#PCK)G#JE4j?W# zX%MBfExY}b^BK$Lo&`UA7eyls72uEz@HEB)^9$hx7MkHUijNKP)~tT4EbhAHMcLPF z$0L7y;Y@xul3Rz3bT7hi??)#*8G1>Q>RpDjix_p3C0?cFX<3}|C*;vcS#W;cM$Cc; zUKL|he<32b*P|0-9tF(ckmVQXFSoE)Y3F~I9xe>s)z#iw(1TtNYe@E%dLY`5>W85W z)U$;W{0hwm>cv8F0qp}nypc6NE(kBs)zNP0g{XYGys{8q&92_BnmtKR!`Jl%_6mEB z_d%e7;%UuW8BPZaqlMAR2*vkNJX{WUh&V)7D&Cgihn0a_QCMB=u3>0|rtShmHb+7qqJ2Cl`2okIZ9Up?(-bDumAbwJd^m?&N)>I=ss$Y6Bvv{{SAj(%hpcxXWuvkPiqdbJF za#5Ydv!w_Q0=3rr*y8^z3q^W3Z#Sm;RM6yVD}d^v)5Tax_adj@<3(P-1hg?p|(phw2ybJ<$ zS<%9sMFq(-w4+zn17|b41eY5kJ^B8+Tt(e`!F9Rv`0f@O#PtW%5PsLcC9e;-LT(2w zYKB}MGWKu6IzOe^FX3oDbY)zb_401_Wsr#c;wjZEgL8$U?*j6h&72D#$$=J}FC@nD z4{GYJh!sz@qI?3e>Z;?YU)S&{h}2zS`L!s$%04Hp|J@h05&4xTz1rpimqZh}E2=rO z#4mZ4f)gzA@k_l43oI6v+&C3>fbJ$Pxd3~XQcLNj#PZEDy$jCc_&B=oYgQVWjL7U- zD(XIh)V*{~_Ko$$r5h^ebSX~w+0t<7TpnM}mM)ZWZ0UUMQidXclGNDe*w=KwR9(8I zdR;6Pmr6^t+FM<6!QnA}Eai0)tV(^?mg|+9mC$M!@1_Uxok%UkxD1U3>7_Ob94%eR z17&(Cgx5wfuC9d-rFgk{GJ>{o`Ez}g>Dy~X9IJVOzebMpGL8~JI!vwL}f|LQ?$j+$7NT+UlD zbqg(DEobFhRavet7s#p4aPMxH(;(x^E>M5AEUuQfu7X7}DGWwt`JQe-WH|}B%<>33`DWZnp8LC4EY znb9HwzhYhyRvcCoZ(iwd#siA464AR7S|OiEV$)e|rH(CMe+RX~N}F;!uR4_7z2bqK z!vfp9D;;-fmDxyasP_~5Z4*8ANJZJ*ai4eA?u`KdI#2O9A(-7KR2lcZyXN*%8CiD`NEurUs&3_w1yT4__iA@N>=|!fY!$tEpPzE& z+$9JK`uF0_7v1jFu;*f{<%{oi0{&o9-br@v_HRYDF1MHFwhZoscFxdf z7ihNlB#ppb_pSVR;KCNN^FapcXemRBpQ z)zvFdlPYYFda9nwt-GzZ@63O_*WGiRKu2x$ zhMERL%+qR;pboZZ-IDM0uv=^NYQNT<9QtGT)_U0|?43_hsgJ8pPt6zF%gVg*YSVM> zAMPo8)A=>mntDC5KHd;EBb&ud#)lIiq+KPfWhmv>gtZIVt%bELIm!R_zhW^G4A+`x z?OA^Qc-9KU`1IODkr-!d(Y4YfH9&N2(dsu-8o$|Ul`Ut%kCtFvpBwdPutS{myQ zYu&ZpT7RuZwkoo3!S!3RV)B_EjN}QSft>qG=`Iu!;UiAYfZU~-_f)v zRpVG;i(UcHCXAjZuqkfEu&*_OZ5RCBtNm`m`r|t9aeA5_|Hg2O^M-t7UtWH`)9#9b zd~*nL9<@njQPUyo{p+XeA)G*_DxR+2>|Su>5~20vZeE{#4fZI*-~5Y-KKXfMowjo( z)`!$Se^b%s)*p$TS;r|fdZrZDWAan7xc*EMpZ>*(+B##WO8h-%NB$P<6ksK92e-BU zv~E@ar$?}(Gqk~eT6ZG$kK(Ll(}P38=!k6`0nXwO@Y60I6zyol4(e+5xIB3bgHBT0 zS$BEd9CUqMl376^@*yadtD0gQp(S(ObvyT@Ur|vd4=ftE&F` zcs=e>W-w+jf}Xs*ho|9dVlpJ`E*as0Zckz(yqDNtqAgN>&*{ebUU2_w60-T=AmY3~K-{(R;Cnh4UZ=z4k{4?d^`Wj&7@BYk4CyC0GzKB7A#iIL~g zQD z2ZL8S>N*6+z6&ksAsj;X)BOm9e;xuMz)Ld#&Nf2(Rrzg~3>`1g{s7wBxJ26nXjdbQ z!9BRxxZJqfh@-^ojU~%>3FrG4`g(0k^dd?U2a_L{~0yzySaVpPwut%mS|<^dLzDn zEjK#8$VttV+DLEQ5@GNAbtxibH}V@9BIvX9`|B4IIdbBLe2T6hlirvpQg`TW3^s;1 zDpn$5Ra+*pF^*nyn^mGL|1wjvRM+oq0N+$^Dl%4T)5h7xIA zqPofZ68^@12isbE`_Vwv|eaPWL2 z9MdLkTC#byXZtZQrpEr8|3Np{Qj4foaf=aQL1~Nn8uc_z#Jwy7>7wgBA<|^LJWheC zDgZdIvTk01eeP{9z6F`ydDzMM`u^u#^#t9I*P&@%_cfT?+bRTOT#OzBgRT2uQ4V;9 zTleyFh4VfH1v23;MfweRogyp?dQZLhsw7lJP()%|+;PihPI-tM_Fj3t1VjMfTf7DU z=iW;oF>jFM{-1xEI3@nAH{}fzK@%agi2e~J;2yxa0t~ztRIhvQgSYR!B-wj!h*)KB z(|aZ2=25WT0Mdd;+uQMWy*;n8cG~eqw$E^5a=108zB8P;Vwnz9rDR9i&sjB?LRUPgqPagAb00HRb9@gLxCx^GQw1;%3 z>Em}V_iBL*mF)W39TgGBhYz!)Hvyo#og-IBY^O1_Jb=*I?rrCZdxLGLg>7ZE>1I2* zo%G%MQogh=PE3hlmy1nsVE`Z(F5 zd$LITKe8n<=?PyMsu1DVH}O$25SShRPE7&McIpIhpfp|sO#=9xEPsfIu(pU8OGMW1jpJiG9kShtus*pX$QC+xy3`CV$ekkMzu37%yf4Zu7u3-V z-m~MD@l!0}e-1Y~1PL?#3n6X;D4$0f-to&4$(=sc<D2Ea%G@;i?N z;K23Hn1C!;j02gz@9Pts1BCicW5-N{U;hQIfODj(hn*n~WsAgXf~T1TVrna|^I`A>=R z!;{(&rRTm&O0?f*t{iCO1Y*XT@7y1w?AN}EFRlPJUxL`zK9?W!A^#cWN&1wb?w@@p z?;q|mdznD#FQ^ec-rUo|0j7+_ni}-fmMG?c*b|_zda<%#0-du5}k&hOAFj?;f5 zAA)oFlXB|zzheQ}>+eta$q29i9oi!9_Xqv&(3~RR_h@OB7oh)<{-(1KGoiml?W$vp=G}qZ<_SC;T}gEdMXsynN^Vd3}uzT&4U2;}%R#`-}eT z-6HYeSof4E>#zDtt}Q;e3JJGN8xkwk{po)dip>4`CTXe6#`n> z?~-$=cl#3;RHk}&I6)1jh5+3yX1B)EW9xN^Is69)!pzV~b6g%r>|12z+()$!l!kUY zve8}Y!|~ml-Q;ec2-@#V3@F9%csLlA8}KoMJ^x;4Z@57UJwX9Nd*U1>N>5;mPAuyzupdg;{rr<9KO)UQHgS`&;1iZ~PBJ{%o# zFM}^nU-sqoF7>{D-y9GFaq!Nl!CX&a%4^;i_M-%RpH1W6Kc`x{_C5Pvh?A|M{j>cr z<^$LikK66p58?kjV5~<<18IaZz;Y$NkL|}%dVes4*iR9md^J|0Y{HDCu7z z?d{)@^xT&xsCrqd$`ElhzQ;n{?Fm4D05#6W@pK%{9H3LYc~Yw>(7ihioCU&xNFW+G z58TTw@q?OppiGc{9H@}rBm=LP(wbOIQy)|*9}R3>v?h1JAJnMb(zvg5NU)B>a3dUa zdj_*kcBcb5ti+82h$GQg(g8jg3zm)=#L5J+ffgx|N5yPFjn4|ux&``9A|d($Phb9|KLQfd3$T(452f3jzn%2gQRv5PW|& zcyM!2I_P2xUW@DwA6y;84&vCAR|L5OM*pBgxueL`Re+m=9+`XbN^~e!>mY|5)q{~- z5g;WXkAxr^l69r!*FRv$16lRp{#E)+cdUtm9uLL}*axV_aO0k!`e$Bco{4ohfm6~w(dbjF6Hrn$H8vZ7^lI_1gH<0!#kOS1LLIGeCRrK zA3BLA0?5id7c~Kz*nQYIaTCjb7(Db65XKqcz&yM}>(B&=aDA9ObWN_Kag&E0xjWn* z;(O|7`^=&1By^HE36c1ppOJ9p@cuBY0Hwo-0+bJ<^YEK2Sf#`AVFl-k&WV$g4;YaZ z)kERsC6P9NLEAZu5!5_vAO0Qj+J~nv|6X?d!vrz@r=Qdg5C1a}hKJuGfze^`Ws)rT zg4rXOflgF;={<@Zl}Veb`LaT+%F8O_fj^`0KU4fIwLQD-WgIYl~K8v7=0eA?;v_A(uNu-~JVv?tmUns8> z90UbS&%XgO>BR0lK$IKtAG)#n=;kPM6vo#lTqkBH86l8X^$~qY#3>V8PFUqVQWgS2 zM;@8zb)qpMN9Q<4PK|qh6p+b5A}8_9ie{y2;M9}Q}5_XE-^;Gk4Fg^ zxu#$KI7ta(Op#{)aq#$#@a2D@%aWS#aTK4zNF3)Bgx<}?k1NXixZ^9lo2$yP&E;`T zR#|tV-Ba}GjAMK#gFcFJTp+zfDpFIW@wJP>@jcNp0P_Ug0jSApa>peil#snlKp9{7 zsK~X!$3E&nT5|ub9zV!wBG?PbQ-@Ce)--n^{(E{#l7LfB6e4pNcn6v4Z(CD#85Q5^wfvB)6H@vSxEYtHVDS z(dy0Sf)+IVxah}gh7uh2G1K*RDWIT1ph2@$IyJwkg3gc`|GnO9)Q8OPk&@Mb3h|i%{h%!r=JJ&+bY#tsJ%+vb8s>Y5uGsY5?KMWT;Z89-`ip3)7?AC>y%v_=}x&&d1*Qt@au7@o`q z&9m96e?rZl&EJxq@LfO6quHeagr70h8mDt+>?&r)j{lPLLlT3Fn|b?_)b2AgtQr68 zQ<$02n`c%ee&$FLaJgpQphj`e;Dd%BduC)M-Wjwv4*U3LOpImj8T6+^HPe=yjQwVq%R?jgIAiX8H;o|vmnJ3 zavbCY$O$NkL&>#5z5zK2auVblkZ)(+)T?}&)XX-Unc3E5X5NreGrud{&3r+%?$cyv zFfE>$(&T5R^i{C4Gar$vxN^AixN3@J^%<+aF=J)xGar^3xSG@mDpd<*wPvQI_RJ!o z{h4p-^>1k&XO`H(%#waIvt$^|d_o${d|rB*`Mhc{^M|1Qq2X!f52eSMuS)}5BV5l) zZf5okQo_yBH6@u9Q~)Xf6=&Zht`n#WClH*oR>_6St&lw+dqMWj&P$%z4au*N10V-M z4uTv2`BWi?Kt2Qc4CD~VVIsr*XW{;{aR1r&NRio3NSCu}&0p)^nz@?&e)e|u{f5l! z1Kv-~V)lDA8{qJB&#_mtj6u4d#jC38*{(slnGH^=u4c=V>dbye)tW^=>(Ebkc2R}J=%?8?KZh27p8WxqvwTGVJbR{)zz$i^ zOr+DNidgh))MC^}Ebo`1xXvvp%@-Em!oPf5WiKtO`U}gd;nMOh=>pfapccEsf#Y64y#MmaG&2Qs~}fEs^Y3y-qh=T8k~Y< z8y1JYVfiVkZuu>#Z}~z+YkzBIV0ph`Z21uD7qIo+kE3ML*z&lApVBrvzz?ADwiFl8 zY(7;&Skd1IE4pi8g}o6Dq=fL((lxH6@P-P1w*p;LQd)SE8aX4d?47`B?u7S98Q~LB zR#B3Jk^+?Ep`-vMIpLF19#>IVBqbHfjGzR%uu~Ab1-GQCa3s|QwT8M{LzvgMgn2_- z*k;?v-4?#UHiSQuTEbsQ4dEN$eZ$ZYz74vBOVF?_!Knd+$4G}X`&3;)ukQ&Cwkv!@ z>f!1uj}VKdhE=+oA!M#|7n*81fSz{Z@_ zWXM_nwS>!1uuA%SYf!@$t!2C)u&T9Ek$wu+fEEHlRw`NFr1mUZt@?`9%9gD^Bvo)# zi7ao0Qq`?SP0czl)vX&+gUI+^8YXv=6Mm+kFEG>F?~VLdjB z!E1Z3-fjC+$!q&t$z%HmDPVisgsKN^Gwi8tMju33XSVm@0NJOcQ`^r;VcRz;a*Em( z*obYxaBf@BM{U0<#cY4fp4>;vwc;n+Wt{$ z*xr!u8479IenxswOld=T2g=*FAD23~x(c}mav$Wr?QN-N`*~@gm@>4j=pSt>x{+;# zeY71&Lp0+E*OQX#*@oTqHY@vV`=B(&rMAEEE&W^X=Iu**-u^|&Z-)gcRlrWywsdM= zBs6S)lWG~U8`-EGtIdF zZj^5ARw+$IVbsF^bk5k9q&uaIEXv5CjI8~Kq#UliqPzg*MJO-WKPnY*-77lro>+yK z#F~woUt%)Uc~HQp^6vA}o8r zKN5See^BZu7Ih)kwg0Bnv%~G*dUxNBLCWsX_wB_AX<&bxke=<|Ttwd=+h_D@aYmyS z7bQmIG)7K5)3BV#Yk@lHr>g}`(1AA4Nn^Vg9Y(~DS)@``F7eAW!urJ})-5jSJ>rtV zEq+4s;Bt$f0sa|-U;HBAFM{?(DWK#!6W{(JjFVvz&p~mOjfks;3-Q}hSnO$}h=|Z3 zCcgOw?&!6MMLuy}b1i;WN{D|drA1{x&!M;sip!$7y!Z#Iy!cfqBi?AGtXRfqgCA8! z9BaWJYYhebNIB83g9v`I^ix#qD2re4*?sS>hzt6vxWHD#pO&h)y5b+PUGeKkA2k46 zTB#?#jkeeHMSRLmWHmz(pHLK6r2(!XF115$4Bqj!2~K2o*bRcit`{A4*6jF6Nx&uI zay#CjCi7wq+UuB-{Dk^&@<-1G96v7w9dFY8J#`?AaIl(?!y=tJmZS^E+katt>w^i$ zhuE0oL;9HG_ob90q0=WE)d@gXdMT}_#oGhT9n@w?k583z7}>nTsLwgxE#+|)9B&i3 z2=YD1CCBGf_m0m=CCBebMF&Eqvg7Ty;13n-G_5+UhKA!n-*B93rHUh|m8$g9q;gEE z77T1Tenx65<#eF13xypAIyJ7IQjI>O2B^jW)#y8ZMH(u_j~pxdC&!BJ(XqllIS!%zoaV&i6RQav%~IdTsB!nrS|{-SYwkC3=NEo7TQ24NMWTQp^e>WA)yUdP%zj? zp@V^ul2Blffd>N*dl2d%?GQ_b$w{6v}k}<3FSl6i0 zDAx%iE{b{UR6V0*>cNdMeYKK)Lr#U7!&T}sRhrO!nlQg<3g7Rv0@Mg?cigE{n|DBM z;UgL`b$X#k^j;5uBU(gx5w=CxQ1^5Q9yfLrK)&eEIiYCyl%kOk-!LbX)eyhZQ+lNV ze(i*K7ThfCvylML!uC#2Xc_ipZQ^*;ajv!FMRpjZcQRsfoJ(wRPOsP^X1%d7J$ym? zINLb6IbsGl;`Q?_9RQM?y^QW6#q13-yMugPQ~XIs`HhV`!`hu7#rmK}c4*Z#k-Sz`Vcl0+cL4$r2Ci0{_y_ z{@O@aI!INzU-+u70ILWNpEY05I)}q$4!dOpxWPBg2EW&J;HNeBI-8vEwmA{p;)K~o zD4VFPEnvsryC6FGyORF~|PjpDe&8SR)`>3PxUDNVI zGrp1>w#q|E9!hf3t7AT009^!K1YH00|;14B7A}E;!)k-wjD7f0`r>#1Wa8bT^41 z!O(F)Cz@=?tnr#zb%!09m3fAlVOM5lR{VzfKt+QD1XmqkKtaU`u2EvZ2{WRgVBX)U zdvB)`!tB2DywCT%U-Wj}I(6#QsZ*y;ojO(B{DI?~8~Zpev8H-{R`BAJ9RJVU;&t(v znRiy_tt{{dYTKGZ)oc7~{h8}(*WdSps`=bHTXo*N<^I;phUU7t5B<|zew_uVl(V~P zvc!5z@!DW%!}`$S{NsP*@E34Z=eMm7wX7{(TO0IK$+|i9`+{*3p_v7(wcq=fk!5G= z>a8Hi8ePv=A|lpm1NQZOcPq}H+u=YI!MrW&+SU>1!yTq+8nx<{mZrOFTM0OGZ^Ivg zwoF1~of;H>H!J80XEXC#{k0+g$fA;af;Z*X*8{C;H1xuwNR%gdDV>W`ipI1`Mga;2cS z8W3Nhue7vEDOK{T&rzA%C@WHmmljnk%a!sWf=?y5H@CRFx}YNe+j+V9-(Ff-;VUor zgbHoGDrI$bky55q`S1JjLal+SiqhhO>WYfeyxhw2{My38{z!#UIz6p1v2gK^iLv6<1(g-vf{GQ9_*V!&;rha| z+{&fJv`Ru`8otyWf6S9x>u74udUF{-SnG(Xo{U0hMF)sw~-R*oyQP$7h? z6RlFbxs|!q6_r)RcPKKIIm2aT1z>uGbrN8aElj1lG_P{?I4V=AYzk4K;ago;nOmkX z>7-BrW11CEXEcV3Dk|?ty;0$ErLy{)R2UN`386EBGYQPZ#|V-rDoG)V%L_1CH&dx? zdG%_2JOU}_&je-UnYIPyA{XT~vQ#%nAWK~nn<%@2ql<%fDlaXrs?MuexrRy^fYGa1 z*+>8rd_*OV%x z^x8Zv!qjQ~HYV`ecji14l-Ar+-qP$p*!A<9gZ63=rdEgu^~M1rxn3wlb@6gdC!A~U z`L=)K-7U4P^^DFTsuxA7Us#&U=8~rUcD_&a0>_P%1SU=NIHvtzKSSRg7*kNZe9?2zEHXsb#%CuPqd6X|D9wg>Ft* zz9eX;%DQb}U5wFjYuAw_C%m#prFlUI!z-<*f;==k>tM}93eT|ubFN}VM2}^LV+bb- zJQOwLw={=ZYuAUE{lx;kva}_?rKzQrrljV>SMsAa>n zY^-#Qn!{T-res>D3F7rt6)6Qw2P~9_SecZ7o=?^Xi(SP^*0!CB8AMlmD*?)iS1JXp zeMg?Jy1F7#HJwC*%`UBop~+Qwq*w(tOwcSxQ&dwjDl5&cswN1-wi9G&WwF<*RI*td zU0szAHB?sQ7v+{OWk_}P^3vAYb!!^x)`xvAshSP{FH9dT4p^%5Yn$(@U7z~!CxroX zbsI`X_Z`js7tDMD>#oRp^S<}6STRVIKctO#69Hp%QkfW54Lsx9ry7IS zx+Zu|WbmT?{f-aOU|vILZSA_>Z}>wYs%ROiqVe(Ox87(B%5_beC&i(LPN1;1&TpeE zOlT1%YZFaanEH zpZs&p@6bE;o{8>Ng*G<%|EXr_pW!YtAOoBkee;>1gY`{|F8M)I^l& zZE4yVY-uhe>B4_z<932Z)ivd7=7arhULpL6 z{OZrhcw3RlEhzC-RWnbFRjAA@#%f$#UanL!+h>O$o3QI3Zm7MWT`5?qz*rF)IrRat zsB&pJ@g9(h@+x5^Sw9?A{w7qZxVsUbn+|X*gBGTh!RD&k?cG5~0g6L@t$1JA!M_d4 zOyMen%^Q!!i;Ok6CIxVM$PXg6$$4UqoV6f-wdQVV%WHl`X+`Dg;&Kh9ucpifPSJ|S z6)-VO(+ZZ7&4rsfp{|KkS_#BYJ2x6k@N!hTBE0Fex)9prz@7zk`}k zHw+hq$uoxaOBZ84`5a99qe<0ks><|&1QJ110lYJ|_?H%!YtF9?pym0Hsjfdx%Na{kB7yK1u~*VuRmRjx@=(}% zo599~5m%}KDPTKEQXX3E87T>w>IzMccJNkS0UxTccqLOaD{CjLXi+R%m0wv=TI%yM zDQN6zAaW=e%}5|M#0JR~QJFaxOe1Z8uGXqk9+Stbu*nnD#ICLX^T`8OH1~p$(Y*<_ z0ni9*hz!mcV}vyzo41iz%(GxnYh_DYb3Liye|+p%bHT2W+{`>l-5SmTGPOzPM?}>VSm|SJ2=3+o%66DqzV&RKs7}yu$V1!hoEQ zolrw_Z4)yR7H07MtzSI(3r8?fr;u4y8^BW3)P%|6XRhzQr9bW(E6xqTC_-!3hg#dP zY_&AMG_E+$AE3#EIi(lBOvNsPctOMZb+w_oHGKq)4@0$>mFAta?x(UTMp?NZft&TA z+U7d{D^w6`6co1l{YJ?FDv@ZRs0dK}3cishk4(baiBgyZ*klmU?(OR#)6!=5N%LN%?>~G?vv18uO9Ydy9i^; ztxfN0+G15=tsuLEP$&zvL5zQR?egxR1*O%MK4oEO?Oj19+z>`wk9uDISo%TG3fh_t z(QG9uV4K6t8RC5ivP6cssy2QDiyj<2Eo`dnZq5i!GpOd(*4-0qC1XQt4cs`gIVWy; z?|9Hs<4;?7?8e2<8LHR^t1Q|z+0AXU3i6CZW#KK$C7z}_h zq8iIg_|fCXoJqxw!7+j>OmH>;BHNA9Mo(Wl*h)w!dY;8&6RsbwN`DaM^#xyMWzdRU zYlNR=N7itZ7*|tPKoiL?Va{z{1va&17om4Sr%|Bm3&V~vfDD_KNfxPfj{~!Xa)fBu z@)1SR_S~$y7RraENSO#JhB;yGiYB*Bf=ecwOa`)s-9 z>g!1w*Um5aKu9YHT1qM0;cq@Tcejji zHR2uhv{9yTHUGPojGz>}r>Ld%{yR2&c!J(>0vGxYy;Ja~o<#M;2R-pYyVfU!8}uH< zlp}xv7YedM1djSa!otwe>XsjBZ8Cg920|3Er767jVkKoBz}U_|D3WOYccVpiPcx&>ngew+=p^bB4bT=1h^h#4cCHeM~1u(ZX;eamxWs^)_J0;*6Le63O@vDhnCmO8wyop1uRVO#{egLC zVcKNeE^qLEkIj;fBSicX??@UWE>kIaw2{mvL0FTLA`es})lZ~;7C|XhHqNQt(pa~X zIFGG(eVMuLOB3>KGXC!r7Sg1*|$6DM>)bnavA!3h1Kci+& zHCppHs@BlSwiZE*FX8LbZ@y9U>@0uGG3z+QMk0a<`36jIp6KHBg$O;3b(8ZTI%a?v zZ=%PgLGsu5?`v&oWnkcH?OAE&ct(n zf_*VF8u3Y7-93}&J7ZZld>wBP%X7vFL+3e=d`joioiR>Dq!c+QREdcwu;8-Cv@*U3f~tuxk{LU;NGp9G^znL=V6;ve-SInWdsc*qoIu)w~lyBD;Nt!@kL-EorN5gW>VdHjNAKMW2&h#K0~TYmuM(` z>j1nYVNKEU1g-tEkw=@U!CFLZ^ zZOAprXvHVn^wGLI<8rEP?9Q0mCCxC7u8d;}eLG!c+r)7xIWy>7z$mi)fa7wQsG;Vx zT>LC76iv_=c;^4pPJt#5Tf((-_E0m;7*k$g@xWwj7qdp%BzTMZvCLxh<9{~(Y^l)H zzt3Y*XrYXls-Nnb5hxnK+-9*mtf9%)!vGI`$KPO^(@P zj#$JB7~x4tDc0~E!W?&O*^+FN3<2s+frV|3I_I&CUC$u5Yn+P*n{l(aqg%5c{-jd_O{xRFnyEu0hAcTI6I z_~|S}!0a6spSk=*LwUU;r}bWUi#twJ+h-%Rbzsa!PU>95kFA_!te^I{n4e3xQ7c;E zVb7_!_7y;7&_h~ zo*N=odz-;?d@|3rYXhl>4d}N>-ELWv7HNkuIE9biSTm~paOi4r^4M{P8cK<1D7=8s zzR+-K22#SaCLleQVnbY^;ePB^Yn#X=jG_=pnB+|Iy5Pdnw514m#08-B(hs?tDIlW5 zj7j|%ce8zIYs0#A{#LdWJ;9A_V1I;O+(5v^p2NTCi6Gub4Cw<0^nPNAcb(tO`{<`f3gMq-vm>Sv`u{Tqr7%Rs0 z=(}xUkC$zOpqR7_{n`*Lyx&OCktajqoJ4e=PG(wQ=$Y1QH)v>Q-SH~%=!n?Thc~da z2b*-QpdE~{4||QOKWX%kv}W8cFJc>p-Sy1L#pZ=&sH#ICtVy@G?-J2#VY!XdMJeo- z$%cuge#|UNND<)Cvgw1tJQbE0Tqo=uuySJWU}M3EqRX&~HfCAbqJhz^7n8#M#*Qmp zE@-I5t@>s^%ATNs#}0@#V%JAW#@2N`=GE~B;(oI`QYPW`Q;QXyN)c&Um|5gWF*8pn z0PZEs-P*P5XO@RGfE>-E`kqI3{PZAg29eb$G^f5L$Z2z?@RPpJEsyOr*AG_Ay zK?kK6QBPytPZ27d5V50EQ;wUS;zH@yOF5Yf925%cx!I|kYN~0iX6#Fo{Z@5MAuQ$Gor(y)OE$+GIs_RD7xhQa z(%U2$lSaSmpx%iHd(-bW*})srQ$1kQA6tW}b`8Wf&i(N_Wdlh!;{6G|K#FEa%mtx< zM1RsgYSaKyoS;8>5Fjf9(RlTzZnMdAV#E0e>)xMs1VwJGC~{ZXKeGqTJ6XZlZoc0$ z4N#4P@P4>|dM$uc80z@VPJj9}l-RTqI<@GZoozJ$Ow#=sod9SA!>($7=1u^kST)0i z?9aLYn8v69W5%z4-Ww>0W5^S2aQ}iB2->BUk)xz7Y5ljRpwn8TVV9+U;gYZ<#yJ)J zx2;7%%vdLM6WPDG48(ORhPCOxeY0JzE5MvvQ|enQwn!WeKo3d%~J(km2THm~8n8WpZGlH4`ZC~K-@ zwuW$fm~a+q{j`*$013?0;;!~zzP2fR**bhWZ;ZXMXf)a zING%Di&FIVMt`SJFn}ldMhO2G!%f^mGqHEw84`rYS+0YQiD9CB=D5!OXTBaCea^Iv z=$)gFU(m;^Vp_F{;~Kf%f;7?F$TiMlW!-(DctGy-vYdK!tX5|~;U5?S%%{bL_PMndQ3rU90c< z&Vj1sn~sNM)YaO4M;)1eTs@>^j6`*fKJhT>sfRYb8*;L;`hR4i>gso>hZvP`b))j{ zJ3hFozi)c?L5uzh+^#Pz-@AP@ZLE9rohbJ4)5DW1>qe2qr}JQ`0do@6{}crx%Tz_S=n0iIGk+kne;EaXCeSKVmB@R}M$22wSV zGZ}exh>?yS?e1%nRWYrrj~{N|V+V!d`&d$Q$ALXEvXoLkC`BVI<;SO8hexT@fRe&e zUK)=TE;p#4(}Xv_4<8zds^#iRhx(uDpE^H+b>KR`rq4Eu`kzBT0WJf37#N>zt0-?` zdHQU#sYH-dt;6f6ga@qiYx-=n?1j3F4%ZM^WMKMi6V?A5RyseB3GyXUhXzYO}l) zL&Qr66#6@~8I4LAOaVwsQh@{xUWz898K9!$C#f_CIQ7>HN_F^{cLrA5z7AsLpBTutyr7Efk0T3586Thc@Aj(f2U=_-sq={D3Lmmzv_S z88f_^O`zeG6LhL*952~_1uw%k#z>FUQz$ZX+SNaxo-PU5OG5sV(1Sy66Rf^K^YYbv zQA=bkaZqB6nsd`t-v5psErmFR!cpo$8&h-p0nUgTQ}(h|@tUSshp_TKC*C*Lug z^{RlLQ>O)%$Xd=p$?%jg)5N(^)bm)0s?=8)f9k1@b_drsT~%Ves*>RC zRYo+G==F`LWiEYH`;I!e>XldyRaKv?R-RWY9ZzW06}e*rrs5)1k<}arNXT7%Bb2B) zE{1Xa`*{t{K35$WtElE^C1|3zWP~-Okyxeie4gogkMF#?Dz>+Mge}3yR65kwgid$@ zqu*$=s=ud+;=sgJ&Z{}G&zUqXg-Fx#ikdHW4ZyUtC3QRi-eWr+fEkJQ>8oeWP#5G! zC81j}5pV8zzzP%B@qnER-2_W9HqE23^q9i(3RfRqYA9UDJ_ejO9(hkJ%n{?Qrg5}! zbd1U#Ok%x2>%#ow3=MiuW8k7OfWv~`GHLX-pJ#H=2D3-Gs;)XOtorQOR~v<{-*ewq z+eU=8%g4S(?k%nmqNc$LSzac4J8XWL3@3nJs!TRk_OG;Yw1Yv|`2e<$BA`O~;{|z4>OeAb1;ryoQK} ziJFP1U=SVJ4&)WRWzVQ@QBw!H&he}%gr+SorRry(ua=5qbM^q+^mHntkd0kbW>`{*PmOa|L+!QAGXpeG2 zRUYe6PW6^;Qr{|xWMWf~@}8>u^c9_?JE1ce3KAd%C~Nil6FT4q1ge-CfU$ zf7a7YQXcENS;zQMPj?f;c(SK^9m9B(I%38k=@^gpbcYzmV?Es)2xBubv=>WBxHGzP zirnj5fSZr!brjOy!`vxu9p?$B%=VnpHTN9TTv}vT$$E#Nz{^+kww>#3KShPB@2cu8 zJEgvj5tZ3jRg1$`U zG=oF>Y(1q}xA}dKM!&->WXFatV0|VV*Ku3GxS)*@rZF5DzQqJu}m-n!x%L{v16d#vH>+-6~^ZN049^FeAuI$ zC)J>$KEo`W>QP|#-|JC6>n%H~#*@(ybh<||#Hw-v`qk@0brSMk@(oz=sC_hAW01y+ zO1(!7R*g`u~D6X7vB+!NV}A#pin+#lkU|!vEh5-z)#u4&VQjvxwo_Lq@Mn z?rlGez`^Mr-(_-9w22O_U9SGQw|#(2-d(EVz|1)cH<{e|FPS^j`p{)^1nc4d-xk2 z?Jzo)7szcKc6YSHxL97G=`d`50hBlf(GBK+W`__?Q3kwKjV6O@V{2`sqeq8c28k|Z zfTyOM-OP(>|C|fCdVK@h{!tlWGv^Uy)TVq9g3%f%@~Xb`d6nvNN2PjHEyH4|p$y;N zK~=*jm22449EWm~QNMBxO#SG%`aW>W+Nyy(y);!J@k46DXjSP@0Nyj%SA9g(`au4PZA1lI)tiFpi@Ws0k zZ7An&DHNIW3GFY$4m6U_obkOpsyQNR&Q&bN>hEC|dd00)PEdeRXW99{zr~^@;T+X2NA=jbji{ONy^^OhLJ6hQbwvSHsk|>0vQRVWej)48x zEsRgyd2;#m38^Xd@I2oha+~yAnpV>nv40#byF6OfDi0<>h)$;gw{r-xi( zrr9TGIih8V6uVtsLF>;6((2V=ts7whHHqR-Z7vpXqj!q)>8sD5BZFfUv70&}3Kfk- z3>;t)!>19wd)W7>6;P)lCB^dR6(1FghMe6xv`-PV_40 z5%oCX#ia6LTd*`y6}wT+0dOM=sn=CbbhLxM&7j}5nC5lw`EbD(%$ z2Vn6Czn#83Rt}Dy0H}b!N#1Y>3R(KFXStMpeI!M0w zL}bL)(f(%)&O<=$^_|#DL0mmZGIS3cFo@8NI7&1l4>zMt>{|OCZ{$Mh*HM&+V#q~u zDsq6PPLAa0-1I|8{RL+_#)gnEoM6X6>=096N9z1fE{BaA4>)iL4$TN_2`IiH{Br

      _m$Q}hsJ6)ECw_6ttLDeyvsXE)shFnJ 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

      cRG{+GkQxdoc}d>esR8*>oI=--8! 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

      8C@4Dlp zz#f&vMK*90$@2Ak$qEznB3eb_PI%+uc{1cDq9{Pm#GMdXAAG(iLU#U+moL-O9bu~g z3_Fk4zzC4g_dW>C*L{wcNU}qPudqaL+%JfB@iTBnXQmQ zK6vT=?12_rAHO?@+`LbS&YX^=_tCd0?%Bgb(!a097j&HpwdFo_H^{3yq34CWNz_Ys z+kMJ2osn0(AYHiNy_e+GE*KWB$@`6O^mK^eSa2^~k;4gxSci~LKb6SI{@~Ld1=*1W z{6Au^=>PrO8;1)ja^Xwbg*JamlSBcBecsi`DnW`~3+gZYfYRaLHYDFsv=lkDP+jQq zC6HQ3FJu;kQi%9=d{ID*8i*we`C|S)Qg$Kcv+Gb{`Gx(33a-7>7V4N0F=j3}fNBPE z9XDZ|I@Cx3a_Lfxi#$a*i7gC#ew6>gg4k2@p8L!%2=7>!X-^g!ceM}959|**ORg37 zN^YgJ;^A+PwHETLUdp)0N7`I0TrC91`&V}*K_YY)q<6za7_#C%7_?B`B{0+|k+>Lf zc<%b{#(4<|3Xk25-%a1e|6O8vB|t*bErRL|nmWiY_7uD|Z#!guLDW7_(|6DBsXS%x ziMJbazPNaq=7nYHnZH{g3x_TEmqna4-L2hi-px^}hj0jMzr(w`o~FmP=zi!$7fmiT zmm{hV&<3JMYy<@Xvge3j#l~PHyi#KfokY+|Q#^1n-?Z zN^xJIh2_1}gVv*6e}hl(gcxJ@2xhXy6HX~h`Fq8C=j8pF>7ENdkN0Z#j-`)~PVHWZ zU#QjYT@l0hpY^nfp>eNyufr4mc~6&QUf=8910cJc=16J<<`=vCOE0OX?zO$B-jIPV zxPiffqPKgF@1J|^zWuerM)-vyEFFgQ&wsf`LAKq4f7!;w;^}&|)Wm`Sl<6#qm#LYRR$LV2(;vO@ZnazRR6N!D!3UWKJ6`jWd&$47 zdgS4y`uL}xWFL8I9$}%@@SJ;6_b=|3A4nJT55r51rRZ{qSVY?U;bB^zd9FNNj~VNY z$S{_CC-9o@+wQyg1xWCI7>keq@i#rv`#ZxJz0ScdzAxo@0{4UWqm+jWAm}OXtA7uf zC44<$*=mLql0c}aiU$UCo$Dpx)HlL|?FoQ6;$=G3*jw4<^Z9v6oG%=JsU~?f^Y>Gf zK>B{>e)fKu-z8=5w^0Cq_yXA25pFtp{lypRKSJ>lf*&Px4ICc-N^m8NZwG|6l|b(T zI!HJ`IrMdW_?JU;u)X_kAb>?4hk_Zt{IZnl9)JMzKpE6N*r)Qj;B%{m8Z=n&ID=>=Z7B8wTJV9eu%p@*>Y0X<%F4mY)r$IO z(OT^f-qK#j@nAu)s=RK8R1%&Cgg#j#Exu#Dk$O-k*ACz&)!#zt#~y_J>QCTEK8X2& zEsUi}_Ca7d^r-VF=`Z*jd?A01J0VGh2h|7l2TgL8cxQ_mMESwtgQEvEgb)xd&aHmv zOPcyt_GN54@k-9W$EPJHt;ElG<<3cuiwBnvq8jn=e)u zuZ9uByhy8%%wn57ws&FI9uUy<1KD66bD?{yGibyw=7lCOG?ymhaeNFT{0Ub4@< zezL|Fxe(d7${41o?uW655vmmTLqg;V!<%}zLo&P=jZzO|#5}M|9QlW|E@{xp#Uu&4D{K$U?1y#KKBF8%~%_WYr6 zZT0-&v9IMj^PT&;KEi2BuI5&E`0n3%*jkGDa=yJ)^P}XW{YUCFJ%+>hQf4W; zlv~O#6?lBZGK&9*;v_-7M}0H3bYHN>=mamjG)CKy+|n4;cz$V-!tzTG1#3)(d5i?r zeNEpO9cGr6gf(?(iLPv>*3&>z*xR_?ls3xBd1*`oYi|kaplR#_VR4M^eC{vR zd?&sYlDoe&Mq8Z9(i-_HODClNr<*-Z((`Dkwsgv8^-Pb>eX?|hVUtF|bE>)K()rQ_ zP|7Z-GMaE+zC$q+FJDrDv=C-n#w$+feZFK^ajc|y4Slt{O^Oob|}XXsXE*cb7|dpC2!fQWB*B|?rEIAR8BWWIv0=sWNo zzH9IozH8sE5I}|Ndsn<=z||eB#D#zZUlshv;OwA-h*x4O!h9e1RaU)g$+gtuv&Z&z z>4tMN{3Jnzned5M6|36Sqyb}T!YAiFj#cNX3$Hy=2DFW&Pq89YahlRd`SyG@UmaMSE?)0)vN(sK7$TQ^VdFRuN`dmyK`!2B^$-*HI<@ASZ^DGi6^4QhqMZ2ncOs;Zkn`kf z3upqDTl?D+vk33{s7%p7(J%#Zv6VEGBay;dK>V&ek5=j{4Z#0hu83DBo*=4t1(@te zEe<^T)0c$shY^1zgUEX*c!8bp0;vkn@gbIST}EhSh3MBvfbO6Xh020v^EO`|`8D;o z(S=A1k%UDMfe+@^@@wM9(#ML&K74ZOuZM(f>?o)SWT{a{la=g(6+c%2J%Yhv3Vo2 zS>8l$A%|*}a1uReEg@8+x>D@CtA#M5y^YYo5o6fbG=|B`J#1 z6S%ItCr+tr*Kq%kKaL}tW+L-il7g#$n<6z_YoWEBwKO?Byc4gqAsFr__UF-;!B-j5 z!@Cw#Wr&~OK{k=}?aVvE2;`oK_W$k4woDMg)FDYDHyP{%B zJuW;hJuc&7`2OQI5z>$IkBcDeKdwB+l^tY{&UHgi>0}pcE1YlSAKSMMw=Qw|71`e3 zw)4x?;^TLN*W)X6eFHjZ8l9g&uhPL?e&pVN9Oie>`;Q%bjLPEzU~ej1m&+(BwnN)L2CAO&$jy2n(zS*TYz7qag;@ zofI7#YEQ>qbh+Kq`lB!CeRM{phayX8&o_)iWt-h;i1O2Z4%cCl=z5^ zK>3}Ge^R65F9T63l#lj%Vk2l@@(sntdq^%i=0Sr}Y}A7L&uUwlm(lI`E5ZW87m@%$ zOP~QY(S+KY$)~BO-e+-=BTCTIw~?e;@ofY)QsnT%k>P{0BNz|D8}tFy?grg1#FV_d zp?al#mFFW~7RX9(6a}j!SY^T5Cs`sOkCC^qaY)vuzb-kVY5?NWMr)%^Bz!uAXU|*7 z3GrWVbT@>(g=*8h*?H0mwx2d%T)fC{6}L)Tr@Rc6V9-@FhU zJDW{P!n{d~ktfuoY@1I7>$zaP5UfjTE)GcXt5iDG|1 zcNaC1fiwbG!#W4PI`HUJ&$Q3{fK>_suukZvh0V$nsxbnvtAq%>)PQ49y2)4geitnT z#dz7|0=6k$7ojl~H{DMTo)EI#VJNws+6H_CjnUAiA^i->;|Lv{?(PdiO8Z&vd2_3^ zmD0KC-El+a)!Yfe_|$QAX$6A79uMY6jt4_;9=15yz@c}gx3A7 z*voSGC>$Y%ProbKp`wok)4>ezt4hHrX%Xk0w30v^uS@?Md zZwBemHxs;iw!;@!f-f#WXJK5-2FpRJwm2muN|307U@b@=lO!q4!*`xWFwJvhh@%xG zIKj(cjz~WvljNy^Bu~a?`hy^`ROIF=cJ+J3+a}3E5Efz z%=lsz>wMqS(9<1&493x5GEcKlE0lNun1e~)8^(uhs9g%F@_HOn>6V{Xp4Q0Q{w5Fu zk((OoITG3l;WI|`ck=Cooc!3_e0ofbAN+Dp!-V1I5{099W`5>H)=x;)tEVb7-6o~l zMniEu+j$m$Mqh!U(RH6X_(71$N!V%cJPRY0LMZwo_G0(N>5HS6hA>(kM#tS}gs8R` za=kjG^gjAg$r*`HKg$9r@q(28{HkRC*(DK+&-R~Hp0$bZ=YFNUwE$}pl+<&)8%BvzG&-KMk$jPz#2-GV*RjDq znpSJi>(3P-RVc(4Q2n_ol;&O3uU!0@7P*`hdFIm|7ugrjJ!IiX#cQS>f)~3!5-Sba z(RqLpiPS@(0H0ovIFcyPFnK>a!$ru>g`#BP!@XUym2u*_2wjDeC|O$aB}|3BB+qq~NH(NQIAidV`+L7bnEtLVIbE-`9Ui{>v9v zFN*wYnyVKATyo&$B_HdGlI*-NZ#lNwW^}vm3&)mo%e8ez(ZpN!t#fin;lR5sw1)R@ z^s3=&GupUz%e-YnAVt9oN+?9HDm@=8zjJjdk>zAgWj+(HEB4FwUxTahg- zIhwzd+%fU>V z*(pkK>tgFO6j0pqY&(cj0_DeuQrhxvJBd;T1yeCrz2&XWRt}=v+n#Ojwr~4z`^Sm1 zyye^WSTOADZ`HQyyxugATyA+SDCY`bw#n-gJZDhyatpvv7*go$I)VJsEY<)LckX53 zWecSc=X0BUMIYRvTbys5zASB*wB}=@`9{f_>yAfA-F^SkN%ycOA^cBdiW$P9z`AP!O;x2!dJw&A8v%( z_pTVwjBUt7Adw>+uCh>zX!ppZLDr6->CD%wx48F7o5cH+AeLo$l*rKqg7+ne&6hZ z+ZWr?SK(J~3ifR8ZF|V!g~Lk@9~^;EEZ+m$So%UNEqw@NnwB*|%5D&-)8q*W9%@_r z+xVkFC=`ah06R+}VDE4LgkVKUw~x9vVxu&VZxhsaWBX(~PGqq%K?z@MUu~x-hc<=% zmFrcSoYGf@SGHFfN=Oa|!G-6E*CtE9DiDMJ)$Xh8t0Fmryt6clb{BdTf0cNZe3g2Y zew9IZnZm;$q+jj5cV^H(_Gm`MC9OUhh?8JNX96YtYM=BfzWTL}In@7FBzgmk|2}S~ z-z1Cn&-Lx}OC>Byk8uBvgvI)oMM!hEpW}A>e}W|hZxY@lylIM$dm;TIVBqT{*?uFy z^6#+>Oco~J|C)jU+Xj$(k)+T+$BHl|fea`#K--HX<^EZ=2eaS*iA?m@K(E)xs{NDP zVgLQUqyCrumHyAM!~TEBs{Oynj$rB(`;F+hzpt;+KfyKnKf{h;P6VMq7Xw1QNYd=r zvlh&G|0g2RYXH;BWS9Li$#uUT2=o(@%l-*=(Lc|w`+tOWV7e509&q$BPO6YeqzWAq zD`uHou}ryFD9{TP6HKK5mleSD_yAlXkr)(erUlt7kZmB_LAHZz1KA;voglkFc7f~! z*)5PgAbUafg6sj=CnOb6a9luPWnsl1QZ6HkzP_l!%0(29SX8mjb`*1n?RpRp3mfub&} zNq-$3O9;G0)JV7>uI zKLR}TDD_he1-n-G6@7@I;QRws1#rnb3WUlB5D*-I>v{luhCz4@gMHTu&md^$gP=*3 zph=aWg_WR{m7uxRa9s|;rP5LiEhHzj@SYCC+o6X;Pc%Ij9w_Pw>0FN(H9Z3GfKUS$ z8Q3%QMFxUKCLTC7QZ7dj(4>dk#O(}V-M=$XG{JjBkD!^04kXNd(Se4AH5Cm@UsDks zML=-Z2E6jd8I7@pxZsKx>EBZD+d!udQe`@qvCWIk3RR2Nqaz z;LllV;I&NjW+gMA@5>H+K?baN3CqwUH?V92m?L0O)LdcU*I01?%}fa#b&e|!aDY6~ zu+qTS*&dPS0jS>3RR;QHm4T;hf8fX1!N6N0R|h6!M*|bRhXWJb5mKxUWF_p79yK9e z9r2D4uRbu%jt6eBhCn_U(8-zuI__lP6V`-j4J=dQr$D(qg_twJdk*h8ycgsZi2x7+ z!?CvD1we=h70bGmL-e9S4JRGc$fScCOg#8gOfg6q2jaPo(+=wTRD-|Fv@qsDN~za2 z*w5Jp|CHGWt#}X3Il-)aBXJFy`rLyi&NbMQFgHE?JUg(z(Ln~Ev!LJ&!5bR<0t*j* zG9`N>i40n~=%BSPKKKP$eDD`pd{8Wbqa51x)k+w?FuX9Skm06;~mnI{0I(Hi#OZ2SBr$ zJ04Wa>Vu!KT@o4ZhU$jv9Y><=Nc`@U;>>_Zp?v9@GKnc#>TY{wC`PWU&&j6+!NTELQ#|lPV$Pb+1C%Cy^`rL<;4< zW^x#n(z*;GHsxDYkLb-?I@)mupOnUA1+%ziz+h;Kng1cSX}vbS^0)bDd%Kq zDzImcy`-(o4Hy@#chu^v{UMCNweKqB;aW!SI zmmMnOy{xW8DZSP@8%(7uzb1=UXl@;S(7AfJJJ4)TRk42Xp{ z+?Ddbi#ke&q_?AtNZ6HfSHiB9842hIc;BZ4Zr8Qa)&rWmhr3qpk}HirKvx!fz+5Bm z1wFbwh!MwXUbWvVyH=j|g4XUu43`wH00u!-REiiG@*dG6#vw)lmt|EA4rxelfM&RX z7(sGHZ*X!|>IP!$kr$7)vT{RqrR?4S(D057UOZH)x+IE{-*%|}hb*hINw};EP0*o| z_TW+NmE}}ty1F#W zec!(7_t~Dx-ODQUI8a$d_|*k5#}Lzim=l#nbfTJM4b?h3R(**zRT-=y--ueOfxc7K z0C%SP0uXAy#LiW3W#_7Y$4+6+RsTuWQfVb{;L%dqC4J|3$WHO#&Q&1^xbQfKDDXAN zg~x?znYzcNisLR-pRl&-HD%`-dUT-2wd$u?2c}D8rAVyiIH{V$2aOsgR)3wz)vxvF z#R|2BQ>iU7m3o^g)PKb6Y8sIw4)q-8QqT3e)XU7FZuBs>niuX->ttTFj`OHrFfWWx zy)4ozC4O~3=T}d%9W@&4JYZ(kvY1-UMb&@KVlWA{Pcns-N>Xj?ORJ5tl-kG@)hqo) z^;cP5{ad2E`hS7_uVC9Gte_6yxIi5xSBhMQ9+p(2U8d=gqDNUsW)I2iBbhxUu@6&K zzy4F%n-?|px~!)D6V_6zu%%T8dfB6vF}in)ef zGCxJeEBGOiC^*z72@GwpAWTRg<4Y@1cnHg#p-I?ZWIIF4RJ+k3j*AYBvDgqluI@se z_|PP`JM=9UANoU<6ckE9p)?dq4do;(O^=KqH4CXZe7lnyGO_H?B+Cmb7NBAgDwd#P z0n&>wC76ARr4&_==)n*tIRL3L^c7Ye;%onKNX;D$sbxn)|0_Ej`q!)`kn12HgM2*n zZB`%p6V?#OCm=ULZi0LQa!Vkef_w(@8HAid$hn{>K17mSK-o(a!3E5fK*q;N5`35h z&{r#K!*qx|FX|${VhzrUhJJ*JH9x|n8eVU?hT{|(PNL9^F}da|Ohx23BCTcs-y99d zw3?q_1{gDutsvIgwuG)9CxW znm=P6&4q;d=;5b$s8V zEQ@N25*F8BhQMhk{&XmzdBIYeWvYoZa+KD*W*N;}E0oA;G+a)j>C0>G%d(oEW_it* zSx)m+R?xhqw2B%TSJI$bHPfuDnU)nbzX1E6usw}WGLPu{h+5HTWOdCguCDoKtgb0b z;W(ADnkL)N?Q1Ii>_`KA<0DO%Tv7#GEd@gH*w>f``T#>Zz$)}O)_j8TWaR`JH6Zdt zqmr-&Jx(-X2}ofHXepxM(bD`S>36D;iO!(ox#kP9a}7pEjT1v5F`R2oBh-$X<}WAbYg)%tvG^fJZr50OSD3 zevpG&ek=`X=eUS=t~a7xW+AOh!gh!qqofvftL>LXwbLx7y~TC~a$KvECA2y&uKf&4 zz@)Tq*TJ2JW?8LXR?u#X3fhlZS}T^Ytkxl6MeQd_*&Fq~_6b+gK9QBRPx?xfOi2q^ z=#p03!}hf*j+Ny;6x_;)>>6l+22S5&j8~`Z@6C$!w6h?Xx z9Vdw(&9Lqv+Y!i7kYganbZQpW&9PnGTdb_raors*p}W%;*Zo_T)csp7sryTo(1j!{ zrF%K0g9_Zut&lNWTrO>+ruor{V{r~p%*wk^Y%_Fgtfu=hb}VS# zfaWLA`~(?lAdRMwG%kaSa1~r~ic)DI`)308xej-f5#wCuVQ$aNr(R{ zQw{SfYln3*!!R}{!=GUW81pb+YPR8i&N19Cvk&)6?86pj8{S|J80YXZRgr5LooN`I zNbq{#^}y>TFRFT&jFJV1KUv3|92z!qkzu1OJZ$U(#4`?8hU@gWko1Lz%{?qK9PeSV zVJk&V2wEkPd=rdt|vmuU!!jQ9Ou=~^?LQo%&kviZqg%v^CG`qCkyCxoL~PL z7Jv!r|B^aNNPmxu=n85h?78T{Xa8!7MLA&Tg)$%RK$|MqjT zd38engp28)$YOdQPQ~gQNZ$VXj|O}icyqCc0gV|p}%=(sg1 zI?{Reh>o=FatBmtE-pjpRbVj~dcn_ONq$T;d_R)VF%s70FbJ+ECn=%^v!Lc^klyp|OVSZZKZ03}LLrf9%`X28g0z)E9YR51*26+;9^BL)-(?zS2* zSKty@&48)jpksA`jH_oNTs)IB3?_DLm}DnJR*ISij%yh>Nz0&SO~V{J6}WNNOoW?e zl5+?-gOCd%&xkZrnKoO0G!K0rxeyy8^e^*w0Cg{W7T$rzXZP zGP#jYQeoscm64OEjB2JZ&M_^KMIwVyBr@YZkJ)Hq2IC~N31nPG6FES3fNVG3V@@K^ z18cXRb3?YZRXNAz_pEcWS1zWw(-BSYax5MHzn#KdmSSx3r0M`7piompOcTE!bbKaOimBQ z$XhG=fNDg~8AkLn?TEflHS)8}0HcL5kD&1IQPBvQ`^+(dp;@`&8qr8xBiqa~@|HH0 z-VrtD8*xecBO^N!fbv#3<{N2p%sZ03!FGg{qewZ1l%pem%wjORL`D@rFx}FLk62j} zCM|Gh!JPqjcH}9`z~n}(s6xr!2w&X$BXiur$XxHi$THg>Ig+p{#lo6u1UOIXJW(xy4!|pS+d5SvemWlbw%zjde$`br&K1Xl-Y%-4n%dBl*~n5r3eSQoZB?UJc8E?uh(>s`Ak+yCm_VZg%D8?al$4H z2smLkSzx3Rwrk=WZQP{h5+=1QVfrqMo4&_Vrq>i1cQQn{ks(Q&aAF9P705Y|aVG=! zGE6LInq&omjJp{k+{?h-3==DYTsEPsm7+Zp1|QQGL>1G2VSA?k!48PqDyo_|*`bM( zR83Rt5aviwzXtVdrvJd|rq>waR~n{2lAW0T1J^LwdfAByXKXEst`wb_B$8A7lh~PQ zo}I#+o6rhzo`{TGA|n^3r|iP?n!7N4kzK-EQLK4U+tklpoBCyK(?fO*(=ojzUAhn? zHcKQ@Gd_MWeTzxW-(q6(?=!ji^*mxJ%xX?$R?8IT5Do|EVK(#PZ03H>Ztj=a%zwb_ zFb;w21la|$)BKRRVBF@vq*=ma9*}vlvGSRJMdU>aKJ#BNulX!(?2UTYe20sh z@AU1Ozsq*b-{W@8nBU{{NSKk`H=?9@fJ;GFIg3HMCJ~F*$?w9N#R@wZ5?ZZ?A9S_X- zdo;wV3f@Dgd}zkzMex?(t-)J2TS^4%6C=eJDvc`culc`g5y z`7H*lpDa6)KDQ;(3l|;%l7RkV5s5;0KOD47vJgzzvP|tcVj18fmY-!&%QA7rz!igc z*MeQqUjs*2$0aN}S=#dLzPQDQBN}=nEG=yGC<6Y0#KLho%NomD_}VI1?r=rRoxXzQ zyR2aO9#^oSqKfn=32Ky)0N#*G%9d%i2eWT^OZlr;UFa z2tGpg>&Sl1(l4o5EbPegg4JP;1tl8z_q_&Uoe170bZT0#TNJ#f@SehZCY0#4g)je( zMbC*x^|G!--`BDH1?yV=8xxPB{Na zk1DzF=(H>{x-N>0{yYng{&HV%6q9Ut6j=_99!UE9qm^E`@YosUOFTL{z(q%Yo9&Wh zjQFG2F5qo$Vzi&dN2geF6b1R$qSWYsEIqo`pBepeE;IW3EH(NEEDe(z_)Jd5hg;7+@KCie^VkPO({||V4jbQ)) literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/TBXExtItems.dcu b/official/2.1.6+2.1.beta1/Lib/D7/TBXExtItems.dcu new file mode 100644 index 0000000000000000000000000000000000000000..f3ca10873270de607b2d0a0a555342ad91bf7ae7 GIT binary patch literal 89361 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

      q)9q3U`nGX4+9o$ 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%0A`Uw^8#Qdd6$qpL8m**p&+5Z_)!+|qKni+ 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 K?OaQph5rG(JBqOY literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/TBXLists.dcu b/official/2.1.6+2.1.beta1/Lib/D7/TBXLists.dcu new file mode 100644 index 0000000000000000000000000000000000000000..a0df41613dcc4f1fbf56277f1a2caffb31328041 GIT binary patch literal 42913 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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/TBXMDI.dcu b/official/2.1.6+2.1.beta1/Lib/D7/TBXMDI.dcu new file mode 100644 index 0000000000000000000000000000000000000000..7b9bfd82a914384043fbb6af422f71c684d7df46 GIT binary patch literal 30588 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νRxHbA0C?<@kT#^4gQLv+t}e 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 XsSTFSQq`U#fPa}v{89z_%{l%D>^!zl literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/TBXStatusBars.dcu b/official/2.1.6+2.1.beta1/Lib/D7/TBXStatusBars.dcu new file mode 100644 index 0000000000000000000000000000000000000000..2726c0422ebb3527d43dc6540f3e111e5b35ae0e GIT binary patch literal 37250 zcmeIbe_WK;l|O!;pYuG!%rKCVfE5=kSTMkXKk^k5vLFmfDhdJ`lh9-W17i6-g8?h) zSVC4Z(rOaZ=*DbpYZ|+;jcM&Cwl%9sG_f1okk&S|VOP5)pV(Aa+nCih4Bz*;&oj&n zl6~!dzu&*U->>PzbMHClo_p@O=bn4ceV%9fZ;Zu%Wfx;98)_HjH(z;*iBGcIJ6(Bs z_tq}ItH$r~_xP53x_x<_9^ZGB@8z>jYwhxd>%850E$s~jUw*tm?6iQ8YH`jD`EsLD z>22@vy;=Ise*_p~P1f3~j?SJ=0_qE%8fj>>RJ1j(YVrAr0tBonuC}7h)9kHiZ}j&5 z@cD1s0Vv(*X>azfYH9!Cf(6IF(&Vfy?eY0L+BhAx?aXaF)@;j*qDy#rp|^R~bh^B< zZqI}NaJl+?^Sm2Sb?s}t&EVzjHhS|NA-c31=%!J94^$WgbWq{uO5ZtXi|S>83x9HQR_} zRY^^4Rmp1i|0Xith-$>KIgaov)>c$ixz~O`07qp-naPES2-eUjq1!1r?X@(F8n55q z(%$U*kI9nWruf=gZ?C_$yQjUu<8SF`fAp2Ecbn`SxW3!d*$G1ZT<#0as{g^&9qnGv z&^KzE<7<~!-dDTQUFj}eS+aVC``ILj>&S~?{;T01+}-So0p*qWd@arGe}46EpPr5> z?e=>7-pd?Q(%8t=ySl^Q($r!|^O|*4x&x**i1RR@&3u?QQpStZl4kMRWWL zub*^|;gxo@c69&U@9(rXJIHVVE%kKLXperc>CNVwrb*e^+1hu7M6sE~+&t&MTwmYN zsI7ofHnueIbwCEvr0~}5%YXiIlcl!Q)4ti`o45TB$iOV-A&C7PD~&! z(ifFu?=`8l%e#Ag8}~lB;pe1TDicACzpvH%_=XjK#&8<4)(@9G-s~)`ysvc4>e{tyRvG5^bjdZCAE4!c8lW;i!Qud0S+TmdX62goPZA&j zfOQo$6Uk-5*qNd`M&a(55J9BDrtrB&PmRcn>A1C@(w@z z*5(s?UTBVoyW+|-Ib6K$(!Vs%j)mn_d7wK(Vb?ob?6Chxm*%>t?fBXs^1jzRCkE5F z39L(7TQCu8y$$}IL~(O81&pku$KO%Yvc>y2A!kiPuJ!tWdV)}?F{qAqpT8SYc^eIq zCy69EhJ-Il!;JP2cJ7T>V@L+g(?s*x7#gk@uDFVJpSRn;+}qUA?R|y_|K?K&t2%rw zv^4*bh+>pc=52zwRoxw(;MC&vJ$nP2GB3u|(HAY$H;5=Hy00)%d*e3=_nBxMtlm)e zn(h`j^Y0Tu%8Udw8$Td)j8>_=VbtzkKjzGLgh*mW0g^KB=9UI85yCh9kSJniZLQbS z$XC_tgo@D<{DQG6mwOt%*xcRG)86=VB8o8yTGgf$BZRyudI0O&8==95Ul3w;Gy>Z7 z^t75@qx&l1W7Jjw&jvSx#V&m~o#|R{C)u|~h?t>3-sL2uFOE<#Mh{eZM?;U#MwrBC zN$NVO7rOyB2a*T1l{AoD-1^A<*^n#>4lmuzU9|6Z!rc^&bGLgQX!SN05yBOXC~xh+ ze%Ic72Vv4@!jyG1e6gm*?=5Zh_iB$ zOCe{!+SBH(CTLRV(JKU^Hj@%(C69a$4FZq4h?;gK9N_-3~3Ylz-I?9U@-ru^YET2p_X3_ zKG3vN_jLO@x{F`__4l!{(Tsf_yIJD9$DTB+q}g5aD^JD!yhI)3wO0O2^h{j_vBaQ!#B|2hQ>^Lzj2Y;UuUUE7$W_Nwv!O*u!zl>YdG z@3+P73&sXl(%RaAc+}g-3`ZB9{=946fmnZT#6C3*o>uQ}vTcM)rgd?>r&EuSRbJE3 z?e(_Tb{PBEGlYy;45gK1ZwAlCHsXg!)#L}Wf&_nxo#3fG(eMwa2phAbl~$VeVKUuB zOv5Q#n6(j5{S~nf23%kaIHAE;($L`T^!rRI-}P<`-qGNrII*YO%cuM=1hWH1M#g8= z_lZeX*3koV

        }1flO=gt?Bf1^>`9RhZCp;ki0_C_fXWGl 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 jcZ9a-_ZLH-gL6a3txyGqamrqWufH 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 A>i_@% literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/TBXSwitcher.dcu b/official/2.1.6+2.1.beta1/Lib/D7/TBXSwitcher.dcu new file mode 100644 index 0000000000000000000000000000000000000000..360330b42a414b6295a0935ef1f2224447df4172 GIT binary patch literal 5017 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 OvZFVQ1O?zNvHur(*a+?b literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/TBXThemes.dcu b/official/2.1.6+2.1.beta1/Lib/D7/TBXThemes.dcu new file mode 100644 index 0000000000000000000000000000000000000000..f3c12f0016409ba8c093882815aba8cbeb92683d GIT binary patch literal 27648 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 L*T>WOS@Hh`t_h=T literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/TBXUxThemes.dcu b/official/2.1.6+2.1.beta1/Lib/D7/TBXUxThemes.dcu new file mode 100644 index 0000000000000000000000000000000000000000..7e67d8a8ff0a6dca762a7ef632ff3582236e7b5d GIT binary patch literal 33331 zcmeHweOO#seg81;@5~S&41vs@xZ@Mz5|s`wI$hz(x9N0co$-?oT;BPBPXB)0Yx|0hAAfzk z{zBr(_?2XD^5*fr?wdpJjGff=+2i#m&LwXgPhGoM^VZ+2(f3&>8vb&4Iv+4zvYby{ zyLA1Dn_q7D`oHMtUymi;+h!T+B-taO{tI%+2*3iC8ltU3NsScVCL6-gu+?#^CYePmNx7pGn?oyK((u z=+dPd$(uJH{P-*X{<5R#MlvZynvX8N`r;)^Z186ITIyD&HZEQ=6LTxsn<08E_1CXo zO?F>9?|I9EJ(lJUF_wtLXB`a(do1B=x008WH$L;s$6P(e^Ve@&dgf!l@=T98cI!s! z+U2)?!)tf$UsMHqNS11azs1PVk8o7i)Hz;HpL%{ zwMN2?O7cRY;QmZUs4*qCwRwwB#PFsVH z7||UGF&2I_tCsA<(xo8A8=4ir7DPp5%Kj|Pp~oU(Q&ypE#57QD#SSH%mAH=ZndW#_ z!Uj!3Vl)Yf%SmWH7kVt-+NM;KjfmWI;OblB@z$u~(cVg#Z*5cO*1<{cLvA4_XQSc9 z#_Ynnh~`$A5xHXBGSBVERa+433^Flu@&uyTq_D5kdsA1v3Pxgs-z|TFI+7S7Aq;UeBBnU9oXJh^B8FWYXCj?# zS>4`AJVszn%Q>}%H924uyO3o67Q||73oDLo@t7td=hP{wgqoyhnzTt7my?unDzEl< zlwHwOJ?Z09-&=o`P8T!;EnsOjO23j*RfeDy6y~M$1DvZi1a08h43)0oWQ`%{02vK+ zoC&wY(kD1wYX~|)W5{g@MaA?<&eutHSvF5`?z9xQtu+>AJ-U|jAt^2!HDAR!QR2`H z=~r_uEM!9v(+49D6cp-xtsKRLk6ByBuJoN6f^Zc9JQ>6An_v_{)PEuHBFPWRe^tnx#N zI1SqAFLJiu7Ig7!wsrDr{W&fS*m$cXIwI*WacWR9oSFR=IeptEL$2EE#)(cGeb*_v#gI=TwvkNdz0~p%xU0l5D~yFg~1Z$Df}q) zRz6ps4>!h}(+5jggvFv@5sT2!(He==hdQ`g#?>Vn_Ec)K$mSj&mzO13D!QDyoXaak zym}N_N`8pzt3^`gqDl>^8qQ#JPA`i&Xu5KOv)^iKEb6bA8!Pn zUEaykGhD0o@&1)5jHG^&t2LRFZEbW9a5mN!Y7o<(;##ebS8Fr%xCrZYpXNfHRC%(% z@-oZC(>~rt_3@S_82b#TLy|F~rCIWixFAXuL2JBDX6Lh<4=Z*UJ;&*&FL)3=GEFC_7S4MWmnO(FP9R~Oa{9JZ(x#5qXmdiWNnbBx7g4Z6 zng%(4BHhRNDm8yH-Ou@IHGe97gYz|NzBYZ6^R*TH(uub+ueUf`m(89?4{-K$HhVJt zIA=rI?5XqUAx2op<0a>;);w5uPQQ)oJ}gw@$ipRwbz;()h`4F&skI}@lcud)96pj68RH^dauG?jadkv0 zVXQUL(Lg$l>UOS-9^s=cS7OZ_;g+*$2iL}=R4f+_biW)={~1??g1j!-(mx{7jY#^- zTp5-WJ~FfVU*gJ0kk=ZUx*A$LT107e@D;9)2KoG*rAw3SpYsS~L0-hnh|&?F#c56Y zt6aUCPd$-d=IVGp^Xel2wvN^_v>`+5+Cx(U1f8!9l#3zq( z0XI3Q;aK{71rruu!3EZnp{D(nOxQfmJF+a)qy?^Q>Zbu%ru0am9vo!a&=!)dDF;yW-sSz!7KUVjm_o%$T`yq-o&jfXyud0<>k#)@(PFL4T3p=`#r24E$f0FYxYW_s}Q=G3=^C#1v z=6s!+Kb4;4{Ao2`oBj;vL$$nFT46w$$i4lN+~|b>k>CL zG$UlxC%GEVsC=I$qYiR4`XC>8`E|x`seeIWW|I%e-73O`N4SuZ1k@@QLR{#5h-XA> zJR`E@3Rmm7+W!#05rHZ%>UfL>9%JAkzGz1b-dtR6xIQFhJ~PfTu_oQj)!}^ViFBB&Bl*;m>DO^}G@p7ZeU__Z z`PABUgsXQS;_Z`N9Z@cgOU-~yEMAfpE=)+(sEnUnZsqc1mYi+2jmuM+{9w~bY2tRS zPCq2AZ<(4~l^s0NjMNTt8#H4}C&tBD$$eIjV{)9!bCMitz$PloIFl1xo_{E_G>Lb% z(HbGZy6Vuw*^3;eSh+I%u(a}}?!b5(=SQRz{DNYNohzdcOOr*2x^PR{!P&8gdGC>~ zF{aVtJDzrO{jQYi98cxq?6~BGk2=hYn=2ENf}IGlsR{e^gNu-GK&bX5-vfTi-VJ`2B!xp3Y9-6!@-;0Zz( zqy#_aG%cMeK|`c9CQ8D8aN)k7oZoEqd9J=Zh-#pWWovs}I~w$mM$5c-Ye&ZDPq=i9 z8Kq=u_5X17{vaBoS&XzvS@}=SA7=(BRhG2Rr3ZKtdX&ZYq0&F){0UZCJmQKsC!+P~ z7dU;2MaMHSDY|Z)JqCOgiw>SgFW~fpK^tWV55ro|r1hM8O|XnOsq0A>o*1PK-nf`H z@F=ehR#KGg{+<)h$m2a6ET?#KH_C}*;*lN+`ZLB}ET);qtPdW_m}7l8$DW19Y77c0 zd-uN9dMV9zq<^3wbQK7^}6x`FvJd@>&6#&kA_06?=0mMh}~?N>qw%0ZCg@ zN|9N#HhMmvT@ELr$tLAN(B2%+XOhSqlf-CE5}C*3xqP_i=5Qf(59#w5r*CL8jZ1gSO&Mq?7B)}*VxjYXBF33-{} zCLS*@v`T{fq}4$JJ;-Y~OOKbb1_)yDgrW_sd|kmf)LdK&~ z&MZ;(CzrDjYBYR7ZcBMJ>68`tk{6O5na+5Umys;*%$Dp&UPRi@ke}S{;shzjm9GhV z2YP?Ftu6aS8@EDYHKfc;782@1Em_km(o+?l>!24xJ-s1$T&6|zWsm#1QEhR`0)GKTzT&;aHFmVN(euB|N?0zSn>2dz9?rbAA{#1I3z_svDV&HP(sq4_ zmaxiI>B**9@#JfOUcb=PyIC{IVUEik865fNIAW<98qQ{q3NCIi!^_SsF&Yl(9!*(U zxQUV4mI-p5*cBmb9E{RZo*r4z6NRW^qflby>XD7OC50Xbuq1ND7Ab<9O70qV64A2g zFG{x{QmJXVM7F55IvvFEdts^*IWKl%8^tI+Cd}%Z&d9m8$M8yrxpp~{7_lWR?Huz*zcb0-+NL~hM`S#uKH3nAoucj{ko+zc|D`vbIS_P;5D8>=JyOGzh@|UJ)`pTc?PfX z3^KoGDEU1@(RjAS&(a`<*J+e7)FpH3v607RTXFJuRmkFk<2y#mQ00^ryr?aYQ`|Tb zs25)fuin~q%Vzl8CXYl`CWISeX?Y;xE{S5M<#o6{el}m#=9zyS@s2#}TRXk!sA(Dt zNL9Nyz-T5a#%8Kr9><-CD>su|ITSh1+TY4pl`l$95jD;@t?}k!vGcm4)o5;~BX@j_ zs?1tsm#BR1h|cGZ=)CUo)GoOrHn(&{<#R`LK6gZG-BG5`6@;i7j}otO z>E`kC`^?j?;4^n&1KW95Hk{Avlj3WA(hKj}Mx;9us+8QOr6HG=>T$XS40SXr7rZx{ zruBCA&mCy^$GRyJX{9ByrX47K zo-&drV(F3CS*52^%sf{R#Uxf8(;27x3;Jz~s9wL>K(mK(icvebdV1_iKZB90z)5NI zOpG>8t4ihOoOZyL1i4M+N-R~U(B3LI&P3Yi?h=oDvKo@Jt!-jU_U#qjTDH)3Sk@}p z#u)Yb*dfKj^A@F)E;%OSOt*^i3#jVDWW{d z<)l5LFwN2-SfOe9s%LR921lX5v%L+4W#)Dj3Peze_$mL}|uuzhGD8)q@2=E~nm-zsj z@gZ+SG9OT6AM!pVOT-pkk`wuPHmg0Rz>EAao7rM?#*O?y+ly>5N%o^W(x%6_q-xrN z)9SY1T*kcI8Qq+hZOg-yJN9Tj_sic9k@p;35KwN;%RSy9wml{`hU0h-M7cz)#5T~2 zzgc^!c9GUNxp}sLROQ$SMmz8`TAN)5VrOQ4x!!>8=QMsh!jTqeMNfv+mSuSBA1p0YYtU33ISXqw3QezWXDWo$- zyI1V(Al2To2XvHP?O<;bhoV`(h%CvK__m>3ZOkH)(Oza&g|TEATG!n_pS=bt0n6`un?N+l_>t^2>mvSIqMM5g~jt} zc@QKA+UtT=O*z*xCC;<(AU025w=!0JRWV9)RTYcWUHGoA(#w@AsZf#mqFTN%T#C{b z&RUx@J}gqVWnDoY3w?;sM=bupRQYX}+)4*?;?Rp>kq~~OE;m<6P7Lt^Z3Z?fUHm|f zj*=;@Rt`1RCN{9&rsJutk_mYZE6a@}=R%&)N^_$~*^rx*)oQjQmJfMubBOiL4VvNG z%2;)yF-p^DNS~=prLB;j+LGo(xsjZV(xj(aqL`U^L7GP7mhz}n*pnNG%9WKcV^?k+ zyI3F96w3lql`G1AG|v)RtZzA^trZ)mRR*Y!A!^3IGB|+8kG|C}$uJY5IuFbQ{m7d( z#MDpO#rjzOT!7Ba1-Ses^5!B&nbVrclM7Fj2Hh6%e5ft+9-BNKyCBgpCGsbWa#P!* zjd?~9kSdQ3Fxo7G)lRJ}a^_i~+zH&0(TtF3{$un=2XC8VfPD&I2hkrhH?!|z@V|og z#yIWa?FIVa0TzqrhMtY`m;8G8ue%G3 zL7rWDHIpb$de`vm75L~T&$!qLuG>zT2y6>HM`EmDy!$pF- z;p+99NrgB5LieA&W}!$p(0HT!2}ajU~2aeFcYpWgcT6{zyN_89iefJ3{Bvb(}FCv#~xzwIe?L-LE`9+jxw2#PRVR zeDUTf#t5E_=eF(}x4_@~@>~D*15KmFLQzIRfu!7|KI#^l*NTM$*;+J7-;cR?^IrRt zU;fnVd?on`(~-QKx_<56=M%>}BB>Igv^jMvp1he`Gxy&9h&A<{{A=qvhG6rK>?rUVJ>)4?>(?m8GUp(i|1d= zxmWUvn)%l+92A_H`1lmhJy&{W=MB3D1xJPrlgHovmCNa03YH1p3@Kh4=snkcbs)*4 zHzvxmn&$e=)GgHCcTNm6UK%b_>^D(gy7!Ly-~V9GLKe%q*3yp;z4FR#*)eP8BM(oD zv)Ar_(=m&5nLNe+w6;lqKW+Zj_TyKN(f1>|Z(L4YyUBH-Fq1!tzW4k;n%{Yiek1IS zhAz-MnC#;X^l=IN?k_XTlTS%_`lnw{eX#GCMf&q8{->3eJuKbR!D!>(-5{S-Bazh2 zTU=LsO7uNP>xuZSCHfJ1TPt=!>1E&I-%LOHIJ*ppqIX5&=@QQ9S)>M9b;r`BoH7P& z6p4QKLA#;pgPfy}Mi9rg=jaPR=`zk*kGW|jjNOk;`dKA?8RO|MY?XZS@neN?`Y=;p z^2V*f)*C6RoTnHqlxFHit=?OB_TA4uSyL{!W64|m<5jHl+|x&_Z-4VlxzeyrsjJCr z-MvZHaej3(OQCN%@h5*hg>ev3We_QeNK!tK0kc3V=dFW-YPR~^c zF6k-@UA&cgJbCYjZ~gQ~-?dR8IKnqWeSNI#ml*l(eQqPWQo@&>ZF*0zGDtVejqGzB zc#&9Hn$ev#(eyPEu=12$#8|phpr_in1_{=@Gbt`rVQ1!>Gyd8$kIZoc8eKYib9Ww4mKAl>%T&iZ-kK`jjt_2-=q zWXbsb3w@zMb(f|jJ}=fwKai0#ue3AOoYbvS$(#2gpWeRn{;f)(gt`=~P_MHT~5uzh2j0VZ2W; zcO-8PT)kC#pYGyOCq9NI$HBM9bdx6CM=l<9H*{Z1+*Bl%yh)Q9-z-bLnHBmemiqMp z;UgD6q(7?qfEi^}r}G3nr2Mo|r`LU0w_or=qs~Yt|K|n6e@c|$r_DO6&ZvL;n*zow zPh7iXHtGV-zMF4uxY~X5CWbPzS$B~|c{xQfUtt9^>+^B}!<9=H%~oB&lEUN^zGObC z3s~tZY~8n#?2jWxjOcp1E@10xxSHz2UuNe^vlXyVF465Ng8@7HvReZ!WNyKy#Hwc-nT+T_2?c)-wi<09oQU}7sLbEEEvfojq0d1>|V|I!5NDx*AT z%JxzUMA^U9Yc6_e*;jhO5exMPEbPq1FU?fIcIk=MK8!->Z;D~Mrfyt@)quH=EfmeA zx+AW>C!}R#!}Uu^^Rbua@`$akkyf6W4rm&{3e#Lho(6cor&Cpbdda;~zF4RpgTMK%%B_936)O6{f>)IMv^_W4!(5jit(uK ze&@v}J5ragWC$xo7>r-0 zYoBy8V}6tFVpMmb7TH8Y3?$iHh-_N;-#3jPwZi>rXJ0<|KUbAl`=t9Ab01Ab0|ojn zXW03;&YE{F`nfDx`uKf_`SGlllGhmVcP%u`(ehOy8S*(Ul2mD(~t; zRfQg`9G`zDO`L7~q21nf7WEnWBHegBN9w$rJj5+Aw ze55nJZ_c0Ju|3t z%wA0@7qi^1mP=1$mS&lB%IcFdZf;Tc5vmqVbkxPqYCkk*rYw9hi|D;X0 z%+?za8*bV64=j1kE&{Uw0srJZ42!gL0fOyUD7zHddlT8lW1okGw?CvS9J*-G>8|`L z1>XlXYykPr7LZR<@au*)#{VwFD<9A>&uEx0Xqd159Lx_iap*=V$9u7cIjUhAHO%WZ z%vBBZs~YA#8s@Va=F1x9n;Pc(8s>QoV>IQKv`oX?uVG%RVImsl^%~}?hIxmEd7p-P zM#FqT!+b--+|w}su3?O3P1!ZfQ4RB;hH2C=aShX_Vcw--KB8g1pkcnIVSc1xoR*w& z;j;RzXMgcI_3nl0xdB~a>IViooxFph?42kaZm}s%WwFRg`Hfz8y9BG-qMVK@r(??LlyW+)oX#t! z3(D!Da=N6PE-R-i&N;Vvi*<@J>KIP_{cZv`^$2&tG#xW^%+fJO$2=XYbga>_PR9lv zn{;f^u}#Mg9lLbw(XmfQ0ogIpVWY!EhnJ2LI(&3g(;?E4q$5Q~FCG1K4A3!1$89?9 z&@n{EFdZXwjM6bi#}pmYbj;JSK*u5-OLQ#LvEsCww^?zDD1I@et1#~pzw0b3Sap^Y zI`xlu%z7jJ<+SME^UVo=zh3V&7U|3AxbJ`OKl6Qhr*+hAEZ3JB-TME<|BP;{Uf*bZ zgU&r_*O%+`uhUoPb$Y>gcu>&2*Z3x#uGVMm)9I#s#^0=S)gB;Cr{8eWGnn^|`%mbs z`-b`T!4Gaw z@WWda{OEBCe*7c_&%c?1pZqEX1^Ty8XwpALp-ulb3SIhlQ0Udalfn}H(-ivjX$mX# z@1iiEe>a6e{d*{^(!ZC&YW@2ttfBv(l3rJpx0iQvVEv{rcada6tbD6b|bDkisGTCny}&f0Dux{ii9stN#pzh12>kP&lLiV+v>W&r-Om|00EJ`Y%zquK!aCH}qeoa8v&k3b*uMrEpvS7ZmR3 zzeeG%{_7O(>AykYzW%Q%v>Cohq08_s3cZGJQ&?&E4ut{3_b3b+{*J;b!#xVC4gWx4 zjp6$g)*Aka!aBnbC=?Apq%dsw5rt91zf#z4_;(5uh96VdX?UK(q~RwN_8b0_!U4li zDI7Eu=m~BcOn^HE8(_%b0t_3xfDuCpVAS9Pj2kKe(}n#>chHAi~p$4#I zs0Az=>HsT-(|}b&2(V@l0qce^V8ajvY#Q1DTZRN++t3NvF?0cT4c&k}LlUrWNC66r zy#SN3A7C>M09?jFfY*2%P-46T@EL~ymBwK}z&HX38b<+D#xX#(@h+goI1Z>aP5?s2 zNq}ga0)&mzfT(c>&~BUsB#d)_PUAeF%eVmOHZB5^#w9?%aTzdRTmcLkR{^(;Yk)h( zb-<8u12Amd1dJHB0Heljz?g9dFk##UOd9t9Q^tM3w6VZIFk>_UW{oz$oY4iCH+lgJ z#uC7y(Fa&ERsxod0lRPM0RpC8K+x0=s4@)zs!fA{8q;k+t?3S+ z&NKuNO~Zh8(+Hr;Gz#c8jRBITyMUBw9MEf;0Q8$C0RyHfz@TXwFl3qmjGATvW2QO4 zUDG^Z+_V6gFf9TmO-q0&(=uS%v;vqhtpesvYk&pQI$+VX0a!6@0#;31fHl)LVBNF> z*f8w^HcfkgEz>?=+f-mA*fE&^yCxf8&*TE^o4kMma|ys?_5p0>N`T880C>%`MMt%3 zt^)YX)qqNK4Ip5y1q97?fGYE8K&?3hs56Uz)8;TBWR3zvb2}hxP5`3jPC&c43y?5( z13Jw~K$kfM=r;EPlIDIu$~*w*H4g#?&9?!!&36EI%tL^?=3&6Nc?2+F9tBLA#{g62 zyMSr)IAF#+0hl#U0_Mz9fO+#YV8J{CSTxT9mdta2W%E2>#k>GmH7^3z%u9fE^DvP)KU%TwA28)EVY1cOC6xsavIQY z2>}KyBH)fC3>dOR0mGJdz=$OQxNGSIj9a<@6P9kkq$LTMv7`XAmR`V|r5`YF82~I< z1_8^K+kh3z9l)w(2(V!p25eeJ09%$(z_w)!uxGgo*td)W3ak?VlXVi{wN3#_tkVFW zbp}vrodr}`=K$5#c|eVI0Z?mQ1cajL;}-GEA45>RVP0qShMfYY{qK*%-#5N(5icH3=0!gdGHX&VCc+lB!Hwh_Rf zZ4_|ZHU_w3y9*eyjRQt)6M!+>B;c-X3NUV)229vy0F$;^z`Sh^uwa`9EZP$XL} zhHVM3Xg@Y~ z)Aj-jLC9_bh;|zwY9N&9KQlsyEPwTpl`dl;}{j{;Wh?SM6V0X-zy zJEj0#j%h%*V+N3P%mPx5IY6&t9x&)w0Ni#g0`54L07H&tz_4QlFy>eV+;yx0#vSW` z3C9Lt(y;aY?`+yZkft6s@VFIi^TAeuQLcJaaI9*&T2rVvjz}w)&hdgIzW~4G@#lU0@OG~K&>+j2sxvG zsIwi==}Z8U&Q3te*#+ozb_4pINx*t|-9fZU?yB34qt#2`F)Q0RrxBK+v58 zRJl`tYIiT7&fO0Dl`Fng*HHC zp$kx3=mpdjmH@;;A0S*<35XU30PTfAK%%e;&{Ag| z!-XPXyf6%yDvSaa3flpTg$clVVJBdtunVwR*bUe!OaitGQ-GbqUchc)KVYwL0O0iu z0!lo$0Y1+iK#gYzQ0o~6)Okh#r#+*9kY@}adhPm6{=1M^vLvec|I?;B>lbKWukphH)zoAVAA zEfjSgm^!d?ptg9lc&*r1avNzDy>|f1-XXw>cNnnh9f6@W?~ZpAC+l=FhLa8NuJQMbGkfNk$2V8=V<(3y3^MRWd1!K!oa8-|N!%7c}|m9v$i->$QRm^!dlJX5}O zcp6a`ist=O!YN(xzG0!L>%jDZ-2-*SW5w&ml_k9;8znP{(|KUQKP@;BM_qzc$$Ckk z^i{dSIu#C*8v?gkTU zCBv0lmEOa1&~^?i`DcZBoYodE`{#sZoDLKZQEe`u?1RONfZN4OfIG!2fT7}5L>nz$ z@y`pzI{m(3tauH~TJfrXL0HGBuVl@?D3n61EZG1g~+9=tA6e!*FuL!JyQ0|m$WrXZ39;`sr zU@5EpAgS#KM~K}$7%WSa4VNvJZNo;gbj!a=wNGuAEG7SCsIDC-cT2bZYrU^htA)gI#f@LOQN2)NMc|_^* zE%|E7H_Ls8T!@q?vkAL`7pKEzE@4k7!RbPoSJ)TsL(UemQTDh8;gf|V~vO|~BzM697hwL&0p8>c&m>VzPbo%#=ti+V-NFCV@Gy{6){ zP!$-$=|DwDs16L{bgn`aY62rD_(nxos0|DRM)AjfMO3JxKgJL#SlKR|4%|ga`YXp# zcLSBTD<^O=NGFpJZdXnr>TqR32nD8bI$PN(h=Cc1tCh2WwaPibdgVOyt;#MT99Y1q z_i(om4J_g`c{nMw2TtLc0kSUo2mDLmmky_dL|_@GqQ6(@46NXEz~3))1=f(0VgIy$ zorX2tn17N^XZ&;idH;fc(ZA$h_HQD_g#Wg16qPsaKZd~|JHm>8)xYLnXBPGinZGvt zoBl2TwtvUJ%addid;WcYfnXBgbl;Hq%OwEqdg!Ni-9$wKsg`oHJ+648t%WB9MU$7A<~J{L0k?y?h-6%P0ban)nff0Wk;)GmR!O z!6LnmCzBh~n8rS_Z*7x%W1rY3wy}@o#$JpV^**&%o21nww%Ti2DcVA-38pIVf9-S5 z%z&8o_TK0Hy&-4z-fOSD_F8MNz4qFBpBaC}ad9u7;<%LMRWoxM243X&7r5LFN!i&e zstT4ZUE5f<#<#g@t#7?AdqYjz=BF!Xa&?x{^$lf>ZT=I5Kl=lR|LUDpg@HDI%lgvw zH4Q$h*)Xl{aKpHf(CoriUya}QZ2yvr4XJljR{H!UHO+NRzOAFzFYx&b8vW~QHhdfP zwRKjo$M|YvToW7CDg$==D=QW>I8a($xxBJ)vB#6YsOVcsSI*bl38mEUTVL8--*T}f zb4Gm(K|D3B4UNrh|CF>Lr9PejMJ=_Dl-D%-nh4Kyxb|P_;|Q$OHTnzu%>>;2$%!9m zm7u)w6VFaS(Akd|KrZkOORZC0LnwnMuPV8#@ zRf8>?5SdUPi~l|eI`R~(UR+#UTBs~5FJD~lEzd72U9iZbEUNm=OBc>JBv8FlR9aP{ zlrAW#QmU0jy#yae@bdi9MO8(M3%^{DU-;z(6^p%#ihf6xNmN<6xU96OYVqQ-g8Yg_ zh4~dqejnAb4x{S|%SzE1)nCyGm#(fXFDtDos9Ll-zoKIC(xsqN@`rF`QN`l&qQy(2 zD{oL`a+Rla_3%nhe#L^)MW0daSgM6s-qod^1y#zjs><^GLdCoXRggumDl5z{uPR-< zNNXnzudEnWX`xC8s<*6E%JVDos}@&OmOiM+R2LVn^Av%vrPfh^CAKh?s7VglL1R$5s0a%CBGrzeK3HvWMZQO2ipro0CK9V4Q8jT&7FRqt{%)1kN=4Nd zs4_lG68dKZClc6JUA0;t%=(Ng=Nn?G03dZ@bk`CN3pE5vZ`S5vb6-T zqfC}kp1(*bt6xG8qM&#Rl%gV~sD2D44zuBsmaq6)zYODE|G~7U8sgSI@@3!VH7zx* zb*$o@j_-W2L0bFBqLyagG0MkMN336Brh&SOD_v}`T3NNcOksA+dMhqloDcOas80b} zEcIWZV7&4R%9Q%C1S%qG!>}9-G#o9?Q(9#7P+FyUSO*RQR#xR#d0|+Kl*?puc7hRK zg!Nm3#8an>7FT%k%XDovkn$V^Ccsh*?&78E2xeCbpfcUoSr@TNK~d%EqS8uYxQKyd z1}a%x#i*kR5X!-ArBcMEDe9{*n@Sh4dJw3*lK?;l0SiO$mb1224I4A{)~T+DjV#z8!9(6HTo+W8`k=t$a(zF4KX^T%vbM!oB;O1 zqJj}jGKj&0ZD~dM>Vm};MM?z|F^0rMJKsPo^VVQ3({f*b7cRCMB_QB@|SqFkTa}qM+ZR)|v)w;i+tV%=f>)zwnx8TwBxJ;9Jz(>ut?@Uu zG=G$G&*Fyk3g3FnpwGpzlvlzkyyZ-HR#qT?%DUBxWlC`svtS#mWp0PbYcDU37?7p` zf|PqJOOzrqiUtdnF_uh;Rw{T(mnlWs$dwltt}ZN5uwX1+rVTD3Fo57pMm3tDS7tZl4q3&$N&6*HOdntqd8Z>cJ*Y5q!0 z+xYFjD@H*J72e(StKtSrZ4=@czwfi}J@}gjIa{xKQ>vJRxvk+D!}!3dbyzoa7y^>= z#!bGa;+EF+HU9Ic!+IYD`QC)p84Z>V^)qIzY4pqg{_e>JYi$#vgW{T6pY4A>c&R}~ z$1D=ys3g@kk!J)K=7w0Krnt3cz0X9|F|2Ln+8RU-F$9Q@;zP5~bHrY}E@w8ZR|8M@ z^4WFuQdL1~pl$6pUs(R{Slw7Y8v-!>{NwTkedUI7VCU$ed zzaN5fDI4bE5%b}X2)DAOsj+T0;fht|zUJvu((>W&kqcu^_`S{7fS8hvXLfl@)8?ke zX5RvcsUs5CF)kXhp{2Q)@WNVR3a;?g`tt}JCR*Is)I`wv1U1(pU-#Mngkr`< zDc#f3+)}%?wPn5UBT|l`RipD~NUIK`a}Q1ImLeh-hLwTqs+Ixl3h^uW10|?7XKwE8-$JZR7GEZf@VP6ChbPPETX8ry#VTzi95S@RWNQDNoZKYqHw4lR@P%y70H<(4(r z04aDRQkKxNpviyzXv>QY)(RgsG_7cy^cg{;FkWm9capw3r_0ioJ29reUFI7qbRl^%UzPi8UZ;`;hF zA7hIsARI&N!q(EV(nVURZUd;gP+3%^RIt@24rOIg(Q2ivthBtcw6Z>a5CLFOaUoU} zJ(Mq9#MX&1(Lh8<2-US9Ek3%Ukb(%d$}k3((PGb*r>VqXOlcblpse5E-~4p%le-(@ zpzTF)OBl%T7{iz_0Hw{1;k|2vwWPGU4K`it6N_`dQClZzBNSON`&QRmXzUt%tv`D8pJVGS1=!p9YMPfipPW-K7a~M%Y_4e{mDgLC z@%maneet{Yh7_Gbc4bYyudt@63FG10KoP^?1>fk1ROi>jE)X)c`C9|ERQ=;&)djwK zGFFJHSN|(jI}PGRjcprh{IzSl37Qm!`s!-}P5L6zdW7o67aX&Q`t6BrT*Sr3Bp}|~S)70ksU&z*r1)Kf8 zxWB7?wZW06tzyNbpr*~rpK89^Amp!UV+RZ7@-Shk%-7uDUrXQyIj;<(0D#K>B(cHH zN>wckw|?OC`wc>Ab1g#@ihNo|R5msG^|qy0u4>xa{#5+VeDqF~is9s0>+15NDxG>^ zQ|p;mw;Tj@hONy);U7DH-H?!X$7p=;uM@m*Z@TDg99lN_kn{<8cZ|*Px>sLnh}FpI zs1zR7`pi|EH)w9K9jr#VHmvSpk5}unwyu9<_{m3u9lpJ;(bw!JxA5Yhi%s=%6@iKx zTkrYRqiqc_{)VcS4FxTJ9Mbr=U%6*^gEu~U@(7{OHh^so+JFLfDDa7RT_=|F*7XG~ zt#!Uu=HL&1^Z2R;84Eh5N0Tq9DA!W!ldkZXmZnG_wyH3;JGr8|AtpNlu>4ccoLZlSjYed#XfQL)e5c_j8yZA%0Drjt4J**9 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 gz@rljCgulzLcbhG25nCjxc~qF literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/rmkThemes.dcu b/official/2.1.6+2.1.beta1/Lib/D7/rmkThemes.dcu new file mode 100644 index 0000000000000000000000000000000000000000..9c449f112523eb53fd383e5eb00bc61f994ee485 GIT binary patch literal 13688 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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/tb2kdsgn_d7.dcu b/official/2.1.6+2.1.beta1/Lib/D7/tb2kdsgn_d7.dcu new file mode 100644 index 0000000000000000000000000000000000000000..3ed9eab0d650970bf8b64d6a293c111da7fa80ae GIT binary patch literal 5882 zcmeH~kB?kc702J1>CSw2y9-@x8!%!h5wn1-rD;J3>i(uJZ0RjYx8h-}~5F}~}{s4>`Nio8axhdCMaO-?Z`BY2l;rnVA4%S)=)`%0IeB@|slIu8{i#HAq&Q+qt z*fVq0k!{naK3MbOw_f?WbJrdHg<8Dlzx*kfVyRglulebLcRu!)eU9VQdnf$R4g9@s z>PO-D-`#6HgRvwWjlv{-VD$K+KF(K-qTq5rtVP#seQN8WG(D8#+s~1ne|B1pj@u3Bot|JuwD;)o@U3+H5~ftTvjs{c?+7IZfck{ z%_!7VHUP6GPPm<#%ucv7iq8&2lKU49KY6@N=$Rdzw8u0o{|WR%ImOdOP>P_t5GR+mDfzV#HiU5ub+29<^h z0v0w+RP4MuX&OxXUc*)+O;ns&Zs)V6L1iWM7$0@t3lo8xRz_4iQ?bw2RXu;eC{|jm z?V6=-TRm*aQ(b~h!>nqRFE!QoGkZU_53}Y^(N@<`Ul@;a+R%*P(%5Y^d{13dp?x8! z5|kH%)XzxP&h^qR`0CA93VpsF>Gh7a)lHHN4L8GIGFNC3C{|avt9v3%(>-0CTtf_I z-Pm{eqM?}rMVa>o$|gx{Tcuj!>tnVhirSuQmTVDWKcvpq#W3mqY_i<|J3vmiWa9L) zmTk_Gb|-n9o^8X?-!QQz?(c|g1GM_Oqp59&!?LGIiVO`CtzD_;;4!+&dhbxDznzTS z+BwzeVEv?*M`ps{Hfa=R|0D;=^WC$qM-(c|TbsK4}t{81f#no9rSpq(sVOn2eK) z$lJ;JWCuB$oJY2hv&d=Wbka{Yk#5pQgmjUALtcXX3vw9p56Fv<7a)IwJO}wR^wz7P2!LGFXx z54jt1FXRr$U65}=Zin0k`3B^xkXs>Nf_w$?1;~ELXCa@5+zhz|as%Wh$fqFJLp~1q zB;+HIk3sf9u7!L6@*&7FWG^IzEJ0e37!p82NCR>;qz2goxe785nS)#jxdQTDNEI>* znSxA1CL!;J?1a1vG6tD|3_(U9mq6YDc^l+n$acsDkgbqykheevAp?+eAa8=a8FB{X zOvoD`Z)9|tSzV-?^pSqDiJS^~J!B(fGh_qg6i6@RBnTiqkads(cZ|Bz^QRWve2y90 rQ!uN4b7%9j-}!tVKj(6}^YbX?ZpcmV>bo(Qn{{q-KJ7R+JMRAgT4?9v literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/tbx_d7.dcu b/official/2.1.6+2.1.beta1/Lib/D7/tbx_d7.dcu new file mode 100644 index 0000000000000000000000000000000000000000..1b898ee7f59cf44770c24b93662c353b77f370d0 GIT binary patch literal 5325 zcmeHKe~29Q75{$blHJc;5{;6GDMn1FB@r7gF{wtZ+>gzfm0R81?wy-(YG!BWcE_8Y z+04!**`Sh$ijgWNHNi+5Oi|HNMa33d+Tt%nL`6hIN>LG8w3Mo?h>F<0@9v(bF@ERo zf_r@4&G+qR-}lXX@B8M>TS}e$(h{W()wXQtuYPowvJR&%YHY|{IGK;amg~e}b8^R_c>S49(-cVAsOe@&$^eayahy^8v}ipXu=BMR#)MJ1a0 zuYBgY3yMSQHtmkHv0HEUzuo`YUZqrZ;fNR5zPHDYy)fAHANvN!O$jeIHg2Ny38ff@ ze%X#pw6xIlb|wyUxk9Tcr00iU{lMhXpyQbAEb6*+g%?!9T_&dXDib=>Nu14LXyo*Y zo#8NO#>Qys-39~C7=wWS8Xr6O)$Cc(xy!gETKGip)ozbX~L4l=3e$ zqz5M5eO((#( znK&HtoZ6;}XLLxatdgA4@!jncZQQNU3LFWdvCODTEUEAHWb4K!5py$s>?I^a_m_5q zG5UN-WH)M_WAr)IdBB+L$O#MLz+9}-rsA5}h;KKW2@Oc%=k0V$MmxopwDGCX#OWO? zjwat0C+x_xgV-1zO-gK2%(=~`o|#NeQHGFYOG0XUZnC6LqD&yh-R4V}%>JAz!`|gn zQ=a3l>+e6WeE`~X;&;q!y-|I-^V~DBP8OqA)VxaBZ6#Wid8$;1?Rcg+WJgVtRhcVG zx+COmKarQ2&f9^T%^{LKlkFuQg`kvG=xtI%qIwH&Cqo)pt@>}s&`$gMLoZ2VXUr)AbbrrK! zqIQVltJ+dtchxROWp~N5MXa`V6|>c^wsaM<$3|sE@y!#b21RxJfmIttId|68T3Mc; zQ>fLJvr6GCg$1jY3|!*I-Aw7uT(rx+yH~&IsfCM$_Kh@l^rvb4amk$f=BTx*8}z;H zr1Y&2`q3{3WZ|*qLbNBo0$m-svJHt`PeSK>|L4dO4vYsBlsE5xhBi^R*s^TZ3p zv&3`6lf=`+ABjH`PY{0~9w&ZBJVHE1{Dyd#c!2mdaW8Q{aS!n;;upkG;x6KD;!ff) zaR+gb_!)6KaSL%PaU*dvv6r}kxR$t{*iGyqVqz!JAR@vi0-{D-LsW<C6l@Z#6>Jb}6#P`MTJU4*^whE*ODd-? zwY>A+derJmt>|9=R<13}`n|=pb%!;zW5EH-s;PtO=POrQO8$;%nK`26$N?=k@7MCu veOivTw7hJGmU&OhF)H;{X347|28c8-P3mApZZKi6Ml+i6Mf)oxz78k|BV>gCQ8I(m(*AMFYrm z0Ai33BM^c>1DM1l{(~&V3FJTUACN!5V;~^Fe?Y*2EkOWiq<{nS0We*_*Z`vCFF^S6 Y7a;O10z3xt9~cPv;Zst0NM^5t^fc4 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/tbxdsgn_d7.dcu b/official/2.1.6+2.1.beta1/Lib/D7/tbxdsgn_d7.dcu new file mode 100644 index 0000000000000000000000000000000000000000..2d3bb9a5bb4e956505297f5a091fd51c50435370 GIT binary patch literal 6620 zcmeI0du$w66~^c6#=D=LIEhhHHHe}H5#(0XO05J))q>BjHie3JTxd-8M-T zpUI#65l6qx?)B&My7!*Bd!Mqbbx&@ztV6Y3+fL1%K4@j`&t2EpK635McoZ(XP7=m5 z!(qJ<25ykJ@l1KPe}1MsG(9tJJM(sxBgyPiC9VeVth}+W(wIL;J65#ztii~QKf=LG z)ZN!-{&K>t_Entd;f~L5S#^%E63zXWKRGv79_pv+)GxO@x7V_)>Y5#1VEf)4JMqF` z^zZf^j+-yktD_Y!Iq{Y!{<@L|BXKYs266J(@X8|Nt2k2F^7P8SD48~r>gj_kxmrz0 zX}6a+H8;|9J@huhVigj%Zo&^EEy?w5HIrC$qr_Fk8_pHq)G)=0HS^sgZtPWqw|PM& z+#NqU|NK)crPnnzJk|MYKQ*%U-GB4@JtUd&Oqr(KDCT2LlbJFN2A-ZCJ9uiFXM+xsh`mm$K}U0AYYKBxG3!{< zbnFPDy6UH!%V?+TH>Nyyw;O4;_*ktBI!U0KqbO>wV9io~*!LQmy`NT|nID^ho(_dAz8=mTl$4|~#w5*B>fyWb!t0tdkJR`ndpjByt{Ln&@ z@HD4IljnJYv#M%3%|cAAPQKl?G;f&joSJzoYodI+nQ9u8mIH@JB{go7Tb)JH4CP8S zKjp}kn~eNo7-&}V+-HTrRny9Gaj?>w8I)?S@AHtPiE=x9J1Grm5{yS4zjo=f3dUS& z@KK{#>NMTM99Gmq!z_-pZj~+6)#rlQr**U8wRkwCK@#YRahoPJ%?NIY>_*LV)SPmy zXOwEE$it17wls!)JC0L!JL~5yy3?Aoe0iA@F&Ao@&WZBa1%y3iN1n}7y=Dp&rM7zR z!uWzj&7f3wMK_Mky?`b%yUcv&)HEF|lWxU)FE`f&=GKBg=es80nSrO^$TTWVmS_5G z=FMGyepA&o1MLfsvCytuRSr*9*SsfhQ`?Jp0cB!m=S*O>M zE36}HdoLNd!A;sZndMlvXMK0Cxm~f=tj{>T=Oo-3ztoJsEbTMDIh^S|D~i3%XuCG? zPY%B@zz-hUw>a+ctmSo?I`Qb>?QxIs<9UNQnzj7R>tg;bn#L}^T&%#w3jDuT;1Ltp zcbl)zy!`D+Gf?M#&OM%m7!Hv8$b;k|vP^C#w~+Yw6iAT_l2Njq zTu-hc+sKvVYO;xJCL77+q=#%Eour!x=^)Q#Apaq!$v??S@@MiJ@_X`g@+)$T94C*H zqvYG<`{Zln8{~`RE94>aIdX(NNDh$)$N_R6*-!2w`^cSSncPlpBMZbMbz&2j+)QpE zyT~LdkRll*qhvd|o?Jt=kt@m7WE0s;Hj>Lp57|IENjDMFLH-SS0rD@%^N@c)o`sx( z{0;Ia$X_7OK>i5%9pn#;oYlIEJPr9RCCFzX4?{i;`3&TfkWWEA4*3M+W01p;gOHCx z?uFbBxf^m1mYB2ya{qGWGmzikS&mY z$m=0}kY31Dkk>+92e|_B8px|4uZCO(c_ri$$fc0=kXJy~K-NM4>4L0+t@5 z<&I`E+#y}LW3B%)hxq<@`~3rapUGs7WRcI@of+?0cOa9Quy7)& J>)5@P{Xb=8x+VYs literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Packages/tb2k_GroupD10.bdsgroup b/official/2.1.6+2.1.beta1/Packages/tb2k_GroupD10.bdsgroup new file mode 100644 index 0000000..7dbdf85 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2k_GroupD10.bdsgroup @@ -0,0 +1,18 @@ + + + + + + + + + + + D:\Proyectos\Componentes\Tb2k\Packages\tb2k_d10.bdsproj + D:\Proyectos\Componentes\Tb2k\Packages\tb2kdsgn_d10.bdsproj + tb2k_d10.bpl tb2kdsgn_d10.bpl tb2kdsgn_d10.bpl tb2k_d10.bpl + + + + diff --git a/official/2.1.6+2.1.beta1/Packages/tb2k_cb4.bpk b/official/2.1.6+2.1.beta1/Packages/tb2k_cb4.bpk new file mode 100644 index 0000000..c47edd4 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2k_cb4.bpk @@ -0,0 +1,183 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.04.04 +# --------------------------------------------------------------------------- +PROJECT = tb2k_cb4.bpl +OBJFILES = ..\Source\TB2Common.obj ..\Source\TB2Consts.obj ..\Source\TB2Dock.obj \ + ..\Source\TB2ExtItems.obj ..\Source\TB2Item.obj ..\Source\TB2Toolbar.obj \ + ..\Source\TB2Version.obj ..\Source\TB2Hook.obj ..\Source\TB2ToolWindow.obj \ + ..\Source\TB2MRU.obj ..\Source\TB2Anim.obj ..\Source\TB2MDI.obj \ + ..\Source\TB2Acc.obj tb2k_cb4.obj +RESFILES = +RESDEPEN = $(RESFILES) +LIBFILES = +LIBRARIES = +SPARELIBS = Vcl40.lib +PACKAGES = vcl40.bpi +DEFFILE = +# --------------------------------------------------------------------------- +PATHCPP = .; +PATHASM = .; +PATHPAS = .;..\Source +PATHRC = .; +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +USERDEFINES = +SYSDEFINES = _RTLDLL;NO_STRICT;USEPACKAGES +# --------------------------------------------------------------------------- +CFLAG1 = -I..\Source;$(BCB)\include;$(BCB)\include\vcl -Od -Hc -H=$(BCB)\lib\vcl40.csm \ + -w -Ve -r- -a8 -k -y -v -vi- -c -b- -w-par -w-inl -Vx -tWM \ + -D$(SYSDEFINES);$(USERDEFINES) +PFLAGS = -U..\Source;$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -I..\Source;$(BCB)\include;$(BCB)\include\vcl -$YD -$W -$O- -v -JPHNE -M +RFLAGS = -i..\Source;$(BCB)\include;$(BCB)\include\vcl +AFLAGS = /i$(BCB)\include /i$(BCB)\include\vcl /mx /w2 /zd +LFLAGS = -L..\Source;$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -D"Toolbar2000 Components (Jordan Russell)" -aa -Tpp -x -Gn -Gl -Gi -v +# --------------------------------------------------------------------------- +ALLOBJ = c0pkg32.obj Memmgr.Lib $(PACKAGES) sysinit.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cp32mti.lib +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +InMemoryExe=0 +ShowInfoMsgs=0 + +!endif + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project file is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(CPP32) +CPP32 = cpp32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = ilink32 +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif + +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif + +!if $d(PATHRC) +.PATH.RC = $(PATHRC) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.cpp.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) $<, $@ + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) -fo$@ $< +# --------------------------------------------------------------------------- + diff --git a/official/2.1.6+2.1.beta1/Packages/tb2k_cb4.cpp b/official/2.1.6+2.1.beta1/Packages/tb2k_cb4.cpp new file mode 100644 index 0000000..65d5caa --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2k_cb4.cpp @@ -0,0 +1,29 @@ +// $jrsoftware: tb2k/Packages/tb2k_cb4.cpp,v 1.9 2003/07/04 22:53:21 jr Exp $ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +USEPACKAGE("vcl40.bpi"); +USEUNIT("..\Source\TB2Common.pas"); +USEUNIT("..\Source\TB2Consts.pas"); +USEUNIT("..\Source\TB2Dock.pas"); +USEUNIT("..\Source\TB2ExtItems.pas"); +USEUNIT("..\Source\TB2Item.pas"); +USEUNIT("..\Source\TB2Toolbar.pas"); +USEUNIT("..\Source\TB2Version.pas"); +USEUNIT("..\Source\TB2Hook.pas"); +USEUNIT("..\Source\TB2ToolWindow.pas"); +USEUNIT("..\Source\TB2MRU.pas"); +USEUNIT("..\Source\TB2Anim.pas"); +USEUNIT("..\Source\TB2MDI.pas"); +USEUNIT("..\Source\TB2Acc.pas"); +//--------------------------------------------------------------------------- +#pragma package(smart_init) +//--------------------------------------------------------------------------- +// Package source. +//--------------------------------------------------------------------------- +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- + diff --git a/official/2.1.6+2.1.beta1/Packages/tb2k_cb5.bpk b/official/2.1.6+2.1.beta1/Packages/tb2k_cb5.bpk new file mode 100644 index 0000000..5880bff --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2k_cb5.bpk @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + + \ No newline at end of file diff --git a/official/2.1.6+2.1.beta1/Packages/tb2k_cb5.cpp b/official/2.1.6+2.1.beta1/Packages/tb2k_cb5.cpp new file mode 100644 index 0000000..33d2c2b --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2k_cb5.cpp @@ -0,0 +1,29 @@ +// $jrsoftware: tb2k/Packages/tb2k_cb5.cpp,v 1.9 2003/07/04 22:53:21 jr Exp $ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +USEPACKAGE("vcl50.bpi"); +USEUNIT("..\Source\TB2Common.pas"); +USEUNIT("..\Source\TB2Consts.pas"); +USEUNIT("..\Source\TB2Dock.pas"); +USEUNIT("..\Source\TB2ExtItems.pas"); +USEUNIT("..\Source\TB2Item.pas"); +USEUNIT("..\Source\TB2Toolbar.pas"); +USEUNIT("..\Source\TB2Version.pas"); +USEUNIT("..\Source\TB2Hook.pas"); +USEUNIT("..\Source\TB2ToolWindow.pas"); +USEUNIT("..\Source\TB2MRU.pas"); +USEUNIT("..\Source\TB2Anim.pas"); +USEUNIT("..\Source\TB2MDI.pas"); +USEUNIT("..\Source\TB2Acc.pas"); +//--------------------------------------------------------------------------- +#pragma package(smart_init) +//--------------------------------------------------------------------------- +// Package source. +//--------------------------------------------------------------------------- +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- + diff --git a/official/2.1.6+2.1.beta1/Packages/tb2k_cb6.bpk b/official/2.1.6+2.1.beta1/Packages/tb2k_cb6.bpk new file mode 100644 index 0000000..ac07ad6 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2k_cb6.bpk @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +Launcher= +UseLauncher=0 +DebugCWD= +HostApplication= +RemoteHost= +RemotePath= +RemoteLauncher= +RemoteCWD= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + +[Linker] +LibPrefix= +LibSuffix= +LibVersion= + + \ No newline at end of file diff --git a/official/2.1.6+2.1.beta1/Packages/tb2k_cb6.cpp b/official/2.1.6+2.1.beta1/Packages/tb2k_cb6.cpp new file mode 100644 index 0000000..79fe10f --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2k_cb6.cpp @@ -0,0 +1,14 @@ +// $jrsoftware: tb2k/Packages/tb2k_cb6.cpp,v 1.2 2002/11/14 18:07:19 jr Exp $ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +#pragma package(smart_init) +//--------------------------------------------------------------------------- +// Package source. +//--------------------------------------------------------------------------- +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- + diff --git a/official/2.1.6+2.1.beta1/Packages/tb2k_d10.bdsproj b/official/2.1.6+2.1.beta1/Packages/tb2k_d10.bdsproj new file mode 100644 index 0000000..23dbbb1 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2k_d10.bdsproj @@ -0,0 +1,658 @@ + + + + + + + + + + + + tb2k_d10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 1069547520 + Toolbar2000 Components (Jordan Russell) + + + + ..\Lib\D10 + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/official/2.1.6+2.1.beta1/Packages/tb2k_d10.dpk b/official/2.1.6+2.1.beta1/Packages/tb2k_d10.dpk new file mode 100644 index 0000000..14fe739 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2k_d10.dpk @@ -0,0 +1,47 @@ +package tb2k_d10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST ON} +{$MINENUMSIZE 1} +{$IMAGEBASE $3FC00000} +{$DESCRIPTION 'Toolbar2000 Components (Jordan Russell)'} +{$IMPLICITBUILD ON} + +requires + vcl; + +contains + TB2Version in '..\Source\TB2Version.pas', + TB2Toolbar in '..\Source\TB2Toolbar.pas', + TB2Consts in '..\Source\TB2Consts.pas', + TB2Dock in '..\Source\TB2Dock.pas', + TB2ExtItems in '..\Source\TB2ExtItems.pas', + TB2Item in '..\Source\TB2Item.pas', + TB2Common in '..\Source\TB2Common.pas', + TB2Hook in '..\Source\TB2Hook.pas', + TB2ToolWindow in '..\Source\TB2ToolWindow.pas', + TB2MRU in '..\Source\TB2MRU.pas', + TB2Anim in '..\Source\TB2Anim.pas', + TB2MDI in '..\Source\TB2MDI.pas', + TB2Acc in '..\Source\TB2Acc.pas'; + +end. + diff --git a/official/2.1.6+2.1.beta1/Packages/tb2k_d10.res b/official/2.1.6+2.1.beta1/Packages/tb2k_d10.res new file mode 100644 index 0000000000000000000000000000000000000000..86c94e6ada7b3c85f6761b1ee234a9f34ef3c861 GIT binary patch literal 5056 zcmbW5&x;&Y5XWnifD(f4!IPI+L`3!=E9BmaF%VEA#@TDLXpF&R6XJUC)cc=I4kFSA z{{!hg%bp}hVRP_qjvmDJ`>A@>-7}euyEfF+`%$mH-*3IwZ-y~5+miKtn3_w^Pn$V^ zQ861nx4C)wN(Q~H#+K|o*@m~&(3=1I%Llk7>S*pvE7;Yjz^+ljNYba;|&8!P>=GYp<9J^QiRC`-*du(Wb zBJI+RemE@Tm2dSSKL$269_p-ia&WJ{$B|EYy#Bt1`fm?B(CB-l8nlXqgY!6fUOzP@ zr|Te|e4cZxgJWuLF8<`}dughP69?9a%ha4}r`jtX-7UCl^he&nV;_S<)Ya!2FlEJu zrr{t12%dXkNqpywX{@?Eb_MKs@29XRNI;2D%DxW zo|xv^jnf#kFIDZr^e=W==PW{#^6Ao{deqzuxId;ujOZ~3;otiwSzBXu3^t3 z&$C~D3=Umz@OQRR9+}nP>x>=u115dAI{rd2#Mbgv81-@e%IA6)a8SDwHm3Di`~F1x z)jhG~04Fd5o4f^Iah!WFIS0|E#)aohzS6onIG_;>-~Ytz3J0A}=DenTZ*cIo-Ves9 zp>qHmo5lV+rntk2He9_1!t%2yZsF;l)>iGc4jkU$0bBWEPmBKKP>uSjxhXIDsSodT z@EG|gFZa>|hHF!PaN};FzIxxlpPKT;87{i(!eu7T%H?}r^yeP=K2c}If`cyKd-3DW z_4ib`jDt-MZ?C~;z1O=EKN(!YbpFJR_c`u>(C=ph9O_Y*Jz5Z>`Zs7T9Mn$y@ay$^ z{gulxYxXwGq@TIGbG$~Hi*qk8?9|WMkNweF@MU18F;AQKZ>jcWAL86`f59r^Yh;+XfGU10gV*5=*FT)q#qz2B_Ik28(#vUlW{{>1m(1wXK3zHQ3+RoHfz^$cuqg(^F;eqz6WUMUE^m$ z9R1u2H_t9ue%}<_JcD5KB$svgjBysd-ql#|toxF$&>h1Qc)Vw6j~u{SeHg>my$i{SJtD^MnJV!{AK!ZgN9Q4bN2bs7?m1Qo zsLwc-c&GZ4_%7jWppm+9C(?(bpCye?f6Mv)ml~{r9)<=EoH5SYSxm8xsWZv%2MjL$ zd)R%{gxqI&lEaJ6!*jggJMcIz?<5?~hn@VA1Kzcrp$;C`m0CzQdy{!G?|FT$$5W3N zaydTsdE#>2dGSt*&wOX~r{!54?~lxS4gM|rOZH6mRCZMCP#!z)bEv-^up_gJ*i*BY zl>1d-%!E}5v+s{C_OF@Qj;!xrv5)P2yJ4TmKCqke`Aq-U;NJ}WpRu*&|7!3r$c7zU zF#m_6?>Cia!E%D)b;IaF{ zzPG~QEyw>z^LKm}whzS>Dx3Ct`1w98?Y5)H;{X347|28c09i@|9RL6T literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Packages/tb2k_d5.dpk b/official/2.1.6+2.1.beta1/Packages/tb2k_d5.dpk new file mode 100644 index 0000000..e2b929d --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2k_d5.dpk @@ -0,0 +1,49 @@ +package tb2k_d5; + +{ $jrsoftware: tb2k/Packages/tb2k_d5.dpk,v 1.10 2003/07/04 22:53:21 jr Exp $ } + +{$R *.RES} +{$ALIGN ON} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST ON} +{$MINENUMSIZE 1} +{$IMAGEBASE $3FC00000} +{$DESCRIPTION 'Toolbar2000 Components (Jordan Russell)'} +{$IMPLICITBUILD ON} + +requires + vcl50; + +contains + TB2Version in '..\Source\TB2Version.pas', + TB2Toolbar in '..\Source\TB2Toolbar.pas', + TB2Consts in '..\Source\TB2Consts.pas', + TB2Dock in '..\Source\TB2Dock.pas', + TB2ExtItems in '..\Source\TB2ExtItems.pas', + TB2Item in '..\Source\TB2Item.pas', + TB2Common in '..\Source\TB2Common.pas', + TB2Hook in '..\Source\TB2Hook.pas', + TB2ToolWindow in '..\Source\TB2ToolWindow.pas', + TB2MRU in '..\Source\TB2MRU.pas', + TB2Anim in '..\Source\TB2Anim.pas', + TB2MDI in '..\Source\TB2MDI.pas', + TB2Acc in '..\Source\TB2Acc.pas'; + +end. + diff --git a/official/2.1.6+2.1.beta1/Packages/tb2k_d5.res b/official/2.1.6+2.1.beta1/Packages/tb2k_d5.res new file mode 100644 index 0000000000000000000000000000000000000000..36f26e234a8ac66a47e95cec6d496cf2f1442471 GIT binary patch literal 32 UcmZQzU|>)H;{X347|28c09i@|9RL6T literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Packages/tb2k_d6.dpk b/official/2.1.6+2.1.beta1/Packages/tb2k_d6.dpk new file mode 100644 index 0000000..8d6d824 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2k_d6.dpk @@ -0,0 +1,49 @@ +package tb2k_d6; + +{ $jrsoftware: tb2k/Packages/tb2k_d6.dpk,v 1.8 2003/07/04 22:53:21 jr Exp $ } + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST ON} +{$MINENUMSIZE 1} +{$IMAGEBASE $3FC00000} +{$DESCRIPTION 'Toolbar2000 Components (Jordan Russell)'} +{$IMPLICITBUILD ON} + +requires + vcl; + +contains + TB2Version in '..\Source\TB2Version.pas', + TB2Toolbar in '..\Source\TB2Toolbar.pas', + TB2Consts in '..\Source\TB2Consts.pas', + TB2Dock in '..\Source\TB2Dock.pas', + TB2ExtItems in '..\Source\TB2ExtItems.pas', + TB2Item in '..\Source\TB2Item.pas', + TB2Common in '..\Source\TB2Common.pas', + TB2Hook in '..\Source\TB2Hook.pas', + TB2ToolWindow in '..\Source\TB2ToolWindow.pas', + TB2MRU in '..\Source\TB2MRU.pas', + TB2Anim in '..\Source\TB2Anim.pas', + TB2MDI in '..\Source\TB2MDI.pas', + TB2Acc in '..\Source\TB2Acc.pas'; + +end. + diff --git a/official/2.1.6+2.1.beta1/Packages/tb2k_d6.res b/official/2.1.6+2.1.beta1/Packages/tb2k_d6.res new file mode 100644 index 0000000000000000000000000000000000000000..36f26e234a8ac66a47e95cec6d496cf2f1442471 GIT binary patch literal 32 UcmZQzU|>)H;{X347|28c09i@|9RL6T literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Packages/tb2k_d7.cfg b/official/2.1.6+2.1.beta1/Packages/tb2k_d7.cfg new file mode 100644 index 0000000..f733d0f --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2k_d7.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J+ +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$Y- +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$3FC00000 +-N"..\Lib\D7" +-LE"c:\archivos de programa\borland\delphi7\Projects\Bpl" +-LN"c:\archivos de programa\borland\delphi7\Projects\Bpl" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/2.1.6+2.1.beta1/Packages/tb2k_d7.dof b/official/2.1.6+2.1.beta1/Packages/tb2k_d7.dof new file mode 100644 index 0000000..98abb90 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2k_d7.dof @@ -0,0 +1,474 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=1 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=0 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=1069547520 +ExeDescription=Toolbar2000 Components (Jordan Russell) +[Directories] +OutputDir= +UnitOutputDir=..\Lib\D7 +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;Hydra_Core_D7;Hydra_RO_D7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7;dxComnD7;dxsbD7;dxBarD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;cxEditorsVCLD7;cxLibraryVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxPSCoreD7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\DJclVcl70.bpl=JEDI Code Library VCL package for Delphi 7 +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\DJcl70.bpl=JEDI Code Library RTL package for Delphi 7 +C:\WINDOWS\system32\fqb70.bpl=FastQueryBuilder 1.01 +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxPSCoreD7.bpl=ExpressPrinting System (core 3.1) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxComnD7.bpl=ExpressCommonLibrary by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxBarDBNavD7.bpl=ExpressBars DBNavigator by Developer Express Inc. +c:\archivos de programa\borland\delphi7\Projects\Bpl\EasyResizeD7.bpl=EasyResize for Delphi 7 +c:\archivos de programa\borland\delphi7\Projects\Bpl\RodaxFrameD7.bpl=Frames Acana (D7) +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=..\Lib\D7 +[HistoryLists\hlBPLOutput] +Count=1 +Item0=..\Lib\D7 +[HistoryLists\hlDCPOutput] +Count=1 +Item0=..\Lib\D7 +[Exception Log] +EurekaLog Version=501 +Activate=1 +Activate Handle=1 +Save Log File=1 +Foreground Tab=0 +Freeze Activate=0 +Freeze Timeout=60 +Freeze Message=The application seems to be frozen. +SMTP From=eurekalog@email.com +SMTP Host= +SMTP Port=25 +SMTP UserID= +SMTP Password= +Append to Log=0 +Show TerminateBtn=1 +TerminateBtn Operation=1 +Errors Number=32 +Errors Terminate=3 +Email Address= +Email Object= +Email Send Options=0 +Output Path= +Encrypt Password= +AutoCloseDialogSecs=0 +WebSendMode=0 +SupportULR= +HTMLLayout Count=15 +HTMLLine0="%3Chtml%3E" +HTMLLine1=" %3Chead%3E" +HTMLLine2=" %3C/head%3E" +HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E" +HTMLLine4=" %3Ctable width="100%%" border="0"%3E" +HTMLLine5=" %3Ctr%3E" +HTMLLine6=" %3Ctd nowrap%3E" +HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E" +HTMLLine8=" %3C%%HTML_TAG%%%3E" +HTMLLine9=" %3C/font%3E" +HTMLLine10=" %3C/td%3E" +HTMLLine11=" %3C/tr%3E" +HTMLLine12=" %3C/table%3E" +HTMLLine13=" %3C/body%3E" +HTMLLine14="%3C/html%3E" +AutoCrashOperation=1 +AutoCrashNumber=10 +AutoCrashMinutes=1 +WebURL= +WebUserID= +WebPassword= +WebPort=0 +AttachedFiles= +Count=0 +EMail Message Line Count=0 +loNoDuplicateErrors=0 +loAppendReproduceText=0 +loDeleteLogAtVersionChange=0 +loAddComputerNameInLogFileName=0 +loSaveModulesSection=1 +loSaveCPUSection=1 +soAppStartDate=1 +soAppName=1 +soAppVersionNumber=1 +soAppParameters=1 +soAppCompilationDate=1 +soExcDate=1 +soExcAddress=1 +soExcModule=1 +soExcType=1 +soExcMessage=1 +soActCtlsFormClass=1 +soActCtlsFormText=1 +soActCtlsControlClass=1 +soActCtlsControlText=1 +soCmpName=1 +soCmpUser=1 +soCmpTotalMemory=1 +soCmpFreeMemory=1 +soCmpTotalDisk=1 +soCmpFreeDisk=1 +soCmpSysUpTime=1 +soCmpProcessor=1 +soCmpDisplayMode=1 +soOSType=1 +soOSBuildN=1 +soOSUpdate=1 +soOSLanguage=1 +soNetIP=1 +soNetSubmask=1 +soNetGateway=1 +soNetDNS1=1 +soNetDNS2=1 +soNetDHCP=1 +sndShowSendDialog=1 +sndShowSuccessFailureMsg=0 +sndSendEntireLog=0 +sndSendXMLLogCopy=0 +sndSendScreenshot=1 +sndUseOnlyActiveWindow=0 +sndSendLastHTMLPage=1 +sndSendInSeparatedThread=0 +sndAddDateInFileName=0 +sndCompressAllFiles=0 +edoShowExceptionDialog=1 +edoSendEmailChecked=1 +edoAttachScreenshotChecked=1 +edoShowCopyToClipOption=1 +edoShowDetailsButton=1 +edoShowInDetailedMode=0 +edoShowInTopMostMode=0 +edoUseEurekaLogLookAndFeel=0 +csoShowDLLs=1 +csoShowBPLs=1 +csoShowBorlandThreads=1 +csoShowWindowsThreads=1 +csoShowProcedureOffset=0 +boActivateCrashDetection=0 +boPauseBorlandThreads=0 +boDoNotPauseMainThread=0 +boPauseWindowsThreads=0 +boUseMainModuleOptions=1 +boCopyLogInCaseOfError=1 +boSaveCompressedCopyInCaseOfError=0 +Count mtInformationMsgCaption=1 +mtInformationMsgCaption0="Information." +Count mtQuestionMsgCaption=1 +mtQuestionMsgCaption0="Question." +Count mtDialog_Caption=1 +mtDialog_Caption0="Error." +Count mtDialog_ErrorMsgCaption=2 +mtDialog_ErrorMsgCaption0="An error has occurred during program execution." +mtDialog_ErrorMsgCaption1="Please read the following information for further details." +Count mtDialog_GeneralCaption=1 +mtDialog_GeneralCaption0="General" +Count mtDialog_GeneralHeader=1 +mtDialog_GeneralHeader0="General Information" +Count mtDialog_CallStackCaption=1 +mtDialog_CallStackCaption0="Call Stack" +Count mtDialog_CallStackHeader=1 +mtDialog_CallStackHeader0="Call Stack Information" +Count mtDialog_ModulesCaption=1 +mtDialog_ModulesCaption0="Modules" +Count mtDialog_ModulesHeader=1 +mtDialog_ModulesHeader0="Modules Information" +Count mtDialog_CPUCaption=1 +mtDialog_CPUCaption0="CPU" +Count mtDialog_CPUHeader=1 +mtDialog_CPUHeader0="CPU Information" +Count mtDialog_CustomDataCaption=1 +mtDialog_CustomDataCaption0="Other" +Count mtDialog_CustomDataHeader=1 +mtDialog_CustomDataHeader0="Other Information" +Count mtDialog_OKButtonCaption=1 +mtDialog_OKButtonCaption0="&OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="&Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="&Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="&Details" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="&Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="&Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="&Copy to Clipboard" +Count mtDialog_SupportMessage=1 +mtDialog_SupportMessage0="Go to the Support Page" +Count mtLog_AppHeader=1 +mtLog_AppHeader0="Application" +Count mtLog_AppStartDate=1 +mtLog_AppStartDate0="Start Date" +Count mtLog_AppName=1 +mtLog_AppName0="Name/Description" +Count mtLog_AppVersionNumber=1 +mtLog_AppVersionNumber0="Version Number" +Count mtLog_AppParameters=1 +mtLog_AppParameters0="Parameters" +Count mtLog_AppCompilationDate=1 +mtLog_AppCompilationDate0="Compilation Date" +Count mtLog_ExcHeader=1 +mtLog_ExcHeader0="Exception" +Count mtLog_ExcDate=1 +mtLog_ExcDate0="Date" +Count mtLog_ExcAddress=1 +mtLog_ExcAddress0="Address" +Count mtLog_ExcModule=1 +mtLog_ExcModule0="Module" +Count mtLog_ExcType=1 +mtLog_ExcType0="Type" +Count mtLog_ExcMessage=1 +mtLog_ExcMessage0="Message" +Count mtLog_ActCtrlsHeader=1 +mtLog_ActCtrlsHeader0="Active Controls" +Count mtLog_ActCtrlsFormClass=1 +mtLog_ActCtrlsFormClass0="Form Class" +Count mtLog_ActCtrlsFormText=1 +mtLog_ActCtrlsFormText0="Form Text" +Count mtLog_ActCtrlsControlClass=1 +mtLog_ActCtrlsControlClass0="Control Class" +Count mtLog_ActCtrlsControlText=1 +mtLog_ActCtrlsControlText0="Control Text" +Count mtLog_CmpHeader=1 +mtLog_CmpHeader0="Computer" +Count mtLog_CmpName=1 +mtLog_CmpName0="Name" +Count mtLog_CmpUser=1 +mtLog_CmpUser0="User" +Count mtLog_CmpTotalMemory=1 +mtLog_CmpTotalMemory0="Total Memory" +Count mtLog_CmpFreeMemory=1 +mtLog_CmpFreeMemory0="Free Memory" +Count mtLog_CmpTotalDisk=1 +mtLog_CmpTotalDisk0="Total Disk" +Count mtLog_CmpFreeDisk=1 +mtLog_CmpFreeDisk0="Free Disk" +Count mtLog_CmpSystemUpTime=1 +mtLog_CmpSystemUpTime0="System Up Time" +Count mtLog_CmpProcessor=1 +mtLog_CmpProcessor0="Processor" +Count mtLog_CmpDisplayMode=1 +mtLog_CmpDisplayMode0="Display Mode" +Count mtLog_OSHeader=1 +mtLog_OSHeader0="Operating System" +Count mtLog_OSType=1 +mtLog_OSType0="Type" +Count mtLog_OSBuildN=1 +mtLog_OSBuildN0="Build #" +Count mtLog_OSUpdate=1 +mtLog_OSUpdate0="Update" +Count mtLog_OSLanguage=1 +mtLog_OSLanguage0="Language" +Count mtLog_NetHeader=1 +mtLog_NetHeader0="Network" +Count mtLog_NetIP=1 +mtLog_NetIP0="IP Address" +Count mtLog_NetSubmask=1 +mtLog_NetSubmask0="Submask" +Count mtLog_NetGateway=1 +mtLog_NetGateway0="Gateway" +Count mtLog_NetDNS1=1 +mtLog_NetDNS10="DNS 1" +Count mtLog_NetDNS2=1 +mtLog_NetDNS20="DNS 2" +Count mtLog_NetDHCP=1 +mtLog_NetDHCP0="DHCP" +Count mtLog_CustInfoHeader=1 +mtLog_CustInfoHeader0="Custom Information" +Count mtCallStack_Address=1 +mtCallStack_Address0="Address" +Count mtCallStack_Name=1 +mtCallStack_Name0="Module" +Count mtCallStack_Unit=1 +mtCallStack_Unit0="Unit" +Count mtCallStack_Class=1 +mtCallStack_Class0="Class" +Count mtCallStack_Procedure=1 +mtCallStack_Procedure0="Procedure/Method" +Count mtCallStack_Line=1 +mtCallStack_Line0="Line" +Count mtCallStack_MainThread=1 +mtCallStack_MainThread0="Main" +Count mtCallStack_ExceptionThread=1 +mtCallStack_ExceptionThread0="Exception Thread" +Count mtCallStack_RunningThread=1 +mtCallStack_RunningThread0="Running Thread" +Count mtCallStack_CallingThread=1 +mtCallStack_CallingThread0="Calling Thread" +Count mtCallStack_ThreadID=1 +mtCallStack_ThreadID0="ID" +Count mtCallStack_ThreadPriority=1 +mtCallStack_ThreadPriority0="Priority" +Count mtCallStack_ThreadClass=1 +mtCallStack_ThreadClass0="Class" +Count mtSendDialog_Caption=1 +mtSendDialog_Caption0="Send." +Count mtSendDialog_Message=1 +mtSendDialog_Message0="Message" +Count mtSendDialog_Resolving=1 +mtSendDialog_Resolving0="Resolving DNS..." +Count mtSendDialog_Connecting=1 +mtSendDialog_Connecting0="Connecting with server..." +Count mtSendDialog_Connected=1 +mtSendDialog_Connected0="Connected with server." +Count mtSendDialog_Sending=1 +mtSendDialog_Sending0="Sending message..." +Count mtReproduceDialog_Caption=1 +mtReproduceDialog_Caption0="Request" +Count mtReproduceDialog_Request=1 +mtReproduceDialog_Request0="Please describe the steps to reproduce the error:" +Count mtReproduceDialog_OKButtonCaption=1 +mtReproduceDialog_OKButtonCaption0="&OK" +Count mtModules_Handle=1 +mtModules_Handle0="Handle" +Count mtModules_Name=1 +mtModules_Name0="Name" +Count mtModules_Description=1 +mtModules_Description0="Description" +Count mtModules_Version=1 +mtModules_Version0="Version" +Count mtModules_Size=1 +mtModules_Size0="Size" +Count mtModules_LastModified=1 +mtModules_LastModified0="Modified" +Count mtModules_Path=1 +mtModules_Path0="Path" +Count mtCPU_Registers=1 +mtCPU_Registers0="Registers" +Count mtCPU_Stack=1 +mtCPU_Stack0="Stack" +Count mtCPU_MemoryDump=1 +mtCPU_MemoryDump0="Memory Dump" +Count mtSend_SuccessMsg=1 +mtSend_SuccessMsg0="The message was sent successfully." +Count mtSend_FailureMsg=1 +mtSend_FailureMsg0="Sorry, sending the message didn't work." + + diff --git a/official/2.1.6+2.1.beta1/Packages/tb2k_d7.dpk b/official/2.1.6+2.1.beta1/Packages/tb2k_d7.dpk new file mode 100644 index 0000000..2bcceff --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2k_d7.dpk @@ -0,0 +1,47 @@ +package tb2k_d7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST ON} +{$MINENUMSIZE 1} +{$IMAGEBASE $3FC00000} +{$DESCRIPTION 'Toolbar2000 Components (Jordan Russell)'} +{$IMPLICITBUILD OFF} + +requires + vcl; + +contains + TB2Version in '..\Source\TB2Version.pas', + TB2Toolbar in '..\Source\TB2Toolbar.pas', + TB2Consts in '..\Source\TB2Consts.pas', + TB2Dock in '..\Source\TB2Dock.pas', + TB2ExtItems in '..\Source\TB2ExtItems.pas', + TB2Item in '..\Source\TB2Item.pas', + TB2Common in '..\Source\TB2Common.pas', + TB2Hook in '..\Source\TB2Hook.pas', + TB2ToolWindow in '..\Source\TB2ToolWindow.pas', + TB2MRU in '..\Source\TB2MRU.pas', + TB2Anim in '..\Source\TB2Anim.pas', + TB2MDI in '..\Source\TB2MDI.pas', + TB2Acc in '..\Source\TB2Acc.pas'; + +end. + diff --git a/official/2.1.6+2.1.beta1/Packages/tb2k_d7.drc b/official/2.1.6+2.1.beta1/Packages/tb2k_d7.drc new file mode 100644 index 0000000..c13138c --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2k_d7.drc @@ -0,0 +1,34 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +#define TB2Consts_STBToolbarIndexOutOfBounds 65520 +#define TB2Consts_STBToolbarItemReinserted 65521 +#define TB2Consts_STBViewerNotFound 65522 +#define TB2Consts_STBChevronItemMoreButtonsHint 65523 +#define TB2Consts_STBMRUListItemDefCaption 65524 +#define TB2Consts_STBMDIWindowItemDefCaption 65525 +#define TB2Consts_STBDockParentNotAllowed 65526 +#define TB2Consts_STBDockCannotChangePosition 65527 +#define TB2Consts_STBToolwinNameNotSet 65528 +#define TB2Consts_STBToolwinDockedToNameNotSet 65529 +STRINGTABLE +BEGIN + TB2Consts_STBToolbarIndexOutOfBounds, "Toolbar item index out of range" + TB2Consts_STBToolbarItemReinserted, "Toolbar item already inserted" + TB2Consts_STBViewerNotFound, "An item viewer associated the specified item could not be found" + TB2Consts_STBChevronItemMoreButtonsHint, "More Buttons|" + TB2Consts_STBMRUListItemDefCaption, "(MRU List)" + TB2Consts_STBMDIWindowItemDefCaption, "(Window List)" + TB2Consts_STBDockParentNotAllowed, "A TTBDock control cannot be placed inside a tool window or another TTBDock" + TB2Consts_STBDockCannotChangePosition, "Cannot change Position of a TTBDock if it already contains controls" + TB2Consts_STBToolwinNameNotSet, "Cannot save dockable window's position because Name property is not set" + TB2Consts_STBToolwinDockedToNameNotSet, "Cannot save dockable window's position because DockedTo's Name property not set" +END + diff --git a/official/2.1.6+2.1.beta1/Packages/tb2k_d7.res b/official/2.1.6+2.1.beta1/Packages/tb2k_d7.res new file mode 100644 index 0000000000000000000000000000000000000000..ec5f23341534b8ee6b279353ec3a3eb13fab40e8 GIT binary patch literal 1536 zcmZuw&ubGw7=4=r3{9yi2rXV3mePs`&63^(TQOD&YQ;*grP_8C+cdGz!6_Sdm_11y!L1 zeV&gKS?F^Jt4umM5XZ4nCj)K-0dm!9x|XQU33AJ=R=PkQ;C>kHw3dt_PC7wmuGI>| zEyD}+XQC*4)@t^76h#d`+%X&Su?h@tr2&+xOw;ZBaD2|{!35J$(M^R&b zn148>d)DNGBxo?;-<;(VaB4pCZyu+dM>6F{(X2{&KIs%QzK=pGAPQgx%_p;JH(bmVw%8P2?bxsHnJR47#3&sn9yjlyL^!nsnh>PR4^J|(;lT9Wc( zOL<4)FSvq)h#jNtY3YAxtx4|Q(>x;KvZy*w8G2!I*E*%1D5PAm%e_Y%zLgTo`; z)?an^EUUZkJpKLlWx6gAS>k}`5?_cPTIiQT zlP=+#Sy)384ZK7RA(lDrVw;g`*ug%9AC0EWuFCANj0M&p75R+jadjVisAH4*x9ob8 zY}<%u!)Y&xJ8guWCR4`}q zKcGJ}Ua7XuI;GnXFSyg1t#hDzO2sC&xNnbR1Fu+#Gpk)qW5}sVURSrU!3o$idQ9y; zqrGA8&5;Vhvy{HiYeu^t?ft6h%bvYtlQVD?R!yPnrfyf&;5LC-^G~oH*0^hz%Hg{h I8~>U64{#DF!T)H;{X347|28c09i@|9RL6T literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_cb4.bpk b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_cb4.bpk new file mode 100644 index 0000000..09ac25a --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_cb4.bpk @@ -0,0 +1,183 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.04.04 +# --------------------------------------------------------------------------- +PROJECT = tb2kdsgn_cb4.bpl +OBJFILES = ..\Source\TB2DsgnConverter.obj \ + ..\Source\TB2DsgnItemEditor.obj ..\Source\TB2Reg.obj \ + ..\Source\TB2DsgnConvertOptions.obj tb2kdsgn_cb4.obj +RESFILES = ..\Source\TB2Reg.dcr +RESDEPEN = $(RESFILES) ..\Source\TB2DsgnConverter.dfm ..\Source\TB2DsgnItemEditor.dfm \ + ..\Source\TB2DsgnConvertOptions.dfm +LIBFILES = +LIBRARIES = +SPARELIBS = Vcl40.lib +PACKAGES = vcl40.bpi dclstd40.bpi tb2k_cb4.bpi +DEFFILE = +# --------------------------------------------------------------------------- +PATHCPP = .; +PATHASM = .; +PATHPAS = .;..\Source +PATHRC = .; +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +USERDEFINES = +SYSDEFINES = _RTLDLL;NO_STRICT;USEPACKAGES +# --------------------------------------------------------------------------- +CFLAG1 = -I..\Source;$(BCB)\include;$(BCB)\include\vcl -Od -Hc -H=$(BCB)\lib\vcl40.csm \ + -w -Ve -r- -a8 -k -y -v -vi- -c -b- -w-par -w-inl -Vx -tWM \ + -D$(SYSDEFINES);$(USERDEFINES) +PFLAGS = -U..\Source;$(BCB)\Projects\Lib;$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -I..\Source;$(BCB)\include;$(BCB)\include\vcl -$YD -$W -$O- -v -JPHNE -M \ + -LUdclstd40 +RFLAGS = -i..\Source;$(BCB)\include;$(BCB)\include\vcl +AFLAGS = /i$(BCB)\include /i$(BCB)\include\vcl /mx /w2 /zd +LFLAGS = -L..\Source;$(BCB)\Projects\Lib;$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -D"Toolbar2000 Design Package (Jordan Russell)" -aa -Tpp -Gpd -x -Gn -Gl -Gi -v +# --------------------------------------------------------------------------- +ALLOBJ = c0pkg32.obj Memmgr.Lib $(PACKAGES) sysinit.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cp32mti.lib +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +InMemoryExe=0 +ShowInfoMsgs=0 + +!endif + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project file is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(CPP32) +CPP32 = cpp32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = ilink32 +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif + +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif + +!if $d(PATHRC) +.PATH.RC = $(PATHRC) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.cpp.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) $<, $@ + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) -fo$@ $< +# --------------------------------------------------------------------------- + diff --git a/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_cb4.cpp b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_cb4.cpp new file mode 100644 index 0000000..08b9d21 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_cb4.cpp @@ -0,0 +1,23 @@ +// $jrsoftware: tb2k/Packages/tb2kdsgn_cb4.cpp,v 1.4 2002/11/14 18:15:59 jr Exp $ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +USEPACKAGE("vcl40.bpi"); +USEFORMNS("..\Source\TB2DsgnConverter.pas", Tb2dsgnconverter, TBConverterForm); +USEFORMNS("..\Source\TB2DsgnItemEditor.pas", Tb2dsgnitemeditor, TBItemEditForm); +USEFORMNS("..\Source\TB2DsgnConvertOptions.pas", Tb2dsgnconvertoptions, TBConvertOptionsForm); +USEUNIT("..\Source\TB2Reg.pas"); +USERES("..\Source\TB2Reg.dcr"); +USEPACKAGE("dclstd40.bpi"); +USEPACKAGE("tb2k_cb4.bpi"); +//--------------------------------------------------------------------------- +#pragma package(smart_init) +//--------------------------------------------------------------------------- +// Package source. +//--------------------------------------------------------------------------- +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- + diff --git a/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_cb5.bpk b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_cb5.bpk new file mode 100644 index 0000000..2d09d57 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_cb5.bpk @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + + \ No newline at end of file diff --git a/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_cb5.cpp b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_cb5.cpp new file mode 100644 index 0000000..ba1bbd8 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_cb5.cpp @@ -0,0 +1,23 @@ +// $jrsoftware: tb2k/Packages/tb2kdsgn_cb5.cpp,v 1.4 2002/11/14 18:15:59 jr Exp $ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +USEPACKAGE("vcl50.bpi"); +USEFORMNS("..\Source\TB2DsgnConverter.pas", Tb2dsgnconverter, TBConverterForm); +USEFORMNS("..\Source\TB2DsgnItemEditor.pas", Tb2dsgnitemeditor, TBItemEditForm); +USEFORMNS("..\Source\TB2DsgnConvertOptions.pas", Tb2dsgnconvertoptions, TBConvertOptionsForm); +USEUNIT("..\Source\TB2Reg.pas"); +USERES("..\Source\TB2Reg.dcr"); +USEPACKAGE("dclstd50.bpi"); +USEPACKAGE("tb2k_cb5.bpi"); +//--------------------------------------------------------------------------- +#pragma package(smart_init) +//--------------------------------------------------------------------------- +// Package source. +//--------------------------------------------------------------------------- +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- + diff --git a/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_cb6.bpk b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_cb6.bpk new file mode 100644 index 0000000..70b36a4 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_cb6.bpk @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +Launcher= +UseLauncher=0 +DebugCWD= +HostApplication= +RemoteHost= +RemotePath= +RemoteLauncher= +RemoteCWD= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + +[Linker] +LibPrefix= +LibSuffix= +LibVersion= + + \ No newline at end of file diff --git a/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_cb6.cpp b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_cb6.cpp new file mode 100644 index 0000000..6fabfa6 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_cb6.cpp @@ -0,0 +1,18 @@ +// $jrsoftware: tb2k/Packages/tb2kdsgn_cb6.cpp,v 1.2 2002/11/14 18:07:19 jr Exp $ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +USEFORMNS("..\Source\TB2DsgnConverter.pas", Tb2dsgnconverter, TBConverterForm); +USEFORMNS("..\Source\TB2DsgnItemEditor.pas", Tb2dsgnitemeditor, TBItemEditForm); +USEFORMNS("..\Source\TB2DsgnConvertOptions.pas", Tb2dsgnconvertoptions, TBConvertOptionsForm); +//--------------------------------------------------------------------------- +#pragma package(smart_init) +//--------------------------------------------------------------------------- +// Package source. +//--------------------------------------------------------------------------- +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- + diff --git a/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d10.bdsproj b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d10.bdsproj new file mode 100644 index 0000000..c5ebc23 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d10.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + tb2kdsgn_d10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 1065353216 + Toolbar2000 Design Package (Jordan Russell) + + + + ..\Lib\D10 + + + ..\Lib\D10 + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d10.dpk b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d10.dpk new file mode 100644 index 0000000..941784b --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d10.dpk @@ -0,0 +1,42 @@ +package tb2kdsgn_d10; + +{$R *.res} +{$R '..\Source\TB2Reg.dcr'} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST ON} +{$MINENUMSIZE 1} +{$IMAGEBASE $3F800000} +{$DESCRIPTION 'Toolbar2000 Design Package (Jordan Russell)'} +{$DESIGNONLY} +{$IMPLICITBUILD ON} + +requires + vcl, + dclstd, + tb2k_d10; + +contains + TB2Reg in '..\Source\TB2Reg.pas', + TB2DsgnItemEditor in '..\Source\TB2DsgnItemEditor.pas' {TBToolbarEditForm}, + TB2DsgnConverter in '..\Source\TB2DsgnConverter.pas' {TBConverterForm}, + TB2DsgnConvertOptions in '..\Source\TB2DsgnConvertOptions.pas' {TBConvertOptionsForm}; + +end. + diff --git a/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d10.res b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d10.res new file mode 100644 index 0000000000000000000000000000000000000000..86c94e6ada7b3c85f6761b1ee234a9f34ef3c861 GIT binary patch literal 5056 zcmbW5&x;&Y5XWnifD(f4!IPI+L`3!=E9BmaF%VEA#@TDLXpF&R6XJUC)cc=I4kFSA z{{!hg%bp}hVRP_qjvmDJ`>A@>-7}euyEfF+`%$mH-*3IwZ-y~5+miKtn3_w^Pn$V^ zQ861nx4C)wN(Q~H#+K|o*@m~&(3=1I%Llk7>S*pvE7;Yjz^+ljNYba;|&8!P>=GYp<9J^QiRC`-*du(Wb zBJI+RemE@Tm2dSSKL$269_p-ia&WJ{$B|EYy#Bt1`fm?B(CB-l8nlXqgY!6fUOzP@ zr|Te|e4cZxgJWuLF8<`}dughP69?9a%ha4}r`jtX-7UCl^he&nV;_S<)Ya!2FlEJu zrr{t12%dXkNqpywX{@?Eb_MKs@29XRNI;2D%DxW zo|xv^jnf#kFIDZr^e=W==PW{#^6Ao{deqzuxId;ujOZ~3;otiwSzBXu3^t3 z&$C~D3=Umz@OQRR9+}nP>x>=u115dAI{rd2#Mbgv81-@e%IA6)a8SDwHm3Di`~F1x z)jhG~04Fd5o4f^Iah!WFIS0|E#)aohzS6onIG_;>-~Ytz3J0A}=DenTZ*cIo-Ves9 zp>qHmo5lV+rntk2He9_1!t%2yZsF;l)>iGc4jkU$0bBWEPmBKKP>uSjxhXIDsSodT z@EG|gFZa>|hHF!PaN};FzIxxlpPKT;87{i(!eu7T%H?}r^yeP=K2c}If`cyKd-3DW z_4ib`jDt-MZ?C~;z1O=EKN(!YbpFJR_c`u>(C=ph9O_Y*Jz5Z>`Zs7T9Mn$y@ay$^ z{gulxYxXwGq@TIGbG$~Hi*qk8?9|WMkNweF@MU18F;AQKZ>jcWAL86`f59r^Yh;+XfGU10gV*5=*FT)q#qz2B_Ik28(#vUlW{{>1m(1wXK3zHQ3+RoHfz^$cuqg(^F;eqz6WUMUE^m$ z9R1u2H_t9ue%}<_JcD5KB$svgjBysd-ql#|toxF$&>h1Qc)Vw6j~u{SeHg>my$i{SJtD^MnJV!{AK!ZgN9Q4bN2bs7?m1Qo zsLwc-c&GZ4_%7jWppm+9C(?(bpCye?f6Mv)ml~{r9)<=EoH5SYSxm8xsWZv%2MjL$ zd)R%{gxqI&lEaJ6!*jggJMcIz?<5?~hn@VA1Kzcrp$;C`m0CzQdy{!G?|FT$$5W3N zaydTsdE#>2dGSt*&wOX~r{!54?~lxS4gM|rOZH6mRCZMCP#!z)bEv-^up_gJ*i*BY zl>1d-%!E}5v+s{C_OF@Qj;!xrv5)P2yJ4TmKCqke`Aq-U;NJ}WpRu*&|7!3r$c7zU zF#m_6?>Cia!E%D)b;IaF{ zzPG~QEyw>z^LKm}whzS>Dx3Ct`1w98?Y5)H;{X347|28c09i@|9RL6T literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d5.dpk b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d5.dpk new file mode 100644 index 0000000..360fa4a --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d5.dpk @@ -0,0 +1,44 @@ +package tb2kdsgn_d5; + +{ $jrsoftware: tb2k/Packages/tb2kdsgn_d5.dpk,v 1.5 2003/04/17 19:40:26 jr Exp $ } + +{$R *.RES} +{$R '..\Source\TB2Reg.dcr'} +{$ALIGN ON} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST ON} +{$MINENUMSIZE 1} +{$IMAGEBASE $3F800000} +{$DESCRIPTION 'Toolbar2000 Design Package (Jordan Russell)'} +{$DESIGNONLY} +{$IMPLICITBUILD ON} + +requires + vcl50, + dclstd50, + tb2k_d5; + +contains + TB2Reg in '..\Source\TB2Reg.pas', + TB2DsgnItemEditor in '..\Source\TB2DsgnItemEditor.pas' {TBToolbarEditForm}, + TB2DsgnConverter in '..\Source\TB2DsgnConverter.pas' {TBConverterForm}, + TB2DsgnConvertOptions in '..\Source\TB2DsgnConvertOptions.pas' {TBConvertOptionsForm}; + +end. + diff --git a/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d5.res b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d5.res new file mode 100644 index 0000000000000000000000000000000000000000..36f26e234a8ac66a47e95cec6d496cf2f1442471 GIT binary patch literal 32 UcmZQzU|>)H;{X347|28c09i@|9RL6T literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d6.dpk b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d6.dpk new file mode 100644 index 0000000..ef8533d --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d6.dpk @@ -0,0 +1,44 @@ +package tb2kdsgn_d6; + +{ $jrsoftware: tb2k/Packages/tb2kdsgn_d6.dpk,v 1.5 2003/04/17 19:40:26 jr Exp $ } + +{$R *.res} +{$R '..\Source\TB2Reg.dcr'} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST ON} +{$MINENUMSIZE 1} +{$IMAGEBASE $3F800000} +{$DESCRIPTION 'Toolbar2000 Design Package (Jordan Russell)'} +{$DESIGNONLY} +{$IMPLICITBUILD ON} + +requires + vcl, + dclstd, + tb2k_d6; + +contains + TB2Reg in '..\Source\TB2Reg.pas', + TB2DsgnItemEditor in '..\Source\TB2DsgnItemEditor.pas' {TBToolbarEditForm}, + TB2DsgnConverter in '..\Source\TB2DsgnConverter.pas' {TBConverterForm}, + TB2DsgnConvertOptions in '..\Source\TB2DsgnConvertOptions.pas' {TBConvertOptionsForm}; + +end. + diff --git a/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d6.res b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d6.res new file mode 100644 index 0000000000000000000000000000000000000000..36f26e234a8ac66a47e95cec6d496cf2f1442471 GIT binary patch literal 32 UcmZQzU|>)H;{X347|28c09i@|9RL6T literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d7.cfg b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d7.cfg new file mode 100644 index 0000000..4d68122 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d7.cfg @@ -0,0 +1,40 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J+ +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$Y- +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$3F800000 +-N"..\Lib\D7" +-LE"c:\archivos de programa\borland\delphi7\Projects\Bpl" +-LN"c:\archivos de programa\borland\delphi7\Projects\Bpl" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d7.dof b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d7.dof new file mode 100644 index 0000000..c932eca --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d7.dof @@ -0,0 +1,473 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=1 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=0 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=1065353216 +ExeDescription=Toolbar2000 Design Package (Jordan Russell) +[Directories] +OutputDir= +UnitOutputDir=..\Lib\D7 +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;Hydra_Core_D7;Hydra_RO_D7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7;dxComnD7;dxsbD7;dxBarD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;cxEditorsVCLD7;cxLibraryVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxPSCoreD7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\DJclVcl70.bpl=JEDI Code Library VCL package for Delphi 7 +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\DJcl70.bpl=JEDI Code Library RTL package for Delphi 7 +C:\WINDOWS\system32\fqb70.bpl=FastQueryBuilder 1.01 +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxPSCoreD7.bpl=ExpressPrinting System (core 3.1) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxComnD7.bpl=ExpressCommonLibrary by Developer Express Inc. +c:\archivos de programa\borland\delphi7\Projects\Bpl\EasyResizeD7.bpl=EasyResize for Delphi 7 +c:\archivos de programa\borland\delphi7\Projects\Bpl\RodaxFrameD7.bpl=Frames Acana (D7) +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=..\Lib\D7 +[HistoryLists\hlBPLOutput] +Count=1 +Item0=..\Lib\D7 +[HistoryLists\hlDCPOutput] +Count=1 +Item0=..\Lib\D7 +[Exception Log] +EurekaLog Version=501 +Activate=1 +Activate Handle=1 +Save Log File=1 +Foreground Tab=0 +Freeze Activate=0 +Freeze Timeout=60 +Freeze Message=The application seems to be frozen. +SMTP From=eurekalog@email.com +SMTP Host= +SMTP Port=25 +SMTP UserID= +SMTP Password= +Append to Log=0 +Show TerminateBtn=1 +TerminateBtn Operation=1 +Errors Number=32 +Errors Terminate=3 +Email Address= +Email Object= +Email Send Options=0 +Output Path= +Encrypt Password= +AutoCloseDialogSecs=0 +WebSendMode=0 +SupportULR= +HTMLLayout Count=15 +HTMLLine0="%3Chtml%3E" +HTMLLine1=" %3Chead%3E" +HTMLLine2=" %3C/head%3E" +HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E" +HTMLLine4=" %3Ctable width="100%%" border="0"%3E" +HTMLLine5=" %3Ctr%3E" +HTMLLine6=" %3Ctd nowrap%3E" +HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E" +HTMLLine8=" %3C%%HTML_TAG%%%3E" +HTMLLine9=" %3C/font%3E" +HTMLLine10=" %3C/td%3E" +HTMLLine11=" %3C/tr%3E" +HTMLLine12=" %3C/table%3E" +HTMLLine13=" %3C/body%3E" +HTMLLine14="%3C/html%3E" +AutoCrashOperation=1 +AutoCrashNumber=10 +AutoCrashMinutes=1 +WebURL= +WebUserID= +WebPassword= +WebPort=0 +AttachedFiles= +Count=0 +EMail Message Line Count=0 +loNoDuplicateErrors=0 +loAppendReproduceText=0 +loDeleteLogAtVersionChange=0 +loAddComputerNameInLogFileName=0 +loSaveModulesSection=1 +loSaveCPUSection=1 +soAppStartDate=1 +soAppName=1 +soAppVersionNumber=1 +soAppParameters=1 +soAppCompilationDate=1 +soExcDate=1 +soExcAddress=1 +soExcModule=1 +soExcType=1 +soExcMessage=1 +soActCtlsFormClass=1 +soActCtlsFormText=1 +soActCtlsControlClass=1 +soActCtlsControlText=1 +soCmpName=1 +soCmpUser=1 +soCmpTotalMemory=1 +soCmpFreeMemory=1 +soCmpTotalDisk=1 +soCmpFreeDisk=1 +soCmpSysUpTime=1 +soCmpProcessor=1 +soCmpDisplayMode=1 +soOSType=1 +soOSBuildN=1 +soOSUpdate=1 +soOSLanguage=1 +soNetIP=1 +soNetSubmask=1 +soNetGateway=1 +soNetDNS1=1 +soNetDNS2=1 +soNetDHCP=1 +sndShowSendDialog=1 +sndShowSuccessFailureMsg=0 +sndSendEntireLog=0 +sndSendXMLLogCopy=0 +sndSendScreenshot=1 +sndUseOnlyActiveWindow=0 +sndSendLastHTMLPage=1 +sndSendInSeparatedThread=0 +sndAddDateInFileName=0 +sndCompressAllFiles=0 +edoShowExceptionDialog=1 +edoSendEmailChecked=1 +edoAttachScreenshotChecked=1 +edoShowCopyToClipOption=1 +edoShowDetailsButton=1 +edoShowInDetailedMode=0 +edoShowInTopMostMode=0 +edoUseEurekaLogLookAndFeel=0 +csoShowDLLs=1 +csoShowBPLs=1 +csoShowBorlandThreads=1 +csoShowWindowsThreads=1 +csoShowProcedureOffset=0 +boActivateCrashDetection=0 +boPauseBorlandThreads=0 +boDoNotPauseMainThread=0 +boPauseWindowsThreads=0 +boUseMainModuleOptions=1 +boCopyLogInCaseOfError=1 +boSaveCompressedCopyInCaseOfError=0 +Count mtInformationMsgCaption=1 +mtInformationMsgCaption0="Information." +Count mtQuestionMsgCaption=1 +mtQuestionMsgCaption0="Question." +Count mtDialog_Caption=1 +mtDialog_Caption0="Error." +Count mtDialog_ErrorMsgCaption=2 +mtDialog_ErrorMsgCaption0="An error has occurred during program execution." +mtDialog_ErrorMsgCaption1="Please read the following information for further details." +Count mtDialog_GeneralCaption=1 +mtDialog_GeneralCaption0="General" +Count mtDialog_GeneralHeader=1 +mtDialog_GeneralHeader0="General Information" +Count mtDialog_CallStackCaption=1 +mtDialog_CallStackCaption0="Call Stack" +Count mtDialog_CallStackHeader=1 +mtDialog_CallStackHeader0="Call Stack Information" +Count mtDialog_ModulesCaption=1 +mtDialog_ModulesCaption0="Modules" +Count mtDialog_ModulesHeader=1 +mtDialog_ModulesHeader0="Modules Information" +Count mtDialog_CPUCaption=1 +mtDialog_CPUCaption0="CPU" +Count mtDialog_CPUHeader=1 +mtDialog_CPUHeader0="CPU Information" +Count mtDialog_CustomDataCaption=1 +mtDialog_CustomDataCaption0="Other" +Count mtDialog_CustomDataHeader=1 +mtDialog_CustomDataHeader0="Other Information" +Count mtDialog_OKButtonCaption=1 +mtDialog_OKButtonCaption0="&OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="&Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="&Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="&Details" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="&Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="&Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="&Copy to Clipboard" +Count mtDialog_SupportMessage=1 +mtDialog_SupportMessage0="Go to the Support Page" +Count mtLog_AppHeader=1 +mtLog_AppHeader0="Application" +Count mtLog_AppStartDate=1 +mtLog_AppStartDate0="Start Date" +Count mtLog_AppName=1 +mtLog_AppName0="Name/Description" +Count mtLog_AppVersionNumber=1 +mtLog_AppVersionNumber0="Version Number" +Count mtLog_AppParameters=1 +mtLog_AppParameters0="Parameters" +Count mtLog_AppCompilationDate=1 +mtLog_AppCompilationDate0="Compilation Date" +Count mtLog_ExcHeader=1 +mtLog_ExcHeader0="Exception" +Count mtLog_ExcDate=1 +mtLog_ExcDate0="Date" +Count mtLog_ExcAddress=1 +mtLog_ExcAddress0="Address" +Count mtLog_ExcModule=1 +mtLog_ExcModule0="Module" +Count mtLog_ExcType=1 +mtLog_ExcType0="Type" +Count mtLog_ExcMessage=1 +mtLog_ExcMessage0="Message" +Count mtLog_ActCtrlsHeader=1 +mtLog_ActCtrlsHeader0="Active Controls" +Count mtLog_ActCtrlsFormClass=1 +mtLog_ActCtrlsFormClass0="Form Class" +Count mtLog_ActCtrlsFormText=1 +mtLog_ActCtrlsFormText0="Form Text" +Count mtLog_ActCtrlsControlClass=1 +mtLog_ActCtrlsControlClass0="Control Class" +Count mtLog_ActCtrlsControlText=1 +mtLog_ActCtrlsControlText0="Control Text" +Count mtLog_CmpHeader=1 +mtLog_CmpHeader0="Computer" +Count mtLog_CmpName=1 +mtLog_CmpName0="Name" +Count mtLog_CmpUser=1 +mtLog_CmpUser0="User" +Count mtLog_CmpTotalMemory=1 +mtLog_CmpTotalMemory0="Total Memory" +Count mtLog_CmpFreeMemory=1 +mtLog_CmpFreeMemory0="Free Memory" +Count mtLog_CmpTotalDisk=1 +mtLog_CmpTotalDisk0="Total Disk" +Count mtLog_CmpFreeDisk=1 +mtLog_CmpFreeDisk0="Free Disk" +Count mtLog_CmpSystemUpTime=1 +mtLog_CmpSystemUpTime0="System Up Time" +Count mtLog_CmpProcessor=1 +mtLog_CmpProcessor0="Processor" +Count mtLog_CmpDisplayMode=1 +mtLog_CmpDisplayMode0="Display Mode" +Count mtLog_OSHeader=1 +mtLog_OSHeader0="Operating System" +Count mtLog_OSType=1 +mtLog_OSType0="Type" +Count mtLog_OSBuildN=1 +mtLog_OSBuildN0="Build #" +Count mtLog_OSUpdate=1 +mtLog_OSUpdate0="Update" +Count mtLog_OSLanguage=1 +mtLog_OSLanguage0="Language" +Count mtLog_NetHeader=1 +mtLog_NetHeader0="Network" +Count mtLog_NetIP=1 +mtLog_NetIP0="IP Address" +Count mtLog_NetSubmask=1 +mtLog_NetSubmask0="Submask" +Count mtLog_NetGateway=1 +mtLog_NetGateway0="Gateway" +Count mtLog_NetDNS1=1 +mtLog_NetDNS10="DNS 1" +Count mtLog_NetDNS2=1 +mtLog_NetDNS20="DNS 2" +Count mtLog_NetDHCP=1 +mtLog_NetDHCP0="DHCP" +Count mtLog_CustInfoHeader=1 +mtLog_CustInfoHeader0="Custom Information" +Count mtCallStack_Address=1 +mtCallStack_Address0="Address" +Count mtCallStack_Name=1 +mtCallStack_Name0="Module" +Count mtCallStack_Unit=1 +mtCallStack_Unit0="Unit" +Count mtCallStack_Class=1 +mtCallStack_Class0="Class" +Count mtCallStack_Procedure=1 +mtCallStack_Procedure0="Procedure/Method" +Count mtCallStack_Line=1 +mtCallStack_Line0="Line" +Count mtCallStack_MainThread=1 +mtCallStack_MainThread0="Main" +Count mtCallStack_ExceptionThread=1 +mtCallStack_ExceptionThread0="Exception Thread" +Count mtCallStack_RunningThread=1 +mtCallStack_RunningThread0="Running Thread" +Count mtCallStack_CallingThread=1 +mtCallStack_CallingThread0="Calling Thread" +Count mtCallStack_ThreadID=1 +mtCallStack_ThreadID0="ID" +Count mtCallStack_ThreadPriority=1 +mtCallStack_ThreadPriority0="Priority" +Count mtCallStack_ThreadClass=1 +mtCallStack_ThreadClass0="Class" +Count mtSendDialog_Caption=1 +mtSendDialog_Caption0="Send." +Count mtSendDialog_Message=1 +mtSendDialog_Message0="Message" +Count mtSendDialog_Resolving=1 +mtSendDialog_Resolving0="Resolving DNS..." +Count mtSendDialog_Connecting=1 +mtSendDialog_Connecting0="Connecting with server..." +Count mtSendDialog_Connected=1 +mtSendDialog_Connected0="Connected with server." +Count mtSendDialog_Sending=1 +mtSendDialog_Sending0="Sending message..." +Count mtReproduceDialog_Caption=1 +mtReproduceDialog_Caption0="Request" +Count mtReproduceDialog_Request=1 +mtReproduceDialog_Request0="Please describe the steps to reproduce the error:" +Count mtReproduceDialog_OKButtonCaption=1 +mtReproduceDialog_OKButtonCaption0="&OK" +Count mtModules_Handle=1 +mtModules_Handle0="Handle" +Count mtModules_Name=1 +mtModules_Name0="Name" +Count mtModules_Description=1 +mtModules_Description0="Description" +Count mtModules_Version=1 +mtModules_Version0="Version" +Count mtModules_Size=1 +mtModules_Size0="Size" +Count mtModules_LastModified=1 +mtModules_LastModified0="Modified" +Count mtModules_Path=1 +mtModules_Path0="Path" +Count mtCPU_Registers=1 +mtCPU_Registers0="Registers" +Count mtCPU_Stack=1 +mtCPU_Stack0="Stack" +Count mtCPU_MemoryDump=1 +mtCPU_MemoryDump0="Memory Dump" +Count mtSend_SuccessMsg=1 +mtSend_SuccessMsg0="The message was sent successfully." +Count mtSend_FailureMsg=1 +mtSend_FailureMsg0="Sorry, sending the message didn't work." + + diff --git a/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d7.dpk b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d7.dpk new file mode 100644 index 0000000..017d0e2 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d7.dpk @@ -0,0 +1,42 @@ +package tb2kdsgn_d7; + +{$R *.res} +{$R '..\Source\TB2Reg.dcr'} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST ON} +{$MINENUMSIZE 1} +{$IMAGEBASE $3F800000} +{$DESCRIPTION 'Toolbar2000 Design Package (Jordan Russell)'} +{$DESIGNONLY} +{$IMPLICITBUILD ON} + +requires + vcl, + dclstd, + tb2k_d7; + +contains + TB2Reg in '..\Source\TB2Reg.pas', + TB2DsgnItemEditor in '..\Source\TB2DsgnItemEditor.pas' {TBToolbarEditForm}, + TB2DsgnConverter in '..\Source\TB2DsgnConverter.pas' {TBConverterForm}, + TB2DsgnConvertOptions in '..\Source\TB2DsgnConvertOptions.pas' {TBConvertOptionsForm}; + +end. + diff --git a/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d7.drc b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d7.drc new file mode 100644 index 0000000..a5d5271 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d7.drc @@ -0,0 +1,14 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d7.res b/official/2.1.6+2.1.beta1/Packages/tb2kdsgn_d7.res new file mode 100644 index 0000000000000000000000000000000000000000..ec5f23341534b8ee6b279353ec3a3eb13fab40e8 GIT binary patch literal 1536 zcmZuw&ubGw7=4=r3{9yi2rXV3mePs`&63^(TQOD&YQ;*grP_8C+cdGz!6_Sdm_11y!L1 zeV&gKS?F^Jt4umM5XZ4nCj)K-0dm!9x|XQU33AJ=R=PkQ;C>kHw3dt_PC7wmuGI>| zEyD}+XQC*4)@t^76h#d`+%X&Su?h@tr2&+xOw;ZBaD2|{!35J$(M^R&b zn148>d)DNGBxo?;-<;(VaB4pCZyu+dM>6F{(X2{&KIs%QzK=pGAPQgx%_p;JH(bmVw%8P2?bxsHnJR47#3&sn9yjlyL^!nsnh>PR4^J|(;lT9Wc( zOL<4)FSvq)h#jNtY3YAxtx4|Q(>x;KvZy*w8G2!I*E*%1D5PAm%e_Y%zLgTo`; z)?an^EUUZkJpKLlWx6gAS>k}`5?_cPTIiQT zlP=+#Sy)384ZK7RA(lDrVw;g`*ug%9AC0EWuFCANj0M&p75R+jadjVisAH4*x9ob8 zY}<%u!)Y&xJ8guWCR4`}q zKcGJ}Ua7XuI;GnXFSyg1t#hDzO2sC&xNnbR1Fu+#Gpk)qW5}sVURSrU!3o$idQ9y; zqrGA8&5;Vhvy{HiYeu^t?ft6h%bvYtlQVD?R!yPnrfyf&;5LC-^G~oH*0^hz%Hg{h I8~>U64{#DF!T)H;{X347|28c09i@|9RL6T literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/README.txt b/official/2.1.6+2.1.beta1/README.txt new file mode 100644 index 0000000..c8c520e --- /dev/null +++ b/official/2.1.6+2.1.beta1/README.txt @@ -0,0 +1,22 @@ +=========================================================================== + Toolbar2000 README +=========================================================================== + +Thank you for downloading Toolbar2000. + +For details on installing and using Toolbar2000, please refer to the +Toolbar2000 help file - tb2k.chm. To open it, double-click it in Windows +Explorer. + +This file is in HTML Help format. If you are using an older version of +Windows that does not come with HTML Help, it can be downloaded at: + + http://msdn.microsoft.com/library/en-us/htmlhelp/html/hwMicrosoftHTMLHelpDownloads.asp + +You will also need Internet Explorer 4.0 or later (5.0 is preferred), +downloadable from: + + http://www.microsoft.com/ie/ + + +- Jordan Russell (www.jrsoftware.org) diff --git a/official/2.1.6+2.1.beta1/Source/.cvsignore b/official/2.1.6+2.1.beta1/Source/.cvsignore new file mode 100644 index 0000000..d0e06ff --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/.cvsignore @@ -0,0 +1,4 @@ +*.dcu +*.obj +*.hpp +_* diff --git a/official/2.1.6+2.1.beta1/Source/Readme.txt b/official/2.1.6+2.1.beta1/Source/Readme.txt new file mode 100644 index 0000000..489d9b0 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/Readme.txt @@ -0,0 +1,2 @@ +This directory contains files required for patching Toolbar 2000 +sources to make them compatible with TBX. \ No newline at end of file diff --git a/official/2.1.6+2.1.beta1/Source/TB2Acc.pas b/official/2.1.6+2.1.beta1/Source/TB2Acc.pas new file mode 100644 index 0000000..15ae9b2 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2Acc.pas @@ -0,0 +1,1224 @@ +unit TB2Acc; + +{ + Toolbar2000 + Copyright (C) 1998-2005 by Jordan Russell + All rights reserved. + + The contents of this file are subject to the "Toolbar2000 License"; you may + not use or distribute this file except in compliance with the + "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in + TB2k-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + + Alternatively, the contents of this file may be used under the terms of the + GNU General Public License (the "GPL"), in which case the provisions of the + GPL are applicable instead of those in the "Toolbar2000 License". A copy of + the GPL may be found in GPL-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + If you wish to allow use of your version of this file only under the terms of + the GPL and not to allow others to use your version of this file under the + "Toolbar2000 License", indicate your decision by deleting the provisions + above and replace them with the notice and other provisions required by the + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + + $jrsoftware: tb2k/Source/TB2Acc.pas,v 1.7 2005/01/06 03:56:50 jr Exp $ + + This unit is used internally to implement the IAccessible interface on + TTBView and TTBItemViewer for Microsoft Active Accessibility support. +} + +interface + +{$I TB2Ver.inc} + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + TB2Item; + +type + { Our declaration for IAccessible } + ITBAccessible = interface(IDispatch) + ['{618736E0-3C3D-11CF-810C-00AA00389B71}'] + function get_accParent(out ppdispParent: IDispatch): HRESULT; stdcall; + function get_accChildCount(out pcountChildren: Integer): HRESULT; stdcall; + function get_accChild(varChild: OleVariant; out ppdispChild: IDispatch): HRESULT; stdcall; + function get_accName(varChild: OleVariant; out pszName: WideString): HRESULT; stdcall; + function get_accValue(varChild: OleVariant; out pszValue: WideString): HRESULT; stdcall; + function get_accDescription(varChild: OleVariant; out pszDescription: WideString): HRESULT; stdcall; + function get_accRole(varChild: OleVariant; out pvarRole: OleVariant): HRESULT; stdcall; + function get_accState(varChild: OleVariant; out pvarState: OleVariant): HRESULT; stdcall; + function get_accHelp(varChild: OleVariant; out pszHelp: WideString): HRESULT; stdcall; + function get_accHelpTopic(out pszHelpFile: WideString; varChild: OleVariant; out pidTopic: Integer): HRESULT; stdcall; + function get_accKeyboardShortcut(varChild: OleVariant; out pszKeyboardShortcut: WideString): HRESULT; stdcall; + function get_accFocus(out pvarID: OleVariant): HRESULT; stdcall; + function get_accSelection(out pvarChildren: OleVariant): HRESULT; stdcall; + function get_accDefaultAction(varChild: OleVariant; out pszDefaultAction: WideString): HRESULT; stdcall; + function accSelect(flagsSelect: Integer; varChild: OleVariant): HRESULT; stdcall; + function accLocation(out pxLeft: Integer; out pyTop: Integer; out pcxWidth: Integer; + out pcyHeight: Integer; varChild: OleVariant): HRESULT; stdcall; + function accNavigate(navDir: Integer; varStart: OleVariant; out pvarEnd: OleVariant): HRESULT; stdcall; + function accHitTest(xLeft: Integer; yTop: Integer; out pvarID: OleVariant): HRESULT; stdcall; + function accDoDefaultAction(varChild: OleVariant): HRESULT; stdcall; + function put_accName(varChild: OleVariant; const pszName: WideString): HRESULT; stdcall; + function put_accValue(varChild: OleVariant; const pszValue: WideString): HRESULT; stdcall; + end; + + TTBCustomAccObject = class(TTBBaseAccObject, IUnknown, IDispatch) + private + FPrevious, FNext: TTBCustomAccObject; + public + constructor Create; + destructor Destroy; override; + end; + + TTBViewAccObject = class(TTBCustomAccObject, IUnknown, IDispatch, ITBAccessible) + private + FView: TTBView; + function Check(const varChild: OleVariant; var ErrorCode: HRESULT): Boolean; + { ITBAccessible } + function accDoDefaultAction(varChild: OleVariant): HRESULT; stdcall; + function accHitTest(xLeft: Integer; yTop: Integer; out pvarID: OleVariant): HRESULT; stdcall; + function accLocation(out pxLeft: Integer; out pyTop: Integer; out pcxWidth: Integer; + out pcyHeight: Integer; varChild: OleVariant): HRESULT; stdcall; + function accNavigate(navDir: Integer; varStart: OleVariant; out pvarEnd: OleVariant): HRESULT; stdcall; + function accSelect(flagsSelect: Integer; varChild: OleVariant): HRESULT; stdcall; + function get_accChild(varChild: OleVariant; out ppdispChild: IDispatch): HRESULT; stdcall; + function get_accChildCount(out pcountChildren: Integer): HRESULT; stdcall; + function get_accDefaultAction(varChild: OleVariant; out pszDefaultAction: WideString): HRESULT; stdcall; + function get_accDescription(varChild: OleVariant; out pszDescription: WideString): HRESULT; stdcall; + function get_accFocus(out pvarID: OleVariant): HRESULT; stdcall; + function get_accHelp(varChild: OleVariant; out pszHelp: WideString): HRESULT; stdcall; + function get_accHelpTopic(out pszHelpFile: WideString; varChild: OleVariant; out pidTopic: Integer): HRESULT; stdcall; + function get_accKeyboardShortcut(varChild: OleVariant; out pszKeyboardShortcut: WideString): HRESULT; stdcall; + function get_accName(varChild: OleVariant; out pszName: WideString): HRESULT; stdcall; + function get_accParent(out ppdispParent: IDispatch): HRESULT; stdcall; + function get_accRole(varChild: OleVariant; out pvarRole: OleVariant): HRESULT; stdcall; + function get_accSelection(out pvarChildren: OleVariant): HRESULT; stdcall; + function get_accState(varChild: OleVariant; out pvarState: OleVariant): HRESULT; stdcall; + function get_accValue(varChild: OleVariant; out pszValue: WideString): HRESULT; stdcall; + function put_accName(varChild: OleVariant; const pszName: WideString): HRESULT; stdcall; + function put_accValue(varChild: OleVariant; const pszValue: WideString): HRESULT; stdcall; + public + constructor Create(AView: TTBView); + destructor Destroy; override; + procedure ClientIsDestroying; override; + end; + + TTBItemViewerAccObject = class(TTBCustomAccObject, IUnknown, IDispatch, ITBAccessible) + private + FViewer: TTBItemViewer; + function Check(const varChild: OleVariant; var ErrorCode: HRESULT): Boolean; + function IsActionable: Boolean; + function IsAvailable: Boolean; + function IsFocusable: Boolean; + { ITBAccessible } + function accDoDefaultAction(varChild: OleVariant): HRESULT; stdcall; + function accHitTest(xLeft: Integer; yTop: Integer; out pvarID: OleVariant): HRESULT; stdcall; + function accLocation(out pxLeft: Integer; out pyTop: Integer; out pcxWidth: Integer; + out pcyHeight: Integer; varChild: OleVariant): HRESULT; stdcall; + function accNavigate(navDir: Integer; varStart: OleVariant; out pvarEnd: OleVariant): HRESULT; stdcall; + function accSelect(flagsSelect: Integer; varChild: OleVariant): HRESULT; stdcall; + function get_accChild(varChild: OleVariant; out ppdispChild: IDispatch): HRESULT; stdcall; + function get_accChildCount(out pcountChildren: Integer): HRESULT; stdcall; + function get_accDefaultAction(varChild: OleVariant; out pszDefaultAction: WideString): HRESULT; stdcall; + function get_accDescription(varChild: OleVariant; out pszDescription: WideString): HRESULT; stdcall; + function get_accFocus(out pvarID: OleVariant): HRESULT; stdcall; + function get_accHelp(varChild: OleVariant; out pszHelp: WideString): HRESULT; stdcall; + function get_accHelpTopic(out pszHelpFile: WideString; varChild: OleVariant; out pidTopic: Integer): HRESULT; stdcall; + function get_accKeyboardShortcut(varChild: OleVariant; out pszKeyboardShortcut: WideString): HRESULT; stdcall; + function get_accName(varChild: OleVariant; out pszName: WideString): HRESULT; stdcall; + function get_accParent(out ppdispParent: IDispatch): HRESULT; stdcall; + function get_accRole(varChild: OleVariant; out pvarRole: OleVariant): HRESULT; stdcall; + function get_accSelection(out pvarChildren: OleVariant): HRESULT; stdcall; + function get_accState(varChild: OleVariant; out pvarState: OleVariant): HRESULT; stdcall; + function get_accValue(varChild: OleVariant; out pszValue: WideString): HRESULT; stdcall; + function put_accName(varChild: OleVariant; const pszName: WideString): HRESULT; stdcall; + function put_accValue(varChild: OleVariant; const pszValue: WideString): HRESULT; stdcall; + public + constructor Create(AViewer: TTBItemViewer); + destructor Destroy; override; + procedure ClientIsDestroying; override; + procedure HandleAccSelect(const AExecute: Boolean); + end; + +procedure CallNotifyWinEvent(event: DWORD; hwnd: HWND; idObject: DWORD; + idChild: Longint); +function InitializeOleAcc: Boolean; + +var + LresultFromObjectFunc: function(const riid: TGUID; wParam: WPARAM; + pUnk: IUnknown): LRESULT; stdcall; + AccessibleObjectFromWindowFunc: function(hwnd: HWND; dwId: DWORD; + const riid: TGUID; out ppvObject: Pointer): HRESULT; stdcall; + + { For debugging purposes only: } + ViewAccObjectInstances: Integer = 0; + ItemViewerAccObjectInstances: Integer = 0; + +implementation + +uses + {$IFDEF JR_D6} Variants, {$ENDIF} ActiveX, Menus, TB2Common; + +const + { Constants from OleAcc.h } + ROLE_SYSTEM_MENUBAR = $2; + ROLE_SYSTEM_CLIENT = $a; + ROLE_SYSTEM_MENUPOPUP = $b; + ROLE_SYSTEM_MENUITEM = $c; + ROLE_SYSTEM_SEPARATOR = $15; + ROLE_SYSTEM_TOOLBAR = $16; + ROLE_SYSTEM_PUSHBUTTON = $2b; + ROLE_SYSTEM_BUTTONMENU = $39; + + STATE_SYSTEM_HASPOPUP = $40000000; + + NAVDIR_UP = 1; + NAVDIR_DOWN = 2; + NAVDIR_LEFT = 3; + NAVDIR_RIGHT = 4; + NAVDIR_NEXT = 5; + NAVDIR_PREVIOUS = 6; + NAVDIR_FIRSTCHILD = 7; + NAVDIR_LASTCHILD = 8; + + SELFLAG_TAKEFOCUS = 1; + +type + TControlAccess = class(TControl); + TTBViewAccess = class(TTBView); + TTBCustomItemAccess = class(TTBCustomItem); + TTBItemViewerAccess = class(TTBItemViewer); + +var + LastAccObject: TTBCustomAccObject; { last object in the linked list } + LastAccObjectCritSect: TRTLCriticalSection; + + NotifyWinEventInited: BOOL; + NotifyWinEventFunc: procedure(event: DWORD; hwnd: HWND; idObject: DWORD; + idChild: Longint); stdcall; + +procedure CallNotifyWinEvent(event: DWORD; hwnd: HWND; idObject: DWORD; + idChild: Longint); +begin + if not NotifyWinEventInited then begin + NotifyWinEventFunc := GetProcAddress(GetModuleHandle(user32), 'NotifyWinEvent'); + InterlockedExchange(Integer(NotifyWinEventInited), Ord(True)); + end; + if Assigned(NotifyWinEventFunc) then + NotifyWinEventFunc(event, hwnd, idObject, idChild); +end; + +var + OleAccInited: BOOL; + OleAccAvailable: BOOL; + +function InitializeOleAcc: Boolean; +var + M: HMODULE; +begin + if not OleAccInited then begin + M := {$IFDEF JR_D5} SafeLoadLibrary {$ELSE} LoadLibrary {$ENDIF} ('oleacc.dll'); + if M <> 0 then begin + LresultFromObjectFunc := GetProcAddress(M, 'LresultFromObject'); + AccessibleObjectFromWindowFunc := GetProcAddress(M, 'AccessibleObjectFromWindow'); + if Assigned(LresultFromObjectFunc) and + Assigned(AccessibleObjectFromWindowFunc) then + OleAccAvailable := True; + end; + InterlockedExchange(Integer(OleAccInited), Ord(True)); + end; + Result := OleAccAvailable; +end; + +function AccObjectFromWindow(const Wnd: HWND; out ADisp: IDispatch): Boolean; +var + P: Pointer; +begin + if Assigned(AccessibleObjectFromWindowFunc) and + (AccessibleObjectFromWindowFunc(Wnd, OBJID_WINDOW, IDispatch, P) = S_OK) then begin + ADisp := IDispatch(P); + IDispatch(P)._Release; + Result := True; + end + else + Result := False; +end; + +procedure DisconnectAccObjects; +{ This procedure calls CoDisconnectObject() on all acc. objects still + allocated. This is needed to prevent potential AV's when TB2k is compiled + into a DLL, since a DLL may be freed by the application while an MSAA + client still holds acc. object references. } +var + Obj, PrevObj: TTBCustomAccObject; +begin + Obj := LastAccObject; + while Assigned(Obj) do begin + { Make a copy of Obj.FPrevious since CoDisconnectObject may cause Obj + to be freed } + PrevObj := Obj.FPrevious; + { CoDisconnectObject should cause remote MSAA clients to release all + references to the object, thus destroying it (assuming the local + application doesn't have references of its own). } + CoDisconnectObject(Obj, 0); + Obj := PrevObj; + end; +end; + +function GetAltKeyName: String; +{ This silly function is needed since ShortCutToText(VK_MENU) fails on Delphi + and C++Builder versions <= 4 } +var + ScanCode: UINT; + KeyName: array[0..255] of Char; +begin + ScanCode := MapVirtualKey(VK_MENU, 0) shl 16; + if (ScanCode <> 0) and + (GetKeyNameText(ScanCode, KeyName, SizeOf(KeyName)) > 0) then + Result := KeyName + else + Result := 'Alt'; { shouldn't get here, but just in case... } +end; + +{ TTBCustomAccObject } + +constructor TTBCustomAccObject.Create; +begin + inherited Create; + { Add Self to linked list of objects } + EnterCriticalSection(LastAccObjectCritSect); + try + FPrevious := LastAccObject; + if Assigned(FPrevious) then + FPrevious.FNext := Self; + LastAccObject := Self; + finally + LeaveCriticalSection(LastAccObjectCritSect); + end; +end; + +destructor TTBCustomAccObject.Destroy; +begin + { Remove Self from linked list of objects } + EnterCriticalSection(LastAccObjectCritSect); + try + if LastAccObject = Self then + LastAccObject := FPrevious; + if Assigned(FPrevious) then + FPrevious.FNext := FNext; + if Assigned(FNext) then + FNext.FPrevious := FPrevious; + finally + LeaveCriticalSection(LastAccObjectCritSect); + end; + inherited; +end; + +{ TTBViewAccObject } + +constructor TTBViewAccObject.Create(AView: TTBView); +begin + inherited Create; + FView := AView; + InterlockedIncrement(ViewAccObjectInstances); +end; + +destructor TTBViewAccObject.Destroy; +begin + InterlockedDecrement(ViewAccObjectInstances); + if Assigned(FView) then begin + TTBViewAccess(FView).FAccObjectInstance := nil; + FView := nil; + end; + inherited; +end; + +procedure TTBViewAccObject.ClientIsDestroying; +begin + FView := nil; +end; + +function TTBViewAccObject.Check(const varChild: OleVariant; + var ErrorCode: HRESULT): Boolean; +begin + if FView = nil then begin + ErrorCode := E_FAIL; + Result := False; + end + else if (VarType(varChild) <> varInteger) or (varChild <> CHILDID_SELF) then begin + ErrorCode := E_INVALIDARG; + Result := False; + end + else + Result := True; +end; + +function TTBViewAccObject.accDoDefaultAction(varChild: OleVariant): HRESULT; +begin + Result := S_FALSE; +end; + +function TTBViewAccObject.accHitTest(xLeft, yTop: Integer; + out pvarID: OleVariant): HRESULT; +var + ViewWnd, W: HWND; + R: TRect; + P: TPoint; + D: IDispatch; + V: TTBItemViewer; +begin + try + if FView = nil then begin + Result := E_FAIL; + Exit; + end; + ViewWnd := FView.Window.Handle; + GetWindowRect(ViewWnd, R); + P.X := xLeft; + P.Y := yTop; + if PtInRect(R, P) then begin + P := FView.Window.ScreenToClient(P); + W := ChildWindowFromPointEx(ViewWnd, P, CWP_SKIPINVISIBLE); + if (W <> 0) and (W <> ViewWnd) then begin + { Point is inside a child window (most likely belonging to a + TTBControlItem) } + if AccObjectFromWindow(W, D) then begin + pvarID := D; + Result := S_OK; + end + else + Result := E_UNEXPECTED; + end + else begin + V := FView.ViewerFromPoint(P); + if Assigned(V) then + pvarID := V.GetAccObject + else + pvarID := CHILDID_SELF; + Result := S_OK; + end; + end + else + Result := S_FALSE; + except + Result := E_UNEXPECTED; + end; +end; + +function TTBViewAccObject.accLocation(out pxLeft, pyTop, pcxWidth, + pcyHeight: Integer; varChild: OleVariant): HRESULT; +var + R: TRect; +begin + try + if not Check(varChild, Result) then + Exit; + GetWindowRect(FView.Window.Handle, R); + pxLeft := R.Left; + pyTop := R.Top; + pcxWidth := R.Right - R.Left; + pcyHeight := R.Bottom - R.Top; + Result := S_OK; + except + Result := E_UNEXPECTED; + end; +end; + +function TTBViewAccObject.accNavigate(navDir: Integer; varStart: OleVariant; + out pvarEnd: OleVariant): HRESULT; +var + I: Integer; +begin + try + if not Check(varStart, Result) then + Exit; + Result := S_FALSE; + case navDir of + NAVDIR_FIRSTCHILD: begin + for I := 0 to FView.ViewerCount-1 do + if FView.Viewers[I].IsAccessible then begin + pvarEnd := FView.Viewers[I].GetAccObject; + Result := S_OK; + Break; + end; + end; + NAVDIR_LASTCHILD: begin + for I := FView.ViewerCount-1 downto 0 do + if FView.Viewers[I].IsAccessible then begin + pvarEnd := FView.Viewers[I].GetAccObject; + Result := S_OK; + Break; + end; + end; + end; + except + Result := E_UNEXPECTED; + end; +end; + +function TTBViewAccObject.accSelect(flagsSelect: Integer; + varChild: OleVariant): HRESULT; +begin + Result := DISP_E_MEMBERNOTFOUND; +end; + +function TTBViewAccObject.get_accChild(varChild: OleVariant; + out ppdispChild: IDispatch): HRESULT; +var + I, J: Integer; + Viewer: TTBItemViewer; + Ctl: TControl; +begin + try + if FView = nil then begin + Result := E_FAIL; + Exit; + end; + if VarType(varChild) <> varInteger then begin + Result := E_INVALIDARG; + Exit; + end; + I := varChild; + if I = CHILDID_SELF then begin + ppdispChild := Self; + Result := S_OK; + end + else begin + { Convert a one-based child index (I) into a real viewer index (J) } + J := 0; + while J < FView.ViewerCount do begin + if FView.Viewers[J].IsAccessible then begin + if I = 1 then Break; + Dec(I); + end; + Inc(J); + end; + if J >= FView.ViewerCount then begin + { 'I' was either negative or too high } + Result := E_INVALIDARG; + Exit; + end; + Viewer := FView.Viewers[J]; + if Viewer.Item is TTBControlItem then begin + { For windowed controls, return the window's accessible object instead + of the item viewer's } + Ctl := TTBControlItem(Viewer.Item).Control; + if (Ctl is TWinControl) and TWinControl(Ctl).HandleAllocated then begin + if AccObjectFromWindow(TWinControl(Ctl).Handle, ppdispChild) then + Result := S_OK + else + Result := E_UNEXPECTED; + Exit; + end; + end; + ppdispChild := Viewer.GetAccObject; + Result := S_OK; + end; + except + Result := E_UNEXPECTED; + end; +end; + +function TTBViewAccObject.get_accChildCount(out pcountChildren: Integer): HRESULT; +var + Count, I: Integer; +begin + try + if Assigned(FView) then begin + Count := 0; + for I := 0 to FView.ViewerCount-1 do + if FView.Viewers[I].IsAccessible then + Inc(Count); + pCountChildren := Count; + Result := S_OK; + end + else + Result := E_FAIL; + except + Result := E_UNEXPECTED; + end; +end; + +function TTBViewAccObject.get_accDefaultAction(varChild: OleVariant; + out pszDefaultAction: WideString): HRESULT; +begin + Result := S_FALSE; +end; + +function TTBViewAccObject.get_accDescription(varChild: OleVariant; + out pszDescription: WideString): HRESULT; +begin + Result := S_FALSE; +end; + +function TTBViewAccObject.get_accFocus(out pvarID: OleVariant): HRESULT; +begin + Result := S_FALSE; +end; + +function TTBViewAccObject.get_accHelp(varChild: OleVariant; + out pszHelp: WideString): HRESULT; +begin + Result := S_FALSE; +end; + +function TTBViewAccObject.get_accHelpTopic(out pszHelpFile: WideString; + varChild: OleVariant; out pidTopic: Integer): HRESULT; +begin + pidTopic := 0; { Delphi doesn't implicitly clear Integer 'out' parameters } + Result := S_FALSE; +end; + +function TTBViewAccObject.get_accKeyboardShortcut(varChild: OleVariant; + out pszKeyboardShortcut: WideString): HRESULT; +begin + try + if not Check(varChild, Result) then + Exit; + if vsMenuBar in FView.Style then begin + pszKeyboardShortcut := GetAltKeyName; + Result := S_OK; + end + else + Result := S_FALSE; + except + Result := E_UNEXPECTED; + end; +end; + +function TTBViewAccObject.get_accName(varChild: OleVariant; + out pszName: WideString): HRESULT; +var + S: String; +begin + try + if not Check(varChild, Result) then + Exit; + if Assigned(FView.ParentView) and Assigned(FView.ParentView.OpenViewer) then + S := StripAccelChars(TTBItemViewerAccess(FView.ParentView.OpenViewer).GetCaptionText); + if S = '' then + S := TControlAccess(FView.Window).Caption; + pszName := S; + Result := S_OK; + except + Result := E_UNEXPECTED; + end; +end; + +function TTBViewAccObject.get_accParent(out ppdispParent: IDispatch): HRESULT; +begin + try + if Assigned(FView) then begin + if Assigned(FView.ParentView) and Assigned(FView.ParentView.OpenViewer) then begin + ppdispParent := FView.ParentView.OpenViewer.GetAccObject; + Result := S_OK; + end + else begin + if AccObjectFromWindow(FView.Window.Handle, ppdispParent) then + Result := S_OK + else + Result := E_UNEXPECTED; + end; + end + else + Result := E_FAIL; + except + Result := E_UNEXPECTED; + end; +end; + +function TTBViewAccObject.get_accRole(varChild: OleVariant; + out pvarRole: OleVariant): HRESULT; +begin + try + if not Check(varChild, Result) then + Exit; + if FView.IsPopup then + pvarRole := ROLE_SYSTEM_MENUPOPUP + else begin + if vsMenuBar in FView.Style then + pvarRole := ROLE_SYSTEM_MENUBAR + else + pvarRole := ROLE_SYSTEM_TOOLBAR; + end; + Result := S_OK; + except + Result := E_UNEXPECTED; + end; +end; + +function TTBViewAccObject.get_accSelection(out pvarChildren: OleVariant): HRESULT; +begin + Result := S_FALSE; +end; + +function TTBViewAccObject.get_accState(varChild: OleVariant; + out pvarState: OleVariant): HRESULT; +begin + try + if not Check(varChild, Result) then + Exit; + pvarState := 0; + Result := S_OK; + except + Result := E_UNEXPECTED; + end; +end; + +function TTBViewAccObject.get_accValue(varChild: OleVariant; + out pszValue: WideString): HRESULT; +begin + Result := S_FALSE; +end; + +function TTBViewAccObject.put_accName(varChild: OleVariant; + const pszName: WideString): HRESULT; +begin + Result := S_FALSE; +end; + +function TTBViewAccObject.put_accValue(varChild: OleVariant; + const pszValue: WideString): HRESULT; +begin + Result := S_FALSE; +end; + +{ TTBItemViewerAccObject } + +constructor TTBItemViewerAccObject.Create(AViewer: TTBItemViewer); +begin + inherited Create; + FViewer := AViewer; + InterlockedIncrement(ItemViewerAccObjectInstances); +end; + +destructor TTBItemViewerAccObject.Destroy; +begin + InterlockedDecrement(ItemViewerAccObjectInstances); + if Assigned(FViewer) then begin + TTBItemViewerAccess(FViewer).FAccObjectInstance := nil; + FViewer := nil; + end; + inherited; +end; + +procedure TTBItemViewerAccObject.ClientIsDestroying; +begin + FViewer := nil; +end; + +function TTBItemViewerAccObject.Check(const varChild: OleVariant; + var ErrorCode: HRESULT): Boolean; +begin + if FViewer = nil then begin + ErrorCode := E_FAIL; + Result := False; + end + else if (VarType(varChild) <> varInteger) or (varChild <> CHILDID_SELF) then begin + ErrorCode := E_INVALIDARG; + Result := False; + end + else + Result := True; +end; + +function TTBItemViewerAccObject.IsActionable: Boolean; +{ Returns True if 'doDefaultAction' may be performed on the viewer, i.e. if + it's visible/off-edge/clipped, enabled & selectable, and the view is + focusable. } +begin + Result := FViewer.IsAccessible and IsAvailable and IsFocusable; +end; + +function TTBItemViewerAccObject.IsAvailable: Boolean; +{ Returns True if the viewer's item is enabled and selectable } +begin + Result := FViewer.Item.Enabled and + (tbisSelectable in TTBCustomItemAccess(FViewer.Item).ItemStyle); +end; + +function TTBItemViewerAccObject.IsFocusable: Boolean; +{ Returns True if viewers on the view can be 'focused' (i.e. the view's window + doesn't have the csDesigning state, the window is visible and enabled, and + the application is active). } + + function IsWindowAndParentsEnabled(W: HWND): Boolean; + begin + Result := True; + repeat + if not IsWindowEnabled(W) then begin + Result := False; + Break; + end; + W := GetParent(W); + until W = 0; + end; + +var + ViewWnd, ActiveWnd: HWND; +begin + Result := False; + if csDesigning in FViewer.View.Window.ComponentState then + Exit; + ViewWnd := FViewer.View.Window.Handle; + if IsWindowVisible(ViewWnd) and IsWindowAndParentsEnabled(ViewWnd) then begin + if vsModal in FViewer.View.State then + Result := True + else begin + ActiveWnd := GetActiveWindow; + if (ActiveWnd <> 0) and + ((ActiveWnd = ViewWnd) or IsChild(ActiveWnd, ViewWnd)) then + Result := True; + end; + end; +end; + +procedure TTBItemViewerAccObject.HandleAccSelect(const AExecute: Boolean); +begin + if Assigned(FViewer) and + ((AExecute and IsActionable) or (not AExecute and IsFocusable)) then begin + FViewer.View.Selected := FViewer; + FViewer.View.ScrollSelectedIntoView; + if vsModal in FViewer.View.State then begin + if AExecute then + FViewer.View.ExecuteSelected(False); + end + else if (FViewer.View.ParentView = nil) and (GetCapture = 0) then begin + if AExecute then + FViewer.View.EnterToolbarLoop([tbetExecuteSelected, tbetFromMSAA]) + else + FViewer.View.EnterToolbarLoop([tbetFromMSAA]); + end; + end; +end; + +function TTBItemViewerAccObject.accDoDefaultAction(varChild: OleVariant): HRESULT; +begin + try + if not Check(varChild, Result) then + Exit; + { NOTE: This must be kept in synch with get_accDefaultAction } + if IsActionable then begin + Result := S_OK; + if FViewer.View.OpenViewer = FViewer then begin + FViewer.View.CancelChildPopups; + { Like standard menus, cancel the modal loop when a top-level menu + is closed } + if (vsModal in FViewer.View.State) and not FViewer.View.IsPopup then + FViewer.View.EndModal; + end + else begin + FViewer.View.Selected := FViewer; + FViewer.View.ScrollSelectedIntoView; + TTBItemViewerAccess(FViewer).PostAccSelect(True); + end; + end + else + { Note: Standard menus return DISP_E_MEMBERNOTFOUND in this case but + that doesn't make much sense. The member is there but just isn't + currently available. } + Result := E_FAIL; + except + Result := E_UNEXPECTED; + end; +end; + +function TTBItemViewerAccObject.accHitTest(xLeft, yTop: Integer; + out pvarID: OleVariant): HRESULT; +var + P: TPoint; +begin + try + if FViewer = nil then begin + Result := E_FAIL; + Exit; + end; + P := FViewer.View.Window.ScreenToClient(Point(xLeft, yTop)); + if PtInRect(FViewer.BoundsRect, P) then begin + pvarID := CHILDID_SELF; + Result := S_OK; + end + else + Result := S_FALSE; + except + Result := E_UNEXPECTED; + end; +end; + +function TTBItemViewerAccObject.accLocation(out pxLeft, pyTop, pcxWidth, + pcyHeight: Integer; varChild: OleVariant): HRESULT; +var + R: TRect; + P: TPoint; +begin + try + if not Check(varChild, Result) then + Exit; + R := FViewer.BoundsRect; + P := FViewer.View.Window.ClientToScreen(Point(0, 0)); + OffsetRect(R, P.X, P.Y); + pxLeft := R.Left; + pyTop := R.Top; + pcxWidth := R.Right - R.Left; + pcyHeight := R.Bottom - R.Top; + Result := S_OK; + except + Result := E_UNEXPECTED; + end; +end; + +function TTBItemViewerAccObject.accNavigate(navDir: Integer; varStart: OleVariant; + out pvarEnd: OleVariant): HRESULT; +var + I, J: Integer; + View: TTBView; +begin + try + if not Check(varStart, Result) then + Exit; + Result := S_FALSE; + if (navDir = NAVDIR_FIRSTCHILD) or (navDir = NAVDIR_LASTCHILD) then begin + { Return the child view's acc. object } + View := FViewer.View.OpenViewerView; + if Assigned(View) then begin + pvarEnd := View.GetAccObject; + Result := S_OK; + end; + end + else begin + I := FViewer.View.IndexOf(FViewer); + if I >= 0 then begin + case navDir of + NAVDIR_UP, NAVDIR_LEFT, NAVDIR_PREVIOUS: + for J := I-1 downto 0 do + if FViewer.View.Viewers[J].IsAccessible then begin + pvarEnd := FViewer.View.Viewers[J].GetAccObject; + Result := S_OK; + Break; + end; + NAVDIR_DOWN, NAVDIR_RIGHT, NAVDIR_NEXT: + for J := I+1 to FViewer.View.ViewerCount-1 do + if FViewer.View.Viewers[J].IsAccessible then begin + pvarEnd := FViewer.View.Viewers[J].GetAccObject; + Result := S_OK; + Break; + end; + end; + end; + end; + except + Result := E_UNEXPECTED; + end; +end; + +function TTBItemViewerAccObject.accSelect(flagsSelect: Integer; + varChild: OleVariant): HRESULT; +begin + try + if not Check(varChild, Result) then + Exit; + if flagsSelect <> SELFLAG_TAKEFOCUS then begin + Result := E_INVALIDARG; + Exit; + end; + if IsFocusable and (FViewer.Show or FViewer.Clipped) then begin + FViewer.View.Selected := FViewer; + FViewer.View.ScrollSelectedIntoView; + if not(vsModal in FViewer.View.State) and + (FViewer.View.ParentView = nil) then + TTBItemViewerAccess(FViewer).PostAccSelect(False); + end + else + Result := E_FAIL; + { ^ what Office XP returns when you try focusing an off-edge item } + except + Result := E_UNEXPECTED; + end; +end; + +function TTBItemViewerAccObject.get_accChild(varChild: OleVariant; + out ppdispChild: IDispatch): HRESULT; +var + View: TTBView; +begin + try + if FViewer = nil then begin + Result := E_FAIL; + Exit; + end; + Result := E_INVALIDARG; + if VarType(varChild) = varInteger then begin + if varChild = CHILDID_SELF then begin + ppdispChild := Self; + Result := S_OK; + end + else if varChild = 1 then begin + { Return the child view's acc. object } + View := FViewer.View.OpenViewerView; + if Assigned(View) then begin + ppdispChild := View.GetAccObject; + Result := S_OK; + end; + end; + end; + except + Result := E_UNEXPECTED; + end; +end; + +function TTBItemViewerAccObject.get_accChildCount(out pcountChildren: Integer): HRESULT; +begin + try + if FViewer = nil then begin + Result := E_FAIL; + Exit; + end; + { Return 1 if the viewer has a child view } + if FViewer.View.OpenViewer = FViewer then + pCountChildren := 1 + else + pCountChildren := 0; + Result := S_OK; + except + Result := E_UNEXPECTED; + end; +end; + +function TTBItemViewerAccObject.get_accDefaultAction(varChild: OleVariant; + out pszDefaultAction: WideString): HRESULT; +begin + try + if not Check(varChild, Result) then + Exit; + if IsActionable then begin + { I'm not sure if these should be localized, or even if any screen + readers make use of this text... + NOTE: This must be kept in synch with accDoDefaultAction } + if FViewer.View.OpenViewer = FViewer then + pszDefaultAction := 'Close' + else if tbisSubmenu in TTBCustomItemAccess(FViewer.Item).ItemStyle then + pszDefaultAction := 'Open' + else if FViewer.View.IsPopup or (vsMenuBar in FViewer.View.Style) then + pszDefaultAction := 'Execute' + else + pszDefaultAction := 'Press'; + Result := S_OK; + end + else + Result := S_FALSE; + except + Result := E_UNEXPECTED; + end; +end; + +function TTBItemViewerAccObject.get_accDescription(varChild: OleVariant; + out pszDescription: WideString): HRESULT; +begin + Result := S_FALSE; +end; + +function TTBItemViewerAccObject.get_accFocus(out pvarID: OleVariant): HRESULT; +begin + try + if FViewer = nil then begin + Result := E_FAIL; + Exit; + end; + if (vsModal in FViewer.View.State) and + (FViewer.View.Selected = FViewer) then begin + pvarID := CHILDID_SELF; + Result := S_OK; + end + else + Result := S_FALSE; + except + Result := E_UNEXPECTED; + end; +end; + +function TTBItemViewerAccObject.get_accHelp(varChild: OleVariant; + out pszHelp: WideString): HRESULT; +begin + Result := S_FALSE; +end; + +function TTBItemViewerAccObject.get_accHelpTopic(out pszHelpFile: WideString; + varChild: OleVariant; out pidTopic: Integer): HRESULT; +begin + pidTopic := 0; { Delphi doesn't implicitly clear Integer 'out' parameters } + Result := S_FALSE; +end; + +function TTBItemViewerAccObject.get_accKeyboardShortcut(varChild: OleVariant; + out pszKeyboardShortcut: WideString): HRESULT; +var + C: Char; +begin + try + if not Check(varChild, Result) then + Exit; + Result := S_FALSE; + if TTBItemViewerAccess(FViewer).CaptionShown then begin + C := FindAccelChar(TTBItemViewerAccess(FViewer).GetCaptionText); + if C <> #0 then begin + CharLowerBuff(@C, 1); { like standard menus, always use lowercase... } + if FViewer.View.IsPopup then + pszKeyboardShortcut := C + else begin + { Prefix 'Alt+' } + pszKeyboardShortcut := GetAltKeyName + '+' + C; + end; + Result := S_OK; + end; + end; + except + Result := E_UNEXPECTED; + end; +end; + +function TTBItemViewerAccObject.get_accName(varChild: OleVariant; + out pszName: WideString): HRESULT; +var + C, S: String; +begin + try + if not Check(varChild, Result) then + Exit; + C := StripAccelChars(TTBItemViewerAccess(FViewer).GetCaptionText); + if not FViewer.IsToolbarStyle then + S := FViewer.Item.GetShortCutText; + if S = '' then + pszName := C + else + pszName := C + #9 + S; + Result := S_OK; + except + Result := E_UNEXPECTED; + end; +end; + +function TTBItemViewerAccObject.get_accParent(out ppdispParent: IDispatch): HRESULT; +begin + try + if Assigned(FViewer) then begin + ppdispParent := FViewer.View.GetAccObject; + Result := S_OK; + end + else + Result := E_FAIL; + except + Result := E_UNEXPECTED; + end; +end; + +function TTBItemViewerAccObject.get_accRole(varChild: OleVariant; + out pvarRole: OleVariant): HRESULT; +begin + try + if not Check(varChild, Result) then + Exit; + pvarRole := TTBItemViewerAccess(FViewer).GetAccRole; + Result := S_OK; + except + Result := E_UNEXPECTED; + end; +end; + +function TTBItemViewerAccObject.get_accSelection(out pvarChildren: OleVariant): HRESULT; +begin + Result := S_FALSE; +end; + +function TTBItemViewerAccObject.get_accState(varChild: OleVariant; + out pvarState: OleVariant): HRESULT; +var + Flags: Integer; +begin + try + if not Check(varChild, Result) then + Exit; + Flags := 0; + if FViewer.View.Selected = FViewer then begin + Flags := Flags or STATE_SYSTEM_HOTTRACKED; + if vsModal in FViewer.View.State then + Flags := Flags or STATE_SYSTEM_FOCUSED; + if FViewer.View.MouseOverSelected and FViewer.View.Capture then + { ^ based on "IsPushed :=" code in TTBView.DrawItem } + Flags := Flags or STATE_SYSTEM_PRESSED; + end; + if tbisSubmenu in TTBCustomItemAccess(FViewer.Item).ItemStyle then + Flags := Flags or STATE_SYSTEM_HASPOPUP; + if FViewer.Show or FViewer.Clipped then begin + if IsFocusable then + Flags := Flags or STATE_SYSTEM_FOCUSABLE; + end + else begin + { Mark off-edge items as invisible, like Office } + Flags := Flags or STATE_SYSTEM_INVISIBLE; + end; + if not IsAvailable then + Flags := Flags or STATE_SYSTEM_UNAVAILABLE; + if FViewer.Item.Checked then + Flags := Flags or STATE_SYSTEM_CHECKED; + pvarState := Flags; + Result := S_OK; + except + Result := E_UNEXPECTED; + end; +end; + +function TTBItemViewerAccObject.get_accValue(varChild: OleVariant; + out pszValue: WideString): HRESULT; +begin + try + if not Check(varChild, Result) then + Exit; + if TTBItemViewerAccess(FViewer).GetAccValue(pszValue) then + Result := S_OK + else begin + pszValue := ''; + Result := S_FALSE; + end; + except + Result := E_UNEXPECTED; + end; +end; + +function TTBItemViewerAccObject.put_accName(varChild: OleVariant; + const pszName: WideString): HRESULT; +begin + Result := S_FALSE; +end; + +function TTBItemViewerAccObject.put_accValue(varChild: OleVariant; + const pszValue: WideString): HRESULT; +begin + Result := S_FALSE; +end; + +{ Note: This COM initialization code based on code from DBTables } +var + SaveInitProc: Pointer; + NeedToUninitialize: Boolean; + +procedure InitCOM; +begin + if SaveInitProc <> nil then TProcedure(SaveInitProc); + NeedToUninitialize := SUCCEEDED(CoInitialize(nil)); +end; + +initialization + InitializeCriticalSection(LastAccObjectCritSect); + if not IsLibrary then begin + SaveInitProc := InitProc; + InitProc := @InitCOM; + end; +finalization + DisconnectAccObjects; + if NeedToUninitialize then + CoUninitialize; + DeleteCriticalSection(LastAccObjectCritSect); +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2Anim.pas b/official/2.1.6+2.1.beta1/Source/TB2Anim.pas new file mode 100644 index 0000000..5d618ca --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2Anim.pas @@ -0,0 +1,293 @@ +unit TB2Anim; + +{ + Toolbar2000 + Copyright (C) 1998-2005 by Jordan Russell + All rights reserved. + + The contents of this file are subject to the "Toolbar2000 License"; you may + not use or distribute this file except in compliance with the + "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in + TB2k-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + + Alternatively, the contents of this file may be used under the terms of the + GNU General Public License (the "GPL"), in which case the provisions of the + GPL are applicable instead of those in the "Toolbar2000 License". A copy of + the GPL may be found in GPL-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + If you wish to allow use of your version of this file only under the terms of + the GPL and not to allow others to use your version of this file under the + "Toolbar2000 License", indicate your decision by deleting the provisions + above and replace them with the notice and other provisions required by the + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + + $jrsoftware: tb2k/Source/TB2Anim.pas,v 1.11 2005/02/16 08:15:58 jr Exp $ +} + +interface + +{$I TB2Ver.inc} +{$Q-} + +uses + Windows, Messages, SysUtils, Classes; + +const + WM_TB2K_STEPANIMATION = WM_USER + $555; + WM_TB2K_ANIMATIONENDED = WM_USER + $556; + +type + TTBAnimationDirection = set of (tbadLeft, tbadRight, tbadDown, tbadUp); + +procedure TBStartAnimation(const AWnd: HWND; const ABlend: Boolean; + const ADirection: TTBAnimationDirection); +procedure TBStepAnimation(const Msg: TMessage); +procedure TBEndAnimation(const Wnd: HWND); + +implementation + +{ Notes to self: + - It originally had the NOMIRRORBITMAP flag on the BitBlt calls, because + Windows 2000's AnimateWindow function has it. But it had to be removed + because on Windows 98 with the Standard VGA or VMware video driver, it + caused no bits to be blitted, even though Windows 98 is supposed to + support NOMIRRORBITMAP according to the documentation. I don't think it's + necessary anyway. +} + +const + DCX_USESTYLE = $10000; + WS_EX_LAYERED = $80000; + NOMIRRORBITMAP = $80000000; + ULW_ALPHA = 2; + +type + PAnimateThreadFuncData = ^TAnimateThreadFuncData; + TAnimateThreadFuncData = record + SequenceID: Integer; + Wnd: HWND; + Time: Integer; + Blending: Boolean; + CurStep: Integer; + DC, BmpDC: HDC; + Bmp: HBITMAP; + ScreenClientRect: TRect; + Size: TPoint; + LastPos: TPoint; + Direction: TTBAnimationDirection; + AnimateThreadAbort: BOOL; + AnimationEnded: BOOL; + StepMessagePending: BOOL; + end; + +var + UpdateLayeredWindowProc: function(Handle: THandle; hdcDest: HDC; + pptDst: PPoint; _psize: PSize; hdcSrc: HDC; pptSrc: PPoint; + crKey: COLORREF; pblend: PBLENDFUNCTION; dwFlags: DWORD): BOOL; stdcall; + +function AnimateThreadFunc(Parameter: Pointer): Integer; +var + StartTime, FrameStartTime, NextFrameStartTime: DWORD; + StartStep, ElapsedTime, I: Integer; + P: TPoint; +begin + Result := 0; + StartTime := GetTickCount; + FrameStartTime := StartTime; + with PAnimateThreadFuncData(Parameter)^ do begin + StartStep := CurStep; + while not AnimateThreadAbort do begin + ElapsedTime := FrameStartTime - StartTime; + if (ElapsedTime < 0) or (ElapsedTime >= Time) then + Break; + I := StartStep + ((255 * ElapsedTime) div Time); + if (I < 0) or (I >= 255) then + Break; + + GetCursorPos(P); + if (P.X <> LastPos.X) or (P.Y <> LastPos.Y) then begin + if PtInRect(ScreenClientRect, P) then + Break; + LastPos := P; + end; + + if I > CurStep then begin + CurStep := I; + if InterlockedExchange(Integer(StepMessagePending), 1) = 0 then + SendNotifyMessage(Wnd, WM_TB2K_STEPANIMATION, 0, SequenceID); + end; + + { Wait until the timer has ticked at least 10 msec } + NextFrameStartTime := GetTickCount; + while NextFrameStartTime - FrameStartTime < 10 do begin + { We don't know the rate of the system timer, so check every 5 msec + to see if it's incremented } + Sleep(5); + NextFrameStartTime := GetTickCount; + end; + FrameStartTime := NextFrameStartTime; + end; + AnimationEnded := True; + SendNotifyMessage(Wnd, WM_TB2K_STEPANIMATION, 0, SequenceID); + end; +end; + +threadvar + AnimateThreadHandle: THandle; + AnimateData: TAnimateThreadFuncData; + AnimationSequenceID: Integer; + +procedure FinalizeAnimation; +begin + with PAnimateThreadFuncData(@AnimateData)^ do begin + if Blending then + SetWindowLong(Wnd, GWL_EXSTYLE, + GetWindowLong(Wnd, GWL_EXSTYLE) and not WS_EX_LAYERED) + else + SetWindowRgn(Wnd, 0, False); + BitBlt(DC, 0, 0, Size.X, Size.Y, BmpDC, 0, 0, SRCCOPY); + DeleteDC(BmpDC); + DeleteObject(Bmp); + ReleaseDC(Wnd, DC); + SendNotifyMessage(Wnd, WM_TB2K_ANIMATIONENDED, 0, 0); + end; +end; + +procedure TBEndAnimation(const Wnd: HWND); +begin + if (AnimateThreadHandle <> 0) and + ((Wnd = 0) or (AnimateData.Wnd = Wnd)) then begin + AnimateData.AnimateThreadAbort := True; + WaitForSingleObject(AnimateThreadHandle, INFINITE); + CloseHandle(AnimateThreadHandle); + AnimateThreadHandle := 0; + + FinalizeAnimation; + end; +end; + +procedure TBStartAnimation(const AWnd: HWND; const ABlend: Boolean; + const ADirection: TTBAnimationDirection); +var + ZeroPt: TPoint; + R: TRect; + ThreadID: DWORD; + Blend: TBlendFunction; + Rgn: HRGN; +begin + TBEndAnimation(0); + + ZeroPt.X := 0; + ZeroPt.Y := 0; + + Inc(AnimationSequenceID); + FillChar(AnimateData, SizeOf(AnimateData), 0); + { Note: The pointer cast avoids GetTls calls for every field access } + with PAnimateThreadFuncData(@AnimateData)^ do begin + SequenceID := AnimationSequenceID; + Wnd := AWnd; + Blending := ABlend and Assigned(UpdateLayeredWindowProc); + Direction := ADirection; + GetCursorPos(LastPos); + GetClientRect(Wnd, ScreenClientRect); + MapWindowPoints(Wnd, 0, ScreenClientRect, 2); + GetWindowRect(Wnd, R); + DC := GetDCEx(Wnd, 0, DCX_WINDOW or DCX_CACHE {or DCX_USESTYLE ?}); + Size.X := R.Right - R.Left; + Size.Y := R.Bottom - R.Top; + Bmp := CreateCompatibleBitmap(DC, Size.X, Size.Y {or $01000000 ?}); + BmpDC := CreateCompatibleDC(DC); + // AnimateWindow calls SetLayout, but I'm not sure that we need to. + //if Assigned(SetLayoutProc) then + // SetLayoutProc(BmpDC, 0); + SelectObject(BmpDC, Bmp); + //SetBoundsRect(BmpDC, nil, DCB_RESET or DCB_ENABLE); + SendMessage(Wnd, WM_PRINT, WPARAM(BmpDC), PRF_NONCLIENT or PRF_CLIENT or + PRF_ERASEBKGND or PRF_CHILDREN); + //GetBoundsRect + if Blending then begin + SetWindowLong(Wnd, GWL_EXSTYLE, GetWindowLong(Wnd, GWL_EXSTYLE) or WS_EX_LAYERED); + Time := 175; { actually more like ~147 because CurStep starts at 40 } + CurStep := 40; + Longint(Blend) := 0; + Blend.BlendOp := AC_SRC_OVER; + Blend.SourceConstantAlpha := CurStep; + UpdateLayeredWindowProc(Wnd, 0, @R.TopLeft, @Size, BmpDC, @ZeroPt, 0, + @Blend, ULW_ALPHA); + end + else begin + Time := 150; + CurStep := 0; + Rgn := CreateRectRgn(0, 0, 0, 0); + if not BOOL(SetWindowRgn(Wnd, Rgn, False)) then + DeleteObject(Rgn); { just in case } + end; + { These are the same flags AnimateWindow uses. SWP_ASYNCWINDOWPOS is + needed or else it doesn't "save bits" properly. + Note: SWP_ASYNCWINDOWPOS seems to have no effect on Windows 95 & NT 4.0, + so bits behind the window are not saved & restored correctly. } + SetWindowPos(Wnd, 0, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or + SWP_NOZORDER or SWP_NOACTIVATE or SWP_SHOWWINDOW or SWP_NOREDRAW or + SWP_NOOWNERZORDER or SWP_ASYNCWINDOWPOS); + end; + + AnimateThreadHandle := BeginThread(nil, 0, AnimateThreadFunc, @AnimateData, + CREATE_SUSPENDED, ThreadID); + if AnimateThreadHandle = 0 then begin + { just in case... } + FinalizeAnimation; + Exit; + end; + ResumeThread(AnimateThreadHandle); +end; + +procedure TBStepAnimation(const Msg: TMessage); +var + Rgn: HRGN; + Blend: TBlendFunction; + X, Y: Integer; +begin + if Msg.LParam <> AnimationSequenceID then + { ignore messages dangling in the queue from aborted animation sequences } + Exit; + with PAnimateThreadFuncData(@AnimateData)^ do begin + if not AnimationEnded then begin + if Blending then begin + Longint(Blend) := 0; + Blend.BlendOp := AC_SRC_OVER; + Blend.SourceConstantAlpha := AnimateData.CurStep; + UpdateLayeredWindowProc(Wnd, 0, nil, nil, 0, nil, 0, @Blend, ULW_ALPHA); + end + else begin + if tbadDown in Direction then + Y := MulDiv(Size.Y, AnimateData.CurStep, 255) - Size.Y + else if tbadUp in Direction then + Y := Size.Y - MulDiv(Size.Y, AnimateData.CurStep, 255) + else + Y := 0; + if tbadRight in Direction then + X := MulDiv(Size.X, AnimateData.CurStep, 255) - Size.X + else if tbadLeft in Direction then + X := Size.X - MulDiv(Size.X, AnimateData.CurStep, 255) + else + X := 0; + Rgn := CreateRectRgn(X, Y, X + Size.X, Y + Size.Y); + if not BOOL(SetWindowRgn(Wnd, Rgn, False)) then + DeleteObject(Rgn); { just in case } + BitBlt(DC, X, Y, Size.X, Size.Y, BmpDC, 0, 0, SRCCOPY); + end; + end + else + TBEndAnimation(Wnd); + StepMessagePending := False; + end; +end; + +initialization + UpdateLayeredWindowProc := GetProcAddress(GetModuleHandle(user32), + 'UpdateLayeredWindow'); +finalization + TBEndAnimation(0); +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2Common.pas b/official/2.1.6+2.1.beta1/Source/TB2Common.pas new file mode 100644 index 0000000..8255781 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2Common.pas @@ -0,0 +1,1087 @@ +unit TB2Common; + +{ + Toolbar2000 + Copyright (C) 1998-2005 by Jordan Russell + All rights reserved. + + The contents of this file are subject to the "Toolbar2000 License"; you may + not use or distribute this file except in compliance with the + "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in + TB2k-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + + Alternatively, the contents of this file may be used under the terms of the + GNU General Public License (the "GPL"), in which case the provisions of the + GPL are applicable instead of those in the "Toolbar2000 License". A copy of + the GPL may be found in GPL-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + If you wish to allow use of your version of this file only under the terms of + the GPL and not to allow others to use your version of this file under the + "Toolbar2000 License", indicate your decision by deleting the provisions + above and replace them with the notice and other provisions required by the + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + + $jrsoftware: tb2k/Source/TB2Common.pas,v 1.31 2005/06/29 20:10:10 jr Exp $ +} + +interface + +{$I TB2Ver.inc} + +uses + Windows, Classes, SysUtils, Messages, Controls, Forms; + +type + TListSortExCompare = function(const Item1, Item2, ExtraData: Pointer): Integer; + THandleWMPrintNCPaintProc = procedure(Wnd: HWND; DC: HDC; AppData: Longint); + +function AddToFrontOfList(var List: TList; Item: Pointer): Boolean; +function AddToList(var List: TList; Item: Pointer): Boolean; +function ApplicationIsActive: Boolean; +function AreFlatMenusEnabled: Boolean; +function AreKeyboardCuesEnabled: Boolean; +function CallTrackMouseEvent(const Wnd: HWND; const Flags: DWORD): Boolean; +function CreateHalftoneBrush: HBRUSH; +function CreateNullRegion: HRGN; +function CreateRotatedFont(DC: HDC): HFONT; +function DivRoundUp(const Dividend, Divisor: Integer): Integer; +procedure DrawHalftoneInvertRect(const DC: HDC; const NewRect, OldRect: PRect; + const NewSize, OldSize: TSize); +procedure DrawRotatedText(const DC: HDC; AText: String; const ARect: TRect; + const AFormat: Cardinal); +procedure DrawInvertRect(const DC: HDC; const NewRect, OldRect: PRect; + const NewSize, OldSize: TSize; const Brush: HBRUSH; BrushLast: HBRUSH); +function EscapeAmpersands(const S: String): String; +function FindAccelChar(const S: String): Char; +{$IFNDEF JR_D5} +procedure FreeAndNil(var Obj); +{$ENDIF} +function GetInputLocaleCodePage: UINT; +function GetMenuShowDelay: Integer; +function GetRectOfMonitorContainingPoint(const P: TPoint; const WorkArea: Boolean): TRect; +function GetRectOfMonitorContainingRect(const R: TRect; const WorkArea: Boolean): TRect; +function GetRectOfMonitorContainingWindow(const W: HWND; const WorkArea: Boolean): TRect; +function GetRectOfPrimaryMonitor(const WorkArea: Boolean): TRect; +function GetTextHeight(const DC: HDC): Integer; +function GetTextWidth(const DC: HDC; S: String; const Prefix: Boolean): Integer; +procedure HandleWMPrint(const Wnd: HWND; var Message: TMessage; + const NCPaintFunc: THandleWMPrintNCPaintProc; const AppData: Longint); +procedure HandleWMPrintClient(const Control: TWinControl; + var Message: TMessage); +function IsWindowsXP: Boolean; +procedure ListSortEx(const List: TList; const Compare: TListSortExCompare; + const ExtraData: Pointer); +procedure InitTrackMouseEvent; +function Max(A, B: Integer): Integer; +function Min(A, B: Integer): Integer; +function MethodsEqual(const M1, M2: TMethod): Boolean; +function NeedToPlaySound(const Alias: String): Boolean; +procedure ProcessPaintMessages; +procedure RemoveMessages(const AMin, AMax: Integer); +procedure RemoveFromList(var List: TList; Item: Pointer); +procedure SelectNCUpdateRgn(Wnd: HWND; DC: HDC; Rgn: HRGN); +function StripAccelChars(const S: String): String; +function StripTrailingPunctuation(const S: String): String; +function UsingMultipleMonitors: Boolean; + +const + PopupMenuWindowNCSize = 3; + DT_HIDEPREFIX = $00100000; + +var + TrackMouseEventFunc: function(var EventTrack: TTrackMouseEvent): BOOL; stdcall; + +implementation + +uses + TB2Version; + +function ApplicationIsActive: Boolean; +{ Returns True if the application is in the foreground } +begin + Result := GetActiveWindow <> 0; +end; + +{$IFNDEF JR_D3} +function CopyPalette(Palette: HPALETTE): HPALETTE; +var + PaletteSize: Integer; + LogPal: TMaxLogPalette; +begin + Result := 0; + if Palette = 0 then Exit; + PaletteSize := 0; + if GetObject(Palette, SizeOf(PaletteSize), @PaletteSize) = 0 then Exit; + if PaletteSize = 0 then Exit; + with LogPal do begin + palVersion := $0300; + palNumEntries := PaletteSize; + GetPaletteEntries(Palette, 0, PaletteSize, palPalEntry); + end; + Result := CreatePalette(PLogPalette(@LogPal)^); +end; +{$ENDIF} + +procedure ListSortEx(const List: TList; const Compare: TListSortExCompare; + const ExtraData: Pointer); +{ Similar to TList.Sort, but lets you pass a user-defined ExtraData pointer } + procedure QuickSortEx(L: Integer; const R: Integer); + var + I, J: Integer; + P: Pointer; + begin + repeat + I := L; + J := R; + P := List[(L + R) shr 1]; + repeat + while Compare(List[I], P, ExtraData) < 0 do Inc(I); + while Compare(List[J], P, ExtraData) > 0 do Dec(J); + if I <= J then + begin + List.Exchange(I, J); + Inc(I); + Dec(J); + end; + until I > J; + if L < J then QuickSortEx(L, J); + L := I; + until I >= R; + end; +begin + if List.Count > 1 then + QuickSortEx(0, List.Count-1); +end; + +type + PPrintEnumProcData = ^TPrintEnumProcData; + TPrintEnumProcData = record + PrintChildren: Boolean; + ParentWnd: HWND; + DC: HDC; + PrintFlags: LPARAM; + end; + +function PrintEnumProc(Wnd: HWND; LParam: LPARAM): BOOL; stdcall; +var + R: TRect; + SaveIndex: Integer; +begin + Result := True; { continue enumerating } + with PPrintEnumProcData(LParam)^ do begin + { Skip window if it isn't a child/owned window of ParentWnd or isn't visible } + if (HWND(GetWindowLong(Wnd, GWL_HWNDPARENT)) <> ParentWnd) or + (GetWindowLong(Wnd, GWL_STYLE) and WS_VISIBLE = 0) then + { ^ don't use IsWindowVisible since it returns False if the window's + parent window is not visible } + Exit; + GetWindowRect(Wnd, R); + MapWindowPoints(0, ParentWnd, R, 2); + SaveIndex := SaveDC(DC); + { Like Windows, offset the window origin to the top-left coordinates of + the child/owned window } + MoveWindowOrg(DC, R.Left, R.Top); + { Like Windows, intersect the clipping region with the entire rectangle of + the child/owned window } + OffsetRect(R, -R.Left, -R.Top); + IntersectClipRect(DC, R.Left, R.Top, R.Right, R.Bottom); + { Send a WM_PRINT message to the child/owned window } + SendMessage(Wnd, WM_PRINT, WPARAM(DC), PrintFlags); + { Restore the DC's state, in case the WM_PRINT handler didn't put things + back the way it found them } + RestoreDC(DC, SaveIndex); + end; +end; + +procedure HandleWMPrint(const Wnd: HWND; var Message: TMessage; + const NCPaintFunc: THandleWMPrintNCPaintProc; const AppData: Longint); +{ note: AppData is an application-defined value which is passed to NCPaintFunc } +var + DC: HDC; + SaveIndex, SaveIndex2: Integer; + R: TRect; + P: TPoint; + Data: TPrintEnumProcData; +begin + if (Message.LParam and PRF_CHECKVISIBLE = 0) or IsWindowVisible(Wnd) then begin + DC := HDC(Message.WParam); + SaveIndex2 := SaveDC(DC); + try + if Message.LParam and PRF_NONCLIENT <> 0 then begin + SaveIndex := SaveDC(DC); + if Assigned(NCPaintFunc) then + NCPaintFunc(Wnd, DC, AppData); + RestoreDC(DC, SaveIndex); + end; + { Calculate the difference between the top-left corner of the window + and the top-left corner of its client area } + GetWindowRect(Wnd, R); + P.X := 0; P.Y := 0; + ClientToScreen(Wnd, P); + Dec(P.X, R.Left); Dec(P.Y, R.Top); + if Message.LParam and PRF_CLIENT <> 0 then begin + { Like Windows, the flags PRF_ERASEBKGND, PRF_CHILDREN, and PRF_OWNED + are ignored if PRF_CLIENT isn't also specified } + if Message.LParam and PRF_ERASEBKGND <> 0 then begin + { Send WM_ERASEBKGND } + SaveIndex := SaveDC(DC); + if Message.LParam and PRF_NONCLIENT <> 0 then + MoveWindowOrg(DC, P.X, P.Y); + SendMessage(Wnd, WM_ERASEBKGND, Message.WParam, 0); + RestoreDC(DC, SaveIndex); + end; + { Send WM_PRINTCLIENT } + SaveIndex := SaveDC(DC); + if Message.LParam and PRF_NONCLIENT <> 0 then + MoveWindowOrg(DC, P.X, P.Y); + SendMessage(Wnd, WM_PRINTCLIENT, Message.WParam, 0); + RestoreDC(DC, SaveIndex); + { Like Windows, always offset child/owned windows by the size of the + client area even if PRF_NONCLIENT isn't specified (a bug?) } + MoveWindowOrg(DC, P.X, P.Y); + Data.ParentWnd := Wnd; + Data.DC := DC; + { Send WM_PRINT to child/owned windows } + if Message.LParam and PRF_CHILDREN <> 0 then begin + Data.PrintChildren := True; + Data.PrintFlags := PRF_NONCLIENT or PRF_CLIENT or PRF_ERASEBKGND or + PRF_CHILDREN; { same flags as Windows passes to children } + EnumChildWindows(Wnd, @PrintEnumProc, LPARAM(@Data)); + end; + if Message.LParam and PRF_OWNED <> 0 then begin + Data.PrintChildren := False; + Data.PrintFlags := Message.LParam; + EnumWindows(@PrintEnumProc, LPARAM(@Data)); + end; + end; + finally + RestoreDC(DC, SaveIndex2); + end; + end; + { Windows' WM_PRINT returns 1. I'm not sure why. } + Message.Result := 1; +end; + +type + TWinControlAccess = class(TWinControl); + +procedure HandleWMPrintClient(const Control: TWinControl; var Message: TMessage); +var + Msg: TWMPaint; + SaveIndex: Integer; +begin + Msg.Msg := WM_PAINT; + Msg.DC := HDC(Message.WParam); + Msg.Unused := 0; + Msg.Result := 0; + SaveIndex := SaveDC(HDC(Message.WParam)); + try + TWinControlAccess(Control).PaintHandler(Msg); + finally + RestoreDC(HDC(Message.WParam), SaveIndex); + end; +end; + +function DivRoundUp(const Dividend, Divisor: Integer): Integer; +{ Similar to the 'div' operator, but if there is a remainder it always rounds + the result up one (or down if the result is negative). } +asm + mov ecx, edx + cdq + idiv ecx + test edx, edx + jz @@1 + test eax, eax + jns @@2 + dec eax + jmp @@1 + @@2: + inc eax + @@1: +end; + +function GetTextHeight(const DC: HDC): Integer; +var + TextMetric: TTextMetric; +begin + GetTextMetrics(DC, TextMetric); + Result := TextMetric.tmHeight; +end; + +function StripAccelChars(const S: String): String; +var + I: Integer; +begin + Result := S; + I := 1; + while I <= Length(Result) do begin + if not(Result[I] in LeadBytes) then begin + if Result[I] = '&' then + System.Delete(Result, I, 1); + Inc(I); + end + else + Inc(I, 2); + end; +end; + +function EscapeAmpersands(const S: String): String; +{ Replaces any '&' characters with '&&' } +var + I: Integer; +begin + Result := S; + I := 1; + while I <= Length(Result) do begin + if not(Result[I] in LeadBytes) then begin + if Result[I] = '&' then begin + Inc(I); + Insert('&', Result, I); + end; + Inc(I); + end + else + Inc(I, 2); + end; +end; + +function StripTrailingPunctuation(const S: String): String; +{ Removes any colon (':') or ellipsis ('...') from the end of S and returns + the resulting string } +var + L: Integer; +begin + Result := S; + L := Length(Result); + if (L > 1) and (Result[L] = ':') and (ByteType(Result, L) = mbSingleByte) then + SetLength(Result, L-1) + else if (L > 3) and (Result[L-2] = '.') and (Result[L-1] = '.') and + (Result[L] = '.') and (ByteType(Result, L-2) = mbSingleByte) then + SetLength(Result, L-3); +end; + +function GetTextWidth(const DC: HDC; S: String; const Prefix: Boolean): Integer; +{ Returns the width of the specified string using the font currently selected + into DC. If Prefix is True, it first removes "&" characters as necessary. } +var + Size: TSize; +begin + { This procedure is 10x faster than using DrawText with the DT_CALCRECT flag } + if Prefix then + S := StripAccelChars(S); + GetTextExtentPoint32(DC, PChar(S), Length(S), Size); + Result := Size.cx; +end; + +procedure ProcessPaintMessages; +{ Dispatches all pending WM_PAINT messages. In effect, this is like an + 'UpdateWindow' on all visible windows } +var + Msg: TMsg; +begin + while PeekMessage(Msg, 0, WM_PAINT, WM_PAINT, PM_NOREMOVE) do begin + case Integer(GetMessage(Msg, 0, WM_PAINT, WM_PAINT)) of + -1: Break; { if GetMessage failed } + 0: begin + { Repost WM_QUIT messages } + PostQuitMessage(Msg.WParam); + Break; + end; + end; + DispatchMessage(Msg); + end; +end; + +procedure RemoveMessages(const AMin, AMax: Integer); +{ Removes any messages with the specified ID from the queue } +var + Msg: TMsg; +begin + while PeekMessage(Msg, 0, AMin, AMax, PM_REMOVE) do begin + if Msg.message = WM_QUIT then begin + { Repost WM_QUIT messages } + PostQuitMessage(Msg.WParam); + Break; + end; + end; +end; + +procedure SelectNCUpdateRgn(Wnd: HWND; DC: HDC; Rgn: HRGN); +var + R: TRect; + NewClipRgn: HRGN; +begin + if (Rgn <> 0) and (Rgn <> 1) then begin + GetWindowRect(Wnd, R); + if SelectClipRgn(DC, Rgn) = ERROR then begin + NewClipRgn := CreateRectRgnIndirect(R); + SelectClipRgn(DC, NewClipRgn); + DeleteObject(NewClipRgn); + end; + OffsetClipRgn(DC, -R.Left, -R.Top); + end; +end; + +function AddToList(var List: TList; Item: Pointer): Boolean; +{ Returns True if Item didn't already exist in the list } +begin + if List = nil then + List := TList.Create; + Result := List.IndexOf(Item) = -1; + if Result then + List.Add(Item); +end; + +function AddToFrontOfList(var List: TList; Item: Pointer): Boolean; +{ Returns True if Item didn't already exist in the list } +begin + if List = nil then + List := TList.Create; + Result := List.IndexOf(Item) = -1; + if Result then + List.Insert(0, Item); +end; + +procedure RemoveFromList(var List: TList; Item: Pointer); +begin + if Assigned(List) then begin + List.Remove(Item); + if List.Count = 0 then begin + List.Free; + List := nil; + end; + end; +end; + +var + RegMenuShowDelay: Integer; + RegMenuShowDelayInited: BOOL = False; +function GetMenuShowDelay: Integer; +const + DefaultMenuShowDelay = 400; + function ReadMenuShowDelayFromRegistry: Integer; + var + K: HKEY; + Typ, DataSize: DWORD; + Data: array[0..31] of Char; + Res: Longint; + E: Integer; + begin + Result := DefaultMenuShowDelay; + if RegOpenKeyEx(HKEY_CURRENT_USER, 'Control Panel\Desktop', 0, + KEY_QUERY_VALUE, K) = ERROR_SUCCESS then begin + DataSize := SizeOf(Data); + Res := RegQueryValueEx(K, 'MenuShowDelay', nil, @Typ, @Data, @DataSize); + RegCloseKey(K); + if Res <> ERROR_FILE_NOT_FOUND then begin + if (Res <> ERROR_SUCCESS) or (Typ <> REG_SZ) then + Result := 0 + else begin + Val(Data, Result, E); + if E <> 0 then Result := 0; + end; + end; + end; + end; +begin + if Lo(GetVersion) >= 4 then begin + if not SystemParametersInfo(106{SPI_GETMENUSHOWDELAY}, 0, @Result, 0) then begin + { SPI_GETMENUSHOWDELAY is only supported by Windows NT 4.0 and Windows 98. + On Windows 95, it must use the registry to retrieve this setting. } + if not RegMenuShowDelayInited then begin + RegMenuShowDelay := ReadMenuShowDelayFromRegistry; + InterlockedExchange(Integer(RegMenuShowDelayInited), Ord(True)); + end; + Result := RegMenuShowDelay; + end; + if Result < 0 then Result := 0; + end + else + Result := DefaultMenuShowDelay; +end; + +function AreFlatMenusEnabled: Boolean; +{ Returns True if "flat menus" are enabled. Always returns False on pre-XP + Windows versions. } +const + SPI_GETFLATMENU = $1022; +var + FlatMenusEnabled: BOOL; +begin + { Interestingly, on Windows 2000, SystemParametersInfo(SPI_GETFLATMENU, ...) + succeeds and can return True in pvParam^ if the proper bit is set in + UserPreferencesMask. Since flat menus are not really used on Windows + 2000, call IsWindowsXP first to see if we're running at least XP. } + Result := IsWindowsXP and SystemParametersInfo(SPI_GETFLATMENU, 0, + @FlatMenusEnabled, 0) and FlatMenusEnabled; +end; + +function AreKeyboardCuesEnabled: Boolean; +{ Returns True if "keyboard cues" are enabled. Always returns True on + pre-2000 Windows versions. } +const + SPI_GETKEYBOARDCUES = $100A; +var + CuesEnabled: BOOL; +begin + Result := (Win32MajorVersion < 5) or + not SystemParametersInfo(SPI_GETKEYBOARDCUES, 0, @CuesEnabled, 0) or + CuesEnabled; +end; + +function CreateNullRegion: HRGN; +var + R: TRect; +begin + SetRectEmpty(R); + Result := CreateRectRgnIndirect(R); +end; + +procedure DrawInvertRect(const DC: HDC; const NewRect, OldRect: PRect; + const NewSize, OldSize: TSize; const Brush: HBRUSH; BrushLast: HBRUSH); +{ Draws a dragging outline, hiding the old one if neccessary. This code is + based on MFC sources. + + Either NewRect or OldRect can be nil or empty. } +var + SaveIndex: Integer; + rgnNew, rgnOutside, rgnInside, rgnLast, rgnUpdate: HRGN; + R: TRect; +begin + rgnLast := 0; + rgnUpdate := 0; + + { First, determine the update region and select it } + if NewRect = nil then begin + SetRectEmpty(R); + rgnOutside := CreateRectRgnIndirect(R); + end + else begin + R := NewRect^; + rgnOutside := CreateRectRgnIndirect(R); + InflateRect(R, -NewSize.cx, -NewSize.cy); + IntersectRect(R, R, NewRect^); + end; + rgnInside := CreateRectRgnIndirect(R); + rgnNew := CreateNullRegion; + CombineRgn(rgnNew, rgnOutside, rgnInside, RGN_XOR); + + if BrushLast = 0 then + BrushLast := Brush; + + if OldRect <> nil then begin + { Find difference between new region and old region } + rgnLast := CreateNullRegion; + with OldRect^ do + SetRectRgn(rgnOutside, Left, Top, Right, Bottom); + R := OldRect^; + InflateRect(R, -OldSize.cx, -OldSize.cy); + IntersectRect(R, R, OldRect^); + SetRectRgn(rgnInside, R.Left, R.Top, R.Right, R.Bottom); + CombineRgn(rgnLast, rgnOutside, rgnInside, RGN_XOR); + + { Only diff them if brushes are the same } + if Brush = BrushLast then begin + rgnUpdate := CreateNullRegion; + CombineRgn(rgnUpdate, rgnLast, rgnNew, RGN_XOR); + end; + end; + + { Save the DC state so that the clipping region can be restored } + SaveIndex := SaveDC(DC); + try + if (Brush <> BrushLast) and (OldRect <> nil) then begin + { Brushes are different -- erase old region first } + SelectClipRgn(DC, rgnLast); + GetClipBox(DC, R); + SelectObject(DC, BrushLast); + PatBlt(DC, R.Left, R.Top, R.Right-R.Left, R.Bottom-R.Top, PATINVERT); + end; + + { Draw into the update/new region } + if rgnUpdate <> 0 then + SelectClipRgn(DC, rgnUpdate) + else + SelectClipRgn(DC, rgnNew); + GetClipBox(DC, R); + SelectObject(DC, Brush); + PatBlt(DC, R.Left, R.Top, R.Right-R.Left, R.Bottom-R.Top, PATINVERT); + finally + { Clean up DC } + RestoreDC(DC, SaveIndex); + end; + + { Free regions } + if rgnNew <> 0 then DeleteObject(rgnNew); + if rgnOutside <> 0 then DeleteObject(rgnOutside); + if rgnInside <> 0 then DeleteObject(rgnInside); + if rgnLast <> 0 then DeleteObject(rgnLast); + if rgnUpdate <> 0 then DeleteObject(rgnUpdate); +end; + +function CreateHalftoneBrush: HBRUSH; +const + Patterns: array[Boolean] of Word = ($5555, $AAAA); +var + I: Integer; + GrayPattern: array[0..7] of Word; + GrayBitmap: HBITMAP; +begin + for I := 0 to 7 do + GrayPattern[I] := Patterns[Odd(I)]; + GrayBitmap := CreateBitmap(8, 8, 1, 1, @GrayPattern); + Result := CreatePatternBrush(GrayBitmap); + DeleteObject(GrayBitmap); +end; + +procedure DrawHalftoneInvertRect(const DC: HDC; const NewRect, OldRect: PRect; + const NewSize, OldSize: TSize); +var + Brush: HBRUSH; +begin + Brush := CreateHalftoneBrush; + try + DrawInvertRect(DC, NewRect, OldRect, NewSize, OldSize, Brush, Brush); + finally + DeleteObject(Brush); + end; +end; + +function MethodsEqual(const M1, M2: TMethod): Boolean; +begin + Result := (M1.Code = M2.Code) and (M1.Data = M2.Data); +end; + +function GetRectOfPrimaryMonitor(const WorkArea: Boolean): TRect; +begin + if not WorkArea or not SystemParametersInfo(SPI_GETWORKAREA, 0, @Result, 0) then + Result := Rect(0, 0, Screen.Width, Screen.Height); +end; + +function UsingMultipleMonitors: Boolean; +{ Returns True if the system has more than one display monitor configured. } +var + NumMonitors: Integer; +begin + NumMonitors := GetSystemMetrics(80 {SM_CMONITORS}); + Result := (NumMonitors <> 0) and (NumMonitors <> 1); + { ^ NumMonitors will be zero if not running Win98, NT 5, or later } +end; + +type + HMONITOR = type Integer; + PMonitorInfoA = ^TMonitorInfoA; + TMonitorInfoA = record + cbSize: DWORD; + rcMonitor: TRect; + rcWork: TRect; + dwFlags: DWORD; + end; +const + MONITOR_DEFAULTTONEAREST = $2; +type + TMultiMonApis = record + funcMonitorFromRect: function(lprcScreenCoords: PRect; dwFlags: DWORD): HMONITOR; stdcall; + funcMonitorFromPoint: function(ptScreenCoords: TPoint; dwFlags: DWORD): HMONITOR; stdcall; + funcMonitorFromWindow: function(hWnd: HWND; dwFlags: DWORD): HMONITOR; stdcall; + funcGetMonitorInfoA: function(hMonitor: HMONITOR; lpMonitorInfo: PMonitorInfoA): BOOL; stdcall; + end; + +{ Under D4 I could be using the MultiMon unit for the multiple monitor + function imports, but its stubs for MonitorFromRect and MonitorFromPoint + are seriously bugged... So I chose to avoid the MultiMon unit entirely. } + +function InitMultiMonApis(var Apis: TMultiMonApis): Boolean; +var + User32Handle: THandle; +begin + User32Handle := GetModuleHandle(user32); + Apis.funcMonitorFromRect := GetProcAddress(User32Handle, 'MonitorFromRect'); + Apis.funcMonitorFromPoint := GetProcAddress(User32Handle, 'MonitorFromPoint'); + Apis.funcMonitorFromWindow := GetProcAddress(User32Handle, 'MonitorFromWindow'); + Apis.funcGetMonitorInfoA := GetProcAddress(User32Handle, 'GetMonitorInfoA'); + Result := Assigned(Apis.funcMonitorFromRect) and + Assigned(Apis.funcMonitorFromPoint) and Assigned(Apis.funcGetMonitorInfoA); +end; + +function GetRectOfMonitorContainingRect(const R: TRect; + const WorkArea: Boolean): TRect; +{ Returns the work area of the monitor which the rectangle R intersects with + the most, or the monitor nearest R if no monitors intersect. } +var + Apis: TMultiMonApis; + M: HMONITOR; + MonitorInfo: TMonitorInfoA; +begin + if UsingMultipleMonitors and InitMultiMonApis(Apis) then begin + M := Apis.funcMonitorFromRect(@R, MONITOR_DEFAULTTONEAREST); + MonitorInfo.cbSize := SizeOf(MonitorInfo); + if Apis.funcGetMonitorInfoA(M, @MonitorInfo) then begin + if not WorkArea then + Result := MonitorInfo.rcMonitor + else + Result := MonitorInfo.rcWork; + Exit; + end; + end; + Result := GetRectOfPrimaryMonitor(WorkArea); +end; + +function GetRectOfMonitorContainingPoint(const P: TPoint; + const WorkArea: Boolean): TRect; +{ Returns the screen area of the monitor containing the point P, or the monitor + nearest P if P isn't in any monitor's work area. } +var + Apis: TMultiMonApis; + M: HMONITOR; + MonitorInfo: TMonitorInfoA; +begin + if UsingMultipleMonitors and InitMultiMonApis(Apis) then begin + M := Apis.funcMonitorFromPoint(P, MONITOR_DEFAULTTONEAREST); + MonitorInfo.cbSize := SizeOf(MonitorInfo); + if Apis.funcGetMonitorInfoA(M, @MonitorInfo) then begin + if not WorkArea then + Result := MonitorInfo.rcMonitor + else + Result := MonitorInfo.rcWork; + Exit; + end; + end; + Result := GetRectOfPrimaryMonitor(WorkArea); +end; + +function GetRectOfMonitorContainingWindow(const W: HWND; + const WorkArea: Boolean): TRect; +var + Apis: TMultiMonApis; + M: HMONITOR; + MonitorInfo: TMonitorInfoA; +begin + if UsingMultipleMonitors and InitMultiMonApis(Apis) then begin + M := Apis.funcMonitorFromWindow(W, MONITOR_DEFAULTTONEAREST); + MonitorInfo.cbSize := SizeOf(MonitorInfo); + if Apis.funcGetMonitorInfoA(M, @MonitorInfo) then begin + if not WorkArea then + Result := MonitorInfo.rcMonitor + else + Result := MonitorInfo.rcWork; + Exit; + end; + end; + Result := GetRectOfPrimaryMonitor(WorkArea); +end; + +var + TrackMouseEventInited: BOOL; + +procedure InitTrackMouseEvent; +var + TrackMouseEventComCtlModule: THandle; +begin + { First look for TrackMouseEvent which is available on Windows 98 & NT 4 only. + If it doesn't exist, look for _TrackMouseEvent which is available on + Windows 95 if IE 3.0 or later is installed. } + if not TrackMouseEventInited then begin + TrackMouseEventFunc := GetProcAddress(GetModuleHandle(user32), + 'TrackMouseEvent'); + if @TrackMouseEventFunc = nil then begin + TrackMouseEventComCtlModule := + {$IFDEF JR_D5} SafeLoadLibrary {$ELSE} LoadLibrary {$ENDIF} (comctl32); + if TrackMouseEventComCtlModule <> 0 then + TrackMouseEventFunc := GetProcAddress(TrackMouseEventComCtlModule, + '_TrackMouseEvent'); + end; + InterlockedExchange(Integer(TrackMouseEventInited), Ord(True)); + end; +end; + +function CallTrackMouseEvent(const Wnd: HWND; const Flags: DWORD): Boolean; +var + Track: TTrackMouseEvent; +begin + Result := False; + if Assigned(TrackMouseEventFunc) then begin + Track.cbSize := SizeOf(Track); + Track.dwFlags := Flags; + Track.hwndTrack := Wnd; + Track.dwHoverTime := 0; + Result := TrackMouseEventFunc(Track); + end; +end; + +{$IFNDEF JR_D5} +procedure FreeAndNil(var Obj); +var + P: TObject; +begin + P := TObject(Obj); + TObject(Obj) := nil; + P.Free; +end; +{$ENDIF} + +function EnumFontsProc(const lplf: TLogFont; const lptm: TTextMetric; + dwType: DWORD; lpData: LPARAM): Integer; stdcall; +begin + Boolean(Pointer(lpData)^) := True; + Result := 0; +end; + +function CreateRotatedFont(DC: HDC): HFONT; +{ Creates a font based on the DC's current font, but rotated 270 degrees } +var + LogFont: TLogFont; + TM: TTextMetric; + VerticalFontName: array[0..LF_FACESIZE-1] of Char; + VerticalFontExists: Boolean; +begin + if GetObject(GetCurrentObject(DC, OBJ_FONT), SizeOf(LogFont), + @LogFont) = 0 then begin + { just in case... } + Result := 0; + Exit; + end; + LogFont.lfEscapement := 2700; + LogFont.lfOrientation := 2700; + LogFont.lfOutPrecision := OUT_TT_ONLY_PRECIS; { needed for Win9x } + + { Don't let a random TrueType font be substituted when MS Sans Serif or + Microsoft Sans Serif are used. Hard-code Arial. } + if (StrIComp(LogFont.lfFaceName, 'MS Sans Serif') = 0) or + (StrIComp(LogFont.lfFaceName, 'Microsoft Sans Serif') = 0) then begin + StrPCopy(LogFont.lfFaceName, 'Arial'); + { Set lfHeight to the actual height of the current font. This is needed + to work around a Windows 98 issue: on a clean install of the OS, + SPI_GETNONCLIENTMETRICS returns -5 for lfSmCaptionFont.lfHeight. This is + wrong; it should return -11 for an 8 pt font. With normal, unrotated text + this actually displays correctly, since MS Sans Serif doesn't support + sizes below 8 pt. However, when we change to a TrueType font like Arial, + this becomes a problem because it'll actually create a font that small. } + if GetTextMetrics(DC, TM) then begin + { If the original height was negative, keep it negative } + if LogFont.lfHeight <= 0 then + LogFont.lfHeight := -(TM.tmHeight - TM.tmInternalLeading) + else + LogFont.lfHeight := TM.tmHeight; + end; + end; + + { Use a vertical font if available so that Asian characters aren't drawn + sideways } + if StrLen(LogFont.lfFaceName) < SizeOf(VerticalFontName)-1 then begin + VerticalFontName[0] := '@'; + StrCopy(@VerticalFontName[1], LogFont.lfFaceName); + VerticalFontExists := False; + EnumFonts(DC, VerticalFontName, @EnumFontsProc, @VerticalFontExists); + if VerticalFontExists then + StrCopy(LogFont.lfFaceName, VerticalFontName); + end; + + Result := CreateFontIndirect(LogFont); +end; + +procedure DrawRotatedText(const DC: HDC; AText: String; const ARect: TRect; + const AFormat: Cardinal); +{ Like DrawText, but draws the text at a 270 degree angle. + The format flag this function respects are + DT_NOPREFIX, DT_HIDEPREFIX, DT_CENTER, DT_END_ELLIPSIS, DT_NOCLIP } +var + RotatedFont, SaveFont: HFONT; + TextMetrics: TTextMetric; + X, Y, P, I, SU, FU, W: Integer; + SaveAlign: UINT; + SavePen, Pen: HPEN; + Clip: Boolean; + + function GetSize(DC: HDC; const S: string): Integer; + var + Size: TSize; + begin + GetTextExtentPoint32(DC, PChar(S), Length(S), Size); + Result := Size.cx; + end; + +begin + if Length(AText) = 0 then Exit; + + RotatedFont := CreateRotatedFont(DC); + SaveFont := SelectObject(DC, RotatedFont); + + GetTextMetrics(DC, TextMetrics); + X := ARect.Left + ((ARect.Right - ARect.Left) - TextMetrics.tmHeight) div 2; + + Clip := (AFormat and DT_NOCLIP) <> DT_NOCLIP; + + { Find the index of the character that should be underlined. Delete '&' + characters from the string. Like DrawText, only the last prefixed character + will be underlined. } + P := 0; + I := 1; + if (AFormat and DT_NOPREFIX) <> DT_NOPREFIX then + while I <= Length(AText) do begin + if AText[I] in LeadBytes then + Inc(I) + else if AText[I] = '&' then begin + Delete(AText, I, 1); + { Note: PChar cast is so that if Delete deleted the last character in + the string, we don't step past the end of the string (which would cause + an AV if AText is now empty), but rather look at the null character + and treat it as an accelerator key like DrawText. } + if PChar(AText)[I-1] <> '&' then + P := I; + end; + Inc(I); + end; + + if (AFormat and DT_END_ELLIPSIS) = DT_END_ELLIPSIS then + begin + if (Length(AText) > 1) and (GetSize(DC, AText) > ARect.Bottom - ARect.Top) then + begin + W := ARect.Bottom - ARect.Top; + if W > 2 then + begin + Delete(AText, Length(AText), 1); + while (Length(AText) > 1) and (GetSize(DC, AText + '...') > W) do + Delete(AText, Length(AText), 1); + end + else AText := AText[1]; + if P > Length(AText) then P := 0; + AText := AText + '...'; + end; + end; + + if (AFormat and DT_CENTER) = DT_CENTER then + Y := ARect.Top + ((ARect.Bottom - ARect.Top) - GetSize(DC, AText)) div 2 + else + Y := ARect.Top; + + if Clip then + begin + SaveDC(DC); + with ARect do IntersectClipRect(DC, Left, Top, Right, Bottom); + end; + + SaveAlign := SetTextAlign(DC, TA_BOTTOM); + TextOut(DC, X, Y, PChar(AText), Length(AText)); + SetTextAlign(DC, SaveAlign); + { Underline } + if (P > 0) and (AFormat and DT_HIDEPREFIX = 0) then begin + SU := GetTextWidth(DC, Copy(AText, 1, P-1), False); + FU := SU + GetTextWidth(DC, PChar(AText)[P-1], False); + Inc(X, TextMetrics.tmDescent - 2); + Pen := CreatePen(PS_SOLID, 1, GetTextColor(DC)); + SavePen := SelectObject(DC, Pen); + MoveToEx(DC, X, Y + SU, nil); + LineTo(DC, X, Y + FU); + SelectObject(DC, SavePen); + DeleteObject(Pen); + end; + + if Clip then RestoreDC(DC, -1); + + SelectObject(DC, SaveFont); + DeleteObject(RotatedFont); +end; + +function NeedToPlaySound(const Alias: String): Boolean; +{ This function checks the registry to see if the specified sound event alias + is assigned to a file. + The purpose of having this function is so it can avoid calls to PlaySound if + possible, because on Windows 2000 there is an annoying 1/3 second delay on + the first call to PlaySound. + Windows Explorer actually uses this same technique when playing sounds for + the Start menu. } +var + K: HKEY; + Data: array[0..3] of WideChar; + DataSize: DWORD; + ErrorCode: Longint; +begin + if (Win32MajorVersion < 5) or (Win32Platform <> VER_PLATFORM_WIN32_NT) then begin + { No need to check pre-Windows 2000 versions since their PlaySound + functions don't have the delay; always return True. } + Result := True; + Exit; + end; + Result := False; + if RegOpenKeyEx(HKEY_CURRENT_USER, + PChar('AppEvents\Schemes\Apps\.Default\' + Alias + '\.Current'), + 0, KEY_QUERY_VALUE, K) = ERROR_SUCCESS then begin + DataSize := SizeOf(Data); + { Note: Use the 'W' version of RegQueryValueEx for more speed } + ErrorCode := RegQueryValueExW(K, nil, nil, nil, @Data, @DataSize); + if ((ErrorCode = ERROR_SUCCESS) and (Data[0] <> #0)) or + (ErrorCode = ERROR_MORE_DATA) then + Result := True; + RegCloseKey(K); + end; +end; + +function Max(A, B: Integer): Integer; +begin + if A >= B then + Result := A + else + Result := B; +end; + +function Min(A, B: Integer): Integer; +begin + if A <= B then + Result := A + else + Result := B; +end; + +function FindAccelChar(const S: String): Char; +{ Finds the last accelerator key in S. Returns #0 if no accelerator key was + found. '&&' is ignored. } +var + P: PChar; +begin + P := PChar(S); + Result := #0; + while True do begin + P := AnsiStrScan(P, '&'); + if P = nil then Break; + Inc(P); + if P^ <> '&' then begin + if P^ = #0 then Break; + Result := P^; + end; + Inc(P); + end; +end; + +function IsWindowsXP: Boolean; +begin + Result := (Win32Platform = VER_PLATFORM_WIN32_NT) and + ((Win32MajorVersion > 5) or + ((Win32MajorVersion = 5) and (Win32MinorVersion >= 1))); +end; + +function GetInputLocaleCodePage: UINT; +{ Returns the code page identifier of the active input locale, or CP_ACP if + for some unknown reason it couldn't be determined. } +var + Buf: array[0..15] of Char; + ErrorCode: Integer; +begin + if GetLocaleInfo(GetKeyboardLayout(0) and $FFFF, LOCALE_IDEFAULTANSICODEPAGE, + Buf, SizeOf(Buf)) > 0 then begin + Buf[High(Buf)] := #0; { ensure null termination, just in case... } + Val(Buf, Result, ErrorCode); + { Just to be *completely* safe, verify that the code page returned by + GetLocaleInfo actually exists. The result of this function may be fed + into WideCharToMultiByte, and we don't want WideCharToMultiByte to fail + entirely because of a bad code page. } + if (ErrorCode <> 0) or not IsValidCodePage(Result) then + Result := CP_ACP; + end + else + Result := CP_ACP; +end; + +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2Common.pas.orig b/official/2.1.6+2.1.beta1/Source/TB2Common.pas.orig new file mode 100644 index 0000000..b755a56 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2Common.pas.orig @@ -0,0 +1,1043 @@ +unit TB2Common; + +{ + Toolbar2000 + Copyright (C) 1998-2005 by Jordan Russell + All rights reserved. + + The contents of this file are subject to the "Toolbar2000 License"; you may + not use or distribute this file except in compliance with the + "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in + TB2k-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + + Alternatively, the contents of this file may be used under the terms of the + GNU General Public License (the "GPL"), in which case the provisions of the + GPL are applicable instead of those in the "Toolbar2000 License". A copy of + the GPL may be found in GPL-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + If you wish to allow use of your version of this file only under the terms of + the GPL and not to allow others to use your version of this file under the + "Toolbar2000 License", indicate your decision by deleting the provisions + above and replace them with the notice and other provisions required by the + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + + $jrsoftware: tb2k/Source/TB2Common.pas,v 1.31 2005/06/29 20:10:10 jr Exp $ +} + +interface + +{$I TB2Ver.inc} + +uses + Windows, Classes, SysUtils, Messages, Controls, Forms; + +type + TListSortExCompare = function(const Item1, Item2, ExtraData: Pointer): Integer; + THandleWMPrintNCPaintProc = procedure(Wnd: HWND; DC: HDC; AppData: Longint); + +function AddToFrontOfList(var List: TList; Item: Pointer): Boolean; +function AddToList(var List: TList; Item: Pointer): Boolean; +function ApplicationIsActive: Boolean; +function AreFlatMenusEnabled: Boolean; +function AreKeyboardCuesEnabled: Boolean; +function CallTrackMouseEvent(const Wnd: HWND; const Flags: DWORD): Boolean; +function CreateHalftoneBrush: HBRUSH; +function CreateNullRegion: HRGN; +function CreateRotatedFont(DC: HDC): HFONT; +function DivRoundUp(const Dividend, Divisor: Integer): Integer; +procedure DrawHalftoneInvertRect(const DC: HDC; const NewRect, OldRect: PRect; + const NewSize, OldSize: TSize); +procedure DrawRotatedText(const DC: HDC; AText: String; const ARect: TRect; + const AFormat: Cardinal); +procedure DrawInvertRect(const DC: HDC; const NewRect, OldRect: PRect; + const NewSize, OldSize: TSize; const Brush: HBRUSH; BrushLast: HBRUSH); +function EscapeAmpersands(const S: String): String; +function FindAccelChar(const S: String): Char; +{$IFNDEF JR_D5} +procedure FreeAndNil(var Obj); +{$ENDIF} +function GetInputLocaleCodePage: UINT; +function GetMenuShowDelay: Integer; +function GetRectOfMonitorContainingPoint(const P: TPoint; const WorkArea: Boolean): TRect; +function GetRectOfMonitorContainingRect(const R: TRect; const WorkArea: Boolean): TRect; +function GetRectOfMonitorContainingWindow(const W: HWND; const WorkArea: Boolean): TRect; +function GetRectOfPrimaryMonitor(const WorkArea: Boolean): TRect; +function GetTextHeight(const DC: HDC): Integer; +function GetTextWidth(const DC: HDC; S: String; const Prefix: Boolean): Integer; +procedure HandleWMPrint(const Wnd: HWND; var Message: TMessage; + const NCPaintFunc: THandleWMPrintNCPaintProc; const AppData: Longint); +procedure HandleWMPrintClient(const Control: TWinControl; + var Message: TMessage); +function IsWindowsXP: Boolean; +procedure ListSortEx(const List: TList; const Compare: TListSortExCompare; + const ExtraData: Pointer); +procedure InitTrackMouseEvent; +function Max(A, B: Integer): Integer; +function Min(A, B: Integer): Integer; +function MethodsEqual(const M1, M2: TMethod): Boolean; +function NeedToPlaySound(const Alias: String): Boolean; +procedure ProcessPaintMessages; +procedure RemoveMessages(const AMin, AMax: Integer); +procedure RemoveFromList(var List: TList; Item: Pointer); +procedure SelectNCUpdateRgn(Wnd: HWND; DC: HDC; Rgn: HRGN); +function StripAccelChars(const S: String): String; +function StripTrailingPunctuation(const S: String): String; +function UsingMultipleMonitors: Boolean; + +const + PopupMenuWindowNCSize = 3; + DT_HIDEPREFIX = $00100000; + +var + TrackMouseEventFunc: function(var EventTrack: TTrackMouseEvent): BOOL; stdcall; + +implementation + +uses + TB2Version; + +function ApplicationIsActive: Boolean; +{ Returns True if the application is in the foreground } +begin + Result := GetActiveWindow <> 0; +end; + +{$IFNDEF JR_D3} +function CopyPalette(Palette: HPALETTE): HPALETTE; +var + PaletteSize: Integer; + LogPal: TMaxLogPalette; +begin + Result := 0; + if Palette = 0 then Exit; + PaletteSize := 0; + if GetObject(Palette, SizeOf(PaletteSize), @PaletteSize) = 0 then Exit; + if PaletteSize = 0 then Exit; + with LogPal do begin + palVersion := $0300; + palNumEntries := PaletteSize; + GetPaletteEntries(Palette, 0, PaletteSize, palPalEntry); + end; + Result := CreatePalette(PLogPalette(@LogPal)^); +end; +{$ENDIF} + +procedure ListSortEx(const List: TList; const Compare: TListSortExCompare; + const ExtraData: Pointer); +{ Similar to TList.Sort, but lets you pass a user-defined ExtraData pointer } + procedure QuickSortEx(L: Integer; const R: Integer); + var + I, J: Integer; + P: Pointer; + begin + repeat + I := L; + J := R; + P := List[(L + R) shr 1]; + repeat + while Compare(List[I], P, ExtraData) < 0 do Inc(I); + while Compare(List[J], P, ExtraData) > 0 do Dec(J); + if I <= J then + begin + List.Exchange(I, J); + Inc(I); + Dec(J); + end; + until I > J; + if L < J then QuickSortEx(L, J); + L := I; + until I >= R; + end; +begin + if List.Count > 1 then + QuickSortEx(0, List.Count-1); +end; + +type + PPrintEnumProcData = ^TPrintEnumProcData; + TPrintEnumProcData = record + PrintChildren: Boolean; + ParentWnd: HWND; + DC: HDC; + PrintFlags: LPARAM; + end; + +function PrintEnumProc(Wnd: HWND; LParam: LPARAM): BOOL; stdcall; +var + R: TRect; + SaveIndex: Integer; +begin + Result := True; { continue enumerating } + with PPrintEnumProcData(LParam)^ do begin + { Skip window if it isn't a child/owned window of ParentWnd or isn't visible } + if (HWND(GetWindowLong(Wnd, GWL_HWNDPARENT)) <> ParentWnd) or + (GetWindowLong(Wnd, GWL_STYLE) and WS_VISIBLE = 0) then + { ^ don't use IsWindowVisible since it returns False if the window's + parent window is not visible } + Exit; + GetWindowRect(Wnd, R); + MapWindowPoints(0, ParentWnd, R, 2); + SaveIndex := SaveDC(DC); + { Like Windows, offset the window origin to the top-left coordinates of + the child/owned window } + MoveWindowOrg(DC, R.Left, R.Top); + { Like Windows, intersect the clipping region with the entire rectangle of + the child/owned window } + OffsetRect(R, -R.Left, -R.Top); + IntersectClipRect(DC, R.Left, R.Top, R.Right, R.Bottom); + { Send a WM_PRINT message to the child/owned window } + SendMessage(Wnd, WM_PRINT, WPARAM(DC), PrintFlags); + { Restore the DC's state, in case the WM_PRINT handler didn't put things + back the way it found them } + RestoreDC(DC, SaveIndex); + end; +end; + +procedure HandleWMPrint(const Wnd: HWND; var Message: TMessage; + const NCPaintFunc: THandleWMPrintNCPaintProc; const AppData: Longint); +{ note: AppData is an application-defined value which is passed to NCPaintFunc } +var + DC: HDC; + SaveIndex, SaveIndex2: Integer; + R: TRect; + P: TPoint; + Data: TPrintEnumProcData; +begin + if (Message.LParam and PRF_CHECKVISIBLE = 0) or IsWindowVisible(Wnd) then begin + DC := HDC(Message.WParam); + SaveIndex2 := SaveDC(DC); + try + if Message.LParam and PRF_NONCLIENT <> 0 then begin + SaveIndex := SaveDC(DC); + if Assigned(NCPaintFunc) then + NCPaintFunc(Wnd, DC, AppData); + RestoreDC(DC, SaveIndex); + end; + { Calculate the difference between the top-left corner of the window + and the top-left corner of its client area } + GetWindowRect(Wnd, R); + P.X := 0; P.Y := 0; + ClientToScreen(Wnd, P); + Dec(P.X, R.Left); Dec(P.Y, R.Top); + if Message.LParam and PRF_CLIENT <> 0 then begin + { Like Windows, the flags PRF_ERASEBKGND, PRF_CHILDREN, and PRF_OWNED + are ignored if PRF_CLIENT isn't also specified } + if Message.LParam and PRF_ERASEBKGND <> 0 then begin + { Send WM_ERASEBKGND } + SaveIndex := SaveDC(DC); + if Message.LParam and PRF_NONCLIENT <> 0 then + MoveWindowOrg(DC, P.X, P.Y); + SendMessage(Wnd, WM_ERASEBKGND, Message.WParam, 0); + RestoreDC(DC, SaveIndex); + end; + { Send WM_PRINTCLIENT } + SaveIndex := SaveDC(DC); + if Message.LParam and PRF_NONCLIENT <> 0 then + MoveWindowOrg(DC, P.X, P.Y); + SendMessage(Wnd, WM_PRINTCLIENT, Message.WParam, 0); + RestoreDC(DC, SaveIndex); + { Like Windows, always offset child/owned windows by the size of the + client area even if PRF_NONCLIENT isn't specified (a bug?) } + MoveWindowOrg(DC, P.X, P.Y); + Data.ParentWnd := Wnd; + Data.DC := DC; + { Send WM_PRINT to child/owned windows } + if Message.LParam and PRF_CHILDREN <> 0 then begin + Data.PrintChildren := True; + Data.PrintFlags := PRF_NONCLIENT or PRF_CLIENT or PRF_ERASEBKGND or + PRF_CHILDREN; { same flags as Windows passes to children } + EnumChildWindows(Wnd, @PrintEnumProc, LPARAM(@Data)); + end; + if Message.LParam and PRF_OWNED <> 0 then begin + Data.PrintChildren := False; + Data.PrintFlags := Message.LParam; + EnumWindows(@PrintEnumProc, LPARAM(@Data)); + end; + end; + finally + RestoreDC(DC, SaveIndex2); + end; + end; + { Windows' WM_PRINT returns 1. I'm not sure why. } + Message.Result := 1; +end; + +type + TWinControlAccess = class(TWinControl); + +procedure HandleWMPrintClient(const Control: TWinControl; var Message: TMessage); +var + Msg: TWMPaint; + SaveIndex: Integer; +begin + Msg.Msg := WM_PAINT; + Msg.DC := HDC(Message.WParam); + Msg.Unused := 0; + Msg.Result := 0; + SaveIndex := SaveDC(HDC(Message.WParam)); + try + TWinControlAccess(Control).PaintHandler(Msg); + finally + RestoreDC(HDC(Message.WParam), SaveIndex); + end; +end; + +function DivRoundUp(const Dividend, Divisor: Integer): Integer; +{ Similar to the 'div' operator, but if there is a remainder it always rounds + the result up one (or down if the result is negative). } +asm + mov ecx, edx + cdq + idiv ecx + test edx, edx + jz @@1 + test eax, eax + jns @@2 + dec eax + jmp @@1 + @@2: + inc eax + @@1: +end; + +function GetTextHeight(const DC: HDC): Integer; +var + TextMetric: TTextMetric; +begin + GetTextMetrics(DC, TextMetric); + Result := TextMetric.tmHeight; +end; + +function StripAccelChars(const S: String): String; +var + I: Integer; +begin + Result := S; + I := 1; + while I <= Length(Result) do begin + if not(Result[I] in LeadBytes) then begin + if Result[I] = '&' then + System.Delete(Result, I, 1); + Inc(I); + end + else + Inc(I, 2); + end; +end; + +function EscapeAmpersands(const S: String): String; +{ Replaces any '&' characters with '&&' } +var + I: Integer; +begin + Result := S; + I := 1; + while I <= Length(Result) do begin + if not(Result[I] in LeadBytes) then begin + if Result[I] = '&' then begin + Inc(I); + Insert('&', Result, I); + end; + Inc(I); + end + else + Inc(I, 2); + end; +end; + +function StripTrailingPunctuation(const S: String): String; +{ Removes any colon (':') or ellipsis ('...') from the end of S and returns + the resulting string } +var + L: Integer; +begin + Result := S; + L := Length(Result); + if (L > 1) and (Result[L] = ':') and (ByteType(Result, L) = mbSingleByte) then + SetLength(Result, L-1) + else if (L > 3) and (Result[L-2] = '.') and (Result[L-1] = '.') and + (Result[L] = '.') and (ByteType(Result, L-2) = mbSingleByte) then + SetLength(Result, L-3); +end; + +function GetTextWidth(const DC: HDC; S: String; const Prefix: Boolean): Integer; +{ Returns the width of the specified string using the font currently selected + into DC. If Prefix is True, it first removes "&" characters as necessary. } +var + Size: TSize; +begin + { This procedure is 10x faster than using DrawText with the DT_CALCRECT flag } + if Prefix then + S := StripAccelChars(S); + GetTextExtentPoint32(DC, PChar(S), Length(S), Size); + Result := Size.cx; +end; + +procedure ProcessPaintMessages; +{ Dispatches all pending WM_PAINT messages. In effect, this is like an + 'UpdateWindow' on all visible windows } +var + Msg: TMsg; +begin + while PeekMessage(Msg, 0, WM_PAINT, WM_PAINT, PM_NOREMOVE) do begin + case Integer(GetMessage(Msg, 0, WM_PAINT, WM_PAINT)) of + -1: Break; { if GetMessage failed } + 0: begin + { Repost WM_QUIT messages } + PostQuitMessage(Msg.WParam); + Break; + end; + end; + DispatchMessage(Msg); + end; +end; + +procedure RemoveMessages(const AMin, AMax: Integer); +{ Removes any messages with the specified ID from the queue } +var + Msg: TMsg; +begin + while PeekMessage(Msg, 0, AMin, AMax, PM_REMOVE) do begin + if Msg.message = WM_QUIT then begin + { Repost WM_QUIT messages } + PostQuitMessage(Msg.WParam); + Break; + end; + end; +end; + +procedure SelectNCUpdateRgn(Wnd: HWND; DC: HDC; Rgn: HRGN); +var + R: TRect; + NewClipRgn: HRGN; +begin + if (Rgn <> 0) and (Rgn <> 1) then begin + GetWindowRect(Wnd, R); + if SelectClipRgn(DC, Rgn) = ERROR then begin + NewClipRgn := CreateRectRgnIndirect(R); + SelectClipRgn(DC, NewClipRgn); + DeleteObject(NewClipRgn); + end; + OffsetClipRgn(DC, -R.Left, -R.Top); + end; +end; + +function AddToList(var List: TList; Item: Pointer): Boolean; +{ Returns True if Item didn't already exist in the list } +begin + if List = nil then + List := TList.Create; + Result := List.IndexOf(Item) = -1; + if Result then + List.Add(Item); +end; + +function AddToFrontOfList(var List: TList; Item: Pointer): Boolean; +{ Returns True if Item didn't already exist in the list } +begin + if List = nil then + List := TList.Create; + Result := List.IndexOf(Item) = -1; + if Result then + List.Insert(0, Item); +end; + +procedure RemoveFromList(var List: TList; Item: Pointer); +begin + if Assigned(List) then begin + List.Remove(Item); + if List.Count = 0 then begin + List.Free; + List := nil; + end; + end; +end; + +var + RegMenuShowDelay: Integer; + RegMenuShowDelayInited: BOOL = False; +function GetMenuShowDelay: Integer; +const + DefaultMenuShowDelay = 400; + function ReadMenuShowDelayFromRegistry: Integer; + var + K: HKEY; + Typ, DataSize: DWORD; + Data: array[0..31] of Char; + Res: Longint; + E: Integer; + begin + Result := DefaultMenuShowDelay; + if RegOpenKeyEx(HKEY_CURRENT_USER, 'Control Panel\Desktop', 0, + KEY_QUERY_VALUE, K) = ERROR_SUCCESS then begin + DataSize := SizeOf(Data); + Res := RegQueryValueEx(K, 'MenuShowDelay', nil, @Typ, @Data, @DataSize); + RegCloseKey(K); + if Res <> ERROR_FILE_NOT_FOUND then begin + if (Res <> ERROR_SUCCESS) or (Typ <> REG_SZ) then + Result := 0 + else begin + Val(Data, Result, E); + if E <> 0 then Result := 0; + end; + end; + end; + end; +begin + if Lo(GetVersion) >= 4 then begin + if not SystemParametersInfo(106{SPI_GETMENUSHOWDELAY}, 0, @Result, 0) then begin + { SPI_GETMENUSHOWDELAY is only supported by Windows NT 4.0 and Windows 98. + On Windows 95, it must use the registry to retrieve this setting. } + if not RegMenuShowDelayInited then begin + RegMenuShowDelay := ReadMenuShowDelayFromRegistry; + InterlockedExchange(Integer(RegMenuShowDelayInited), Ord(True)); + end; + Result := RegMenuShowDelay; + end; + if Result < 0 then Result := 0; + end + else + Result := DefaultMenuShowDelay; +end; + +function AreFlatMenusEnabled: Boolean; +{ Returns True if "flat menus" are enabled. Always returns False on pre-XP + Windows versions. } +const + SPI_GETFLATMENU = $1022; +var + FlatMenusEnabled: BOOL; +begin + { Interestingly, on Windows 2000, SystemParametersInfo(SPI_GETFLATMENU, ...) + succeeds and can return True in pvParam^ if the proper bit is set in + UserPreferencesMask. Since flat menus are not really used on Windows + 2000, call IsWindowsXP first to see if we're running at least XP. } + Result := IsWindowsXP and SystemParametersInfo(SPI_GETFLATMENU, 0, + @FlatMenusEnabled, 0) and FlatMenusEnabled; +end; + +function AreKeyboardCuesEnabled: Boolean; +{ Returns True if "keyboard cues" are enabled. Always returns True on + pre-2000 Windows versions. } +const + SPI_GETKEYBOARDCUES = $100A; +var + CuesEnabled: BOOL; +begin + Result := (Win32MajorVersion < 5) or + not SystemParametersInfo(SPI_GETKEYBOARDCUES, 0, @CuesEnabled, 0) or + CuesEnabled; +end; + +function CreateNullRegion: HRGN; +var + R: TRect; +begin + SetRectEmpty(R); + Result := CreateRectRgnIndirect(R); +end; + +procedure DrawInvertRect(const DC: HDC; const NewRect, OldRect: PRect; + const NewSize, OldSize: TSize; const Brush: HBRUSH; BrushLast: HBRUSH); +{ Draws a dragging outline, hiding the old one if neccessary. This code is + based on MFC sources. + + Either NewRect or OldRect can be nil or empty. } +var + SaveIndex: Integer; + rgnNew, rgnOutside, rgnInside, rgnLast, rgnUpdate: HRGN; + R: TRect; +begin + rgnLast := 0; + rgnUpdate := 0; + + { First, determine the update region and select it } + if NewRect = nil then begin + SetRectEmpty(R); + rgnOutside := CreateRectRgnIndirect(R); + end + else begin + R := NewRect^; + rgnOutside := CreateRectRgnIndirect(R); + InflateRect(R, -NewSize.cx, -NewSize.cy); + IntersectRect(R, R, NewRect^); + end; + rgnInside := CreateRectRgnIndirect(R); + rgnNew := CreateNullRegion; + CombineRgn(rgnNew, rgnOutside, rgnInside, RGN_XOR); + + if BrushLast = 0 then + BrushLast := Brush; + + if OldRect <> nil then begin + { Find difference between new region and old region } + rgnLast := CreateNullRegion; + with OldRect^ do + SetRectRgn(rgnOutside, Left, Top, Right, Bottom); + R := OldRect^; + InflateRect(R, -OldSize.cx, -OldSize.cy); + IntersectRect(R, R, OldRect^); + SetRectRgn(rgnInside, R.Left, R.Top, R.Right, R.Bottom); + CombineRgn(rgnLast, rgnOutside, rgnInside, RGN_XOR); + + { Only diff them if brushes are the same } + if Brush = BrushLast then begin + rgnUpdate := CreateNullRegion; + CombineRgn(rgnUpdate, rgnLast, rgnNew, RGN_XOR); + end; + end; + + { Save the DC state so that the clipping region can be restored } + SaveIndex := SaveDC(DC); + try + if (Brush <> BrushLast) and (OldRect <> nil) then begin + { Brushes are different -- erase old region first } + SelectClipRgn(DC, rgnLast); + GetClipBox(DC, R); + SelectObject(DC, BrushLast); + PatBlt(DC, R.Left, R.Top, R.Right-R.Left, R.Bottom-R.Top, PATINVERT); + end; + + { Draw into the update/new region } + if rgnUpdate <> 0 then + SelectClipRgn(DC, rgnUpdate) + else + SelectClipRgn(DC, rgnNew); + GetClipBox(DC, R); + SelectObject(DC, Brush); + PatBlt(DC, R.Left, R.Top, R.Right-R.Left, R.Bottom-R.Top, PATINVERT); + finally + { Clean up DC } + RestoreDC(DC, SaveIndex); + end; + + { Free regions } + if rgnNew <> 0 then DeleteObject(rgnNew); + if rgnOutside <> 0 then DeleteObject(rgnOutside); + if rgnInside <> 0 then DeleteObject(rgnInside); + if rgnLast <> 0 then DeleteObject(rgnLast); + if rgnUpdate <> 0 then DeleteObject(rgnUpdate); +end; + +function CreateHalftoneBrush: HBRUSH; +const + Patterns: array[Boolean] of Word = ($5555, $AAAA); +var + I: Integer; + GrayPattern: array[0..7] of Word; + GrayBitmap: HBITMAP; +begin + for I := 0 to 7 do + GrayPattern[I] := Patterns[Odd(I)]; + GrayBitmap := CreateBitmap(8, 8, 1, 1, @GrayPattern); + Result := CreatePatternBrush(GrayBitmap); + DeleteObject(GrayBitmap); +end; + +procedure DrawHalftoneInvertRect(const DC: HDC; const NewRect, OldRect: PRect; + const NewSize, OldSize: TSize); +var + Brush: HBRUSH; +begin + Brush := CreateHalftoneBrush; + try + DrawInvertRect(DC, NewRect, OldRect, NewSize, OldSize, Brush, Brush); + finally + DeleteObject(Brush); + end; +end; + +function MethodsEqual(const M1, M2: TMethod): Boolean; +begin + Result := (M1.Code = M2.Code) and (M1.Data = M2.Data); +end; + +function GetRectOfPrimaryMonitor(const WorkArea: Boolean): TRect; +begin + if not WorkArea or not SystemParametersInfo(SPI_GETWORKAREA, 0, @Result, 0) then + Result := Rect(0, 0, Screen.Width, Screen.Height); +end; + +function UsingMultipleMonitors: Boolean; +{ Returns True if the system has more than one display monitor configured. } +var + NumMonitors: Integer; +begin + NumMonitors := GetSystemMetrics(80 {SM_CMONITORS}); + Result := (NumMonitors <> 0) and (NumMonitors <> 1); + { ^ NumMonitors will be zero if not running Win98, NT 5, or later } +end; + +type + HMONITOR = type Integer; + PMonitorInfoA = ^TMonitorInfoA; + TMonitorInfoA = record + cbSize: DWORD; + rcMonitor: TRect; + rcWork: TRect; + dwFlags: DWORD; + end; +const + MONITOR_DEFAULTTONEAREST = $2; +type + TMultiMonApis = record + funcMonitorFromRect: function(lprcScreenCoords: PRect; dwFlags: DWORD): HMONITOR; stdcall; + funcMonitorFromPoint: function(ptScreenCoords: TPoint; dwFlags: DWORD): HMONITOR; stdcall; + funcMonitorFromWindow: function(hWnd: HWND; dwFlags: DWORD): HMONITOR; stdcall; + funcGetMonitorInfoA: function(hMonitor: HMONITOR; lpMonitorInfo: PMonitorInfoA): BOOL; stdcall; + end; + +{ Under D4 I could be using the MultiMon unit for the multiple monitor + function imports, but its stubs for MonitorFromRect and MonitorFromPoint + are seriously bugged... So I chose to avoid the MultiMon unit entirely. } + +function InitMultiMonApis(var Apis: TMultiMonApis): Boolean; +var + User32Handle: THandle; +begin + User32Handle := GetModuleHandle(user32); + Apis.funcMonitorFromRect := GetProcAddress(User32Handle, 'MonitorFromRect'); + Apis.funcMonitorFromPoint := GetProcAddress(User32Handle, 'MonitorFromPoint'); + Apis.funcMonitorFromWindow := GetProcAddress(User32Handle, 'MonitorFromWindow'); + Apis.funcGetMonitorInfoA := GetProcAddress(User32Handle, 'GetMonitorInfoA'); + Result := Assigned(Apis.funcMonitorFromRect) and + Assigned(Apis.funcMonitorFromPoint) and Assigned(Apis.funcGetMonitorInfoA); +end; + +function GetRectOfMonitorContainingRect(const R: TRect; + const WorkArea: Boolean): TRect; +{ Returns the work area of the monitor which the rectangle R intersects with + the most, or the monitor nearest R if no monitors intersect. } +var + Apis: TMultiMonApis; + M: HMONITOR; + MonitorInfo: TMonitorInfoA; +begin + if UsingMultipleMonitors and InitMultiMonApis(Apis) then begin + M := Apis.funcMonitorFromRect(@R, MONITOR_DEFAULTTONEAREST); + MonitorInfo.cbSize := SizeOf(MonitorInfo); + if Apis.funcGetMonitorInfoA(M, @MonitorInfo) then begin + if not WorkArea then + Result := MonitorInfo.rcMonitor + else + Result := MonitorInfo.rcWork; + Exit; + end; + end; + Result := GetRectOfPrimaryMonitor(WorkArea); +end; + +function GetRectOfMonitorContainingPoint(const P: TPoint; + const WorkArea: Boolean): TRect; +{ Returns the screen area of the monitor containing the point P, or the monitor + nearest P if P isn't in any monitor's work area. } +var + Apis: TMultiMonApis; + M: HMONITOR; + MonitorInfo: TMonitorInfoA; +begin + if UsingMultipleMonitors and InitMultiMonApis(Apis) then begin + M := Apis.funcMonitorFromPoint(P, MONITOR_DEFAULTTONEAREST); + MonitorInfo.cbSize := SizeOf(MonitorInfo); + if Apis.funcGetMonitorInfoA(M, @MonitorInfo) then begin + if not WorkArea then + Result := MonitorInfo.rcMonitor + else + Result := MonitorInfo.rcWork; + Exit; + end; + end; + Result := GetRectOfPrimaryMonitor(WorkArea); +end; + +function GetRectOfMonitorContainingWindow(const W: HWND; + const WorkArea: Boolean): TRect; +var + Apis: TMultiMonApis; + M: HMONITOR; + MonitorInfo: TMonitorInfoA; +begin + if UsingMultipleMonitors and InitMultiMonApis(Apis) then begin + M := Apis.funcMonitorFromWindow(W, MONITOR_DEFAULTTONEAREST); + MonitorInfo.cbSize := SizeOf(MonitorInfo); + if Apis.funcGetMonitorInfoA(M, @MonitorInfo) then begin + if not WorkArea then + Result := MonitorInfo.rcMonitor + else + Result := MonitorInfo.rcWork; + Exit; + end; + end; + Result := GetRectOfPrimaryMonitor(WorkArea); +end; + +var + TrackMouseEventInited: BOOL; + +procedure InitTrackMouseEvent; +var + TrackMouseEventComCtlModule: THandle; +begin + { First look for TrackMouseEvent which is available on Windows 98 & NT 4 only. + If it doesn't exist, look for _TrackMouseEvent which is available on + Windows 95 if IE 3.0 or later is installed. } + if not TrackMouseEventInited then begin + TrackMouseEventFunc := GetProcAddress(GetModuleHandle(user32), + 'TrackMouseEvent'); + if @TrackMouseEventFunc = nil then begin + TrackMouseEventComCtlModule := + {$IFDEF JR_D5} SafeLoadLibrary {$ELSE} LoadLibrary {$ENDIF} (comctl32); + if TrackMouseEventComCtlModule <> 0 then + TrackMouseEventFunc := GetProcAddress(TrackMouseEventComCtlModule, + '_TrackMouseEvent'); + end; + InterlockedExchange(Integer(TrackMouseEventInited), Ord(True)); + end; +end; + +function CallTrackMouseEvent(const Wnd: HWND; const Flags: DWORD): Boolean; +var + Track: TTrackMouseEvent; +begin + Result := False; + if Assigned(TrackMouseEventFunc) then begin + Track.cbSize := SizeOf(Track); + Track.dwFlags := Flags; + Track.hwndTrack := Wnd; + Track.dwHoverTime := 0; + Result := TrackMouseEventFunc(Track); + end; +end; + +{$IFNDEF JR_D5} +procedure FreeAndNil(var Obj); +var + P: TObject; +begin + P := TObject(Obj); + TObject(Obj) := nil; + P.Free; +end; +{$ENDIF} + +function EnumFontsProc(const lplf: TLogFont; const lptm: TTextMetric; + dwType: DWORD; lpData: LPARAM): Integer; stdcall; +begin + Boolean(Pointer(lpData)^) := True; + Result := 0; +end; + +function CreateRotatedFont(DC: HDC): HFONT; +{ Creates a font based on the DC's current font, but rotated 270 degrees } +var + LogFont: TLogFont; + TM: TTextMetric; + VerticalFontName: array[0..LF_FACESIZE-1] of Char; + VerticalFontExists: Boolean; +begin + if GetObject(GetCurrentObject(DC, OBJ_FONT), SizeOf(LogFont), + @LogFont) = 0 then begin + { just in case... } + Result := 0; + Exit; + end; + LogFont.lfEscapement := 2700; + LogFont.lfOrientation := 2700; + LogFont.lfOutPrecision := OUT_TT_ONLY_PRECIS; { needed for Win9x } + + { Don't let a random TrueType font be substituted when MS Sans Serif or + Microsoft Sans Serif are used. Hard-code Arial. } + if (StrIComp(LogFont.lfFaceName, 'MS Sans Serif') = 0) or + (StrIComp(LogFont.lfFaceName, 'Microsoft Sans Serif') = 0) then begin + StrPCopy(LogFont.lfFaceName, 'Arial'); + { Set lfHeight to the actual height of the current font. This is needed + to work around a Windows 98 issue: on a clean install of the OS, + SPI_GETNONCLIENTMETRICS returns -5 for lfSmCaptionFont.lfHeight. This is + wrong; it should return -11 for an 8 pt font. With normal, unrotated text + this actually displays correctly, since MS Sans Serif doesn't support + sizes below 8 pt. However, when we change to a TrueType font like Arial, + this becomes a problem because it'll actually create a font that small. } + if GetTextMetrics(DC, TM) then begin + { If the original height was negative, keep it negative } + if LogFont.lfHeight <= 0 then + LogFont.lfHeight := -(TM.tmHeight - TM.tmInternalLeading) + else + LogFont.lfHeight := TM.tmHeight; + end; + end; + + { Use a vertical font if available so that Asian characters aren't drawn + sideways } + if StrLen(LogFont.lfFaceName) < SizeOf(VerticalFontName)-1 then begin + VerticalFontName[0] := '@'; + StrCopy(@VerticalFontName[1], LogFont.lfFaceName); + VerticalFontExists := False; + EnumFonts(DC, VerticalFontName, @EnumFontsProc, @VerticalFontExists); + if VerticalFontExists then + StrCopy(LogFont.lfFaceName, VerticalFontName); + end; + + Result := CreateFontIndirect(LogFont); +end; + +procedure DrawRotatedText(const DC: HDC; AText: String; const ARect: TRect; + const AFormat: Cardinal); +{ Like DrawText, but draws the text at a 270 degree angle. + The only format flag this function respects is DT_HIDEPREFIX. Text is always + drawn centered. } +var + RotatedFont, SaveFont: HFONT; + TextMetrics: TTextMetric; + X, Y, P, I, SU, FU: Integer; + SaveAlign: UINT; + SavePen, Pen: HPEN; +begin + RotatedFont := CreateRotatedFont(DC); + SaveFont := SelectObject(DC, RotatedFont); + + GetTextMetrics(DC, TextMetrics); + X := ARect.Left + ((ARect.Right - ARect.Left) - TextMetrics.tmHeight) div 2; + Y := ARect.Top + ((ARect.Bottom - ARect.Top) - GetTextWidth(DC, AText, True)) div 2; + + { Find the index of the character that should be underlined. Delete '&' + characters from the string. Like DrawText, only the last prefixed character + will be underlined. } + P := 0; + I := 1; + while I <= Length(AText) do begin + if AText[I] in LeadBytes then + Inc(I) + else if AText[I] = '&' then begin + Delete(AText, I, 1); + { Note: PChar cast is so that if Delete deleted the last character in + the string, we don't step past the end of the string (which would cause + an AV if AText is now empty), but rather look at the null character + and treat it as an accelerator key like DrawText. } + if PChar(AText)[I-1] <> '&' then + P := I; + end; + Inc(I); + end; + + SaveAlign := SetTextAlign(DC, TA_BOTTOM); + TextOut(DC, X, Y, PChar(AText), Length(AText)); + SetTextAlign(DC, SaveAlign); + { Underline } + if (P > 0) and (AFormat and DT_HIDEPREFIX = 0) then begin + SU := GetTextWidth(DC, Copy(AText, 1, P-1), False); + FU := SU + GetTextWidth(DC, PChar(AText)[P-1], False); + Inc(X, TextMetrics.tmDescent - 2); + Pen := CreatePen(PS_SOLID, 1, GetTextColor(DC)); + SavePen := SelectObject(DC, Pen); + MoveToEx(DC, X, Y + SU, nil); + LineTo(DC, X, Y + FU); + SelectObject(DC, SavePen); + DeleteObject(Pen); + end; + + SelectObject(DC, SaveFont); + DeleteObject(RotatedFont); +end; + +function NeedToPlaySound(const Alias: String): Boolean; +{ This function checks the registry to see if the specified sound event alias + is assigned to a file. + The purpose of having this function is so it can avoid calls to PlaySound if + possible, because on Windows 2000 there is an annoying 1/3 second delay on + the first call to PlaySound. + Windows Explorer actually uses this same technique when playing sounds for + the Start menu. } +var + K: HKEY; + Data: array[0..3] of WideChar; + DataSize: DWORD; + ErrorCode: Longint; +begin + if (Win32MajorVersion < 5) or (Win32Platform <> VER_PLATFORM_WIN32_NT) then begin + { No need to check pre-Windows 2000 versions since their PlaySound + functions don't have the delay; always return True. } + Result := True; + Exit; + end; + Result := False; + if RegOpenKeyEx(HKEY_CURRENT_USER, + PChar('AppEvents\Schemes\Apps\.Default\' + Alias + '\.Current'), + 0, KEY_QUERY_VALUE, K) = ERROR_SUCCESS then begin + DataSize := SizeOf(Data); + { Note: Use the 'W' version of RegQueryValueEx for more speed } + ErrorCode := RegQueryValueExW(K, nil, nil, nil, @Data, @DataSize); + if ((ErrorCode = ERROR_SUCCESS) and (Data[0] <> #0)) or + (ErrorCode = ERROR_MORE_DATA) then + Result := True; + RegCloseKey(K); + end; +end; + +function Max(A, B: Integer): Integer; +begin + if A >= B then + Result := A + else + Result := B; +end; + +function Min(A, B: Integer): Integer; +begin + if A <= B then + Result := A + else + Result := B; +end; + +function FindAccelChar(const S: String): Char; +{ Finds the last accelerator key in S. Returns #0 if no accelerator key was + found. '&&' is ignored. } +var + P: PChar; +begin + P := PChar(S); + Result := #0; + while True do begin + P := AnsiStrScan(P, '&'); + if P = nil then Break; + Inc(P); + if P^ <> '&' then begin + if P^ = #0 then Break; + Result := P^; + end; + Inc(P); + end; +end; + +function IsWindowsXP: Boolean; +begin + Result := (Win32Platform = VER_PLATFORM_WIN32_NT) and + ((Win32MajorVersion > 5) or + ((Win32MajorVersion = 5) and (Win32MinorVersion >= 1))); +end; + +function GetInputLocaleCodePage: UINT; +{ Returns the code page identifier of the active input locale, or CP_ACP if + for some unknown reason it couldn't be determined. } +var + Buf: array[0..15] of Char; + ErrorCode: Integer; +begin + if GetLocaleInfo(GetKeyboardLayout(0) and $FFFF, LOCALE_IDEFAULTANSICODEPAGE, + Buf, SizeOf(Buf)) > 0 then begin + Buf[High(Buf)] := #0; { ensure null termination, just in case... } + Val(Buf, Result, ErrorCode); + { Just to be *completely* safe, verify that the code page returned by + GetLocaleInfo actually exists. The result of this function may be fed + into WideCharToMultiByte, and we don't want WideCharToMultiByte to fail + entirely because of a bad code page. } + if (ErrorCode <> 0) or not IsValidCodePage(Result) then + Result := CP_ACP; + end + else + Result := CP_ACP; +end; + +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2Consts.pas b/official/2.1.6+2.1.beta1/Source/TB2Consts.pas new file mode 100644 index 0000000..2d634d8 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2Consts.pas @@ -0,0 +1,33 @@ +unit TB2Consts; +{ $jrsoftware: tb2k/Source/TB2Consts.pas,v 1.7 2002/11/14 18:07:19 jr Exp $ } + +interface + +{$I TB2Ver.inc} + +resourcestring + { Exceptions } + STBToolbarIndexOutOfBounds = 'Toolbar item index out of range'; + STBToolbarItemReinserted = 'Toolbar item already inserted'; + STBViewerNotFound = 'An item viewer associated the specified item could not be found'; + + { TTBChevronItem } + STBChevronItemMoreButtonsHint = 'More Buttons|'; + + { TTBMRUListItem } + STBMRUListItemDefCaption = '(MRU List)'; + + { TTBMDIWindowItem } + STBMDIWindowItemDefCaption = '(Window List)'; + + { TTBDock exception messages } + STBDockParentNotAllowed = 'A TTBDock control cannot be placed inside a tool window or another TTBDock'; + STBDockCannotChangePosition = 'Cannot change Position of a TTBDock if it already contains controls'; + + { TTBCustomDockableWindow exception messages } + STBToolwinNameNotSet = 'Cannot save dockable window''s position because Name property is not set'; + STBToolwinDockedToNameNotSet = 'Cannot save dockable window''s position because DockedTo''s Name property not set'; + +implementation + +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2Dock.pas b/official/2.1.6+2.1.beta1/Source/TB2Dock.pas new file mode 100644 index 0000000..a7d62a9 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2Dock.pas @@ -0,0 +1,5554 @@ +unit TB2Dock; + +{ + Toolbar2000 + Copyright (C) 1998-2005 by Jordan Russell + All rights reserved. + + The contents of this file are subject to the "Toolbar2000 License"; you may + not use or distribute this file except in compliance with the + "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in + TB2k-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + + Alternatively, the contents of this file may be used under the terms of the + GNU General Public License (the "GPL"), in which case the provisions of the + GPL are applicable instead of those in the "Toolbar2000 License". A copy of + the GPL may be found in GPL-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + If you wish to allow use of your version of this file only under the terms of + the GPL and not to allow others to use your version of this file under the + "Toolbar2000 License", indicate your decision by deleting the provisions + above and replace them with the notice and other provisions required by the + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + + $jrsoftware: tb2k/Source/TB2Dock.pas,v 1.99 2005/07/15 19:35:03 jr Exp $ +} + +interface + +{x$DEFINE TB2Dock_DisableLock} +{ Remove the 'x' to enable the define. It will disable calls to + LockWindowUpdate, which it calls to disable screen updates while dragging. + You may want to temporarily enable the define while debugging so you are able + to see your code window while stepping through the dragging routines. } + +{$I TB2Ver.inc} + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms; + +type + TTBCustomForm = {$IFDEF JR_D3} TCustomForm {$ELSE} TForm {$ENDIF}; + + { TTBDock } + + TTBDockBoundLinesValues = (blTop, blBottom, blLeft, blRight); + TTBDockBoundLines = set of TTBDockBoundLinesValues; + TTBDockPosition = (dpTop, dpBottom, dpLeft, dpRight); + TTBDockType = (dtNotDocked, dtFloating, dtTopBottom, dtLeftRight); + TTBDockableTo = set of TTBDockPosition; + + TTBCustomDockableWindow = class; + TTBBasicBackground = class; + + TTBInsertRemoveEvent = procedure(Sender: TObject; Inserting: Boolean; + Bar: TTBCustomDockableWindow) of object; + TTBRequestDockEvent = procedure(Sender: TObject; Bar: TTBCustomDockableWindow; + var Accept: Boolean) of object; + + TTBDock = class(TCustomControl) + private + { Property values } + FPosition: TTBDockPosition; + FAllowDrag: Boolean; + FBoundLines: TTBDockBoundLines; + FBackground: TTBBasicBackground; + FBkgOnToolbars: Boolean; + FFixAlign: Boolean; + FCommitNewPositions: Boolean; + FLimitToOneRow: Boolean; + FOnInsertRemoveBar: TTBInsertRemoveEvent; + FOnRequestDock: TTBRequestDockEvent; + {$IFNDEF JR_D4} + FOnResize: TNotifyEvent; + {$ENDIF} + + { Internal } + FDisableArrangeToolbars: Integer; { Increment to disable ArrangeToolbars } + FArrangeToolbarsNeeded: Boolean; + FNonClientWidth, FNonClientHeight: Integer; + + { Property access methods } + //function GetVersion: TToolbar97Version; + procedure SetAllowDrag(Value: Boolean); + procedure SetBackground(Value: TTBBasicBackground); + procedure SetBackgroundOnToolbars(Value: Boolean); + procedure SetBoundLines(Value: TTBDockBoundLines); + procedure SetFixAlign(Value: Boolean); + procedure SetPosition(Value: TTBDockPosition); + //procedure SetVersion(const Value: TToolbar97Version); + + function GetToolbarCount: Integer; + function GetToolbars(Index: Integer): TTBCustomDockableWindow; + + { Internal } + procedure BackgroundChanged(Sender: TObject); + procedure ChangeDockList(const Insert: Boolean; const Bar: TTBCustomDockableWindow); + procedure CommitPositions; + procedure DrawNCArea(const DrawToDC: Boolean; const ADC: HDC; + const Clip: HRGN); + function GetDesignModeRowOf(const XY: Integer): Integer; + procedure RelayMsgToFloatingBars(var Message: TMessage); + procedure ToolbarVisibilityChanged(const Bar: TTBCustomDockableWindow; + const ForceRemove: Boolean); + + { Messages } + procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR; + procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY; + procedure CMSysColorChange(var Message: TMessage); message CM_SYSCOLORCHANGE; + procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND; + procedure WMMove(var Message: TWMMove); message WM_MOVE; + {$IFNDEF JR_D4} + procedure WMSize(var Message: TWMSize); message WM_SIZE; + {$ENDIF} + procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE; + procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT; + procedure WMPrint(var Message: TMessage); message WM_PRINT; + procedure WMPrintClient(var Message: TMessage); message WM_PRINTCLIENT; + procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND; + protected + DockList: TList; { List of the toolbars docked, and those floating and have LastDock + pointing to the dock. Items are casted in TTBCustomDockableWindow's. } + DockVisibleList: TList; { Similar to DockList, but lists only docked and visible toolbars } + function Accepts(ADockableWindow: TTBCustomDockableWindow): Boolean; virtual; + procedure AlignControls(AControl: TControl; var Rect: TRect); override; + procedure ChangeWidthHeight(const NewWidth, NewHeight: Integer); + procedure DrawBackground(DC: HDC; const DrawRect: TRect); virtual; + function GetPalette: HPALETTE; override; + function HasVisibleToolbars: Boolean; + procedure InvalidateBackgrounds; + procedure Loaded; override; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure SetParent(AParent: TWinControl); override; + function ToolbarVisibleOnDock(const AToolbar: TTBCustomDockableWindow): Boolean; + procedure Paint; override; + function UsingBackground: Boolean; virtual; + property ArrangeToolbarsNeeded: Boolean read FArrangeToolbarsNeeded write FArrangeToolbarsNeeded; + property DisableArrangeToolbars: Integer read FDisableArrangeToolbars write FDisableArrangeToolbars; + public + constructor Create(AOwner: TComponent); override; + procedure CreateParams(var Params: TCreateParams); override; + destructor Destroy; override; + + procedure ArrangeToolbars; virtual; + procedure BeginUpdate; + procedure EndUpdate; + function GetCurrentRowSize(const Row: Integer; var AFullSize: Boolean): Integer; + function GetHighestRow(const HighestEffective: Boolean): Integer; + function GetMinRowSize(const Row: Integer; + const ExcludeControl: TTBCustomDockableWindow): Integer; + + property CommitNewPositions: Boolean read FCommitNewPositions write FCommitNewPositions; + property NonClientWidth: Integer read FNonClientWidth; + property NonClientHeight: Integer read FNonClientHeight; + property ToolbarCount: Integer read GetToolbarCount; + property Toolbars[Index: Integer]: TTBCustomDockableWindow read GetToolbars; + published + property AllowDrag: Boolean read FAllowDrag write SetAllowDrag default True; + property Background: TTBBasicBackground read FBackground write SetBackground; + property BackgroundOnToolbars: Boolean read FBkgOnToolbars write SetBackgroundOnToolbars default True; + property BoundLines: TTBDockBoundLines read FBoundLines write SetBoundLines default []; + property Color default clBtnFace; + property FixAlign: Boolean read FFixAlign write SetFixAlign default False; + property LimitToOneRow: Boolean read FLimitToOneRow write FLimitToOneRow default False; + property PopupMenu; + property Position: TTBDockPosition read FPosition write SetPosition default dpTop; + //property Version: TToolbar97Version read GetVersion write SetVersion stored False; + property Visible; + + {$IFDEF JR_D5} + property OnContextPopup; + {$ENDIF} + property OnInsertRemoveBar: TTBInsertRemoveEvent read FOnInsertRemoveBar write FOnInsertRemoveBar; + property OnMouseDown; + property OnMouseMove; + property OnMouseUp; + property OnRequestDock: TTBRequestDockEvent read FOnRequestDock write FOnRequestDock; + {$IFDEF JR_D4} + property OnResize; + {$ELSE} + property OnResize: TNotifyEvent read FOnResize write FOnResize; + {$ENDIF} + end; + + { TTBFloatingWindowParent - internal } + + TTBToolWindowNCRedrawWhatElement = (twrdBorder, twrdCaption, twrdCloseButton); + TTBToolWindowNCRedrawWhat = set of TTBToolWindowNCRedrawWhatElement; + + TTBFloatingWindowParentClass = class of TTBFloatingWindowParent; + TTBFloatingWindowParent = class(TCustomForm) + private + FCloseButtonDown: Boolean; { True if Close button is currently depressed } + FDockableWindow: TTBCustomDockableWindow; + FParentForm: TTBCustomForm; + FShouldShow: Boolean; + + procedure SetCloseButtonState(Pushed: Boolean); + procedure RedrawNCArea(const RedrawWhat: TTBToolWindowNCRedrawWhat); + + procedure CMShowingChanged(var Message: TMessage); message CM_SHOWINGCHANGED; + procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY; + procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED; + procedure WMActivate(var Message: TWMActivate); message WM_ACTIVATE; + procedure WMClose(var Message: TWMClose); message WM_CLOSE; + procedure WMGetMinMaxInfo(var Message: TWMGetMinMaxInfo); message WM_GETMINMAXINFO; + procedure WMMouseActivate(var Message: TWMMouseActivate); message WM_MOUSEACTIVATE; + procedure WMMove(var Message: TWMMove); message WM_MOVE; + procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE; + procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST; + procedure WMNCLButtonDblClk(var Message: TWMNCLButtonDblClk); message WM_NCLBUTTONDBLCLK; + procedure WMNCLButtonDown(var Message: TWMNCLButtonDown); message WM_NCLBUTTONDOWN; + procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT; + procedure WMNCRButtonUp(var Message: TWMNCRButtonUp); message WM_NCRBUTTONUP; + procedure WMPrint(var Message: TMessage); message WM_PRINT; + procedure WMPrintClient(var Message: TMessage); message WM_PRINTCLIENT; + protected + procedure AlignControls(AControl: TControl; var Rect: TRect); override; + procedure CreateParams(var Params: TCreateParams); override; + procedure DrawNCArea(const DrawToDC: Boolean; const ADC: HDC; + const Clip: HRGN; RedrawWhat: TTBToolWindowNCRedrawWhat); dynamic; + property DockableWindow: TTBCustomDockableWindow read FDockableWindow; + property CloseButtonDown: Boolean read FCloseButtonDown; + public + property ParentForm: TTBCustomForm read FParentForm; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + + { TTBCustomDockableWindow } + + TTBDockChangingEvent = procedure(Sender: TObject; Floating: Boolean; + DockingTo: TTBDock) of object; + TTBDragHandleStyle = (dhDouble, dhNone, dhSingle); + TTBDockMode = (dmCanFloat, dmCannotFloat, dmCannotFloatOrChangeDocks); + TTBFloatingMode = (fmOnTopOfParentForm, fmOnTopOfAllForms); + TTBSizeHandle = (twshLeft, twshRight, twshTop, twshTopLeft, + twshTopRight, twshBottom, twshBottomLeft, twshBottomRight); + { ^ must be in same order as HTLEFT..HTBOTTOMRIGHT } + TTBPositionReadIntProc = function(const ToolbarName, Value: String; const Default: Longint; + const ExtraData: Pointer): Longint; + TTBPositionReadStringProc = function(const ToolbarName, Value, Default: String; + const ExtraData: Pointer): String; + TTBPositionWriteIntProc = procedure(const ToolbarName, Value: String; const Data: Longint; + const ExtraData: Pointer); + TTBPositionWriteStringProc = procedure(const ToolbarName, Value, Data: String; + const ExtraData: Pointer); + TTBReadPositionData = record + ReadIntProc: TTBPositionReadIntProc; + ReadStringProc: TTBPositionReadStringProc; + ExtraData: Pointer; + end; + TTBWritePositionData = record + WriteIntProc: TTBPositionWriteIntProc; + WriteStringProc: TTBPositionWriteStringProc; + ExtraData: Pointer; + end; + TTBDockableWindowStyles = set of (tbdsResizeEightCorner, tbdsResizeClipCursor); + TTBShrinkMode = (tbsmNone, tbsmWrap, tbsmChevron); + + TTBCustomDockableWindow = class(TCustomControl) + private + { Property variables } + FAutoResize: Boolean; + FDblClickUndock: Boolean; + FDockPos, FDockRow, FEffectiveDockPos, FEffectiveDockRow: Integer; + FDocked: Boolean; + FCurrentDock, FDefaultDock, FLastDock: TTBDock; + FCurrentSize: Integer; + FFloating: Boolean; + FOnClose, FOnDockChanged, FOnMove, FOnRecreated, + FOnRecreating, {$IFNDEF JR_D4} FOnResize, {$ENDIF} + FOnVisibleChanged: TNotifyEvent; + FOnCloseQuery: TCloseQueryEvent; + FOnDockChanging, FOnDockChangingHidden: TTBDockChangingEvent; + FActivateParent, FHideWhenInactive, FCloseButton, FCloseButtonWhenDocked, + FFullSize, FResizable, FShowCaption, FStretch, FUseLastDock: Boolean; + FBorderStyle: TBorderStyle; + FDockMode: TTBDockMode; + FDragHandleStyle: TTBDragHandleStyle; + FDockableTo: TTBDockableTo; + FFloatingMode: TTBFloatingMode; + FSmoothDrag: Boolean; + FDockableWindowStyles: TTBDockableWindowStyles; + FLastRowSize: Integer; + FInsertRowBefore: Boolean; + + { Misc. } + FUpdatingBounds, { Incremented while internally changing the bounds. This allows + it to move the toolbar freely in design mode and prevents the + SizeChanging protected method from begin called } + FDisableArrange, { Incremented to disable Arrange } + FDisableOnMove, { Incremented to prevent WM_MOVE handler from calling the OnMoved handler } + FHidden: Integer; { Incremented while the toolbar is temporarily hidden } + FArrangeNeeded, FMoved: Boolean; + FInactiveCaption: Boolean; { True when the caption of the toolbar is currently the inactive color } + FFloatingPosition: TPoint; + FDockForms: TList; + FSavedAtRunTime: Boolean; + //FNonClientWidth, FNonClientHeight: Integer; + FDragMode, FDragSplitting, FDragCanSplit: Boolean; + FSmoothDragging: Boolean; + + { When floating. These are not used in design mode } + FCloseButtonDown: Boolean; { True if Close button is currently depressed } + FCloseButtonHover: Boolean; + FFloatParent: TTBFloatingWindowParent; { Run-time only: The actual Parent of the toolbar when it is floating } + + { Property access methods } + //function GetVersion: TToolbar97Version; + function GetNonClientWidth: Integer; + function GetNonClientHeight: Integer; + function IsLastDockStored: Boolean; + function IsWidthAndHeightStored: Boolean; + procedure SetAutoResize(Value: Boolean); + procedure SetBorderStyle(Value: TBorderStyle); + procedure SetCloseButton(Value: Boolean); + procedure SetCloseButtonWhenDocked(Value: Boolean); + procedure SetCurrentDock(Value: TTBDock); + procedure SetDefaultDock(Value: TTBDock); + procedure SetDockPos(Value: Integer); + procedure SetDockRow(Value: Integer); + procedure SetDragHandleStyle(Value: TTBDragHandleStyle); + procedure SetFloating(Value: Boolean); + procedure SetFloatingMode(Value: TTBFloatingMode); + procedure SetFloatingPosition(Value: TPoint); + procedure SetFullSize(Value: Boolean); + procedure SetLastDock(Value: TTBDock); + procedure SetResizable(Value: Boolean); + procedure SetShowCaption(Value: Boolean); + procedure SetStretch(Value: Boolean); + procedure SetUseLastDock(Value: Boolean); + //procedure SetVersion(const Value: TToolbar97Version); + + { Internal } + procedure CancelNCHover; + procedure DrawDraggingOutline(const DC: HDC; const NewRect, OldRect: PRect; + const NewDocking, OldDocking: Boolean); + procedure RedrawNCArea; + procedure SetCloseButtonState(Pushed: Boolean); + procedure ShowNCContextMenu(const Pos: TSmallPoint); + procedure Moved; + function GetShowingState: Boolean; + procedure UpdateCaptionState; + procedure UpdateTopmostFlag; + procedure UpdateVisibility; + procedure ReadSavedAtRunTime(Reader: TReader); + procedure WriteSavedAtRunTime(Writer: TWriter); + + { Messages } + procedure CMColorChanged(var Message: TMessage); message CM_COLORCHANGED; + procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; + procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED; + procedure CMShowingChanged(var Message: TMessage); message CM_SHOWINGCHANGED; + procedure CMVisibleChanged(var Message: TMessage); message CM_VISIBLECHANGED; + {$IFDEF JR_D5} + procedure WMContextMenu(var Message: TWMContextMenu); message WM_CONTEXTMENU; + {$ENDIF} + procedure WMEnable(var Message: TWMEnable); message WM_ENABLE; + procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND; + procedure WMMove(var Message: TWMMove); message WM_MOVE; + procedure WMMouseMove(var Message: TMessage); message WM_MOUSEMOVE; + procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE; + procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST; + procedure WMNCMouseLeave(var Message: TMessage); message $2A2 {WM_NCMOUSELEAVE}; + procedure WMNCMouseMove(var Message: TWMNCMouseMove); message WM_NCMOUSEMOVE; + procedure WMNCLButtonDblClk(var Message: TWMNCLButtonDblClk); message WM_NCLBUTTONDBLCLK; + procedure WMNCLButtonDown(var Message: TWMNCLButtonDown); message WM_NCLBUTTONDOWN; + procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT; + procedure WMNCRButtonUp(var Message: TWMNCRButtonUp); message WM_NCRBUTTONUP; + procedure WMPrint(var Message: TMessage); message WM_PRINT; + procedure WMPrintClient(var Message: TMessage); message WM_PRINTCLIENT; + procedure WMSetCursor(var Message: TWMSetCursor); message WM_SETCURSOR; + {$IFNDEF JR_D4} + procedure WMSize(var Message: TWMSize); message WM_SIZE; + {$ENDIF} + protected + property ActivateParent: Boolean read FActivateParent write FActivateParent default True; + property AutoResize: Boolean read FAutoResize write SetAutoResize default True; + property BorderStyle: TBorderStyle read FBorderStyle write SetBorderStyle default bsSingle; + property Color default clBtnFace; + property CloseButton: Boolean read FCloseButton write SetCloseButton default True; + property CloseButtonDown: Boolean read FCloseButtonDown; + property CloseButtonHover: Boolean read FCloseButtonHover; + property CloseButtonWhenDocked: Boolean read FCloseButtonWhenDocked write SetCloseButtonWhenDocked default False; + property DefaultDock: TTBDock read FDefaultDock write SetDefaultDock; + property DockableTo: TTBDockableTo read FDockableTo write FDockableTo default [dpTop, dpBottom, dpLeft, dpRight]; + property DockableWindowStyles: TTBDockableWindowStyles read FDockableWindowStyles write FDockableWindowStyles; + property DockMode: TTBDockMode read FDockMode write FDockMode default dmCanFloat; + property DragHandleStyle: TTBDragHandleStyle read FDragHandleStyle write SetDragHandleStyle default dhSingle; + property FloatingMode: TTBFloatingMode read FFloatingMode write SetFloatingMode default fmOnTopOfParentForm; + property FullSize: Boolean read FFullSize write SetFullSize default False; + property InactiveCaption: Boolean read FInactiveCaption; + property HideWhenInactive: Boolean read FHideWhenInactive write FHideWhenInactive default True; + property Resizable: Boolean read FResizable write SetResizable default True; + property ShowCaption: Boolean read FShowCaption write SetShowCaption default True; + property SmoothDrag: Boolean read FSmoothDrag write FSmoothDrag default True; + property Stretch: Boolean read FStretch write SetStretch default False; + property UseLastDock: Boolean read FUseLastDock write SetUseLastDock default True; + //property Version: TToolbar97Version read GetVersion write SetVersion stored False; + + property OnClose: TNotifyEvent read FOnClose write FOnClose; + property OnCloseQuery: TCloseQueryEvent read FOnCloseQuery write FOnCloseQuery; + property OnDockChanged: TNotifyEvent read FOnDockChanged write FOnDockChanged; + property OnDockChanging: TTBDockChangingEvent read FOnDockChanging write FOnDockChanging; + property OnDockChangingHidden: TTBDockChangingEvent read FOnDockChangingHidden write FOnDockChangingHidden; + property OnMove: TNotifyEvent read FOnMove write FOnMove; + property OnRecreated: TNotifyEvent read FOnRecreated write FOnRecreated; + property OnRecreating: TNotifyEvent read FOnRecreating write FOnRecreating; + {$IFNDEF JR_D4} + property OnResize: TNotifyEvent read FOnResize write FOnResize; + {$ENDIF} + property OnVisibleChanged: TNotifyEvent read FOnVisibleChanged write FOnVisibleChanged; + + { Overridden methods } + procedure CreateParams(var Params: TCreateParams); override; + procedure DefineProperties(Filer: TFiler); override; + function GetPalette: HPALETTE; override; + procedure Loaded; override; + procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + function PaletteChanged(Foreground: Boolean): Boolean; override; + procedure SetParent(AParent: TWinControl); override; + + { Methods accessible to descendants } + procedure Arrange; + function CalcNCSizes: TPoint; virtual; + function CanDockTo(ADock: TTBDock): Boolean; virtual; + procedure ChangeSize(AWidth, AHeight: Integer); + function ChildControlTransparent(Ctl: TControl): Boolean; dynamic; + procedure Close; + procedure ControlExistsAtPos(const P: TPoint; var ControlExists: Boolean); virtual; + function DoArrange(CanMoveControls: Boolean; PreviousDockType: TTBDockType; + NewFloating: Boolean; NewDock: TTBDock): TPoint; virtual; abstract; + procedure DoDockChangingHidden(NewFloating: Boolean; DockingTo: TTBDock); dynamic; + procedure DoubleClick; + procedure DrawNCArea(const DrawToDC: Boolean; const ADC: HDC; + const Clip: HRGN); virtual; + procedure GetBaseSize(var ASize: TPoint); virtual; abstract; + function GetDockedCloseButtonRect(LeftRight: Boolean): TRect; virtual; + function GetFloatingWindowParentClass: TTBFloatingWindowParentClass; dynamic; + procedure GetMinShrinkSize(var AMinimumSize: Integer); virtual; + procedure GetMinMaxSize(var AMinClientWidth, AMinClientHeight, + AMaxClientWidth, AMaxClientHeight: Integer); virtual; + function GetShrinkMode: TTBShrinkMode; virtual; + procedure InitializeOrdering; dynamic; + function IsAutoResized: Boolean; + procedure ResizeBegin(SizeHandle: TTBSizeHandle); dynamic; + procedure ResizeEnd; dynamic; + procedure ResizeTrack(var Rect: TRect; const OrigRect: TRect); dynamic; + procedure ResizeTrackAccept; dynamic; + procedure SizeChanging(const AWidth, AHeight: Integer); virtual; + property EffectiveDockPosAccess: Integer read FEffectiveDockPos write FEffectiveDockPos; + property EffectiveDockRowAccess: Integer read FEffectiveDockRow write FEffectiveDockRow; + public + property DblClickUndock: Boolean read FDblClickUndock write FDblClickUndock default True; + property Docked: Boolean read FDocked; + property Canvas; + property CurrentDock: TTBDock read FCurrentDock write SetCurrentDock stored False; + property CurrentSize: Integer read FCurrentSize write FCurrentSize; + property DockPos: Integer read FDockPos write SetDockPos default -1; + property DockRow: Integer read FDockRow write SetDockRow default 0; + property DragMode: Boolean read FDragMode; + property DragSplitting: Boolean read FDragSplitting; + property EffectiveDockPos: Integer read FEffectiveDockPos; + property EffectiveDockRow: Integer read FEffectiveDockRow; + property Floating: Boolean read FFloating write SetFloating default False; + property FloatingPosition: TPoint read FFloatingPosition write SetFloatingPosition; + property LastDock: TTBDock read FLastDock write SetLastDock stored IsLastDockStored; + property NonClientWidth: Integer read GetNonClientWidth; + property NonClientHeight: Integer read GetNonClientHeight; + + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function GetParentComponent: TComponent; override; + function HasParent: Boolean; override; + procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override; + + procedure AddDockForm(const Form: TTBCustomForm); + procedure AddDockedNCAreaToSize(var S: TPoint; const LeftRight: Boolean); + procedure AddFloatingNCAreaToSize(var S: TPoint); + procedure BeginMoving(const InitX, InitY: Integer); + procedure BeginSizing(const ASizeHandle: TTBSizeHandle); + procedure BeginUpdate; + procedure DoneReadingPositionData(const Data: TTBReadPositionData); dynamic; + procedure EndUpdate; + procedure GetDockedNCArea(var TopLeft, BottomRight: TPoint; + const LeftRight: Boolean); + function GetFloatingBorderSize: TPoint; virtual; + procedure GetFloatingNCArea(var TopLeft, BottomRight: TPoint); + function IsMovable: Boolean; + procedure MoveOnScreen(const OnlyIfFullyOffscreen: Boolean); + procedure ReadPositionData(const Data: TTBReadPositionData); dynamic; + procedure RemoveDockForm(const Form: TTBCustomForm); + procedure WritePositionData(const Data: TTBWritePositionData); dynamic; + published + property Height stored IsWidthAndHeightStored; + property Width stored IsWidthAndHeightStored; + end; + + TTBBasicBackground = class(TComponent) + protected + procedure Draw(DC: HDC; const DrawRect: TRect); virtual; abstract; + function GetPalette: HPALETTE; virtual; abstract; + procedure RegisterChanges(Proc: TNotifyEvent); virtual; abstract; + procedure SysColorChanged; virtual; abstract; + procedure UnregisterChanges(Proc: TNotifyEvent); virtual; abstract; + function UsingBackground: Boolean; virtual; abstract; + end; + + TTBBackground = class(TTBBasicBackground) + private + FBitmap, FBitmapCache: TBitmap; + FBkColor: TColor; + FNotifyList: TList; + FTransparent: Boolean; + procedure BitmapChanged(Sender: TObject); + procedure SetBitmap(Value: TBitmap); + procedure SetBkColor(Value: TColor); + procedure SetTransparent(Value: Boolean); + protected + procedure Draw(DC: HDC; const DrawRect: TRect); override; + function GetPalette: HPALETTE; override; + procedure RegisterChanges(Proc: TNotifyEvent); override; + procedure SysColorChanged; override; + procedure UnregisterChanges(Proc: TNotifyEvent); override; + function UsingBackground: Boolean; override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + published + property Bitmap: TBitmap read FBitmap write SetBitmap; + property BkColor: TColor read FBkColor write SetBkColor default clBtnFace; + property Transparent: Boolean read FTransparent write SetTransparent default False; + end; + +procedure TBRegLoadPositions(const OwnerComponent: TComponent; + const RootKey: DWORD; const BaseRegistryKey: String); +procedure TBRegSavePositions(const OwnerComponent: TComponent; + const RootKey: DWORD; const BaseRegistryKey: String); +procedure TBIniLoadPositions(const OwnerComponent: TComponent; + const Filename, SectionNamePrefix: String); +procedure TBIniSavePositions(const OwnerComponent: TComponent; + const Filename, SectionNamePrefix: String); + +procedure TBCustomLoadPositions(const OwnerComponent: TComponent; + const ReadIntProc: TTBPositionReadIntProc; + const ReadStringProc: TTBPositionReadStringProc; const ExtraData: Pointer); +procedure TBCustomSavePositions(const OwnerComponent: TComponent; + const WriteIntProc: TTBPositionWriteIntProc; + const WriteStringProc: TTBPositionWriteStringProc; const ExtraData: Pointer); + +function TBGetDockTypeOf(const Control: TTBDock; const Floating: Boolean): TTBDockType; +function TBGetToolWindowParentForm(const ToolWindow: TTBCustomDockableWindow): + TTBCustomForm; +function TBValidToolWindowParentForm(const ToolWindow: TTBCustomDockableWindow): + TTBCustomForm; + +implementation + +uses + Registry, IniFiles, Consts, Menus, + TB2Common, TB2Hook, TB2Consts; + +type + TControlAccess = class(TControl); + +const + DockedBorderSize = 2; + DockedBorderSize2 = DockedBorderSize*2; + DragHandleSizes: array[Boolean, TTBDragHandleStyle] of Integer = + ((9, 0, 6), (14, 14, 14)); + DragHandleXOffsets: array[Boolean, TTBDragHandleStyle] of Integer = + ((2, 0, 1), (3, 0, 5)); + HT_TB2k_Border = 2000; + HT_TB2k_Close = 2001; + HT_TB2k_Caption = 2002; + + DefaultBarWidthHeight = 8; + + ForceDockAtTopRow = 0; + ForceDockAtLeftPos = -8; + + PositionLeftOrRight = [dpLeft, dpRight]; + + twrdAll = [Low(TTBToolWindowNCRedrawWhatElement)..High(TTBToolWindowNCRedrawWhatElement)]; + + { Constants for TTBCustomDockableWindow registry values/data. + Don't localize any of these names! } + rvRev = 'Rev'; + rdCurrentRev = 2000; + rvVisible = 'Visible'; + rvDockedTo = 'DockedTo'; + rdDockedToFloating = '+'; + rvLastDock = 'LastDock'; + rvDockRow = 'DockRow'; + rvDockPos = 'DockPos'; + rvFloatLeft = 'FloatLeft'; + rvFloatTop = 'FloatTop'; + +threadvar + FloatingToolWindows: TList; + + +{ Misc. functions } + +function GetSmallCaptionHeight: Integer; +{ Returns height of the caption of a small window } +begin + Result := GetSystemMetrics(SM_CYSMCAPTION); +end; + +function GetMDIParent(const Form: TTBCustomForm): TTBCustomForm; +{ Returns the parent of the specified MDI child form. But, if Form isn't a + MDI child, it simply returns Form. } +var + I, J: Integer; +begin + Result := Form; + if Form = nil then Exit; + if {$IFDEF JR_D3} (Form is TForm) and {$ENDIF} + (TForm(Form).FormStyle = fsMDIChild) then + for I := 0 to Screen.FormCount-1 do + with Screen.Forms[I] do begin + if FormStyle <> fsMDIForm then Continue; + for J := 0 to MDIChildCount-1 do + if MDIChildren[J] = Form then begin + Result := Screen.Forms[I]; + Exit; + end; + end; +end; + +function TBGetDockTypeOf(const Control: TTBDock; const Floating: Boolean): TTBDockType; +begin + if Floating then + Result := dtFloating + else + if Control = nil then + Result := dtNotDocked + else begin + if not(Control.Position in PositionLeftOrRight) then + Result := dtTopBottom + else + Result := dtLeftRight; + end; +end; + +function TBGetToolWindowParentForm(const ToolWindow: TTBCustomDockableWindow): TTBCustomForm; +var + Ctl: TWinControl; +begin + Result := nil; + Ctl := ToolWindow; + while Assigned(Ctl.Parent) do begin + if Ctl.Parent is TTBCustomForm then + Result := TTBCustomForm(Ctl.Parent); + Ctl := Ctl.Parent; + end; + { ^ for compatibility with ActiveX controls, that code is used instead of + GetParentForm because it returns nil unless the form is the *topmost* + parent } + if Result is TTBFloatingWindowParent then + Result := TTBFloatingWindowParent(Result).ParentForm; +end; + +function TBValidToolWindowParentForm(const ToolWindow: TTBCustomDockableWindow): TTBCustomForm; +begin + Result := TBGetToolWindowParentForm(ToolWindow); + if Result = nil then + raise EInvalidOperation.{$IFDEF JR_D3}CreateFmt{$ELSE}CreateResFmt{$ENDIF} + (SParentRequired, [ToolWindow.Name]); +end; + +procedure ToolbarHookProc(Code: THookProcCode; Wnd: HWND; WParam: WPARAM; LParam: LPARAM); +var + I: Integer; + ToolWindow: TTBCustomDockableWindow; + Form: TTBCustomForm; +begin + case Code of + hpSendActivate, + hpSendActivateApp: begin + if Assigned(FloatingToolWindows) then + for I := 0 to FloatingToolWindows.Count-1 do + with TTBCustomDockableWindow(FloatingToolWindows.List[I]) do + { Hide or restore toolbars when a form or the application is + deactivated or activated, and/or update their caption state + (active/inactive) } + UpdateVisibility; + end; + hpSendWindowPosChanged: begin + if Assigned(FloatingToolWindows) then + for I := 0 to FloatingToolWindows.Count-1 do begin + ToolWindow := TTBCustomDockableWindow(FloatingToolWindows.List[I]); + with ToolWindow do begin + if (FFloatingMode = fmOnTopOfParentForm) and HandleAllocated then begin + with PWindowPos(LParam)^ do + { Call UpdateVisibility if parent form's visibility has + changed, or if it has been minimized or restored } + if ((flags and (SWP_SHOWWINDOW or SWP_HIDEWINDOW) <> 0) or + (flags and SWP_FRAMECHANGED <> 0)) then begin + Form := TBGetToolWindowParentForm(ToolWindow); + if Assigned(Form) and Form.HandleAllocated and ((Wnd = Form.Handle) or IsChild(Wnd, Form.Handle)) then + UpdateVisibility; + end; + end; + end; + end; + end; + hpPreDestroy: begin + if Assigned(FloatingToolWindows) then + for I := 0 to FloatingToolWindows.Count-1 do begin + with TTBCustomDockableWindow(FloatingToolWindows.List[I]) do + { It must remove the form window's ownership of the tool window + *before* the form gets destroyed, otherwise Windows will destroy + the tool window's handle. } + if Assigned(Parent) and Parent.HandleAllocated and + (HWND(GetWindowLong(Parent.Handle, GWL_HWNDPARENT)) = Wnd) then + SetWindowLong(Parent.Handle, GWL_HWNDPARENT, Longint(Application.Handle)); + { ^ Restore GWL_HWNDPARENT back to Application.Handle } + end; + end; + end; +end; + +type + PFindWindowData = ^TFindWindowData; + TFindWindowData = record + TaskActiveWindow, TaskFirstWindow, TaskFirstTopMost: HWND; + end; + +function DoFindWindow(Wnd: HWND; Param: Longint): Bool; stdcall; +begin + with PFindWindowData(Param)^ do + if (Wnd <> TaskActiveWindow) and (Wnd <> Application.Handle) and + IsWindowVisible(Wnd) and IsWindowEnabled(Wnd) then begin + if GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOPMOST = 0 then begin + if TaskFirstWindow = 0 then TaskFirstWindow := Wnd; + end + else begin + if TaskFirstTopMost = 0 then TaskFirstTopMost := Wnd; + end; + end; + Result := True; +end; + +function FindTopLevelWindow(ActiveWindow: HWND): HWND; +var + FindData: TFindWindowData; +begin + with FindData do begin + TaskActiveWindow := ActiveWindow; + TaskFirstWindow := 0; + TaskFirstTopMost := 0; + EnumThreadWindows(GetCurrentThreadID, @DoFindWindow, Longint(@FindData)); + if TaskFirstWindow <> 0 then + Result := TaskFirstWindow + else + Result := TaskFirstTopMost; + end; +end; + +function IsAncestorOfWindow(const ParentWnd: HWND; Wnd: HWND): Boolean; +{ Returns True if Wnd is a child of, is owned by, or is the same window as + ParentWnd } +begin + while Wnd <> 0 do begin + if Wnd = ParentWnd then begin + Result := True; + Exit; + end; + Wnd := GetParent(Wnd); + end; + Result := False; +end; + +procedure RecalcNCArea(const Ctl: TWinControl); +begin + if Ctl.HandleAllocated then + SetWindowPos(Ctl.Handle, 0, 0, 0, 0, 0, SWP_FRAMECHANGED or + SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE or SWP_NOZORDER); +end; + +procedure InvalidateAll(const Ctl: TWinControl); +{ Invalidate both non-client and client area, and erase. } +begin + if Ctl.HandleAllocated then + RedrawWindow(Ctl.Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or + RDW_ERASE or RDW_NOCHILDREN); +end; + +type + TSetCloseButtonStateProc = procedure(Pushed: Boolean) of object; + +function CloseButtonLoop(const Wnd: HWND; const ButtonRect: TRect; + const SetCloseButtonStateProc: TSetCloseButtonStateProc): Boolean; + function MouseInButton: Boolean; + var + P: TPoint; + begin + GetCursorPos(P); + Result := PtInRect(ButtonRect, P); + end; +var + Msg: TMsg; +begin + Result := False; + + SetCloseButtonStateProc(MouseInButton); + + SetCapture(Wnd); + + try + while GetCapture = Wnd do begin + case Integer(GetMessage(Msg, 0, 0, 0)) of + -1: Break; { if GetMessage failed } + 0: begin + { Repost WM_QUIT messages } + PostQuitMessage(Msg.WParam); + Break; + end; + end; + + case Msg.Message of + WM_KEYDOWN, WM_KEYUP: + { Ignore all keystrokes while in a close button loop } + ; + WM_MOUSEMOVE: begin + { Note to self: WM_MOUSEMOVE messages should never be dispatched + here to ensure no hints get shown } + SetCloseButtonStateProc(MouseInButton); + end; + WM_LBUTTONDOWN, WM_LBUTTONDBLCLK: + { Make sure it doesn't begin another loop } + Break; + WM_LBUTTONUP: begin + if MouseInButton then + Result := True; + Break; + end; + WM_RBUTTONDOWN..WM_MBUTTONDBLCLK: + { Ignore all other mouse up/down messages } + ; + else + TranslateMessage(Msg); + DispatchMessage(Msg); + end; + end; + finally + if GetCapture = Wnd then + ReleaseCapture; + SetCloseButtonStateProc(False); + end; +end; + + +{ TTBDock - internal } + +constructor TTBDock.Create(AOwner: TComponent); +begin + inherited; + + ControlStyle := ControlStyle + [csAcceptsControls, csMenuEvents] - + [csClickEvents, csCaptureMouse, csOpaque]; + FAllowDrag := True; + FBkgOnToolbars := True; + DockList := TList.Create; + DockVisibleList := TList.Create; + Color := clBtnFace; + Position := dpTop; +end; + +procedure TTBDock.CreateParams(var Params: TCreateParams); +begin + inherited; + { Disable complete redraws when size changes. CS_H/VREDRAW cause flicker + and are not necessary for this control at run time } + if not(csDesigning in ComponentState) then + with Params.WindowClass do + Style := Style and not(CS_HREDRAW or CS_VREDRAW); +end; + +destructor TTBDock.Destroy; +begin + if Assigned(FBackground) then + FBackground.UnregisterChanges(BackgroundChanged); + inherited; + DockVisibleList.Free; + DockList.Free; +end; + +procedure TTBDock.SetParent(AParent: TWinControl); +begin + if (AParent is TTBCustomDockableWindow) or (AParent is TTBDock) then + raise EInvalidOperation.Create(STBDockParentNotAllowed); + + inherited; +end; + +procedure TTBDock.BeginUpdate; +begin + Inc(FDisableArrangeToolbars); +end; + +procedure TTBDock.EndUpdate; +begin + Dec(FDisableArrangeToolbars); + if FArrangeToolbarsNeeded and (FDisableArrangeToolbars = 0) then + ArrangeToolbars; +end; + +function TTBDock.HasVisibleToolbars: Boolean; +var + I: Integer; +begin + Result := False; + for I := 0 to DockList.Count-1 do + if ToolbarVisibleOnDock(TTBCustomDockableWindow(DockList[I])) then begin + Result := True; + Break; + end; +end; + +function TTBDock.ToolbarVisibleOnDock(const AToolbar: TTBCustomDockableWindow): Boolean; +begin + Result := (AToolbar.Parent = Self) and + (AToolbar.Visible or (csDesigning in AToolbar.ComponentState)); +end; + +function TTBDock.GetCurrentRowSize(const Row: Integer; + var AFullSize: Boolean): Integer; +var + I, J: Integer; + T: TTBCustomDockableWindow; +begin + Result := 0; + AFullSize := False; + if Row < 0 then Exit; + for I := 0 to DockList.Count-1 do begin + T := DockList[I]; + if (T.FEffectiveDockRow = Row) and ToolbarVisibleOnDock(T) then begin + AFullSize := T.FullSize; + if not(Position in PositionLeftOrRight) then + J := T.Height + else + J := T.Width; + if J > Result then + Result := J; + end; + end; +end; + +function TTBDock.GetMinRowSize(const Row: Integer; + const ExcludeControl: TTBCustomDockableWindow): Integer; +var + I, J: Integer; + T: TTBCustomDockableWindow; +begin + Result := 0; + if Row < 0 then Exit; + for I := 0 to DockList.Count-1 do begin + T := DockList[I]; + if (T <> ExcludeControl) and (T.FEffectiveDockRow = Row) and + ToolbarVisibleOnDock(T) then begin + J := T.FLastRowSize; + if J > Result then + Result := J; + end; + end; +end; + +function TTBDock.GetDesignModeRowOf(const XY: Integer): Integer; +{ Similar to GetRowOf, but is a little different to accomidate design mode + better } +var + HighestRowPlus1, R, CurY, CurRowSize: Integer; + FullSize: Boolean; +begin + Result := 0; + HighestRowPlus1 := GetHighestRow(True)+1; + CurY := 0; + for R := 0 to HighestRowPlus1 do begin + Result := R; + if R = HighestRowPlus1 then Break; + CurRowSize := GetCurrentRowSize(R, FullSize); + if CurRowSize = 0 then Continue; + Inc(CurY, CurRowSize); + if XY < CurY then + Break; + end; +end; + +function TTBDock.GetHighestRow(const HighestEffective: Boolean): Integer; +{ Returns highest used row number, or -1 if no rows are used } +var + I, J: Integer; +begin + Result := -1; + for I := 0 to DockList.Count-1 do + with TTBCustomDockableWindow(DockList[I]) do begin + if HighestEffective then + J := FEffectiveDockRow + else + J := FDockRow; + if J > Result then + Result := J; + end; +end; + +procedure TTBDock.ChangeWidthHeight(const NewWidth, NewHeight: Integer); +{ Same as setting Width/Height directly, but does not lose Align position. } +begin + case Align of + alNone, alTop, alLeft: + SetBounds(Left, Top, NewWidth, NewHeight); + alBottom: + SetBounds(Left, Top-NewHeight+Height, NewWidth, NewHeight); + alRight: + SetBounds(Left-NewWidth+Width, Top, NewWidth, NewHeight); + end; +end; + +function TTBDock.Accepts(ADockableWindow: TTBCustomDockableWindow): Boolean; +begin + Result := AllowDrag; +end; + +procedure TTBDock.AlignControls(AControl: TControl; var Rect: TRect); +begin + ArrangeToolbars; +end; + +function CompareDockRowPos(const Item1, Item2, ExtraData: Pointer): Integer; far; +begin + if TTBCustomDockableWindow(Item1).FDockRow <> TTBCustomDockableWindow(Item2).FDockRow then + Result := TTBCustomDockableWindow(Item1).FDockRow - TTBCustomDockableWindow(Item2).FDockRow + else + Result := TTBCustomDockableWindow(Item1).FDockPos - TTBCustomDockableWindow(Item2).FDockPos; +end; + +procedure TTBDock.ArrangeToolbars; +{ The main procedure to arrange all the toolbars docked to it } +type + PPosDataRec = ^TPosDataRec; + TPosDataRec = record + Row, ActualRow, PrecSpace, FullSize, MinimumSize, Size, Overlap, Pos: Integer; + ShrinkMode: TTBShrinkMode; + NeedArrange: Boolean; + end; + PPosDataArray = ^TPosDataArray; + TPosDataArray = array[0..$7FFFFFFF div SizeOf(TPosDataRec)-1] of TPosDataRec; +var + NewDockList: TList; + PosData: PPosDataArray; + + function IndexOfDraggingToolbar(const List: TList): Integer; + { Returns index of toolbar in List that's currently being dragged, or -1 } + var + I: Integer; + begin + for I := 0 to List.Count-1 do + if TTBCustomDockableWindow(List[I]).FDragMode then begin + Result := I; + Exit; + end; + Result := -1; + end; + + function ShiftLeft(const Row, StartIndex, MaxSize: Integer): Integer; + { Removes PrecSpace pixels from toolbars at or before StartIndex until the + right edge of the toolbar at StartIndex is <= MaxSize. + Returns the total number of PrecSpace pixels removed from toolbars. } + var + PixelsOffEdge, I, J: Integer; + P: PPosDataRec; + begin + Result := 0; + PixelsOffEdge := -MaxSize; + for I := 0 to StartIndex do begin + P := @PosData[I]; + if P.Row = Row then begin + Inc(PixelsOffEdge, P.PrecSpace); + Inc(PixelsOffEdge, P.Size); + end; + end; + if PixelsOffEdge > 0 then + for I := StartIndex downto 0 do begin + P := @PosData[I]; + if P.Row = Row then begin + J := PixelsOffEdge; + if P.PrecSpace < J then + J := P.PrecSpace; + Dec(P.PrecSpace, J); + Dec(PixelsOffEdge, J); + Inc(Result, J); + if PixelsOffEdge = 0 then + Break; + end; + end; + end; + + function GetNextToolbar(const GoForward: Boolean; const Row: Integer; + const StartIndex: Integer): Integer; + var + I: Integer; + begin + Result := -1; + I := StartIndex; + while True do begin + if GoForward then begin + Inc(I); + if I >= NewDockList.Count then + Break; + end + else begin + Dec(I); + if I < 0 then + Break; + end; + if PosData[I].Row = Row then begin + Result := I; + Break; + end; + end; + end; + +var + LeftRight: Boolean; + EmptySize, HighestRow, R, CurPos, CurRowPixel, I, J, K, L, ClientW, + ClientH, MaxSize, TotalSize, PixelsPastMaxSize, Offset, CurRealPos, DragIndex, + MinRealPos, DragIndexPos, ToolbarsOnRow, CurRowSize: Integer; + P: PPosDataRec; + T: TTBCustomDockableWindow; + S: TPoint; + RowIsEmpty: Boolean; +label FoundNextToolbar; +begin + if (FDisableArrangeToolbars > 0) or (csLoading in ComponentState) then begin + FArrangeToolbarsNeeded := True; + Exit; + end; + + NewDockList := nil; + PosData := nil; + Inc(FDisableArrangeToolbars); + try + { Work around VCL alignment bug when docking toolbars taller or wider than + the client height or width of the form. } + {if not(csDesigning in ComponentState) and HandleAllocated then + SetWindowPos(Handle, HWND_TOP, 0, 0, 0, 0, + SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);} + + LeftRight := Position in PositionLeftOrRight; + + if not HasVisibleToolbars then begin + EmptySize := Ord(FFixAlign); + if csDesigning in ComponentState then + EmptySize := 9; + if not LeftRight then + ChangeWidthHeight(Width, EmptySize) + else + ChangeWidthHeight(EmptySize, Height); + Exit; + end; + + { It can't read the ClientWidth and ClientHeight properties because they + attempt to create a handle, which requires Parent to be set. "ClientW" + and "ClientH" are calculated instead. } + ClientW := Width - FNonClientWidth; + if ClientW < 0 then ClientW := 0; + ClientH := Height - FNonClientHeight; + if ClientH < 0 then ClientH := 0; + + { Remove toolbars from DockList & DockVisibleList that are destroying, so + that no methods on these toolbars will be called. + This is needed because in certain rare cases ArrangeToolbars can be + indirectly called while a docked toolbar is being destroyed. } + for I := DockList.Count-1 downto 0 do begin + T := DockList[I]; + if csDestroying in T.ComponentState then begin + DockList.Delete(I); + DockVisibleList.Remove(T); + end; + end; + + { If LimitToOneRow is True, only use the first row } + if FLimitToOneRow then + for I := 0 to DockList.Count-1 do + with TTBCustomDockableWindow(DockList[I]) do + FDockRow := 0; + + { Copy DockList to NewDockList, and ensure it is in correct ordering + according to DockRow/DockPos } + NewDockList := TList.Create; + NewDockList.Count := DockList.Count; + for I := 0 to NewDockList.Count-1 do + NewDockList[I] := DockList[I]; + I := IndexOfDraggingToolbar(NewDockList); + ListSortEx(NewDockList, CompareDockRowPos, nil); + DragIndex := IndexOfDraggingToolbar(NewDockList); + if (I <> -1) and TTBCustomDockableWindow(NewDockList[DragIndex]).FDragSplitting then begin + { When splitting, don't allow the toolbar being dragged to change + positions in the dock list } + NewDockList.Move(DragIndex, I); + DragIndex := I; + end; + ListSortEx(DockVisibleList, CompareDockRowPos, nil); + { Find highest row number } + HighestRow := GetHighestRow(False); + + { Create a temporary array that holds new position data for the toolbars } + PosData := AllocMem(NewDockList.Count * SizeOf(TPosDataRec)); + for I := 0 to NewDockList.Count-1 do begin + P := @PosData[I]; + T := NewDockList[I]; + P.ActualRow := T.FDockRow; + if ToolbarVisibleOnDock(T) then + P.Row := T.FDockRow + else + P.Row := -1; + P.Pos := T.FDockPos; + end; + + { Find FInsertRowBefore=True and FullSize=True toolbars and make sure there + aren't any other toolbars on the same row. If there are, shift them down + a row. } + for L := 0 to 1 do begin + R := 0; + while R <= HighestRow do begin + for I := 0 to NewDockList.Count-1 do begin + T := NewDockList[I]; + if (PosData[I].ActualRow = R) and + (((L = 0) and T.FInsertRowBefore and not LimitToOneRow) or + ((L = 1) and T.FullSize)) then + for J := 0 to NewDockList.Count-1 do + if (J <> I) and (PosData[J].ActualRow = R) then begin + for K := 0 to NewDockList.Count-1 do begin + if K <> I then begin + P := @PosData[K]; + if P.ActualRow >= R then + Inc(P.ActualRow); + if P.Row >= R then + Inc(P.Row); + end; + end; + Inc(HighestRow); + Break; + end; + end; + Inc(R); + end; + end; + + { Remove blank rows. + Note that rows that contain only invisible or currently floating toolbars + are intentionally not removed, so that when the toolbars are shown again, + they stay on their own row. } + R := 0; + while R <= HighestRow do begin + RowIsEmpty := True; + for I := 0 to NewDockList.Count-1 do + if PosData[I].ActualRow = R then begin + RowIsEmpty := False; + Break; + end; + if RowIsEmpty then begin + { Shift all ones higher than R back one } + for I := 0 to NewDockList.Count-1 do begin + if PosData[I].ActualRow > R then + Dec(PosData[I].ActualRow); + if PosData[I].Row > R then + Dec(PosData[I].Row); + end; + Dec(HighestRow); + end + else + Inc(R); + end; + + { Calculate positions and sizes of each row } + R := 0; + while R <= HighestRow do begin + if not LeftRight then + MaxSize := ClientW + else + MaxSize := ClientH; + + { Set initial sizes } + TotalSize := 0; + ToolbarsOnRow := 0; + MinRealPos := 0; + for I := 0 to NewDockList.Count-1 do begin + P := @PosData[I]; + if P.Row = R then begin + T := NewDockList[I]; + T.GetBaseSize(S); + if not LeftRight then + J := S.X + T.NonClientWidth + else + J := S.Y + T.NonClientHeight; + P.FullSize := J; + P.Size := J; + P.ShrinkMode := T.GetShrinkMode; + P.MinimumSize := 0; + T.GetMinShrinkSize(P.MinimumSize); + if P.MinimumSize > P.FullSize then + { don't allow minimum shrink size to be less than full size } + P.MinimumSize := P.FullSize; + if P.ShrinkMode = tbsmChevron then + Inc(MinRealPos, P.MinimumSize) + else + Inc(MinRealPos, P.FullSize); + { If the toolbar isn't the first toolbar on the row, and the toolbar + would go off the edge even after it's shrunk, then move it onto a + row of its own } + if (ToolbarsOnRow > 0) and (MinRealPos > MaxSize) and + not LimitToOneRow then begin + for K := I to NewDockList.Count-1 do begin + P := @PosData[K]; + if P.ActualRow >= R then + Inc(P.ActualRow); + if P.Row >= R then + Inc(P.Row); + end; + Inc(HighestRow); + Break; + end; + Inc(TotalSize, J); + Inc(ToolbarsOnRow); + end; + end; + PixelsPastMaxSize := TotalSize - MaxSize; + + { Set initial arrangement; don't shrink toolbars yet } + DragIndexPos := 0; + CurPos := 0; + CurRealPos := 0; + MinRealPos := 0; + for I := 0 to NewDockList.Count-1 do begin + P := @PosData[I]; + T := NewDockList[I]; + if P.Row = R then begin + if (CurPos = 0) and (T.FullSize or T.Stretch) then + { Force to left } + J := 0 + else + J := T.FDockPos; + if I = DragIndex then + DragIndexPos := J; + { Don't let this toolbar overlap preceding toolbars by more than + the sum of their minimum sizes } + if J < MinRealPos then + J := MinRealPos; + if J > CurPos then begin + { There's a gap between the left edge or previous toolbar and + this toolbar } + if PixelsPastMaxSize <= 0 then begin + P.PrecSpace := J - CurPos; + CurPos := J; + end + else + { Don't allow a gap if exceeding MaxSize } + J := CurPos; + end + else begin + if J < CurRealPos then + P.Overlap := CurRealPos - J; + end; + + Inc(CurPos, P.Size); + CurRealPos := J + P.Size; + Inc(MinRealPos, P.MinimumSize); + end; + end; + + { If we aren't exceeding MaxSize, allow the toolbar being dragged + to push other toolbars to the left } + if (PixelsPastMaxSize < 0) and (DragIndex <> -1) and + (PosData[DragIndex].Row = R) then begin + I := GetNextToolbar(False, R, DragIndex); + if I <> -1 then begin + J := ShiftLeft(R, I, DragIndexPos); + if J > 0 then begin + { Ensure that toolbars that follow the toolbar being dragged stay + at the same place by increasing PrecSpace on the next toolbar } + I := GetNextToolbar(True, R, DragIndex); + if I <> -1 then + Inc(PosData[I].PrecSpace, J); + end; + end; + end; + + { If any toolbars are going off the edge of the dock, try to make them + at least partially visible by shifting preceding toolbars left } + I := GetNextToolbar(False, R, NewDockList.Count); + if I <> -1 then + ShiftLeft(R, I, MaxSize); + + { Shrink toolbars that overlap other toolbars (Overlaps[x] > 0) } + if PixelsPastMaxSize > 0 then begin + Offset := 0; + for I := 0 to NewDockList.Count-1 do begin + if PosData[I].Row <> R then + Continue; + T := NewDockList[I]; + if (ToolbarsOnRow > 1) and T.FDragMode then + T.FDragCanSplit := True; + Inc(Offset, PosData[I].Overlap); + if Offset > PixelsPastMaxSize then + Offset := PixelsPastMaxSize; + if Offset > 0 then + for J := I-1 downto 0 do begin + P := @PosData[J]; + if P.Row <> R then + Continue; + { How much can we shrink this toolbar J to get toolbar I to + its preferred position? } + if P.ShrinkMode = tbsmChevron then + L := Offset + else + L := 0; + K := -(P.Size - L - P.MinimumSize); { the number of pixels that exceed the minimum size } + if K > 0 then + { Don't shrink a toolbar below its minimum allowed size } + Dec(L, K); + Dec(P.Size, L); + Dec(PixelsPastMaxSize, L); + Dec(Offset, L); + if (Offset = 0) or + { This is needed so toolbars can push other toolbars to the + right when splitting: } + (J = DragIndex) then + Break; + end; + end; + end; + + { Still exceeding MaxSize? Make sure the rightmost toolbar(s) are + at least partially visible with a width of MinimumSize } + if PixelsPastMaxSize > 0 then begin + for I := NewDockList.Count-1 downto 0 do begin + P := @PosData[I]; + if (P.Row <> R) or (P.ShrinkMode = tbsmNone) or + ((P.ShrinkMode = tbsmWrap) and (ToolbarsOnRow > 1)) then + Continue; + J := P.Size - P.MinimumSize; + if J > 0 then begin { can we shrink this toolbar any? } + if J > PixelsPastMaxSize then + J := PixelsPastMaxSize; + Dec(P.Size, J); + Dec(PixelsPastMaxSize, J); + end; + if PixelsPastMaxSize = 0 then + Break; + end; + end; + + { Set Poses, and adjust size of FullSize & Stretch toolbars } + CurPos := 0; + for I := 0 to NewDockList.Count-1 do begin + P := @PosData[I]; + T := NewDockList[I]; + if P.Row = R then begin + if T.FullSize or T.Stretch then begin + { Remove any preceding space from this toolbar } + Inc(P.Size, P.PrecSpace); + P.PrecSpace := 0; + end; + Inc(CurPos, P.PrecSpace); + if T.FullSize then begin + { Claim all space } + if P.Size < MaxSize then + P.Size := MaxSize; + end + else if T.Stretch then begin + { Steal any preceding space from the next toolbar } + for J := I+1 to NewDockList.Count-1 do + if PosData[J].Row = R then begin + Inc(P.Size, PosData[J].PrecSpace); + PosData[J].PrecSpace := 0; + goto FoundNextToolbar; + end; + { or claim any remaining space } + if P.Size < MaxSize - CurPos then + P.Size := MaxSize - CurPos; + FoundNextToolbar: + end; + P.Pos := CurPos; + Inc(CurPos, P.Size); + end; + end; + + Inc(R); + end; + + for I := 0 to NewDockList.Count-1 do begin + T := NewDockList[I]; + T.FEffectiveDockRow := PosData[I].ActualRow; + T.FEffectiveDockPos := PosData[I].Pos; + { If FCommitNewPositions is True, update all the toolbars' DockPos and + DockRow properties to match the actual positions. + Also update the ordering of DockList to match NewDockList } + if FCommitNewPositions then begin + T.FDockRow := T.FEffectiveDockRow; + T.FDockPos := T.FEffectiveDockPos; + DockList[I] := NewDockList[I]; + end; + end; + + { Now actually move the toolbars } + CurRowPixel := 0; + for R := 0 to HighestRow do begin + CurRowSize := 0; + for I := 0 to NewDockList.Count-1 do begin + P := @PosData[I]; + T := NewDockList[I]; + if P.Row = R then begin + K := T.FCurrentSize; + T.FCurrentSize := P.Size; + if P.Size >= P.FullSize then begin + T.FCurrentSize := 0; + { Reason: so that if new items are added to a non-shrunk toolbar + at run-time (causing its width to increase), the toolbar won't + shrink unnecessarily } + end; + if (P.ShrinkMode <> tbsmNone) and (T.FCurrentSize <> K) then begin + { If Size is changing and we are to display a chevron or wrap, + call DoArrange to get an accurate row size } + S := T.DoArrange(False, TBGetDockTypeOf(Self, False), False, Self); + { Force a rearrange in case the actual size isn't changing but the + chevron visibility might have changed (which can happen if + items are added to a FullSize=True toolbar at run-time) } + P.NeedArrange := True; + end + else begin + if (P.ShrinkMode = tbsmWrap) and (P.Size < P.FullSize) then begin + { Preserve existing height (or width) on a wrapped toolbar + whose size isn't changing now } + S.X := T.Width - T.NonClientWidth; + S.Y := T.Height - T.NonClientHeight; + end + else + T.GetBaseSize(S); + end; + if not LeftRight then + K := S.Y + else + K := S.X; + T.FLastRowSize := K; + if K > CurRowSize then + CurRowSize := K; + end; + end; + if CurRowSize <> 0 then + Inc(CurRowSize, DockedBorderSize2); + for I := 0 to NewDockList.Count-1 do begin + P := @PosData[I]; + T := NewDockList[I]; + if P.Row = R then begin + Inc(T.FUpdatingBounds); + try + K := T.FCurrentSize; + if P.NeedArrange then + T.FArrangeNeeded := True; + if not LeftRight then + T.SetBounds(P.Pos, CurRowPixel, P.Size, CurRowSize) + else + T.SetBounds(CurRowPixel, P.Pos, CurRowSize, P.Size); + if T.FArrangeNeeded then + { ^ don't arrange again if SetBounds call already caused one } + T.Arrange; + { Restore FCurrentSize since TTBToolbarView.DoUpdatePositions + clears it } + T.FCurrentSize := K; + finally + Dec(T.FUpdatingBounds); + end; + end; + end; + Inc(CurRowPixel, CurRowSize); + end; + + { Set the size of the dock } + if not LeftRight then + ChangeWidthHeight(Width, CurRowPixel + FNonClientHeight) + else + ChangeWidthHeight(CurRowPixel + FNonClientWidth, Height); + finally + Dec(FDisableArrangeToolbars); + FArrangeToolbarsNeeded := False; + FCommitNewPositions := False; + FreeMem(PosData); + NewDockList.Free; + end; +end; + +procedure TTBDock.CommitPositions; +{ Copies docked toolbars' EffectiveDockRow and EffectiveDockPos properties + into DockRow and DockPos respectively. + Note that this does not reorder DockList like ArrangeToolbars does when + FCommitNewPositions=True. } +var + I: Integer; + T: TTBCustomDockableWindow; +begin + for I := 0 to DockVisibleList.Count-1 do begin + T := DockVisibleList[I]; + T.FDockRow := T.FEffectiveDockRow; + T.FDockPos := T.FEffectiveDockPos; + end; +end; + +procedure TTBDock.ChangeDockList(const Insert: Boolean; + const Bar: TTBCustomDockableWindow); +{ Inserts or removes Bar from DockList } +var + I: Integer; +begin + I := DockList.IndexOf(Bar); + if Insert then begin + if I = -1 then begin + Bar.FreeNotification(Self); + DockList.Add(Bar); + end; + end + else begin + if I <> -1 then + DockList.Delete(I); + end; + ToolbarVisibilityChanged(Bar, False); +end; + +procedure TTBDock.ToolbarVisibilityChanged(const Bar: TTBCustomDockableWindow; + const ForceRemove: Boolean); +var + Modified, VisibleOnDock: Boolean; + I: Integer; +begin + Modified := False; + I := DockVisibleList.IndexOf(Bar); + VisibleOnDock := not ForceRemove and ToolbarVisibleOnDock(Bar); + if VisibleOnDock then begin + if I = -1 then begin + DockVisibleList.Add(Bar); + Modified := True; + end; + end + else begin + if I <> -1 then begin + DockVisibleList.Remove(Bar); + Modified := True; + end; + end; + + if Modified then begin + ArrangeToolbars; + + if Assigned(FOnInsertRemoveBar) then + FOnInsertRemoveBar(Self, VisibleOnDock, Bar); + end; +end; + +procedure TTBDock.Loaded; +begin + inherited; + { Rearranging is disabled while the component is loading, so now that it's + loaded, rearrange it. } + ArrangeToolbars; +end; + +procedure TTBDock.Notification(AComponent: TComponent; Operation: TOperation); +begin + inherited; + if Operation = opRemove then begin + if AComponent = FBackground then + Background := nil + else if AComponent is TTBCustomDockableWindow then begin + DockList.Remove(AComponent); + DockVisibleList.Remove(AComponent); + end; + end; +end; + +function TTBDock.GetPalette: HPALETTE; +begin + if UsingBackground and Assigned(FBackground) then + { ^ by default UsingBackground returns False if FBackground isn't assigned, + but UsingBackground may be overridden and return True when it isn't } + Result := FBackground.GetPalette + else + Result := 0; +end; + +procedure TTBDock.WMEraseBkgnd(var Message: TWMEraseBkgnd); +var + R, R2: TRect; + P1, P2: TPoint; + SaveIndex: Integer; +begin + { Draw the Background if there is one, otherwise use default erasing + behavior } + if UsingBackground then begin + R := ClientRect; + R2 := R; + { Make up for nonclient area } + P1 := ClientToScreen(Point(0, 0)); + P2 := Parent.ClientToScreen(BoundsRect.TopLeft); + Dec(R2.Left, Left + (P1.X-P2.X)); + Dec(R2.Top, Top + (P1.Y-P2.Y)); + SaveIndex := SaveDC(Message.DC); + IntersectClipRect(Message.DC, R.Left, R.Top, R.Right, R.Bottom); + DrawBackground(Message.DC, R2); + RestoreDC(Message.DC, SaveIndex); + Message.Result := 1; + end + else + inherited; +end; + +procedure TTBDock.Paint; +var + R: TRect; +begin + inherited; + { Draw dotted border in design mode } + if csDesigning in ComponentState then begin + R := ClientRect; + with Canvas do begin + Pen.Style := psDot; + Pen.Color := clBtnShadow; + Brush.Style := bsClear; + Rectangle(R.Left, R.Top, R.Right, R.Bottom); + Pen.Style := psSolid; + end; + end; +end; + +procedure TTBDock.WMMove(var Message: TWMMove); +begin + inherited; + if UsingBackground then + InvalidateBackgrounds; +end; + +{$IFNDEF JR_D4} +procedure TTBDock.WMSize(var Message: TWMSize); +begin + inherited; + if not(csLoading in ComponentState) and Assigned(FOnResize) then + FOnResize(Self); +end; +{$ENDIF} + +procedure TTBDock.WMNCCalcSize(var Message: TWMNCCalcSize); +begin + inherited; + { note to self: non-client size is stored in FNonClientWidth & + FNonClientHeight } + with Message.CalcSize_Params^.rgrc[0] do begin + if blTop in BoundLines then Inc(Top); + if blBottom in BoundLines then Dec(Bottom); + if blLeft in BoundLines then Inc(Left); + if blRight in BoundLines then Dec(Right); + end; +end; + +procedure TTBDock.DrawNCArea(const DrawToDC: Boolean; const ADC: HDC; + const Clip: HRGN); + + procedure DrawLine(const DC: HDC; const X1, Y1, X2, Y2: Integer); + begin + MoveToEx(DC, X1, Y1, nil); LineTo(DC, X2, Y2); + end; +var + RW, R, R2, RC: TRect; + DC: HDC; + HighlightPen, ShadowPen, SavePen: HPEN; + FillBrush: HBRUSH; +label 1; +begin + { This works around WM_NCPAINT problem described at top of source code } + {no! R := Rect(0, 0, Width, Height);} + GetWindowRect(Handle, RW); + R := RW; + OffsetRect(R, -R.Left, -R.Top); + + if not DrawToDC then + DC := GetWindowDC(Handle) + else + DC := ADC; + try + { Use update region } + if not DrawToDC then + SelectNCUpdateRgn(Handle, DC, Clip); + + { Draw BoundLines } + R2 := R; + if (BoundLines <> []) and + ((csDesigning in ComponentState) or HasVisibleToolbars) then begin + HighlightPen := CreatePen(PS_SOLID, 1, GetSysColor(COLOR_BTNHIGHLIGHT)); + ShadowPen := CreatePen(PS_SOLID, 1, GetSysColor(COLOR_BTNSHADOW)); + SavePen := SelectObject(DC, ShadowPen); + if blTop in BoundLines then begin + DrawLine(DC, R.Left, R.Top, R.Right, R.Top); + Inc(R2.Top); + end; + if blLeft in BoundLines then begin + DrawLine(DC, R.Left, R.Top, R.Left, R.Bottom); + Inc(R2.Left); + end; + SelectObject(DC, HighlightPen); + if blBottom in BoundLines then begin + DrawLine(DC, R.Left, R.Bottom-1, R.Right, R.Bottom-1); + Dec(R2.Bottom); + end; + if blRight in BoundLines then begin + DrawLine(DC, R.Right-1, R.Top, R.Right-1, R.Bottom); + Dec(R2.Right); + end; + SelectObject(DC, SavePen); + DeleteObject(ShadowPen); + DeleteObject(HighlightPen); + end; + Windows.GetClientRect(Handle, RC); + if not IsRectEmpty(RC) then begin + { ^ ExcludeClipRect can't be passed rectangles that have (Bottom < Top) or + (Right < Left) since it doesn't treat them as empty } + MapWindowPoints(Handle, 0, RC, 2); + OffsetRect(RC, -RW.Left, -RW.Top); + if EqualRect(RC, R2) then + { Skip FillRect because there would be nothing left after ExcludeClipRect } + goto 1; + ExcludeClipRect(DC, RC.Left, RC.Top, RC.Right, RC.Bottom); + end; + FillBrush := CreateSolidBrush(ColorToRGB(Color)); + FillRect(DC, R2, FillBrush); + DeleteObject(FillBrush); + 1: + finally + if not DrawToDC then + ReleaseDC(Handle, DC); + end; +end; + +procedure TTBDock.WMNCPaint(var Message: TMessage); +begin + DrawNCArea(False, 0, HRGN(Message.WParam)); +end; + +procedure DockNCPaintProc(Wnd: HWND; DC: HDC; AppData: Longint); +begin + TTBDock(AppData).DrawNCArea(True, DC, 0); +end; + +procedure TTBDock.WMPrint(var Message: TMessage); +begin + HandleWMPrint(Handle, Message, DockNCPaintProc, Longint(Self)); +end; + +procedure TTBDock.WMPrintClient(var Message: TMessage); +begin + HandleWMPrintClient(Self, Message); +end; + +procedure TTBDock.CMSysColorChange(var Message: TMessage); +begin + inherited; + if Assigned(FBackground) then + FBackground.SysColorChanged; +end; + +procedure TTBDock.RelayMsgToFloatingBars(var Message: TMessage); +var + I: Integer; + T: TTBCustomDockableWindow; +begin + for I := 0 to DockList.Count-1 do begin + T := DockList[I]; + if (csMenuEvents in T.ControlStyle) and T.Floating and T.Showing and + T.Enabled then begin + Message.Result := T.Perform(Message.Msg, Message.WParam, Message.LParam); + if Message.Result <> 0 then + Exit; + end; + end; +end; + +procedure TTBDock.WMSysCommand(var Message: TWMSysCommand); +begin + { Relay WM_SYSCOMMAND messages to floating toolbars which were formerly + docked. That way, items on floating menu bars can be accessed with Alt. } + RelayMsgToFloatingBars(TMessage(Message)); +end; + +procedure TTBDock.CMDialogKey(var Message: TCMDialogKey); +begin + RelayMsgToFloatingBars(TMessage(Message)); + if Message.Result = 0 then + inherited; +end; + +procedure TTBDock.CMDialogChar(var Message: TCMDialogChar); +begin + RelayMsgToFloatingBars(TMessage(Message)); + if Message.Result = 0 then + inherited; +end; + +{ TTBDock - property access methods } + +procedure TTBDock.SetAllowDrag(Value: Boolean); +var + I: Integer; +begin + if FAllowDrag <> Value then begin + FAllowDrag := Value; + for I := 0 to ControlCount-1 do + if Controls[I] is TTBCustomDockableWindow then + RecalcNCArea(TTBCustomDockableWindow(Controls[I])); + end; +end; + +function TTBDock.UsingBackground: Boolean; +begin + Result := Assigned(FBackground) and FBackground.UsingBackground; +end; + +procedure TTBDock.DrawBackground(DC: HDC; const DrawRect: TRect); +begin + FBackground.Draw(DC, DrawRect); +end; + +procedure TTBDock.InvalidateBackgrounds; +{ Called after background is changed } +var + I: Integer; + T: TTBCustomDockableWindow; +begin + Invalidate; + { Synchronize child toolbars also } + for I := 0 to DockList.Count-1 do begin + T := TTBCustomDockableWindow(DockList[I]); + if ToolbarVisibleOnDock(T) then + { Invalidate both non-client and client area } + InvalidateAll(T); + end; +end; + +procedure TTBDock.SetBackground(Value: TTBBasicBackground); +begin + if FBackground <> Value then begin + if Assigned(FBackground) then + FBackground.UnregisterChanges(BackgroundChanged); + FBackground := Value; + if Assigned(Value) then begin + Value.FreeNotification(Self); + Value.RegisterChanges(BackgroundChanged); + end; + InvalidateBackgrounds; + end; +end; + +procedure TTBDock.BackgroundChanged(Sender: TObject); +begin + InvalidateBackgrounds; +end; + +procedure TTBDock.SetBackgroundOnToolbars(Value: Boolean); +begin + if FBkgOnToolbars <> Value then begin + FBkgOnToolbars := Value; + InvalidateBackgrounds; + end; +end; + +procedure TTBDock.SetBoundLines(Value: TTBDockBoundLines); +var + X, Y: Integer; + B: TTBDockBoundLines; +begin + if FBoundLines <> Value then begin + FBoundLines := Value; + X := 0; + Y := 0; + B := BoundLines; { optimization } + if blTop in B then Inc(Y); + if blBottom in B then Inc(Y); + if blLeft in B then Inc(X); + if blRight in B then Inc(X); + FNonClientWidth := X; + FNonClientHeight := Y; + RecalcNCArea(Self); + end; +end; + +procedure TTBDock.SetFixAlign(Value: Boolean); +begin + if FFixAlign <> Value then begin + FFixAlign := Value; + ArrangeToolbars; + end; +end; + +procedure TTBDock.SetPosition(Value: TTBDockPosition); +begin + if (FPosition <> Value) and (ControlCount <> 0) then + raise EInvalidOperation.Create(STBDockCannotChangePosition); + FPosition := Value; + case Position of + dpTop: Align := alTop; + dpBottom: Align := alBottom; + dpLeft: Align := alLeft; + dpRight: Align := alRight; + end; +end; + +function TTBDock.GetToolbarCount: Integer; +begin + Result := DockVisibleList.Count; +end; + +function TTBDock.GetToolbars(Index: Integer): TTBCustomDockableWindow; +begin + Result := TTBCustomDockableWindow(DockVisibleList[Index]); +end; + +(*function TTBDock.GetVersion: TToolbar97Version; +begin + Result := Toolbar97VersionPropText; +end; + +procedure TTBDock.SetVersion(const Value: TToolbar97Version); +begin + { write method required for the property to show up in Object Inspector } +end;*) + + +{ TTBFloatingWindowParent - Internal } + +constructor TTBFloatingWindowParent.Create(AOwner: TComponent); +begin + { Don't use TForm's Create since it attempts to load a form resource, which + TTBFloatingWindowParent doesn't have. } + CreateNew(AOwner {$IFDEF VER93} , 0 {$ENDIF}); +end; + +destructor TTBFloatingWindowParent.Destroy; +begin + inherited; +end; + +procedure TTBFloatingWindowParent.CreateParams(var Params: TCreateParams); +const + ThickFrames: array[Boolean] of DWORD = (0, WS_THICKFRAME); +begin + inherited; + + { Disable complete redraws when size changes. CS_H/VREDRAW cause flicker + and are not necessary for this control at run time } + if not(csDesigning in ComponentState) then + with Params.WindowClass do + Style := Style and not(CS_HREDRAW or CS_VREDRAW); + + with Params do begin + { Note: WS_THICKFRAME and WS_BORDER styles are included to ensure that + sizing grips are displayed on child controls with scrollbars. The + thick frame or border is not drawn by Windows; TCustomToolWindow97 + handles all border drawing by itself. } + if not(csDesigning in ComponentState) then + Style := WS_POPUP or WS_BORDER or ThickFrames[FDockableWindow.FResizable] + else + Style := Style or WS_BORDER or ThickFrames[FDockableWindow.FResizable]; + { The WS_EX_TOOLWINDOW style is needed so there isn't a taskbar button + for the toolbar when FloatingMode = fmOnTopOfAllForms. } + ExStyle := WS_EX_TOOLWINDOW; + end; +end; + +procedure TTBFloatingWindowParent.AlignControls(AControl: TControl; var Rect: TRect); +begin + { ignore Align setting of the child toolbar } +end; + +procedure TTBFloatingWindowParent.WMGetMinMaxInfo(var Message: TWMGetMinMaxInfo); +begin + inherited; + { Because the window uses the WS_THICKFRAME style (but not for the usual + purpose), it must process the WM_GETMINMAXINFO message to remove the + minimum and maximum size limits it imposes by default. } + with Message.MinMaxInfo^ do begin + with ptMinTrackSize do begin + X := 1; + Y := 1; + { Note to self: Don't put GetMinimumSize code here, since + ClientWidth/Height values are sometimes invalid during a RecreateWnd } + end; + with ptMaxTrackSize do begin + { Because of the 16-bit (signed) size limitations of Windows 95, + Smallints must be used instead of Integers or Longints } + X := High(Smallint); + Y := High(Smallint); + end; + end; +end; + +procedure TTBFloatingWindowParent.CMShowingChanged(var Message: TMessage); +const + ShowFlags: array[Boolean] of UINT = ( + SWP_NOSIZE or SWP_NOMOVE or SWP_NOZORDER or SWP_NOACTIVATE or SWP_HIDEWINDOW, + SWP_NOSIZE or SWP_NOMOVE or SWP_NOZORDER or SWP_NOACTIVATE or SWP_SHOWWINDOW); +begin + { Must override TCustomForm/TForm's CM_SHOWINGCHANGED handler so that the + form doesn't get activated when Visible is set to True. } + SetWindowPos(WindowHandle, 0, 0, 0, 0, 0, ShowFlags[Showing and FShouldShow]); +end; + +procedure TTBFloatingWindowParent.CMDialogKey(var Message: TCMDialogKey); +begin + { If Escape if pressed on a floating toolbar, return focus to the form } + if (Message.CharCode = VK_ESCAPE) and (KeyDataToShiftState(Message.KeyData) = []) and + Assigned(ParentForm) then begin + ParentForm.SetFocus; + Message.Result := 1; + end + else + inherited; +end; + +procedure TTBFloatingWindowParent.CMTextChanged(var Message: TMessage); +begin + inherited; + RedrawNCArea([twrdCaption]); +end; + +function GetCaptionRect(const Control: TTBFloatingWindowParent; + const AdjustForBorder, MinusCloseButton: Boolean): TRect; +begin + Result := Rect(0, 0, Control.ClientWidth, GetSmallCaptionHeight-1); + if MinusCloseButton then + Dec(Result.Right, Result.Bottom); + if AdjustForBorder then + with Control.FDockableWindow.GetFloatingBorderSize do + OffsetRect(Result, X, Y); +end; + +function GetCloseButtonRect(const Control: TTBFloatingWindowParent; + const AdjustForBorder: Boolean): TRect; +begin + Result := GetCaptionRect(Control, AdjustForBorder, False); + Result.Left := Result.Right - (GetSmallCaptionHeight-1); +end; + +procedure TTBFloatingWindowParent.WMNCCalcSize(var Message: TWMNCCalcSize); +var + TL, BR: TPoint; +begin + { Doesn't call inherited since it overrides the normal NC sizes } + Message.Result := 0; + with Message.CalcSize_Params^ do begin + FDockableWindow.GetFloatingNCArea(TL, BR); + with rgrc[0] do begin + Inc(Left, TL.X); + Inc(Top, TL.Y); + Dec(Right, BR.X); + Dec(Bottom, BR.Y); + end; + end; +end; + +procedure TTBFloatingWindowParent.WMNCPaint(var Message: TMessage); +begin + { Don't call inherited because it overrides the default NC painting } + DrawNCArea(False, 0, HRGN(Message.WParam), twrdAll); +end; + +procedure FloatingWindowParentNCPaintProc(Wnd: HWND; DC: HDC; AppData: Longint); +begin + with TTBFloatingWindowParent(AppData) do + DrawNCArea(True, DC, 0, twrdAll); +end; + +procedure TTBFloatingWindowParent.WMPrint(var Message: TMessage); +begin + HandleWMPrint(Handle, Message, FloatingWindowParentNCPaintProc, Longint(Self)); +end; + +procedure TTBFloatingWindowParent.WMPrintClient(var Message: TMessage); +begin + HandleWMPrintClient(Self, Message); +end; + +procedure TTBFloatingWindowParent.WMNCHitTest(var Message: TWMNCHitTest); +var + P: TPoint; + R: TRect; + BorderSize: TPoint; + C: Integer; +begin + inherited; + with Message do begin + P := SmallPointToPoint(Pos); + GetWindowRect(Handle, R); + Dec(P.X, R.Left); Dec(P.Y, R.Top); + if Result <> HTCLIENT then begin + Result := HTNOWHERE; + if FDockableWindow.ShowCaption and PtInRect(GetCaptionRect(Self, True, False), P) then begin + if FDockableWindow.FCloseButton and PtInRect(GetCloseButtonRect(Self, True), P) then + Result := HT_TB2k_Close + else + Result := HT_TB2k_Caption; + end + else + if FDockableWindow.Resizable then begin + BorderSize := FDockableWindow.GetFloatingBorderSize; + if not(tbdsResizeEightCorner in FDockableWindow.FDockableWindowStyles) then begin + if (P.Y >= 0) and (P.Y < BorderSize.Y) then Result := HTTOP else + if (P.Y < Height) and (P.Y >= Height-BorderSize.Y-1) then Result := HTBOTTOM else + if (P.X >= 0) and (P.X < BorderSize.X) then Result := HTLEFT else + if (P.X < Width) and (P.X >= Width-BorderSize.X-1) then Result := HTRIGHT; + end + else begin + C := BorderSize.X + (GetSmallCaptionHeight-1); + if (P.X >= 0) and (P.X < BorderSize.X) then begin + Result := HTLEFT; + if (P.Y < C) then Result := HTTOPLEFT else + if (P.Y >= Height-C) then Result := HTBOTTOMLEFT; + end + else + if (P.X < Width) and (P.X >= Width-BorderSize.X-1) then begin + Result := HTRIGHT; + if (P.Y < C) then Result := HTTOPRIGHT else + if (P.Y >= Height-C) then Result := HTBOTTOMRIGHT; + end + else + if (P.Y >= 0) and (P.Y < BorderSize.Y) then begin + Result := HTTOP; + if (P.X < C) then Result := HTTOPLEFT else + if (P.X >= Width-C) then Result := HTTOPRIGHT; + end + else + if (P.Y < Height) and (P.Y >= Height-BorderSize.Y-1) then begin + Result := HTBOTTOM; + if (P.X < C) then Result := HTBOTTOMLEFT else + if (P.X >= Width-C) then Result := HTBOTTOMRIGHT; + end; + end; + end; + end; + end; +end; + +procedure TTBFloatingWindowParent.SetCloseButtonState(Pushed: Boolean); +begin + if FCloseButtonDown <> Pushed then begin + FCloseButtonDown := Pushed; + RedrawNCArea([twrdCloseButton]); + end; +end; + +procedure TTBFloatingWindowParent.WMNCLButtonDown(var Message: TWMNCLButtonDown); +var + P: TPoint; + R, BR: TRect; +begin + case Message.HitTest of + HT_TB2k_Caption: begin + P := FDockableWindow.ScreenToClient(Point(Message.XCursor, Message.YCursor)); + FDockableWindow.BeginMoving(P.X, P.Y); + end; + HTLEFT..HTBOTTOMRIGHT: + if FDockableWindow.Resizable then + FDockableWindow.BeginSizing(TTBSizeHandle(Message.HitTest - HTLEFT)); + HT_TB2k_Close: begin + GetWindowRect(Handle, R); + BR := GetCloseButtonRect(Self, True); + OffsetRect(BR, R.Left, R.Top); + if CloseButtonLoop(Handle, BR, SetCloseButtonState) then + FDockableWindow.Close; + end; + else + inherited; + end; +end; + +procedure TTBFloatingWindowParent.WMNCLButtonDblClk(var Message: TWMNCLButtonDblClk); +begin + if Message.HitTest = HT_TB2k_Caption then + FDockableWindow.DoubleClick; +end; + +procedure TTBFloatingWindowParent.WMNCRButtonUp(var Message: TWMNCRButtonUp); +begin + FDockableWindow.ShowNCContextMenu(TSmallPoint(TMessage(Message).LParam)); +end; + +procedure TTBFloatingWindowParent.WMClose(var Message: TWMClose); +var + MDIParentForm: TTBCustomForm; +begin + { A floating toolbar does not use WM_CLOSE messages when its close button + is clicked, but Windows still sends a WM_CLOSE message if the user + presses Alt+F4 while one of the toolbar's controls is focused. Inherited + is not called since we do not want Windows' default processing - which + destroys the window. Instead, relay the message to the parent form. } + MDIParentForm := GetMDIParent(TBGetToolWindowParentForm(FDockableWindow)); + if Assigned(MDIParentForm) and MDIParentForm.HandleAllocated then + SendMessage(MDIParentForm.Handle, WM_CLOSE, 0, 0); + { Note to self: MDIParentForm is used instead of OwnerForm since MDI + childs don't process Alt+F4 as Close } +end; + +procedure TTBFloatingWindowParent.WMActivate(var Message: TWMActivate); +var + ParentForm: TTBCustomForm; +begin + if csDesigning in ComponentState then begin + inherited; + Exit; + end; + + ParentForm := GetMDIParent(TBGetToolWindowParentForm(FDockableWindow)); + + if Assigned(ParentForm) and ParentForm.HandleAllocated then + SendMessage(ParentForm.Handle, WM_NCACTIVATE, Ord(Message.Active <> WA_INACTIVE), 0); + + if Message.Active <> WA_INACTIVE then begin + { This works around a "gotcha" in TCustomForm.CMShowingChanged. When a form + is hidden, it uses the internal VCL function FindTopMostWindow to + find a new active window. The problem is that handles of floating + toolbars on the form being hidden can be returned by + FindTopMostWindow, so the following code is used to prevent floating + toolbars on the hidden form from being left active. } + if not IsWindowVisible(Handle) then + { ^ Calling IsWindowVisible with a floating toolbar handle will + always return False if its parent form is hidden since the + WH_CALLWNDPROC hook automatically updates the toolbars' + visibility. } + { Find and activate a window besides this toolbar } + SetActiveWindow(FindTopLevelWindow(Handle)) + else + { If the toolbar is being activated and the previous active window wasn't + its parent form, the form is activated instead. This is done so that if + the application is deactivated while a floating toolbar was active and + the application is reactivated again, it returns focus to the form. } + if Assigned(ParentForm) and ParentForm.HandleAllocated and + (Message.ActiveWindow <> ParentForm.Handle) then + SetActiveWindow(ParentForm.Handle); + end; +end; + +procedure TTBFloatingWindowParent.WMMouseActivate(var Message: TWMMouseActivate); +var + ParentForm, MDIParentForm: TTBCustomForm; +begin + if csDesigning in ComponentState then begin + inherited; + Exit; + end; + + { When floating, prevent the toolbar from activating when clicked. + This is so it doesn't take the focus away from the window that had it } + Message.Result := MA_NOACTIVATE; + + { Similar to calling BringWindowToTop, but doesn't activate it } + SetWindowPos(Handle, HWND_TOP, 0, 0, 0, 0, + SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); + + { Since it is returning MA_NOACTIVATE, activate the form instead. } + ParentForm := TBGetToolWindowParentForm(FDockableWindow); + MDIParentForm := GetMDIParent(ParentForm); + if (FDockableWindow.FFloatingMode = fmOnTopOfParentForm) and + FDockableWindow.FActivateParent and + Assigned(MDIParentForm) and (GetActiveWindow <> Handle) then begin + { ^ Note to self: The GetActiveWindow check must be in there so that + double-clicks work properly on controls like Edits } + if MDIParentForm.HandleAllocated then + SetActiveWindow(MDIParentForm.Handle); + if (MDIParentForm <> ParentForm) and { if it's an MDI child form } + ParentForm.HandleAllocated then + BringWindowToTop(ParentForm.Handle); + end; +end; + +procedure TTBFloatingWindowParent.WMMove(var Message: TWMMove); +begin + inherited; + FDockableWindow.Moved; +end; + +procedure TTBFloatingWindowParent.DrawNCArea(const DrawToDC: Boolean; + const ADC: HDC; const Clip: HRGN; RedrawWhat: TTBToolWindowNCRedrawWhat); +{ Redraws all the non-client area (the border, title bar, and close button) of + the toolbar when it is floating. } +const + COLOR_GRADIENTACTIVECAPTION = 27; + COLOR_GRADIENTINACTIVECAPTION = 28; + CaptionBkColors: array[Boolean, Boolean] of Integer = + ((COLOR_ACTIVECAPTION, COLOR_INACTIVECAPTION), + (COLOR_GRADIENTACTIVECAPTION, COLOR_GRADIENTINACTIVECAPTION)); + CaptionTextColors: array[Boolean] of Integer = + (COLOR_CAPTIONTEXT, COLOR_INACTIVECAPTIONTEXT); + + function GradientCaptionsEnabled: Boolean; + const + SPI_GETGRADIENTCAPTIONS = $1008; { Win98/NT5 only } + var + S: BOOL; + begin + Result := SystemParametersInfo(SPI_GETGRADIENTCAPTIONS, 0, @S, 0) and S; + end; + +const + CloseButtonState: array[Boolean] of UINT = (0, DFCS_PUSHED); + ActiveCaptionFlags: array[Boolean] of UINT = (DC_ACTIVE, 0); + DC_GRADIENT = $20; + GradientCaptionFlags: array[Boolean] of UINT = (0, DC_GRADIENT); +var + DC: HDC; + R, R2: TRect; + Gradient: Boolean; + SavePen: HPEN; + SaveIndex: Integer; + S: TPoint; +begin + if not HandleAllocated then Exit; + + if not DrawToDC then + DC := GetWindowDC(Handle) + else + DC := ADC; + try + { Use update region } + if not DrawToDC then + SelectNCUpdateRgn(Handle, DC, Clip); + + { Work around an apparent NT 4.0 & 2000 bug. If the width of the DC is + greater than the width of the screen, then any call to ExcludeClipRect + inexplicably shrinks the clipping rectangle to the screen width. I've + found that calling IntersectClipRect as done below magically fixes the + problem (but I'm not sure why). } + GetWindowRect(Handle, R); OffsetRect(R, -R.Left, -R.Top); + IntersectClipRect(DC, R.Left, R.Top, R.Right, R.Bottom); + + Gradient := GradientCaptionsEnabled; + + { Border } + if twrdBorder in RedrawWhat then begin + { This works around WM_NCPAINT problem described at top of source code } + {no! R := Rect(0, 0, Width, Height);} + GetWindowRect(Handle, R); OffsetRect(R, -R.Left, -R.Top); + DrawEdge(DC, R, EDGE_RAISED, BF_RECT); + SaveIndex := SaveDC(DC); + S := FDockableWindow.GetFloatingBorderSize; + with R do + ExcludeClipRect(DC, Left + S.X, Top + S.Y, Right - S.X, Bottom - S.Y); + InflateRect(R, -2, -2); + FillRect(DC, R, GetSysColorBrush(COLOR_BTNFACE)); + RestoreDC(DC, SaveIndex); + end; + + if FDockableWindow.ShowCaption then begin + if (twrdCaption in RedrawWhat) and FDockableWindow.FCloseButton and + (twrdCloseButton in RedrawWhat) then + SaveIndex := SaveDC(DC) + else + SaveIndex := 0; + try + if SaveIndex <> 0 then + with GetCloseButtonRect(Self, True) do + { Reduces flicker } + ExcludeClipRect(DC, Left, Top, Right, Bottom); + + { Caption } + if twrdCaption in RedrawWhat then begin + R := GetCaptionRect(Self, True, FDockableWindow.FCloseButton); + { Note that Delphi's Win32 help for DrawCaption is totally wrong! + I got updated info from www.microsoft.com/msdn/sdk/ } + DrawCaption(Handle, DC, R, DC_TEXT or DC_SMALLCAP or + ActiveCaptionFlags[FDockableWindow.FInactiveCaption] or + GradientCaptionFlags[Gradient]); + + { Line below caption } + R := GetCaptionRect(Self, True, False); + SavePen := SelectObject(DC, CreatePen(PS_SOLID, 1, GetSysColor(COLOR_BTNFACE))); + MoveToEx(DC, R.Left, R.Bottom, nil); + LineTo(DC, R.Right, R.Bottom); + DeleteObject(SelectObject(DC, SavePen)); + end; + finally + if SaveIndex <> 0 then + RestoreDC(DC, SaveIndex); + end; + + { Close button } + if FDockableWindow.FCloseButton then begin + R := GetCloseButtonRect(Self, True); + R2 := R; + InflateRect(R2, 0, -2); + Dec(R2.Right, 2); + if twrdCaption in RedrawWhat then begin + SaveIndex := SaveDC(DC); + ExcludeClipRect(DC, R2.Left, R2.Top, R2.Right, R2.Bottom); + FillRect(DC, R, GetSysColorBrush(CaptionBkColors[Gradient, + FDockableWindow.FInactiveCaption])); + RestoreDC(DC, SaveIndex); + end; + if twrdCloseButton in RedrawWhat then + DrawFrameControl(DC, R2, DFC_CAPTION, DFCS_CAPTIONCLOSE or + CloseButtonState[FCloseButtonDown]); + end; + end; + finally + if not DrawToDC then + ReleaseDC(Handle, DC); + end; +end; + +procedure TTBFloatingWindowParent.RedrawNCArea(const RedrawWhat: TTBToolWindowNCRedrawWhat); +begin + { Note: IsWindowVisible is called as an optimization. There's no need to + draw on invisible windows. } + if HandleAllocated and IsWindowVisible(Handle) then + DrawNCArea(False, 0, 0, RedrawWhat); +end; + + +{ TTBCustomDockableWindow } + +constructor TTBCustomDockableWindow.Create(AOwner: TComponent); +begin + inherited; + + ControlStyle := ControlStyle + + [csAcceptsControls, csClickEvents, csDoubleClicks, csSetCaption] - + [csCaptureMouse{capturing is done manually}, csOpaque]; + FAutoResize := True; + FActivateParent := True; + FBorderStyle := bsSingle; + FCloseButton := True; + FDblClickUndock := True; + FDockableTo := [dpTop, dpBottom, dpLeft, dpRight]; + FDockableWindowStyles := [tbdsResizeEightCorner, tbdsResizeClipCursor]; + FDockPos := -1; + FDragHandleStyle := dhSingle; + FEffectiveDockRow := -1; + FHideWhenInactive := True; + FResizable := True; + FShowCaption := True; + FSmoothDrag := True; + FUseLastDock := True; + + Color := clBtnFace; + + if not(csDesigning in ComponentState) then + InstallHookProc(Self, ToolbarHookProc, [hpSendActivate, hpSendActivateApp, + hpSendWindowPosChanged, hpPreDestroy]); + InitTrackMouseEvent; +end; + +destructor TTBCustomDockableWindow.Destroy; +begin + inherited; + FDockForms.Free; { must be done after 'inherited' because Notification accesses FDockForms } + FFloatParent.Free; + UninstallHookProc(Self, ToolbarHookProc); +end; + +function TTBCustomDockableWindow.HasParent: Boolean; +begin + if Parent is TTBFloatingWindowParent then + Result := False + else + Result := inherited HasParent; +end; + +function TTBCustomDockableWindow.GetParentComponent: TComponent; +begin + if Parent is TTBFloatingWindowParent then + Result := nil + else + Result := inherited GetParentComponent; +end; + +procedure TTBCustomDockableWindow.Moved; +begin + if not(csLoading in ComponentState) and Assigned(FOnMove) and (FDisableOnMove <= 0) then + FOnMove(Self); +end; + +procedure TTBCustomDockableWindow.WMMove(var Message: TWMMove); + + procedure Redraw; + { Redraws the control using an off-screen bitmap to avoid flicker } + var + CR, R: TRect; + W: HWND; + DC, BmpDC: HDC; + Bmp: HBITMAP; + begin + if not HandleAllocated then Exit; + CR := ClientRect; + W := Handle; + if GetUpdateRect(W, R, False) and EqualRect(R, CR) then begin + { The client area is already completely invalid, so don't bother using + an off-screen bitmap } + InvalidateAll(Self); + Exit; + end; + BmpDC := 0; + Bmp := 0; + DC := GetDC(W); + try + BmpDC := CreateCompatibleDC(DC); + Bmp := CreateCompatibleBitmap(DC, CR.Right, CR.Bottom); + SelectObject(BmpDC, Bmp); + SendMessage(W, WM_NCPAINT, 0, 0); + SendMessage(W, WM_ERASEBKGND, WPARAM(BmpDC), 0); + SendMessage(W, WM_PAINT, WPARAM(BmpDC), 0); + BitBlt(DC, 0, 0, CR.Right, CR.Bottom, BmpDC, 0, 0, SRCCOPY); + finally + if BmpDC <> 0 then DeleteDC(BmpDC); + if Bmp <> 0 then DeleteObject(Bmp); + ReleaseDC(W, DC); + end; + ValidateRect(W, nil); + end; + +begin + inherited; + FMoved := True; + if Docked and CurrentDock.UsingBackground then begin + { Needs to redraw so that the background is lined up with the dock at the + new position. } + Redraw; + end; + Moved; +end; + +{$IFNDEF JR_D4} +procedure TTBCustomDockableWindow.WMSize(var Message: TWMSize); +begin + inherited; + if not(csLoading in ComponentState) and Assigned(FOnResize) then + FOnResize(Self); +end; +{$ENDIF} + +procedure TTBCustomDockableWindow.WMEnable(var Message: TWMEnable); +begin + inherited; + { When a modal dialog is displayed and the toolbar window gets disabled as + a result, remove its topmost flag. } + if FFloatingMode = fmOnTopOfAllForms then + UpdateTopmostFlag; +end; + +procedure TTBCustomDockableWindow.UpdateCaptionState; +{ Updates the caption active/inactive state of a floating tool window. + Called when the tool window is visible or is about to be shown. } + + function IsPopupWindowActive: Boolean; + const + IID_ITBPopupWindow: TGUID = '{E45CBE74-1ECF-44CB-B064-6D45B1924708}'; + var + Ctl: TWinControl; + begin + Ctl := FindControl(GetActiveWindow); + { Instead of using "is TTBPopupWindow", which would require linking to the + TB2Item unit, check if the control implements the ITBPopupWindow + interface. This will tell us if it's a TTBPopupWindow or descendant. } + Result := Assigned(Ctl) and Assigned(Ctl.GetInterfaceEntry(IID_ITBPopupWindow)); + end; + + function GetActiveFormWindow: HWND; + var + Ctl: TWinControl; + begin + Result := GetActiveWindow; + { If the active window is a TTBFloatingWindowParent (i.e. a control on a + floating toolbar is focused), return the parent form handle instead } + Ctl := FindControl(Result); + if Assigned(Ctl) and (Ctl is TTBFloatingWindowParent) then begin + Ctl := TTBFloatingWindowParent(Ctl).ParentForm; + if Assigned(Ctl) and Ctl.HandleAllocated then + Result := Ctl.Handle; + end; + end; + +var + Inactive: Boolean; + ActiveWnd: HWND; +begin + { Update caption state if floating, but not if a control on a popup window + (e.g. a TTBEditItem) is currently focused; we don't want the captions on + all floating toolbars to turn gray in that case. (The caption state will + get updated when we're called the next time the active window changes, + i.e. when the user dismisses the popup window.) } + if (Parent is TTBFloatingWindowParent) and Parent.HandleAllocated and + not IsPopupWindowActive then begin + Inactive := False; + if not ApplicationIsActive then + Inactive := True + else if (FFloatingMode = fmOnTopOfParentForm) and + (HWND(GetWindowLong(Parent.Handle, GWL_HWNDPARENT)) <> Application.Handle) then begin + { Use inactive caption if the active window doesn't own the float parent + (directly or indirectly). Note: For compatibility with browser-embedded + TActiveForms, we use IsAncestorOfWindow instead of checking + TBGetToolWindowParentForm. } + ActiveWnd := GetActiveFormWindow; + if (ActiveWnd = 0) or not IsAncestorOfWindow(ActiveWnd, Parent.Handle) then + Inactive := True; + end; + if FInactiveCaption <> Inactive then begin + FInactiveCaption := Inactive; + TTBFloatingWindowParent(Parent).RedrawNCArea(twrdAll); + end; + end; +end; + +function TTBCustomDockableWindow.GetShowingState: Boolean; + + function IsWindowVisibleAndNotMinimized(Wnd: HWND): Boolean; + begin + Result := IsWindowVisible(Wnd); + if Result then begin + { Wnd may not be a top-level window (e.g. in the case of an MDI child + form, or an ActiveForm embedded in a web page), so go up the chain of + parent windows and see if any of them are minimized } + repeat + if IsIconic(Wnd) then begin + Result := False; + Break; + end; + { Stop if we're at a top-level window (no need to check owner windows) } + if GetWindowLong(Wnd, GWL_STYLE) and WS_CHILD = 0 then + Break; + Wnd := GetParent(Wnd); + until Wnd = 0; + end; + end; + +var + HideFloatingToolbars: Boolean; + ParentForm: TTBCustomForm; +begin + Result := Showing and (FHidden = 0); + if Floating and not(csDesigning in ComponentState) then begin + HideFloatingToolbars := FFloatingMode = fmOnTopOfParentForm; + if HideFloatingToolbars then begin + ParentForm := TBGetToolWindowParentForm(Self); + if Assigned(ParentForm) and ParentForm.HandleAllocated and + IsWindowVisibleAndNotMinimized(ParentForm.Handle) then + HideFloatingToolbars := False; + end; + Result := Result and not (HideFloatingToolbars or (FHideWhenInactive and not ApplicationIsActive)); + end; +end; + +procedure TTBCustomDockableWindow.UpdateVisibility; +{ Updates the visibility of the tool window, and additionally the caption + state if floating and showing } +var + IsVisible: Boolean; +begin + if HandleAllocated then begin + IsVisible := IsWindowVisible(Handle); + if IsVisible <> GetShowingState then begin + Perform(CM_SHOWINGCHANGED, 0, 0); + { Note: CMShowingChanged will call UpdateCaptionState automatically + when floating and showing } + end + else if IsVisible and Floating then begin + { If we're floating and we didn't send the CM_SHOWINGCHANGED message + then we have to call UpdateCaptionState manually } + UpdateCaptionState; + end; + end; +end; + +function IsTopmost(const Wnd: HWND): Boolean; +begin + Result := GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOPMOST <> 0; +end; + +procedure TTBCustomDockableWindow.UpdateTopmostFlag; +const + Wnds: array[Boolean] of HWND = (HWND_NOTOPMOST, HWND_TOPMOST); +var + ShouldBeTopmost: Boolean; +begin + if HandleAllocated then begin + if FFloatingMode = fmOnTopOfAllForms then + ShouldBeTopmost := IsWindowEnabled(Handle) + else + ShouldBeTopmost := IsTopmost(HWND(GetWindowLong(Parent.Handle, GWL_HWNDPARENT))); + if ShouldBeTopmost <> IsTopmost(Parent.Handle) then + { ^ it must check if it already was topmost or non-topmost or else + it causes problems on Win95/98 for some reason } + SetWindowPos(Parent.Handle, Wnds[ShouldBeTopmost], 0, 0, 0, 0, + SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); + end; +end; + +procedure TTBCustomDockableWindow.CMShowingChanged(var Message: TMessage); + + function GetPrevWnd(W: HWND): HWND; + var + WasTopmost, Done: Boolean; + ParentWnd: HWND; + begin + WasTopmost := IsTopmost(Parent.Handle); + Result := W; + repeat + Done := True; + Result := GetWindow(Result, GW_HWNDPREV); + ParentWnd := Result; + while ParentWnd <> 0 do begin + if WasTopmost and not IsTopmost(ParentWnd) then begin + Done := False; + Break; + end; + ParentWnd := HWND(GetWindowLong(ParentWnd, GWL_HWNDPARENT)); + if ParentWnd = W then begin + Done := False; + Break; + end; + end; + until Done; + end; + +const + ShowFlags: array[Boolean] of UINT = ( + SWP_NOSIZE or SWP_NOMOVE or SWP_NOZORDER or SWP_NOACTIVATE or SWP_HIDEWINDOW, + SWP_NOSIZE or SWP_NOMOVE or SWP_NOZORDER or SWP_NOACTIVATE or SWP_SHOWWINDOW); +var + Show: Boolean; + Form: TTBCustomForm; +begin + { inherited isn't called since TTBCustomDockableWindow handles CM_SHOWINGCHANGED + itself. For reference, the original TWinControl implementation is: + const + ShowFlags: array[Boolean] of Word = ( + SWP_NOSIZE + SWP_NOMOVE + SWP_NOZORDER + SWP_NOACTIVATE + SWP_HIDEWINDOW, + SWP_NOSIZE + SWP_NOMOVE + SWP_NOZORDER + SWP_NOACTIVATE + SWP_SHOWWINDOW); + begin + SetWindowPos(FHandle, 0, 0, 0, 0, 0, ShowFlags[FShowing]); + end; + } + if HandleAllocated then begin + Show := GetShowingState; + if Parent is TTBFloatingWindowParent then begin + if Show then begin + { If the toolbar is floating, set its "owner window" to the parent form + so that the toolbar window always stays on top of the form } + if FFloatingMode = fmOnTopOfParentForm then begin + Form := GetMDIParent(TBGetToolWindowParentForm(Self)); + if Assigned(Form) and Form.HandleAllocated and + (HWND(GetWindowLong(Parent.Handle, GWL_HWNDPARENT)) <> Form.Handle) then begin + SetWindowLong(Parent.Handle, GWL_HWNDPARENT, Longint(Form.Handle)); + { Following is necessarily to make it immediately realize the + GWL_HWNDPARENT change } + SetWindowPos(Parent.Handle, GetPrevWnd(Form.Handle), 0, 0, 0, 0, SWP_NOACTIVATE or + SWP_NOMOVE or SWP_NOSIZE); + end; + end + else begin + SetWindowLong(Parent.Handle, GWL_HWNDPARENT, Longint(Application.Handle)); + end; + { Initialize caption state after setting owner but before showing } + UpdateCaptionState; + end; + UpdateTopmostFlag; + { Show/hide the TTBFloatingWindowParent. The following lines had to be + added to fix a problem that was in 1.65d/e. In 1.65d/e, it always + kept TTBFloatingWindowParent visible (this change was made to improve + compatibility with D4's Actions), but this for some odd reason would + cause a Stack Overflow error if the program's main form was closed + while a floating toolwindow was focused. (This problem did not occur + on NT.) } + TTBFloatingWindowParent(Parent).FShouldShow := Show; + Parent.Perform(CM_SHOWINGCHANGED, 0, 0); + end; + SetWindowPos(Handle, 0, 0, 0, 0, 0, ShowFlags[Show]); + if not Show and (GetActiveWindow = Handle) then + { If the window is hidden but is still active, find and activate a + different window } + SetActiveWindow(FindTopLevelWindow(Handle)); + end; +end; + +procedure TTBCustomDockableWindow.CreateParams(var Params: TCreateParams); +begin + inherited; + + { Disable complete redraws when size changes. CS_H/VREDRAW cause flicker + and are not necessary for this control at run time } + if not(csDesigning in ComponentState) then + with Params.WindowClass do + Style := Style and not(CS_HREDRAW or CS_VREDRAW); +end; + +procedure TTBCustomDockableWindow.Notification(AComponent: TComponent; Operation: TOperation); +begin + inherited; + if Operation = opRemove then begin + if AComponent = FDefaultDock then + FDefaultDock := nil + else + if AComponent = FLastDock then + FLastDock := nil + else begin + RemoveFromList(FDockForms, AComponent); + if Assigned(FFloatParent) and (csDestroying in FFloatParent.ComponentState) and + (AComponent = FFloatParent.FParentForm) then begin + { ^ Note: Must check csDestroying so that we are sure that FFloatParent + is actually being destroyed and not just being removed from its + Owner's component list } + if Parent = FFloatParent then begin + if FFloatingMode = fmOnTopOfParentForm then + Parent := nil + else + FFloatParent.FParentForm := nil; + end + else begin + FFloatParent.Free; + FFloatParent := nil; + end; + end; + end; + end; +end; + +procedure TTBCustomDockableWindow.MoveOnScreen(const OnlyIfFullyOffscreen: Boolean); +{ Moves the (floating) toolbar so that it is fully (or at least mostly) in + view on the screen } +var + R, S, Test: TRect; +begin + if Floating then begin + R := Parent.BoundsRect; + S := GetRectOfMonitorContainingRect(R, True); + + if OnlyIfFullyOffscreen and IntersectRect(Test, R, S) then + Exit; + + if R.Right > S.Right then + OffsetRect(R, S.Right - R.Right, 0); + if R.Bottom > S.Bottom then + OffsetRect(R, 0, S.Bottom - R.Bottom); + if R.Left < S.Left then + OffsetRect(R, S.Left - R.Left, 0); + if R.Top < S.Top then + OffsetRect(R, 0, S.Top - R.Top); + Parent.BoundsRect := R; + end; +end; + +procedure TTBCustomDockableWindow.ReadPositionData(const Data: TTBReadPositionData); +begin +end; + +procedure TTBCustomDockableWindow.DoneReadingPositionData(const Data: TTBReadPositionData); +begin +end; + +procedure TTBCustomDockableWindow.WritePositionData(const Data: TTBWritePositionData); +begin +end; + +procedure TTBCustomDockableWindow.InitializeOrdering; +begin +end; + +procedure TTBCustomDockableWindow.SizeChanging(const AWidth, AHeight: Integer); +begin +end; + +procedure TTBCustomDockableWindow.ReadSavedAtRunTime(Reader: TReader); +begin + FSavedAtRunTime := Reader.ReadBoolean; +end; + +procedure TTBCustomDockableWindow.WriteSavedAtRunTime(Writer: TWriter); +begin + { WriteSavedAtRunTime only called when not(csDesigning in ComponentState) } + Writer.WriteBoolean(True); +end; + +procedure TTBCustomDockableWindow.DefineProperties(Filer: TFiler); +begin + inherited; + Filer.DefineProperty('SavedAtRunTime', ReadSavedAtRunTime, + WriteSavedAtRunTime, not(csDesigning in ComponentState)); +end; + +procedure TTBCustomDockableWindow.Loaded; +var + R: TRect; +begin + inherited; + { Adjust coordinates if it was initially floating } + if not FSavedAtRunTime and not(csDesigning in ComponentState) and + (Parent is TTBFloatingWindowParent) then begin + R := BoundsRect; + MapWindowPoints(TBValidToolWindowParentForm(Self).Handle, 0, R, 2); + BoundsRect := R; + MoveOnScreen(False); + end; + InitializeOrdering; + { Arranging is disabled while component was loading, so arrange now } + Arrange; +end; + +procedure TTBCustomDockableWindow.BeginUpdate; +begin + Inc(FDisableArrange); +end; + +procedure TTBCustomDockableWindow.EndUpdate; +begin + Dec(FDisableArrange); + if FArrangeNeeded and (FDisableArrange = 0) then + Arrange; +end; + +procedure TTBCustomDockableWindow.AddDockForm(const Form: TTBCustomForm); +begin + if Form = nil then Exit; + if AddToList(FDockForms, Form) then + Form.FreeNotification(Self); +end; + +procedure TTBCustomDockableWindow.RemoveDockForm(const Form: TTBCustomForm); +begin + RemoveFromList(FDockForms, Form); +end; + +function TTBCustomDockableWindow.CanDockTo(ADock: TTBDock): Boolean; +begin + Result := ADock.Position in DockableTo; +end; + +function TTBCustomDockableWindow.IsAutoResized: Boolean; +begin + Result := AutoResize or Assigned(CurrentDock) or Floating; +end; + +procedure TTBCustomDockableWindow.ChangeSize(AWidth, AHeight: Integer); +var + S: TPoint; +begin + if Docked then + CurrentDock.ArrangeToolbars + else begin + S := CalcNCSizes; + Inc(AWidth, S.X); + Inc(AHeight, S.Y); + { Leave the width and/or height alone if the control is Anchored + (or Aligned) } + if not Floating then begin + if (akLeft in Anchors) and (akRight in Anchors) then + AWidth := Width; + if (akTop in Anchors) and (akBottom in Anchors) then + AHeight := Height; + end; + Inc(FUpdatingBounds); + try + SetBounds(Left, Top, AWidth, AHeight); + finally + Dec(FUpdatingBounds); + end; + end; +end; + +procedure TTBCustomDockableWindow.Arrange; +var + Size: TPoint; +begin + if (FDisableArrange > 0) or + { Prevent flicker while loading } + (csLoading in ComponentState) or + { Don't call DoArrangeControls when Parent is nil. The VCL sets Parent to + 'nil' during destruction of a component; we can't have an OrderControls + call after a descendant control has freed its data. } + (Parent = nil) then begin + FArrangeNeeded := True; + Exit; + end; + + FArrangeNeeded := False; + + Size := DoArrange(True, TBGetDockTypeOf(CurrentDock, Floating), Floating, + CurrentDock); + if IsAutoResized then + ChangeSize(Size.X, Size.Y); +end; + +procedure TTBCustomDockableWindow.SetBounds(ALeft, ATop, AWidth, AHeight: Integer); +begin + if not(csDesigning in ComponentState) and Floating then begin + { Force Top & Left to 0 if floating } + ALeft := 0; + ATop := 0; + if Parent is TTBFloatingWindowParent then + with Parent do + SetBounds(Left, Top, (Width-ClientWidth) + AWidth, + (Height-ClientHeight) + AHeight); + end; + if (FUpdatingBounds = 0) and ((AWidth <> Width) or (AHeight <> Height)) then + SizeChanging(AWidth, AHeight); + { This allows you to drag the toolbar around the dock at design time } + if (csDesigning in ComponentState) and not(csLoading in ComponentState) and + Docked and (FUpdatingBounds = 0) and ((ALeft <> Left) or (ATop <> Top)) then begin + if not(CurrentDock.Position in PositionLeftOrRight) then begin + FDockRow := CurrentDock.GetDesignModeRowOf(ATop+(Height div 2)); + FDockPos := ALeft; + end + else begin + FDockRow := CurrentDock.GetDesignModeRowOf(ALeft+(Width div 2)); + FDockPos := ATop; + end; + inherited SetBounds(Left, Top, AWidth, AHeight); { only pass any size changes } + CurrentDock.ArrangeToolbars; { let ArrangeToolbars take care of position changes } + end + else begin + inherited; + {if not(csLoading in ComponentState) and Floating and (FUpdatingBounds = 0) then + FFloatingPosition := BoundsRect.TopLeft;} + end; +end; + +procedure TTBCustomDockableWindow.SetParent(AParent: TWinControl); + procedure UpdateFloatingToolWindows; + begin + if Parent is TTBFloatingWindowParent then begin + AddToList(FloatingToolWindows, Self); + Parent.SetBounds(FFloatingPosition.X, FFloatingPosition.Y, + Parent.Width, Parent.Height); + end + else + RemoveFromList(FloatingToolWindows, Self); + end; + function ParentToCurrentDock(const Ctl: TWinControl): TTBDock; + begin + if Ctl is TTBDock then + Result := TTBDock(Ctl) + else + Result := nil; + end; +var + OldCurrentDock, NewCurrentDock: TTBDock; + NewFloating: Boolean; + OldParent: TWinControl; + SaveHandle: HWND; +begin + OldCurrentDock := ParentToCurrentDock(Parent); + NewCurrentDock := ParentToCurrentDock(AParent); + NewFloating := AParent is TTBFloatingWindowParent; + + if AParent = Parent then begin + { Even though AParent is the same as the current Parent, this code is + necessary because when the VCL destroys the parent of the tool window, + it calls TWinControl.Remove to set FParent instead of using SetParent. + However TControl.Destroy does call SetParent(nil), so it is + eventually notified of the change before it is destroyed. } + FCurrentDock := NewCurrentDock; + FFloating := NewFloating; + FDocked := Assigned(FCurrentDock); + UpdateFloatingToolWindows; + end + else begin + if not(csDestroying in ComponentState) and Assigned(AParent) then begin + if Assigned(FOnDockChanging) then + FOnDockChanging(Self, NewFloating, NewCurrentDock); + if Assigned(FOnRecreating) then + FOnRecreating(Self); + end; + + { Before changing between docked and floating state (and vice-versa) + or between docks, increment FHidden and call UpdateVisibility to hide the + toolbar. This prevents any flashing while it's being moved } + Inc(FHidden); + Inc(FDisableOnMove); + try + UpdateVisibility; + if Assigned(OldCurrentDock) then + OldCurrentDock.BeginUpdate; + if Assigned(NewCurrentDock) then + NewCurrentDock.BeginUpdate; + Inc(FUpdatingBounds); + try + if Assigned(AParent) then + DoDockChangingHidden(NewFloating, NewCurrentDock); + BeginUpdate; + try + { FCurrentSize probably won't be valid after changing Parents, so + reset it to zero } + FCurrentSize := 0; + + if Parent is TTBDock then begin + if not FUseLastDock or (FLastDock <> Parent) then + TTBDock(Parent).ChangeDockList(False, Self); + TTBDock(Parent).ToolbarVisibilityChanged(Self, True); + end; + + OldParent := Parent; + + SaveHandle := 0; + if Assigned(AParent) then begin + //AParent.HandleNeeded; + SaveHandle := WindowHandle; + WindowHandle := 0; + end; + { Ensure that the handle is destroyed now so that any messages in the queue + get flushed. This is neccessary since existing messages may reference + FDockedTo or FDocked, which is changed below. } + inherited SetParent(nil); + { ^ Note to self: SetParent is used instead of DestroyHandle because it does + additional processing } + FCurrentDock := NewCurrentDock; + FFloating := NewFloating; + FDocked := Assigned(FCurrentDock); + try + if SaveHandle <> 0 then begin + WindowHandle := SaveHandle; + Windows.SetParent(SaveHandle, AParent.Handle); + SetWindowPos(SaveHandle, 0, 0, 0, 0, 0, SWP_FRAMECHANGED or + SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE or SWP_NOZORDER); + end; + inherited; + except + { Failure is rare, but just in case, restore FDockedTo and FDocked back. } + FCurrentDock := ParentToCurrentDock(Parent); + FFloating := Parent is TTBFloatingWindowParent; + FDocked := Assigned(FCurrentDock); + raise; + end; + + { FEffectiveDockRow probably won't be valid on the new Parent, so + reset it to -1 so that GetMinRowSize will temporarily ignore this + toolbar } + FEffectiveDockRow := -1; + + if not FSmoothDragging and (OldParent is TTBFloatingWindowParent) then begin + if FFloatParent = OldParent then FFloatParent := nil; + OldParent.Free; + end; + + if Parent is TTBDock then begin + if FUseLastDock and not FSmoothDragging then begin + LastDock := TTBDock(Parent); { calls ChangeDockList if LastDock changes } + TTBDock(Parent).ToolbarVisibilityChanged(Self, False); + end + else + TTBDock(Parent).ChangeDockList(True, Self); + end; + + UpdateFloatingToolWindows; + + { Schedule an arrange } + Arrange; + finally + EndUpdate; + end; + finally + Dec(FUpdatingBounds); + if Assigned(NewCurrentDock) then + NewCurrentDock.EndUpdate; + if Assigned(OldCurrentDock) then + OldCurrentDock.EndUpdate; + end; + finally + Dec(FDisableOnMove); + Dec(FHidden); + UpdateVisibility; + { ^ The above UpdateVisibility call not only updates the tool window's + visibility after decrementing FHidden, it also sets the + active/inactive state of the caption. } + end; + if Assigned(Parent) then + Moved; + + if not(csDestroying in ComponentState) and Assigned(AParent) then begin + if Assigned(FOnRecreated) then + FOnRecreated(Self); + if Assigned(FOnDockChanged) then + FOnDockChanged(Self); + end; + end; +end; + +procedure TTBCustomDockableWindow.AddDockedNCAreaToSize(var S: TPoint; + const LeftRight: Boolean); +var + TopLeft, BottomRight: TPoint; +begin + GetDockedNCArea(TopLeft, BottomRight, LeftRight); + Inc(S.X, TopLeft.X + BottomRight.X); + Inc(S.Y, TopLeft.Y + BottomRight.Y); +end; + +procedure TTBCustomDockableWindow.AddFloatingNCAreaToSize(var S: TPoint); +var + TopLeft, BottomRight: TPoint; +begin + GetFloatingNCArea(TopLeft, BottomRight); + Inc(S.X, TopLeft.X + BottomRight.X); + Inc(S.Y, TopLeft.Y + BottomRight.Y); +end; + +procedure TTBCustomDockableWindow.GetDockedNCArea(var TopLeft, BottomRight: TPoint; + const LeftRight: Boolean); +var + Z: Integer; +begin + Z := DockedBorderSize; { code optimization... } + TopLeft.X := Z; + TopLeft.Y := Z; + BottomRight.X := Z; + BottomRight.Y := Z; + if not LeftRight then begin + Inc(TopLeft.X, DragHandleSizes[CloseButtonWhenDocked, DragHandleStyle]); + //if FShowChevron then + // Inc(BottomRight.X, tbChevronSize); + end + else begin + Inc(TopLeft.Y, DragHandleSizes[CloseButtonWhenDocked, DragHandleStyle]); + //if FShowChevron then + // Inc(BottomRight.Y, tbChevronSize); + end; +end; + +function TTBCustomDockableWindow.GetFloatingBorderSize: TPoint; +{ Returns size of a thick border. Note that, depending on the Windows version, + this may not be the same as the actual window metrics since it draws its + own border } +const + XMetrics: array[Boolean] of Integer = (SM_CXDLGFRAME, SM_CXFRAME); + YMetrics: array[Boolean] of Integer = (SM_CYDLGFRAME, SM_CYFRAME); +begin + Result.X := GetSystemMetrics(XMetrics[Resizable]); + Result.Y := GetSystemMetrics(YMetrics[Resizable]); +end; + +procedure TTBCustomDockableWindow.GetFloatingNCArea(var TopLeft, BottomRight: TPoint); +begin + with GetFloatingBorderSize do begin + TopLeft.X := X; + TopLeft.Y := Y; + if ShowCaption then + Inc(TopLeft.Y, GetSmallCaptionHeight); + BottomRight.X := X; + BottomRight.Y := Y; + end; +end; + +function TTBCustomDockableWindow.GetDockedCloseButtonRect(LeftRight: Boolean): TRect; +var + X, Y, Z: Integer; +begin + Z := DragHandleSizes[CloseButtonWhenDocked, FDragHandleStyle] - 3; + if not LeftRight then begin + X := DockedBorderSize+1; + Y := DockedBorderSize; + end + else begin + X := (ClientWidth + DockedBorderSize) - Z; + Y := DockedBorderSize+1; + end; + Result := Bounds(X, Y, Z, Z); +end; + +function TTBCustomDockableWindow.CalcNCSizes: TPoint; +var + Z: Integer; +begin + if not Docked then begin + Result.X := 0; + Result.Y := 0; + end + else begin + Result.X := DockedBorderSize2; + Result.Y := DockedBorderSize2; + if CurrentDock.FAllowDrag then begin + Z := DragHandleSizes[FCloseButtonWhenDocked, FDragHandleStyle]; + if not(CurrentDock.Position in PositionLeftOrRight) then + Inc(Result.X, Z) + else + Inc(Result.Y, Z); + end; + end; +end; + +procedure TTBCustomDockableWindow.WMNCCalcSize(var Message: TWMNCCalcSize); +var + Z: Integer; +begin + { Doesn't call inherited since it overrides the normal NC sizes } + Message.Result := 0; + if Docked then + with Message.CalcSize_Params^ do begin + InflateRect(rgrc[0], -DockedBorderSize, -DockedBorderSize); + if CurrentDock.FAllowDrag then begin + Z := DragHandleSizes[FCloseButtonWhenDocked, FDragHandleStyle]; + if not(CurrentDock.Position in PositionLeftOrRight) then + Inc(rgrc[0].Left, Z) + else + Inc(rgrc[0].Top, Z); + end; + end; +end; + +procedure TTBCustomDockableWindow.WMSetCursor(var Message: TWMSetCursor); +var + P: TPoint; + R: TRect; + I: Integer; +begin + if Docked and CurrentDock.FAllowDrag and + (Message.CursorWnd = WindowHandle) and + (Smallint(Message.HitTest) = HT_TB2k_Border) and + (DragHandleStyle <> dhNone) then begin + GetCursorPos(P); + GetWindowRect(Handle, R); + if not(CurrentDock.Position in PositionLeftOrRight) then + I := P.X - R.Left + else + I := P.Y - R.Top; + if I < DockedBorderSize + DragHandleSizes[CloseButtonWhenDocked, DragHandleStyle] then begin + SetCursor(LoadCursor(0, IDC_SIZEALL)); + Message.Result := 1; + Exit; + end; + end; + inherited; +end; + +procedure TTBCustomDockableWindow.DrawNCArea(const DrawToDC: Boolean; + const ADC: HDC; const Clip: HRGN); +{ Redraws all the non-client area of the toolbar when it is docked. } +var + DC: HDC; + R: TRect; + VerticalDock: Boolean; + X, Y, Y2, Y3, YO, S, SaveIndex: Integer; + R2, R3, R4: TRect; + P1, P2: TPoint; + Brush: HBRUSH; + Clr: TColorRef; + UsingBackground, B: Boolean; + + procedure DrawRaisedEdge(R: TRect; const FillInterior: Boolean); + const + FillMiddle: array[Boolean] of UINT = (0, BF_MIDDLE); + begin + DrawEdge(DC, R, BDR_RAISEDINNER, BF_RECT or FillMiddle[FillInterior]); + end; + + function CreateCloseButtonBitmap: HBITMAP; + const + Pattern: array[0..15] of Byte = + (0, 0, $CC, 0, $78, 0, $30, 0, $78, 0, $CC, 0, 0, 0, 0, 0); + begin + Result := CreateBitmap(8, 8, 1, 1, @Pattern); + end; + + procedure DrawButtonBitmap(const Bmp: HBITMAP); + var + TempBmp: TBitmap; + begin + TempBmp := TBitmap.Create; + try + TempBmp.Handle := Bmp; + SetTextColor(DC, clBlack); + SetBkColor(DC, clWhite); + SelectObject(DC, GetSysColorBrush(COLOR_BTNTEXT)); + BitBlt(DC, R2.Left, R2.Top, R2.Right - R2.Left, R2.Bottom - R2.Top, + TempBmp.Canvas.Handle, 0, 0, $00E20746 {ROP_DSPDxax}); + finally + TempBmp.Free; + end; + end; + +const + CloseButtonState: array[Boolean] of UINT = (0, DFCS_PUSHED); +begin + if not Docked or not HandleAllocated then Exit; + + if not DrawToDC then + DC := GetWindowDC(Handle) + else + DC := ADC; + try + { Use update region } + if not DrawToDC then + SelectNCUpdateRgn(Handle, DC, Clip); + + { This works around WM_NCPAINT problem described at top of source code } + {no! R := Rect(0, 0, Width, Height);} + GetWindowRect(Handle, R); OffsetRect(R, -R.Left, -R.Top); + + VerticalDock := CurrentDock.Position in PositionLeftOrRight; + + Brush := CreateSolidBrush(ColorToRGB(Color)); + + UsingBackground := CurrentDock.UsingBackground and CurrentDock.FBkgOnToolbars; + + { Border } + if BorderStyle = bsSingle then + DrawRaisedEdge(R, False) + else + FrameRect(DC, R, Brush); + R2 := R; + InflateRect(R2, -1, -1); + if not UsingBackground then + FrameRect(DC, R2, Brush); + + { Draw the Background } + if UsingBackground then begin + R2 := R; + P1 := CurrentDock.ClientToScreen(Point(0, 0)); + P2 := CurrentDock.Parent.ClientToScreen(CurrentDock.BoundsRect.TopLeft); + Dec(R2.Left, Left + CurrentDock.Left + (P1.X-P2.X)); + Dec(R2.Top, Top + CurrentDock.Top + (P1.Y-P2.Y)); + InflateRect(R, -1, -1); + GetWindowRect(Handle, R4); + R3 := ClientRect; + with ClientToScreen(Point(0, 0)) do + OffsetRect(R3, X-R4.Left, Y-R4.Top); + SaveIndex := SaveDC(DC); + IntersectClipRect(DC, R.Left, R.Top, R.Right, R.Bottom); + ExcludeClipRect(DC, R3.Left, R3.Top, R3.Right, R3.Bottom); + CurrentDock.DrawBackground(DC, R2); + RestoreDC(DC, SaveIndex); + end; + + { The drag handle at the left, or top } + if CurrentDock.FAllowDrag then begin + SaveIndex := SaveDC(DC); + if not VerticalDock then + Y2 := ClientHeight + else + Y2 := ClientWidth; + Inc(Y2, DockedBorderSize); + S := DragHandleSizes[FCloseButtonWhenDocked, FDragHandleStyle]; + if FDragHandleStyle <> dhNone then begin + Y3 := Y2; + X := DockedBorderSize + DragHandleXOffsets[FCloseButtonWhenDocked, FDragHandleStyle]; + Y := DockedBorderSize; + YO := Ord(FDragHandleStyle = dhSingle); + if FCloseButtonWhenDocked then begin + if not VerticalDock then + Inc(Y, S - 2) + else + Dec(Y3, S - 2); + end; + Clr := GetSysColor(COLOR_BTNHIGHLIGHT); + for B := False to (FDragHandleStyle = dhDouble) do begin + if not VerticalDock then + R2 := Rect(X, Y+YO, X+3, Y2-YO) + else + R2 := Rect(Y+YO, X, Y3-YO, X+3); + DrawRaisedEdge(R2, True); + if not VerticalDock then + SetPixelV(DC, X, Y2-1-YO, Clr) + else + SetPixelV(DC, Y3-1-YO, X, Clr); + ExcludeClipRect(DC, R2.Left, R2.Top, R2.Right, R2.Bottom); + Inc(X, 3); + end; + end; + if not UsingBackground then begin + if not VerticalDock then + R2 := Rect(DockedBorderSize, DockedBorderSize, + DockedBorderSize+S, Y2) + else + R2 := Rect(DockedBorderSize, DockedBorderSize, + Y2, DockedBorderSize+S); + FillRect(DC, R2, Brush); + end; + RestoreDC(DC, SaveIndex); + { Close button } + if FCloseButtonWhenDocked then begin + R2 := GetDockedCloseButtonRect(VerticalDock); + if FCloseButtonDown then + DrawEdge(DC, R2, BDR_SUNKENOUTER, BF_RECT) + else if FCloseButtonHover then + DrawRaisedEdge(R2, False); + InflateRect(R2, -2, -2); + if FCloseButtonDown then + OffsetRect(R2, 1, 1); + DrawButtonBitmap(CreateCloseButtonBitmap); + end; + end; + + DeleteObject(Brush); + finally + if not DrawToDC then + ReleaseDC(Handle, DC); + end; +end; + +procedure TTBCustomDockableWindow.RedrawNCArea; +begin + { Note: IsWindowVisible is called as an optimization. There's no need to + draw on invisible windows. } + if HandleAllocated and IsWindowVisible(Handle) then + DrawNCArea(False, 0, 0); +end; + +procedure TTBCustomDockableWindow.WMNCPaint(var Message: TMessage); +begin + { Don't call inherited because it overrides the default NC painting } + DrawNCArea(False, 0, HRGN(Message.WParam)); +end; + +procedure DockableWindowNCPaintProc(Wnd: HWND; DC: HDC; AppData: Longint); +begin + with TTBCustomDockableWindow(AppData) do + DrawNCArea(True, DC, 0) +end; + +procedure TTBCustomDockableWindow.WMPrint(var Message: TMessage); +begin + HandleWMPrint(Handle, Message, DockableWindowNCPaintProc, Longint(Self)); +end; + +procedure TTBCustomDockableWindow.WMPrintClient(var Message: TMessage); +begin + HandleWMPrintClient(Self, Message); +end; + +procedure TTBCustomDockableWindow.WMEraseBkgnd(var Message: TWMEraseBkgnd); +var + R, R2, R3: TRect; + P1, P2: TPoint; + SaveIndex: Integer; +begin + if Docked and CurrentDock.UsingBackground and CurrentDock.FBkgOnToolbars then begin + R := ClientRect; + R2 := R; + P1 := CurrentDock.ClientToScreen(Point(0, 0)); + P2 := CurrentDock.Parent.ClientToScreen(CurrentDock.BoundsRect.TopLeft); + Dec(R2.Left, Left + CurrentDock.Left + (P1.X-P2.X)); + Dec(R2.Top, Top + CurrentDock.Top + (P1.Y-P2.Y)); + GetWindowRect(Handle, R3); + with ClientToScreen(Point(0, 0)) do begin + Inc(R2.Left, R3.Left-X); + Inc(R2.Top, R3.Top-Y); + end; + SaveIndex := SaveDC(Message.DC); + IntersectClipRect(Message.DC, R.Left, R.Top, R.Right, R.Bottom); + CurrentDock.DrawBackground(Message.DC, R2); + RestoreDC(Message.DC, SaveIndex); + Message.Result := 1; + end + else + inherited; +end; + +function TTBCustomDockableWindow.GetPalette: HPALETTE; +begin + if Docked then + Result := CurrentDock.GetPalette + else + Result := 0; +end; + +function TTBCustomDockableWindow.PaletteChanged(Foreground: Boolean): Boolean; +begin + Result := inherited PaletteChanged(Foreground); + if Result and not Foreground then begin + { There seems to be a bug in Delphi's palette handling. When the form is + inactive and another window realizes a palette, docked TToolbar97s + weren't getting redrawn. So this workaround code was added. } + InvalidateAll(Self); + end; +end; + +procedure TTBCustomDockableWindow.DrawDraggingOutline(const DC: HDC; + const NewRect, OldRect: PRect; const NewDocking, OldDocking: Boolean); +var + NewSize, OldSize: TSize; +begin + with GetFloatingBorderSize do begin + if NewDocking then NewSize.cx := 1 else NewSize.cx := X; + NewSize.cy := NewSize.cx; + if OldDocking then OldSize.cx := 1 else OldSize.cx := X; + OldSize.cy := OldSize.cx; + end; + DrawHalftoneInvertRect(DC, NewRect, OldRect, NewSize, OldSize); +end; + +procedure TTBCustomDockableWindow.CMColorChanged(var Message: TMessage); +begin + { Make sure non-client area is redrawn } + InvalidateAll(Self); + inherited; { the inherited handler calls Invalidate } +end; + +procedure TTBCustomDockableWindow.CMTextChanged(var Message: TMessage); +begin + inherited; + if Parent is TTBFloatingWindowParent then + TTBFloatingWindowParent(Parent).Caption := Caption; +end; + +procedure TTBCustomDockableWindow.CMVisibleChanged(var Message: TMessage); +begin + if not(csDesigning in ComponentState) and Docked then + CurrentDock.ToolbarVisibilityChanged(Self, False); + inherited; + if Assigned(FOnVisibleChanged) then + FOnVisibleChanged(Self); +end; + +procedure TTBCustomDockableWindow.BeginMoving(const InitX, InitY: Integer); +type + PDockedSize = ^TDockedSize; + TDockedSize = record + Dock: TTBDock; + BoundsRect: TRect; + Size: TPoint; + RowSizes: TList; + end; +const + SplitCursors: array[Boolean] of PChar = (IDC_SIZEWE, IDC_SIZENS); +var + UseSmoothDrag: Boolean; + DockList: TList; + NewDockedSizes: TList; {items are pointers to TDockedSizes} + OriginalDock, MouseOverDock: TTBDock; + MoveRect: TRect; + StartDocking, PreventDocking, PreventFloating, WatchForSplit, SplitVertical: Boolean; + ScreenDC: HDC; + OldCursor: HCURSOR; + NPoint, DPoint: TPoint; + OriginalDockRow, OriginalDockPos: Integer; + FirstPos, LastPos, CurPos: TPoint; + + function FindDockedSize(const ADock: TTBDock): PDockedSize; + var + I: Integer; + begin + for I := 0 to NewDockedSizes.Count-1 do begin + Result := NewDockedSizes[I]; + if Result.Dock = ADock then + Exit; + end; + Result := nil; + end; + + function GetRowOf(const RowSizes: TList; const XY: Integer; + var Before: Boolean): Integer; + { Returns row number of the specified coordinate. Before is set to True if it + was in the top (or left) quarter of the row. } + var + HighestRow, R, CurY, NextY, CurRowSize, EdgeSize: Integer; + FullSizeRow: Boolean; + begin + Before := False; + HighestRow := RowSizes.Count-1; + CurY := 0; + for R := 0 to HighestRow do begin + CurRowSize := Integer(RowSizes[R]); + FullSizeRow := FullSize or (CurRowSize and $10000 <> 0); + CurRowSize := Smallint(CurRowSize); + if CurRowSize = 0 then + Continue; + NextY := CurY + CurRowSize; + if not FullSizeRow then + EdgeSize := CurRowSize div 4 + else + EdgeSize := CurRowSize div 2; + if XY < CurY + EdgeSize then begin + Result := R; + Before := True; + Exit; + end; + if not FullSizeRow and (XY < NextY - EdgeSize) then begin + Result := R; + Exit; + end; + CurY := NextY; + end; + Result := HighestRow+1; + end; + + procedure Dropped; + var + NewDockRow: Integer; + Before: Boolean; + MoveRectClient: TRect; + C: Integer; + DockedSize: PDockedSize; + begin + if MouseOverDock <> nil then begin + DockedSize := FindDockedSize(MouseOverDock); + MoveRectClient := MoveRect; + OffsetRect(MoveRectClient, -DockedSize.BoundsRect.Left, + -DockedSize.BoundsRect.Top); + if not FDragSplitting then begin + if not(MouseOverDock.Position in PositionLeftOrRight) then + C := (MoveRectClient.Top+MoveRectClient.Bottom) div 2 + else + C := (MoveRectClient.Left+MoveRectClient.Right) div 2; + NewDockRow := GetRowOf(DockedSize.RowSizes, C, Before); + if Before then + WatchForSplit := False; + end + else begin + NewDockRow := FDockRow; + Before := False; + end; + if WatchForSplit then begin + if (MouseOverDock <> OriginalDock) or (NewDockRow <> OriginalDockRow) then + WatchForSplit := False + else begin + if not SplitVertical then + C := FirstPos.X - LastPos.X + else + C := FirstPos.Y - LastPos.Y; + if Abs(C) >= 10 then begin + WatchForSplit := False; + FDragSplitting := True; + SetCursor(LoadCursor(0, SplitCursors[SplitVertical])); + end; + end; + end; + FDockRow := NewDockRow; + if not(MouseOverDock.Position in PositionLeftOrRight) then + FDockPos := MoveRectClient.Left + else + FDockPos := MoveRectClient.Top; + Parent := MouseOverDock; + if not FSmoothDragging then + CurrentDock.CommitNewPositions := True; + FInsertRowBefore := Before; + try + CurrentDock.ArrangeToolbars; + finally + FInsertRowBefore := False; + end; + end + else begin + WatchForSplit := False; + FloatingPosition := MoveRect.TopLeft; + Floating := True; + { Make sure it doesn't go completely off the screen } + MoveOnScreen(True); + end; + + { Make sure it's repainted immediately (looks better on really slow + computers when smooth dragging is enabled) } + Update; + end; + + procedure MouseMoved; + var + OldMouseOverDock: TTBDock; + OldMoveRect: TRect; + Pos: TPoint; + + function GetDockRect(Control: TTBDock): TRect; + var + I: Integer; + begin + for I := 0 to NewDockedSizes.Count-1 do + with PDockedSize(NewDockedSizes[I])^ do begin + if Dock <> Control then Continue; + Result := Bounds(Pos.X-MulDiv(Size.X-1, NPoint.X, DPoint.X), + Pos.Y-MulDiv(Size.Y-1, NPoint.Y, DPoint.Y), + Size.X, Size.Y); + Exit; + end; + SetRectEmpty(Result); + end; + + function CheckIfCanDockTo(Control: TTBDock; R: TRect): Boolean; + const + DockSensX = 25; + DockSensY = 25; + var + S, Temp: TRect; + Sens: Integer; + begin + with Control do begin + Result := False; + + InflateRect(R, 3, 3); + S := GetDockRect(Control); + + { Like Office, distribute ~25 pixels of extra dock detection area + to the left side if the toolbar was grabbed at the left, both sides + if the toolbar was grabbed at the middle, or the right side if + toolbar was grabbed at the right. If outside, don't try to dock. } + Sens := MulDiv(DockSensX, NPoint.X, DPoint.X); + if (Pos.X < R.Left-(DockSensX-Sens)) or (Pos.X >= R.Right+Sens) then + Exit; + + { Don't try to dock to the left or right if pointer is above or below + the boundaries of the dock } + if (Control.Position in PositionLeftOrRight) and + ((Pos.Y < R.Top) or (Pos.Y >= R.Bottom)) then + Exit; + + { And also distribute ~25 pixels of extra dock detection area to + the top or bottom side } + Sens := MulDiv(DockSensY, NPoint.Y, DPoint.Y); + if (Pos.Y < R.Top-(DockSensY-Sens)) or (Pos.Y >= R.Bottom+Sens) then + Exit; + + Result := IntersectRect(Temp, R, S); + end; + end; + + var + R, R2: TRect; + I: Integer; + Dock: TTBDock; + Accept: Boolean; + TL, BR: TPoint; + begin + OldMouseOverDock := MouseOverDock; + OldMoveRect := MoveRect; + + GetCursorPos(Pos); + + if FDragSplitting then + MouseOverDock := CurrentDock + else begin + { Check if it can dock } + MouseOverDock := nil; + if StartDocking and not PreventDocking then + {for I := 0 to DockList.Count-1 do begin} {rl-} + for I := DockList.Count-1 downto 0 do begin {rl+} // Robert Lee: CurrentDock should not have the priority + Dock := DockList[I]; + if CheckIfCanDockTo(Dock, FindDockedSize(Dock).BoundsRect) then begin + MouseOverDock := Dock; + Accept := True; + if Assigned(MouseOverDock.FOnRequestDock) then + MouseOverDock.FOnRequestDock(MouseOverDock, Self, Accept); + if Accept then + Break + else + MouseOverDock := nil; + end; + end; + end; + + { If not docking, clip the point so it doesn't get dragged under the + taskbar } + if MouseOverDock = nil then begin + R := GetRectOfMonitorContainingPoint(Pos, True); + if Pos.X < R.Left then Pos.X := R.Left; + if Pos.X > R.Right then Pos.X := R.Right; + if Pos.Y < R.Top then Pos.Y := R.Top; + if Pos.Y > R.Bottom then Pos.Y := R.Bottom; + end; + + MoveRect := GetDockRect(MouseOverDock); + + { Make sure title bar (or at least part of the toolbar) is still accessible + if it's dragged almost completely off the screen. This prevents the + problem seen in Office 97 where you drag it offscreen so that only the + border is visible, sometimes leaving you no way to move it back short of + resetting the toolbar. } + if MouseOverDock = nil then begin + R2 := GetRectOfMonitorContainingPoint(Pos, True); + R := R2; + with GetFloatingBorderSize do + InflateRect(R, -(X+4), -(Y+4)); + if MoveRect.Bottom < R.Top then + OffsetRect(MoveRect, 0, R.Top-MoveRect.Bottom); + if MoveRect.Top > R.Bottom then + OffsetRect(MoveRect, 0, R.Bottom-MoveRect.Top); + if MoveRect.Right < R.Left then + OffsetRect(MoveRect, R.Left-MoveRect.Right, 0); + if MoveRect.Left > R.Right then + OffsetRect(MoveRect, R.Right-MoveRect.Left, 0); + + GetFloatingNCArea(TL, BR); + I := R2.Top + 4 - TL.Y; + if MoveRect.Top < I then + OffsetRect(MoveRect, 0, I-MoveRect.Top); + end; + + { Empty MoveRect if it's wanting to float but it's not allowed to, and + set the mouse cursor accordingly. } + if PreventFloating and not Assigned(MouseOverDock) then begin + SetRectEmpty(MoveRect); + SetCursor(LoadCursor(0, IDC_NO)); + end + else begin + if FDragSplitting then + SetCursor(LoadCursor(0, SplitCursors[SplitVertical])) + else + SetCursor(OldCursor); + end; + + { Update the dragging outline } + if not UseSmoothDrag then + DrawDraggingOutline(ScreenDC, @MoveRect, @OldMoveRect, MouseOverDock <> nil, + OldMouseOverDock <> nil) + else + if not IsRectEmpty(MoveRect) then + Dropped; + end; + + procedure BuildDockList; + + procedure Recurse(const ParentCtl: TWinControl); + var + D: TTBDockPosition; + I: Integer; + begin + if ContainsControl(ParentCtl) or not ParentCtl.Showing then + Exit; + with ParentCtl do begin + for D := Low(D) to High(D) do + for I := 0 to ParentCtl.ControlCount-1 do + if (Controls[I] is TTBDock) and (TTBDock(Controls[I]).Position = D) then + Recurse(TWinControl(Controls[I])); + for I := 0 to ParentCtl.ControlCount-1 do + if (Controls[I] is TWinControl) and not(Controls[I] is TTBDock) then + Recurse(TWinControl(Controls[I])); + end; + if (ParentCtl is TTBDock) and TTBDock(ParentCtl).Accepts(Self) and CanDockTo(TTBDock(ParentCtl)) and + (DockList.IndexOf(ParentCtl) = -1) then + DockList.Add(ParentCtl); + end; + + var + ParentForm: TTBCustomForm; + DockFormsList: TList; + I, J: Integer; + begin + { Manually add CurrentDock to the DockList first so that it gets priority + over other docks } + if Assigned(CurrentDock) and CurrentDock.Accepts(Self) and CanDockTo(CurrentDock) then + DockList.Add(CurrentDock); + ParentForm := TBGetToolWindowParentForm(Self); + DockFormsList := TList.Create; + try + if Assigned(FDockForms) then begin + for I := 0 to Screen.{$IFDEF JR_D3}CustomFormCount{$ELSE}FormCount{$ENDIF}-1 do begin + J := FDockForms.IndexOf(Screen.{$IFDEF JR_D3}CustomForms{$ELSE}Forms{$ENDIF}[I]); + if (J <> -1) and (FDockForms[J] <> ParentForm) then + DockFormsList.Add(FDockForms[J]); + end; + end; + if Assigned(ParentForm) then + DockFormsList.Insert(0, ParentForm); + for I := 0 to DockFormsList.Count-1 do + Recurse(DockFormsList[I]); + finally + DockFormsList.Free; + end; + end; + +var + Accept, FullSizeRow: Boolean; + R: TRect; + Msg: TMsg; + NewDockedSize: PDockedSize; + I, J, S: Integer; +begin + Accept := False; + SplitVertical := False; + WatchForSplit := False; + OriginalDock := CurrentDock; + OriginalDockRow := FDockRow; + OriginalDockPos := FDockPos; + try + FDragMode := True; + FDragSplitting := False; + if Docked then begin + FDragCanSplit := False; + CurrentDock.CommitNewPositions := True; + CurrentDock.ArrangeToolbars; { needed for WatchForSplit assignment below } + SplitVertical := CurrentDock.Position in PositionLeftOrRight; + WatchForSplit := FDragCanSplit; + end; + DockList := nil; + NewDockedSizes := nil; + try + UseSmoothDrag := FSmoothDrag; + FSmoothDragging := UseSmoothDrag; + + NPoint := Point(InitX, InitY); + { Adjust for non-client area } + if not(Parent is TTBFloatingWindowParent) then begin + GetWindowRect(Handle, R); + R.BottomRight := ClientToScreen(Point(0, 0)); + DPoint := Point(Width-1, Height-1); + end + else begin + GetWindowRect(Parent.Handle, R); + R.BottomRight := Parent.ClientToScreen(Point(0, 0)); + DPoint := Point(Parent.Width-1, Parent.Height-1); + end; + Dec(NPoint.X, R.Left-R.Right); + Dec(NPoint.Y, R.Top-R.Bottom); + + PreventDocking := GetKeyState(VK_CONTROL) < 0; + PreventFloating := DockMode <> dmCanFloat; + + { Build list of all TTBDock's on the form } + DockList := TList.Create; + if DockMode <> dmCannotFloatOrChangeDocks then + BuildDockList + else + if Docked then + DockList.Add(CurrentDock); + + { Ensure positions of each possible dock are committed } + for I := 0 to DockList.Count-1 do + TTBDock(DockList[I]).CommitPositions; + + { Set up potential sizes for each dock type } + NewDockedSizes := TList.Create; + for I := -1 to DockList.Count-1 do begin + New(NewDockedSize); + NewDockedSize.RowSizes := nil; + try + with NewDockedSize^ do begin + if I = -1 then begin + { -1 adds the floating size } + Dock := nil; + SetRectEmpty(BoundsRect); + Size := DoArrange(False, TBGetDockTypeOf(CurrentDock, Floating), True, nil); + AddFloatingNCAreaToSize(Size); + end + else begin + Dock := TTBDock(DockList[I]); + GetWindowRect(Dock.Handle, BoundsRect); + if Dock <> CurrentDock then begin + Size := DoArrange(False, TBGetDockTypeOf(CurrentDock, Floating), False, Dock); + AddDockedNCAreaToSize(Size, Dock.Position in PositionLeftOrRight); + end + else + Size := Point(Width, Height); + end; + end; + if Assigned(NewDockedSize.Dock) then begin + NewDockedSize.RowSizes := TList.Create; + for J := 0 to NewDockedSize.Dock.GetHighestRow(True) do begin + S := Smallint(NewDockedSize.Dock.GetCurrentRowSize(J, FullSizeRow)); + if FullSizeRow then + S := S or $10000; + NewDockedSize.RowSizes.Add(Pointer(S)); + end; + end; + NewDockedSizes.Add(NewDockedSize); + except + NewDockedSize.RowSizes.Free; + Dispose(NewDockedSize); + raise; + end; + end; + + { Before locking, make sure all pending paint messages are processed } + ProcessPaintMessages; + + { Save the original mouse cursor } + OldCursor := GetCursor; + + if not UseSmoothDrag then begin + { This uses LockWindowUpdate to suppress all window updating so the + dragging outlines doesn't sometimes get garbled. (This is safe, and in + fact, is the main purpose of the LockWindowUpdate function) + IMPORTANT! While debugging you might want to enable the 'TB2Dock_DisableLock' + conditional define (see top of the source code). } + {$IFNDEF TB2Dock_DisableLock} + LockWindowUpdate(GetDesktopWindow); + {$ENDIF} + { Get a DC of the entire screen. Works around the window update lock + by specifying DCX_LOCKWINDOWUPDATE. } + ScreenDC := GetDCEx(GetDesktopWindow, 0, + DCX_LOCKWINDOWUPDATE or DCX_CACHE or DCX_WINDOW); + end + else + ScreenDC := 0; + try + SetCapture(Handle); + + { Initialize } + StartDocking := Docked; + MouseOverDock := nil; + SetRectEmpty(MoveRect); + GetCursorPos(FirstPos); + LastPos := FirstPos; + MouseMoved; + StartDocking := True; + + { Stay in message loop until capture is lost. Capture is removed either + by this procedure manually doing it, or by an outside influence (like + a message box or menu popping up) } + while GetCapture = Handle do begin + case Integer(GetMessage(Msg, 0, 0, 0)) of + -1: Break; { if GetMessage failed } + 0: begin + { Repost WM_QUIT messages } + PostQuitMessage(Msg.WParam); + Break; + end; + end; + + case Msg.Message of + WM_KEYDOWN, WM_KEYUP: + { Ignore all keystrokes while dragging. But process Ctrl and Escape } + case Msg.WParam of + VK_CONTROL: + if PreventDocking <> (Msg.Message = WM_KEYDOWN) then begin + PreventDocking := Msg.Message = WM_KEYDOWN; + MouseMoved; + end; + VK_ESCAPE: + Break; + end; + WM_MOUSEMOVE: begin + { Note to self: WM_MOUSEMOVE messages should never be dispatched + here to ensure no hints get shown during the drag process } + CurPos := SmallPointToPoint(TSmallPoint(DWORD(GetMessagePos))); + if (LastPos.X <> CurPos.X) or (LastPos.Y <> CurPos.Y) then begin + MouseMoved; + LastPos := CurPos; + end; + end; + WM_LBUTTONDOWN, WM_LBUTTONDBLCLK: + { Make sure it doesn't begin another loop } + Break; + WM_LBUTTONUP: begin + Accept := True; + Break; + end; + WM_RBUTTONDOWN..WM_MBUTTONDBLCLK: + { Ignore all other mouse up/down messages } + ; + else + TranslateMessage(Msg); + DispatchMessage(Msg); + end; + end; + finally + { Since it sometimes breaks out of the loop without capture being + released } + if GetCapture = Handle then + ReleaseCapture; + + if not UseSmoothDrag then begin + { Hide dragging outline. Since NT will release a window update lock if + another thread comes to the foreground, it has to release the DC + and get a new one for erasing the dragging outline. Otherwise, + the DrawDraggingOutline appears to have no effect when this happens. } + ReleaseDC(GetDesktopWindow, ScreenDC); + ScreenDC := GetDCEx(GetDesktopWindow, 0, + DCX_LOCKWINDOWUPDATE or DCX_CACHE or DCX_WINDOW); + DrawDraggingOutline(ScreenDC, nil, @MoveRect, True, MouseOverDock <> nil); + ReleaseDC(GetDesktopWindow, ScreenDC); + + { Release window update lock } + {$IFNDEF TB2Dock_DisableLock} + LockWindowUpdate(0); + {$ENDIF} + end; + end; + + { Move to new position only if MoveRect isn't empty } + FSmoothDragging := False; + if Accept and not IsRectEmpty(MoveRect) then + { Note: Dropped must be called again after FSmoothDragging is reset to + False so that TTBDock.ArrangeToolbars makes the DockPos changes + permanent } + Dropped; + + { LastDock isn't automatically updated while FSmoothDragging=True, so + update it now that it's back to False } + if FUseLastDock and Assigned(CurrentDock) then + LastDock := CurrentDock; + + { Free FFloatParent if it's no longer the Parent } + if Assigned(FFloatParent) and (Parent <> FFloatParent) then begin + FFloatParent.Free; + FFloatParent := nil; + end; + finally + FSmoothDragging := False; + if not Docked then begin + { If we didn't end up docking, restore the original DockRow & DockPos + values } + FDockRow := OriginalDockRow; + FDockPos := OriginalDockPos; + end; + if Assigned(NewDockedSizes) then begin + for I := NewDockedSizes.Count-1 downto 0 do begin + NewDockedSize := NewDockedSizes[I]; + NewDockedSize.RowSizes.Free; + Dispose(NewDockedSize); + end; + NewDockedSizes.Free; + end; + DockList.Free; + end; + finally + FDragMode := False; + FDragSplitting := False; + end; +end; + +function TTBCustomDockableWindow.ChildControlTransparent(Ctl: TControl): Boolean; +begin + Result := False; +end; + +procedure TTBCustomDockableWindow.ControlExistsAtPos(const P: TPoint; + var ControlExists: Boolean); +var + I: Integer; +begin + for I := 0 to ControlCount-1 do + if not ChildControlTransparent(Controls[I]) and Controls[I].Visible and + PtInRect(Controls[I].BoundsRect, P) then begin + ControlExists := True; + Break; + end; +end; + +procedure TTBCustomDockableWindow.DoubleClick; +begin + if Docked then begin + if DblClickUndock and (DockMode = dmCanFloat) then begin + Floating := True; + MoveOnScreen(True); + end; + end + else if Floating then begin + if Assigned(LastDock) then + Parent := LastDock + else + if Assigned(DefaultDock) then begin + FDockRow := ForceDockAtTopRow; + FDockPos := ForceDockAtLeftPos; + Parent := DefaultDock; + end; + end; +end; + +function TTBCustomDockableWindow.IsMovable: Boolean; +begin + Result := (Docked and CurrentDock.FAllowDrag) or Floating; +end; + +procedure TTBCustomDockableWindow.MouseDown(Button: TMouseButton; + Shift: TShiftState; X, Y: Integer); +var + P: TPoint; + CtlExists: Boolean; +begin + inherited; + if (Button <> mbLeft) or not IsMovable then + Exit; + { Ignore message if user clicked on a child control } + P := Point(X, Y); + if PtInRect(ClientRect, P) then begin + CtlExists := False; + ControlExistsAtPos(P, CtlExists); + if CtlExists then + Exit; + end; + + if not(ssDouble in Shift) then begin + BeginMoving(X, Y); + MouseUp(mbLeft, [], -1, -1); + end + else + { Handle double click } + DoubleClick; +end; + +procedure TTBCustomDockableWindow.WMNCHitTest(var Message: TWMNCHitTest); +var + P: TPoint; + R: TRect; +begin + inherited; + if Docked then + with Message do begin + P := SmallPointToPoint(Pos); + GetWindowRect(Handle, R); + Dec(P.X, R.Left); Dec(P.Y, R.Top); + if Result <> HTCLIENT then begin + Result := HTNOWHERE; + if FCloseButtonWhenDocked and CurrentDock.FAllowDrag and + PtInRect(GetDockedCloseButtonRect( + TBGetDockTypeOf(CurrentDock, Floating) = dtLeftRight), P) then + Result := HT_TB2k_Close + else + Result := HT_TB2k_Border; + end; + end; +end; + +procedure TTBCustomDockableWindow.WMNCMouseMove(var Message: TWMNCMouseMove); +var + InArea: Boolean; +begin + inherited; + { Note: TME_NONCLIENT was introduced in Windows 98 and 2000 } + if (Win32MajorVersion >= 5) or + (Win32MajorVersion = 4) and (Win32MinorVersion >= 10) then + CallTrackMouseEvent(Handle, TME_LEAVE or $10 {TME_NONCLIENT}); + InArea := Message.HitTest = HT_TB2k_Close; + if FCloseButtonHover <> InArea then begin + FCloseButtonHover := InArea; + RedrawNCArea; + end; +end; + +procedure TTBCustomDockableWindow.WMNCMouseLeave(var Message: TMessage); +begin + if not MouseCapture then + CancelNCHover; + inherited; +end; + +procedure TTBCustomDockableWindow.CMMouseLeave(var Message: TMessage); +begin + inherited; + { On Windows versions that can't send a WM_NCMOUSELEAVE message, trap + CM_MOUSELEAVE to detect when the mouse moves from the non-client area to + another control. } + CancelNCHover; +end; + +procedure TTBCustomDockableWindow.WMMouseMove(var Message: TMessage); +begin + { On Windows versions that can't send a WM_NCMOUSELEAVE message, trap + WM_MOUSEMOVE to detect when the mouse moves from the non-client area to + the client area. + Note: We are overriding WM_MOUSEMOVE instead of MouseMove so that our + processing always gets done first. } + CancelNCHover; + inherited; +end; + +procedure TTBCustomDockableWindow.CancelNCHover; +begin + if FCloseButtonHover then begin + FCloseButtonHover := False; + RedrawNCArea; + end; +end; + +procedure TTBCustomDockableWindow.Close; +var + Accept: Boolean; +begin + Accept := True; + if Assigned(FOnCloseQuery) then + FOnCloseQuery(Self, Accept); + { Did the CloseQuery event return True? } + if Accept then begin + Hide; + if Assigned(FOnClose) then + FOnClose(Self); + end; +end; + +procedure TTBCustomDockableWindow.SetCloseButtonState(Pushed: Boolean); +begin + if FCloseButtonDown <> Pushed then begin + FCloseButtonDown := Pushed; + RedrawNCArea; + end; +end; + +procedure TTBCustomDockableWindow.WMNCLButtonDown(var Message: TWMNCLButtonDown); +var + R, BR: TRect; + P: TPoint; +begin + case Message.HitTest of + HT_TB2k_Close: begin + GetWindowRect(Handle, R); + BR := GetDockedCloseButtonRect( + TBGetDockTypeOf(CurrentDock, Floating) = dtLeftRight); + OffsetRect(BR, R.Left, R.Top); + if CloseButtonLoop(Handle, BR, SetCloseButtonState) then + Close; + end; + HT_TB2k_Border: begin + P := ScreenToClient(SmallPointToPoint(TSmallPoint(GetMessagePos()))); + if IsMovable then + BeginMoving(P.X, P.Y); + end; + else + inherited; + end; +end; + +procedure TTBCustomDockableWindow.WMNCLButtonDblClk(var Message: TWMNCLButtonDblClk); +begin + if Message.HitTest = HT_TB2k_Border then begin + if IsMovable then + DoubleClick; + end + else + inherited; +end; + +procedure TTBCustomDockableWindow.ShowNCContextMenu(const Pos: TSmallPoint); + + {$IFNDEF JR_D5} + { Note: this is identical to TControl.CheckMenuPopup (from Delphi 4), + except where noted. + TControl.CheckMenuPopup is unfortunately 'private', so it can't be called + outside of the Controls unit. } + procedure CheckMenuPopup; + var + Control: TControl; + PopupMenu: TPopupMenu; + begin + if csDesigning in ComponentState then Exit; + Control := Self; + while Control <> nil do + begin + { Added TControlAccess cast because GetPopupMenu is 'protected' } + PopupMenu := TControlAccess(Control).GetPopupMenu; + if (PopupMenu <> nil) then + begin + if not PopupMenu.AutoPopup then Exit; + SendCancelMode(nil); + PopupMenu.PopupComponent := Control; + { Changed the following. LPARAM of WM_NCRBUTTONUP is in screen + coordinates, not client coordinates } + {with ClientToScreen(SmallPointToPoint(Pos)) do + PopupMenu.Popup(X, Y);} + PopupMenu.Popup(Pos.X, Pos.Y); + Exit; + end; + Control := Control.Parent; + end; + end; + {$ENDIF} + +begin + {$IFDEF JR_D5} + { Delphi 5 and later use the WM_CONTEXTMENU message for popup menus } + SendMessage(Handle, WM_CONTEXTMENU, 0, LPARAM(Pos)); + {$ELSE} + CheckMenuPopup; + {$ENDIF} +end; + +procedure TTBCustomDockableWindow.WMNCRButtonUp(var Message: TWMNCRButtonUp); +begin + ShowNCContextMenu(TSmallPoint(TMessage(Message).LParam)); +end; + +{$IFDEF JR_D5} +procedure TTBCustomDockableWindow.WMContextMenu(var Message: TWMContextMenu); +{ Unfortunately TControl.WMContextMenu ignores clicks in the non-client area. + On docked toolbars, we need right clicks on the border, part of the + non-client area, to display the popup menu. The only way I see to have it do + that is to create a new version of WMContextMenu specifically for the + non-client area, and that is what this method is. + Note: This is identical to Delphi 5's TControl.WMContextMenu, except where + noted. } +var + Pt, Temp: TPoint; + Handled: Boolean; + PopupMenu: TPopupMenu; +begin + { Added 'inherited;' here } + inherited; + if Message.Result <> 0 then Exit; + if csDesigning in ComponentState then Exit; + + Pt := SmallPointToPoint(Message.Pos); + if Pt.X < 0 then + Temp := Pt + else + begin + Temp := ScreenToClient(Pt); + { Changed the following. We're only interested in the non-client area } + {if not PtInRect(ClientRect, Temp) then} + if PtInRect(ClientRect, Temp) then + begin + {inherited;} + Exit; + end; + end; + + Handled := False; + DoContextPopup(Temp, Handled); + Message.Result := Ord(Handled); + if Handled then Exit; + + PopupMenu := GetPopupMenu; + if (PopupMenu <> nil) and PopupMenu.AutoPopup then + begin + SendCancelMode(nil); + PopupMenu.PopupComponent := Self; + if Pt.X < 0 then + Pt := ClientToScreen(Point(0,0)); + PopupMenu.Popup(Pt.X, Pt.Y); + Message.Result := 1; + end; + + if Message.Result = 0 then + inherited; +end; +{$ENDIF} + +procedure TTBCustomDockableWindow.GetMinShrinkSize(var AMinimumSize: Integer); +begin +end; + +function TTBCustomDockableWindow.GetFloatingWindowParentClass: TTBFloatingWindowParentClass; +begin + Result := TTBFloatingWindowParent; +end; + +procedure TTBCustomDockableWindow.GetMinMaxSize(var AMinClientWidth, + AMinClientHeight, AMaxClientWidth, AMaxClientHeight: Integer); +begin +end; + +function TTBCustomDockableWindow.GetShrinkMode: TTBShrinkMode; +begin + Result := tbsmNone; +end; + +procedure TTBCustomDockableWindow.ResizeBegin; +begin +end; + +procedure TTBCustomDockableWindow.ResizeTrack(var Rect: TRect; const OrigRect: TRect); +begin +end; + +procedure TTBCustomDockableWindow.ResizeTrackAccept; +begin +end; + +procedure TTBCustomDockableWindow.ResizeEnd; +begin +end; + +procedure TTBCustomDockableWindow.BeginSizing(const ASizeHandle: TTBSizeHandle); +var + UseSmoothDrag, DragX, DragY, ReverseX, ReverseY: Boolean; + MinWidth, MinHeight, MaxWidth, MaxHeight: Integer; + DragRect, OrigDragRect: TRect; + ScreenDC: HDC; + OrigPos, OldPos: TPoint; + + procedure DoResize; + begin + BeginUpdate; + try + ResizeTrackAccept; + Parent.BoundsRect := DragRect; + SetBounds(Left, Top, Parent.ClientWidth, Parent.ClientHeight); + finally + EndUpdate; + end; + + { Make sure it doesn't go completely off the screen } + MoveOnScreen(True); + end; + + procedure MouseMoved; + var + Pos: TPoint; + OldDragRect: TRect; + begin + GetCursorPos(Pos); + { It needs to check if the cursor actually moved since last time. This is + because a call to LockWindowUpdate (apparently) generates a mouse move + message even when mouse hasn't moved. } + if (Pos.X = OldPos.X) and (Pos.Y = OldPos.Y) then Exit; + OldPos := Pos; + + OldDragRect := DragRect; + DragRect := OrigDragRect; + if DragX then begin + if not ReverseX then Inc(DragRect.Right, Pos.X-OrigPos.X) + else Inc(DragRect.Left, Pos.X-OrigPos.X); + end; + if DragY then begin + if not ReverseY then Inc(DragRect.Bottom, Pos.Y-OrigPos.Y) + else Inc(DragRect.Top, Pos.Y-OrigPos.Y); + end; + if DragRect.Right-DragRect.Left < MinWidth then begin + if not ReverseX then DragRect.Right := DragRect.Left + MinWidth + else DragRect.Left := DragRect.Right - MinWidth; + end; + if (MaxWidth > 0) and (DragRect.Right-DragRect.Left > MaxWidth) then begin + if not ReverseX then DragRect.Right := DragRect.Left + MaxWidth + else DragRect.Left := DragRect.Right - MaxWidth; + end; + if DragRect.Bottom-DragRect.Top < MinHeight then begin + if not ReverseY then DragRect.Bottom := DragRect.Top + MinHeight + else DragRect.Top := DragRect.Bottom - MinHeight; + end; + if (MaxHeight > 0) and (DragRect.Bottom-DragRect.Top > MaxHeight) then begin + if not ReverseY then DragRect.Bottom := DragRect.Top + MaxHeight + else DragRect.Top := DragRect.Bottom - MaxHeight; + end; + + ResizeTrack(DragRect, OrigDragRect); + if not UseSmoothDrag then + DrawDraggingOutline(ScreenDC, @DragRect, @OldDragRect, False, False) + else + DoResize; + end; +var + Accept: Boolean; + Msg: TMsg; + R: TRect; +begin + if not Floating then Exit; + + Accept := False; + + UseSmoothDrag := FSmoothDrag; + + MinWidth := 0; + MinHeight := 0; + MaxWidth := 0; + MaxHeight := 0; + GetMinMaxSize(MinWidth, MinHeight, MaxWidth, MaxHeight); + Inc(MinWidth, Parent.Width-Width); + Inc(MinHeight, Parent.Height-Height); + if MaxWidth > 0 then + Inc(MaxWidth, Parent.Width-Width); + if MaxHeight > 0 then + Inc(MaxHeight, Parent.Height-Height); + + DragX := ASizeHandle in [twshLeft, twshRight, twshTopLeft, twshTopRight, + twshBottomLeft, twshBottomRight]; + ReverseX := ASizeHandle in [twshLeft, twshTopLeft, twshBottomLeft]; + DragY := ASizeHandle in [twshTop, twshTopLeft, twshTopRight, twshBottom, + twshBottomLeft, twshBottomRight]; + ReverseY := ASizeHandle in [twshTop, twshTopLeft, twshTopRight]; + + ResizeBegin(ASizeHandle); + try + { Before locking, make sure all pending paint messages are processed } + ProcessPaintMessages; + + if not UseSmoothDrag then begin + { This uses LockWindowUpdate to suppress all window updating so the + dragging outlines doesn't sometimes get garbled. (This is safe, and in + fact, is the main purpose of the LockWindowUpdate function) + IMPORTANT! While debugging you might want to enable the 'TB2Dock_DisableLock' + conditional define (see top of the source code). } + {$IFNDEF TB2Dock_DisableLock} + LockWindowUpdate(GetDesktopWindow); + {$ENDIF} + { Get a DC of the entire screen. Works around the window update lock + by specifying DCX_LOCKWINDOWUPDATE. } + ScreenDC := GetDCEx(GetDesktopWindow, 0, + DCX_LOCKWINDOWUPDATE or DCX_CACHE or DCX_WINDOW); + end + else + ScreenDC := 0; + try + SetCapture(Handle); + if (tbdsResizeClipCursor in FDockableWindowStyles) and + not UsingMultipleMonitors then begin + R := GetRectOfPrimaryMonitor(False); + ClipCursor(@R); + end; + + { Initialize } + OrigDragRect := Parent.BoundsRect; + DragRect := OrigDragRect; + if not UseSmoothDrag then + DrawDraggingOutline(ScreenDC, @DragRect, nil, False, False); + GetCursorPos(OrigPos); + OldPos := OrigPos; + + { Stay in message loop until capture is lost. Capture is removed either + by this procedure manually doing it, or by an outside influence (like + a message box or menu popping up) } + while GetCapture = Handle do begin + case Integer(GetMessage(Msg, 0, 0, 0)) of + -1: Break; { if GetMessage failed } + 0: begin + { Repost WM_QUIT messages } + PostQuitMessage(Msg.WParam); + Break; + end; + end; + + case Msg.Message of + WM_KEYDOWN, WM_KEYUP: + { Ignore all keystrokes while sizing except for Escape } + if Msg.WParam = VK_ESCAPE then + Break; + WM_MOUSEMOVE: + { Note to self: WM_MOUSEMOVE messages should never be dispatched + here to ensure no hints get shown during the drag process } + MouseMoved; + WM_LBUTTONDOWN, WM_LBUTTONDBLCLK: + { Make sure it doesn't begin another loop } + Break; + WM_LBUTTONUP: begin + Accept := True; + Break; + end; + WM_RBUTTONDOWN..WM_MBUTTONDBLCLK: + { Ignore all other mouse up/down messages } + ; + else + TranslateMessage(Msg); + DispatchMessage(Msg); + end; + end; + finally + { Since it sometimes breaks out of the loop without capture being + released } + if GetCapture = Handle then + ReleaseCapture; + ClipCursor(nil); + + if not UseSmoothDrag then begin + { Hide dragging outline. Since NT will release a window update lock if + another thread comes to the foreground, it has to release the DC + and get a new one for erasing the dragging outline. Otherwise, + the DrawDraggingOutline appears to have no effect when this happens. } + ReleaseDC(GetDesktopWindow, ScreenDC); + ScreenDC := GetDCEx(GetDesktopWindow, 0, + DCX_LOCKWINDOWUPDATE or DCX_CACHE or DCX_WINDOW); + DrawDraggingOutline(ScreenDC, nil, @DragRect, False, False); + ReleaseDC(GetDesktopWindow, ScreenDC); + + { Release window update lock } + {$IFNDEF TB2Dock_DisableLock} + LockWindowUpdate(0); + {$ENDIF} + end; + end; + + if not UseSmoothDrag and Accept then + DoResize; + finally + ResizeEnd; + end; +end; + +procedure TTBCustomDockableWindow.DoDockChangingHidden(NewFloating: Boolean; + DockingTo: TTBDock); +begin + if not(csDestroying in ComponentState) and Assigned(FOnDockChangingHidden) then + FOnDockChangingHidden(Self, NewFloating, DockingTo); +end; + +{ TTBCustomDockableWindow - property access methods } + +function TTBCustomDockableWindow.GetNonClientWidth: Integer; +begin + Result := CalcNCSizes.X; +end; + +function TTBCustomDockableWindow.GetNonClientHeight: Integer; +begin + Result := CalcNCSizes.Y; +end; + +function TTBCustomDockableWindow.IsLastDockStored: Boolean; +begin + Result := FCurrentDock = nil; {}{should this be changed to 'Floating'?} +end; + +function TTBCustomDockableWindow.IsWidthAndHeightStored: Boolean; +begin + Result := (CurrentDock = nil) and not Floating; +end; + +procedure TTBCustomDockableWindow.SetCloseButton(Value: Boolean); +begin + if FCloseButton <> Value then begin + FCloseButton := Value; + + { Update the close button's visibility } + if Parent is TTBFloatingWindowParent then + TTBFloatingWindowParent(Parent).RedrawNCArea([twrdCaption, twrdCloseButton]); + end; +end; + +procedure TTBCustomDockableWindow.SetCloseButtonWhenDocked(Value: Boolean); +begin + if FCloseButtonWhenDocked <> Value then begin + FCloseButtonWhenDocked := Value; + if Docked then + RecalcNCArea(Self); + end; +end; + +procedure TTBCustomDockableWindow.SetDefaultDock(Value: TTBDock); +begin + if FDefaultDock <> Value then begin + FDefaultDock := Value; + if Assigned(Value) then + Value.FreeNotification(Self); + end; +end; + +procedure TTBCustomDockableWindow.SetCurrentDock(Value: TTBDock); +begin + if not(csLoading in ComponentState) then begin + if Assigned(Value) then + Parent := Value + else + Parent := TBValidToolWindowParentForm(Self); + end; +end; + +procedure TTBCustomDockableWindow.SetDockPos(Value: Integer); +begin + FDockPos := Value; + if Docked then + CurrentDock.ArrangeToolbars; +end; + +procedure TTBCustomDockableWindow.SetDockRow(Value: Integer); +begin + FDockRow := Value; + if Docked then + CurrentDock.ArrangeToolbars; +end; + +procedure TTBCustomDockableWindow.SetAutoResize(Value: Boolean); +begin + if FAutoResize <> Value then begin + FAutoResize := Value; + if Value then + Arrange; + end; +end; + +procedure TTBCustomDockableWindow.SetBorderStyle(Value: TBorderStyle); +begin + if FBorderStyle <> Value then begin + FBorderStyle := Value; + if Docked then + RecalcNCArea(Self); + end; +end; + +procedure TTBCustomDockableWindow.SetDragHandleStyle(Value: TTBDragHandleStyle); +begin + if FDragHandleStyle <> Value then begin + FDragHandleStyle := Value; + if Docked then + RecalcNCArea(Self); + end; +end; + +procedure TTBCustomDockableWindow.SetFloating(Value: Boolean); +var + ParentFrm: TTBCustomForm; + NewFloatParent: TTBFloatingWindowParent; +begin + if FFloating <> Value then begin + if Value and not(csDesigning in ComponentState) then begin + ParentFrm := TBValidToolWindowParentForm(Self); + if (FFloatParent = nil) or (FFloatParent.FParentForm <> ParentFrm) then begin + NewFloatParent := GetFloatingWindowParentClass.Create(nil); + try + with NewFloatParent do begin + TWinControl(FParentForm) := ParentFrm; + FDockableWindow := Self; + Name := Format('NBFloatingWindowParent_%.8x', [Longint(NewFloatParent)]); + { ^ Must assign a unique name. In previous versions, reading in + components at run-time that had no name caused them to get assigned + names like "_1" because a component with no name -- the + TTBFloatingWindowParent form -- already existed. } + Caption := Self.Caption; + BorderStyle := bsToolWindow; + SetBounds(0, 0, (Width-ClientWidth) + Self.ClientWidth, + (Height-ClientHeight) + Self.ClientHeight); + ShowHint := True; + Visible := True; + end; + except + NewFloatParent.Free; + raise; + end; + FFloatParent := NewFloatParent; + end; + ParentFrm.FreeNotification(Self); + Parent := FFloatParent; + SetBounds(0, 0, Width, Height); + end + else + Parent := TBValidToolWindowParentForm(Self); + end; +end; + +procedure TTBCustomDockableWindow.SetFloatingMode(Value: TTBFloatingMode); +begin + if FFloatingMode <> Value then begin + FFloatingMode := Value; + if HandleAllocated then + Perform(CM_SHOWINGCHANGED, 0, 0); + end; +end; + +procedure TTBCustomDockableWindow.SetFloatingPosition(Value: TPoint); +begin + FFloatingPosition := Value; + if Floating and Assigned(Parent) then + Parent.SetBounds(Value.X, Value.Y, Parent.Width, Parent.Height); +end; + +procedure TTBCustomDockableWindow.SetFullSize(Value: Boolean); +begin + if FFullSize <> Value then begin + FFullSize := Value; + if Docked then + CurrentDock.ArrangeToolbars; + end; +end; + +procedure TTBCustomDockableWindow.SetLastDock(Value: TTBDock); +begin + if FUseLastDock and Assigned(FCurrentDock) then + { When docked, LastDock must be equal to DockedTo } + Value := FCurrentDock; + if FLastDock <> Value then begin + if Assigned(FLastDock) and (FLastDock <> Parent) then + FLastDock.ChangeDockList(False, Self); + FLastDock := Value; + if Assigned(Value) then begin + FUseLastDock := True; + Value.FreeNotification(Self); + Value.ChangeDockList(True, Self); + end; + end; +end; + +procedure TTBCustomDockableWindow.SetResizable(Value: Boolean); +begin + if FResizable <> Value then begin + FResizable := Value; + if Floating and (Parent is TTBFloatingWindowParent) then begin + { Recreate the window handle because Resizable affects whether the + tool window is created with a WS_THICKFRAME style } + TTBFloatingWindowParent(Parent).RecreateWnd; + end; + end; +end; + +procedure TTBCustomDockableWindow.SetShowCaption(Value: Boolean); +begin + if FShowCaption <> Value then begin + FShowCaption := Value; + if Floating then begin + { Recalculate FloatingWindowParent's NC area, and resize the toolbar + accordingly } + RecalcNCArea(Parent); + Arrange; + end; + end; +end; + +procedure TTBCustomDockableWindow.SetStretch(Value: Boolean); +begin + if FStretch <> Value then begin + FStretch := Value; + if Docked then + CurrentDock.ArrangeToolbars; + end; +end; + +procedure TTBCustomDockableWindow.SetUseLastDock(Value: Boolean); +begin + if FUseLastDock <> Value then begin + FUseLastDock := Value; + if not Value then + LastDock := nil + else + LastDock := FCurrentDock; + end; +end; + +(*function TTBCustomDockableWindow.GetVersion: TToolbar97Version; +begin + Result := Toolbar97VersionPropText; +end; + +procedure TTBCustomDockableWindow.SetVersion(const Value: TToolbar97Version); +begin + { write method required for the property to show up in Object Inspector } +end;*) + + +{ TTBBackground } + +type + PNotifyEvent = ^TNotifyEvent; + +constructor TTBBackground.Create(AOwner: TComponent); +begin + inherited; + FBkColor := clBtnFace; + FBitmap := TBitmap.Create; + FBitmap.OnChange := BitmapChanged; +end; + +destructor TTBBackground.Destroy; +var + I: Integer; +begin + inherited; + FBitmapCache.Free; + FBitmap.Free; + if Assigned(FNotifyList) then begin + for I := FNotifyList.Count-1 downto 0 do + Dispose(PNotifyEvent(FNotifyList[I])); + FNotifyList.Free; + end; +end; + +procedure TTBBackground.BitmapChanged(Sender: TObject); +var + I: Integer; +begin + { Erase the cache and notify } + FBitmapCache.Free; + FBitmapCache := nil; + if Assigned(FNotifyList) then + for I := 0 to FNotifyList.Count-1 do + PNotifyEvent(FNotifyList[I])^(Self); +end; + +procedure TTBBackground.Draw(DC: HDC; const DrawRect: TRect); +var + UseBmp: TBitmap; + R2: TRect; + SaveIndex: Integer; + DC2: HDC; + Brush: HBRUSH; + P: TPoint; +begin + if FBitmapCache = nil then begin + FBitmapCache := TBitmap.Create; + FBitmapCache.Palette := CopyPalette(FBitmap.Palette); + FBitmapCache.Width := FBitmap.Width; + FBitmapCache.Height := FBitmap.Height; + if not FTransparent then begin + { Copy from a possible DIB to our DDB } + BitBlt(FBitmapCache.Canvas.Handle, 0, 0, FBitmapCache.Width, + FBitmapCache.Height, FBitmap.Canvas.Handle, 0, 0, SRCCOPY); + end + else begin + with FBitmapCache do begin + Canvas.Brush.Color := FBkColor; + R2 := Rect(0, 0, Width, Height); + Canvas.BrushCopy(R2, FBitmap, R2, + FBitmap.Canvas.Pixels[0, Height-1] or $02000000); + end; + end; + FBitmap.Dormant; + end; + UseBmp := FBitmapCache; + + DC2 := 0; + SaveIndex := SaveDC(DC); + try + if UseBmp.Palette <> 0 then begin + SelectPalette(DC, UseBmp.Palette, True); + RealizePalette(DC); + end; + { Note: versions of Toolbar97 prior to 1.68 used 'UseBmp.Canvas.Handle' + instead of DC2 in the BitBlt call. This was changed because there + seems to be a bug in D2/BCB1's Graphics.pas: if you called + .Background.LoadFromFile() twice the background + would not be shown. } + if (UseBmp.Width = 8) and (UseBmp.Height = 8) then begin + { Use pattern brushes to draw 8x8 bitmaps. + Note: Win9x can't use bitmaps <8x8 in size for pattern brushes } + Brush := CreatePatternBrush(UseBmp.Handle); + GetWindowOrgEx(DC, P); + SetBrushOrgEx(DC, DrawRect.Left - P.X, DrawRect.Top - P.Y, nil); + FillRect(DC, DrawRect, Brush); + DeleteObject(Brush); + end + else begin + { BitBlt is faster than pattern brushes on large bitmaps } + DC2 := CreateCompatibleDC(DC); + SelectObject(DC2, UseBmp.Handle); + R2 := DrawRect; + while R2.Left < R2.Right do begin + while R2.Top < R2.Bottom do begin + BitBlt(DC, R2.Left, R2.Top, UseBmp.Width, UseBmp.Height, + DC2, 0, 0, SRCCOPY); + Inc(R2.Top, UseBmp.Height); + end; + R2.Top := DrawRect.Top; + Inc(R2.Left, UseBmp.Width); + end; + end; + finally + if DC2 <> 0 then + DeleteDC(DC2); + { Restore the palette and brush origin back } + RestoreDC(DC, SaveIndex); + end; +end; + +function TTBBackground.GetPalette: HPALETTE; +begin + Result := FBitmap.Palette; +end; + +procedure TTBBackground.SysColorChanged; +begin + if FTransparent and (FBkColor < 0) then + BitmapChanged(nil); +end; + +function TTBBackground.UsingBackground: Boolean; +begin + Result := (FBitmap.Width <> 0) and (FBitmap.Height <> 0); +end; + +procedure TTBBackground.RegisterChanges(Proc: TNotifyEvent); +var + I: Integer; + P: PNotifyEvent; +begin + if FNotifyList = nil then + FNotifyList := TList.Create; + for I := 0 to FNotifyList.Count-1 do begin + P := FNotifyList[I]; + if (TMethod(P^).Code = TMethod(Proc).Code) and + (TMethod(P^).Data = TMethod(Proc).Data) then + Exit; + end; + FNotifyList.Expand; + New(P); + P^ := Proc; + FNotifyList.Add(P); +end; + +procedure TTBBackground.UnregisterChanges(Proc: TNotifyEvent); +var + I: Integer; + P: PNotifyEvent; +begin + if FNotifyList = nil then + Exit; + for I := 0 to FNotifyList.Count-1 do begin + P := FNotifyList[I]; + if (TMethod(P^).Code = TMethod(Proc).Code) and + (TMethod(P^).Data = TMethod(Proc).Data) then begin + FNotifyList.Delete(I); + Dispose(P); + Break; + end; + end; +end; + +procedure TTBBackground.SetBkColor(Value: TColor); +begin + if FBkColor <> Value then begin + FBkColor := Value; + if FTransparent then + BitmapChanged(nil); + end; +end; + +procedure TTBBackground.SetBitmap(Value: TBitmap); +begin + FBitmap.Assign(Value); +end; + +procedure TTBBackground.SetTransparent(Value: Boolean); +begin + if FTransparent <> Value then begin + FTransparent := Value; + BitmapChanged(nil); + end; +end; + + +{ Global procedures } + +procedure TBCustomLoadPositions(const OwnerComponent: TComponent; + const ReadIntProc: TTBPositionReadIntProc; + const ReadStringProc: TTBPositionReadStringProc; const ExtraData: Pointer); +var + Rev: Integer; + + function FindDock(AName: String): TTBDock; + var + I: Integer; + begin + Result := nil; + for I := 0 to OwnerComponent.ComponentCount-1 do + if (OwnerComponent.Components[I] is TTBDock) and + (CompareText(OwnerComponent.Components[I].Name, AName) = 0) then begin + Result := TTBDock(OwnerComponent.Components[I]); + Break; + end; + end; + + procedure ReadValues(const Toolbar: TTBCustomDockableWindow; const NewDock: TTBDock); + var + Pos: TPoint; + Data: TTBReadPositionData; + LastDockName: String; + ADock: TTBDock; + begin + with Toolbar do begin + DockRow := ReadIntProc(Name, rvDockRow, DockRow, ExtraData); + DockPos := ReadIntProc(Name, rvDockPos, DockPos, ExtraData); + Pos.X := ReadIntProc(Name, rvFloatLeft, 0, ExtraData); + Pos.Y := ReadIntProc(Name, rvFloatTop, 0, ExtraData); + @Data.ReadIntProc := @ReadIntProc; + @Data.ReadStringProc := @ReadStringProc; + Data.ExtraData := ExtraData; + ReadPositionData(Data); + FloatingPosition := Pos; + if Assigned(NewDock) then + Parent := NewDock + else begin + //Parent := Form; + Floating := True; + MoveOnScreen(True); + if (Rev >= 3) and FUseLastDock then begin + LastDockName := ReadStringProc(Name, rvLastDock, '', ExtraData); + if LastDockName <> '' then begin + ADock := FindDock(LastDockName); + if Assigned(ADock) then + LastDock := ADock; + end; + end; + end; + Arrange; + DoneReadingPositionData(Data); + end; + end; + +var + DocksDisabled: TList; + I: Integer; + ToolWindow: TComponent; + ADock: TTBDock; + DockedToName: String; +begin + DocksDisabled := TList.Create; + try + with OwnerComponent do + for I := 0 to ComponentCount-1 do + if Components[I] is TTBDock then begin + TTBDock(Components[I]).BeginUpdate; + DocksDisabled.Add(Components[I]); + end; + + for I := 0 to OwnerComponent.ComponentCount-1 do begin + ToolWindow := OwnerComponent.Components[I]; + if ToolWindow is TTBCustomDockableWindow then + with TTBCustomDockableWindow(ToolWindow) do begin + {}{should skip over toolbars that are neither Docked nor Floating } + if Name = '' then + raise Exception.Create(STBToolWinNameNotSet); + Rev := ReadIntProc(Name, rvRev, 0, ExtraData); + if Rev = 2000 then begin + Visible := ReadIntProc(Name, rvVisible, Ord(Visible), ExtraData) <> 0; + DockedToName := ReadStringProc(Name, rvDockedTo, '', ExtraData); + if DockedToName <> '' then begin + if DockedToName <> rdDockedToFloating then begin + ADock := FindDock(DockedToName); + if (ADock <> nil) and (ADock.FAllowDrag) then + ReadValues(TTBCustomDockableWindow(ToolWindow), ADock); + end + else + ReadValues(TTBCustomDockableWindow(ToolWindow), nil); + end; + end; + end; + end; + finally + for I := DocksDisabled.Count-1 downto 0 do + TTBDock(DocksDisabled[I]).EndUpdate; + DocksDisabled.Free; + end; +end; + +procedure TBCustomSavePositions(const OwnerComponent: TComponent; + const WriteIntProc: TTBPositionWriteIntProc; + const WriteStringProc: TTBPositionWriteStringProc; const ExtraData: Pointer); +var + I: Integer; + N, L: String; + Data: TTBWritePositionData; +begin + for I := 0 to OwnerComponent.ComponentCount-1 do + if OwnerComponent.Components[I] is TTBCustomDockableWindow then + with TTBCustomDockableWindow(OwnerComponent.Components[I]) do begin + if Name = '' then + raise Exception.Create(STBToolwinNameNotSet); + if Floating then + N := rdDockedToFloating + else if Docked then begin + if CurrentDock.FAllowDrag then begin + N := CurrentDock.Name; + if N = '' then + raise Exception.Create(STBToolwinDockedToNameNotSet); + end + else + N := ''; + end + else + Continue; { skip if it's neither floating nor docked } + L := ''; + if Assigned(FLastDock) then + L := FLastDock.Name; + WriteIntProc(Name, rvRev, rdCurrentRev, ExtraData); + WriteIntProc(Name, rvVisible, Ord(Visible), ExtraData); + WriteStringProc(Name, rvDockedTo, N, ExtraData); + WriteStringProc(Name, rvLastDock, L, ExtraData); + WriteIntProc(Name, rvDockRow, FDockRow, ExtraData); + WriteIntProc(Name, rvDockPos, FDockPos, ExtraData); + WriteIntProc(Name, rvFloatLeft, FFloatingPosition.X, ExtraData); + WriteIntProc(Name, rvFloatTop, FFloatingPosition.Y, ExtraData); + @Data.WriteIntProc := @WriteIntProc; + @Data.WriteStringProc := @WriteStringProc; + Data.ExtraData := ExtraData; + WritePositionData(Data); + end; +end; + +type + PIniReadWriteData = ^TIniReadWriteData; + TIniReadWriteData = record + IniFile: TIniFile; + SectionNamePrefix: String; + end; + +function IniReadInt(const ToolbarName, Value: String; const Default: Longint; + const ExtraData: Pointer): Longint; far; +begin + Result := PIniReadWriteData(ExtraData).IniFile.ReadInteger( + PIniReadWriteData(ExtraData).SectionNamePrefix + ToolbarName, Value, Default); +end; +function IniReadString(const ToolbarName, Value, Default: String; + const ExtraData: Pointer): String; far; +begin + Result := PIniReadWriteData(ExtraData).IniFile.ReadString( + PIniReadWriteData(ExtraData).SectionNamePrefix + ToolbarName, Value, Default); +end; +procedure IniWriteInt(const ToolbarName, Value: String; const Data: Longint; + const ExtraData: Pointer); far; +begin + PIniReadWriteData(ExtraData).IniFile.WriteInteger( + PIniReadWriteData(ExtraData).SectionNamePrefix + ToolbarName, Value, Data); +end; +procedure IniWriteString(const ToolbarName, Value, Data: String; + const ExtraData: Pointer); far; +begin + PIniReadWriteData(ExtraData).IniFile.WriteString( + PIniReadWriteData(ExtraData).SectionNamePrefix + ToolbarName, Value, Data); +end; + +procedure TBIniLoadPositions(const OwnerComponent: TComponent; + const Filename, SectionNamePrefix: String); +var + Data: TIniReadWriteData; +begin + Data.IniFile := TIniFile.Create(Filename); + try + Data.SectionNamePrefix := SectionNamePrefix; + TBCustomLoadPositions(OwnerComponent, IniReadInt, IniReadString, @Data); + finally + Data.IniFile.Free; + end; +end; + +procedure TBIniSavePositions(const OwnerComponent: TComponent; + const Filename, SectionNamePrefix: String); +var + Data: TIniReadWriteData; +begin + Data.IniFile := TIniFile.Create(Filename); + try + Data.SectionNamePrefix := SectionNamePrefix; + TBCustomSavePositions(OwnerComponent, IniWriteInt, IniWriteString, @Data); + finally + Data.IniFile.Free; + end; +end; + +function RegReadInt(const ToolbarName, Value: String; const Default: Longint; + const ExtraData: Pointer): Longint; far; +begin + Result := TRegIniFile(ExtraData).ReadInteger(ToolbarName, Value, Default); +end; +function RegReadString(const ToolbarName, Value, Default: String; + const ExtraData: Pointer): String; far; +begin + Result := TRegIniFile(ExtraData).ReadString(ToolbarName, Value, Default); +end; +procedure RegWriteInt(const ToolbarName, Value: String; const Data: Longint; + const ExtraData: Pointer); far; +begin + TRegIniFile(ExtraData).WriteInteger(ToolbarName, Value, Data); +end; +procedure RegWriteString(const ToolbarName, Value, Data: String; + const ExtraData: Pointer); far; +begin + TRegIniFile(ExtraData).WriteString(ToolbarName, Value, Data); +end; + +procedure TBRegLoadPositions(const OwnerComponent: TComponent; + const RootKey: DWORD; const BaseRegistryKey: String); +var + Reg: TRegIniFile; +begin + Reg := TRegIniFile.Create(''); + try + Reg.RootKey := RootKey; + Reg.OpenKey(BaseRegistryKey, True); { assigning to RootKey resets the current key } + TBCustomLoadPositions(OwnerComponent, RegReadInt, RegReadString, Reg); + finally + Reg.Free; + end; +end; + +procedure TBRegSavePositions(const OwnerComponent: TComponent; + const RootKey: DWORD; const BaseRegistryKey: String); +var + Reg: TRegIniFile; +begin + Reg := TRegIniFile.Create(''); + try + Reg.RootKey := RootKey; + Reg.OpenKey(BaseRegistryKey, True); { assigning to RootKey resets the current key } + TBCustomSavePositions(OwnerComponent, RegWriteInt, RegWriteString, Reg); + finally + Reg.Free; + end; +end; + +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2Dock.pas.orig b/official/2.1.6+2.1.beta1/Source/TB2Dock.pas.orig new file mode 100644 index 0000000..03c6919 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2Dock.pas.orig @@ -0,0 +1,5538 @@ +unit TB2Dock; + +{ + Toolbar2000 + Copyright (C) 1998-2005 by Jordan Russell + All rights reserved. + + The contents of this file are subject to the "Toolbar2000 License"; you may + not use or distribute this file except in compliance with the + "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in + TB2k-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + + Alternatively, the contents of this file may be used under the terms of the + GNU General Public License (the "GPL"), in which case the provisions of the + GPL are applicable instead of those in the "Toolbar2000 License". A copy of + the GPL may be found in GPL-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + If you wish to allow use of your version of this file only under the terms of + the GPL and not to allow others to use your version of this file under the + "Toolbar2000 License", indicate your decision by deleting the provisions + above and replace them with the notice and other provisions required by the + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + + $jrsoftware: tb2k/Source/TB2Dock.pas,v 1.99 2005/07/15 19:35:03 jr Exp $ +} + +interface + +{x$DEFINE TB2Dock_DisableLock} +{ Remove the 'x' to enable the define. It will disable calls to + LockWindowUpdate, which it calls to disable screen updates while dragging. + You may want to temporarily enable the define while debugging so you are able + to see your code window while stepping through the dragging routines. } + +{$I TB2Ver.inc} + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms; + +type + TTBCustomForm = {$IFDEF JR_D3} TCustomForm {$ELSE} TForm {$ENDIF}; + + { TTBDock } + + TTBDockBoundLinesValues = (blTop, blBottom, blLeft, blRight); + TTBDockBoundLines = set of TTBDockBoundLinesValues; + TTBDockPosition = (dpTop, dpBottom, dpLeft, dpRight); + TTBDockType = (dtNotDocked, dtFloating, dtTopBottom, dtLeftRight); + TTBDockableTo = set of TTBDockPosition; + + TTBCustomDockableWindow = class; + TTBBasicBackground = class; + + TTBInsertRemoveEvent = procedure(Sender: TObject; Inserting: Boolean; + Bar: TTBCustomDockableWindow) of object; + TTBRequestDockEvent = procedure(Sender: TObject; Bar: TTBCustomDockableWindow; + var Accept: Boolean) of object; + + TTBDock = class(TCustomControl) + private + { Property values } + FPosition: TTBDockPosition; + FAllowDrag: Boolean; + FBoundLines: TTBDockBoundLines; + FBackground: TTBBasicBackground; + FBkgOnToolbars: Boolean; + FFixAlign: Boolean; + FCommitNewPositions: Boolean; + FLimitToOneRow: Boolean; + FOnInsertRemoveBar: TTBInsertRemoveEvent; + FOnRequestDock: TTBRequestDockEvent; + {$IFNDEF JR_D4} + FOnResize: TNotifyEvent; + {$ENDIF} + + { Internal } + FDisableArrangeToolbars: Integer; { Increment to disable ArrangeToolbars } + FArrangeToolbarsNeeded: Boolean; + FNonClientWidth, FNonClientHeight: Integer; + DockList: TList; { List of the toolbars docked, and those floating and have LastDock + pointing to the dock. Items are casted in TTBCustomDockableWindow's. } + DockVisibleList: TList; { Similar to DockList, but lists only docked and visible toolbars } + + { Property access methods } + //function GetVersion: TToolbar97Version; + procedure SetAllowDrag(Value: Boolean); + procedure SetBackground(Value: TTBBasicBackground); + procedure SetBackgroundOnToolbars(Value: Boolean); + procedure SetBoundLines(Value: TTBDockBoundLines); + procedure SetFixAlign(Value: Boolean); + procedure SetPosition(Value: TTBDockPosition); + //procedure SetVersion(const Value: TToolbar97Version); + + function GetToolbarCount: Integer; + function GetToolbars(Index: Integer): TTBCustomDockableWindow; + + { Internal } + procedure BackgroundChanged(Sender: TObject); + procedure ChangeDockList(const Insert: Boolean; const Bar: TTBCustomDockableWindow); + procedure ChangeWidthHeight(const NewWidth, NewHeight: Integer); + procedure CommitPositions; + procedure DrawNCArea(const DrawToDC: Boolean; const ADC: HDC; + const Clip: HRGN); + function GetDesignModeRowOf(const XY: Integer): Integer; + function HasVisibleToolbars: Boolean; + procedure RelayMsgToFloatingBars(var Message: TMessage); + function ToolbarVisibleOnDock(const AToolbar: TTBCustomDockableWindow): Boolean; + procedure ToolbarVisibilityChanged(const Bar: TTBCustomDockableWindow; + const ForceRemove: Boolean); + + { Messages } + procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR; + procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY; + procedure CMSysColorChange(var Message: TMessage); message CM_SYSCOLORCHANGE; + procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND; + procedure WMMove(var Message: TWMMove); message WM_MOVE; + {$IFNDEF JR_D4} + procedure WMSize(var Message: TWMSize); message WM_SIZE; + {$ENDIF} + procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE; + procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT; + procedure WMPrint(var Message: TMessage); message WM_PRINT; + procedure WMPrintClient(var Message: TMessage); message WM_PRINTCLIENT; + procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND; + protected + procedure AlignControls(AControl: TControl; var Rect: TRect); override; + procedure DrawBackground(DC: HDC; const DrawRect: TRect); virtual; + function GetPalette: HPALETTE; override; + procedure InvalidateBackgrounds; + procedure Loaded; override; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure SetParent(AParent: TWinControl); override; + procedure Paint; override; + function UsingBackground: Boolean; virtual; + public + constructor Create(AOwner: TComponent); override; + procedure CreateParams(var Params: TCreateParams); override; + destructor Destroy; override; + + procedure ArrangeToolbars; + procedure BeginUpdate; + procedure EndUpdate; + function GetCurrentRowSize(const Row: Integer; var AFullSize: Boolean): Integer; + function GetHighestRow(const HighestEffective: Boolean): Integer; + function GetMinRowSize(const Row: Integer; + const ExcludeControl: TTBCustomDockableWindow): Integer; + + property CommitNewPositions: Boolean read FCommitNewPositions write FCommitNewPositions; + property NonClientWidth: Integer read FNonClientWidth; + property NonClientHeight: Integer read FNonClientHeight; + property ToolbarCount: Integer read GetToolbarCount; + property Toolbars[Index: Integer]: TTBCustomDockableWindow read GetToolbars; + published + property AllowDrag: Boolean read FAllowDrag write SetAllowDrag default True; + property Background: TTBBasicBackground read FBackground write SetBackground; + property BackgroundOnToolbars: Boolean read FBkgOnToolbars write SetBackgroundOnToolbars default True; + property BoundLines: TTBDockBoundLines read FBoundLines write SetBoundLines default []; + property Color default clBtnFace; + property FixAlign: Boolean read FFixAlign write SetFixAlign default False; + property LimitToOneRow: Boolean read FLimitToOneRow write FLimitToOneRow default False; + property PopupMenu; + property Position: TTBDockPosition read FPosition write SetPosition default dpTop; + //property Version: TToolbar97Version read GetVersion write SetVersion stored False; + property Visible; + + {$IFDEF JR_D5} + property OnContextPopup; + {$ENDIF} + property OnInsertRemoveBar: TTBInsertRemoveEvent read FOnInsertRemoveBar write FOnInsertRemoveBar; + property OnMouseDown; + property OnMouseMove; + property OnMouseUp; + property OnRequestDock: TTBRequestDockEvent read FOnRequestDock write FOnRequestDock; + {$IFDEF JR_D4} + property OnResize; + {$ELSE} + property OnResize: TNotifyEvent read FOnResize write FOnResize; + {$ENDIF} + end; + + { TTBFloatingWindowParent - internal } + + TTBToolWindowNCRedrawWhatElement = (twrdBorder, twrdCaption, twrdCloseButton); + TTBToolWindowNCRedrawWhat = set of TTBToolWindowNCRedrawWhatElement; + + TTBFloatingWindowParentClass = class of TTBFloatingWindowParent; + TTBFloatingWindowParent = class(TCustomForm) + private + FCloseButtonDown: Boolean; { True if Close button is currently depressed } + FDockableWindow: TTBCustomDockableWindow; + FParentForm: TTBCustomForm; + FShouldShow: Boolean; + + procedure SetCloseButtonState(Pushed: Boolean); + procedure RedrawNCArea(const RedrawWhat: TTBToolWindowNCRedrawWhat); + + procedure CMShowingChanged(var Message: TMessage); message CM_SHOWINGCHANGED; + procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY; + procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED; + procedure WMActivate(var Message: TWMActivate); message WM_ACTIVATE; + procedure WMClose(var Message: TWMClose); message WM_CLOSE; + procedure WMGetMinMaxInfo(var Message: TWMGetMinMaxInfo); message WM_GETMINMAXINFO; + procedure WMMouseActivate(var Message: TWMMouseActivate); message WM_MOUSEACTIVATE; + procedure WMMove(var Message: TWMMove); message WM_MOVE; + procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE; + procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST; + procedure WMNCLButtonDblClk(var Message: TWMNCLButtonDblClk); message WM_NCLBUTTONDBLCLK; + procedure WMNCLButtonDown(var Message: TWMNCLButtonDown); message WM_NCLBUTTONDOWN; + procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT; + procedure WMNCRButtonUp(var Message: TWMNCRButtonUp); message WM_NCRBUTTONUP; + procedure WMPrint(var Message: TMessage); message WM_PRINT; + procedure WMPrintClient(var Message: TMessage); message WM_PRINTCLIENT; + protected + procedure AlignControls(AControl: TControl; var Rect: TRect); override; + procedure CreateParams(var Params: TCreateParams); override; + procedure DrawNCArea(const DrawToDC: Boolean; const ADC: HDC; + const Clip: HRGN; RedrawWhat: TTBToolWindowNCRedrawWhat); dynamic; + property DockableWindow: TTBCustomDockableWindow read FDockableWindow; + property CloseButtonDown: Boolean read FCloseButtonDown; + public + property ParentForm: TTBCustomForm read FParentForm; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + + { TTBCustomDockableWindow } + + TTBDockChangingEvent = procedure(Sender: TObject; Floating: Boolean; + DockingTo: TTBDock) of object; + TTBDragHandleStyle = (dhDouble, dhNone, dhSingle); + TTBDockMode = (dmCanFloat, dmCannotFloat, dmCannotFloatOrChangeDocks); + TTBFloatingMode = (fmOnTopOfParentForm, fmOnTopOfAllForms); + TTBSizeHandle = (twshLeft, twshRight, twshTop, twshTopLeft, + twshTopRight, twshBottom, twshBottomLeft, twshBottomRight); + { ^ must be in same order as HTLEFT..HTBOTTOMRIGHT } + TTBPositionReadIntProc = function(const ToolbarName, Value: String; const Default: Longint; + const ExtraData: Pointer): Longint; + TTBPositionReadStringProc = function(const ToolbarName, Value, Default: String; + const ExtraData: Pointer): String; + TTBPositionWriteIntProc = procedure(const ToolbarName, Value: String; const Data: Longint; + const ExtraData: Pointer); + TTBPositionWriteStringProc = procedure(const ToolbarName, Value, Data: String; + const ExtraData: Pointer); + TTBReadPositionData = record + ReadIntProc: TTBPositionReadIntProc; + ReadStringProc: TTBPositionReadStringProc; + ExtraData: Pointer; + end; + TTBWritePositionData = record + WriteIntProc: TTBPositionWriteIntProc; + WriteStringProc: TTBPositionWriteStringProc; + ExtraData: Pointer; + end; + TTBDockableWindowStyles = set of (tbdsResizeEightCorner, tbdsResizeClipCursor); + TTBShrinkMode = (tbsmNone, tbsmWrap, tbsmChevron); + + TTBCustomDockableWindow = class(TCustomControl) + private + { Property variables } + FAutoResize: Boolean; + FDockPos, FDockRow, FEffectiveDockPos, FEffectiveDockRow: Integer; + FDocked: Boolean; + FCurrentDock, FDefaultDock, FLastDock: TTBDock; + FCurrentSize: Integer; + FFloating: Boolean; + FOnClose, FOnDockChanged, FOnMove, FOnRecreated, + FOnRecreating, {$IFNDEF JR_D4} FOnResize, {$ENDIF} + FOnVisibleChanged: TNotifyEvent; + FOnCloseQuery: TCloseQueryEvent; + FOnDockChanging, FOnDockChangingHidden: TTBDockChangingEvent; + FActivateParent, FHideWhenInactive, FCloseButton, FCloseButtonWhenDocked, + FFullSize, FResizable, FShowCaption, FStretch, FUseLastDock: Boolean; + FBorderStyle: TBorderStyle; + FDockMode: TTBDockMode; + FDragHandleStyle: TTBDragHandleStyle; + FDockableTo: TTBDockableTo; + FFloatingMode: TTBFloatingMode; + FSmoothDrag: Boolean; + FDockableWindowStyles: TTBDockableWindowStyles; + FLastRowSize: Integer; + FInsertRowBefore: Boolean; + + { Misc. } + FUpdatingBounds, { Incremented while internally changing the bounds. This allows + it to move the toolbar freely in design mode and prevents the + SizeChanging protected method from begin called } + FDisableArrange, { Incremented to disable Arrange } + FDisableOnMove, { Incremented to prevent WM_MOVE handler from calling the OnMoved handler } + FHidden: Integer; { Incremented while the toolbar is temporarily hidden } + FArrangeNeeded, FMoved: Boolean; + FInactiveCaption: Boolean; { True when the caption of the toolbar is currently the inactive color } + FFloatingPosition: TPoint; + FDockForms: TList; + FSavedAtRunTime: Boolean; + //FNonClientWidth, FNonClientHeight: Integer; + FDragMode, FDragSplitting, FDragCanSplit: Boolean; + FSmoothDragging: Boolean; + + { When floating. These are not used in design mode } + FCloseButtonDown: Boolean; { True if Close button is currently depressed } + FCloseButtonHover: Boolean; + FFloatParent: TTBFloatingWindowParent; { Run-time only: The actual Parent of the toolbar when it is floating } + + { Property access methods } + //function GetVersion: TToolbar97Version; + function GetNonClientWidth: Integer; + function GetNonClientHeight: Integer; + function IsLastDockStored: Boolean; + function IsWidthAndHeightStored: Boolean; + procedure SetAutoResize(Value: Boolean); + procedure SetBorderStyle(Value: TBorderStyle); + procedure SetCloseButton(Value: Boolean); + procedure SetCloseButtonWhenDocked(Value: Boolean); + procedure SetCurrentDock(Value: TTBDock); + procedure SetDefaultDock(Value: TTBDock); + procedure SetDockPos(Value: Integer); + procedure SetDockRow(Value: Integer); + procedure SetDragHandleStyle(Value: TTBDragHandleStyle); + procedure SetFloating(Value: Boolean); + procedure SetFloatingMode(Value: TTBFloatingMode); + procedure SetFloatingPosition(Value: TPoint); + procedure SetFullSize(Value: Boolean); + procedure SetLastDock(Value: TTBDock); + procedure SetResizable(Value: Boolean); + procedure SetShowCaption(Value: Boolean); + procedure SetStretch(Value: Boolean); + procedure SetUseLastDock(Value: Boolean); + //procedure SetVersion(const Value: TToolbar97Version); + + { Internal } + procedure CancelNCHover; + procedure DrawDraggingOutline(const DC: HDC; const NewRect, OldRect: PRect; + const NewDocking, OldDocking: Boolean); + procedure RedrawNCArea; + procedure SetCloseButtonState(Pushed: Boolean); + procedure ShowNCContextMenu(const Pos: TSmallPoint); + procedure Moved; + function GetShowingState: Boolean; + procedure UpdateCaptionState; + procedure UpdateTopmostFlag; + procedure UpdateVisibility; + procedure ReadSavedAtRunTime(Reader: TReader); + procedure WriteSavedAtRunTime(Writer: TWriter); + + { Messages } + procedure CMColorChanged(var Message: TMessage); message CM_COLORCHANGED; + procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; + procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED; + procedure CMShowingChanged(var Message: TMessage); message CM_SHOWINGCHANGED; + procedure CMVisibleChanged(var Message: TMessage); message CM_VISIBLECHANGED; + {$IFDEF JR_D5} + procedure WMContextMenu(var Message: TWMContextMenu); message WM_CONTEXTMENU; + {$ENDIF} + procedure WMEnable(var Message: TWMEnable); message WM_ENABLE; + procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND; + procedure WMMove(var Message: TWMMove); message WM_MOVE; + procedure WMMouseMove(var Message: TMessage); message WM_MOUSEMOVE; + procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE; + procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST; + procedure WMNCMouseLeave(var Message: TMessage); message $2A2 {WM_NCMOUSELEAVE}; + procedure WMNCMouseMove(var Message: TWMNCMouseMove); message WM_NCMOUSEMOVE; + procedure WMNCLButtonDblClk(var Message: TWMNCLButtonDblClk); message WM_NCLBUTTONDBLCLK; + procedure WMNCLButtonDown(var Message: TWMNCLButtonDown); message WM_NCLBUTTONDOWN; + procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT; + procedure WMNCRButtonUp(var Message: TWMNCRButtonUp); message WM_NCRBUTTONUP; + procedure WMPrint(var Message: TMessage); message WM_PRINT; + procedure WMPrintClient(var Message: TMessage); message WM_PRINTCLIENT; + procedure WMSetCursor(var Message: TWMSetCursor); message WM_SETCURSOR; + {$IFNDEF JR_D4} + procedure WMSize(var Message: TWMSize); message WM_SIZE; + {$ENDIF} + protected + property ActivateParent: Boolean read FActivateParent write FActivateParent default True; + property AutoResize: Boolean read FAutoResize write SetAutoResize default True; + property BorderStyle: TBorderStyle read FBorderStyle write SetBorderStyle default bsSingle; + property Color default clBtnFace; + property CloseButton: Boolean read FCloseButton write SetCloseButton default True; + property CloseButtonDown: Boolean read FCloseButtonDown; + property CloseButtonHover: Boolean read FCloseButtonHover; + property CloseButtonWhenDocked: Boolean read FCloseButtonWhenDocked write SetCloseButtonWhenDocked default False; + property DefaultDock: TTBDock read FDefaultDock write SetDefaultDock; + property DockableTo: TTBDockableTo read FDockableTo write FDockableTo default [dpTop, dpBottom, dpLeft, dpRight]; + property DockableWindowStyles: TTBDockableWindowStyles read FDockableWindowStyles write FDockableWindowStyles; + property DockMode: TTBDockMode read FDockMode write FDockMode default dmCanFloat; + property DragHandleStyle: TTBDragHandleStyle read FDragHandleStyle write SetDragHandleStyle default dhSingle; + property FloatingMode: TTBFloatingMode read FFloatingMode write SetFloatingMode default fmOnTopOfParentForm; + property FullSize: Boolean read FFullSize write SetFullSize default False; + property InactiveCaption: Boolean read FInactiveCaption; + property HideWhenInactive: Boolean read FHideWhenInactive write FHideWhenInactive default True; + property Resizable: Boolean read FResizable write SetResizable default True; + property ShowCaption: Boolean read FShowCaption write SetShowCaption default True; + property SmoothDrag: Boolean read FSmoothDrag write FSmoothDrag default True; + property Stretch: Boolean read FStretch write SetStretch default False; + property UseLastDock: Boolean read FUseLastDock write SetUseLastDock default True; + //property Version: TToolbar97Version read GetVersion write SetVersion stored False; + + property OnClose: TNotifyEvent read FOnClose write FOnClose; + property OnCloseQuery: TCloseQueryEvent read FOnCloseQuery write FOnCloseQuery; + property OnDockChanged: TNotifyEvent read FOnDockChanged write FOnDockChanged; + property OnDockChanging: TTBDockChangingEvent read FOnDockChanging write FOnDockChanging; + property OnDockChangingHidden: TTBDockChangingEvent read FOnDockChangingHidden write FOnDockChangingHidden; + property OnMove: TNotifyEvent read FOnMove write FOnMove; + property OnRecreated: TNotifyEvent read FOnRecreated write FOnRecreated; + property OnRecreating: TNotifyEvent read FOnRecreating write FOnRecreating; + {$IFNDEF JR_D4} + property OnResize: TNotifyEvent read FOnResize write FOnResize; + {$ENDIF} + property OnVisibleChanged: TNotifyEvent read FOnVisibleChanged write FOnVisibleChanged; + + { Overridden methods } + procedure CreateParams(var Params: TCreateParams); override; + procedure DefineProperties(Filer: TFiler); override; + function GetPalette: HPALETTE; override; + procedure Loaded; override; + procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + function PaletteChanged(Foreground: Boolean): Boolean; override; + procedure SetParent(AParent: TWinControl); override; + + { Methods accessible to descendants } + procedure Arrange; + function CalcNCSizes: TPoint; virtual; + procedure ChangeSize(AWidth, AHeight: Integer); + function ChildControlTransparent(Ctl: TControl): Boolean; dynamic; + procedure Close; + procedure ControlExistsAtPos(const P: TPoint; var ControlExists: Boolean); virtual; + function DoArrange(CanMoveControls: Boolean; PreviousDockType: TTBDockType; + NewFloating: Boolean; NewDock: TTBDock): TPoint; virtual; abstract; + procedure DoDockChangingHidden(NewFloating: Boolean; DockingTo: TTBDock); dynamic; + procedure DoubleClick; + procedure DrawNCArea(const DrawToDC: Boolean; const ADC: HDC; + const Clip: HRGN); virtual; + procedure GetBaseSize(var ASize: TPoint); virtual; abstract; + function GetDockedCloseButtonRect(LeftRight: Boolean): TRect; virtual; + function GetFloatingWindowParentClass: TTBFloatingWindowParentClass; dynamic; + procedure GetMinShrinkSize(var AMinimumSize: Integer); virtual; + procedure GetMinMaxSize(var AMinClientWidth, AMinClientHeight, + AMaxClientWidth, AMaxClientHeight: Integer); virtual; + function GetShrinkMode: TTBShrinkMode; virtual; + procedure InitializeOrdering; dynamic; + function IsAutoResized: Boolean; + procedure ResizeBegin(SizeHandle: TTBSizeHandle); dynamic; + procedure ResizeEnd; dynamic; + procedure ResizeTrack(var Rect: TRect; const OrigRect: TRect); dynamic; + procedure ResizeTrackAccept; dynamic; + procedure SizeChanging(const AWidth, AHeight: Integer); virtual; + public + property Docked: Boolean read FDocked; + property Canvas; + property CurrentDock: TTBDock read FCurrentDock write SetCurrentDock stored False; + property CurrentSize: Integer read FCurrentSize write FCurrentSize; + property DockPos: Integer read FDockPos write SetDockPos default -1; + property DockRow: Integer read FDockRow write SetDockRow default 0; + property DragMode: Boolean read FDragMode; + property DragSplitting: Boolean read FDragSplitting; + property EffectiveDockPos: Integer read FEffectiveDockPos; + property EffectiveDockRow: Integer read FEffectiveDockRow; + property Floating: Boolean read FFloating write SetFloating default False; + property FloatingPosition: TPoint read FFloatingPosition write SetFloatingPosition; + property LastDock: TTBDock read FLastDock write SetLastDock stored IsLastDockStored; + property NonClientWidth: Integer read GetNonClientWidth; + property NonClientHeight: Integer read GetNonClientHeight; + + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function GetParentComponent: TComponent; override; + function HasParent: Boolean; override; + procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override; + + procedure AddDockForm(const Form: TTBCustomForm); + procedure AddDockedNCAreaToSize(var S: TPoint; const LeftRight: Boolean); + procedure AddFloatingNCAreaToSize(var S: TPoint); + procedure BeginMoving(const InitX, InitY: Integer); + procedure BeginSizing(const ASizeHandle: TTBSizeHandle); + procedure BeginUpdate; + procedure DoneReadingPositionData(const Data: TTBReadPositionData); dynamic; + procedure EndUpdate; + procedure GetDockedNCArea(var TopLeft, BottomRight: TPoint; + const LeftRight: Boolean); + function GetFloatingBorderSize: TPoint; virtual; + procedure GetFloatingNCArea(var TopLeft, BottomRight: TPoint); + function IsMovable: Boolean; + procedure MoveOnScreen(const OnlyIfFullyOffscreen: Boolean); + procedure ReadPositionData(const Data: TTBReadPositionData); dynamic; + procedure RemoveDockForm(const Form: TTBCustomForm); + procedure WritePositionData(const Data: TTBWritePositionData); dynamic; + published + property Height stored IsWidthAndHeightStored; + property Width stored IsWidthAndHeightStored; + end; + + TTBBasicBackground = class(TComponent) + protected + procedure Draw(DC: HDC; const DrawRect: TRect); virtual; abstract; + function GetPalette: HPALETTE; virtual; abstract; + procedure RegisterChanges(Proc: TNotifyEvent); virtual; abstract; + procedure SysColorChanged; virtual; abstract; + procedure UnregisterChanges(Proc: TNotifyEvent); virtual; abstract; + function UsingBackground: Boolean; virtual; abstract; + end; + + TTBBackground = class(TTBBasicBackground) + private + FBitmap, FBitmapCache: TBitmap; + FBkColor: TColor; + FNotifyList: TList; + FTransparent: Boolean; + procedure BitmapChanged(Sender: TObject); + procedure SetBitmap(Value: TBitmap); + procedure SetBkColor(Value: TColor); + procedure SetTransparent(Value: Boolean); + protected + procedure Draw(DC: HDC; const DrawRect: TRect); override; + function GetPalette: HPALETTE; override; + procedure RegisterChanges(Proc: TNotifyEvent); override; + procedure SysColorChanged; override; + procedure UnregisterChanges(Proc: TNotifyEvent); override; + function UsingBackground: Boolean; override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + published + property Bitmap: TBitmap read FBitmap write SetBitmap; + property BkColor: TColor read FBkColor write SetBkColor default clBtnFace; + property Transparent: Boolean read FTransparent write SetTransparent default False; + end; + +procedure TBRegLoadPositions(const OwnerComponent: TComponent; + const RootKey: DWORD; const BaseRegistryKey: String); +procedure TBRegSavePositions(const OwnerComponent: TComponent; + const RootKey: DWORD; const BaseRegistryKey: String); +procedure TBIniLoadPositions(const OwnerComponent: TComponent; + const Filename, SectionNamePrefix: String); +procedure TBIniSavePositions(const OwnerComponent: TComponent; + const Filename, SectionNamePrefix: String); + +procedure TBCustomLoadPositions(const OwnerComponent: TComponent; + const ReadIntProc: TTBPositionReadIntProc; + const ReadStringProc: TTBPositionReadStringProc; const ExtraData: Pointer); +procedure TBCustomSavePositions(const OwnerComponent: TComponent; + const WriteIntProc: TTBPositionWriteIntProc; + const WriteStringProc: TTBPositionWriteStringProc; const ExtraData: Pointer); + +function TBGetDockTypeOf(const Control: TTBDock; const Floating: Boolean): TTBDockType; +function TBGetToolWindowParentForm(const ToolWindow: TTBCustomDockableWindow): + TTBCustomForm; +function TBValidToolWindowParentForm(const ToolWindow: TTBCustomDockableWindow): + TTBCustomForm; + +implementation + +uses + Registry, IniFiles, Consts, Menus, + TB2Common, TB2Hook, TB2Consts; + +type + TControlAccess = class(TControl); + +const + DockedBorderSize = 2; + DockedBorderSize2 = DockedBorderSize*2; + DragHandleSizes: array[Boolean, TTBDragHandleStyle] of Integer = + ((9, 0, 6), (14, 14, 14)); + DragHandleXOffsets: array[Boolean, TTBDragHandleStyle] of Integer = + ((2, 0, 1), (3, 0, 5)); + HT_TB2k_Border = 2000; + HT_TB2k_Close = 2001; + HT_TB2k_Caption = 2002; + + DefaultBarWidthHeight = 8; + + ForceDockAtTopRow = 0; + ForceDockAtLeftPos = -8; + + PositionLeftOrRight = [dpLeft, dpRight]; + + twrdAll = [Low(TTBToolWindowNCRedrawWhatElement)..High(TTBToolWindowNCRedrawWhatElement)]; + + { Constants for TTBCustomDockableWindow registry values/data. + Don't localize any of these names! } + rvRev = 'Rev'; + rdCurrentRev = 2000; + rvVisible = 'Visible'; + rvDockedTo = 'DockedTo'; + rdDockedToFloating = '+'; + rvLastDock = 'LastDock'; + rvDockRow = 'DockRow'; + rvDockPos = 'DockPos'; + rvFloatLeft = 'FloatLeft'; + rvFloatTop = 'FloatTop'; + +threadvar + FloatingToolWindows: TList; + + +{ Misc. functions } + +function GetSmallCaptionHeight: Integer; +{ Returns height of the caption of a small window } +begin + Result := GetSystemMetrics(SM_CYSMCAPTION); +end; + +function GetMDIParent(const Form: TTBCustomForm): TTBCustomForm; +{ Returns the parent of the specified MDI child form. But, if Form isn't a + MDI child, it simply returns Form. } +var + I, J: Integer; +begin + Result := Form; + if Form = nil then Exit; + if {$IFDEF JR_D3} (Form is TForm) and {$ENDIF} + (TForm(Form).FormStyle = fsMDIChild) then + for I := 0 to Screen.FormCount-1 do + with Screen.Forms[I] do begin + if FormStyle <> fsMDIForm then Continue; + for J := 0 to MDIChildCount-1 do + if MDIChildren[J] = Form then begin + Result := Screen.Forms[I]; + Exit; + end; + end; +end; + +function TBGetDockTypeOf(const Control: TTBDock; const Floating: Boolean): TTBDockType; +begin + if Floating then + Result := dtFloating + else + if Control = nil then + Result := dtNotDocked + else begin + if not(Control.Position in PositionLeftOrRight) then + Result := dtTopBottom + else + Result := dtLeftRight; + end; +end; + +function TBGetToolWindowParentForm(const ToolWindow: TTBCustomDockableWindow): TTBCustomForm; +var + Ctl: TWinControl; +begin + Result := nil; + Ctl := ToolWindow; + while Assigned(Ctl.Parent) do begin + if Ctl.Parent is TTBCustomForm then + Result := TTBCustomForm(Ctl.Parent); + Ctl := Ctl.Parent; + end; + { ^ for compatibility with ActiveX controls, that code is used instead of + GetParentForm because it returns nil unless the form is the *topmost* + parent } + if Result is TTBFloatingWindowParent then + Result := TTBFloatingWindowParent(Result).ParentForm; +end; + +function TBValidToolWindowParentForm(const ToolWindow: TTBCustomDockableWindow): TTBCustomForm; +begin + Result := TBGetToolWindowParentForm(ToolWindow); + if Result = nil then + raise EInvalidOperation.{$IFDEF JR_D3}CreateFmt{$ELSE}CreateResFmt{$ENDIF} + (SParentRequired, [ToolWindow.Name]); +end; + +procedure ToolbarHookProc(Code: THookProcCode; Wnd: HWND; WParam: WPARAM; LParam: LPARAM); +var + I: Integer; + ToolWindow: TTBCustomDockableWindow; + Form: TTBCustomForm; +begin + case Code of + hpSendActivate, + hpSendActivateApp: begin + if Assigned(FloatingToolWindows) then + for I := 0 to FloatingToolWindows.Count-1 do + with TTBCustomDockableWindow(FloatingToolWindows.List[I]) do + { Hide or restore toolbars when a form or the application is + deactivated or activated, and/or update their caption state + (active/inactive) } + UpdateVisibility; + end; + hpSendWindowPosChanged: begin + if Assigned(FloatingToolWindows) then + for I := 0 to FloatingToolWindows.Count-1 do begin + ToolWindow := TTBCustomDockableWindow(FloatingToolWindows.List[I]); + with ToolWindow do begin + if (FFloatingMode = fmOnTopOfParentForm) and HandleAllocated then begin + with PWindowPos(LParam)^ do + { Call UpdateVisibility if parent form's visibility has + changed, or if it has been minimized or restored } + if ((flags and (SWP_SHOWWINDOW or SWP_HIDEWINDOW) <> 0) or + (flags and SWP_FRAMECHANGED <> 0)) then begin + Form := TBGetToolWindowParentForm(ToolWindow); + if Assigned(Form) and Form.HandleAllocated and ((Wnd = Form.Handle) or IsChild(Wnd, Form.Handle)) then + UpdateVisibility; + end; + end; + end; + end; + end; + hpPreDestroy: begin + if Assigned(FloatingToolWindows) then + for I := 0 to FloatingToolWindows.Count-1 do begin + with TTBCustomDockableWindow(FloatingToolWindows.List[I]) do + { It must remove the form window's ownership of the tool window + *before* the form gets destroyed, otherwise Windows will destroy + the tool window's handle. } + if Assigned(Parent) and Parent.HandleAllocated and + (HWND(GetWindowLong(Parent.Handle, GWL_HWNDPARENT)) = Wnd) then + SetWindowLong(Parent.Handle, GWL_HWNDPARENT, Longint(Application.Handle)); + { ^ Restore GWL_HWNDPARENT back to Application.Handle } + end; + end; + end; +end; + +type + PFindWindowData = ^TFindWindowData; + TFindWindowData = record + TaskActiveWindow, TaskFirstWindow, TaskFirstTopMost: HWND; + end; + +function DoFindWindow(Wnd: HWND; Param: Longint): Bool; stdcall; +begin + with PFindWindowData(Param)^ do + if (Wnd <> TaskActiveWindow) and (Wnd <> Application.Handle) and + IsWindowVisible(Wnd) and IsWindowEnabled(Wnd) then begin + if GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOPMOST = 0 then begin + if TaskFirstWindow = 0 then TaskFirstWindow := Wnd; + end + else begin + if TaskFirstTopMost = 0 then TaskFirstTopMost := Wnd; + end; + end; + Result := True; +end; + +function FindTopLevelWindow(ActiveWindow: HWND): HWND; +var + FindData: TFindWindowData; +begin + with FindData do begin + TaskActiveWindow := ActiveWindow; + TaskFirstWindow := 0; + TaskFirstTopMost := 0; + EnumThreadWindows(GetCurrentThreadID, @DoFindWindow, Longint(@FindData)); + if TaskFirstWindow <> 0 then + Result := TaskFirstWindow + else + Result := TaskFirstTopMost; + end; +end; + +function IsAncestorOfWindow(const ParentWnd: HWND; Wnd: HWND): Boolean; +{ Returns True if Wnd is a child of, is owned by, or is the same window as + ParentWnd } +begin + while Wnd <> 0 do begin + if Wnd = ParentWnd then begin + Result := True; + Exit; + end; + Wnd := GetParent(Wnd); + end; + Result := False; +end; + +procedure RecalcNCArea(const Ctl: TWinControl); +begin + if Ctl.HandleAllocated then + SetWindowPos(Ctl.Handle, 0, 0, 0, 0, 0, SWP_FRAMECHANGED or + SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE or SWP_NOZORDER); +end; + +procedure InvalidateAll(const Ctl: TWinControl); +{ Invalidate both non-client and client area, and erase. } +begin + if Ctl.HandleAllocated then + RedrawWindow(Ctl.Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or + RDW_ERASE or RDW_NOCHILDREN); +end; + +type + TSetCloseButtonStateProc = procedure(Pushed: Boolean) of object; + +function CloseButtonLoop(const Wnd: HWND; const ButtonRect: TRect; + const SetCloseButtonStateProc: TSetCloseButtonStateProc): Boolean; + function MouseInButton: Boolean; + var + P: TPoint; + begin + GetCursorPos(P); + Result := PtInRect(ButtonRect, P); + end; +var + Msg: TMsg; +begin + Result := False; + + SetCloseButtonStateProc(MouseInButton); + + SetCapture(Wnd); + + try + while GetCapture = Wnd do begin + case Integer(GetMessage(Msg, 0, 0, 0)) of + -1: Break; { if GetMessage failed } + 0: begin + { Repost WM_QUIT messages } + PostQuitMessage(Msg.WParam); + Break; + end; + end; + + case Msg.Message of + WM_KEYDOWN, WM_KEYUP: + { Ignore all keystrokes while in a close button loop } + ; + WM_MOUSEMOVE: begin + { Note to self: WM_MOUSEMOVE messages should never be dispatched + here to ensure no hints get shown } + SetCloseButtonStateProc(MouseInButton); + end; + WM_LBUTTONDOWN, WM_LBUTTONDBLCLK: + { Make sure it doesn't begin another loop } + Break; + WM_LBUTTONUP: begin + if MouseInButton then + Result := True; + Break; + end; + WM_RBUTTONDOWN..WM_MBUTTONDBLCLK: + { Ignore all other mouse up/down messages } + ; + else + TranslateMessage(Msg); + DispatchMessage(Msg); + end; + end; + finally + if GetCapture = Wnd then + ReleaseCapture; + SetCloseButtonStateProc(False); + end; +end; + + +{ TTBDock - internal } + +constructor TTBDock.Create(AOwner: TComponent); +begin + inherited; + + ControlStyle := ControlStyle + [csAcceptsControls, csMenuEvents] - + [csClickEvents, csCaptureMouse, csOpaque]; + FAllowDrag := True; + FBkgOnToolbars := True; + DockList := TList.Create; + DockVisibleList := TList.Create; + Color := clBtnFace; + Position := dpTop; +end; + +procedure TTBDock.CreateParams(var Params: TCreateParams); +begin + inherited; + { Disable complete redraws when size changes. CS_H/VREDRAW cause flicker + and are not necessary for this control at run time } + if not(csDesigning in ComponentState) then + with Params.WindowClass do + Style := Style and not(CS_HREDRAW or CS_VREDRAW); +end; + +destructor TTBDock.Destroy; +begin + if Assigned(FBackground) then + FBackground.UnregisterChanges(BackgroundChanged); + inherited; + DockVisibleList.Free; + DockList.Free; +end; + +procedure TTBDock.SetParent(AParent: TWinControl); +begin + if (AParent is TTBCustomDockableWindow) or (AParent is TTBDock) then + raise EInvalidOperation.Create(STBDockParentNotAllowed); + + inherited; +end; + +procedure TTBDock.BeginUpdate; +begin + Inc(FDisableArrangeToolbars); +end; + +procedure TTBDock.EndUpdate; +begin + Dec(FDisableArrangeToolbars); + if FArrangeToolbarsNeeded and (FDisableArrangeToolbars = 0) then + ArrangeToolbars; +end; + +function TTBDock.HasVisibleToolbars: Boolean; +var + I: Integer; +begin + Result := False; + for I := 0 to DockList.Count-1 do + if ToolbarVisibleOnDock(TTBCustomDockableWindow(DockList[I])) then begin + Result := True; + Break; + end; +end; + +function TTBDock.ToolbarVisibleOnDock(const AToolbar: TTBCustomDockableWindow): Boolean; +begin + Result := (AToolbar.Parent = Self) and + (AToolbar.Visible or (csDesigning in AToolbar.ComponentState)); +end; + +function TTBDock.GetCurrentRowSize(const Row: Integer; + var AFullSize: Boolean): Integer; +var + I, J: Integer; + T: TTBCustomDockableWindow; +begin + Result := 0; + AFullSize := False; + if Row < 0 then Exit; + for I := 0 to DockList.Count-1 do begin + T := DockList[I]; + if (T.FEffectiveDockRow = Row) and ToolbarVisibleOnDock(T) then begin + AFullSize := T.FullSize; + if not(Position in PositionLeftOrRight) then + J := T.Height + else + J := T.Width; + if J > Result then + Result := J; + end; + end; +end; + +function TTBDock.GetMinRowSize(const Row: Integer; + const ExcludeControl: TTBCustomDockableWindow): Integer; +var + I, J: Integer; + T: TTBCustomDockableWindow; +begin + Result := 0; + if Row < 0 then Exit; + for I := 0 to DockList.Count-1 do begin + T := DockList[I]; + if (T <> ExcludeControl) and (T.FEffectiveDockRow = Row) and + ToolbarVisibleOnDock(T) then begin + J := T.FLastRowSize; + if J > Result then + Result := J; + end; + end; +end; + +function TTBDock.GetDesignModeRowOf(const XY: Integer): Integer; +{ Similar to GetRowOf, but is a little different to accomidate design mode + better } +var + HighestRowPlus1, R, CurY, CurRowSize: Integer; + FullSize: Boolean; +begin + Result := 0; + HighestRowPlus1 := GetHighestRow(True)+1; + CurY := 0; + for R := 0 to HighestRowPlus1 do begin + Result := R; + if R = HighestRowPlus1 then Break; + CurRowSize := GetCurrentRowSize(R, FullSize); + if CurRowSize = 0 then Continue; + Inc(CurY, CurRowSize); + if XY < CurY then + Break; + end; +end; + +function TTBDock.GetHighestRow(const HighestEffective: Boolean): Integer; +{ Returns highest used row number, or -1 if no rows are used } +var + I, J: Integer; +begin + Result := -1; + for I := 0 to DockList.Count-1 do + with TTBCustomDockableWindow(DockList[I]) do begin + if HighestEffective then + J := FEffectiveDockRow + else + J := FDockRow; + if J > Result then + Result := J; + end; +end; + +procedure TTBDock.ChangeWidthHeight(const NewWidth, NewHeight: Integer); +{ Same as setting Width/Height directly, but does not lose Align position. } +begin + case Align of + alNone, alTop, alLeft: + SetBounds(Left, Top, NewWidth, NewHeight); + alBottom: + SetBounds(Left, Top-NewHeight+Height, NewWidth, NewHeight); + alRight: + SetBounds(Left-NewWidth+Width, Top, NewWidth, NewHeight); + end; +end; + +procedure TTBDock.AlignControls(AControl: TControl; var Rect: TRect); +begin + ArrangeToolbars; +end; + +function CompareDockRowPos(const Item1, Item2, ExtraData: Pointer): Integer; far; +begin + if TTBCustomDockableWindow(Item1).FDockRow <> TTBCustomDockableWindow(Item2).FDockRow then + Result := TTBCustomDockableWindow(Item1).FDockRow - TTBCustomDockableWindow(Item2).FDockRow + else + Result := TTBCustomDockableWindow(Item1).FDockPos - TTBCustomDockableWindow(Item2).FDockPos; +end; + +procedure TTBDock.ArrangeToolbars; +{ The main procedure to arrange all the toolbars docked to it } +type + PPosDataRec = ^TPosDataRec; + TPosDataRec = record + Row, ActualRow, PrecSpace, FullSize, MinimumSize, Size, Overlap, Pos: Integer; + ShrinkMode: TTBShrinkMode; + NeedArrange: Boolean; + end; + PPosDataArray = ^TPosDataArray; + TPosDataArray = array[0..$7FFFFFFF div SizeOf(TPosDataRec)-1] of TPosDataRec; +var + NewDockList: TList; + PosData: PPosDataArray; + + function IndexOfDraggingToolbar(const List: TList): Integer; + { Returns index of toolbar in List that's currently being dragged, or -1 } + var + I: Integer; + begin + for I := 0 to List.Count-1 do + if TTBCustomDockableWindow(List[I]).FDragMode then begin + Result := I; + Exit; + end; + Result := -1; + end; + + function ShiftLeft(const Row, StartIndex, MaxSize: Integer): Integer; + { Removes PrecSpace pixels from toolbars at or before StartIndex until the + right edge of the toolbar at StartIndex is <= MaxSize. + Returns the total number of PrecSpace pixels removed from toolbars. } + var + PixelsOffEdge, I, J: Integer; + P: PPosDataRec; + begin + Result := 0; + PixelsOffEdge := -MaxSize; + for I := 0 to StartIndex do begin + P := @PosData[I]; + if P.Row = Row then begin + Inc(PixelsOffEdge, P.PrecSpace); + Inc(PixelsOffEdge, P.Size); + end; + end; + if PixelsOffEdge > 0 then + for I := StartIndex downto 0 do begin + P := @PosData[I]; + if P.Row = Row then begin + J := PixelsOffEdge; + if P.PrecSpace < J then + J := P.PrecSpace; + Dec(P.PrecSpace, J); + Dec(PixelsOffEdge, J); + Inc(Result, J); + if PixelsOffEdge = 0 then + Break; + end; + end; + end; + + function GetNextToolbar(const GoForward: Boolean; const Row: Integer; + const StartIndex: Integer): Integer; + var + I: Integer; + begin + Result := -1; + I := StartIndex; + while True do begin + if GoForward then begin + Inc(I); + if I >= NewDockList.Count then + Break; + end + else begin + Dec(I); + if I < 0 then + Break; + end; + if PosData[I].Row = Row then begin + Result := I; + Break; + end; + end; + end; + +var + LeftRight: Boolean; + EmptySize, HighestRow, R, CurPos, CurRowPixel, I, J, K, L, ClientW, + ClientH, MaxSize, TotalSize, PixelsPastMaxSize, Offset, CurRealPos, DragIndex, + MinRealPos, DragIndexPos, ToolbarsOnRow, CurRowSize: Integer; + P: PPosDataRec; + T: TTBCustomDockableWindow; + S: TPoint; + RowIsEmpty: Boolean; +label FoundNextToolbar; +begin + if (FDisableArrangeToolbars > 0) or (csLoading in ComponentState) then begin + FArrangeToolbarsNeeded := True; + Exit; + end; + + NewDockList := nil; + PosData := nil; + Inc(FDisableArrangeToolbars); + try + { Work around VCL alignment bug when docking toolbars taller or wider than + the client height or width of the form. } + {if not(csDesigning in ComponentState) and HandleAllocated then + SetWindowPos(Handle, HWND_TOP, 0, 0, 0, 0, + SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);} + + LeftRight := Position in PositionLeftOrRight; + + if not HasVisibleToolbars then begin + EmptySize := Ord(FFixAlign); + if csDesigning in ComponentState then + EmptySize := 9; + if not LeftRight then + ChangeWidthHeight(Width, EmptySize) + else + ChangeWidthHeight(EmptySize, Height); + Exit; + end; + + { It can't read the ClientWidth and ClientHeight properties because they + attempt to create a handle, which requires Parent to be set. "ClientW" + and "ClientH" are calculated instead. } + ClientW := Width - FNonClientWidth; + if ClientW < 0 then ClientW := 0; + ClientH := Height - FNonClientHeight; + if ClientH < 0 then ClientH := 0; + + { Remove toolbars from DockList & DockVisibleList that are destroying, so + that no methods on these toolbars will be called. + This is needed because in certain rare cases ArrangeToolbars can be + indirectly called while a docked toolbar is being destroyed. } + for I := DockList.Count-1 downto 0 do begin + T := DockList[I]; + if csDestroying in T.ComponentState then begin + DockList.Delete(I); + DockVisibleList.Remove(T); + end; + end; + + { If LimitToOneRow is True, only use the first row } + if FLimitToOneRow then + for I := 0 to DockList.Count-1 do + with TTBCustomDockableWindow(DockList[I]) do + FDockRow := 0; + + { Copy DockList to NewDockList, and ensure it is in correct ordering + according to DockRow/DockPos } + NewDockList := TList.Create; + NewDockList.Count := DockList.Count; + for I := 0 to NewDockList.Count-1 do + NewDockList[I] := DockList[I]; + I := IndexOfDraggingToolbar(NewDockList); + ListSortEx(NewDockList, CompareDockRowPos, nil); + DragIndex := IndexOfDraggingToolbar(NewDockList); + if (I <> -1) and TTBCustomDockableWindow(NewDockList[DragIndex]).FDragSplitting then begin + { When splitting, don't allow the toolbar being dragged to change + positions in the dock list } + NewDockList.Move(DragIndex, I); + DragIndex := I; + end; + ListSortEx(DockVisibleList, CompareDockRowPos, nil); + { Find highest row number } + HighestRow := GetHighestRow(False); + + { Create a temporary array that holds new position data for the toolbars } + PosData := AllocMem(NewDockList.Count * SizeOf(TPosDataRec)); + for I := 0 to NewDockList.Count-1 do begin + P := @PosData[I]; + T := NewDockList[I]; + P.ActualRow := T.FDockRow; + if ToolbarVisibleOnDock(T) then + P.Row := T.FDockRow + else + P.Row := -1; + P.Pos := T.FDockPos; + end; + + { Find FInsertRowBefore=True and FullSize=True toolbars and make sure there + aren't any other toolbars on the same row. If there are, shift them down + a row. } + for L := 0 to 1 do begin + R := 0; + while R <= HighestRow do begin + for I := 0 to NewDockList.Count-1 do begin + T := NewDockList[I]; + if (PosData[I].ActualRow = R) and + (((L = 0) and T.FInsertRowBefore and not LimitToOneRow) or + ((L = 1) and T.FullSize)) then + for J := 0 to NewDockList.Count-1 do + if (J <> I) and (PosData[J].ActualRow = R) then begin + for K := 0 to NewDockList.Count-1 do begin + if K <> I then begin + P := @PosData[K]; + if P.ActualRow >= R then + Inc(P.ActualRow); + if P.Row >= R then + Inc(P.Row); + end; + end; + Inc(HighestRow); + Break; + end; + end; + Inc(R); + end; + end; + + { Remove blank rows. + Note that rows that contain only invisible or currently floating toolbars + are intentionally not removed, so that when the toolbars are shown again, + they stay on their own row. } + R := 0; + while R <= HighestRow do begin + RowIsEmpty := True; + for I := 0 to NewDockList.Count-1 do + if PosData[I].ActualRow = R then begin + RowIsEmpty := False; + Break; + end; + if RowIsEmpty then begin + { Shift all ones higher than R back one } + for I := 0 to NewDockList.Count-1 do begin + if PosData[I].ActualRow > R then + Dec(PosData[I].ActualRow); + if PosData[I].Row > R then + Dec(PosData[I].Row); + end; + Dec(HighestRow); + end + else + Inc(R); + end; + + { Calculate positions and sizes of each row } + R := 0; + while R <= HighestRow do begin + if not LeftRight then + MaxSize := ClientW + else + MaxSize := ClientH; + + { Set initial sizes } + TotalSize := 0; + ToolbarsOnRow := 0; + MinRealPos := 0; + for I := 0 to NewDockList.Count-1 do begin + P := @PosData[I]; + if P.Row = R then begin + T := NewDockList[I]; + T.GetBaseSize(S); + if not LeftRight then + J := S.X + T.NonClientWidth + else + J := S.Y + T.NonClientHeight; + P.FullSize := J; + P.Size := J; + P.ShrinkMode := T.GetShrinkMode; + P.MinimumSize := 0; + T.GetMinShrinkSize(P.MinimumSize); + if P.MinimumSize > P.FullSize then + { don't allow minimum shrink size to be less than full size } + P.MinimumSize := P.FullSize; + if P.ShrinkMode = tbsmChevron then + Inc(MinRealPos, P.MinimumSize) + else + Inc(MinRealPos, P.FullSize); + { If the toolbar isn't the first toolbar on the row, and the toolbar + would go off the edge even after it's shrunk, then move it onto a + row of its own } + if (ToolbarsOnRow > 0) and (MinRealPos > MaxSize) and + not LimitToOneRow then begin + for K := I to NewDockList.Count-1 do begin + P := @PosData[K]; + if P.ActualRow >= R then + Inc(P.ActualRow); + if P.Row >= R then + Inc(P.Row); + end; + Inc(HighestRow); + Break; + end; + Inc(TotalSize, J); + Inc(ToolbarsOnRow); + end; + end; + PixelsPastMaxSize := TotalSize - MaxSize; + + { Set initial arrangement; don't shrink toolbars yet } + DragIndexPos := 0; + CurPos := 0; + CurRealPos := 0; + MinRealPos := 0; + for I := 0 to NewDockList.Count-1 do begin + P := @PosData[I]; + T := NewDockList[I]; + if P.Row = R then begin + if (CurPos = 0) and (T.FullSize or T.Stretch) then + { Force to left } + J := 0 + else + J := T.FDockPos; + if I = DragIndex then + DragIndexPos := J; + { Don't let this toolbar overlap preceding toolbars by more than + the sum of their minimum sizes } + if J < MinRealPos then + J := MinRealPos; + if J > CurPos then begin + { There's a gap between the left edge or previous toolbar and + this toolbar } + if PixelsPastMaxSize <= 0 then begin + P.PrecSpace := J - CurPos; + CurPos := J; + end + else + { Don't allow a gap if exceeding MaxSize } + J := CurPos; + end + else begin + if J < CurRealPos then + P.Overlap := CurRealPos - J; + end; + + Inc(CurPos, P.Size); + CurRealPos := J + P.Size; + Inc(MinRealPos, P.MinimumSize); + end; + end; + + { If we aren't exceeding MaxSize, allow the toolbar being dragged + to push other toolbars to the left } + if (PixelsPastMaxSize < 0) and (DragIndex <> -1) and + (PosData[DragIndex].Row = R) then begin + I := GetNextToolbar(False, R, DragIndex); + if I <> -1 then begin + J := ShiftLeft(R, I, DragIndexPos); + if J > 0 then begin + { Ensure that toolbars that follow the toolbar being dragged stay + at the same place by increasing PrecSpace on the next toolbar } + I := GetNextToolbar(True, R, DragIndex); + if I <> -1 then + Inc(PosData[I].PrecSpace, J); + end; + end; + end; + + { If any toolbars are going off the edge of the dock, try to make them + at least partially visible by shifting preceding toolbars left } + I := GetNextToolbar(False, R, NewDockList.Count); + if I <> -1 then + ShiftLeft(R, I, MaxSize); + + { Shrink toolbars that overlap other toolbars (Overlaps[x] > 0) } + if PixelsPastMaxSize > 0 then begin + Offset := 0; + for I := 0 to NewDockList.Count-1 do begin + if PosData[I].Row <> R then + Continue; + T := NewDockList[I]; + if (ToolbarsOnRow > 1) and T.FDragMode then + T.FDragCanSplit := True; + Inc(Offset, PosData[I].Overlap); + if Offset > PixelsPastMaxSize then + Offset := PixelsPastMaxSize; + if Offset > 0 then + for J := I-1 downto 0 do begin + P := @PosData[J]; + if P.Row <> R then + Continue; + { How much can we shrink this toolbar J to get toolbar I to + its preferred position? } + if P.ShrinkMode = tbsmChevron then + L := Offset + else + L := 0; + K := -(P.Size - L - P.MinimumSize); { the number of pixels that exceed the minimum size } + if K > 0 then + { Don't shrink a toolbar below its minimum allowed size } + Dec(L, K); + Dec(P.Size, L); + Dec(PixelsPastMaxSize, L); + Dec(Offset, L); + if (Offset = 0) or + { This is needed so toolbars can push other toolbars to the + right when splitting: } + (J = DragIndex) then + Break; + end; + end; + end; + + { Still exceeding MaxSize? Make sure the rightmost toolbar(s) are + at least partially visible with a width of MinimumSize } + if PixelsPastMaxSize > 0 then begin + for I := NewDockList.Count-1 downto 0 do begin + P := @PosData[I]; + if (P.Row <> R) or (P.ShrinkMode = tbsmNone) or + ((P.ShrinkMode = tbsmWrap) and (ToolbarsOnRow > 1)) then + Continue; + J := P.Size - P.MinimumSize; + if J > 0 then begin { can we shrink this toolbar any? } + if J > PixelsPastMaxSize then + J := PixelsPastMaxSize; + Dec(P.Size, J); + Dec(PixelsPastMaxSize, J); + end; + if PixelsPastMaxSize = 0 then + Break; + end; + end; + + { Set Poses, and adjust size of FullSize & Stretch toolbars } + CurPos := 0; + for I := 0 to NewDockList.Count-1 do begin + P := @PosData[I]; + T := NewDockList[I]; + if P.Row = R then begin + if T.FullSize or T.Stretch then begin + { Remove any preceding space from this toolbar } + Inc(P.Size, P.PrecSpace); + P.PrecSpace := 0; + end; + Inc(CurPos, P.PrecSpace); + if T.FullSize then begin + { Claim all space } + if P.Size < MaxSize then + P.Size := MaxSize; + end + else if T.Stretch then begin + { Steal any preceding space from the next toolbar } + for J := I+1 to NewDockList.Count-1 do + if PosData[J].Row = R then begin + Inc(P.Size, PosData[J].PrecSpace); + PosData[J].PrecSpace := 0; + goto FoundNextToolbar; + end; + { or claim any remaining space } + if P.Size < MaxSize - CurPos then + P.Size := MaxSize - CurPos; + FoundNextToolbar: + end; + P.Pos := CurPos; + Inc(CurPos, P.Size); + end; + end; + + Inc(R); + end; + + for I := 0 to NewDockList.Count-1 do begin + T := NewDockList[I]; + T.FEffectiveDockRow := PosData[I].ActualRow; + T.FEffectiveDockPos := PosData[I].Pos; + { If FCommitNewPositions is True, update all the toolbars' DockPos and + DockRow properties to match the actual positions. + Also update the ordering of DockList to match NewDockList } + if FCommitNewPositions then begin + T.FDockRow := T.FEffectiveDockRow; + T.FDockPos := T.FEffectiveDockPos; + DockList[I] := NewDockList[I]; + end; + end; + + { Now actually move the toolbars } + CurRowPixel := 0; + for R := 0 to HighestRow do begin + CurRowSize := 0; + for I := 0 to NewDockList.Count-1 do begin + P := @PosData[I]; + T := NewDockList[I]; + if P.Row = R then begin + K := T.FCurrentSize; + T.FCurrentSize := P.Size; + if P.Size >= P.FullSize then begin + T.FCurrentSize := 0; + { Reason: so that if new items are added to a non-shrunk toolbar + at run-time (causing its width to increase), the toolbar won't + shrink unnecessarily } + end; + if (P.ShrinkMode <> tbsmNone) and (T.FCurrentSize <> K) then begin + { If Size is changing and we are to display a chevron or wrap, + call DoArrange to get an accurate row size } + S := T.DoArrange(False, TBGetDockTypeOf(Self, False), False, Self); + { Force a rearrange in case the actual size isn't changing but the + chevron visibility might have changed (which can happen if + items are added to a FullSize=True toolbar at run-time) } + P.NeedArrange := True; + end + else begin + if (P.ShrinkMode = tbsmWrap) and (P.Size < P.FullSize) then begin + { Preserve existing height (or width) on a wrapped toolbar + whose size isn't changing now } + S.X := T.Width - T.NonClientWidth; + S.Y := T.Height - T.NonClientHeight; + end + else + T.GetBaseSize(S); + end; + if not LeftRight then + K := S.Y + else + K := S.X; + T.FLastRowSize := K; + if K > CurRowSize then + CurRowSize := K; + end; + end; + if CurRowSize <> 0 then + Inc(CurRowSize, DockedBorderSize2); + for I := 0 to NewDockList.Count-1 do begin + P := @PosData[I]; + T := NewDockList[I]; + if P.Row = R then begin + Inc(T.FUpdatingBounds); + try + K := T.FCurrentSize; + if P.NeedArrange then + T.FArrangeNeeded := True; + if not LeftRight then + T.SetBounds(P.Pos, CurRowPixel, P.Size, CurRowSize) + else + T.SetBounds(CurRowPixel, P.Pos, CurRowSize, P.Size); + if T.FArrangeNeeded then + { ^ don't arrange again if SetBounds call already caused one } + T.Arrange; + { Restore FCurrentSize since TTBToolbarView.DoUpdatePositions + clears it } + T.FCurrentSize := K; + finally + Dec(T.FUpdatingBounds); + end; + end; + end; + Inc(CurRowPixel, CurRowSize); + end; + + { Set the size of the dock } + if not LeftRight then + ChangeWidthHeight(Width, CurRowPixel + FNonClientHeight) + else + ChangeWidthHeight(CurRowPixel + FNonClientWidth, Height); + finally + Dec(FDisableArrangeToolbars); + FArrangeToolbarsNeeded := False; + FCommitNewPositions := False; + FreeMem(PosData); + NewDockList.Free; + end; +end; + +procedure TTBDock.CommitPositions; +{ Copies docked toolbars' EffectiveDockRow and EffectiveDockPos properties + into DockRow and DockPos respectively. + Note that this does not reorder DockList like ArrangeToolbars does when + FCommitNewPositions=True. } +var + I: Integer; + T: TTBCustomDockableWindow; +begin + for I := 0 to DockVisibleList.Count-1 do begin + T := DockVisibleList[I]; + T.FDockRow := T.FEffectiveDockRow; + T.FDockPos := T.FEffectiveDockPos; + end; +end; + +procedure TTBDock.ChangeDockList(const Insert: Boolean; + const Bar: TTBCustomDockableWindow); +{ Inserts or removes Bar from DockList } +var + I: Integer; +begin + I := DockList.IndexOf(Bar); + if Insert then begin + if I = -1 then begin + Bar.FreeNotification(Self); + DockList.Add(Bar); + end; + end + else begin + if I <> -1 then + DockList.Delete(I); + end; + ToolbarVisibilityChanged(Bar, False); +end; + +procedure TTBDock.ToolbarVisibilityChanged(const Bar: TTBCustomDockableWindow; + const ForceRemove: Boolean); +var + Modified, VisibleOnDock: Boolean; + I: Integer; +begin + Modified := False; + I := DockVisibleList.IndexOf(Bar); + VisibleOnDock := not ForceRemove and ToolbarVisibleOnDock(Bar); + if VisibleOnDock then begin + if I = -1 then begin + DockVisibleList.Add(Bar); + Modified := True; + end; + end + else begin + if I <> -1 then begin + DockVisibleList.Remove(Bar); + Modified := True; + end; + end; + + if Modified then begin + ArrangeToolbars; + + if Assigned(FOnInsertRemoveBar) then + FOnInsertRemoveBar(Self, VisibleOnDock, Bar); + end; +end; + +procedure TTBDock.Loaded; +begin + inherited; + { Rearranging is disabled while the component is loading, so now that it's + loaded, rearrange it. } + ArrangeToolbars; +end; + +procedure TTBDock.Notification(AComponent: TComponent; Operation: TOperation); +begin + inherited; + if Operation = opRemove then begin + if AComponent = FBackground then + Background := nil + else if AComponent is TTBCustomDockableWindow then begin + DockList.Remove(AComponent); + DockVisibleList.Remove(AComponent); + end; + end; +end; + +function TTBDock.GetPalette: HPALETTE; +begin + if UsingBackground and Assigned(FBackground) then + { ^ by default UsingBackground returns False if FBackground isn't assigned, + but UsingBackground may be overridden and return True when it isn't } + Result := FBackground.GetPalette + else + Result := 0; +end; + +procedure TTBDock.WMEraseBkgnd(var Message: TWMEraseBkgnd); +var + R, R2: TRect; + P1, P2: TPoint; + SaveIndex: Integer; +begin + { Draw the Background if there is one, otherwise use default erasing + behavior } + if UsingBackground then begin + R := ClientRect; + R2 := R; + { Make up for nonclient area } + P1 := ClientToScreen(Point(0, 0)); + P2 := Parent.ClientToScreen(BoundsRect.TopLeft); + Dec(R2.Left, Left + (P1.X-P2.X)); + Dec(R2.Top, Top + (P1.Y-P2.Y)); + SaveIndex := SaveDC(Message.DC); + IntersectClipRect(Message.DC, R.Left, R.Top, R.Right, R.Bottom); + DrawBackground(Message.DC, R2); + RestoreDC(Message.DC, SaveIndex); + Message.Result := 1; + end + else + inherited; +end; + +procedure TTBDock.Paint; +var + R: TRect; +begin + inherited; + { Draw dotted border in design mode } + if csDesigning in ComponentState then begin + R := ClientRect; + with Canvas do begin + Pen.Style := psDot; + Pen.Color := clBtnShadow; + Brush.Style := bsClear; + Rectangle(R.Left, R.Top, R.Right, R.Bottom); + Pen.Style := psSolid; + end; + end; +end; + +procedure TTBDock.WMMove(var Message: TWMMove); +begin + inherited; + if UsingBackground then + InvalidateBackgrounds; +end; + +{$IFNDEF JR_D4} +procedure TTBDock.WMSize(var Message: TWMSize); +begin + inherited; + if not(csLoading in ComponentState) and Assigned(FOnResize) then + FOnResize(Self); +end; +{$ENDIF} + +procedure TTBDock.WMNCCalcSize(var Message: TWMNCCalcSize); +begin + inherited; + { note to self: non-client size is stored in FNonClientWidth & + FNonClientHeight } + with Message.CalcSize_Params^.rgrc[0] do begin + if blTop in BoundLines then Inc(Top); + if blBottom in BoundLines then Dec(Bottom); + if blLeft in BoundLines then Inc(Left); + if blRight in BoundLines then Dec(Right); + end; +end; + +procedure TTBDock.DrawNCArea(const DrawToDC: Boolean; const ADC: HDC; + const Clip: HRGN); + + procedure DrawLine(const DC: HDC; const X1, Y1, X2, Y2: Integer); + begin + MoveToEx(DC, X1, Y1, nil); LineTo(DC, X2, Y2); + end; +var + RW, R, R2, RC: TRect; + DC: HDC; + HighlightPen, ShadowPen, SavePen: HPEN; + FillBrush: HBRUSH; +label 1; +begin + { This works around WM_NCPAINT problem described at top of source code } + {no! R := Rect(0, 0, Width, Height);} + GetWindowRect(Handle, RW); + R := RW; + OffsetRect(R, -R.Left, -R.Top); + + if not DrawToDC then + DC := GetWindowDC(Handle) + else + DC := ADC; + try + { Use update region } + if not DrawToDC then + SelectNCUpdateRgn(Handle, DC, Clip); + + { Draw BoundLines } + R2 := R; + if (BoundLines <> []) and + ((csDesigning in ComponentState) or HasVisibleToolbars) then begin + HighlightPen := CreatePen(PS_SOLID, 1, GetSysColor(COLOR_BTNHIGHLIGHT)); + ShadowPen := CreatePen(PS_SOLID, 1, GetSysColor(COLOR_BTNSHADOW)); + SavePen := SelectObject(DC, ShadowPen); + if blTop in BoundLines then begin + DrawLine(DC, R.Left, R.Top, R.Right, R.Top); + Inc(R2.Top); + end; + if blLeft in BoundLines then begin + DrawLine(DC, R.Left, R.Top, R.Left, R.Bottom); + Inc(R2.Left); + end; + SelectObject(DC, HighlightPen); + if blBottom in BoundLines then begin + DrawLine(DC, R.Left, R.Bottom-1, R.Right, R.Bottom-1); + Dec(R2.Bottom); + end; + if blRight in BoundLines then begin + DrawLine(DC, R.Right-1, R.Top, R.Right-1, R.Bottom); + Dec(R2.Right); + end; + SelectObject(DC, SavePen); + DeleteObject(ShadowPen); + DeleteObject(HighlightPen); + end; + Windows.GetClientRect(Handle, RC); + if not IsRectEmpty(RC) then begin + { ^ ExcludeClipRect can't be passed rectangles that have (Bottom < Top) or + (Right < Left) since it doesn't treat them as empty } + MapWindowPoints(Handle, 0, RC, 2); + OffsetRect(RC, -RW.Left, -RW.Top); + if EqualRect(RC, R2) then + { Skip FillRect because there would be nothing left after ExcludeClipRect } + goto 1; + ExcludeClipRect(DC, RC.Left, RC.Top, RC.Right, RC.Bottom); + end; + FillBrush := CreateSolidBrush(ColorToRGB(Color)); + FillRect(DC, R2, FillBrush); + DeleteObject(FillBrush); + 1: + finally + if not DrawToDC then + ReleaseDC(Handle, DC); + end; +end; + +procedure TTBDock.WMNCPaint(var Message: TMessage); +begin + DrawNCArea(False, 0, HRGN(Message.WParam)); +end; + +procedure DockNCPaintProc(Wnd: HWND; DC: HDC; AppData: Longint); +begin + TTBDock(AppData).DrawNCArea(True, DC, 0); +end; + +procedure TTBDock.WMPrint(var Message: TMessage); +begin + HandleWMPrint(Handle, Message, DockNCPaintProc, Longint(Self)); +end; + +procedure TTBDock.WMPrintClient(var Message: TMessage); +begin + HandleWMPrintClient(Self, Message); +end; + +procedure TTBDock.CMSysColorChange(var Message: TMessage); +begin + inherited; + if Assigned(FBackground) then + FBackground.SysColorChanged; +end; + +procedure TTBDock.RelayMsgToFloatingBars(var Message: TMessage); +var + I: Integer; + T: TTBCustomDockableWindow; +begin + for I := 0 to DockList.Count-1 do begin + T := DockList[I]; + if (csMenuEvents in T.ControlStyle) and T.Floating and T.Showing and + T.Enabled then begin + Message.Result := T.Perform(Message.Msg, Message.WParam, Message.LParam); + if Message.Result <> 0 then + Exit; + end; + end; +end; + +procedure TTBDock.WMSysCommand(var Message: TWMSysCommand); +begin + { Relay WM_SYSCOMMAND messages to floating toolbars which were formerly + docked. That way, items on floating menu bars can be accessed with Alt. } + RelayMsgToFloatingBars(TMessage(Message)); +end; + +procedure TTBDock.CMDialogKey(var Message: TCMDialogKey); +begin + RelayMsgToFloatingBars(TMessage(Message)); + if Message.Result = 0 then + inherited; +end; + +procedure TTBDock.CMDialogChar(var Message: TCMDialogChar); +begin + RelayMsgToFloatingBars(TMessage(Message)); + if Message.Result = 0 then + inherited; +end; + +{ TTBDock - property access methods } + +procedure TTBDock.SetAllowDrag(Value: Boolean); +var + I: Integer; +begin + if FAllowDrag <> Value then begin + FAllowDrag := Value; + for I := 0 to ControlCount-1 do + if Controls[I] is TTBCustomDockableWindow then + RecalcNCArea(TTBCustomDockableWindow(Controls[I])); + end; +end; + +function TTBDock.UsingBackground: Boolean; +begin + Result := Assigned(FBackground) and FBackground.UsingBackground; +end; + +procedure TTBDock.DrawBackground(DC: HDC; const DrawRect: TRect); +begin + FBackground.Draw(DC, DrawRect); +end; + +procedure TTBDock.InvalidateBackgrounds; +{ Called after background is changed } +var + I: Integer; + T: TTBCustomDockableWindow; +begin + Invalidate; + { Synchronize child toolbars also } + for I := 0 to DockList.Count-1 do begin + T := TTBCustomDockableWindow(DockList[I]); + if ToolbarVisibleOnDock(T) then + { Invalidate both non-client and client area } + InvalidateAll(T); + end; +end; + +procedure TTBDock.SetBackground(Value: TTBBasicBackground); +begin + if FBackground <> Value then begin + if Assigned(FBackground) then + FBackground.UnregisterChanges(BackgroundChanged); + FBackground := Value; + if Assigned(Value) then begin + Value.FreeNotification(Self); + Value.RegisterChanges(BackgroundChanged); + end; + InvalidateBackgrounds; + end; +end; + +procedure TTBDock.BackgroundChanged(Sender: TObject); +begin + InvalidateBackgrounds; +end; + +procedure TTBDock.SetBackgroundOnToolbars(Value: Boolean); +begin + if FBkgOnToolbars <> Value then begin + FBkgOnToolbars := Value; + InvalidateBackgrounds; + end; +end; + +procedure TTBDock.SetBoundLines(Value: TTBDockBoundLines); +var + X, Y: Integer; + B: TTBDockBoundLines; +begin + if FBoundLines <> Value then begin + FBoundLines := Value; + X := 0; + Y := 0; + B := BoundLines; { optimization } + if blTop in B then Inc(Y); + if blBottom in B then Inc(Y); + if blLeft in B then Inc(X); + if blRight in B then Inc(X); + FNonClientWidth := X; + FNonClientHeight := Y; + RecalcNCArea(Self); + end; +end; + +procedure TTBDock.SetFixAlign(Value: Boolean); +begin + if FFixAlign <> Value then begin + FFixAlign := Value; + ArrangeToolbars; + end; +end; + +procedure TTBDock.SetPosition(Value: TTBDockPosition); +begin + if (FPosition <> Value) and (ControlCount <> 0) then + raise EInvalidOperation.Create(STBDockCannotChangePosition); + FPosition := Value; + case Position of + dpTop: Align := alTop; + dpBottom: Align := alBottom; + dpLeft: Align := alLeft; + dpRight: Align := alRight; + end; +end; + +function TTBDock.GetToolbarCount: Integer; +begin + Result := DockVisibleList.Count; +end; + +function TTBDock.GetToolbars(Index: Integer): TTBCustomDockableWindow; +begin + Result := TTBCustomDockableWindow(DockVisibleList[Index]); +end; + +(*function TTBDock.GetVersion: TToolbar97Version; +begin + Result := Toolbar97VersionPropText; +end; + +procedure TTBDock.SetVersion(const Value: TToolbar97Version); +begin + { write method required for the property to show up in Object Inspector } +end;*) + + +{ TTBFloatingWindowParent - Internal } + +constructor TTBFloatingWindowParent.Create(AOwner: TComponent); +begin + { Don't use TForm's Create since it attempts to load a form resource, which + TTBFloatingWindowParent doesn't have. } + CreateNew(AOwner {$IFDEF VER93} , 0 {$ENDIF}); +end; + +destructor TTBFloatingWindowParent.Destroy; +begin + inherited; +end; + +procedure TTBFloatingWindowParent.CreateParams(var Params: TCreateParams); +const + ThickFrames: array[Boolean] of DWORD = (0, WS_THICKFRAME); +begin + inherited; + + { Disable complete redraws when size changes. CS_H/VREDRAW cause flicker + and are not necessary for this control at run time } + if not(csDesigning in ComponentState) then + with Params.WindowClass do + Style := Style and not(CS_HREDRAW or CS_VREDRAW); + + with Params do begin + { Note: WS_THICKFRAME and WS_BORDER styles are included to ensure that + sizing grips are displayed on child controls with scrollbars. The + thick frame or border is not drawn by Windows; TCustomToolWindow97 + handles all border drawing by itself. } + if not(csDesigning in ComponentState) then + Style := WS_POPUP or WS_BORDER or ThickFrames[FDockableWindow.FResizable] + else + Style := Style or WS_BORDER or ThickFrames[FDockableWindow.FResizable]; + { The WS_EX_TOOLWINDOW style is needed so there isn't a taskbar button + for the toolbar when FloatingMode = fmOnTopOfAllForms. } + ExStyle := WS_EX_TOOLWINDOW; + end; +end; + +procedure TTBFloatingWindowParent.AlignControls(AControl: TControl; var Rect: TRect); +begin + { ignore Align setting of the child toolbar } +end; + +procedure TTBFloatingWindowParent.WMGetMinMaxInfo(var Message: TWMGetMinMaxInfo); +begin + inherited; + { Because the window uses the WS_THICKFRAME style (but not for the usual + purpose), it must process the WM_GETMINMAXINFO message to remove the + minimum and maximum size limits it imposes by default. } + with Message.MinMaxInfo^ do begin + with ptMinTrackSize do begin + X := 1; + Y := 1; + { Note to self: Don't put GetMinimumSize code here, since + ClientWidth/Height values are sometimes invalid during a RecreateWnd } + end; + with ptMaxTrackSize do begin + { Because of the 16-bit (signed) size limitations of Windows 95, + Smallints must be used instead of Integers or Longints } + X := High(Smallint); + Y := High(Smallint); + end; + end; +end; + +procedure TTBFloatingWindowParent.CMShowingChanged(var Message: TMessage); +const + ShowFlags: array[Boolean] of UINT = ( + SWP_NOSIZE or SWP_NOMOVE or SWP_NOZORDER or SWP_NOACTIVATE or SWP_HIDEWINDOW, + SWP_NOSIZE or SWP_NOMOVE or SWP_NOZORDER or SWP_NOACTIVATE or SWP_SHOWWINDOW); +begin + { Must override TCustomForm/TForm's CM_SHOWINGCHANGED handler so that the + form doesn't get activated when Visible is set to True. } + SetWindowPos(WindowHandle, 0, 0, 0, 0, 0, ShowFlags[Showing and FShouldShow]); +end; + +procedure TTBFloatingWindowParent.CMDialogKey(var Message: TCMDialogKey); +begin + { If Escape if pressed on a floating toolbar, return focus to the form } + if (Message.CharCode = VK_ESCAPE) and (KeyDataToShiftState(Message.KeyData) = []) and + Assigned(ParentForm) then begin + ParentForm.SetFocus; + Message.Result := 1; + end + else + inherited; +end; + +procedure TTBFloatingWindowParent.CMTextChanged(var Message: TMessage); +begin + inherited; + RedrawNCArea([twrdCaption]); +end; + +function GetCaptionRect(const Control: TTBFloatingWindowParent; + const AdjustForBorder, MinusCloseButton: Boolean): TRect; +begin + Result := Rect(0, 0, Control.ClientWidth, GetSmallCaptionHeight-1); + if MinusCloseButton then + Dec(Result.Right, Result.Bottom); + if AdjustForBorder then + with Control.FDockableWindow.GetFloatingBorderSize do + OffsetRect(Result, X, Y); +end; + +function GetCloseButtonRect(const Control: TTBFloatingWindowParent; + const AdjustForBorder: Boolean): TRect; +begin + Result := GetCaptionRect(Control, AdjustForBorder, False); + Result.Left := Result.Right - (GetSmallCaptionHeight-1); +end; + +procedure TTBFloatingWindowParent.WMNCCalcSize(var Message: TWMNCCalcSize); +var + TL, BR: TPoint; +begin + { Doesn't call inherited since it overrides the normal NC sizes } + Message.Result := 0; + with Message.CalcSize_Params^ do begin + FDockableWindow.GetFloatingNCArea(TL, BR); + with rgrc[0] do begin + Inc(Left, TL.X); + Inc(Top, TL.Y); + Dec(Right, BR.X); + Dec(Bottom, BR.Y); + end; + end; +end; + +procedure TTBFloatingWindowParent.WMNCPaint(var Message: TMessage); +begin + { Don't call inherited because it overrides the default NC painting } + DrawNCArea(False, 0, HRGN(Message.WParam), twrdAll); +end; + +procedure FloatingWindowParentNCPaintProc(Wnd: HWND; DC: HDC; AppData: Longint); +begin + with TTBFloatingWindowParent(AppData) do + DrawNCArea(True, DC, 0, twrdAll); +end; + +procedure TTBFloatingWindowParent.WMPrint(var Message: TMessage); +begin + HandleWMPrint(Handle, Message, FloatingWindowParentNCPaintProc, Longint(Self)); +end; + +procedure TTBFloatingWindowParent.WMPrintClient(var Message: TMessage); +begin + HandleWMPrintClient(Self, Message); +end; + +procedure TTBFloatingWindowParent.WMNCHitTest(var Message: TWMNCHitTest); +var + P: TPoint; + R: TRect; + BorderSize: TPoint; + C: Integer; +begin + inherited; + with Message do begin + P := SmallPointToPoint(Pos); + GetWindowRect(Handle, R); + Dec(P.X, R.Left); Dec(P.Y, R.Top); + if Result <> HTCLIENT then begin + Result := HTNOWHERE; + if FDockableWindow.ShowCaption and PtInRect(GetCaptionRect(Self, True, False), P) then begin + if FDockableWindow.FCloseButton and PtInRect(GetCloseButtonRect(Self, True), P) then + Result := HT_TB2k_Close + else + Result := HT_TB2k_Caption; + end + else + if FDockableWindow.Resizable then begin + BorderSize := FDockableWindow.GetFloatingBorderSize; + if not(tbdsResizeEightCorner in FDockableWindow.FDockableWindowStyles) then begin + if (P.Y >= 0) and (P.Y < BorderSize.Y) then Result := HTTOP else + if (P.Y < Height) and (P.Y >= Height-BorderSize.Y-1) then Result := HTBOTTOM else + if (P.X >= 0) and (P.X < BorderSize.X) then Result := HTLEFT else + if (P.X < Width) and (P.X >= Width-BorderSize.X-1) then Result := HTRIGHT; + end + else begin + C := BorderSize.X + (GetSmallCaptionHeight-1); + if (P.X >= 0) and (P.X < BorderSize.X) then begin + Result := HTLEFT; + if (P.Y < C) then Result := HTTOPLEFT else + if (P.Y >= Height-C) then Result := HTBOTTOMLEFT; + end + else + if (P.X < Width) and (P.X >= Width-BorderSize.X-1) then begin + Result := HTRIGHT; + if (P.Y < C) then Result := HTTOPRIGHT else + if (P.Y >= Height-C) then Result := HTBOTTOMRIGHT; + end + else + if (P.Y >= 0) and (P.Y < BorderSize.Y) then begin + Result := HTTOP; + if (P.X < C) then Result := HTTOPLEFT else + if (P.X >= Width-C) then Result := HTTOPRIGHT; + end + else + if (P.Y < Height) and (P.Y >= Height-BorderSize.Y-1) then begin + Result := HTBOTTOM; + if (P.X < C) then Result := HTBOTTOMLEFT else + if (P.X >= Width-C) then Result := HTBOTTOMRIGHT; + end; + end; + end; + end; + end; +end; + +procedure TTBFloatingWindowParent.SetCloseButtonState(Pushed: Boolean); +begin + if FCloseButtonDown <> Pushed then begin + FCloseButtonDown := Pushed; + RedrawNCArea([twrdCloseButton]); + end; +end; + +procedure TTBFloatingWindowParent.WMNCLButtonDown(var Message: TWMNCLButtonDown); +var + P: TPoint; + R, BR: TRect; +begin + case Message.HitTest of + HT_TB2k_Caption: begin + P := FDockableWindow.ScreenToClient(Point(Message.XCursor, Message.YCursor)); + FDockableWindow.BeginMoving(P.X, P.Y); + end; + HTLEFT..HTBOTTOMRIGHT: + if FDockableWindow.Resizable then + FDockableWindow.BeginSizing(TTBSizeHandle(Message.HitTest - HTLEFT)); + HT_TB2k_Close: begin + GetWindowRect(Handle, R); + BR := GetCloseButtonRect(Self, True); + OffsetRect(BR, R.Left, R.Top); + if CloseButtonLoop(Handle, BR, SetCloseButtonState) then + FDockableWindow.Close; + end; + else + inherited; + end; +end; + +procedure TTBFloatingWindowParent.WMNCLButtonDblClk(var Message: TWMNCLButtonDblClk); +begin + if Message.HitTest = HT_TB2k_Caption then + FDockableWindow.DoubleClick; +end; + +procedure TTBFloatingWindowParent.WMNCRButtonUp(var Message: TWMNCRButtonUp); +begin + FDockableWindow.ShowNCContextMenu(TSmallPoint(TMessage(Message).LParam)); +end; + +procedure TTBFloatingWindowParent.WMClose(var Message: TWMClose); +var + MDIParentForm: TTBCustomForm; +begin + { A floating toolbar does not use WM_CLOSE messages when its close button + is clicked, but Windows still sends a WM_CLOSE message if the user + presses Alt+F4 while one of the toolbar's controls is focused. Inherited + is not called since we do not want Windows' default processing - which + destroys the window. Instead, relay the message to the parent form. } + MDIParentForm := GetMDIParent(TBGetToolWindowParentForm(FDockableWindow)); + if Assigned(MDIParentForm) and MDIParentForm.HandleAllocated then + SendMessage(MDIParentForm.Handle, WM_CLOSE, 0, 0); + { Note to self: MDIParentForm is used instead of OwnerForm since MDI + childs don't process Alt+F4 as Close } +end; + +procedure TTBFloatingWindowParent.WMActivate(var Message: TWMActivate); +var + ParentForm: TTBCustomForm; +begin + if csDesigning in ComponentState then begin + inherited; + Exit; + end; + + ParentForm := GetMDIParent(TBGetToolWindowParentForm(FDockableWindow)); + + if Assigned(ParentForm) and ParentForm.HandleAllocated then + SendMessage(ParentForm.Handle, WM_NCACTIVATE, Ord(Message.Active <> WA_INACTIVE), 0); + + if Message.Active <> WA_INACTIVE then begin + { This works around a "gotcha" in TCustomForm.CMShowingChanged. When a form + is hidden, it uses the internal VCL function FindTopMostWindow to + find a new active window. The problem is that handles of floating + toolbars on the form being hidden can be returned by + FindTopMostWindow, so the following code is used to prevent floating + toolbars on the hidden form from being left active. } + if not IsWindowVisible(Handle) then + { ^ Calling IsWindowVisible with a floating toolbar handle will + always return False if its parent form is hidden since the + WH_CALLWNDPROC hook automatically updates the toolbars' + visibility. } + { Find and activate a window besides this toolbar } + SetActiveWindow(FindTopLevelWindow(Handle)) + else + { If the toolbar is being activated and the previous active window wasn't + its parent form, the form is activated instead. This is done so that if + the application is deactivated while a floating toolbar was active and + the application is reactivated again, it returns focus to the form. } + if Assigned(ParentForm) and ParentForm.HandleAllocated and + (Message.ActiveWindow <> ParentForm.Handle) then + SetActiveWindow(ParentForm.Handle); + end; +end; + +procedure TTBFloatingWindowParent.WMMouseActivate(var Message: TWMMouseActivate); +var + ParentForm, MDIParentForm: TTBCustomForm; +begin + if csDesigning in ComponentState then begin + inherited; + Exit; + end; + + { When floating, prevent the toolbar from activating when clicked. + This is so it doesn't take the focus away from the window that had it } + Message.Result := MA_NOACTIVATE; + + { Similar to calling BringWindowToTop, but doesn't activate it } + SetWindowPos(Handle, HWND_TOP, 0, 0, 0, 0, + SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); + + { Since it is returning MA_NOACTIVATE, activate the form instead. } + ParentForm := TBGetToolWindowParentForm(FDockableWindow); + MDIParentForm := GetMDIParent(ParentForm); + if (FDockableWindow.FFloatingMode = fmOnTopOfParentForm) and + FDockableWindow.FActivateParent and + Assigned(MDIParentForm) and (GetActiveWindow <> Handle) then begin + { ^ Note to self: The GetActiveWindow check must be in there so that + double-clicks work properly on controls like Edits } + if MDIParentForm.HandleAllocated then + SetActiveWindow(MDIParentForm.Handle); + if (MDIParentForm <> ParentForm) and { if it's an MDI child form } + ParentForm.HandleAllocated then + BringWindowToTop(ParentForm.Handle); + end; +end; + +procedure TTBFloatingWindowParent.WMMove(var Message: TWMMove); +begin + inherited; + FDockableWindow.Moved; +end; + +procedure TTBFloatingWindowParent.DrawNCArea(const DrawToDC: Boolean; + const ADC: HDC; const Clip: HRGN; RedrawWhat: TTBToolWindowNCRedrawWhat); +{ Redraws all the non-client area (the border, title bar, and close button) of + the toolbar when it is floating. } +const + COLOR_GRADIENTACTIVECAPTION = 27; + COLOR_GRADIENTINACTIVECAPTION = 28; + CaptionBkColors: array[Boolean, Boolean] of Integer = + ((COLOR_ACTIVECAPTION, COLOR_INACTIVECAPTION), + (COLOR_GRADIENTACTIVECAPTION, COLOR_GRADIENTINACTIVECAPTION)); + CaptionTextColors: array[Boolean] of Integer = + (COLOR_CAPTIONTEXT, COLOR_INACTIVECAPTIONTEXT); + + function GradientCaptionsEnabled: Boolean; + const + SPI_GETGRADIENTCAPTIONS = $1008; { Win98/NT5 only } + var + S: BOOL; + begin + Result := SystemParametersInfo(SPI_GETGRADIENTCAPTIONS, 0, @S, 0) and S; + end; + +const + CloseButtonState: array[Boolean] of UINT = (0, DFCS_PUSHED); + ActiveCaptionFlags: array[Boolean] of UINT = (DC_ACTIVE, 0); + DC_GRADIENT = $20; + GradientCaptionFlags: array[Boolean] of UINT = (0, DC_GRADIENT); +var + DC: HDC; + R, R2: TRect; + Gradient: Boolean; + SavePen: HPEN; + SaveIndex: Integer; + S: TPoint; +begin + if not HandleAllocated then Exit; + + if not DrawToDC then + DC := GetWindowDC(Handle) + else + DC := ADC; + try + { Use update region } + if not DrawToDC then + SelectNCUpdateRgn(Handle, DC, Clip); + + { Work around an apparent NT 4.0 & 2000 bug. If the width of the DC is + greater than the width of the screen, then any call to ExcludeClipRect + inexplicably shrinks the clipping rectangle to the screen width. I've + found that calling IntersectClipRect as done below magically fixes the + problem (but I'm not sure why). } + GetWindowRect(Handle, R); OffsetRect(R, -R.Left, -R.Top); + IntersectClipRect(DC, R.Left, R.Top, R.Right, R.Bottom); + + Gradient := GradientCaptionsEnabled; + + { Border } + if twrdBorder in RedrawWhat then begin + { This works around WM_NCPAINT problem described at top of source code } + {no! R := Rect(0, 0, Width, Height);} + GetWindowRect(Handle, R); OffsetRect(R, -R.Left, -R.Top); + DrawEdge(DC, R, EDGE_RAISED, BF_RECT); + SaveIndex := SaveDC(DC); + S := FDockableWindow.GetFloatingBorderSize; + with R do + ExcludeClipRect(DC, Left + S.X, Top + S.Y, Right - S.X, Bottom - S.Y); + InflateRect(R, -2, -2); + FillRect(DC, R, GetSysColorBrush(COLOR_BTNFACE)); + RestoreDC(DC, SaveIndex); + end; + + if FDockableWindow.ShowCaption then begin + if (twrdCaption in RedrawWhat) and FDockableWindow.FCloseButton and + (twrdCloseButton in RedrawWhat) then + SaveIndex := SaveDC(DC) + else + SaveIndex := 0; + try + if SaveIndex <> 0 then + with GetCloseButtonRect(Self, True) do + { Reduces flicker } + ExcludeClipRect(DC, Left, Top, Right, Bottom); + + { Caption } + if twrdCaption in RedrawWhat then begin + R := GetCaptionRect(Self, True, FDockableWindow.FCloseButton); + { Note that Delphi's Win32 help for DrawCaption is totally wrong! + I got updated info from www.microsoft.com/msdn/sdk/ } + DrawCaption(Handle, DC, R, DC_TEXT or DC_SMALLCAP or + ActiveCaptionFlags[FDockableWindow.FInactiveCaption] or + GradientCaptionFlags[Gradient]); + + { Line below caption } + R := GetCaptionRect(Self, True, False); + SavePen := SelectObject(DC, CreatePen(PS_SOLID, 1, GetSysColor(COLOR_BTNFACE))); + MoveToEx(DC, R.Left, R.Bottom, nil); + LineTo(DC, R.Right, R.Bottom); + DeleteObject(SelectObject(DC, SavePen)); + end; + finally + if SaveIndex <> 0 then + RestoreDC(DC, SaveIndex); + end; + + { Close button } + if FDockableWindow.FCloseButton then begin + R := GetCloseButtonRect(Self, True); + R2 := R; + InflateRect(R2, 0, -2); + Dec(R2.Right, 2); + if twrdCaption in RedrawWhat then begin + SaveIndex := SaveDC(DC); + ExcludeClipRect(DC, R2.Left, R2.Top, R2.Right, R2.Bottom); + FillRect(DC, R, GetSysColorBrush(CaptionBkColors[Gradient, + FDockableWindow.FInactiveCaption])); + RestoreDC(DC, SaveIndex); + end; + if twrdCloseButton in RedrawWhat then + DrawFrameControl(DC, R2, DFC_CAPTION, DFCS_CAPTIONCLOSE or + CloseButtonState[FCloseButtonDown]); + end; + end; + finally + if not DrawToDC then + ReleaseDC(Handle, DC); + end; +end; + +procedure TTBFloatingWindowParent.RedrawNCArea(const RedrawWhat: TTBToolWindowNCRedrawWhat); +begin + { Note: IsWindowVisible is called as an optimization. There's no need to + draw on invisible windows. } + if HandleAllocated and IsWindowVisible(Handle) then + DrawNCArea(False, 0, 0, RedrawWhat); +end; + + +{ TTBCustomDockableWindow } + +constructor TTBCustomDockableWindow.Create(AOwner: TComponent); +begin + inherited; + + ControlStyle := ControlStyle + + [csAcceptsControls, csClickEvents, csDoubleClicks, csSetCaption] - + [csCaptureMouse{capturing is done manually}, csOpaque]; + FAutoResize := True; + FActivateParent := True; + FBorderStyle := bsSingle; + FCloseButton := True; + FDockableTo := [dpTop, dpBottom, dpLeft, dpRight]; + FDockableWindowStyles := [tbdsResizeEightCorner, tbdsResizeClipCursor]; + FDockPos := -1; + FDragHandleStyle := dhSingle; + FEffectiveDockRow := -1; + FHideWhenInactive := True; + FResizable := True; + FShowCaption := True; + FSmoothDrag := True; + FUseLastDock := True; + + Color := clBtnFace; + + if not(csDesigning in ComponentState) then + InstallHookProc(Self, ToolbarHookProc, [hpSendActivate, hpSendActivateApp, + hpSendWindowPosChanged, hpPreDestroy]); + InitTrackMouseEvent; +end; + +destructor TTBCustomDockableWindow.Destroy; +begin + inherited; + FDockForms.Free; { must be done after 'inherited' because Notification accesses FDockForms } + FFloatParent.Free; + UninstallHookProc(Self, ToolbarHookProc); +end; + +function TTBCustomDockableWindow.HasParent: Boolean; +begin + if Parent is TTBFloatingWindowParent then + Result := False + else + Result := inherited HasParent; +end; + +function TTBCustomDockableWindow.GetParentComponent: TComponent; +begin + if Parent is TTBFloatingWindowParent then + Result := nil + else + Result := inherited GetParentComponent; +end; + +procedure TTBCustomDockableWindow.Moved; +begin + if not(csLoading in ComponentState) and Assigned(FOnMove) and (FDisableOnMove <= 0) then + FOnMove(Self); +end; + +procedure TTBCustomDockableWindow.WMMove(var Message: TWMMove); + + procedure Redraw; + { Redraws the control using an off-screen bitmap to avoid flicker } + var + CR, R: TRect; + W: HWND; + DC, BmpDC: HDC; + Bmp: HBITMAP; + begin + if not HandleAllocated then Exit; + CR := ClientRect; + W := Handle; + if GetUpdateRect(W, R, False) and EqualRect(R, CR) then begin + { The client area is already completely invalid, so don't bother using + an off-screen bitmap } + InvalidateAll(Self); + Exit; + end; + BmpDC := 0; + Bmp := 0; + DC := GetDC(W); + try + BmpDC := CreateCompatibleDC(DC); + Bmp := CreateCompatibleBitmap(DC, CR.Right, CR.Bottom); + SelectObject(BmpDC, Bmp); + SendMessage(W, WM_NCPAINT, 0, 0); + SendMessage(W, WM_ERASEBKGND, WPARAM(BmpDC), 0); + SendMessage(W, WM_PAINT, WPARAM(BmpDC), 0); + BitBlt(DC, 0, 0, CR.Right, CR.Bottom, BmpDC, 0, 0, SRCCOPY); + finally + if BmpDC <> 0 then DeleteDC(BmpDC); + if Bmp <> 0 then DeleteObject(Bmp); + ReleaseDC(W, DC); + end; + ValidateRect(W, nil); + end; + +begin + inherited; + FMoved := True; + if Docked and CurrentDock.UsingBackground then begin + { Needs to redraw so that the background is lined up with the dock at the + new position. } + Redraw; + end; + Moved; +end; + +{$IFNDEF JR_D4} +procedure TTBCustomDockableWindow.WMSize(var Message: TWMSize); +begin + inherited; + if not(csLoading in ComponentState) and Assigned(FOnResize) then + FOnResize(Self); +end; +{$ENDIF} + +procedure TTBCustomDockableWindow.WMEnable(var Message: TWMEnable); +begin + inherited; + { When a modal dialog is displayed and the toolbar window gets disabled as + a result, remove its topmost flag. } + if FFloatingMode = fmOnTopOfAllForms then + UpdateTopmostFlag; +end; + +procedure TTBCustomDockableWindow.UpdateCaptionState; +{ Updates the caption active/inactive state of a floating tool window. + Called when the tool window is visible or is about to be shown. } + + function IsPopupWindowActive: Boolean; + const + IID_ITBPopupWindow: TGUID = '{E45CBE74-1ECF-44CB-B064-6D45B1924708}'; + var + Ctl: TWinControl; + begin + Ctl := FindControl(GetActiveWindow); + { Instead of using "is TTBPopupWindow", which would require linking to the + TB2Item unit, check if the control implements the ITBPopupWindow + interface. This will tell us if it's a TTBPopupWindow or descendant. } + Result := Assigned(Ctl) and Assigned(Ctl.GetInterfaceEntry(IID_ITBPopupWindow)); + end; + + function GetActiveFormWindow: HWND; + var + Ctl: TWinControl; + begin + Result := GetActiveWindow; + { If the active window is a TTBFloatingWindowParent (i.e. a control on a + floating toolbar is focused), return the parent form handle instead } + Ctl := FindControl(Result); + if Assigned(Ctl) and (Ctl is TTBFloatingWindowParent) then begin + Ctl := TTBFloatingWindowParent(Ctl).ParentForm; + if Assigned(Ctl) and Ctl.HandleAllocated then + Result := Ctl.Handle; + end; + end; + +var + Inactive: Boolean; + ActiveWnd: HWND; +begin + { Update caption state if floating, but not if a control on a popup window + (e.g. a TTBEditItem) is currently focused; we don't want the captions on + all floating toolbars to turn gray in that case. (The caption state will + get updated when we're called the next time the active window changes, + i.e. when the user dismisses the popup window.) } + if (Parent is TTBFloatingWindowParent) and Parent.HandleAllocated and + not IsPopupWindowActive then begin + Inactive := False; + if not ApplicationIsActive then + Inactive := True + else if (FFloatingMode = fmOnTopOfParentForm) and + (HWND(GetWindowLong(Parent.Handle, GWL_HWNDPARENT)) <> Application.Handle) then begin + { Use inactive caption if the active window doesn't own the float parent + (directly or indirectly). Note: For compatibility with browser-embedded + TActiveForms, we use IsAncestorOfWindow instead of checking + TBGetToolWindowParentForm. } + ActiveWnd := GetActiveFormWindow; + if (ActiveWnd = 0) or not IsAncestorOfWindow(ActiveWnd, Parent.Handle) then + Inactive := True; + end; + if FInactiveCaption <> Inactive then begin + FInactiveCaption := Inactive; + TTBFloatingWindowParent(Parent).RedrawNCArea(twrdAll); + end; + end; +end; + +function TTBCustomDockableWindow.GetShowingState: Boolean; + + function IsWindowVisibleAndNotMinimized(Wnd: HWND): Boolean; + begin + Result := IsWindowVisible(Wnd); + if Result then begin + { Wnd may not be a top-level window (e.g. in the case of an MDI child + form, or an ActiveForm embedded in a web page), so go up the chain of + parent windows and see if any of them are minimized } + repeat + if IsIconic(Wnd) then begin + Result := False; + Break; + end; + { Stop if we're at a top-level window (no need to check owner windows) } + if GetWindowLong(Wnd, GWL_STYLE) and WS_CHILD = 0 then + Break; + Wnd := GetParent(Wnd); + until Wnd = 0; + end; + end; + +var + HideFloatingToolbars: Boolean; + ParentForm: TTBCustomForm; +begin + Result := Showing and (FHidden = 0); + if Floating and not(csDesigning in ComponentState) then begin + HideFloatingToolbars := FFloatingMode = fmOnTopOfParentForm; + if HideFloatingToolbars then begin + ParentForm := TBGetToolWindowParentForm(Self); + if Assigned(ParentForm) and ParentForm.HandleAllocated and + IsWindowVisibleAndNotMinimized(ParentForm.Handle) then + HideFloatingToolbars := False; + end; + Result := Result and not (HideFloatingToolbars or (FHideWhenInactive and not ApplicationIsActive)); + end; +end; + +procedure TTBCustomDockableWindow.UpdateVisibility; +{ Updates the visibility of the tool window, and additionally the caption + state if floating and showing } +var + IsVisible: Boolean; +begin + if HandleAllocated then begin + IsVisible := IsWindowVisible(Handle); + if IsVisible <> GetShowingState then begin + Perform(CM_SHOWINGCHANGED, 0, 0); + { Note: CMShowingChanged will call UpdateCaptionState automatically + when floating and showing } + end + else if IsVisible and Floating then begin + { If we're floating and we didn't send the CM_SHOWINGCHANGED message + then we have to call UpdateCaptionState manually } + UpdateCaptionState; + end; + end; +end; + +function IsTopmost(const Wnd: HWND): Boolean; +begin + Result := GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOPMOST <> 0; +end; + +procedure TTBCustomDockableWindow.UpdateTopmostFlag; +const + Wnds: array[Boolean] of HWND = (HWND_NOTOPMOST, HWND_TOPMOST); +var + ShouldBeTopmost: Boolean; +begin + if HandleAllocated then begin + if FFloatingMode = fmOnTopOfAllForms then + ShouldBeTopmost := IsWindowEnabled(Handle) + else + ShouldBeTopmost := IsTopmost(HWND(GetWindowLong(Parent.Handle, GWL_HWNDPARENT))); + if ShouldBeTopmost <> IsTopmost(Parent.Handle) then + { ^ it must check if it already was topmost or non-topmost or else + it causes problems on Win95/98 for some reason } + SetWindowPos(Parent.Handle, Wnds[ShouldBeTopmost], 0, 0, 0, 0, + SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); + end; +end; + +procedure TTBCustomDockableWindow.CMShowingChanged(var Message: TMessage); + + function GetPrevWnd(W: HWND): HWND; + var + WasTopmost, Done: Boolean; + ParentWnd: HWND; + begin + WasTopmost := IsTopmost(Parent.Handle); + Result := W; + repeat + Done := True; + Result := GetWindow(Result, GW_HWNDPREV); + ParentWnd := Result; + while ParentWnd <> 0 do begin + if WasTopmost and not IsTopmost(ParentWnd) then begin + Done := False; + Break; + end; + ParentWnd := HWND(GetWindowLong(ParentWnd, GWL_HWNDPARENT)); + if ParentWnd = W then begin + Done := False; + Break; + end; + end; + until Done; + end; + +const + ShowFlags: array[Boolean] of UINT = ( + SWP_NOSIZE or SWP_NOMOVE or SWP_NOZORDER or SWP_NOACTIVATE or SWP_HIDEWINDOW, + SWP_NOSIZE or SWP_NOMOVE or SWP_NOZORDER or SWP_NOACTIVATE or SWP_SHOWWINDOW); +var + Show: Boolean; + Form: TTBCustomForm; +begin + { inherited isn't called since TTBCustomDockableWindow handles CM_SHOWINGCHANGED + itself. For reference, the original TWinControl implementation is: + const + ShowFlags: array[Boolean] of Word = ( + SWP_NOSIZE + SWP_NOMOVE + SWP_NOZORDER + SWP_NOACTIVATE + SWP_HIDEWINDOW, + SWP_NOSIZE + SWP_NOMOVE + SWP_NOZORDER + SWP_NOACTIVATE + SWP_SHOWWINDOW); + begin + SetWindowPos(FHandle, 0, 0, 0, 0, 0, ShowFlags[FShowing]); + end; + } + if HandleAllocated then begin + Show := GetShowingState; + if Parent is TTBFloatingWindowParent then begin + if Show then begin + { If the toolbar is floating, set its "owner window" to the parent form + so that the toolbar window always stays on top of the form } + if FFloatingMode = fmOnTopOfParentForm then begin + Form := GetMDIParent(TBGetToolWindowParentForm(Self)); + if Assigned(Form) and Form.HandleAllocated and + (HWND(GetWindowLong(Parent.Handle, GWL_HWNDPARENT)) <> Form.Handle) then begin + SetWindowLong(Parent.Handle, GWL_HWNDPARENT, Longint(Form.Handle)); + { Following is necessarily to make it immediately realize the + GWL_HWNDPARENT change } + SetWindowPos(Parent.Handle, GetPrevWnd(Form.Handle), 0, 0, 0, 0, SWP_NOACTIVATE or + SWP_NOMOVE or SWP_NOSIZE); + end; + end + else begin + SetWindowLong(Parent.Handle, GWL_HWNDPARENT, Longint(Application.Handle)); + end; + { Initialize caption state after setting owner but before showing } + UpdateCaptionState; + end; + UpdateTopmostFlag; + { Show/hide the TTBFloatingWindowParent. The following lines had to be + added to fix a problem that was in 1.65d/e. In 1.65d/e, it always + kept TTBFloatingWindowParent visible (this change was made to improve + compatibility with D4's Actions), but this for some odd reason would + cause a Stack Overflow error if the program's main form was closed + while a floating toolwindow was focused. (This problem did not occur + on NT.) } + TTBFloatingWindowParent(Parent).FShouldShow := Show; + Parent.Perform(CM_SHOWINGCHANGED, 0, 0); + end; + SetWindowPos(Handle, 0, 0, 0, 0, 0, ShowFlags[Show]); + if not Show and (GetActiveWindow = Handle) then + { If the window is hidden but is still active, find and activate a + different window } + SetActiveWindow(FindTopLevelWindow(Handle)); + end; +end; + +procedure TTBCustomDockableWindow.CreateParams(var Params: TCreateParams); +begin + inherited; + + { Disable complete redraws when size changes. CS_H/VREDRAW cause flicker + and are not necessary for this control at run time } + if not(csDesigning in ComponentState) then + with Params.WindowClass do + Style := Style and not(CS_HREDRAW or CS_VREDRAW); +end; + +procedure TTBCustomDockableWindow.Notification(AComponent: TComponent; Operation: TOperation); +begin + inherited; + if Operation = opRemove then begin + if AComponent = FDefaultDock then + FDefaultDock := nil + else + if AComponent = FLastDock then + FLastDock := nil + else begin + RemoveFromList(FDockForms, AComponent); + if Assigned(FFloatParent) and (csDestroying in FFloatParent.ComponentState) and + (AComponent = FFloatParent.FParentForm) then begin + { ^ Note: Must check csDestroying so that we are sure that FFloatParent + is actually being destroyed and not just being removed from its + Owner's component list } + if Parent = FFloatParent then begin + if FFloatingMode = fmOnTopOfParentForm then + Parent := nil + else + FFloatParent.FParentForm := nil; + end + else begin + FFloatParent.Free; + FFloatParent := nil; + end; + end; + end; + end; +end; + +procedure TTBCustomDockableWindow.MoveOnScreen(const OnlyIfFullyOffscreen: Boolean); +{ Moves the (floating) toolbar so that it is fully (or at least mostly) in + view on the screen } +var + R, S, Test: TRect; +begin + if Floating then begin + R := Parent.BoundsRect; + S := GetRectOfMonitorContainingRect(R, True); + + if OnlyIfFullyOffscreen and IntersectRect(Test, R, S) then + Exit; + + if R.Right > S.Right then + OffsetRect(R, S.Right - R.Right, 0); + if R.Bottom > S.Bottom then + OffsetRect(R, 0, S.Bottom - R.Bottom); + if R.Left < S.Left then + OffsetRect(R, S.Left - R.Left, 0); + if R.Top < S.Top then + OffsetRect(R, 0, S.Top - R.Top); + Parent.BoundsRect := R; + end; +end; + +procedure TTBCustomDockableWindow.ReadPositionData(const Data: TTBReadPositionData); +begin +end; + +procedure TTBCustomDockableWindow.DoneReadingPositionData(const Data: TTBReadPositionData); +begin +end; + +procedure TTBCustomDockableWindow.WritePositionData(const Data: TTBWritePositionData); +begin +end; + +procedure TTBCustomDockableWindow.InitializeOrdering; +begin +end; + +procedure TTBCustomDockableWindow.SizeChanging(const AWidth, AHeight: Integer); +begin +end; + +procedure TTBCustomDockableWindow.ReadSavedAtRunTime(Reader: TReader); +begin + FSavedAtRunTime := Reader.ReadBoolean; +end; + +procedure TTBCustomDockableWindow.WriteSavedAtRunTime(Writer: TWriter); +begin + { WriteSavedAtRunTime only called when not(csDesigning in ComponentState) } + Writer.WriteBoolean(True); +end; + +procedure TTBCustomDockableWindow.DefineProperties(Filer: TFiler); +begin + inherited; + Filer.DefineProperty('SavedAtRunTime', ReadSavedAtRunTime, + WriteSavedAtRunTime, not(csDesigning in ComponentState)); +end; + +procedure TTBCustomDockableWindow.Loaded; +var + R: TRect; +begin + inherited; + { Adjust coordinates if it was initially floating } + if not FSavedAtRunTime and not(csDesigning in ComponentState) and + (Parent is TTBFloatingWindowParent) then begin + R := BoundsRect; + MapWindowPoints(TBValidToolWindowParentForm(Self).Handle, 0, R, 2); + BoundsRect := R; + MoveOnScreen(False); + end; + InitializeOrdering; + { Arranging is disabled while component was loading, so arrange now } + Arrange; +end; + +procedure TTBCustomDockableWindow.BeginUpdate; +begin + Inc(FDisableArrange); +end; + +procedure TTBCustomDockableWindow.EndUpdate; +begin + Dec(FDisableArrange); + if FArrangeNeeded and (FDisableArrange = 0) then + Arrange; +end; + +procedure TTBCustomDockableWindow.AddDockForm(const Form: TTBCustomForm); +begin + if Form = nil then Exit; + if AddToList(FDockForms, Form) then + Form.FreeNotification(Self); +end; + +procedure TTBCustomDockableWindow.RemoveDockForm(const Form: TTBCustomForm); +begin + RemoveFromList(FDockForms, Form); +end; + +function TTBCustomDockableWindow.IsAutoResized: Boolean; +begin + Result := AutoResize or Assigned(CurrentDock) or Floating; +end; + +procedure TTBCustomDockableWindow.ChangeSize(AWidth, AHeight: Integer); +var + S: TPoint; +begin + if Docked then + CurrentDock.ArrangeToolbars + else begin + S := CalcNCSizes; + Inc(AWidth, S.X); + Inc(AHeight, S.Y); + { Leave the width and/or height alone if the control is Anchored + (or Aligned) } + if not Floating then begin + if (akLeft in Anchors) and (akRight in Anchors) then + AWidth := Width; + if (akTop in Anchors) and (akBottom in Anchors) then + AHeight := Height; + end; + Inc(FUpdatingBounds); + try + SetBounds(Left, Top, AWidth, AHeight); + finally + Dec(FUpdatingBounds); + end; + end; +end; + +procedure TTBCustomDockableWindow.Arrange; +var + Size: TPoint; +begin + if (FDisableArrange > 0) or + { Prevent flicker while loading } + (csLoading in ComponentState) or + { Don't call DoArrangeControls when Parent is nil. The VCL sets Parent to + 'nil' during destruction of a component; we can't have an OrderControls + call after a descendant control has freed its data. } + (Parent = nil) then begin + FArrangeNeeded := True; + Exit; + end; + + FArrangeNeeded := False; + + Size := DoArrange(True, TBGetDockTypeOf(CurrentDock, Floating), Floating, + CurrentDock); + if IsAutoResized then + ChangeSize(Size.X, Size.Y); +end; + +procedure TTBCustomDockableWindow.SetBounds(ALeft, ATop, AWidth, AHeight: Integer); +begin + if not(csDesigning in ComponentState) and Floating then begin + { Force Top & Left to 0 if floating } + ALeft := 0; + ATop := 0; + if Parent is TTBFloatingWindowParent then + with Parent do + SetBounds(Left, Top, (Width-ClientWidth) + AWidth, + (Height-ClientHeight) + AHeight); + end; + if (FUpdatingBounds = 0) and ((AWidth <> Width) or (AHeight <> Height)) then + SizeChanging(AWidth, AHeight); + { This allows you to drag the toolbar around the dock at design time } + if (csDesigning in ComponentState) and not(csLoading in ComponentState) and + Docked and (FUpdatingBounds = 0) and ((ALeft <> Left) or (ATop <> Top)) then begin + if not(CurrentDock.Position in PositionLeftOrRight) then begin + FDockRow := CurrentDock.GetDesignModeRowOf(ATop+(Height div 2)); + FDockPos := ALeft; + end + else begin + FDockRow := CurrentDock.GetDesignModeRowOf(ALeft+(Width div 2)); + FDockPos := ATop; + end; + inherited SetBounds(Left, Top, AWidth, AHeight); { only pass any size changes } + CurrentDock.ArrangeToolbars; { let ArrangeToolbars take care of position changes } + end + else begin + inherited; + {if not(csLoading in ComponentState) and Floating and (FUpdatingBounds = 0) then + FFloatingPosition := BoundsRect.TopLeft;} + end; +end; + +procedure TTBCustomDockableWindow.SetParent(AParent: TWinControl); + procedure UpdateFloatingToolWindows; + begin + if Parent is TTBFloatingWindowParent then begin + AddToList(FloatingToolWindows, Self); + Parent.SetBounds(FFloatingPosition.X, FFloatingPosition.Y, + Parent.Width, Parent.Height); + end + else + RemoveFromList(FloatingToolWindows, Self); + end; + function ParentToCurrentDock(const Ctl: TWinControl): TTBDock; + begin + if Ctl is TTBDock then + Result := TTBDock(Ctl) + else + Result := nil; + end; +var + OldCurrentDock, NewCurrentDock: TTBDock; + NewFloating: Boolean; + OldParent: TWinControl; + SaveHandle: HWND; +begin + OldCurrentDock := ParentToCurrentDock(Parent); + NewCurrentDock := ParentToCurrentDock(AParent); + NewFloating := AParent is TTBFloatingWindowParent; + + if AParent = Parent then begin + { Even though AParent is the same as the current Parent, this code is + necessary because when the VCL destroys the parent of the tool window, + it calls TWinControl.Remove to set FParent instead of using SetParent. + However TControl.Destroy does call SetParent(nil), so it is + eventually notified of the change before it is destroyed. } + FCurrentDock := NewCurrentDock; + FFloating := NewFloating; + FDocked := Assigned(FCurrentDock); + UpdateFloatingToolWindows; + end + else begin + if not(csDestroying in ComponentState) and Assigned(AParent) then begin + if Assigned(FOnDockChanging) then + FOnDockChanging(Self, NewFloating, NewCurrentDock); + if Assigned(FOnRecreating) then + FOnRecreating(Self); + end; + + { Before changing between docked and floating state (and vice-versa) + or between docks, increment FHidden and call UpdateVisibility to hide the + toolbar. This prevents any flashing while it's being moved } + Inc(FHidden); + Inc(FDisableOnMove); + try + UpdateVisibility; + if Assigned(OldCurrentDock) then + OldCurrentDock.BeginUpdate; + if Assigned(NewCurrentDock) then + NewCurrentDock.BeginUpdate; + Inc(FUpdatingBounds); + try + if Assigned(AParent) then + DoDockChangingHidden(NewFloating, NewCurrentDock); + BeginUpdate; + try + { FCurrentSize probably won't be valid after changing Parents, so + reset it to zero } + FCurrentSize := 0; + + if Parent is TTBDock then begin + if not FUseLastDock or (FLastDock <> Parent) then + TTBDock(Parent).ChangeDockList(False, Self); + TTBDock(Parent).ToolbarVisibilityChanged(Self, True); + end; + + OldParent := Parent; + + SaveHandle := 0; + if Assigned(AParent) then begin + //AParent.HandleNeeded; + SaveHandle := WindowHandle; + WindowHandle := 0; + end; + { Ensure that the handle is destroyed now so that any messages in the queue + get flushed. This is neccessary since existing messages may reference + FDockedTo or FDocked, which is changed below. } + inherited SetParent(nil); + { ^ Note to self: SetParent is used instead of DestroyHandle because it does + additional processing } + FCurrentDock := NewCurrentDock; + FFloating := NewFloating; + FDocked := Assigned(FCurrentDock); + try + if SaveHandle <> 0 then begin + WindowHandle := SaveHandle; + Windows.SetParent(SaveHandle, AParent.Handle); + SetWindowPos(SaveHandle, 0, 0, 0, 0, 0, SWP_FRAMECHANGED or + SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE or SWP_NOZORDER); + end; + inherited; + except + { Failure is rare, but just in case, restore FDockedTo and FDocked back. } + FCurrentDock := ParentToCurrentDock(Parent); + FFloating := Parent is TTBFloatingWindowParent; + FDocked := Assigned(FCurrentDock); + raise; + end; + + { FEffectiveDockRow probably won't be valid on the new Parent, so + reset it to -1 so that GetMinRowSize will temporarily ignore this + toolbar } + FEffectiveDockRow := -1; + + if not FSmoothDragging and (OldParent is TTBFloatingWindowParent) then begin + if FFloatParent = OldParent then FFloatParent := nil; + OldParent.Free; + end; + + if Parent is TTBDock then begin + if FUseLastDock and not FSmoothDragging then begin + LastDock := TTBDock(Parent); { calls ChangeDockList if LastDock changes } + TTBDock(Parent).ToolbarVisibilityChanged(Self, False); + end + else + TTBDock(Parent).ChangeDockList(True, Self); + end; + + UpdateFloatingToolWindows; + + { Schedule an arrange } + Arrange; + finally + EndUpdate; + end; + finally + Dec(FUpdatingBounds); + if Assigned(NewCurrentDock) then + NewCurrentDock.EndUpdate; + if Assigned(OldCurrentDock) then + OldCurrentDock.EndUpdate; + end; + finally + Dec(FDisableOnMove); + Dec(FHidden); + UpdateVisibility; + { ^ The above UpdateVisibility call not only updates the tool window's + visibility after decrementing FHidden, it also sets the + active/inactive state of the caption. } + end; + if Assigned(Parent) then + Moved; + + if not(csDestroying in ComponentState) and Assigned(AParent) then begin + if Assigned(FOnRecreated) then + FOnRecreated(Self); + if Assigned(FOnDockChanged) then + FOnDockChanged(Self); + end; + end; +end; + +procedure TTBCustomDockableWindow.AddDockedNCAreaToSize(var S: TPoint; + const LeftRight: Boolean); +var + TopLeft, BottomRight: TPoint; +begin + GetDockedNCArea(TopLeft, BottomRight, LeftRight); + Inc(S.X, TopLeft.X + BottomRight.X); + Inc(S.Y, TopLeft.Y + BottomRight.Y); +end; + +procedure TTBCustomDockableWindow.AddFloatingNCAreaToSize(var S: TPoint); +var + TopLeft, BottomRight: TPoint; +begin + GetFloatingNCArea(TopLeft, BottomRight); + Inc(S.X, TopLeft.X + BottomRight.X); + Inc(S.Y, TopLeft.Y + BottomRight.Y); +end; + +procedure TTBCustomDockableWindow.GetDockedNCArea(var TopLeft, BottomRight: TPoint; + const LeftRight: Boolean); +var + Z: Integer; +begin + Z := DockedBorderSize; { code optimization... } + TopLeft.X := Z; + TopLeft.Y := Z; + BottomRight.X := Z; + BottomRight.Y := Z; + if not LeftRight then begin + Inc(TopLeft.X, DragHandleSizes[CloseButtonWhenDocked, DragHandleStyle]); + //if FShowChevron then + // Inc(BottomRight.X, tbChevronSize); + end + else begin + Inc(TopLeft.Y, DragHandleSizes[CloseButtonWhenDocked, DragHandleStyle]); + //if FShowChevron then + // Inc(BottomRight.Y, tbChevronSize); + end; +end; + +function TTBCustomDockableWindow.GetFloatingBorderSize: TPoint; +{ Returns size of a thick border. Note that, depending on the Windows version, + this may not be the same as the actual window metrics since it draws its + own border } +const + XMetrics: array[Boolean] of Integer = (SM_CXDLGFRAME, SM_CXFRAME); + YMetrics: array[Boolean] of Integer = (SM_CYDLGFRAME, SM_CYFRAME); +begin + Result.X := GetSystemMetrics(XMetrics[Resizable]); + Result.Y := GetSystemMetrics(YMetrics[Resizable]); +end; + +procedure TTBCustomDockableWindow.GetFloatingNCArea(var TopLeft, BottomRight: TPoint); +begin + with GetFloatingBorderSize do begin + TopLeft.X := X; + TopLeft.Y := Y; + if ShowCaption then + Inc(TopLeft.Y, GetSmallCaptionHeight); + BottomRight.X := X; + BottomRight.Y := Y; + end; +end; + +function TTBCustomDockableWindow.GetDockedCloseButtonRect(LeftRight: Boolean): TRect; +var + X, Y, Z: Integer; +begin + Z := DragHandleSizes[CloseButtonWhenDocked, FDragHandleStyle] - 3; + if not LeftRight then begin + X := DockedBorderSize+1; + Y := DockedBorderSize; + end + else begin + X := (ClientWidth + DockedBorderSize) - Z; + Y := DockedBorderSize+1; + end; + Result := Bounds(X, Y, Z, Z); +end; + +function TTBCustomDockableWindow.CalcNCSizes: TPoint; +var + Z: Integer; +begin + if not Docked then begin + Result.X := 0; + Result.Y := 0; + end + else begin + Result.X := DockedBorderSize2; + Result.Y := DockedBorderSize2; + if CurrentDock.FAllowDrag then begin + Z := DragHandleSizes[FCloseButtonWhenDocked, FDragHandleStyle]; + if not(CurrentDock.Position in PositionLeftOrRight) then + Inc(Result.X, Z) + else + Inc(Result.Y, Z); + end; + end; +end; + +procedure TTBCustomDockableWindow.WMNCCalcSize(var Message: TWMNCCalcSize); +var + Z: Integer; +begin + { Doesn't call inherited since it overrides the normal NC sizes } + Message.Result := 0; + if Docked then + with Message.CalcSize_Params^ do begin + InflateRect(rgrc[0], -DockedBorderSize, -DockedBorderSize); + if CurrentDock.FAllowDrag then begin + Z := DragHandleSizes[FCloseButtonWhenDocked, FDragHandleStyle]; + if not(CurrentDock.Position in PositionLeftOrRight) then + Inc(rgrc[0].Left, Z) + else + Inc(rgrc[0].Top, Z); + end; + end; +end; + +procedure TTBCustomDockableWindow.WMSetCursor(var Message: TWMSetCursor); +var + P: TPoint; + R: TRect; + I: Integer; +begin + if Docked and CurrentDock.FAllowDrag and + (Message.CursorWnd = WindowHandle) and + (Smallint(Message.HitTest) = HT_TB2k_Border) and + (DragHandleStyle <> dhNone) then begin + GetCursorPos(P); + GetWindowRect(Handle, R); + if not(CurrentDock.Position in PositionLeftOrRight) then + I := P.X - R.Left + else + I := P.Y - R.Top; + if I < DockedBorderSize + DragHandleSizes[CloseButtonWhenDocked, DragHandleStyle] then begin + SetCursor(LoadCursor(0, IDC_SIZEALL)); + Message.Result := 1; + Exit; + end; + end; + inherited; +end; + +procedure TTBCustomDockableWindow.DrawNCArea(const DrawToDC: Boolean; + const ADC: HDC; const Clip: HRGN); +{ Redraws all the non-client area of the toolbar when it is docked. } +var + DC: HDC; + R: TRect; + VerticalDock: Boolean; + X, Y, Y2, Y3, YO, S, SaveIndex: Integer; + R2, R3, R4: TRect; + P1, P2: TPoint; + Brush: HBRUSH; + Clr: TColorRef; + UsingBackground, B: Boolean; + + procedure DrawRaisedEdge(R: TRect; const FillInterior: Boolean); + const + FillMiddle: array[Boolean] of UINT = (0, BF_MIDDLE); + begin + DrawEdge(DC, R, BDR_RAISEDINNER, BF_RECT or FillMiddle[FillInterior]); + end; + + function CreateCloseButtonBitmap: HBITMAP; + const + Pattern: array[0..15] of Byte = + (0, 0, $CC, 0, $78, 0, $30, 0, $78, 0, $CC, 0, 0, 0, 0, 0); + begin + Result := CreateBitmap(8, 8, 1, 1, @Pattern); + end; + + procedure DrawButtonBitmap(const Bmp: HBITMAP); + var + TempBmp: TBitmap; + begin + TempBmp := TBitmap.Create; + try + TempBmp.Handle := Bmp; + SetTextColor(DC, clBlack); + SetBkColor(DC, clWhite); + SelectObject(DC, GetSysColorBrush(COLOR_BTNTEXT)); + BitBlt(DC, R2.Left, R2.Top, R2.Right - R2.Left, R2.Bottom - R2.Top, + TempBmp.Canvas.Handle, 0, 0, $00E20746 {ROP_DSPDxax}); + finally + TempBmp.Free; + end; + end; + +const + CloseButtonState: array[Boolean] of UINT = (0, DFCS_PUSHED); +begin + if not Docked or not HandleAllocated then Exit; + + if not DrawToDC then + DC := GetWindowDC(Handle) + else + DC := ADC; + try + { Use update region } + if not DrawToDC then + SelectNCUpdateRgn(Handle, DC, Clip); + + { This works around WM_NCPAINT problem described at top of source code } + {no! R := Rect(0, 0, Width, Height);} + GetWindowRect(Handle, R); OffsetRect(R, -R.Left, -R.Top); + + VerticalDock := CurrentDock.Position in PositionLeftOrRight; + + Brush := CreateSolidBrush(ColorToRGB(Color)); + + UsingBackground := CurrentDock.UsingBackground and CurrentDock.FBkgOnToolbars; + + { Border } + if BorderStyle = bsSingle then + DrawRaisedEdge(R, False) + else + FrameRect(DC, R, Brush); + R2 := R; + InflateRect(R2, -1, -1); + if not UsingBackground then + FrameRect(DC, R2, Brush); + + { Draw the Background } + if UsingBackground then begin + R2 := R; + P1 := CurrentDock.ClientToScreen(Point(0, 0)); + P2 := CurrentDock.Parent.ClientToScreen(CurrentDock.BoundsRect.TopLeft); + Dec(R2.Left, Left + CurrentDock.Left + (P1.X-P2.X)); + Dec(R2.Top, Top + CurrentDock.Top + (P1.Y-P2.Y)); + InflateRect(R, -1, -1); + GetWindowRect(Handle, R4); + R3 := ClientRect; + with ClientToScreen(Point(0, 0)) do + OffsetRect(R3, X-R4.Left, Y-R4.Top); + SaveIndex := SaveDC(DC); + IntersectClipRect(DC, R.Left, R.Top, R.Right, R.Bottom); + ExcludeClipRect(DC, R3.Left, R3.Top, R3.Right, R3.Bottom); + CurrentDock.DrawBackground(DC, R2); + RestoreDC(DC, SaveIndex); + end; + + { The drag handle at the left, or top } + if CurrentDock.FAllowDrag then begin + SaveIndex := SaveDC(DC); + if not VerticalDock then + Y2 := ClientHeight + else + Y2 := ClientWidth; + Inc(Y2, DockedBorderSize); + S := DragHandleSizes[FCloseButtonWhenDocked, FDragHandleStyle]; + if FDragHandleStyle <> dhNone then begin + Y3 := Y2; + X := DockedBorderSize + DragHandleXOffsets[FCloseButtonWhenDocked, FDragHandleStyle]; + Y := DockedBorderSize; + YO := Ord(FDragHandleStyle = dhSingle); + if FCloseButtonWhenDocked then begin + if not VerticalDock then + Inc(Y, S - 2) + else + Dec(Y3, S - 2); + end; + Clr := GetSysColor(COLOR_BTNHIGHLIGHT); + for B := False to (FDragHandleStyle = dhDouble) do begin + if not VerticalDock then + R2 := Rect(X, Y+YO, X+3, Y2-YO) + else + R2 := Rect(Y+YO, X, Y3-YO, X+3); + DrawRaisedEdge(R2, True); + if not VerticalDock then + SetPixelV(DC, X, Y2-1-YO, Clr) + else + SetPixelV(DC, Y3-1-YO, X, Clr); + ExcludeClipRect(DC, R2.Left, R2.Top, R2.Right, R2.Bottom); + Inc(X, 3); + end; + end; + if not UsingBackground then begin + if not VerticalDock then + R2 := Rect(DockedBorderSize, DockedBorderSize, + DockedBorderSize+S, Y2) + else + R2 := Rect(DockedBorderSize, DockedBorderSize, + Y2, DockedBorderSize+S); + FillRect(DC, R2, Brush); + end; + RestoreDC(DC, SaveIndex); + { Close button } + if FCloseButtonWhenDocked then begin + R2 := GetDockedCloseButtonRect(VerticalDock); + if FCloseButtonDown then + DrawEdge(DC, R2, BDR_SUNKENOUTER, BF_RECT) + else if FCloseButtonHover then + DrawRaisedEdge(R2, False); + InflateRect(R2, -2, -2); + if FCloseButtonDown then + OffsetRect(R2, 1, 1); + DrawButtonBitmap(CreateCloseButtonBitmap); + end; + end; + + DeleteObject(Brush); + finally + if not DrawToDC then + ReleaseDC(Handle, DC); + end; +end; + +procedure TTBCustomDockableWindow.RedrawNCArea; +begin + { Note: IsWindowVisible is called as an optimization. There's no need to + draw on invisible windows. } + if HandleAllocated and IsWindowVisible(Handle) then + DrawNCArea(False, 0, 0); +end; + +procedure TTBCustomDockableWindow.WMNCPaint(var Message: TMessage); +begin + { Don't call inherited because it overrides the default NC painting } + DrawNCArea(False, 0, HRGN(Message.WParam)); +end; + +procedure DockableWindowNCPaintProc(Wnd: HWND; DC: HDC; AppData: Longint); +begin + with TTBCustomDockableWindow(AppData) do + DrawNCArea(True, DC, 0) +end; + +procedure TTBCustomDockableWindow.WMPrint(var Message: TMessage); +begin + HandleWMPrint(Handle, Message, DockableWindowNCPaintProc, Longint(Self)); +end; + +procedure TTBCustomDockableWindow.WMPrintClient(var Message: TMessage); +begin + HandleWMPrintClient(Self, Message); +end; + +procedure TTBCustomDockableWindow.WMEraseBkgnd(var Message: TWMEraseBkgnd); +var + R, R2, R3: TRect; + P1, P2: TPoint; + SaveIndex: Integer; +begin + if Docked and CurrentDock.UsingBackground and CurrentDock.FBkgOnToolbars then begin + R := ClientRect; + R2 := R; + P1 := CurrentDock.ClientToScreen(Point(0, 0)); + P2 := CurrentDock.Parent.ClientToScreen(CurrentDock.BoundsRect.TopLeft); + Dec(R2.Left, Left + CurrentDock.Left + (P1.X-P2.X)); + Dec(R2.Top, Top + CurrentDock.Top + (P1.Y-P2.Y)); + GetWindowRect(Handle, R3); + with ClientToScreen(Point(0, 0)) do begin + Inc(R2.Left, R3.Left-X); + Inc(R2.Top, R3.Top-Y); + end; + SaveIndex := SaveDC(Message.DC); + IntersectClipRect(Message.DC, R.Left, R.Top, R.Right, R.Bottom); + CurrentDock.DrawBackground(Message.DC, R2); + RestoreDC(Message.DC, SaveIndex); + Message.Result := 1; + end + else + inherited; +end; + +function TTBCustomDockableWindow.GetPalette: HPALETTE; +begin + if Docked then + Result := CurrentDock.GetPalette + else + Result := 0; +end; + +function TTBCustomDockableWindow.PaletteChanged(Foreground: Boolean): Boolean; +begin + Result := inherited PaletteChanged(Foreground); + if Result and not Foreground then begin + { There seems to be a bug in Delphi's palette handling. When the form is + inactive and another window realizes a palette, docked TToolbar97s + weren't getting redrawn. So this workaround code was added. } + InvalidateAll(Self); + end; +end; + +procedure TTBCustomDockableWindow.DrawDraggingOutline(const DC: HDC; + const NewRect, OldRect: PRect; const NewDocking, OldDocking: Boolean); +var + NewSize, OldSize: TSize; +begin + with GetFloatingBorderSize do begin + if NewDocking then NewSize.cx := 1 else NewSize.cx := X; + NewSize.cy := NewSize.cx; + if OldDocking then OldSize.cx := 1 else OldSize.cx := X; + OldSize.cy := OldSize.cx; + end; + DrawHalftoneInvertRect(DC, NewRect, OldRect, NewSize, OldSize); +end; + +procedure TTBCustomDockableWindow.CMColorChanged(var Message: TMessage); +begin + { Make sure non-client area is redrawn } + InvalidateAll(Self); + inherited; { the inherited handler calls Invalidate } +end; + +procedure TTBCustomDockableWindow.CMTextChanged(var Message: TMessage); +begin + inherited; + if Parent is TTBFloatingWindowParent then + TTBFloatingWindowParent(Parent).Caption := Caption; +end; + +procedure TTBCustomDockableWindow.CMVisibleChanged(var Message: TMessage); +begin + if not(csDesigning in ComponentState) and Docked then + CurrentDock.ToolbarVisibilityChanged(Self, False); + inherited; + if Assigned(FOnVisibleChanged) then + FOnVisibleChanged(Self); +end; + +procedure TTBCustomDockableWindow.BeginMoving(const InitX, InitY: Integer); +type + PDockedSize = ^TDockedSize; + TDockedSize = record + Dock: TTBDock; + BoundsRect: TRect; + Size: TPoint; + RowSizes: TList; + end; +const + SplitCursors: array[Boolean] of PChar = (IDC_SIZEWE, IDC_SIZENS); +var + UseSmoothDrag: Boolean; + DockList: TList; + NewDockedSizes: TList; {items are pointers to TDockedSizes} + OriginalDock, MouseOverDock: TTBDock; + MoveRect: TRect; + StartDocking, PreventDocking, PreventFloating, WatchForSplit, SplitVertical: Boolean; + ScreenDC: HDC; + OldCursor: HCURSOR; + NPoint, DPoint: TPoint; + OriginalDockRow, OriginalDockPos: Integer; + FirstPos, LastPos, CurPos: TPoint; + + function FindDockedSize(const ADock: TTBDock): PDockedSize; + var + I: Integer; + begin + for I := 0 to NewDockedSizes.Count-1 do begin + Result := NewDockedSizes[I]; + if Result.Dock = ADock then + Exit; + end; + Result := nil; + end; + + function GetRowOf(const RowSizes: TList; const XY: Integer; + var Before: Boolean): Integer; + { Returns row number of the specified coordinate. Before is set to True if it + was in the top (or left) quarter of the row. } + var + HighestRow, R, CurY, NextY, CurRowSize, EdgeSize: Integer; + FullSizeRow: Boolean; + begin + Before := False; + HighestRow := RowSizes.Count-1; + CurY := 0; + for R := 0 to HighestRow do begin + CurRowSize := Integer(RowSizes[R]); + FullSizeRow := FullSize or (CurRowSize and $10000 <> 0); + CurRowSize := Smallint(CurRowSize); + if CurRowSize = 0 then + Continue; + NextY := CurY + CurRowSize; + if not FullSizeRow then + EdgeSize := CurRowSize div 4 + else + EdgeSize := CurRowSize div 2; + if XY < CurY + EdgeSize then begin + Result := R; + Before := True; + Exit; + end; + if not FullSizeRow and (XY < NextY - EdgeSize) then begin + Result := R; + Exit; + end; + CurY := NextY; + end; + Result := HighestRow+1; + end; + + procedure Dropped; + var + NewDockRow: Integer; + Before: Boolean; + MoveRectClient: TRect; + C: Integer; + DockedSize: PDockedSize; + begin + if MouseOverDock <> nil then begin + DockedSize := FindDockedSize(MouseOverDock); + MoveRectClient := MoveRect; + OffsetRect(MoveRectClient, -DockedSize.BoundsRect.Left, + -DockedSize.BoundsRect.Top); + if not FDragSplitting then begin + if not(MouseOverDock.Position in PositionLeftOrRight) then + C := (MoveRectClient.Top+MoveRectClient.Bottom) div 2 + else + C := (MoveRectClient.Left+MoveRectClient.Right) div 2; + NewDockRow := GetRowOf(DockedSize.RowSizes, C, Before); + if Before then + WatchForSplit := False; + end + else begin + NewDockRow := FDockRow; + Before := False; + end; + if WatchForSplit then begin + if (MouseOverDock <> OriginalDock) or (NewDockRow <> OriginalDockRow) then + WatchForSplit := False + else begin + if not SplitVertical then + C := FirstPos.X - LastPos.X + else + C := FirstPos.Y - LastPos.Y; + if Abs(C) >= 10 then begin + WatchForSplit := False; + FDragSplitting := True; + SetCursor(LoadCursor(0, SplitCursors[SplitVertical])); + end; + end; + end; + FDockRow := NewDockRow; + if not(MouseOverDock.Position in PositionLeftOrRight) then + FDockPos := MoveRectClient.Left + else + FDockPos := MoveRectClient.Top; + Parent := MouseOverDock; + if not FSmoothDragging then + CurrentDock.CommitNewPositions := True; + FInsertRowBefore := Before; + try + CurrentDock.ArrangeToolbars; + finally + FInsertRowBefore := False; + end; + end + else begin + WatchForSplit := False; + FloatingPosition := MoveRect.TopLeft; + Floating := True; + { Make sure it doesn't go completely off the screen } + MoveOnScreen(True); + end; + + { Make sure it's repainted immediately (looks better on really slow + computers when smooth dragging is enabled) } + Update; + end; + + procedure MouseMoved; + var + OldMouseOverDock: TTBDock; + OldMoveRect: TRect; + Pos: TPoint; + + function GetDockRect(Control: TTBDock): TRect; + var + I: Integer; + begin + for I := 0 to NewDockedSizes.Count-1 do + with PDockedSize(NewDockedSizes[I])^ do begin + if Dock <> Control then Continue; + Result := Bounds(Pos.X-MulDiv(Size.X-1, NPoint.X, DPoint.X), + Pos.Y-MulDiv(Size.Y-1, NPoint.Y, DPoint.Y), + Size.X, Size.Y); + Exit; + end; + SetRectEmpty(Result); + end; + + function CheckIfCanDockTo(Control: TTBDock; R: TRect): Boolean; + const + DockSensX = 25; + DockSensY = 25; + var + S, Temp: TRect; + Sens: Integer; + begin + with Control do begin + Result := False; + + InflateRect(R, 3, 3); + S := GetDockRect(Control); + + { Like Office, distribute ~25 pixels of extra dock detection area + to the left side if the toolbar was grabbed at the left, both sides + if the toolbar was grabbed at the middle, or the right side if + toolbar was grabbed at the right. If outside, don't try to dock. } + Sens := MulDiv(DockSensX, NPoint.X, DPoint.X); + if (Pos.X < R.Left-(DockSensX-Sens)) or (Pos.X >= R.Right+Sens) then + Exit; + + { Don't try to dock to the left or right if pointer is above or below + the boundaries of the dock } + if (Control.Position in PositionLeftOrRight) and + ((Pos.Y < R.Top) or (Pos.Y >= R.Bottom)) then + Exit; + + { And also distribute ~25 pixels of extra dock detection area to + the top or bottom side } + Sens := MulDiv(DockSensY, NPoint.Y, DPoint.Y); + if (Pos.Y < R.Top-(DockSensY-Sens)) or (Pos.Y >= R.Bottom+Sens) then + Exit; + + Result := IntersectRect(Temp, R, S); + end; + end; + + var + R, R2: TRect; + I: Integer; + Dock: TTBDock; + Accept: Boolean; + TL, BR: TPoint; + begin + OldMouseOverDock := MouseOverDock; + OldMoveRect := MoveRect; + + GetCursorPos(Pos); + + if FDragSplitting then + MouseOverDock := CurrentDock + else begin + { Check if it can dock } + MouseOverDock := nil; + if StartDocking and not PreventDocking then + for I := 0 to DockList.Count-1 do begin + Dock := DockList[I]; + if CheckIfCanDockTo(Dock, FindDockedSize(Dock).BoundsRect) then begin + MouseOverDock := Dock; + Accept := True; + if Assigned(MouseOverDock.FOnRequestDock) then + MouseOverDock.FOnRequestDock(MouseOverDock, Self, Accept); + if Accept then + Break + else + MouseOverDock := nil; + end; + end; + end; + + { If not docking, clip the point so it doesn't get dragged under the + taskbar } + if MouseOverDock = nil then begin + R := GetRectOfMonitorContainingPoint(Pos, True); + if Pos.X < R.Left then Pos.X := R.Left; + if Pos.X > R.Right then Pos.X := R.Right; + if Pos.Y < R.Top then Pos.Y := R.Top; + if Pos.Y > R.Bottom then Pos.Y := R.Bottom; + end; + + MoveRect := GetDockRect(MouseOverDock); + + { Make sure title bar (or at least part of the toolbar) is still accessible + if it's dragged almost completely off the screen. This prevents the + problem seen in Office 97 where you drag it offscreen so that only the + border is visible, sometimes leaving you no way to move it back short of + resetting the toolbar. } + if MouseOverDock = nil then begin + R2 := GetRectOfMonitorContainingPoint(Pos, True); + R := R2; + with GetFloatingBorderSize do + InflateRect(R, -(X+4), -(Y+4)); + if MoveRect.Bottom < R.Top then + OffsetRect(MoveRect, 0, R.Top-MoveRect.Bottom); + if MoveRect.Top > R.Bottom then + OffsetRect(MoveRect, 0, R.Bottom-MoveRect.Top); + if MoveRect.Right < R.Left then + OffsetRect(MoveRect, R.Left-MoveRect.Right, 0); + if MoveRect.Left > R.Right then + OffsetRect(MoveRect, R.Right-MoveRect.Left, 0); + + GetFloatingNCArea(TL, BR); + I := R2.Top + 4 - TL.Y; + if MoveRect.Top < I then + OffsetRect(MoveRect, 0, I-MoveRect.Top); + end; + + { Empty MoveRect if it's wanting to float but it's not allowed to, and + set the mouse cursor accordingly. } + if PreventFloating and not Assigned(MouseOverDock) then begin + SetRectEmpty(MoveRect); + SetCursor(LoadCursor(0, IDC_NO)); + end + else begin + if FDragSplitting then + SetCursor(LoadCursor(0, SplitCursors[SplitVertical])) + else + SetCursor(OldCursor); + end; + + { Update the dragging outline } + if not UseSmoothDrag then + DrawDraggingOutline(ScreenDC, @MoveRect, @OldMoveRect, MouseOverDock <> nil, + OldMouseOverDock <> nil) + else + if not IsRectEmpty(MoveRect) then + Dropped; + end; + + procedure BuildDockList; + + function AcceptableDock(const D: TTBDock): Boolean; + begin + Result := D.FAllowDrag and (D.Position in DockableTo); + end; + + procedure Recurse(const ParentCtl: TWinControl); + var + D: TTBDockPosition; + I: Integer; + begin + if ContainsControl(ParentCtl) or not ParentCtl.Showing then + Exit; + with ParentCtl do begin + for D := Low(D) to High(D) do + for I := 0 to ParentCtl.ControlCount-1 do + if (Controls[I] is TTBDock) and (TTBDock(Controls[I]).Position = D) then + Recurse(TWinControl(Controls[I])); + for I := 0 to ParentCtl.ControlCount-1 do + if (Controls[I] is TWinControl) and not(Controls[I] is TTBDock) then + Recurse(TWinControl(Controls[I])); + end; + if (ParentCtl is TTBDock) and AcceptableDock(TTBDock(ParentCtl)) and + (DockList.IndexOf(ParentCtl) = -1) then + DockList.Add(ParentCtl); + end; + + var + ParentForm: TTBCustomForm; + DockFormsList: TList; + I, J: Integer; + begin + { Manually add CurrentDock to the DockList first so that it gets priority + over other docks } + if Assigned(CurrentDock) and AcceptableDock(CurrentDock) then + DockList.Add(CurrentDock); + ParentForm := TBGetToolWindowParentForm(Self); + DockFormsList := TList.Create; + try + if Assigned(FDockForms) then begin + for I := 0 to Screen.{$IFDEF JR_D3}CustomFormCount{$ELSE}FormCount{$ENDIF}-1 do begin + J := FDockForms.IndexOf(Screen.{$IFDEF JR_D3}CustomForms{$ELSE}Forms{$ENDIF}[I]); + if (J <> -1) and (FDockForms[J] <> ParentForm) then + DockFormsList.Add(FDockForms[J]); + end; + end; + if Assigned(ParentForm) then + DockFormsList.Insert(0, ParentForm); + for I := 0 to DockFormsList.Count-1 do + Recurse(DockFormsList[I]); + finally + DockFormsList.Free; + end; + end; + +var + Accept, FullSizeRow: Boolean; + R: TRect; + Msg: TMsg; + NewDockedSize: PDockedSize; + I, J, S: Integer; +begin + Accept := False; + SplitVertical := False; + WatchForSplit := False; + OriginalDock := CurrentDock; + OriginalDockRow := FDockRow; + OriginalDockPos := FDockPos; + try + FDragMode := True; + FDragSplitting := False; + if Docked then begin + FDragCanSplit := False; + CurrentDock.CommitNewPositions := True; + CurrentDock.ArrangeToolbars; { needed for WatchForSplit assignment below } + SplitVertical := CurrentDock.Position in PositionLeftOrRight; + WatchForSplit := FDragCanSplit; + end; + DockList := nil; + NewDockedSizes := nil; + try + UseSmoothDrag := FSmoothDrag; + FSmoothDragging := UseSmoothDrag; + + NPoint := Point(InitX, InitY); + { Adjust for non-client area } + if not(Parent is TTBFloatingWindowParent) then begin + GetWindowRect(Handle, R); + R.BottomRight := ClientToScreen(Point(0, 0)); + DPoint := Point(Width-1, Height-1); + end + else begin + GetWindowRect(Parent.Handle, R); + R.BottomRight := Parent.ClientToScreen(Point(0, 0)); + DPoint := Point(Parent.Width-1, Parent.Height-1); + end; + Dec(NPoint.X, R.Left-R.Right); + Dec(NPoint.Y, R.Top-R.Bottom); + + PreventDocking := GetKeyState(VK_CONTROL) < 0; + PreventFloating := DockMode <> dmCanFloat; + + { Build list of all TTBDock's on the form } + DockList := TList.Create; + if DockMode <> dmCannotFloatOrChangeDocks then + BuildDockList + else + if Docked then + DockList.Add(CurrentDock); + + { Ensure positions of each possible dock are committed } + for I := 0 to DockList.Count-1 do + TTBDock(DockList[I]).CommitPositions; + + { Set up potential sizes for each dock type } + NewDockedSizes := TList.Create; + for I := -1 to DockList.Count-1 do begin + New(NewDockedSize); + NewDockedSize.RowSizes := nil; + try + with NewDockedSize^ do begin + if I = -1 then begin + { -1 adds the floating size } + Dock := nil; + SetRectEmpty(BoundsRect); + Size := DoArrange(False, TBGetDockTypeOf(CurrentDock, Floating), True, nil); + AddFloatingNCAreaToSize(Size); + end + else begin + Dock := TTBDock(DockList[I]); + GetWindowRect(Dock.Handle, BoundsRect); + if Dock <> CurrentDock then begin + Size := DoArrange(False, TBGetDockTypeOf(CurrentDock, Floating), False, Dock); + AddDockedNCAreaToSize(Size, Dock.Position in PositionLeftOrRight); + end + else + Size := Point(Width, Height); + end; + end; + if Assigned(NewDockedSize.Dock) then begin + NewDockedSize.RowSizes := TList.Create; + for J := 0 to NewDockedSize.Dock.GetHighestRow(True) do begin + S := Smallint(NewDockedSize.Dock.GetCurrentRowSize(J, FullSizeRow)); + if FullSizeRow then + S := S or $10000; + NewDockedSize.RowSizes.Add(Pointer(S)); + end; + end; + NewDockedSizes.Add(NewDockedSize); + except + NewDockedSize.RowSizes.Free; + Dispose(NewDockedSize); + raise; + end; + end; + + { Before locking, make sure all pending paint messages are processed } + ProcessPaintMessages; + + { Save the original mouse cursor } + OldCursor := GetCursor; + + if not UseSmoothDrag then begin + { This uses LockWindowUpdate to suppress all window updating so the + dragging outlines doesn't sometimes get garbled. (This is safe, and in + fact, is the main purpose of the LockWindowUpdate function) + IMPORTANT! While debugging you might want to enable the 'TB2Dock_DisableLock' + conditional define (see top of the source code). } + {$IFNDEF TB2Dock_DisableLock} + LockWindowUpdate(GetDesktopWindow); + {$ENDIF} + { Get a DC of the entire screen. Works around the window update lock + by specifying DCX_LOCKWINDOWUPDATE. } + ScreenDC := GetDCEx(GetDesktopWindow, 0, + DCX_LOCKWINDOWUPDATE or DCX_CACHE or DCX_WINDOW); + end + else + ScreenDC := 0; + try + SetCapture(Handle); + + { Initialize } + StartDocking := Docked; + MouseOverDock := nil; + SetRectEmpty(MoveRect); + GetCursorPos(FirstPos); + LastPos := FirstPos; + MouseMoved; + StartDocking := True; + + { Stay in message loop until capture is lost. Capture is removed either + by this procedure manually doing it, or by an outside influence (like + a message box or menu popping up) } + while GetCapture = Handle do begin + case Integer(GetMessage(Msg, 0, 0, 0)) of + -1: Break; { if GetMessage failed } + 0: begin + { Repost WM_QUIT messages } + PostQuitMessage(Msg.WParam); + Break; + end; + end; + + case Msg.Message of + WM_KEYDOWN, WM_KEYUP: + { Ignore all keystrokes while dragging. But process Ctrl and Escape } + case Msg.WParam of + VK_CONTROL: + if PreventDocking <> (Msg.Message = WM_KEYDOWN) then begin + PreventDocking := Msg.Message = WM_KEYDOWN; + MouseMoved; + end; + VK_ESCAPE: + Break; + end; + WM_MOUSEMOVE: begin + { Note to self: WM_MOUSEMOVE messages should never be dispatched + here to ensure no hints get shown during the drag process } + CurPos := SmallPointToPoint(TSmallPoint(DWORD(GetMessagePos))); + if (LastPos.X <> CurPos.X) or (LastPos.Y <> CurPos.Y) then begin + MouseMoved; + LastPos := CurPos; + end; + end; + WM_LBUTTONDOWN, WM_LBUTTONDBLCLK: + { Make sure it doesn't begin another loop } + Break; + WM_LBUTTONUP: begin + Accept := True; + Break; + end; + WM_RBUTTONDOWN..WM_MBUTTONDBLCLK: + { Ignore all other mouse up/down messages } + ; + else + TranslateMessage(Msg); + DispatchMessage(Msg); + end; + end; + finally + { Since it sometimes breaks out of the loop without capture being + released } + if GetCapture = Handle then + ReleaseCapture; + + if not UseSmoothDrag then begin + { Hide dragging outline. Since NT will release a window update lock if + another thread comes to the foreground, it has to release the DC + and get a new one for erasing the dragging outline. Otherwise, + the DrawDraggingOutline appears to have no effect when this happens. } + ReleaseDC(GetDesktopWindow, ScreenDC); + ScreenDC := GetDCEx(GetDesktopWindow, 0, + DCX_LOCKWINDOWUPDATE or DCX_CACHE or DCX_WINDOW); + DrawDraggingOutline(ScreenDC, nil, @MoveRect, True, MouseOverDock <> nil); + ReleaseDC(GetDesktopWindow, ScreenDC); + + { Release window update lock } + {$IFNDEF TB2Dock_DisableLock} + LockWindowUpdate(0); + {$ENDIF} + end; + end; + + { Move to new position only if MoveRect isn't empty } + FSmoothDragging := False; + if Accept and not IsRectEmpty(MoveRect) then + { Note: Dropped must be called again after FSmoothDragging is reset to + False so that TTBDock.ArrangeToolbars makes the DockPos changes + permanent } + Dropped; + + { LastDock isn't automatically updated while FSmoothDragging=True, so + update it now that it's back to False } + if FUseLastDock and Assigned(CurrentDock) then + LastDock := CurrentDock; + + { Free FFloatParent if it's no longer the Parent } + if Assigned(FFloatParent) and (Parent <> FFloatParent) then begin + FFloatParent.Free; + FFloatParent := nil; + end; + finally + FSmoothDragging := False; + if not Docked then begin + { If we didn't end up docking, restore the original DockRow & DockPos + values } + FDockRow := OriginalDockRow; + FDockPos := OriginalDockPos; + end; + if Assigned(NewDockedSizes) then begin + for I := NewDockedSizes.Count-1 downto 0 do begin + NewDockedSize := NewDockedSizes[I]; + NewDockedSize.RowSizes.Free; + Dispose(NewDockedSize); + end; + NewDockedSizes.Free; + end; + DockList.Free; + end; + finally + FDragMode := False; + FDragSplitting := False; + end; +end; + +function TTBCustomDockableWindow.ChildControlTransparent(Ctl: TControl): Boolean; +begin + Result := False; +end; + +procedure TTBCustomDockableWindow.ControlExistsAtPos(const P: TPoint; + var ControlExists: Boolean); +var + I: Integer; +begin + for I := 0 to ControlCount-1 do + if not ChildControlTransparent(Controls[I]) and Controls[I].Visible and + PtInRect(Controls[I].BoundsRect, P) then begin + ControlExists := True; + Break; + end; +end; + +procedure TTBCustomDockableWindow.DoubleClick; +begin + if Docked then begin + if DockMode = dmCanFloat then begin + Floating := True; + MoveOnScreen(True); + end; + end + else + if Assigned(LastDock) then + Parent := LastDock + else + if Assigned(DefaultDock) then begin + FDockRow := ForceDockAtTopRow; + FDockPos := ForceDockAtLeftPos; + Parent := DefaultDock; + end; +end; + +function TTBCustomDockableWindow.IsMovable: Boolean; +begin + Result := (Docked and CurrentDock.FAllowDrag) or Floating; +end; + +procedure TTBCustomDockableWindow.MouseDown(Button: TMouseButton; + Shift: TShiftState; X, Y: Integer); +var + P: TPoint; + CtlExists: Boolean; +begin + inherited; + if (Button <> mbLeft) or not IsMovable then + Exit; + { Ignore message if user clicked on a child control } + P := Point(X, Y); + if PtInRect(ClientRect, P) then begin + CtlExists := False; + ControlExistsAtPos(P, CtlExists); + if CtlExists then + Exit; + end; + + if not(ssDouble in Shift) then begin + BeginMoving(X, Y); + MouseUp(mbLeft, [], -1, -1); + end + else + { Handle double click } + DoubleClick; +end; + +procedure TTBCustomDockableWindow.WMNCHitTest(var Message: TWMNCHitTest); +var + P: TPoint; + R: TRect; +begin + inherited; + if Docked then + with Message do begin + P := SmallPointToPoint(Pos); + GetWindowRect(Handle, R); + Dec(P.X, R.Left); Dec(P.Y, R.Top); + if Result <> HTCLIENT then begin + Result := HTNOWHERE; + if FCloseButtonWhenDocked and CurrentDock.FAllowDrag and + PtInRect(GetDockedCloseButtonRect( + TBGetDockTypeOf(CurrentDock, Floating) = dtLeftRight), P) then + Result := HT_TB2k_Close + else + Result := HT_TB2k_Border; + end; + end; +end; + +procedure TTBCustomDockableWindow.WMNCMouseMove(var Message: TWMNCMouseMove); +var + InArea: Boolean; +begin + inherited; + { Note: TME_NONCLIENT was introduced in Windows 98 and 2000 } + if (Win32MajorVersion >= 5) or + (Win32MajorVersion = 4) and (Win32MinorVersion >= 10) then + CallTrackMouseEvent(Handle, TME_LEAVE or $10 {TME_NONCLIENT}); + InArea := Message.HitTest = HT_TB2k_Close; + if FCloseButtonHover <> InArea then begin + FCloseButtonHover := InArea; + RedrawNCArea; + end; +end; + +procedure TTBCustomDockableWindow.WMNCMouseLeave(var Message: TMessage); +begin + if not MouseCapture then + CancelNCHover; + inherited; +end; + +procedure TTBCustomDockableWindow.CMMouseLeave(var Message: TMessage); +begin + inherited; + { On Windows versions that can't send a WM_NCMOUSELEAVE message, trap + CM_MOUSELEAVE to detect when the mouse moves from the non-client area to + another control. } + CancelNCHover; +end; + +procedure TTBCustomDockableWindow.WMMouseMove(var Message: TMessage); +begin + { On Windows versions that can't send a WM_NCMOUSELEAVE message, trap + WM_MOUSEMOVE to detect when the mouse moves from the non-client area to + the client area. + Note: We are overriding WM_MOUSEMOVE instead of MouseMove so that our + processing always gets done first. } + CancelNCHover; + inherited; +end; + +procedure TTBCustomDockableWindow.CancelNCHover; +begin + if FCloseButtonHover then begin + FCloseButtonHover := False; + RedrawNCArea; + end; +end; + +procedure TTBCustomDockableWindow.Close; +var + Accept: Boolean; +begin + Accept := True; + if Assigned(FOnCloseQuery) then + FOnCloseQuery(Self, Accept); + { Did the CloseQuery event return True? } + if Accept then begin + Hide; + if Assigned(FOnClose) then + FOnClose(Self); + end; +end; + +procedure TTBCustomDockableWindow.SetCloseButtonState(Pushed: Boolean); +begin + if FCloseButtonDown <> Pushed then begin + FCloseButtonDown := Pushed; + RedrawNCArea; + end; +end; + +procedure TTBCustomDockableWindow.WMNCLButtonDown(var Message: TWMNCLButtonDown); +var + R, BR: TRect; + P: TPoint; +begin + case Message.HitTest of + HT_TB2k_Close: begin + GetWindowRect(Handle, R); + BR := GetDockedCloseButtonRect( + TBGetDockTypeOf(CurrentDock, Floating) = dtLeftRight); + OffsetRect(BR, R.Left, R.Top); + if CloseButtonLoop(Handle, BR, SetCloseButtonState) then + Close; + end; + HT_TB2k_Border: begin + P := ScreenToClient(SmallPointToPoint(TSmallPoint(GetMessagePos()))); + if IsMovable then + BeginMoving(P.X, P.Y); + end; + else + inherited; + end; +end; + +procedure TTBCustomDockableWindow.WMNCLButtonDblClk(var Message: TWMNCLButtonDblClk); +begin + if Message.HitTest = HT_TB2k_Border then begin + if IsMovable then + DoubleClick; + end + else + inherited; +end; + +procedure TTBCustomDockableWindow.ShowNCContextMenu(const Pos: TSmallPoint); + + {$IFNDEF JR_D5} + { Note: this is identical to TControl.CheckMenuPopup (from Delphi 4), + except where noted. + TControl.CheckMenuPopup is unfortunately 'private', so it can't be called + outside of the Controls unit. } + procedure CheckMenuPopup; + var + Control: TControl; + PopupMenu: TPopupMenu; + begin + if csDesigning in ComponentState then Exit; + Control := Self; + while Control <> nil do + begin + { Added TControlAccess cast because GetPopupMenu is 'protected' } + PopupMenu := TControlAccess(Control).GetPopupMenu; + if (PopupMenu <> nil) then + begin + if not PopupMenu.AutoPopup then Exit; + SendCancelMode(nil); + PopupMenu.PopupComponent := Control; + { Changed the following. LPARAM of WM_NCRBUTTONUP is in screen + coordinates, not client coordinates } + {with ClientToScreen(SmallPointToPoint(Pos)) do + PopupMenu.Popup(X, Y);} + PopupMenu.Popup(Pos.X, Pos.Y); + Exit; + end; + Control := Control.Parent; + end; + end; + {$ENDIF} + +begin + {$IFDEF JR_D5} + { Delphi 5 and later use the WM_CONTEXTMENU message for popup menus } + SendMessage(Handle, WM_CONTEXTMENU, 0, LPARAM(Pos)); + {$ELSE} + CheckMenuPopup; + {$ENDIF} +end; + +procedure TTBCustomDockableWindow.WMNCRButtonUp(var Message: TWMNCRButtonUp); +begin + ShowNCContextMenu(TSmallPoint(TMessage(Message).LParam)); +end; + +{$IFDEF JR_D5} +procedure TTBCustomDockableWindow.WMContextMenu(var Message: TWMContextMenu); +{ Unfortunately TControl.WMContextMenu ignores clicks in the non-client area. + On docked toolbars, we need right clicks on the border, part of the + non-client area, to display the popup menu. The only way I see to have it do + that is to create a new version of WMContextMenu specifically for the + non-client area, and that is what this method is. + Note: This is identical to Delphi 5's TControl.WMContextMenu, except where + noted. } +var + Pt, Temp: TPoint; + Handled: Boolean; + PopupMenu: TPopupMenu; +begin + { Added 'inherited;' here } + inherited; + if Message.Result <> 0 then Exit; + if csDesigning in ComponentState then Exit; + + Pt := SmallPointToPoint(Message.Pos); + if Pt.X < 0 then + Temp := Pt + else + begin + Temp := ScreenToClient(Pt); + { Changed the following. We're only interested in the non-client area } + {if not PtInRect(ClientRect, Temp) then} + if PtInRect(ClientRect, Temp) then + begin + {inherited;} + Exit; + end; + end; + + Handled := False; + DoContextPopup(Temp, Handled); + Message.Result := Ord(Handled); + if Handled then Exit; + + PopupMenu := GetPopupMenu; + if (PopupMenu <> nil) and PopupMenu.AutoPopup then + begin + SendCancelMode(nil); + PopupMenu.PopupComponent := Self; + if Pt.X < 0 then + Pt := ClientToScreen(Point(0,0)); + PopupMenu.Popup(Pt.X, Pt.Y); + Message.Result := 1; + end; + + if Message.Result = 0 then + inherited; +end; +{$ENDIF} + +procedure TTBCustomDockableWindow.GetMinShrinkSize(var AMinimumSize: Integer); +begin +end; + +function TTBCustomDockableWindow.GetFloatingWindowParentClass: TTBFloatingWindowParentClass; +begin + Result := TTBFloatingWindowParent; +end; + +procedure TTBCustomDockableWindow.GetMinMaxSize(var AMinClientWidth, + AMinClientHeight, AMaxClientWidth, AMaxClientHeight: Integer); +begin +end; + +function TTBCustomDockableWindow.GetShrinkMode: TTBShrinkMode; +begin + Result := tbsmNone; +end; + +procedure TTBCustomDockableWindow.ResizeBegin; +begin +end; + +procedure TTBCustomDockableWindow.ResizeTrack(var Rect: TRect; const OrigRect: TRect); +begin +end; + +procedure TTBCustomDockableWindow.ResizeTrackAccept; +begin +end; + +procedure TTBCustomDockableWindow.ResizeEnd; +begin +end; + +procedure TTBCustomDockableWindow.BeginSizing(const ASizeHandle: TTBSizeHandle); +var + UseSmoothDrag, DragX, DragY, ReverseX, ReverseY: Boolean; + MinWidth, MinHeight, MaxWidth, MaxHeight: Integer; + DragRect, OrigDragRect: TRect; + ScreenDC: HDC; + OrigPos, OldPos: TPoint; + + procedure DoResize; + begin + BeginUpdate; + try + ResizeTrackAccept; + Parent.BoundsRect := DragRect; + SetBounds(Left, Top, Parent.ClientWidth, Parent.ClientHeight); + finally + EndUpdate; + end; + + { Make sure it doesn't go completely off the screen } + MoveOnScreen(True); + end; + + procedure MouseMoved; + var + Pos: TPoint; + OldDragRect: TRect; + begin + GetCursorPos(Pos); + { It needs to check if the cursor actually moved since last time. This is + because a call to LockWindowUpdate (apparently) generates a mouse move + message even when mouse hasn't moved. } + if (Pos.X = OldPos.X) and (Pos.Y = OldPos.Y) then Exit; + OldPos := Pos; + + OldDragRect := DragRect; + DragRect := OrigDragRect; + if DragX then begin + if not ReverseX then Inc(DragRect.Right, Pos.X-OrigPos.X) + else Inc(DragRect.Left, Pos.X-OrigPos.X); + end; + if DragY then begin + if not ReverseY then Inc(DragRect.Bottom, Pos.Y-OrigPos.Y) + else Inc(DragRect.Top, Pos.Y-OrigPos.Y); + end; + if DragRect.Right-DragRect.Left < MinWidth then begin + if not ReverseX then DragRect.Right := DragRect.Left + MinWidth + else DragRect.Left := DragRect.Right - MinWidth; + end; + if (MaxWidth > 0) and (DragRect.Right-DragRect.Left > MaxWidth) then begin + if not ReverseX then DragRect.Right := DragRect.Left + MaxWidth + else DragRect.Left := DragRect.Right - MaxWidth; + end; + if DragRect.Bottom-DragRect.Top < MinHeight then begin + if not ReverseY then DragRect.Bottom := DragRect.Top + MinHeight + else DragRect.Top := DragRect.Bottom - MinHeight; + end; + if (MaxHeight > 0) and (DragRect.Bottom-DragRect.Top > MaxHeight) then begin + if not ReverseY then DragRect.Bottom := DragRect.Top + MaxHeight + else DragRect.Top := DragRect.Bottom - MaxHeight; + end; + + ResizeTrack(DragRect, OrigDragRect); + if not UseSmoothDrag then + DrawDraggingOutline(ScreenDC, @DragRect, @OldDragRect, False, False) + else + DoResize; + end; +var + Accept: Boolean; + Msg: TMsg; + R: TRect; +begin + if not Floating then Exit; + + Accept := False; + + UseSmoothDrag := FSmoothDrag; + + MinWidth := 0; + MinHeight := 0; + MaxWidth := 0; + MaxHeight := 0; + GetMinMaxSize(MinWidth, MinHeight, MaxWidth, MaxHeight); + Inc(MinWidth, Parent.Width-Width); + Inc(MinHeight, Parent.Height-Height); + if MaxWidth > 0 then + Inc(MaxWidth, Parent.Width-Width); + if MaxHeight > 0 then + Inc(MaxHeight, Parent.Height-Height); + + DragX := ASizeHandle in [twshLeft, twshRight, twshTopLeft, twshTopRight, + twshBottomLeft, twshBottomRight]; + ReverseX := ASizeHandle in [twshLeft, twshTopLeft, twshBottomLeft]; + DragY := ASizeHandle in [twshTop, twshTopLeft, twshTopRight, twshBottom, + twshBottomLeft, twshBottomRight]; + ReverseY := ASizeHandle in [twshTop, twshTopLeft, twshTopRight]; + + ResizeBegin(ASizeHandle); + try + { Before locking, make sure all pending paint messages are processed } + ProcessPaintMessages; + + if not UseSmoothDrag then begin + { This uses LockWindowUpdate to suppress all window updating so the + dragging outlines doesn't sometimes get garbled. (This is safe, and in + fact, is the main purpose of the LockWindowUpdate function) + IMPORTANT! While debugging you might want to enable the 'TB2Dock_DisableLock' + conditional define (see top of the source code). } + {$IFNDEF TB2Dock_DisableLock} + LockWindowUpdate(GetDesktopWindow); + {$ENDIF} + { Get a DC of the entire screen. Works around the window update lock + by specifying DCX_LOCKWINDOWUPDATE. } + ScreenDC := GetDCEx(GetDesktopWindow, 0, + DCX_LOCKWINDOWUPDATE or DCX_CACHE or DCX_WINDOW); + end + else + ScreenDC := 0; + try + SetCapture(Handle); + if (tbdsResizeClipCursor in FDockableWindowStyles) and + not UsingMultipleMonitors then begin + R := GetRectOfPrimaryMonitor(False); + ClipCursor(@R); + end; + + { Initialize } + OrigDragRect := Parent.BoundsRect; + DragRect := OrigDragRect; + if not UseSmoothDrag then + DrawDraggingOutline(ScreenDC, @DragRect, nil, False, False); + GetCursorPos(OrigPos); + OldPos := OrigPos; + + { Stay in message loop until capture is lost. Capture is removed either + by this procedure manually doing it, or by an outside influence (like + a message box or menu popping up) } + while GetCapture = Handle do begin + case Integer(GetMessage(Msg, 0, 0, 0)) of + -1: Break; { if GetMessage failed } + 0: begin + { Repost WM_QUIT messages } + PostQuitMessage(Msg.WParam); + Break; + end; + end; + + case Msg.Message of + WM_KEYDOWN, WM_KEYUP: + { Ignore all keystrokes while sizing except for Escape } + if Msg.WParam = VK_ESCAPE then + Break; + WM_MOUSEMOVE: + { Note to self: WM_MOUSEMOVE messages should never be dispatched + here to ensure no hints get shown during the drag process } + MouseMoved; + WM_LBUTTONDOWN, WM_LBUTTONDBLCLK: + { Make sure it doesn't begin another loop } + Break; + WM_LBUTTONUP: begin + Accept := True; + Break; + end; + WM_RBUTTONDOWN..WM_MBUTTONDBLCLK: + { Ignore all other mouse up/down messages } + ; + else + TranslateMessage(Msg); + DispatchMessage(Msg); + end; + end; + finally + { Since it sometimes breaks out of the loop without capture being + released } + if GetCapture = Handle then + ReleaseCapture; + ClipCursor(nil); + + if not UseSmoothDrag then begin + { Hide dragging outline. Since NT will release a window update lock if + another thread comes to the foreground, it has to release the DC + and get a new one for erasing the dragging outline. Otherwise, + the DrawDraggingOutline appears to have no effect when this happens. } + ReleaseDC(GetDesktopWindow, ScreenDC); + ScreenDC := GetDCEx(GetDesktopWindow, 0, + DCX_LOCKWINDOWUPDATE or DCX_CACHE or DCX_WINDOW); + DrawDraggingOutline(ScreenDC, nil, @DragRect, False, False); + ReleaseDC(GetDesktopWindow, ScreenDC); + + { Release window update lock } + {$IFNDEF TB2Dock_DisableLock} + LockWindowUpdate(0); + {$ENDIF} + end; + end; + + if not UseSmoothDrag and Accept then + DoResize; + finally + ResizeEnd; + end; +end; + +procedure TTBCustomDockableWindow.DoDockChangingHidden(NewFloating: Boolean; + DockingTo: TTBDock); +begin + if not(csDestroying in ComponentState) and Assigned(FOnDockChangingHidden) then + FOnDockChangingHidden(Self, NewFloating, DockingTo); +end; + +{ TTBCustomDockableWindow - property access methods } + +function TTBCustomDockableWindow.GetNonClientWidth: Integer; +begin + Result := CalcNCSizes.X; +end; + +function TTBCustomDockableWindow.GetNonClientHeight: Integer; +begin + Result := CalcNCSizes.Y; +end; + +function TTBCustomDockableWindow.IsLastDockStored: Boolean; +begin + Result := FCurrentDock = nil; {}{should this be changed to 'Floating'?} +end; + +function TTBCustomDockableWindow.IsWidthAndHeightStored: Boolean; +begin + Result := (CurrentDock = nil) and not Floating; +end; + +procedure TTBCustomDockableWindow.SetCloseButton(Value: Boolean); +begin + if FCloseButton <> Value then begin + FCloseButton := Value; + + { Update the close button's visibility } + if Parent is TTBFloatingWindowParent then + TTBFloatingWindowParent(Parent).RedrawNCArea([twrdCaption, twrdCloseButton]); + end; +end; + +procedure TTBCustomDockableWindow.SetCloseButtonWhenDocked(Value: Boolean); +begin + if FCloseButtonWhenDocked <> Value then begin + FCloseButtonWhenDocked := Value; + if Docked then + RecalcNCArea(Self); + end; +end; + +procedure TTBCustomDockableWindow.SetDefaultDock(Value: TTBDock); +begin + if FDefaultDock <> Value then begin + FDefaultDock := Value; + if Assigned(Value) then + Value.FreeNotification(Self); + end; +end; + +procedure TTBCustomDockableWindow.SetCurrentDock(Value: TTBDock); +begin + if not(csLoading in ComponentState) then begin + if Assigned(Value) then + Parent := Value + else + Parent := TBValidToolWindowParentForm(Self); + end; +end; + +procedure TTBCustomDockableWindow.SetDockPos(Value: Integer); +begin + FDockPos := Value; + if Docked then + CurrentDock.ArrangeToolbars; +end; + +procedure TTBCustomDockableWindow.SetDockRow(Value: Integer); +begin + FDockRow := Value; + if Docked then + CurrentDock.ArrangeToolbars; +end; + +procedure TTBCustomDockableWindow.SetAutoResize(Value: Boolean); +begin + if FAutoResize <> Value then begin + FAutoResize := Value; + if Value then + Arrange; + end; +end; + +procedure TTBCustomDockableWindow.SetBorderStyle(Value: TBorderStyle); +begin + if FBorderStyle <> Value then begin + FBorderStyle := Value; + if Docked then + RecalcNCArea(Self); + end; +end; + +procedure TTBCustomDockableWindow.SetDragHandleStyle(Value: TTBDragHandleStyle); +begin + if FDragHandleStyle <> Value then begin + FDragHandleStyle := Value; + if Docked then + RecalcNCArea(Self); + end; +end; + +procedure TTBCustomDockableWindow.SetFloating(Value: Boolean); +var + ParentFrm: TTBCustomForm; + NewFloatParent: TTBFloatingWindowParent; +begin + if FFloating <> Value then begin + if Value and not(csDesigning in ComponentState) then begin + ParentFrm := TBValidToolWindowParentForm(Self); + if (FFloatParent = nil) or (FFloatParent.FParentForm <> ParentFrm) then begin + NewFloatParent := GetFloatingWindowParentClass.Create(nil); + try + with NewFloatParent do begin + TWinControl(FParentForm) := ParentFrm; + FDockableWindow := Self; + Name := Format('NBFloatingWindowParent_%.8x', [Longint(NewFloatParent)]); + { ^ Must assign a unique name. In previous versions, reading in + components at run-time that had no name caused them to get assigned + names like "_1" because a component with no name -- the + TTBFloatingWindowParent form -- already existed. } + Caption := Self.Caption; + BorderStyle := bsToolWindow; + SetBounds(0, 0, (Width-ClientWidth) + Self.ClientWidth, + (Height-ClientHeight) + Self.ClientHeight); + ShowHint := True; + Visible := True; + end; + except + NewFloatParent.Free; + raise; + end; + FFloatParent := NewFloatParent; + end; + ParentFrm.FreeNotification(Self); + Parent := FFloatParent; + SetBounds(0, 0, Width, Height); + end + else + Parent := TBValidToolWindowParentForm(Self); + end; +end; + +procedure TTBCustomDockableWindow.SetFloatingMode(Value: TTBFloatingMode); +begin + if FFloatingMode <> Value then begin + FFloatingMode := Value; + if HandleAllocated then + Perform(CM_SHOWINGCHANGED, 0, 0); + end; +end; + +procedure TTBCustomDockableWindow.SetFloatingPosition(Value: TPoint); +begin + FFloatingPosition := Value; + if Floating and Assigned(Parent) then + Parent.SetBounds(Value.X, Value.Y, Parent.Width, Parent.Height); +end; + +procedure TTBCustomDockableWindow.SetFullSize(Value: Boolean); +begin + if FFullSize <> Value then begin + FFullSize := Value; + if Docked then + CurrentDock.ArrangeToolbars; + end; +end; + +procedure TTBCustomDockableWindow.SetLastDock(Value: TTBDock); +begin + if FUseLastDock and Assigned(FCurrentDock) then + { When docked, LastDock must be equal to DockedTo } + Value := FCurrentDock; + if FLastDock <> Value then begin + if Assigned(FLastDock) and (FLastDock <> Parent) then + FLastDock.ChangeDockList(False, Self); + FLastDock := Value; + if Assigned(Value) then begin + FUseLastDock := True; + Value.FreeNotification(Self); + Value.ChangeDockList(True, Self); + end; + end; +end; + +procedure TTBCustomDockableWindow.SetResizable(Value: Boolean); +begin + if FResizable <> Value then begin + FResizable := Value; + if Floating and (Parent is TTBFloatingWindowParent) then begin + { Recreate the window handle because Resizable affects whether the + tool window is created with a WS_THICKFRAME style } + TTBFloatingWindowParent(Parent).RecreateWnd; + end; + end; +end; + +procedure TTBCustomDockableWindow.SetShowCaption(Value: Boolean); +begin + if FShowCaption <> Value then begin + FShowCaption := Value; + if Floating then begin + { Recalculate FloatingWindowParent's NC area, and resize the toolbar + accordingly } + RecalcNCArea(Parent); + Arrange; + end; + end; +end; + +procedure TTBCustomDockableWindow.SetStretch(Value: Boolean); +begin + if FStretch <> Value then begin + FStretch := Value; + if Docked then + CurrentDock.ArrangeToolbars; + end; +end; + +procedure TTBCustomDockableWindow.SetUseLastDock(Value: Boolean); +begin + if FUseLastDock <> Value then begin + FUseLastDock := Value; + if not Value then + LastDock := nil + else + LastDock := FCurrentDock; + end; +end; + +(*function TTBCustomDockableWindow.GetVersion: TToolbar97Version; +begin + Result := Toolbar97VersionPropText; +end; + +procedure TTBCustomDockableWindow.SetVersion(const Value: TToolbar97Version); +begin + { write method required for the property to show up in Object Inspector } +end;*) + + +{ TTBBackground } + +type + PNotifyEvent = ^TNotifyEvent; + +constructor TTBBackground.Create(AOwner: TComponent); +begin + inherited; + FBkColor := clBtnFace; + FBitmap := TBitmap.Create; + FBitmap.OnChange := BitmapChanged; +end; + +destructor TTBBackground.Destroy; +var + I: Integer; +begin + inherited; + FBitmapCache.Free; + FBitmap.Free; + if Assigned(FNotifyList) then begin + for I := FNotifyList.Count-1 downto 0 do + Dispose(PNotifyEvent(FNotifyList[I])); + FNotifyList.Free; + end; +end; + +procedure TTBBackground.BitmapChanged(Sender: TObject); +var + I: Integer; +begin + { Erase the cache and notify } + FBitmapCache.Free; + FBitmapCache := nil; + if Assigned(FNotifyList) then + for I := 0 to FNotifyList.Count-1 do + PNotifyEvent(FNotifyList[I])^(Self); +end; + +procedure TTBBackground.Draw(DC: HDC; const DrawRect: TRect); +var + UseBmp: TBitmap; + R2: TRect; + SaveIndex: Integer; + DC2: HDC; + Brush: HBRUSH; + P: TPoint; +begin + if FBitmapCache = nil then begin + FBitmapCache := TBitmap.Create; + FBitmapCache.Palette := CopyPalette(FBitmap.Palette); + FBitmapCache.Width := FBitmap.Width; + FBitmapCache.Height := FBitmap.Height; + if not FTransparent then begin + { Copy from a possible DIB to our DDB } + BitBlt(FBitmapCache.Canvas.Handle, 0, 0, FBitmapCache.Width, + FBitmapCache.Height, FBitmap.Canvas.Handle, 0, 0, SRCCOPY); + end + else begin + with FBitmapCache do begin + Canvas.Brush.Color := FBkColor; + R2 := Rect(0, 0, Width, Height); + Canvas.BrushCopy(R2, FBitmap, R2, + FBitmap.Canvas.Pixels[0, Height-1] or $02000000); + end; + end; + FBitmap.Dormant; + end; + UseBmp := FBitmapCache; + + DC2 := 0; + SaveIndex := SaveDC(DC); + try + if UseBmp.Palette <> 0 then begin + SelectPalette(DC, UseBmp.Palette, True); + RealizePalette(DC); + end; + { Note: versions of Toolbar97 prior to 1.68 used 'UseBmp.Canvas.Handle' + instead of DC2 in the BitBlt call. This was changed because there + seems to be a bug in D2/BCB1's Graphics.pas: if you called + .Background.LoadFromFile() twice the background + would not be shown. } + if (UseBmp.Width = 8) and (UseBmp.Height = 8) then begin + { Use pattern brushes to draw 8x8 bitmaps. + Note: Win9x can't use bitmaps <8x8 in size for pattern brushes } + Brush := CreatePatternBrush(UseBmp.Handle); + GetWindowOrgEx(DC, P); + SetBrushOrgEx(DC, DrawRect.Left - P.X, DrawRect.Top - P.Y, nil); + FillRect(DC, DrawRect, Brush); + DeleteObject(Brush); + end + else begin + { BitBlt is faster than pattern brushes on large bitmaps } + DC2 := CreateCompatibleDC(DC); + SelectObject(DC2, UseBmp.Handle); + R2 := DrawRect; + while R2.Left < R2.Right do begin + while R2.Top < R2.Bottom do begin + BitBlt(DC, R2.Left, R2.Top, UseBmp.Width, UseBmp.Height, + DC2, 0, 0, SRCCOPY); + Inc(R2.Top, UseBmp.Height); + end; + R2.Top := DrawRect.Top; + Inc(R2.Left, UseBmp.Width); + end; + end; + finally + if DC2 <> 0 then + DeleteDC(DC2); + { Restore the palette and brush origin back } + RestoreDC(DC, SaveIndex); + end; +end; + +function TTBBackground.GetPalette: HPALETTE; +begin + Result := FBitmap.Palette; +end; + +procedure TTBBackground.SysColorChanged; +begin + if FTransparent and (FBkColor < 0) then + BitmapChanged(nil); +end; + +function TTBBackground.UsingBackground: Boolean; +begin + Result := (FBitmap.Width <> 0) and (FBitmap.Height <> 0); +end; + +procedure TTBBackground.RegisterChanges(Proc: TNotifyEvent); +var + I: Integer; + P: PNotifyEvent; +begin + if FNotifyList = nil then + FNotifyList := TList.Create; + for I := 0 to FNotifyList.Count-1 do begin + P := FNotifyList[I]; + if (TMethod(P^).Code = TMethod(Proc).Code) and + (TMethod(P^).Data = TMethod(Proc).Data) then + Exit; + end; + FNotifyList.Expand; + New(P); + P^ := Proc; + FNotifyList.Add(P); +end; + +procedure TTBBackground.UnregisterChanges(Proc: TNotifyEvent); +var + I: Integer; + P: PNotifyEvent; +begin + if FNotifyList = nil then + Exit; + for I := 0 to FNotifyList.Count-1 do begin + P := FNotifyList[I]; + if (TMethod(P^).Code = TMethod(Proc).Code) and + (TMethod(P^).Data = TMethod(Proc).Data) then begin + FNotifyList.Delete(I); + Dispose(P); + Break; + end; + end; +end; + +procedure TTBBackground.SetBkColor(Value: TColor); +begin + if FBkColor <> Value then begin + FBkColor := Value; + if FTransparent then + BitmapChanged(nil); + end; +end; + +procedure TTBBackground.SetBitmap(Value: TBitmap); +begin + FBitmap.Assign(Value); +end; + +procedure TTBBackground.SetTransparent(Value: Boolean); +begin + if FTransparent <> Value then begin + FTransparent := Value; + BitmapChanged(nil); + end; +end; + + +{ Global procedures } + +procedure TBCustomLoadPositions(const OwnerComponent: TComponent; + const ReadIntProc: TTBPositionReadIntProc; + const ReadStringProc: TTBPositionReadStringProc; const ExtraData: Pointer); +var + Rev: Integer; + + function FindDock(AName: String): TTBDock; + var + I: Integer; + begin + Result := nil; + for I := 0 to OwnerComponent.ComponentCount-1 do + if (OwnerComponent.Components[I] is TTBDock) and + (CompareText(OwnerComponent.Components[I].Name, AName) = 0) then begin + Result := TTBDock(OwnerComponent.Components[I]); + Break; + end; + end; + + procedure ReadValues(const Toolbar: TTBCustomDockableWindow; const NewDock: TTBDock); + var + Pos: TPoint; + Data: TTBReadPositionData; + LastDockName: String; + ADock: TTBDock; + begin + with Toolbar do begin + DockRow := ReadIntProc(Name, rvDockRow, DockRow, ExtraData); + DockPos := ReadIntProc(Name, rvDockPos, DockPos, ExtraData); + Pos.X := ReadIntProc(Name, rvFloatLeft, 0, ExtraData); + Pos.Y := ReadIntProc(Name, rvFloatTop, 0, ExtraData); + @Data.ReadIntProc := @ReadIntProc; + @Data.ReadStringProc := @ReadStringProc; + Data.ExtraData := ExtraData; + ReadPositionData(Data); + FloatingPosition := Pos; + if Assigned(NewDock) then + Parent := NewDock + else begin + //Parent := Form; + Floating := True; + MoveOnScreen(True); + if (Rev >= 3) and FUseLastDock then begin + LastDockName := ReadStringProc(Name, rvLastDock, '', ExtraData); + if LastDockName <> '' then begin + ADock := FindDock(LastDockName); + if Assigned(ADock) then + LastDock := ADock; + end; + end; + end; + Arrange; + DoneReadingPositionData(Data); + end; + end; + +var + DocksDisabled: TList; + I: Integer; + ToolWindow: TComponent; + ADock: TTBDock; + DockedToName: String; +begin + DocksDisabled := TList.Create; + try + with OwnerComponent do + for I := 0 to ComponentCount-1 do + if Components[I] is TTBDock then begin + TTBDock(Components[I]).BeginUpdate; + DocksDisabled.Add(Components[I]); + end; + + for I := 0 to OwnerComponent.ComponentCount-1 do begin + ToolWindow := OwnerComponent.Components[I]; + if ToolWindow is TTBCustomDockableWindow then + with TTBCustomDockableWindow(ToolWindow) do begin + {}{should skip over toolbars that are neither Docked nor Floating } + if Name = '' then + raise Exception.Create(STBToolWinNameNotSet); + Rev := ReadIntProc(Name, rvRev, 0, ExtraData); + if Rev = 2000 then begin + Visible := ReadIntProc(Name, rvVisible, Ord(Visible), ExtraData) <> 0; + DockedToName := ReadStringProc(Name, rvDockedTo, '', ExtraData); + if DockedToName <> '' then begin + if DockedToName <> rdDockedToFloating then begin + ADock := FindDock(DockedToName); + if (ADock <> nil) and (ADock.FAllowDrag) then + ReadValues(TTBCustomDockableWindow(ToolWindow), ADock); + end + else + ReadValues(TTBCustomDockableWindow(ToolWindow), nil); + end; + end; + end; + end; + finally + for I := DocksDisabled.Count-1 downto 0 do + TTBDock(DocksDisabled[I]).EndUpdate; + DocksDisabled.Free; + end; +end; + +procedure TBCustomSavePositions(const OwnerComponent: TComponent; + const WriteIntProc: TTBPositionWriteIntProc; + const WriteStringProc: TTBPositionWriteStringProc; const ExtraData: Pointer); +var + I: Integer; + N, L: String; + Data: TTBWritePositionData; +begin + for I := 0 to OwnerComponent.ComponentCount-1 do + if OwnerComponent.Components[I] is TTBCustomDockableWindow then + with TTBCustomDockableWindow(OwnerComponent.Components[I]) do begin + if Name = '' then + raise Exception.Create(STBToolwinNameNotSet); + if Floating then + N := rdDockedToFloating + else if Docked then begin + if CurrentDock.FAllowDrag then begin + N := CurrentDock.Name; + if N = '' then + raise Exception.Create(STBToolwinDockedToNameNotSet); + end + else + N := ''; + end + else + Continue; { skip if it's neither floating nor docked } + L := ''; + if Assigned(FLastDock) then + L := FLastDock.Name; + WriteIntProc(Name, rvRev, rdCurrentRev, ExtraData); + WriteIntProc(Name, rvVisible, Ord(Visible), ExtraData); + WriteStringProc(Name, rvDockedTo, N, ExtraData); + WriteStringProc(Name, rvLastDock, L, ExtraData); + WriteIntProc(Name, rvDockRow, FDockRow, ExtraData); + WriteIntProc(Name, rvDockPos, FDockPos, ExtraData); + WriteIntProc(Name, rvFloatLeft, FFloatingPosition.X, ExtraData); + WriteIntProc(Name, rvFloatTop, FFloatingPosition.Y, ExtraData); + @Data.WriteIntProc := @WriteIntProc; + @Data.WriteStringProc := @WriteStringProc; + Data.ExtraData := ExtraData; + WritePositionData(Data); + end; +end; + +type + PIniReadWriteData = ^TIniReadWriteData; + TIniReadWriteData = record + IniFile: TIniFile; + SectionNamePrefix: String; + end; + +function IniReadInt(const ToolbarName, Value: String; const Default: Longint; + const ExtraData: Pointer): Longint; far; +begin + Result := PIniReadWriteData(ExtraData).IniFile.ReadInteger( + PIniReadWriteData(ExtraData).SectionNamePrefix + ToolbarName, Value, Default); +end; +function IniReadString(const ToolbarName, Value, Default: String; + const ExtraData: Pointer): String; far; +begin + Result := PIniReadWriteData(ExtraData).IniFile.ReadString( + PIniReadWriteData(ExtraData).SectionNamePrefix + ToolbarName, Value, Default); +end; +procedure IniWriteInt(const ToolbarName, Value: String; const Data: Longint; + const ExtraData: Pointer); far; +begin + PIniReadWriteData(ExtraData).IniFile.WriteInteger( + PIniReadWriteData(ExtraData).SectionNamePrefix + ToolbarName, Value, Data); +end; +procedure IniWriteString(const ToolbarName, Value, Data: String; + const ExtraData: Pointer); far; +begin + PIniReadWriteData(ExtraData).IniFile.WriteString( + PIniReadWriteData(ExtraData).SectionNamePrefix + ToolbarName, Value, Data); +end; + +procedure TBIniLoadPositions(const OwnerComponent: TComponent; + const Filename, SectionNamePrefix: String); +var + Data: TIniReadWriteData; +begin + Data.IniFile := TIniFile.Create(Filename); + try + Data.SectionNamePrefix := SectionNamePrefix; + TBCustomLoadPositions(OwnerComponent, IniReadInt, IniReadString, @Data); + finally + Data.IniFile.Free; + end; +end; + +procedure TBIniSavePositions(const OwnerComponent: TComponent; + const Filename, SectionNamePrefix: String); +var + Data: TIniReadWriteData; +begin + Data.IniFile := TIniFile.Create(Filename); + try + Data.SectionNamePrefix := SectionNamePrefix; + TBCustomSavePositions(OwnerComponent, IniWriteInt, IniWriteString, @Data); + finally + Data.IniFile.Free; + end; +end; + +function RegReadInt(const ToolbarName, Value: String; const Default: Longint; + const ExtraData: Pointer): Longint; far; +begin + Result := TRegIniFile(ExtraData).ReadInteger(ToolbarName, Value, Default); +end; +function RegReadString(const ToolbarName, Value, Default: String; + const ExtraData: Pointer): String; far; +begin + Result := TRegIniFile(ExtraData).ReadString(ToolbarName, Value, Default); +end; +procedure RegWriteInt(const ToolbarName, Value: String; const Data: Longint; + const ExtraData: Pointer); far; +begin + TRegIniFile(ExtraData).WriteInteger(ToolbarName, Value, Data); +end; +procedure RegWriteString(const ToolbarName, Value, Data: String; + const ExtraData: Pointer); far; +begin + TRegIniFile(ExtraData).WriteString(ToolbarName, Value, Data); +end; + +procedure TBRegLoadPositions(const OwnerComponent: TComponent; + const RootKey: DWORD; const BaseRegistryKey: String); +var + Reg: TRegIniFile; +begin + Reg := TRegIniFile.Create(''); + try + Reg.RootKey := RootKey; + Reg.OpenKey(BaseRegistryKey, True); { assigning to RootKey resets the current key } + TBCustomLoadPositions(OwnerComponent, RegReadInt, RegReadString, Reg); + finally + Reg.Free; + end; +end; + +procedure TBRegSavePositions(const OwnerComponent: TComponent; + const RootKey: DWORD; const BaseRegistryKey: String); +var + Reg: TRegIniFile; +begin + Reg := TRegIniFile.Create(''); + try + Reg.RootKey := RootKey; + Reg.OpenKey(BaseRegistryKey, True); { assigning to RootKey resets the current key } + TBCustomSavePositions(OwnerComponent, RegWriteInt, RegWriteString, Reg); + finally + Reg.Free; + end; +end; + +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2DsgnConvertOptions.dfm b/official/2.1.6+2.1.beta1/Source/TB2DsgnConvertOptions.dfm new file mode 100644 index 0000000000000000000000000000000000000000..9d5ad455139a68dd6c12b8f4c375030fc52b7d08 GIT binary patch literal 903 zcmaKr&yLeD5XQX;jq|7Ng2W1rJ@tr|Biy!WqgHA+r7VylRGY{DNnV93j;|KUi1^j6scC2YhKZ%TBe2(j*{C5uJQH2h4LF@y z(o3kwdkHAEs_ISO0qVwl87iO};!?Bg&SlO@w{UkWlS~1Ku;?6AXU_J(^LgQm$kx^e zza-YI4sytprobKZeQx};+|o|VZ5f%?E9Y?dXwjp7=}k||Ug2~(rXc z20N{#=+u*|qEpC=TFd0XcyiR@_UkG8v67W8m8pjQ!O- zLF+%9R==!iZnJPKir18V#OKXrCedJUg{a5!){NzEgcDMc0r!rQ>ck&9tcG0tX6QF{ C5*`@< literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Source/TB2DsgnConvertOptions.dfm.txt b/official/2.1.6+2.1.beta1/Source/TB2DsgnConvertOptions.dfm.txt new file mode 100644 index 0000000..a1b062f --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2DsgnConvertOptions.dfm.txt @@ -0,0 +1,65 @@ +object TBConvertOptionsForm: TTBConvertOptionsForm + Left = 225 + Top = 133 + BorderIcons = [biSystemMenu, biMinimize] + BorderStyle = bsDialog + Caption = 'Convert Menu' + ClientHeight = 90 + ClientWidth = 249 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 8 + Top = 8 + Width = 81 + Height = 13 + Caption = '&Menu to convert:' + FocusControl = MenuCombo + end + object MenuCombo: TComboBox + Left = 8 + Top = 24 + Width = 233 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 0 + end + object ConvertButton: TButton + Left = 8 + Top = 57 + Width = 73 + Height = 23 + Caption = '&Convert' + Default = True + ModalResult = 1 + TabOrder = 1 + end + object HelpButton: TButton + Left = 168 + Top = 57 + Width = 73 + Height = 23 + Caption = '&Help' + TabOrder = 2 + OnClick = HelpButtonClick + end + object Button1: TButton + Left = 88 + Top = 57 + Width = 73 + Height = 23 + Cancel = True + Caption = 'Cancel' + ModalResult = 2 + TabOrder = 3 + end +end diff --git a/official/2.1.6+2.1.beta1/Source/TB2DsgnConvertOptions.pas b/official/2.1.6+2.1.beta1/Source/TB2DsgnConvertOptions.pas new file mode 100644 index 0000000..5c47a46 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2DsgnConvertOptions.pas @@ -0,0 +1,67 @@ +unit TB2DsgnConvertOptions; + +{ + Toolbar2000 + Copyright (C) 1998-2005 by Jordan Russell + All rights reserved. + + The contents of this file are subject to the "Toolbar2000 License"; you may + not use or distribute this file except in compliance with the + "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in + TB2k-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + + Alternatively, the contents of this file may be used under the terms of the + GNU General Public License (the "GPL"), in which case the provisions of the + GPL are applicable instead of those in the "Toolbar2000 License". A copy of + the GPL may be found in GPL-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + If you wish to allow use of your version of this file only under the terms of + the GPL and not to allow others to use your version of this file under the + "Toolbar2000 License", indicate your decision by deleting the provisions + above and replace them with the notice and other provisions required by the + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + + $jrsoftware: tb2k/Source/TB2DsgnConvertOptions.pas,v 1.6 2005/01/06 03:56:50 jr Exp $ +} + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + StdCtrls; + +type + TTBConvertOptionsForm = class(TForm) + MenuCombo: TComboBox; + Label1: TLabel; + ConvertButton: TButton; + HelpButton: TButton; + Button1: TButton; + procedure HelpButtonClick(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +implementation + +{$R *.DFM} + +procedure TTBConvertOptionsForm.HelpButtonClick(Sender: TObject); +const + SMsg1 = 'This will import the contents of a TMainMenu or TPopupMenu ' + + 'component on the form.'#13#10#13#10 + + 'The new items will take the names of the old menu ' + + 'items. The old menu items will have "_OLD" appended to the end of ' + + 'their names.'#13#10#13#10 + + 'After the conversion process completes, you should verify that ' + + 'everything was copied correctly. Afterward, you may delete the ' + + 'old menu component.'; +begin + Application.MessageBox(SMsg1, 'Convert Help', MB_OK or MB_ICONINFORMATION); +end; + +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2DsgnConverter.dfm b/official/2.1.6+2.1.beta1/Source/TB2DsgnConverter.dfm new file mode 100644 index 0000000000000000000000000000000000000000..f684c17f209da2e10834ba14db6c65666b920583 GIT binary patch literal 795 zcma)(v69m;5QY_-SdN`sLPbI2>PqHbArbLhW|DKp7F-F6y?60gkus73xksU-ypEPP z;2C%iYLM;V+;9!u?nv7I)3?6^MCptqH}B^uou_eB3{-j7zR%19hY(#PydVmgfkYLc2L4*=vi=6X z*w;S;5X7Q`!igYUYQT1`+BM~9T^@n!HK>Kix6a3)hB(EKkWZJTHZyq)SD-b!hq`U_ zIeuf$@3#WJ^t_XqM}((#l2khMSXGeVtjD)%e;AFK}NHMz6{qmyDC85!Bc{YElX;OC4^$2dNN HoDk6;D60O= literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Source/TB2DsgnConverter.dfm.txt b/official/2.1.6+2.1.beta1/Source/TB2DsgnConverter.dfm.txt new file mode 100644 index 0000000..7d2cbaf --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2DsgnConverter.dfm.txt @@ -0,0 +1,51 @@ +object TBConverterForm: TTBConverterForm + Left = 200 + Top = 104 + AutoScroll = False + Caption = 'Conversion Status' + ClientHeight = 218 + ClientWidth = 425 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = True + Position = poScreenCenter + OnClose = FormClose + PixelsPerInch = 96 + TextHeight = 13 + object MessageList: TListBox + Left = 8 + Top = 8 + Width = 409 + Height = 169 + Anchors = [akLeft, akTop, akRight, akBottom] + ItemHeight = 13 + TabOrder = 0 + end + object CloseButton: TButton + Left = 176 + Top = 185 + Width = 73 + Height = 23 + Anchors = [akRight, akBottom] + Cancel = True + Caption = '&Close' + Enabled = False + TabOrder = 1 + OnClick = CloseButtonClick + end + object CopyButton: TButton + Left = 256 + Top = 185 + Width = 161 + Height = 23 + Anchors = [akRight, akBottom] + Caption = 'C&opy Messages to Clipboard' + Enabled = False + TabOrder = 2 + OnClick = CopyButtonClick + end +end diff --git a/official/2.1.6+2.1.beta1/Source/TB2DsgnConverter.pas b/official/2.1.6+2.1.beta1/Source/TB2DsgnConverter.pas new file mode 100644 index 0000000..e1a2456 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2DsgnConverter.pas @@ -0,0 +1,217 @@ +unit TB2DsgnConverter; + +{ + Toolbar2000 + Copyright (C) 1998-2005 by Jordan Russell + All rights reserved. + + The contents of this file are subject to the "Toolbar2000 License"; you may + not use or distribute this file except in compliance with the + "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in + TB2k-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + + Alternatively, the contents of this file may be used under the terms of the + GNU General Public License (the "GPL"), in which case the provisions of the + GPL are applicable instead of those in the "Toolbar2000 License". A copy of + the GPL may be found in GPL-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + If you wish to allow use of your version of this file only under the terms of + the GPL and not to allow others to use your version of this file under the + "Toolbar2000 License", indicate your decision by deleting the provisions + above and replace them with the notice and other provisions required by the + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + + $jrsoftware: tb2k/Source/TB2DsgnConverter.pas,v 1.16 2005/01/06 03:56:50 jr Exp $ +} + +interface + +{$I TB2Ver.inc} + +uses + Windows, SysUtils, Classes, Controls, Forms, Menus, StdCtrls, + TB2Item; + +type + TTBConverterForm = class(TForm) + MessageList: TListBox; + CloseButton: TButton; + CopyButton: TButton; + procedure CloseButtonClick(Sender: TObject); + procedure CopyButtonClick(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + end; + +procedure DoConvert(const ParentItem: TTBCustomItem; const Owner: TComponent); + +implementation + +{$R *.DFM} + +uses + Clipbrd, TB2DsgnConvertOptions; + +procedure DoConvert(const ParentItem: TTBCustomItem; const Owner: TComponent); +const + SPropNotTransferred = 'Warning: %s property not transferred on ''%s''.'; +var + ConverterForm: TTBConverterForm; + + procedure Log(const S: String); + begin + ConverterForm.MessageList.Items.Add(S); + ConverterForm.MessageList.TopIndex := ConverterForm.MessageList.Items.Count-1; + ConverterForm.Update; + end; + + procedure Recurse(MenuItem: TMenuItem; TBItem: TTBCustomItem); + var + I: Integer; + Src: TMenuItem; + IsSep, IsSubmenu: Boolean; + Dst: TTBCustomItem; + N: String; + begin + for I := 0 to MenuItem.Count-1 do begin + Src := MenuItem[I]; + IsSep := (Src.Caption = '-'); + IsSubmenu := False; + if not IsSep then begin + if Src.Count > 0 then + IsSubmenu := True; + if not IsSubmenu then + Dst := TTBItem.Create(Owner) + else + Dst := TTBSubmenuItem.Create(Owner); + Dst.Action := Src.Action; + {$IFDEF JR_D6} + Dst.AutoCheck := Src.AutoCheck; + {$ENDIF} + Dst.Caption := Src.Caption; + Dst.Checked := Src.Checked; + if Src.Default then + Dst.Options := Dst.Options + [tboDefault]; + Dst.Enabled := Src.Enabled; + Dst.GroupIndex := Src.GroupIndex; + Dst.HelpContext := Src.HelpContext; + Dst.ImageIndex := Src.ImageIndex; + Dst.RadioItem := Src.RadioItem; + Dst.ShortCut := Src.ShortCut; + {$IFDEF JR_D5} + Dst.SubMenuImages := Src.SubMenuImages; + {$ENDIF} + Dst.OnClick := Src.OnClick; + end + else begin + Dst := TTBSeparatorItem.Create(Owner); + end; + Dst.Hint := Src.Hint; + Dst.Tag := Src.Tag; + Dst.Visible := Src.Visible; + if not IsSep then + { Temporarily clear the menu item's OnClick property, so that renaming + the menu item doesn't cause the function name to change } + Src.OnClick := nil; + try + N := Src.Name; + Src.Name := N + '_OLD'; + Dst.Name := N; + finally + if not IsSep then + Src.OnClick := Dst.OnClick; + end; + TBItem.Add(Dst); + {$IFDEF JR_D5} + if @Src.OnAdvancedDrawItem <> nil then + Log(Format(SPropNotTransferred, ['OnAdvancedDrawItem', Dst.Name])); + {$ENDIF} + if @Src.OnDrawItem <> nil then + Log(Format(SPropNotTransferred, ['OnDrawItem', Dst.Name])); + if @Src.OnMeasureItem <> nil then + Log(Format(SPropNotTransferred, ['OnMeasureItem', Dst.Name])); + if IsSubmenu then + Recurse(Src, Dst); + end; + end; + +var + OptionsForm: TTBConvertOptionsForm; + I: Integer; + C: TComponent; + Menu: TMenu; +begin + Menu := nil; + OptionsForm := TTBConvertOptionsForm.Create(Application); + try + for I := 0 to Owner.ComponentCount-1 do begin + C := Owner.Components[I]; + if (C is TMenu) and not(C is TTBPopupMenu) then + OptionsForm.MenuCombo.Items.AddObject(C.Name, C); + end; + if OptionsForm.MenuCombo.Items.Count = 0 then + raise Exception.Create('Could not find any menus on the form to convert'); + OptionsForm.MenuCombo.ItemIndex := 0; + if (OptionsForm.ShowModal <> mrOK) or (OptionsForm.MenuCombo.ItemIndex < 0) then + Exit; + Menu := TMenu(OptionsForm.MenuCombo.Items.Objects[OptionsForm.MenuCombo.ItemIndex]); + finally + OptionsForm.Free; + end; + ParentItem.SubMenuImages := Menu.Images; + ConverterForm := TTBConverterForm.Create(Application); + ConverterForm.Show; + ConverterForm.Update; + Log(Format('Converting ''%s'', please wait...', [Menu.Name])); + ParentItem.ViewBeginUpdate; + try + Recurse(Menu.Items, ParentItem); + finally + ParentItem.ViewEndUpdate; + end; + Log('Done!'); + ConverterForm.CloseButton.Enabled := True; + ConverterForm.CopyButton.Enabled := True; +end; + + +{ TTBConverterForm } + +procedure TTBConverterForm.FormClose(Sender: TObject; + var Action: TCloseAction); +begin + Action := caFree; +end; + +procedure TTBConverterForm.CloseButtonClick(Sender: TObject); +begin + Close; +end; + +procedure TTBConverterForm.CopyButtonClick(Sender: TObject); +begin + Clipboard.AsText := MessageList.Items.Text; +end; + + +procedure FreeConverterForms; +var + I: Integer; + Form: TCustomForm; +label Restart; +begin + Restart: + for I := 0 to Screen.CustomFormCount-1 do begin + Form := Screen.CustomForms[I]; + if Form is TTBConverterForm then begin + Form.Free; + goto Restart; + end; + end; +end; + +initialization +finalization + FreeConverterForms; +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2DsgnItemEditor.dfm b/official/2.1.6+2.1.beta1/Source/TB2DsgnItemEditor.dfm new file mode 100644 index 0000000000000000000000000000000000000000..748a7cda66491df4c58d876553ae3d5180707d5a GIT binary patch literal 2866 zcma)8&2r;J5FX1vk}TPANO9oilZ(rS4a)=I$aW<~ymna%djwgUji(~ds7B*B=EPR< zAUwuixbqkscm;|h^o%sJtle5TWx6}_b@%u6wERyO1;O=gFr7~)x4~?&nxmJ4FC2t| z%!gLgAt`O~1AN7WrSO5P9}vweV{g`)y_7UM5lS+Bz_?)2vV&<|-g z^f4!I^ZULyB-layMG|`)hXOBTBeu0<84-k0v!BW)F{U1rj(K-M$B`gU@Si5s$G4@m zpkBfk&7(aGpbwyo0WCwnl5CNFBK3wGtzsniEXe(xnW~X56 zPt@^tJOhrbh~KD7&I)Hht?I(Gcy^!0P#FU70BZi8;Ju{}3fnk=ZoWfD?DjYz57g|0 ziIll_Lt^aX1VgioTAf=OL;uEwwZdV%pvl3u{0-Z$7!#Higlk2cVOYSzCZrG8?CZR_ z4ZKZw_%PutH3vGRJw+S$2fe z9?8ue$%NuYA9CJ*IVIlxmo&c(27YE{Z{KhY9R4ty)K4HYY54gx7B%Yqm=gA6}R3 z-Vyrf@74sCS_bsy>Ex!&`pb~R!;o*`hERA5`eYx8M+mu4WvR)DKA*tOrxG>PzJ;+F z6zkc8wHOkL`5@oVrCscgKk_+#Mt!&dWp809WU(iOBeOv3y~cYPz1|4{`%aIu4esGc z23oSQjwNkrc5k=g1D5;X890J=x$t(vcwx!~D5vGK6F}udWwrqXi;`*yU6rtiM+jWTWX#kXbN&+E{&)G~pO(^}fT%7I5|$V0(+o>+1MUx~t3O>G=g|Axxc=T+z; zZH;_u&Nx=jQ#0HiNtd}$>mzdpV$I}wgs&JKbI$fKHd67j3`ssHeqvu8nYBTMT5m0H zHxlNQhU)~!R^D0@{;k?jyKJIg0@R4>dMrKEpxYzqtYNpLuL|BO!OxBuHFReg!jFX- zd}pM*dC6^cuHtq|+(G4b4cMK)=j#Jxca*!;EZ6FHDxqq+W+}RHS!O=3!WXIkQ?IX& zdbxA + ColumnClick = False + DragMode = dmAutomatic + HideSelection = False + MultiSelect = True + ReadOnly = True + RowSelect = True + PopupMenu = TBPopupMenu1 + TabOrder = 1 + ViewStyle = vsReport + OnChange = ListViewChange + OnDblClick = ListViewDblClick + OnEnter = ListViewEnter + OnDragDrop = ListViewDragDrop + OnDragOver = ListViewDragOver + OnKeyDown = ListViewKeyDown + OnKeyPress = ListViewKeyPress + end + object Toolbar: TTBToolbar + Left = 0 + Top = 0 + Width = 440 + Height = 19 + Align = alTop + Caption = 'Toolbar' + DockPos = 0 + FullSize = True + LinkSubitems = ToolbarItems + ParentShowHint = False + ShowHint = True + TabOrder = 0 + end + object TBPopupMenu1: TTBPopupMenu + LinkSubitems = ToolbarItems + Left = 256 + Top = 120 + end + object TBItemContainer1: TTBItemContainer + Left = 224 + Top = 120 + object ToolbarItems: TTBSubmenuItem + object NewItemButton: TTBItem + Caption = 'New &Item' + Hint = 'New Item' + ImageIndex = 0 + ShortCut = 45 + OnClick = NewItemButtonClick + end + object NewSubmenuButton: TTBItem + Caption = 'New &Submenu' + Hint = 'New Submenu' + ImageIndex = 1 + ShortCut = 16429 + OnClick = NewSubmenuButtonClick + end + object NewSepButton: TTBItem + Caption = 'New Se¶tor' + Hint = 'New Separator' + ImageIndex = 2 + ShortCut = 189 + OnClick = NewSepButtonClick + end + object MoreMenu: TTBSubmenuItem + Caption = '&More' + Options = [tboDropdownArrow] + end + object TBSeparatorItem1: TTBSeparatorItem + end + object CutButton: TTBItem + Caption = 'Cu&t' + Enabled = False + Hint = 'Cut' + ImageIndex = 5 + OnClick = CutButtonClick + end + object CopyButton: TTBItem + Caption = '&Copy' + Enabled = False + Hint = 'Copy' + ImageIndex = 4 + OnClick = CopyButtonClick + end + object PasteButton: TTBItem + Caption = '&Paste' + Hint = 'Paste' + ImageIndex = 6 + OnClick = PasteButtonClick + end + object DeleteButton: TTBItem + Caption = '&Delete Item' + Enabled = False + Hint = 'Delete Item' + ImageIndex = 3 + ShortCut = 46 + OnClick = DeleteButtonClick + end + object TBSeparatorItem2: TTBSeparatorItem + end + object MoveUpButton: TTBItem + Caption = 'Move &Up' + Hint = 'Move Up' + ImageIndex = 7 + ShortCut = 32806 + OnClick = MoveUpButtonClick + end + object MoveDownButton: TTBItem + Caption = 'Move D&own' + Hint = 'Move Down' + ImageIndex = 8 + ShortCut = 32808 + OnClick = MoveDownButtonClick + end + object TBSeparatorItem3: TTBSeparatorItem + end + object TBSubmenuItem1: TTBSubmenuItem + Caption = '&Tools' + Options = [tboDropdownArrow] + object TConvertMenu: TTBItem + Caption = '&Convert TMainMenu/TPopupMenu...' + OnClick = TConvertMenuClick + end + end + end + end +end diff --git a/official/2.1.6+2.1.beta1/Source/TB2DsgnItemEditor.pas b/official/2.1.6+2.1.beta1/Source/TB2DsgnItemEditor.pas new file mode 100644 index 0000000..b0c824f --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2DsgnItemEditor.pas @@ -0,0 +1,1401 @@ +unit TB2DsgnItemEditor; + +{ + Toolbar2000 + Copyright (C) 1998-2005 by Jordan Russell + All rights reserved. + + The contents of this file are subject to the "Toolbar2000 License"; you may + not use or distribute this file except in compliance with the + "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in + TB2k-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + + Alternatively, the contents of this file may be used under the terms of the + GNU General Public License (the "GPL"), in which case the provisions of the + GPL are applicable instead of those in the "Toolbar2000 License". A copy of + the GPL may be found in GPL-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + If you wish to allow use of your version of this file only under the terms of + the GPL and not to allow others to use your version of this file under the + "Toolbar2000 License", indicate your decision by deleting the provisions + above and replace them with the notice and other provisions required by the + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + + $jrsoftware: tb2k/Source/TB2DsgnItemEditor.pas,v 1.55 2005/01/27 06:48:53 jr Exp $ +} + +interface + +{$I TB2Ver.inc} + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + StdCtrls, ExtCtrls, Buttons, ComCtrls, ImgList, Menus, + TB2Item, TB2Toolbar, TB2Dock, + {$IFDEF JR_D6} + DesignIntf, DesignWindows, DesignEditors; + {$ELSE} + DsgnIntf, DsgnWnds, LibIntf; + {$ENDIF} + +type + TTBItemEditForm = class(TDesignWindow) + TreeView: TTreeView; + ListView: TListView; + Splitter1: TSplitter; + Toolbar: TTBToolbar; + NewSubmenuButton: TTBItem; + NewItemButton: TTBItem; + NewSepButton: TTBItem; + DeleteButton: TTBItem; + TBSeparatorItem1: TTBSeparatorItem; + TBPopupMenu1: TTBPopupMenu; + TBItemContainer1: TTBItemContainer; + ToolbarItems: TTBSubmenuItem; + CopyButton: TTBItem; + CutButton: TTBItem; + PasteButton: TTBItem; + MoreMenu: TTBSubmenuItem; + TBSeparatorItem2: TTBSeparatorItem; + TBSubmenuItem1: TTBSubmenuItem; + TConvertMenu: TTBItem; + TBSeparatorItem3: TTBSeparatorItem; + MoveUpButton: TTBItem; + MoveDownButton: TTBItem; + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure TreeViewChange(Sender: TObject; Node: TTreeNode); + procedure NewSubmenuButtonClick(Sender: TObject); + procedure NewItemButtonClick(Sender: TObject); + procedure ListViewChange(Sender: TObject; Item: TListItem; + Change: TItemChange); + procedure DeleteButtonClick(Sender: TObject); + procedure NewSepButtonClick(Sender: TObject); + procedure ListViewDragOver(Sender, Source: TObject; X, Y: Integer; + State: TDragState; var Accept: Boolean); + procedure ListViewDragDrop(Sender, Source: TObject; X, Y: Integer); + procedure TreeViewEnter(Sender: TObject); + procedure TreeViewDragDrop(Sender, Source: TObject; X, Y: Integer); + procedure TreeViewDragOver(Sender, Source: TObject; X, Y: Integer; + State: TDragState; var Accept: Boolean); + procedure CopyButtonClick(Sender: TObject); + procedure ListViewKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); + procedure CutButtonClick(Sender: TObject); + procedure PasteButtonClick(Sender: TObject); + procedure FormActivate(Sender: TObject); + procedure ListViewKeyPress(Sender: TObject; var Key: Char); + procedure ListViewDblClick(Sender: TObject); + procedure ListViewEnter(Sender: TObject); + procedure TreeViewKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); + procedure TConvertMenuClick(Sender: TObject); + procedure TreeViewKeyPress(Sender: TObject; var Key: Char); + procedure MoveUpButtonClick(Sender: TObject); + procedure MoveDownButtonClick(Sender: TObject); + private + FParentComponent: TComponent; + FRootItem, FSelParentItem: TTBCustomItem; + FNotifyItemList: TList; + FSettingSel, FRebuildingTree, FRebuildingList: Integer; + function AddListViewItem(const Index: Integer; + const Item: TTBCustomItem): TListItem; + procedure Copy; + procedure CreateNewItem(const AClass: TTBCustomItemClass); + procedure Cut; + procedure Delete; + procedure DeleteItem(const Item: TTBCustomItem); + function GetItemTreeCaption(AItem: TTBCustomItem): String; + procedure GetSelItemList(const AList: TList); + procedure ItemNotification(Ancestor: TTBCustomItem; Relayed: Boolean; + Action: TTBItemChangedAction; Index: Integer; Item: TTBCustomItem); + procedure MoreItemClick(Sender: TObject); + procedure MoveItem(CurIndex, NewIndex: Integer); + procedure Paste; + procedure RebuildList; + procedure RebuildTree; + procedure SelectInObjectInspector(AList: TList); + procedure SetSelParentItem(ASelParentItem: TTBCustomItem); + function TreeViewDragHandler(Sender, Source: TObject; X, Y: Integer; + Drop: Boolean): Boolean; + procedure UnregisterAllNotifications; + protected + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + function UniqueName(Component: TComponent): String; override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + {$IFDEF JR_D6} + function EditAction(Action: TEditAction): Boolean; override; + {$ELSE} + procedure EditAction(Action: TEditAction); override; + {$ENDIF} + function GetEditState: TEditState; override; + end; + + TTBItemsEditor = class(TDefaultEditor) + public + procedure Edit; override; + procedure ExecuteVerb(Index: Integer); override; + function GetVerb(Index: Integer): String; override; + function GetVerbCount: Integer; override; + end; + + TTBItemsPropertyEditor = class(TStringProperty) + public + procedure Edit; override; + function GetAttributes: TPropertyAttributes; override; + function GetValue: String; override; + end; + +procedure TBRegisterItemClass(AClass: TTBCustomItemClass; + const ACaption: String; ResInstance: HINST); + +type + TTBDsgnEditorHook = procedure(Sender: TTBItemEditForm) of object; + +procedure TBRegisterDsgnEditorHook(Hook: TTBDsgnEditorHook); +procedure TBUnregisterDsgnEditorHook(Hook: TTBDsgnEditorHook); + +implementation + +{$R *.DFM} + +uses + TypInfo, CommCtrl, TB2Version, TB2Common, TB2DsgnConverter; + +type + {}TTBCustomItemAccess = class(TTBCustomItem); + {}TControlAccess = class(TControl); +{$IFNDEF JR_D5} + TDesignerSelectionList = TComponentList; +{$ENDIF} +{$IFDEF JR_D6} + TDesignerSelectionList = IDesignerSelections; +{$ENDIF} + + PItemClassInfo = ^TItemClassInfo; + TItemClassInfo = record + ItemClass: TTBCustomItemClass; + Caption: String; + ImageIndex: Integer; + end; + +var + ItemClasses: TList; + ItemImageList: TImageList; + EditFormHooks: TList; + +{$IFNDEF JR_D6} +function CreateSelectionList: TDesignerSelectionList; +begin + Result := TDesignerSelectionList.Create; +end; +{$ENDIF} + +procedure FreeItemClasses; +var + I: Integer; + IC: TList; +begin + if ItemClasses = nil then Exit; + IC := ItemClasses; + ItemClasses := nil; + for I := IC.Count-1 downto 0 do + Dispose(PItemClassInfo(IC[I])); + IC.Free; +end; + +procedure UnregisterModuleItemClasses(AModule: {$IFDEF JR_D5} LongWord {$ELSE} Integer {$ENDIF}); +var + I: Integer; + Info: PItemClassInfo; +begin + I := 0; + while I < ItemClasses.Count do begin + Info := ItemClasses[I]; + if FindClassHInstance(Info.ItemClass) = AModule then begin + ItemClasses.Delete(I); + Dispose(Info); + end + else + Inc(I); + end; + { Note: TTBItemEditForm also holds references to item classes, but since + Delphi automatically closes all editor forms before compiling/removing + a package, we don't need to remove them. } +end; + +function LoadItemImage(Instance: HINST; const ResName: String): Integer; +var + Bmp: TBitmap; +begin + Bmp := TBitmap.Create; + try + Bmp.Handle := LoadBitmap(Instance, PChar(ResName)); + if Bmp.Handle = 0 then + Result := -1 + else + Result := ItemImageList.AddMasked(Bmp, Bmp.Canvas.Pixels[0, Bmp.Height-1]); + finally + Bmp.Free; + end; +end; + +procedure TBRegisterItemClass(AClass: TTBCustomItemClass; + const ACaption: String; ResInstance: HINST); +var + Info: PItemClassInfo; + I: Integer; +begin + if ItemClasses <> nil then + for I := ItemClasses.Count - 1 downto 0 do + begin + Info := ItemClasses[I]; + if Info.ItemClass = AClass then + begin + Dispose(Info); + ItemClasses.Delete(I); + end; + end; + New(Info); + Info.ItemClass := AClass; + Info.Caption := ACaption; + Info.ImageIndex := LoadItemImage(ResInstance, Uppercase(AClass.ClassName)); + ItemClasses.Add(Info); +end; + +function GetItemClassImage(AClass: TTBCustomItemClass): Integer; +var + I: Integer; + Info: PItemClassInfo; +begin + for I := ItemClasses.Count-1 downto 0 do begin + Info := ItemClasses[I]; + if AClass.InheritsFrom(Info.ItemClass) then begin + Result := Info.ImageIndex; + if Result >= 0 then + Exit; + end; + end; + if AClass.InheritsFrom(TTBSubmenuItem) then + Result := 1 + else if AClass.InheritsFrom(TTBSeparatorItem) then + Result := 2 + else + Result := 0; +end; + +procedure ShowEditForm(AParentComponent: TComponent; ARootItem: TTBCustomItem; + const ADesigner: {$IFDEF JR_D6} IDesigner {$ELSE} IFormDesigner {$ENDIF}); +var + I: Integer; + Form: TCustomForm; + EditForm: TTBItemEditForm; +begin + if Assigned(ARootItem.LinkSubitems) then begin + case MessageDlg(Format('The LinkSubitems property is set to ''%s''. ' + + 'Would you like to edit that item instead?', + [ARootItem.LinkSubitems.Name]), mtConfirmation, [mbYes, mbNo, mbCancel], 0) of + mrYes: begin + AParentComponent := ARootItem.LinkSubitems; + ARootItem := ARootItem.LinkSubitems; + end; + mrCancel: Exit; + end; + end; + for I := 0 to Screen.FormCount-1 do begin + Form := Screen.Forms[I]; + if Form is TTBItemEditForm then + if TTBItemEditForm(Form).FRootItem = ARootItem then begin + Form.Show; + if Form.WindowState = wsMinimized then + Form.WindowState := wsNormal; + Exit; + end; + end; + EditForm := TTBItemEditForm.Create(Application); + try + EditForm.Designer := ADesigner; + EditForm.FParentComponent := AParentComponent; + AParentComponent.FreeNotification(EditForm); + EditForm.FRootItem := ARootItem; + ARootItem.FreeNotification(EditForm); + EditForm.FSelParentItem := ARootItem; + EditForm.Caption := 'Editing ' + AParentComponent.Name; + EditForm.RebuildTree; + EditForm.RebuildList; + {$IFDEF JR_D9} + EditForm.PopupMode := pmExplicit; + {$ENDIF} + EditForm.Show; + except + EditForm.Free; + raise; + end; +end; + +function IsSubmenuItem(Item: TTBCustomItem): Boolean; +begin + Result := tbisSubitemsEditable in TTBCustomItemAccess(Item).ItemStyle; +end; + +procedure ShowVersion; +const + AboutText = + '%s'#13#10 + + 'Copyright (C) 1998-2005 by Jordan Russell'#13#10 + + 'For conditions of distribution and use, see LICENSE.TXT.'#13#10 + + #13#10 + + 'Visit my web site for the latest versions of Toolbar2000:'#13#10 + + 'http://www.jrsoftware.org/'; +begin + MessageDlg(Format(AboutText, [Toolbar2000VersionPropText]), mtInformation, + [mbOK], 0); +end; + + +{ TTBItemEditForm } + +constructor TTBItemEditForm.Create(AOwner: TComponent); +var + I: Integer; + Info: PItemClassInfo; + Item: TTBItem; +begin + inherited; + FNotifyItemList := TList.Create; + ToolbarItems.SubMenuImages := ItemImageList; + ListView.SmallImages := ItemImageList; + { Populate the 'More' menu } + for I := 0 to ItemClasses.Count-1 do begin + Info := ItemClasses[I]; + Item := TTBItem.Create(Self); + Item.Caption := Info.Caption; + Item.ImageIndex := GetItemClassImage(Info.ItemClass); + Item.Tag := Integer(Info.ItemClass); + Item.OnClick := MoreItemClick; + MoreMenu.Add(Item); + end; + { Run the hooks } + + if EditFormHooks <> nil then + for I := 0 to EditFormHooks.Count - 1 do + TTBDsgnEditorHook(EditFormHooks[I]^)(Self); +end; + +destructor TTBItemEditForm.Destroy; +begin + inherited; + if Assigned(FNotifyItemList) then begin + UnregisterAllNotifications; + FNotifyItemList.Free; + FNotifyItemList := nil; + end; +end; + +procedure TTBItemEditForm.FormClose(Sender: TObject; + var Action: TCloseAction); +begin + Action := caFree; +end; + +procedure TTBItemEditForm.FormActivate(Sender: TObject); +begin + SetSelParentItem(FSelParentItem); +end; + +procedure TTBItemEditForm.Notification(AComponent: TComponent; + Operation: TOperation); +begin + inherited; + if (Operation = opRemove) and + ((AComponent = FParentComponent) or (AComponent = FRootItem)) then + { Must use Free instead of Close, since Close causes the freeing of the + form to be delayed until the next message. We have to destroy the form + immediately, otherwise Delphi will crash when Compile is clicked on the + TB2k package. } + Free; + {}{temp:} + (*if (Operation = opRemove) and (FNotifyItemList.IndexOf(AComponent) <> -1) then begin + outputdebugstring(pchar('Still in list: ' + AComponent.name)); + //beep; + end;*) +end; + +function TTBItemEditForm.UniqueName(Component: TComponent): String; +begin + Result := Designer.UniqueName(Component.ClassName); +end; + +function TTBItemEditForm.GetEditState: TEditState; +begin + Result := []; + if ActiveControl = ListView then begin + if Assigned(ListView.Selected) then + Result := [esCanDelete, esCanCut, esCanCopy]; + if ClipboardComponents then + Include(Result, esCanPaste); + end; +end; + +{$IFDEF JR_D6} +function TTBItemEditForm.EditAction(Action: TEditAction): Boolean; +{$ELSE} +procedure TTBItemEditForm.EditAction(Action: TEditAction); +{$ENDIF} +begin + {$IFDEF JR_D6} + Result := True; + {$ENDIF} + case Action of + eaCut: Cut; + eaCopy: Copy; + eaPaste: Paste; + eaDelete: Delete; + {$IFDEF JR_D6} + else + Result := False; + {$ENDIF} + end; +end; + +procedure TTBItemEditForm.UnregisterAllNotifications; +var + I: Integer; +begin + for I := FNotifyItemList.Count-1 downto 0 do begin + //outputdebugstring(pchar('Unregall: ' + TTBCustomItem(FNotifyItemList[I]).name)); + TTBCustomItem(FNotifyItemList[I]).UnregisterNotification(ItemNotification); + FNotifyItemList.Delete(I); + end; +end; + +procedure TTBItemEditForm.ItemNotification(Ancestor: TTBCustomItem; + Relayed: Boolean; Action: TTBItemChangedAction; Index: Integer; + Item: TTBCustomItem); +var + ListItem: TListItem; + TreeNode: TTreeNode; + I: Integer; + C: String; +begin + { Manipulate the list view when items are inserted, deleted, or their Caption + changes } + case Action of + tbicInserted: + begin + if (Ancestor = FSelParentItem) and not Relayed then + AddListViewItem(Index, Item); + if IsSubmenuItem(Item) then + RebuildTree; + end; + tbicDeleting: + if (Ancestor = FSelParentItem) and not Relayed then begin + ListItem := ListView.FindData(0, Item, True, False); + if Assigned(ListItem) then + ListItem.Delete; + end; + tbicInvalidateAndResize: + if (Ancestor = FSelParentItem) and not Relayed then begin + ListItem := ListView.FindData(0, Item, True, False); + if Assigned(ListItem) and (ListItem.Caption <> TTBCustomItem(Item).Caption) then + ListItem.Caption := TTBCustomItem(Item).Caption; + end; + end; + { Update tree view when an item is deleted, or a Caption changes } + if Action = tbicDeleting then begin + I := FNotifyItemList.IndexOf(Item); + if I <> -1 then begin + //outputdebugstring(pchar('Deleting, so unreging: ' + item.name)); + TTBCustomItem(Item).UnregisterNotification(ItemNotification); + FNotifyItemList.Delete(I); + end; + end; + if Action in [tbicDeleting, tbicInvalidateAndResize, tbicNameChanged] then begin + TreeNode := TreeView.Items.GetFirstNode; + while Assigned(TreeNode) do begin + if TreeNode.Data = Item then begin + if Action = tbicDeleting then begin + TreeNode.Delete; + if FSelParentItem = Item then + SetSelParentItem(TTBCustomItem(Item).Parent); + end + else begin + { tbicInvalidateAndResize, tbicNameChanged: } + C := GetItemTreeCaption(Item); + if TreeNode.Text <> C then + TreeNode.Text := C; + end; + Break; + end; + TreeNode := TreeNode.GetNext; + end; + end; +end; + +function TTBItemEditForm.GetItemTreeCaption(AItem: TTBCustomItem): String; +begin + if AItem <> FRootItem then begin + Result := AItem.Caption; + if Result = '' then + Result := '[' + AItem.Name + ']'; + end + else + Result := '(Root)'; +end; + +procedure TTBItemEditForm.RebuildTree; + + procedure Recurse(const AParentItem: TTBCustomItem; const ATreeNode: TTreeNode; + var FoundSelParentItem: TTreeNode); + var + I: Integer; + NewNode: TTreeNode; + ChildItem: TTBCustomItem; + begin + {}AParentItem.FreeNotification(Self); + AParentItem.RegisterNotification(ItemNotification); + FNotifyItemList.Add(AParentItem); + NewNode := TreeView.Items.AddChild(ATreeNode, GetItemTreeCaption(AParentItem)); + NewNode.Data := AParentItem; + if AParentItem = FSelParentItem then + FoundSelParentItem := NewNode; + for I := 0 to AParentItem.Count-1 do begin + ChildItem := AParentItem[I]; + if IsSubmenuItem(ChildItem) then + Recurse(ChildItem, NewNode, FoundSelParentItem); + end; + end; + +var + FoundSelParentItem: TTreeNode; +begin + Inc(FRebuildingTree); + try + TreeView.Items.BeginUpdate; + try + TreeView.Items.Clear; + UnregisterAllNotifications; + FoundSelParentItem := nil; + Recurse(FRootItem, nil, FoundSelParentItem); + if FoundSelParentItem = nil then + SetSelParentItem(FRootItem) + else + TreeView.Selected := FoundSelParentItem; + TreeView.Items[0].Expand(True); + finally + TreeView.Items.EndUpdate; + end; + finally + Dec(FRebuildingTree); + end; +end; + +function TTBItemEditForm.AddListViewItem(const Index: Integer; + const Item: TTBCustomItem): TListItem; +begin + Result := ListView.Items.Insert(Index); + Result.Data := Item; + if not(Item is TTBControlItem) then begin + Result.Caption := Item.Caption; + Result.Subitems.Add(Item.ClassName); + Result.ImageIndex := GetItemClassImage(TTBCustomItemClass(Item.ClassType)); + end + else begin + Result.Caption := '(Control)'; + Result.Subitems.Add(Item.ClassName); + Result.ImageIndex := -1; + end; +end; + +procedure TTBItemEditForm.RebuildList; +var + ChildItem: TTBCustomItem; + I: Integer; +begin + Inc(FRebuildingList); + try + ListView.Items.BeginUpdate; + try + ListView.Items.Clear; + if Assigned(FSelParentItem) then begin + for I := 0 to FSelParentItem.Count-1 do begin + ChildItem := FSelParentItem[I]; + { Check for csDestroying because deleting an item in the tree view + causes the parent item to be selected, and the parent item won't + get a notification that the item is deleting since notifications + were already sent } + if not(csDestroying in ChildItem.ComponentState) then + AddListViewItem(I, ChildItem); + end; + { Add an empty item to the end } + ListView.Items.Add.ImageIndex := -1; + end; + finally + ListView.Items.EndUpdate; + end; + { Work around a strange TListView bug(?). Without this, the column header + isn't painted properly. } + if HandleAllocated then + SetWindowPos(ListView.Handle, 0, 0, 0, 0, 0, SWP_FRAMECHANGED or + SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE or SWP_NOZORDER); + finally + Dec(FRebuildingList); + end; +end; + +procedure TTBItemEditForm.SelectInObjectInspector(AList: TList); +var + CompList1, CompList2: TDesignerSelectionList; + I: Integer; + C: TComponent; +begin + { Designer.SetSelections will make components appear selected on the form. + It will also select the component in Object Inspector, but only if the + form has the focus. TDesignWindow.SetSelection will select the component + in Object Inspector regardless of whether the form has the focus. } + CompList1 := CreateSelectionList; + CompList2 := CreateSelectionList; + for I := 0 to AList.Count-1 do begin + C := AList[I]; + { Must check for csDestroying. If SetSelection is passed a component that's + destroying, Delphi will crash. } + if not(csDestroying in C.ComponentState) then begin + CompList1.Add(C); + CompList2.Add(C); + end; + end; + if CompList1.Count = 0 then begin + {$IFNDEF JR_D6} + CompList1.Free; + CompList2.Free; + {$ENDIF} + end + else begin + Designer.SetSelections(CompList1); + { Note: Never pass an empty list to SetSelection or Delphi will crash } + { History here: + - 1.34: SetSelection call remarked out because it fixed Delphi 6 issue + with random AV's after the editor was closed. + - 1.38: SetSelection call restored because without it, Ctrl+X/C/V didn't + work. + - 1.40: SetSelection call disabled on Delphi 6 only because AV problem + still seems to exist despite another change which I thought fixed it. + On D6 it isn't necessary to call SetSelection for Ctrl+X/C/V to work. + Note: Using "ComponentDesigner.SetSelection(Designer, nil, CompList2);" + instead seems to fix the AV problem, but for consistency with Delphi's + TMainMenu editor (which only selects items when its parent form is + focused), I decided not to call SetSelection at all on D6. + } + {$IFNDEF JR_D6} + SetSelection(CompList2); + {$ENDIF} + end; +end; + +procedure TTBItemEditForm.GetSelItemList(const AList: TList); +var + ListItem: TListItem; +begin + ListItem := nil; + while True do begin + ListItem := ListView.GetNextItem(ListItem, sdAll, [isSelected]); + if ListItem = nil then + Break; + if Assigned(ListItem.Data) then + AList.Add(ListItem.Data); + end; +end; + +procedure TTBItemEditForm.SetSelParentItem(ASelParentItem: TTBCustomItem); +{ - Rebuilds the list view to match a new selection (ASelParentItem) in the + tree view + - Updates toolbar + - Selects selected item(s) into Object Inspector } +var + I: Integer; + TreeNode: TTreeNode; + ItemIsSelected: Boolean; + List: TList; +begin + if FSettingSel > 0 then + Exit; + List := TList.Create; + Inc(FSettingSel); + try + if FSelParentItem <> ASelParentItem then begin + FSelParentItem := ASelParentItem; + NewSubmenuButton.Enabled := Assigned(ASelParentItem); + NewItemButton.Enabled := Assigned(ASelParentItem); + NewSepButton.Enabled := Assigned(ASelParentItem); + for I := 0 to MoreMenu.Count-1 do + MoreMenu[I].Enabled := Assigned(ASelParentItem); + if not Assigned(TreeView.Selected) or (TreeView.Selected.Data <> FSelParentItem) then begin + if FSelParentItem = nil then + TreeView.Selected := nil + else begin + TreeNode := TreeView.Items.GetFirstNode; + while Assigned(TreeNode) do begin + if TreeNode.Data = FSelParentItem then begin + TreeView.Selected := TreeNode; + Break; + end; + TreeNode := TreeNode.GetNext; + end; + end; + end; + RebuildList; + end; + + ItemIsSelected := (ActiveControl = ListView) and Assigned(ListView.Selected) and + Assigned(ListView.Selected.Data); + if ItemIsSelected then + GetSelItemList(List); + + CutButton.Enabled := ItemIsSelected; + CopyButton.Enabled := ItemIsSelected; + PasteButton.Enabled := (ActiveControl = ListView); + DeleteButton.Enabled := ItemIsSelected or + ((ActiveControl = TreeView) and (FSelParentItem <> FRootItem)); + MoveUpButton.Enabled := ItemIsSelected and + (FSelParentItem.IndexOf(List.First) > 0); + MoveDownButton.Enabled := ItemIsSelected and + (FSelParentItem.IndexOf(List.Last) < FSelParentItem.Count-1); + + if ActiveControl = ListView then begin + if List.Count = 0 then + { No item was selected, or the blank item was selected. + Select the root item so it looks like no item was selected in + Object Inspector } + List.Add(FRootItem); + end + else if not Assigned(ASelParentItem) or (ASelParentItem = FRootItem) then + List.Add(FParentComponent) + else + List.Add(ASelParentItem); + SelectInObjectInspector(List); + finally + Dec(FSettingSel); + List.Free; + end; +end; + +procedure TTBItemEditForm.Cut; +begin + Copy; + Delete; +end; + +procedure TTBItemEditForm.Copy; +var + SelList: TList; + CompList: TDesignerSelectionList; + I: Integer; + Item: TTBCustomItem; +begin + if ListView.Selected = nil then Exit; + CompList := nil; + SelList := TList.Create; + try + GetSelItemList(SelList); + CompList := CreateSelectionList; + for I := 0 to SelList.Count-1 do begin + Item := SelList[I]; + if Item is TTBControlItem then + raise EInvalidOperation.Create('Cannot cut or copy TTBControlItems'); + CompList.Add(Item); + end; + CopyComponents(FParentComponent.Owner, CompList); + finally + {$IFNDEF JR_D6} + CompList.Free; + {$ENDIF} + SelList.Free; + end; +end; + +procedure TTBItemEditForm.Paste; +var + CompList: TDesignerSelectionList; +begin + if FSelParentItem = nil then Exit; + CompList := CreateSelectionList; + try + PasteComponents(FParentComponent.Owner, FSelParentItem, CompList); + if CompList.Count <> 0 then + Designer.Modified; + finally + {$IFNDEF JR_D6} + CompList.Free; + {$ENDIF} + end; +end; + +procedure TTBItemEditForm.DeleteItem(const Item: TTBCustomItem); +begin + if csAncestor in Item.ComponentState then + raise EInvalidOperation.Create('Items introduced in an ancestor form cannot be deleted'); + //Designer.ValidateRename(Item, Item.Name, ''); + Item.Free; + Designer.Modified; +end; + +procedure TTBItemEditForm.Delete; +var + List: TList; + Item: TTBCustomItem; + ListItem: TListItem; +begin + List := TList.Create; + try + List.Add(FSelParentItem); + SelectInObjectInspector(List); + finally + List.Free; + end; + FSelParentItem.ViewBeginUpdate; + try + while Assigned(ListView.Selected) do begin + Item := ListView.Selected.Data; + if Item = nil then + Break; + DeleteItem(Item); + end; + finally + FSelParentItem.ViewEndUpdate; + end; + { After deleting the items, select the item with the focus } + ListItem := ListView.GetNextItem(nil, sdAll, [isFocused]); + if Assigned(ListItem) then + ListItem.Selected := True; +end; + +procedure TTBItemEditForm.MoveItem(CurIndex, NewIndex: Integer); +var + WasFocused: Boolean; +begin + WasFocused := ListView.Items[CurIndex].Focused; + + FSelParentItem.Move(CurIndex, NewIndex); + Designer.Modified; + + if WasFocused then + ListView.Items[NewIndex].Focused := True; + ListView.Items[NewIndex].Selected := True; +end; + +procedure TTBItemEditForm.TreeViewChange(Sender: TObject; Node: TTreeNode); +var + NewSelectedParentItem: TTBCustomItem; +begin + if (FRebuildingTree > 0) or (FSettingSel > 0) then Exit; + if Node = nil then + NewSelectedParentItem := nil + else + NewSelectedParentItem := Node.Data; + SetSelParentItem(NewSelectedParentItem); +end; + +procedure TTBItemEditForm.TreeViewEnter(Sender: TObject); +{ When the tree view gets the focus, act as if the currently selected item + was clicked. } +begin + ListView.Selected := nil; + SetSelParentItem(FSelParentItem); +end; + +procedure TTBItemEditForm.ListViewChange(Sender: TObject; Item: TListItem; + Change: TItemChange); +begin + if (FRebuildingList > 0) or (FSettingSel > 0) or (Change <> ctState) or + (csDestroying in ListView.ComponentState) then + Exit; + SetSelParentItem(FSelParentItem); +end; + +procedure TTBItemEditForm.ListViewEnter(Sender: TObject); +begin + { When list view gets the focus, update the toolbar } + SetSelParentItem(FSelParentItem); +end; + +procedure TTBItemEditForm.ListViewDblClick(Sender: TObject); +var + SelItem: TTBCustomItem; + PropCount, I: Integer; + Props: PPropList; + PropInfo: PPropInfo; + MethodName: String; + Method: TMethod; +begin + SelItem := nil; + if Assigned(ListView.Selected) then + SelItem := ListView.Selected.Data; + if SelItem = nil then Exit; + if IsSubmenuItem(SelItem) then begin + SetSelParentItem(SelItem); + Exit; + end; + PropCount := GetPropList(SelItem.ClassInfo, [tkMethod], nil); + GetMem(Props, PropCount * SizeOf(PPropInfo)); + try + GetPropList(SelItem.ClassInfo, [tkMethod], Props); + for I := PropCount-1 downto 0 do begin + PropInfo := Props[I]; + if CompareText(PropInfo.Name, 'OnClick') = 0 then begin + Method := GetMethodProp(SelItem, PropInfo); + MethodName := Designer.GetMethodName(Method); + if MethodName = '' then begin + MethodName := SelItem.Name + 'Click'; + Method := Designer.CreateMethod(MethodName, GetTypeData(PropInfo.PropType^)); + SetMethodProp(SelItem, + {$IFDEF JR_D5} PropInfo.Name {$ELSE} PropInfo {$ENDIF}, + Method); + Designer.Modified; + end; + if Designer.MethodExists(MethodName) then + Designer.ShowMethod(MethodName); + Break; + end; + end; + finally + FreeMem(Props); + end; +end; + +procedure TTBItemEditForm.ListViewKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); +begin + case Key of + VK_RETURN: begin + Key := 0; + ActivateInspector(#0); + end; + VK_INSERT: begin + Key := 0; + if ssCtrl in Shift then + NewSubmenuButtonClick(Sender) + else + NewItemButtonClick(Sender); + end; + VK_DELETE: begin + Key := 0; + Delete; + end; + end; +end; + +procedure TTBItemEditForm.TreeViewKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); +begin + case Key of + VK_RETURN: begin + Key := 0; + ActivateInspector(#0); + end; + VK_DELETE: begin + Key := 0; + DeleteButtonClick(Sender); + end; + end; +end; + +procedure TTBItemEditForm.TreeViewKeyPress(Sender: TObject; var Key: Char); +begin + if Key in [#33..#126] then begin + ActivateInspector(Key); + Key := #0; + end + else if Key = #13 then + Key := #0; { suppress beep } +end; + +procedure TTBItemEditForm.ListViewKeyPress(Sender: TObject; var Key: Char); +begin + if Key = '-' then begin + NewSepButtonClick(Sender); + Key := #0; + end + else if Key in [#33..#126] then begin + ActivateInspector(Key); + Key := #0; + end; +end; + +procedure TTBItemEditForm.ListViewDragOver(Sender, Source: TObject; X, + Y: Integer; State: TDragState; var Accept: Boolean); +{ List item dragged over the list view } +var + Item: TListItem; +begin + Accept := False; + if (Sender = ListView) and (Source = ListView) and (ListView.SelCount = 1) then begin + Item := ListView.GetItemAt(X, Y); + if Assigned(Item) and (Item <> ListView.Selected) then + Accept := True; + end; +end; + +procedure TTBItemEditForm.ListViewDragDrop(Sender, Source: TObject; X, + Y: Integer); +{ List item dropped onto another list item } +var + ListItem: TListItem; + Item: TTBCustomItem; + NewIndex: Integer; +begin + if (Sender = ListView) and (Source = ListView) and (ListView.SelCount = 1) then begin + ListItem := ListView.GetItemAt(X, Y); + if Assigned(ListItem) and (ListItem <> ListView.Selected) and Assigned(FSelParentItem) then begin + NewIndex := FSelParentItem.IndexOf(ListItem.Data); + if NewIndex <> -1 then begin + ListView.Items.BeginUpdate; + { For good performance and to prevent Object Inspector flicker, increment + FSettingSel to prevent calls to SetSelParentItem while moving items } + Inc(FSettingSel); + try + Item := ListView.Selected.Data; + MoveItem(FSelParentItem.IndexOf(Item), NewIndex); + finally + Dec(FSettingSel); + ListView.Items.EndUpdate; + end; + { After decrementing FSettingSel, now call SetSelParentItem, to update + the toolbar buttons } + SetSelParentItem(FSelParentItem); + end; + end; + end; +end; + +function TTBItemEditForm.TreeViewDragHandler(Sender, Source: TObject; + X, Y: Integer; Drop: Boolean): Boolean; +var + Node: TTreeNode; + ListItem: TListItem; + Item, NewParentItem: TTBCustomItem; + ItemList: TList; + I: Integer; + NeedRebuildTree: Boolean; +begin + Result := False; + if (Sender = TreeView) and (Source = ListView) then begin + Node := TreeView.GetNodeAt(X, Y); + if Assigned(Node) and (Node <> TreeView.Selected) then begin + NewParentItem := Node.Data; + ItemList := TList.Create; + try + ListItem := nil; + while True do begin + ListItem := ListView.GetNextItem(ListItem, sdAll, [isSelected]); + if ListItem = nil then + Break; + Item := ListItem.Data; + if Assigned(Item) and (Item <> NewParentItem) and + not Item.ContainsItem(NewParentItem) and + not(Item is TTBControlItem) then begin + Result := True; + ItemList.Add(Item); + end; + end; + if Drop then begin + NeedRebuildTree := False; + for I := 0 to ItemList.Count-1 do begin + Item := ItemList[I]; + Item.Parent.Remove(Item); + NewParentItem.Add(Item); + Designer.Modified; + if IsSubmenuItem(Item) then + NeedRebuildTree := True; + end; + if NeedRebuildTree then + RebuildTree; + end; + finally + ItemList.Free; + end; + end; + end; +end; + +procedure TTBItemEditForm.TreeViewDragOver(Sender, Source: TObject; X, + Y: Integer; State: TDragState; var Accept: Boolean); +{ List item dragged over the tree view } +begin + Accept := TreeViewDragHandler(Sender, Source, X, Y, False); +end; + +procedure TTBItemEditForm.TreeViewDragDrop(Sender, Source: TObject; X, + Y: Integer); +{ List item dropped onto the tree view } +begin + TreeViewDragHandler(Sender, Source, X, Y, True); +end; + +procedure TTBItemEditForm.CreateNewItem(const AClass: TTBCustomItemClass); +var + NewIndex: Integer; + NewItem: TTBCustomItem; + ListItem: TListItem; +begin + if FSelParentItem = nil then Exit; + NewIndex := -1; + if (GetKeyState(VK_SHIFT) >= 0) and Assigned(ListView.Selected) then + NewIndex := FSelParentItem.IndexOf(ListView.Selected.Data); + if NewIndex = -1 then + NewIndex := FSelParentItem.Count; + NewItem := AClass.Create(FParentComponent.Owner{Designer.Form}); + try + NewItem.Name := Designer.UniqueName(NewItem.ClassName); + FSelParentItem.Insert(NewIndex, NewItem); + except + NewItem.Free; + raise; + end; + Designer.Modified; + ListView.Selected := nil; + ListItem := ListView.FindData(0, NewItem, True, False); + if Assigned(ListItem) then begin + ListItem.Selected := True; + ListItem.Focused := True; + ListItem.MakeVisible(False); + ListView.SetFocus; + end; +end; + +procedure TTBItemEditForm.NewSubmenuButtonClick(Sender: TObject); +begin + CreateNewItem(TTBSubmenuItem); +end; + +procedure TTBItemEditForm.NewItemButtonClick(Sender: TObject); +begin + CreateNewItem(TTBItem); +end; + +procedure TTBItemEditForm.NewSepButtonClick(Sender: TObject); +begin + CreateNewItem(TTBSeparatorItem); +end; + +procedure TTBItemEditForm.MoreItemClick(Sender: TObject); +begin + CreateNewItem(TTBCustomItemClass((Sender as TTBItem).Tag)); +end; + +procedure TTBItemEditForm.CutButtonClick(Sender: TObject); +begin + Cut; +end; + +procedure TTBItemEditForm.CopyButtonClick(Sender: TObject); +begin + Copy; +end; + +procedure TTBItemEditForm.PasteButtonClick(Sender: TObject); +begin + Paste; +end; + +procedure TTBItemEditForm.DeleteButtonClick(Sender: TObject); +begin + if ActiveControl = ListView then + Delete + else if (ActiveControl = TreeView) and (FSelParentItem <> FRootItem) then + DeleteItem(FSelParentItem); +end; + +procedure TTBItemEditForm.MoveUpButtonClick(Sender: TObject); +var + SelList: TList; + I, J: Integer; + Item: TTBCustomItem; + ListItem: TListItem; +begin + if FSelParentItem = nil then Exit; + SelList := TList.Create; + try + GetSelItemList(SelList); + if SelList.Count = 0 then Exit; + + ListView.Items.BeginUpdate; + FSelParentItem.ViewBeginUpdate; + { For good performance and to prevent Object Inspector flicker, increment + FSettingSel to prevent calls to SetSelParentItem while moving items } + Inc(FSettingSel); + try + for I := 0 to SelList.Count-1 do begin + Item := SelList[I]; + J := FSelParentItem.IndexOf(Item); + if J <> -1 then + MoveItem(J, J-1); + end; + ListItem := ListView.FindData(0, SelList[0], True, False); + if Assigned(ListItem) then + ListItem.MakeVisible(False); + finally + Dec(FSettingSel); + FSelParentItem.ViewEndUpdate; + ListView.Items.EndUpdate; + end; + { After decrementing FSettingSel, now call SetSelParentItem, to update + the toolbar buttons } + SetSelParentItem(FSelParentItem); + finally + SelList.Free; + end; +end; + +procedure TTBItemEditForm.MoveDownButtonClick(Sender: TObject); +var + SelList: TList; + I, J: Integer; + Item: TTBCustomItem; + ListItem: TListItem; +begin + if FSelParentItem = nil then Exit; + SelList := TList.Create; + try + GetSelItemList(SelList); + if SelList.Count = 0 then Exit; + + ListView.Items.BeginUpdate; + FSelParentItem.ViewBeginUpdate; + { For good performance and to prevent Object Inspector flicker, increment + FSettingSel to prevent calls to SetSelParentItem while moving items } + Inc(FSettingSel); + try + for I := SelList.Count-1 downto 0 do begin + Item := SelList[I]; + J := FSelParentItem.IndexOf(Item); + if J <> -1 then + MoveItem(J, J+1); + end; + ListItem := ListView.FindData(0, SelList[SelList.Count-1], True, False); + if Assigned(ListItem) then + ListItem.MakeVisible(False); + finally + Dec(FSettingSel); + FSelParentItem.ViewEndUpdate; + ListView.Items.EndUpdate; + end; + { After decrementing FSettingSel, now call SetSelParentItem, to update + the toolbar buttons } + SetSelParentItem(FSelParentItem); + finally + SelList.Free; + end; +end; + +procedure TTBItemEditForm.TConvertMenuClick(Sender: TObject); +begin + if FSelParentItem = nil then Exit; + DoConvert(FSelParentItem, FParentComponent.Owner); +end; + + +{ TTBItemsEditor } + +procedure TTBItemsEditor.Edit; +var + Intf: ITBItems; +begin + if Assigned(Component) and Component.GetInterface(ITBItems, Intf) then + ShowEditForm(Component, Intf.GetItems, Designer); +end; + +procedure TTBItemsEditor.ExecuteVerb(Index: Integer); +begin + case Index of + 0: Edit; + 1: ShowVersion; + end; +end; + +function TTBItemsEditor.GetVerbCount: Integer; +begin + Result := 2; +end; + +function TTBItemsEditor.GetVerb(Index: Integer): String; +begin + case Index of + 0: Result := 'Edit...'; + 1: Result := 'Version...'; + else + Result := ''; + end; +end; + + +{ TTBItemsPropertyEditor } + +procedure TTBItemsPropertyEditor.Edit; +var + Editor: {$IFDEF JR_D6} IComponentEditor {$ELSE} TComponentEditor {$ENDIF}; +begin + if PropCount <> 1 then Exit; + Editor := GetComponentEditor(GetComponent(0) as TComponent, Designer); + try + Editor.Edit; + finally + {$IFNDEF JR_D6} + Editor.Free; + {$ENDIF} + end; +end; + +function TTBItemsPropertyEditor.GetAttributes: TPropertyAttributes; +begin + Result := inherited GetAttributes + [paDialog, paReadOnly]; +end; + +function TTBItemsPropertyEditor.GetValue: String; +begin + Result := '(TB2000 Items)'; +end; + + +procedure TBRegisterDsgnEditorHook(Hook: TTBDsgnEditorHook); +var + H: ^TTBDsgnEditorHook; +begin + New(H); + H^ := Hook; + EditFormHooks.Add(H); +end; + +procedure TBUnregisterDsgnEditorHook(Hook: TTBDsgnEditorHook); +var + H: ^TTBDsgnEditorHook; + I: Integer; +begin + for I := EditFormHooks.Count - 1 downto 0 do + begin + H := EditFormHooks[I]; + if (TMethod(H^).Code = TMethod(Hook).Code) and + (TMethod(H^).Data = TMethod(Hook).Data) then + begin + Dispose(H); + EditFormHooks.Delete(I); +// Break; + end; + end; +end; + +initialization + ItemImageList := TImageList.Create(nil); + ItemImageList.Handle := ImageList_LoadImage(HInstance, 'TB2_DSGNEDITORIMAGES', + 16, 0, clFuchsia, IMAGE_BITMAP, 0); + ItemClasses := TList.Create; + EditFormHooks := TList.Create; + AddModuleUnloadProc(UnregisterModuleItemClasses); +finalization + RemoveModuleUnloadProc(UnregisterModuleItemClasses); + FreeItemClasses; + FreeAndNil(ItemImageList); + FreeAndNil(EditFormHooks); +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2DsgnItemEditor.pas.orig b/official/2.1.6+2.1.beta1/Source/TB2DsgnItemEditor.pas.orig new file mode 100644 index 0000000..fc85c75 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2DsgnItemEditor.pas.orig @@ -0,0 +1,1348 @@ +unit TB2DsgnItemEditor; + +{ + Toolbar2000 + Copyright (C) 1998-2005 by Jordan Russell + All rights reserved. + + The contents of this file are subject to the "Toolbar2000 License"; you may + not use or distribute this file except in compliance with the + "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in + TB2k-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + + Alternatively, the contents of this file may be used under the terms of the + GNU General Public License (the "GPL"), in which case the provisions of the + GPL are applicable instead of those in the "Toolbar2000 License". A copy of + the GPL may be found in GPL-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + If you wish to allow use of your version of this file only under the terms of + the GPL and not to allow others to use your version of this file under the + "Toolbar2000 License", indicate your decision by deleting the provisions + above and replace them with the notice and other provisions required by the + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + + $jrsoftware: tb2k/Source/TB2DsgnItemEditor.pas,v 1.55 2005/01/27 06:48:53 jr Exp $ +} + +interface + +{$I TB2Ver.inc} + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + StdCtrls, ExtCtrls, Buttons, ComCtrls, ImgList, Menus, + TB2Item, TB2Toolbar, TB2Dock, + {$IFDEF JR_D6} + DesignIntf, DesignWindows, DesignEditors; + {$ELSE} + DsgnIntf, DsgnWnds, LibIntf; + {$ENDIF} + +type + TTBItemEditForm = class(TDesignWindow) + TreeView: TTreeView; + ListView: TListView; + Splitter1: TSplitter; + Toolbar: TTBToolbar; + NewSubmenuButton: TTBItem; + NewItemButton: TTBItem; + NewSepButton: TTBItem; + DeleteButton: TTBItem; + TBSeparatorItem1: TTBSeparatorItem; + TBPopupMenu1: TTBPopupMenu; + TBItemContainer1: TTBItemContainer; + ToolbarItems: TTBSubmenuItem; + CopyButton: TTBItem; + CutButton: TTBItem; + PasteButton: TTBItem; + MoreMenu: TTBSubmenuItem; + TBSeparatorItem2: TTBSeparatorItem; + TBSubmenuItem1: TTBSubmenuItem; + TConvertMenu: TTBItem; + TBSeparatorItem3: TTBSeparatorItem; + MoveUpButton: TTBItem; + MoveDownButton: TTBItem; + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure TreeViewChange(Sender: TObject; Node: TTreeNode); + procedure NewSubmenuButtonClick(Sender: TObject); + procedure NewItemButtonClick(Sender: TObject); + procedure ListViewChange(Sender: TObject; Item: TListItem; + Change: TItemChange); + procedure DeleteButtonClick(Sender: TObject); + procedure NewSepButtonClick(Sender: TObject); + procedure ListViewDragOver(Sender, Source: TObject; X, Y: Integer; + State: TDragState; var Accept: Boolean); + procedure ListViewDragDrop(Sender, Source: TObject; X, Y: Integer); + procedure TreeViewEnter(Sender: TObject); + procedure TreeViewDragDrop(Sender, Source: TObject; X, Y: Integer); + procedure TreeViewDragOver(Sender, Source: TObject; X, Y: Integer; + State: TDragState; var Accept: Boolean); + procedure CopyButtonClick(Sender: TObject); + procedure ListViewKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); + procedure CutButtonClick(Sender: TObject); + procedure PasteButtonClick(Sender: TObject); + procedure FormActivate(Sender: TObject); + procedure ListViewKeyPress(Sender: TObject; var Key: Char); + procedure ListViewDblClick(Sender: TObject); + procedure ListViewEnter(Sender: TObject); + procedure TreeViewKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); + procedure TConvertMenuClick(Sender: TObject); + procedure TreeViewKeyPress(Sender: TObject; var Key: Char); + procedure MoveUpButtonClick(Sender: TObject); + procedure MoveDownButtonClick(Sender: TObject); + private + FParentComponent: TComponent; + FRootItem, FSelParentItem: TTBCustomItem; + FNotifyItemList: TList; + FSettingSel, FRebuildingTree, FRebuildingList: Integer; + function AddListViewItem(const Index: Integer; + const Item: TTBCustomItem): TListItem; + procedure Copy; + procedure CreateNewItem(const AClass: TTBCustomItemClass); + procedure Cut; + procedure Delete; + procedure DeleteItem(const Item: TTBCustomItem); + function GetItemTreeCaption(AItem: TTBCustomItem): String; + procedure GetSelItemList(const AList: TList); + procedure ItemNotification(Ancestor: TTBCustomItem; Relayed: Boolean; + Action: TTBItemChangedAction; Index: Integer; Item: TTBCustomItem); + procedure MoreItemClick(Sender: TObject); + procedure MoveItem(CurIndex, NewIndex: Integer); + procedure Paste; + procedure RebuildList; + procedure RebuildTree; + procedure SelectInObjectInspector(AList: TList); + procedure SetSelParentItem(ASelParentItem: TTBCustomItem); + function TreeViewDragHandler(Sender, Source: TObject; X, Y: Integer; + Drop: Boolean): Boolean; + procedure UnregisterAllNotifications; + protected + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + function UniqueName(Component: TComponent): String; override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + {$IFDEF JR_D6} + function EditAction(Action: TEditAction): Boolean; override; + {$ELSE} + procedure EditAction(Action: TEditAction); override; + {$ENDIF} + function GetEditState: TEditState; override; + end; + + TTBItemsEditor = class(TDefaultEditor) + public + procedure Edit; override; + procedure ExecuteVerb(Index: Integer); override; + function GetVerb(Index: Integer): String; override; + function GetVerbCount: Integer; override; + end; + + TTBItemsPropertyEditor = class(TStringProperty) + public + procedure Edit; override; + function GetAttributes: TPropertyAttributes; override; + function GetValue: String; override; + end; + +procedure TBRegisterItemClass(AClass: TTBCustomItemClass; + const ACaption: String; ResInstance: HINST); + +implementation + +{$R *.DFM} + +uses + TypInfo, CommCtrl, TB2Version, TB2Common, TB2DsgnConverter; + +type + {}TTBCustomItemAccess = class(TTBCustomItem); + {}TControlAccess = class(TControl); +{$IFNDEF JR_D5} + TDesignerSelectionList = TComponentList; +{$ENDIF} +{$IFDEF JR_D6} + TDesignerSelectionList = IDesignerSelections; +{$ENDIF} + + PItemClassInfo = ^TItemClassInfo; + TItemClassInfo = record + ItemClass: TTBCustomItemClass; + Caption: String; + ImageIndex: Integer; + end; + +var + ItemClasses: TList; + ItemImageList: TImageList; + +{$IFNDEF JR_D6} +function CreateSelectionList: TDesignerSelectionList; +begin + Result := TDesignerSelectionList.Create; +end; +{$ENDIF} + +procedure FreeItemClasses; +var + I: Integer; + IC: TList; +begin + if ItemClasses = nil then Exit; + IC := ItemClasses; + ItemClasses := nil; + for I := IC.Count-1 downto 0 do + Dispose(PItemClassInfo(IC[I])); + IC.Free; +end; + +procedure UnregisterModuleItemClasses(AModule: {$IFDEF JR_D5} LongWord {$ELSE} Integer {$ENDIF}); +var + I: Integer; + Info: PItemClassInfo; +begin + I := 0; + while I < ItemClasses.Count do begin + Info := ItemClasses[I]; + if FindClassHInstance(Info.ItemClass) = AModule then begin + ItemClasses.Delete(I); + Dispose(Info); + end + else + Inc(I); + end; + { Note: TTBItemEditForm also holds references to item classes, but since + Delphi automatically closes all editor forms before compiling/removing + a package, we don't need to remove them. } +end; + +function LoadItemImage(Instance: HINST; const ResName: String): Integer; +var + Bmp: TBitmap; +begin + Bmp := TBitmap.Create; + try + Bmp.Handle := LoadBitmap(Instance, PChar(ResName)); + if Bmp.Handle = 0 then + Result := -1 + else + Result := ItemImageList.AddMasked(Bmp, Bmp.Canvas.Pixels[0, Bmp.Height-1]); + finally + Bmp.Free; + end; +end; + +procedure TBRegisterItemClass(AClass: TTBCustomItemClass; + const ACaption: String; ResInstance: HINST); +var + Info: PItemClassInfo; +begin + New(Info); + Info.ItemClass := AClass; + Info.Caption := ACaption; + Info.ImageIndex := LoadItemImage(ResInstance, Uppercase(AClass.ClassName)); + ItemClasses.Add(Info); +end; + +function GetItemClassImage(AClass: TTBCustomItemClass): Integer; +var + I: Integer; + Info: PItemClassInfo; +begin + for I := ItemClasses.Count-1 downto 0 do begin + Info := ItemClasses[I]; + if AClass.InheritsFrom(Info.ItemClass) then begin + Result := Info.ImageIndex; + if Result >= 0 then + Exit; + end; + end; + if AClass.InheritsFrom(TTBSubmenuItem) then + Result := 1 + else if AClass.InheritsFrom(TTBSeparatorItem) then + Result := 2 + else + Result := 0; +end; + +procedure ShowEditForm(AParentComponent: TComponent; ARootItem: TTBCustomItem; + const ADesigner: {$IFDEF JR_D6} IDesigner {$ELSE} IFormDesigner {$ENDIF}); +var + I: Integer; + Form: TCustomForm; + EditForm: TTBItemEditForm; +begin + if Assigned(ARootItem.LinkSubitems) then begin + case MessageDlg(Format('The LinkSubitems property is set to ''%s''. ' + + 'Would you like to edit that item instead?', + [ARootItem.LinkSubitems.Name]), mtConfirmation, [mbYes, mbNo, mbCancel], 0) of + mrYes: begin + AParentComponent := ARootItem.LinkSubitems; + ARootItem := ARootItem.LinkSubitems; + end; + mrCancel: Exit; + end; + end; + for I := 0 to Screen.FormCount-1 do begin + Form := Screen.Forms[I]; + if Form is TTBItemEditForm then + if TTBItemEditForm(Form).FRootItem = ARootItem then begin + Form.Show; + if Form.WindowState = wsMinimized then + Form.WindowState := wsNormal; + Exit; + end; + end; + EditForm := TTBItemEditForm.Create(Application); + try + EditForm.Designer := ADesigner; + EditForm.FParentComponent := AParentComponent; + AParentComponent.FreeNotification(EditForm); + EditForm.FRootItem := ARootItem; + ARootItem.FreeNotification(EditForm); + EditForm.FSelParentItem := ARootItem; + EditForm.Caption := 'Editing ' + AParentComponent.Name; + EditForm.RebuildTree; + EditForm.RebuildList; + {$IFDEF JR_D9} + EditForm.PopupMode := pmExplicit; + {$ENDIF} + EditForm.Show; + except + EditForm.Free; + raise; + end; +end; + +function IsSubmenuItem(Item: TTBCustomItem): Boolean; +begin + Result := tbisSubitemsEditable in TTBCustomItemAccess(Item).ItemStyle; +end; + +procedure ShowVersion; +const + AboutText = + '%s'#13#10 + + 'Copyright (C) 1998-2005 by Jordan Russell'#13#10 + + 'For conditions of distribution and use, see LICENSE.TXT.'#13#10 + + #13#10 + + 'Visit my web site for the latest versions of Toolbar2000:'#13#10 + + 'http://www.jrsoftware.org/'; +begin + MessageDlg(Format(AboutText, [Toolbar2000VersionPropText]), mtInformation, + [mbOK], 0); +end; + + +{ TTBItemEditForm } + +constructor TTBItemEditForm.Create(AOwner: TComponent); +var + I: Integer; + Info: PItemClassInfo; + Item: TTBItem; +begin + inherited; + FNotifyItemList := TList.Create; + ToolbarItems.SubMenuImages := ItemImageList; + ListView.SmallImages := ItemImageList; + { Populate the 'More' menu } + for I := 0 to ItemClasses.Count-1 do begin + Info := ItemClasses[I]; + Item := TTBItem.Create(Self); + Item.Caption := Info.Caption; + Item.ImageIndex := GetItemClassImage(Info.ItemClass); + Item.Tag := Integer(Info.ItemClass); + Item.OnClick := MoreItemClick; + MoreMenu.Add(Item); + end; +end; + +destructor TTBItemEditForm.Destroy; +begin + inherited; + if Assigned(FNotifyItemList) then begin + UnregisterAllNotifications; + FNotifyItemList.Free; + FNotifyItemList := nil; + end; +end; + +procedure TTBItemEditForm.FormClose(Sender: TObject; + var Action: TCloseAction); +begin + Action := caFree; +end; + +procedure TTBItemEditForm.FormActivate(Sender: TObject); +begin + SetSelParentItem(FSelParentItem); +end; + +procedure TTBItemEditForm.Notification(AComponent: TComponent; + Operation: TOperation); +begin + inherited; + if (Operation = opRemove) and + ((AComponent = FParentComponent) or (AComponent = FRootItem)) then + { Must use Free instead of Close, since Close causes the freeing of the + form to be delayed until the next message. We have to destroy the form + immediately, otherwise Delphi will crash when Compile is clicked on the + TB2k package. } + Free; + {}{temp:} + (*if (Operation = opRemove) and (FNotifyItemList.IndexOf(AComponent) <> -1) then begin + outputdebugstring(pchar('Still in list: ' + AComponent.name)); + //beep; + end;*) +end; + +function TTBItemEditForm.UniqueName(Component: TComponent): String; +begin + Result := Designer.UniqueName(Component.ClassName); +end; + +function TTBItemEditForm.GetEditState: TEditState; +begin + Result := []; + if ActiveControl = ListView then begin + if Assigned(ListView.Selected) then + Result := [esCanDelete, esCanCut, esCanCopy]; + if ClipboardComponents then + Include(Result, esCanPaste); + end; +end; + +{$IFDEF JR_D6} +function TTBItemEditForm.EditAction(Action: TEditAction): Boolean; +{$ELSE} +procedure TTBItemEditForm.EditAction(Action: TEditAction); +{$ENDIF} +begin + {$IFDEF JR_D6} + Result := True; + {$ENDIF} + case Action of + eaCut: Cut; + eaCopy: Copy; + eaPaste: Paste; + eaDelete: Delete; + {$IFDEF JR_D6} + else + Result := False; + {$ENDIF} + end; +end; + +procedure TTBItemEditForm.UnregisterAllNotifications; +var + I: Integer; +begin + for I := FNotifyItemList.Count-1 downto 0 do begin + //outputdebugstring(pchar('Unregall: ' + TTBCustomItem(FNotifyItemList[I]).name)); + TTBCustomItem(FNotifyItemList[I]).UnregisterNotification(ItemNotification); + FNotifyItemList.Delete(I); + end; +end; + +procedure TTBItemEditForm.ItemNotification(Ancestor: TTBCustomItem; + Relayed: Boolean; Action: TTBItemChangedAction; Index: Integer; + Item: TTBCustomItem); +var + ListItem: TListItem; + TreeNode: TTreeNode; + I: Integer; + C: String; +begin + { Manipulate the list view when items are inserted, deleted, or their Caption + changes } + case Action of + tbicInserted: + begin + if (Ancestor = FSelParentItem) and not Relayed then + AddListViewItem(Index, Item); + if IsSubmenuItem(Item) then + RebuildTree; + end; + tbicDeleting: + if (Ancestor = FSelParentItem) and not Relayed then begin + ListItem := ListView.FindData(0, Item, True, False); + if Assigned(ListItem) then + ListItem.Delete; + end; + tbicInvalidateAndResize: + if (Ancestor = FSelParentItem) and not Relayed then begin + ListItem := ListView.FindData(0, Item, True, False); + if Assigned(ListItem) and (ListItem.Caption <> TTBCustomItem(Item).Caption) then + ListItem.Caption := TTBCustomItem(Item).Caption; + end; + end; + { Update tree view when an item is deleted, or a Caption changes } + if Action = tbicDeleting then begin + I := FNotifyItemList.IndexOf(Item); + if I <> -1 then begin + //outputdebugstring(pchar('Deleting, so unreging: ' + item.name)); + TTBCustomItem(Item).UnregisterNotification(ItemNotification); + FNotifyItemList.Delete(I); + end; + end; + if Action in [tbicDeleting, tbicInvalidateAndResize, tbicNameChanged] then begin + TreeNode := TreeView.Items.GetFirstNode; + while Assigned(TreeNode) do begin + if TreeNode.Data = Item then begin + if Action = tbicDeleting then begin + TreeNode.Delete; + if FSelParentItem = Item then + SetSelParentItem(TTBCustomItem(Item).Parent); + end + else begin + { tbicInvalidateAndResize, tbicNameChanged: } + C := GetItemTreeCaption(Item); + if TreeNode.Text <> C then + TreeNode.Text := C; + end; + Break; + end; + TreeNode := TreeNode.GetNext; + end; + end; +end; + +function TTBItemEditForm.GetItemTreeCaption(AItem: TTBCustomItem): String; +begin + if AItem <> FRootItem then begin + Result := AItem.Caption; + if Result = '' then + Result := '[' + AItem.Name + ']'; + end + else + Result := '(Root)'; +end; + +procedure TTBItemEditForm.RebuildTree; + + procedure Recurse(const AParentItem: TTBCustomItem; const ATreeNode: TTreeNode; + var FoundSelParentItem: TTreeNode); + var + I: Integer; + NewNode: TTreeNode; + ChildItem: TTBCustomItem; + begin + {}AParentItem.FreeNotification(Self); + AParentItem.RegisterNotification(ItemNotification); + FNotifyItemList.Add(AParentItem); + NewNode := TreeView.Items.AddChild(ATreeNode, GetItemTreeCaption(AParentItem)); + NewNode.Data := AParentItem; + if AParentItem = FSelParentItem then + FoundSelParentItem := NewNode; + for I := 0 to AParentItem.Count-1 do begin + ChildItem := AParentItem[I]; + if IsSubmenuItem(ChildItem) then + Recurse(ChildItem, NewNode, FoundSelParentItem); + end; + end; + +var + FoundSelParentItem: TTreeNode; +begin + Inc(FRebuildingTree); + try + TreeView.Items.BeginUpdate; + try + TreeView.Items.Clear; + UnregisterAllNotifications; + FoundSelParentItem := nil; + Recurse(FRootItem, nil, FoundSelParentItem); + if FoundSelParentItem = nil then + SetSelParentItem(FRootItem) + else + TreeView.Selected := FoundSelParentItem; + TreeView.Items[0].Expand(True); + finally + TreeView.Items.EndUpdate; + end; + finally + Dec(FRebuildingTree); + end; +end; + +function TTBItemEditForm.AddListViewItem(const Index: Integer; + const Item: TTBCustomItem): TListItem; +begin + Result := ListView.Items.Insert(Index); + Result.Data := Item; + if not(Item is TTBControlItem) then begin + Result.Caption := Item.Caption; + Result.Subitems.Add(Item.ClassName); + Result.ImageIndex := GetItemClassImage(TTBCustomItemClass(Item.ClassType)); + end + else begin + Result.Caption := '(Control)'; + Result.Subitems.Add(Item.ClassName); + Result.ImageIndex := -1; + end; +end; + +procedure TTBItemEditForm.RebuildList; +var + ChildItem: TTBCustomItem; + I: Integer; +begin + Inc(FRebuildingList); + try + ListView.Items.BeginUpdate; + try + ListView.Items.Clear; + if Assigned(FSelParentItem) then begin + for I := 0 to FSelParentItem.Count-1 do begin + ChildItem := FSelParentItem[I]; + { Check for csDestroying because deleting an item in the tree view + causes the parent item to be selected, and the parent item won't + get a notification that the item is deleting since notifications + were already sent } + if not(csDestroying in ChildItem.ComponentState) then + AddListViewItem(I, ChildItem); + end; + { Add an empty item to the end } + ListView.Items.Add.ImageIndex := -1; + end; + finally + ListView.Items.EndUpdate; + end; + { Work around a strange TListView bug(?). Without this, the column header + isn't painted properly. } + if HandleAllocated then + SetWindowPos(ListView.Handle, 0, 0, 0, 0, 0, SWP_FRAMECHANGED or + SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE or SWP_NOZORDER); + finally + Dec(FRebuildingList); + end; +end; + +procedure TTBItemEditForm.SelectInObjectInspector(AList: TList); +var + CompList1, CompList2: TDesignerSelectionList; + I: Integer; + C: TComponent; +begin + { Designer.SetSelections will make components appear selected on the form. + It will also select the component in Object Inspector, but only if the + form has the focus. TDesignWindow.SetSelection will select the component + in Object Inspector regardless of whether the form has the focus. } + CompList1 := CreateSelectionList; + CompList2 := CreateSelectionList; + for I := 0 to AList.Count-1 do begin + C := AList[I]; + { Must check for csDestroying. If SetSelection is passed a component that's + destroying, Delphi will crash. } + if not(csDestroying in C.ComponentState) then begin + CompList1.Add(C); + CompList2.Add(C); + end; + end; + if CompList1.Count = 0 then begin + {$IFNDEF JR_D6} + CompList1.Free; + CompList2.Free; + {$ENDIF} + end + else begin + Designer.SetSelections(CompList1); + { Note: Never pass an empty list to SetSelection or Delphi will crash } + { History here: + - 1.34: SetSelection call remarked out because it fixed Delphi 6 issue + with random AV's after the editor was closed. + - 1.38: SetSelection call restored because without it, Ctrl+X/C/V didn't + work. + - 1.40: SetSelection call disabled on Delphi 6 only because AV problem + still seems to exist despite another change which I thought fixed it. + On D6 it isn't necessary to call SetSelection for Ctrl+X/C/V to work. + Note: Using "ComponentDesigner.SetSelection(Designer, nil, CompList2);" + instead seems to fix the AV problem, but for consistency with Delphi's + TMainMenu editor (which only selects items when its parent form is + focused), I decided not to call SetSelection at all on D6. + } + {$IFNDEF JR_D6} + SetSelection(CompList2); + {$ENDIF} + end; +end; + +procedure TTBItemEditForm.GetSelItemList(const AList: TList); +var + ListItem: TListItem; +begin + ListItem := nil; + while True do begin + ListItem := ListView.GetNextItem(ListItem, sdAll, [isSelected]); + if ListItem = nil then + Break; + if Assigned(ListItem.Data) then + AList.Add(ListItem.Data); + end; +end; + +procedure TTBItemEditForm.SetSelParentItem(ASelParentItem: TTBCustomItem); +{ - Rebuilds the list view to match a new selection (ASelParentItem) in the + tree view + - Updates toolbar + - Selects selected item(s) into Object Inspector } +var + I: Integer; + TreeNode: TTreeNode; + ItemIsSelected: Boolean; + List: TList; +begin + if FSettingSel > 0 then + Exit; + List := TList.Create; + Inc(FSettingSel); + try + if FSelParentItem <> ASelParentItem then begin + FSelParentItem := ASelParentItem; + NewSubmenuButton.Enabled := Assigned(ASelParentItem); + NewItemButton.Enabled := Assigned(ASelParentItem); + NewSepButton.Enabled := Assigned(ASelParentItem); + for I := 0 to MoreMenu.Count-1 do + MoreMenu[I].Enabled := Assigned(ASelParentItem); + if not Assigned(TreeView.Selected) or (TreeView.Selected.Data <> FSelParentItem) then begin + if FSelParentItem = nil then + TreeView.Selected := nil + else begin + TreeNode := TreeView.Items.GetFirstNode; + while Assigned(TreeNode) do begin + if TreeNode.Data = FSelParentItem then begin + TreeView.Selected := TreeNode; + Break; + end; + TreeNode := TreeNode.GetNext; + end; + end; + end; + RebuildList; + end; + + ItemIsSelected := (ActiveControl = ListView) and Assigned(ListView.Selected) and + Assigned(ListView.Selected.Data); + if ItemIsSelected then + GetSelItemList(List); + + CutButton.Enabled := ItemIsSelected; + CopyButton.Enabled := ItemIsSelected; + PasteButton.Enabled := (ActiveControl = ListView); + DeleteButton.Enabled := ItemIsSelected or + ((ActiveControl = TreeView) and (FSelParentItem <> FRootItem)); + MoveUpButton.Enabled := ItemIsSelected and + (FSelParentItem.IndexOf(List.First) > 0); + MoveDownButton.Enabled := ItemIsSelected and + (FSelParentItem.IndexOf(List.Last) < FSelParentItem.Count-1); + + if ActiveControl = ListView then begin + if List.Count = 0 then + { No item was selected, or the blank item was selected. + Select the root item so it looks like no item was selected in + Object Inspector } + List.Add(FRootItem); + end + else if not Assigned(ASelParentItem) or (ASelParentItem = FRootItem) then + List.Add(FParentComponent) + else + List.Add(ASelParentItem); + SelectInObjectInspector(List); + finally + Dec(FSettingSel); + List.Free; + end; +end; + +procedure TTBItemEditForm.Cut; +begin + Copy; + Delete; +end; + +procedure TTBItemEditForm.Copy; +var + SelList: TList; + CompList: TDesignerSelectionList; + I: Integer; + Item: TTBCustomItem; +begin + if ListView.Selected = nil then Exit; + CompList := nil; + SelList := TList.Create; + try + GetSelItemList(SelList); + CompList := CreateSelectionList; + for I := 0 to SelList.Count-1 do begin + Item := SelList[I]; + if Item is TTBControlItem then + raise EInvalidOperation.Create('Cannot cut or copy TTBControlItems'); + CompList.Add(Item); + end; + CopyComponents(FParentComponent.Owner, CompList); + finally + {$IFNDEF JR_D6} + CompList.Free; + {$ENDIF} + SelList.Free; + end; +end; + +procedure TTBItemEditForm.Paste; +var + CompList: TDesignerSelectionList; +begin + if FSelParentItem = nil then Exit; + CompList := CreateSelectionList; + try + PasteComponents(FParentComponent.Owner, FSelParentItem, CompList); + if CompList.Count <> 0 then + Designer.Modified; + finally + {$IFNDEF JR_D6} + CompList.Free; + {$ENDIF} + end; +end; + +procedure TTBItemEditForm.DeleteItem(const Item: TTBCustomItem); +begin + if csAncestor in Item.ComponentState then + raise EInvalidOperation.Create('Items introduced in an ancestor form cannot be deleted'); + //Designer.ValidateRename(Item, Item.Name, ''); + Item.Free; + Designer.Modified; +end; + +procedure TTBItemEditForm.Delete; +var + List: TList; + Item: TTBCustomItem; + ListItem: TListItem; +begin + List := TList.Create; + try + List.Add(FSelParentItem); + SelectInObjectInspector(List); + finally + List.Free; + end; + FSelParentItem.ViewBeginUpdate; + try + while Assigned(ListView.Selected) do begin + Item := ListView.Selected.Data; + if Item = nil then + Break; + DeleteItem(Item); + end; + finally + FSelParentItem.ViewEndUpdate; + end; + { After deleting the items, select the item with the focus } + ListItem := ListView.GetNextItem(nil, sdAll, [isFocused]); + if Assigned(ListItem) then + ListItem.Selected := True; +end; + +procedure TTBItemEditForm.MoveItem(CurIndex, NewIndex: Integer); +var + WasFocused: Boolean; +begin + WasFocused := ListView.Items[CurIndex].Focused; + + FSelParentItem.Move(CurIndex, NewIndex); + Designer.Modified; + + if WasFocused then + ListView.Items[NewIndex].Focused := True; + ListView.Items[NewIndex].Selected := True; +end; + +procedure TTBItemEditForm.TreeViewChange(Sender: TObject; Node: TTreeNode); +var + NewSelectedParentItem: TTBCustomItem; +begin + if (FRebuildingTree > 0) or (FSettingSel > 0) then Exit; + if Node = nil then + NewSelectedParentItem := nil + else + NewSelectedParentItem := Node.Data; + SetSelParentItem(NewSelectedParentItem); +end; + +procedure TTBItemEditForm.TreeViewEnter(Sender: TObject); +{ When the tree view gets the focus, act as if the currently selected item + was clicked. } +begin + ListView.Selected := nil; + SetSelParentItem(FSelParentItem); +end; + +procedure TTBItemEditForm.ListViewChange(Sender: TObject; Item: TListItem; + Change: TItemChange); +begin + if (FRebuildingList > 0) or (FSettingSel > 0) or (Change <> ctState) or + (csDestroying in ListView.ComponentState) then + Exit; + SetSelParentItem(FSelParentItem); +end; + +procedure TTBItemEditForm.ListViewEnter(Sender: TObject); +begin + { When list view gets the focus, update the toolbar } + SetSelParentItem(FSelParentItem); +end; + +procedure TTBItemEditForm.ListViewDblClick(Sender: TObject); +var + SelItem: TTBCustomItem; + PropCount, I: Integer; + Props: PPropList; + PropInfo: PPropInfo; + MethodName: String; + Method: TMethod; +begin + SelItem := nil; + if Assigned(ListView.Selected) then + SelItem := ListView.Selected.Data; + if SelItem = nil then Exit; + if IsSubmenuItem(SelItem) then begin + SetSelParentItem(SelItem); + Exit; + end; + PropCount := GetPropList(SelItem.ClassInfo, [tkMethod], nil); + GetMem(Props, PropCount * SizeOf(PPropInfo)); + try + GetPropList(SelItem.ClassInfo, [tkMethod], Props); + for I := PropCount-1 downto 0 do begin + PropInfo := Props[I]; + if CompareText(PropInfo.Name, 'OnClick') = 0 then begin + Method := GetMethodProp(SelItem, PropInfo); + MethodName := Designer.GetMethodName(Method); + if MethodName = '' then begin + MethodName := SelItem.Name + 'Click'; + Method := Designer.CreateMethod(MethodName, GetTypeData(PropInfo.PropType^)); + SetMethodProp(SelItem, + {$IFDEF JR_D5} PropInfo.Name {$ELSE} PropInfo {$ENDIF}, + Method); + Designer.Modified; + end; + if Designer.MethodExists(MethodName) then + Designer.ShowMethod(MethodName); + Break; + end; + end; + finally + FreeMem(Props); + end; +end; + +procedure TTBItemEditForm.ListViewKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); +begin + case Key of + VK_RETURN: begin + Key := 0; + ActivateInspector(#0); + end; + VK_INSERT: begin + Key := 0; + if ssCtrl in Shift then + NewSubmenuButtonClick(Sender) + else + NewItemButtonClick(Sender); + end; + VK_DELETE: begin + Key := 0; + Delete; + end; + end; +end; + +procedure TTBItemEditForm.TreeViewKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); +begin + case Key of + VK_RETURN: begin + Key := 0; + ActivateInspector(#0); + end; + VK_DELETE: begin + Key := 0; + DeleteButtonClick(Sender); + end; + end; +end; + +procedure TTBItemEditForm.TreeViewKeyPress(Sender: TObject; var Key: Char); +begin + if Key in [#33..#126] then begin + ActivateInspector(Key); + Key := #0; + end + else if Key = #13 then + Key := #0; { suppress beep } +end; + +procedure TTBItemEditForm.ListViewKeyPress(Sender: TObject; var Key: Char); +begin + if Key = '-' then begin + NewSepButtonClick(Sender); + Key := #0; + end + else if Key in [#33..#126] then begin + ActivateInspector(Key); + Key := #0; + end; +end; + +procedure TTBItemEditForm.ListViewDragOver(Sender, Source: TObject; X, + Y: Integer; State: TDragState; var Accept: Boolean); +{ List item dragged over the list view } +var + Item: TListItem; +begin + Accept := False; + if (Sender = ListView) and (Source = ListView) and (ListView.SelCount = 1) then begin + Item := ListView.GetItemAt(X, Y); + if Assigned(Item) and (Item <> ListView.Selected) then + Accept := True; + end; +end; + +procedure TTBItemEditForm.ListViewDragDrop(Sender, Source: TObject; X, + Y: Integer); +{ List item dropped onto another list item } +var + ListItem: TListItem; + Item: TTBCustomItem; + NewIndex: Integer; +begin + if (Sender = ListView) and (Source = ListView) and (ListView.SelCount = 1) then begin + ListItem := ListView.GetItemAt(X, Y); + if Assigned(ListItem) and (ListItem <> ListView.Selected) and Assigned(FSelParentItem) then begin + NewIndex := FSelParentItem.IndexOf(ListItem.Data); + if NewIndex <> -1 then begin + ListView.Items.BeginUpdate; + { For good performance and to prevent Object Inspector flicker, increment + FSettingSel to prevent calls to SetSelParentItem while moving items } + Inc(FSettingSel); + try + Item := ListView.Selected.Data; + MoveItem(FSelParentItem.IndexOf(Item), NewIndex); + finally + Dec(FSettingSel); + ListView.Items.EndUpdate; + end; + { After decrementing FSettingSel, now call SetSelParentItem, to update + the toolbar buttons } + SetSelParentItem(FSelParentItem); + end; + end; + end; +end; + +function TTBItemEditForm.TreeViewDragHandler(Sender, Source: TObject; + X, Y: Integer; Drop: Boolean): Boolean; +var + Node: TTreeNode; + ListItem: TListItem; + Item, NewParentItem: TTBCustomItem; + ItemList: TList; + I: Integer; + NeedRebuildTree: Boolean; +begin + Result := False; + if (Sender = TreeView) and (Source = ListView) then begin + Node := TreeView.GetNodeAt(X, Y); + if Assigned(Node) and (Node <> TreeView.Selected) then begin + NewParentItem := Node.Data; + ItemList := TList.Create; + try + ListItem := nil; + while True do begin + ListItem := ListView.GetNextItem(ListItem, sdAll, [isSelected]); + if ListItem = nil then + Break; + Item := ListItem.Data; + if Assigned(Item) and (Item <> NewParentItem) and + not Item.ContainsItem(NewParentItem) and + not(Item is TTBControlItem) then begin + Result := True; + ItemList.Add(Item); + end; + end; + if Drop then begin + NeedRebuildTree := False; + for I := 0 to ItemList.Count-1 do begin + Item := ItemList[I]; + Item.Parent.Remove(Item); + NewParentItem.Add(Item); + Designer.Modified; + if IsSubmenuItem(Item) then + NeedRebuildTree := True; + end; + if NeedRebuildTree then + RebuildTree; + end; + finally + ItemList.Free; + end; + end; + end; +end; + +procedure TTBItemEditForm.TreeViewDragOver(Sender, Source: TObject; X, + Y: Integer; State: TDragState; var Accept: Boolean); +{ List item dragged over the tree view } +begin + Accept := TreeViewDragHandler(Sender, Source, X, Y, False); +end; + +procedure TTBItemEditForm.TreeViewDragDrop(Sender, Source: TObject; X, + Y: Integer); +{ List item dropped onto the tree view } +begin + TreeViewDragHandler(Sender, Source, X, Y, True); +end; + +procedure TTBItemEditForm.CreateNewItem(const AClass: TTBCustomItemClass); +var + NewIndex: Integer; + NewItem: TTBCustomItem; + ListItem: TListItem; +begin + if FSelParentItem = nil then Exit; + NewIndex := -1; + if (GetKeyState(VK_SHIFT) >= 0) and Assigned(ListView.Selected) then + NewIndex := FSelParentItem.IndexOf(ListView.Selected.Data); + if NewIndex = -1 then + NewIndex := FSelParentItem.Count; + NewItem := AClass.Create(FParentComponent.Owner{Designer.Form}); + try + NewItem.Name := Designer.UniqueName(NewItem.ClassName); + FSelParentItem.Insert(NewIndex, NewItem); + except + NewItem.Free; + raise; + end; + Designer.Modified; + ListView.Selected := nil; + ListItem := ListView.FindData(0, NewItem, True, False); + if Assigned(ListItem) then begin + ListItem.Selected := True; + ListItem.Focused := True; + ListItem.MakeVisible(False); + ListView.SetFocus; + end; +end; + +procedure TTBItemEditForm.NewSubmenuButtonClick(Sender: TObject); +begin + CreateNewItem(TTBSubmenuItem); +end; + +procedure TTBItemEditForm.NewItemButtonClick(Sender: TObject); +begin + CreateNewItem(TTBItem); +end; + +procedure TTBItemEditForm.NewSepButtonClick(Sender: TObject); +begin + CreateNewItem(TTBSeparatorItem); +end; + +procedure TTBItemEditForm.MoreItemClick(Sender: TObject); +begin + CreateNewItem(TTBCustomItemClass((Sender as TTBItem).Tag)); +end; + +procedure TTBItemEditForm.CutButtonClick(Sender: TObject); +begin + Cut; +end; + +procedure TTBItemEditForm.CopyButtonClick(Sender: TObject); +begin + Copy; +end; + +procedure TTBItemEditForm.PasteButtonClick(Sender: TObject); +begin + Paste; +end; + +procedure TTBItemEditForm.DeleteButtonClick(Sender: TObject); +begin + if ActiveControl = ListView then + Delete + else if (ActiveControl = TreeView) and (FSelParentItem <> FRootItem) then + DeleteItem(FSelParentItem); +end; + +procedure TTBItemEditForm.MoveUpButtonClick(Sender: TObject); +var + SelList: TList; + I, J: Integer; + Item: TTBCustomItem; + ListItem: TListItem; +begin + if FSelParentItem = nil then Exit; + SelList := TList.Create; + try + GetSelItemList(SelList); + if SelList.Count = 0 then Exit; + + ListView.Items.BeginUpdate; + FSelParentItem.ViewBeginUpdate; + { For good performance and to prevent Object Inspector flicker, increment + FSettingSel to prevent calls to SetSelParentItem while moving items } + Inc(FSettingSel); + try + for I := 0 to SelList.Count-1 do begin + Item := SelList[I]; + J := FSelParentItem.IndexOf(Item); + if J <> -1 then + MoveItem(J, J-1); + end; + ListItem := ListView.FindData(0, SelList[0], True, False); + if Assigned(ListItem) then + ListItem.MakeVisible(False); + finally + Dec(FSettingSel); + FSelParentItem.ViewEndUpdate; + ListView.Items.EndUpdate; + end; + { After decrementing FSettingSel, now call SetSelParentItem, to update + the toolbar buttons } + SetSelParentItem(FSelParentItem); + finally + SelList.Free; + end; +end; + +procedure TTBItemEditForm.MoveDownButtonClick(Sender: TObject); +var + SelList: TList; + I, J: Integer; + Item: TTBCustomItem; + ListItem: TListItem; +begin + if FSelParentItem = nil then Exit; + SelList := TList.Create; + try + GetSelItemList(SelList); + if SelList.Count = 0 then Exit; + + ListView.Items.BeginUpdate; + FSelParentItem.ViewBeginUpdate; + { For good performance and to prevent Object Inspector flicker, increment + FSettingSel to prevent calls to SetSelParentItem while moving items } + Inc(FSettingSel); + try + for I := SelList.Count-1 downto 0 do begin + Item := SelList[I]; + J := FSelParentItem.IndexOf(Item); + if J <> -1 then + MoveItem(J, J+1); + end; + ListItem := ListView.FindData(0, SelList[SelList.Count-1], True, False); + if Assigned(ListItem) then + ListItem.MakeVisible(False); + finally + Dec(FSettingSel); + FSelParentItem.ViewEndUpdate; + ListView.Items.EndUpdate; + end; + { After decrementing FSettingSel, now call SetSelParentItem, to update + the toolbar buttons } + SetSelParentItem(FSelParentItem); + finally + SelList.Free; + end; +end; + +procedure TTBItemEditForm.TConvertMenuClick(Sender: TObject); +begin + if FSelParentItem = nil then Exit; + DoConvert(FSelParentItem, FParentComponent.Owner); +end; + + +{ TTBItemsEditor } + +procedure TTBItemsEditor.Edit; +var + Intf: ITBItems; +begin + if Assigned(Component) and Component.GetInterface(ITBItems, Intf) then + ShowEditForm(Component, Intf.GetItems, Designer); +end; + +procedure TTBItemsEditor.ExecuteVerb(Index: Integer); +begin + case Index of + 0: Edit; + 1: ShowVersion; + end; +end; + +function TTBItemsEditor.GetVerbCount: Integer; +begin + Result := 2; +end; + +function TTBItemsEditor.GetVerb(Index: Integer): String; +begin + case Index of + 0: Result := 'Edit...'; + 1: Result := 'Version...'; + else + Result := ''; + end; +end; + + +{ TTBItemsPropertyEditor } + +procedure TTBItemsPropertyEditor.Edit; +var + Editor: {$IFDEF JR_D6} IComponentEditor {$ELSE} TComponentEditor {$ENDIF}; +begin + if PropCount <> 1 then Exit; + Editor := GetComponentEditor(GetComponent(0) as TComponent, Designer); + try + Editor.Edit; + finally + {$IFNDEF JR_D6} + Editor.Free; + {$ENDIF} + end; +end; + +function TTBItemsPropertyEditor.GetAttributes: TPropertyAttributes; +begin + Result := inherited GetAttributes + [paDialog, paReadOnly]; +end; + +function TTBItemsPropertyEditor.GetValue: String; +begin + Result := '(TB2000 Items)'; +end; + +initialization + ItemImageList := TImageList.Create(nil); + ItemImageList.Handle := ImageList_LoadImage(HInstance, 'TB2_DSGNEDITORIMAGES', + 16, 0, clFuchsia, IMAGE_BITMAP, 0); + ItemClasses := TList.Create; + AddModuleUnloadProc(UnregisterModuleItemClasses); +finalization + RemoveModuleUnloadProc(UnregisterModuleItemClasses); + FreeItemClasses; + FreeAndNil(ItemImageList); +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2DsgnItemEditor.res b/official/2.1.6+2.1.beta1/Source/TB2DsgnItemEditor.res new file mode 100644 index 0000000000000000000000000000000000000000..938763ea4eb730d48f3bdec584a4c6e0b8f5642e GIT binary patch literal 2520 zcmd5;v2GJV5FIdz3uHN;KuH-Pq)<>8WGf(XIYfvkp>l1>mY}n{xPwojr|~CjaqaXe zU08A&YxCaB?VZn-6$ubzq`ldl-Ff%+?cUfTB2Um_^oDN3t{;iKK_te9@=;#PGx;oi zxsWqCmjQZj5zXZTd?v3D9bhim$#Lq5JVo~h8bc2Rps<-c>o*@WOd>Lyxx*7(w3#dx z3rvtKU37=1^N*tc-1_N_eOek+{;OFvY<9v1W2R+VXjWvZK_rhcuA1vGx|zeS_QGlq z7G|E|WQA(`^fU)9aYQ+}AkGvkL-{jdo*nKB^g1QsD4w&MXG z*a=pY`$_xT!bt$`Yd&#BI@;lTS|cdm9&vm~=RG>SLS0#6A504!?z=t0b!(H4`gte3 znh)n{qdIn8%cTc{3Dg=tmY-weqvebJKHBlD>-@48?EZA2^Ris-IN0s4>LTxD?FV?~ zxQrX9QBFDzwv#@G{iMGTxyB2hqj|k##Y|O_m2!Y8>9$)Nj}d08YGb)>-_1}65k)OD zhbOvL7g-;Ft2WwM;9I%kWuL+`K)<}hr*&l>OVs@PK^3XZ3o^9d5^8gXUyfWZ<-Prm z)ar=b3w>-qbJaEX_pSEacDzyj)A=2xsL#uWJ{k16ly^|)0=K7mgYJn&J9|h&d~HEH zq2s=TK?s5X4V5aO%D6A%Deo>%je0v8@n6U%v~&C)$*s5jrTuT63e;5=)?&S0v)&ie g>2y+$i@uMG$;8$bD_>tOEBc;xV7f;2Y)x;w1>5{Q8vp Value then begin + for I := 0 to FClients.Count - 1 do + if TBasicActionLink(FClients[I]) is TTBEditItemActionLink then + TTBEditItemActionLink(FClients[I]).SetEditCaption(Value); + FEditCaption := Value; + Change; + end; +end; + +procedure TTBEditAction.SetEditOptions(Value: TTBEditItemOptions); +var + I: Integer; +begin + if FEditOptions <> Value then begin + for I := 0 to FClients.Count - 1 do + if TBasicActionLink(FClients[I]) is TTBEditItemActionLink then + TTBEditItemActionLink(FClients[I]).SetEditOptions(Value); + FEditOptions := Value; + Change; + end; +end; + +procedure TTBEditAction.SetEditWidth(Value: Integer); +var + I: Integer; +begin + if FEditWidth <> Value then begin + for I := 0 to FClients.Count - 1 do + if TBasicActionLink(FClients[I]) is TTBEditItemActionLink then + TTBEditItemActionLink(FClients[I]).SetEditWidth(Value); + FEditWidth := Value; + Change; + end; +end; + +procedure TTBEditAction.SetOnAcceptText(Value: TTBAcceptTextEvent); +var + I: Integer; +begin + if not MethodsEqual(TMethod(FOnAcceptText), TMethod(Value)) then begin + for I := 0 to FClients.Count - 1 do + if TBasicActionLink(FClients[I]) is TTBEditItemActionLink then + TTBEditItemActionLink(FClients[I]).SetOnAcceptText(Value); + FOnAcceptText := Value; + Change; + end; +end; + +procedure TTBEditAction.SetText(Value: String); +var + I: Integer; +begin + if FText <> Value then begin + for I := 0 to FClients.Count - 1 do + if TBasicActionLink(FClients[I]) is TTBEditItemActionLink then + TTBEditItemActionLink(FClients[I]).SetText(Value); + FText := Value; + Change; + end; +end; + + +{ TTBEditItemActionLink } + +procedure TTBEditItemActionLink.AssignClient(AClient: TObject); +begin + FClient := AClient as TTBEditItem; +end; + +function TTBEditItemActionLink.IsEditCaptionLinked: Boolean; +begin + if Action is TTBEditAction then + Result := TTBEditItem(FClient).EditCaption = TTBEditAction(Action).EditCaption + else + Result := False; +end; + +function TTBEditItemActionLink.IsEditOptionsLinked: Boolean; +begin + if Action is TTBEditAction then + Result := TTBEditItem(FClient).EditOptions = TTBEditAction(Action).EditOptions + else + Result := False; +end; + +function TTBEditItemActionLink.IsEditWidthLinked: Boolean; +begin + if Action is TTBEditAction then + Result := TTBEditItem(FClient).EditWidth = TTBEditAction(Action).EditWidth + else + Result := False; +end; + +function TTBEditItemActionLink.IsOnAcceptTextLinked: Boolean; +begin + if Action is TTBEditAction then + Result := MethodsEqual(TMethod(TTBEditItem(FClient).OnAcceptText), + TMethod(TTBEditAction(Action).OnAcceptText)) + else + Result := False; +end; + +function TTBEditItemActionLink.IsTextLinked: Boolean; +begin + if Action is TTBEditAction then + Result := TTBEditItem(FClient).Text = TTBEditAction(Action).Text + else + Result := False; +end; + +procedure TTBEditItemActionLink.SetEditCaption(const Value: String); +begin + if IsEditCaptionLinked then TTBEditItem(FClient).EditCaption := Value; +end; + +procedure TTBEditItemActionLink.SetEditOptions(Value: TTBEditItemOptions); +begin + if IsEditOptionsLinked then TTBEditItem(FClient).EditOptions := Value; +end; + +procedure TTBEditItemActionLink.SetEditWidth(const Value: Integer); +begin + if IsEditWidthLinked then TTBEditItem(FClient).EditWidth := Value; +end; + +procedure TTBEditItemActionLink.SetOnAcceptText(Value: TTBAcceptTextEvent); +begin + if IsOnAcceptTextLinked then TTBEditItem(FClient).OnAcceptText := Value; +end; + +procedure TTBEditItemActionLink.SetText(const Value: String); +begin + if IsTextLinked then TTBEditItem(FClient).SetTextEx(Value , tcrActionLink); +end; + + +{ TTBEditItem } + +constructor TTBEditItem.Create(AOwner: TComponent); +begin + inherited; + FEditOptions := EditItemDefaultEditOptions; + FEditWidth := EditItemDefaultEditWidth; +end; + +procedure TTBEditItem.ActionChange(Sender: TObject; CheckDefaults: Boolean); +begin + inherited; + if Action is TTBEditAction then + with TTBEditAction(Sender) do + begin + if not CheckDefaults or (Self.EditCaption = '') then + Self.EditCaption := EditCaption; + if not CheckDefaults or (Self.EditOptions = []) then + Self.EditOptions := EditOptions; + if not CheckDefaults or (Self.Text = '') then + Self.SetTextEx(Text, tcrActionLink); + if not CheckDefaults or not Assigned(Self.OnAcceptText) then + Self.OnAcceptText := OnAcceptText; + end; +end; + +function TTBEditItem.GetActionLinkClass: TTBCustomItemActionLinkClass; +begin + Result := TTBEditItemActionLink; +end; + +function TTBEditItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + if not(tboUseEditWhenVertical in EditOptions) and + (AView.Orientation = tbvoVertical) then + Result := inherited GetItemViewerClass(AView) + else + Result := TTBEditItemViewer; +end; + +function TTBEditItem.NeedToRecreateViewer(AViewer: TTBItemViewer): Boolean; +begin + Result := GetItemViewerClass(AViewer.View) <> AViewer.ClassType; +end; + +procedure TTBEditItem.Clear; +begin + Text := ''; +end; + +procedure TTBEditItem.Click; +begin + inherited; +end; + +procedure TTBEditItem.DoBeginEdit(Viewer: TTBEditItemViewer); +begin + if Assigned(FOnBeginEdit) then + FOnBeginEdit(Self, Viewer, Viewer.EditControl); +end; + +function TTBEditItem.IsEditOptionsStored: Boolean; +begin + Result := (EditOptions <> EditItemDefaultEditOptions) and + ((ActionLink = nil) or not(ActionLink is TTBEditItemActionLink) or + not TTBEditItemActionLink(ActionLink).IsEditOptionsLinked); +end; + +function TTBEditItem.IsEditCaptionStored: Boolean; +begin + Result := (ActionLink = nil) or not(ActionLink is TTBEditItemActionLink) or + not TTBEditItemActionLink(ActionLink).IsEditCaptionLinked; +end; + +function TTBEditItem.IsEditWidthStored: Boolean; +begin + Result := (EditWidth <> EditItemDefaultEditWidth) and + ((ActionLink = nil) or not(ActionLink is TTBEditItemActionLink) or + not TTBEditItemActionLink(ActionLink).IsEditWidthLinked); +end; + +function TTBEditItem.IsTextStored: Boolean; +begin + Result := (ActionLink = nil) or not(ActionLink is TTBEditItemActionLink) or + not TTBEditItemActionLink(ActionLink).IsTextLinked; +end; + +procedure TTBEditItem.SetCharCase(Value: TEditCharCase); +begin + if FCharCase <> Value then begin + FCharCase := Value; + Text := Text; { update case } + end; +end; + +procedure TTBEditItem.SetEditOptions(Value: TTBEditItemOptions); +begin + if FEditOptions <> Value then begin + FEditOptions := Value; + Change(True); + end; +end; + +procedure TTBEditItem.SetEditCaption(Value: String); +begin + if FEditCaption <> Value then begin + FEditCaption := Value; + Change(True); + end; +end; + +procedure TTBEditItem.SetEditWidth(Value: Integer); +begin + if FEditWidth <> Value then begin + FEditWidth := Value; + Change(True); + end; +end; + +procedure TTBEditItem.SetMaxLength(Value: Integer); +begin + if FMaxLength <> Value then begin + FMaxLength := Value; + Change(False); + end; +end; + +function TTBEditItem.DoAcceptText(var NewText: string): Boolean; +begin + Result := True; + if Assigned(FOnAcceptText) then FOnAcceptText(Self, NewText, Result); +end; + +procedure TTBEditItem.DoTextChanging(const OldText: String; var NewText: String; Reason: Integer); +begin + case FCharCase of + ecUpperCase: NewText := AnsiUpperCase(NewText); + ecLowerCase: NewText := AnsiLowerCase(NewText); + end; +end; + +procedure TTBEditItem.DoTextChanged(Reason: Integer); +begin +end; + +procedure TTBEditItem.SetText(Value: String); +begin + DoTextChanging(FText, Value, tcrSetProperty); + if FText <> Value then begin + FText := Value; + Change(False); + DoTextChanged(tcrSetProperty); + end; +end; + +procedure TTBEditItem.SetTextEx(Value: String; Reason: Integer); +begin + DoTextChanging(FText, Value, Reason); + if FText <> Value then begin + FText := Value; + Change(False); + DoTextChanged(Reason); + end; +end; + + +{ TTBEditItemViewer } + +procedure TTBEditItemViewer.EditWndProc(var Message: TMessage); +var + Item: TTBEditItem; + + procedure AcceptText; + var + S: String; + begin + S := FEditControl.Text; + if Item.DoAcceptText(S) then Item.SetTextEx(S, tcrEditControl); + end; + +begin + Item := TTBEditItem(Self.Item); + if FEditControl = nil then + Exit; + if Message.Msg = WM_CHAR then + case TWMChar(Message).CharCode of + VK_TAB: begin + FEditControlStatus := [ecsAccept]; + AcceptText; + Exit; + end; + VK_RETURN: begin + FEditControlStatus := [ecsAccept, ecsClose]; + AcceptText; + Exit; + end; + VK_ESCAPE: begin + FEditControlStatus := []; + Exit; + end; + end; + TEditAccess(FEditControl).WndProc(Message); + if Message.Msg = WM_KILLFOCUS then begin + { Someone has stolen the focus from us, so 'cancel mode'. (We have to + handle WM_KILLFOCUS in addition to the upstream WM_CANCELMODE handling + since we don't always hold the mouse capture.) } + View.CancelMode; + FEditControlStatus := [ecsClose]; + end; +end; + +function TTBEditItemViewer.GetEditControlClass: TEditClass; +begin + Result := TEdit; +end; + +procedure TTBEditItemViewer.GetEditRect(var R: TRect); +var + Item: TTBEditItem; + DC: HDC; +begin + Item := TTBEditItem(Self.Item); + DC := GetDC(0); + try + SelectObject(DC, View.GetFont.Handle); + R := BoundsRect; + if not View.IsToolbar and (Item.EditCaption <> '') then begin + Inc(R.Left, GetTextWidth(DC, Item.EditCaption, True) + + EditMenuMidWidth + EditMenuTextMargin * 2); + end; + finally + ReleaseDC(0, DC); + end; +end; + +procedure TTBEditItemViewer.CalcSize(const Canvas: TCanvas; + var AWidth, AHeight: Integer); +var + Item: TTBEditItem; + DC: HDC; + TextHeight, MinHeight: Integer; +begin + Item := TTBEditItem(Self.Item); + DC := Canvas.Handle; + TextHeight := GetTextHeight(DC); + AWidth := Item.FEditWidth; + AHeight := TextHeight; + if not IsToolbarStyle and (Item.EditCaption <> '') then begin + Inc(AWidth, GetTextWidth(DC, Item.EditCaption, True) + EditMenuMidWidth + + EditMenuTextMargin * 2); + end; + MinHeight := AHeight + (EditMenuTextMargin * 2) + 1; + if not IsToolbarStyle then + Inc(AHeight, DivRoundUp(AHeight, 4)); + if AHeight < MinHeight then + AHeight := MinHeight; +end; + +function TTBEditItemViewer.CaptionShown: Boolean; +begin + Result := not IsToolbarStyle and inherited CaptionShown; +end; + +function TTBEditItemViewer.GetCaptionText: String; +begin + Result := TTBEditItem(Item).EditCaption; +end; + +procedure TTBEditItemViewer.Paint(const Canvas: TCanvas; + const ClientAreaRect: TRect; IsSelected, IsPushed, UseDisabledShadow: Boolean); +const + FillColors: array[Boolean] of TColor = (clBtnFace, clWindow); + TextColors: array[Boolean] of TColor = (clGrayText, clWindowText); +var + Item: TTBEditItem; + S: String; + R: TRect; + W: Integer; +begin + Item := TTBEditItem(Self.Item); + R := ClientAreaRect; + + { Caption } + if not IsToolbarStyle and (Item.EditCaption <> '') then begin + S := Item.EditCaption; + W := GetTextWidth(Canvas.Handle, S, True) + EditMenuTextMargin * 2; + R.Right := R.Left + W; + if IsSelected then + Canvas.FillRect(R); + Inc(R.Left, EditMenuTextMargin); + DrawItemCaption(Canvas, R, S, UseDisabledShadow, DT_SINGLELINE or + DT_LEFT or DT_VCENTER); + R := ClientAreaRect; + Inc(R.Left, W + EditMenuMidWidth); + end; + + { Border } + if IsSelected and Item.Enabled then + DrawEdge(Canvas.Handle, R, BDR_SUNKENOUTER, BF_RECT); + InflateRect(R, -1, -1); + Canvas.Brush.Color := FillColors[not Item.Enabled]; + Canvas.FrameRect(R); + InflateRect(R, -1, -1); + + { Fill } + Canvas.Brush.Color := FillColors[Item.Enabled]; + Canvas.FillRect(R); + InflateRect(R, -1, -1); + + { Text } + if Item.Text <> '' then begin + S := Item.Text; + Canvas.Brush.Style := bsClear; { speed optimization } + Canvas.Font.Color := TextColors[Item.Enabled]; + DrawText(Canvas.Handle, PChar(S), Length(S), R, DT_SINGLELINE or DT_NOPREFIX); + end; +end; + +procedure TTBEditItemViewer.GetCursor(const Pt: TPoint; var ACursor: HCURSOR); +var + R: TRect; +begin + if not Item.Enabled then + Exit; + GetEditRect(R); + OffsetRect(R, -BoundsRect.Left, -BoundsRect.Top); + InflateRect(R, -2, -2); + if PtInRect(R, Pt) then + ACursor := LoadCursor(0, IDC_IBEAM); +end; + +function TTBEditItemViewer.EditLoop(const CapHandle: HWND): Boolean; + + procedure ControlMessageLoop; + + function PointInWindow(const Wnd: HWND; const P: TPoint): Boolean; + var + W: HWND; + begin + Result := False; + W := WindowFromPoint(P); + if W = 0 then Exit; + if W = Wnd then + Result := True + else + if IsChild(Wnd, W) then + Result := True; + end; + + function ContinueLoop: Boolean; + begin + Result := (ecsContinueLoop in FEditControlStatus) and + not View.IsModalEnding and FEditControl.Focused and Item.Enabled; + { Note: View.IsModalEnding is checked since TTBView.CancelMode doesn't + destroy popup windows; it merely hides them and calls EndModal. So if + IsModalEnding returns True we can infer that CancelMode was likely + called. } + end; + + var + Msg: TMsg; + IsKeypadDigit: Boolean; + V: Integer; + begin + try + while ContinueLoop do begin + { Examine the next message before popping it out of the queue } + if not PeekMessage(Msg, 0, 0, 0, PM_NOREMOVE) then begin + WaitMessage; + Continue; + end; + case Msg.message of + WM_SYSKEYDOWN: begin + { Exit immediately if Alt+[key] or F10 are pressed, but not + Alt+Shift, Alt+`, or Alt+[keypad digit] } + if (Msg.wParam <> VK_MENU) and (Msg.wParam <> VK_SHIFT) and + (Msg.wParam <> VK_HANJA) then begin + IsKeypadDigit := False; + { This detect digits regardless of whether Num Lock is on: } + if Lo(LongRec(Msg.lParam).Hi) <> 0 then + for V := VK_NUMPAD0 to VK_NUMPAD9 do + if MapVirtualKey(V, 0) = Lo(LongRec(Msg.lParam).Hi) then begin + IsKeypadDigit := True; + Break; + end; + if not IsKeypadDigit then begin + FEditControlStatus := [ecsClose]; + Exit; + end; + end; + end; + WM_SYSKEYUP: begin + { Exit when Alt is released by itself } + if Msg.wParam = VK_MENU then begin + FEditControlStatus := [ecsClose]; + Exit; + end; + end; + WM_LBUTTONDOWN, WM_LBUTTONDBLCLK, + WM_RBUTTONDOWN, WM_RBUTTONDBLCLK, + WM_MBUTTONDOWN, WM_MBUTTONDBLCLK, + WM_NCLBUTTONDOWN, WM_NCLBUTTONDBLCLK, + WM_NCRBUTTONDOWN, WM_NCRBUTTONDBLCLK, + WM_NCMBUTTONDOWN, WM_NCMBUTTONDBLCLK: begin + { If a mouse click outside the edit control is in the queue, + exit and let the upstream message loop deal with it } + if Msg.hwnd <> FEditControl.Handle then + Exit; + end; + WM_MOUSEMOVE, WM_NCMOUSEMOVE: begin + if GetCapture = CapHandle then begin + if PointInWindow(FEditControl.Handle, Msg.pt) then + ReleaseCapture; + end + else if GetCapture = 0 then begin + if not PointInWindow(FEditControl.Handle, Msg.pt) then + SetCapture(CapHandle); + end; + if GetCapture = CapHandle then + SetCursor(LoadCursor(0, IDC_ARROW)); + end; + end; + { Now pop the message out of the queue } + if not PeekMessage(Msg, 0, Msg.message, Msg.message, PM_REMOVE or PM_NOYIELD) then + Continue; + if ((Msg.message >= WM_MOUSEFIRST) and (Msg.message <= WM_MOUSELAST)) and + (Msg.hwnd = CapHandle) then + { discard, so that the selection doesn't get changed } + else begin + TranslateMessage(Msg); + DispatchMessage(Msg); + end; + end; + finally + { Make sure there are no outstanding WM_*CHAR messages } + RemoveMessages(WM_CHAR, WM_DEADCHAR); + RemoveMessages(WM_SYSCHAR, WM_SYSDEADCHAR); + end; + end; + +var + Item: TTBEditItem; + R: TRect; + ActiveWnd, FocusWnd: HWND; + S: string; +begin + Item := TTBEditItem(Self.Item); + GetEditRect(R); + if IsRectEmpty(R) then begin + Result := False; + Exit; + end; + + ActiveWnd := GetActiveWindow; + FocusWnd := GetFocus; + + { Create the edit control } + InflateRect(R, -3, -3); + //View.FreeNotification (Self); + FEditControl := GetEditControlClass.Create(nil); + try + FEditControl.Name := Format('%s_edit_control_%p', [ClassName, + Pointer(FEditControl)]); + FEditControl.Visible := False; + FEditControl.BorderStyle := bsNone; + FEditControl.AutoSize := False; + FEditControl.Font.Assign(View.GetFont); + FEditControl.Text := Item.Text; + FEditControl.CharCase := Item.FCharCase; + FEditControl.MaxLength := Item.FMaxLength; + FEditControl.BoundsRect := R; + FEditControl.WindowProc := EditWndProc; + FEditControl.ParentWindow := View.Window.Handle; + FEditControl.SelectAll; + Item.DoBeginEdit(Self); + FEditControl.Visible := True; + FEditControl.SetFocus; + if GetActiveWindow <> ActiveWnd then + { don't gray out title bar of old active window } + SendMessage(ActiveWnd, WM_NCACTIVATE, 1, 0) + else + ActiveWnd := 0; + + FEditControlStatus := [ecsContinueLoop]; + ControlMessageLoop; + finally + S := FEditControl.Text; + FreeAndNil(FEditControl); + end; + + with TTBEditItem(Item) do + if (FEditControlStatus = [ecsContinueLoop]) and ExtendedAccept then + if DoAcceptText(S) then SetTextEx(S, tcrEditControl); + + { ensure the area underneath the edit control is repainted immediately } + View.Window.Update; + { If app is still active, set focus to previous control and restore capture + to CapHandle if another control hasn't taken it } + if GetActiveWindow <> 0 then begin + SetFocus(FocusWnd); + if GetCapture = 0 then + SetCapture(CapHandle); + end; + if ActiveWnd <> 0 then + SendMessage(ActiveWnd, WM_NCACTIVATE, Ord(GetActiveWindow = ActiveWnd), 0); + { The SetFocus call above can change the Z order of windows. If the parent + window is a popup window, reassert its topmostness. } + if View.Window is TTBPopupWindow then + SetWindowPos(View.Window.Handle, HWND_TOPMOST, 0, 0, 0, 0, + SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); + { Send an MSAA "focus" event now that we're returning to the regular modal loop } + View.NotifyFocusEvent; + + Result := ecsClose in FEditControlStatus; + if not Result and (GetCapture = CapHandle) then begin + if ecsAccept in FEditControlStatus then + { if we are accepting but not closing, Tab must have been pressed } + View.Selected := View.NextSelectable(View.Selected, + GetKeyState(VK_SHIFT) >= 0); + end; +end; + +function TTBEditItemViewer.DoExecute: Boolean; +begin + { Close any delay-close popup menus before entering the edit loop } + View.CancelChildPopups; + Result := False; + if EditLoop(View.GetCaptureWnd) then begin + View.EndModal; + if ecsAccept in FEditControlStatus then + Result := True; + end; +end; + +procedure TTBEditItemViewer.MouseBeginEdit; +begin + if Item.Enabled then + Execute(True) + else begin + if (View.ParentView = nil) and not View.IsPopup then + View.EndModal; + end; +end; + +procedure TTBEditItemViewer.MouseDown(Shift: TShiftState; X, Y: Integer; + var MouseDownOnMenu: Boolean); +begin + if IsPtInButtonPart(X, Y) then { for TBX... } + MouseBeginEdit + else + inherited; +end; + +procedure TTBEditItemViewer.MouseUp(X, Y: Integer; MouseWasDownOnMenu: Boolean); +begin + if IsPtInButtonPart(X, Y) then { for TBX... } + MouseBeginEdit + else + inherited; +end; + +function TTBEditItemViewer.UsesSameWidth: Boolean; +begin + Result := False; +end; + +function TTBEditItemViewer.GetAccRole: Integer; +const + ROLE_SYSTEM_TEXT = $2a; { from OleAcc.h } +begin + Result := ROLE_SYSTEM_TEXT; +end; + +function TTBEditItemViewer.GetAccValue(var Value: WideString): Boolean; +begin + Value := TTBEditItem(Item).Text; + Result := True; +end; + + +{ TTBToolbarVisibilityItem } + +procedure TTBVisibilityToggleItem.Click; +begin + if Assigned(FControl) then + FControl.Visible := not FControl.Visible; + inherited; +end; + +procedure TTBVisibilityToggleItem.InitiateAction; +begin + UpdateProps; +end; + +procedure TTBVisibilityToggleItem.Notification(AComponent: TComponent; + Operation: TOperation); +begin + inherited; + if (Operation = opRemove) and (AComponent = FControl) then + Control := nil; +end; + +procedure TTBVisibilityToggleItem.SetControl(Value: TControl); +begin + if FControl <> Value then begin + FControl := Value; + if Assigned(Value) then begin + Value.FreeNotification(Self); + if (Caption = '') and not(csLoading in ComponentState) then + Caption := TControlAccess(Value).Caption; + end; + UpdateProps; + end; +end; + +procedure TTBVisibilityToggleItem.UpdateProps; +begin + if (ComponentState * [csDesigning, csLoading, csDestroying] = []) then + Checked := Assigned(FControl) and FControl.Visible; +end; + +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2ExtItems.pas.orig b/official/2.1.6+2.1.beta1/Source/TB2ExtItems.pas.orig new file mode 100644 index 0000000..ae99b6a --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2ExtItems.pas.orig @@ -0,0 +1,962 @@ +unit TB2ExtItems; + +{ + Toolbar2000 + Copyright (C) 1998-2005 by Jordan Russell + All rights reserved. + + The contents of this file are subject to the "Toolbar2000 License"; you may + not use or distribute this file except in compliance with the + "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in + TB2k-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + + Alternatively, the contents of this file may be used under the terms of the + GNU General Public License (the "GPL"), in which case the provisions of the + GPL are applicable instead of those in the "Toolbar2000 License". A copy of + the GPL may be found in GPL-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + If you wish to allow use of your version of this file only under the terms of + the GPL and not to allow others to use your version of this file under the + "Toolbar2000 License", indicate your decision by deleting the provisions + above and replace them with the notice and other provisions required by the + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + + $jrsoftware: tb2k/Source/TB2ExtItems.pas,v 1.63 2005/07/04 02:49:52 jr Exp $ +} + +interface + +{$I TB2Ver.inc} + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + StdCtrls, CommCtrl, Menus, ActnList, + TB2Item; + +type + TTBEditItemOption = (tboUseEditWhenVertical); + TTBEditItemOptions = set of TTBEditItemOption; + +const + EditItemDefaultEditOptions = []; + EditItemDefaultEditWidth = 64; + +type + TTBEditItem = class; + TTBEditItemViewer = class; + + TTBAcceptTextEvent = procedure(Sender: TObject; var NewText: String; + var Accept: Boolean) of object; + TTBBeginEditEvent = procedure(Sender: TTBEditItem; Viewer: TTBEditItemViewer; + EditControl: TEdit) of object; + + TTBEditAction = class(TAction) + private + FEditOptions: TTBEditItemOptions; + FEditCaption: String; + FEditWidth: Integer; + FOnAcceptText: TTBAcceptTextEvent; + FText: String; + procedure SetEditCaption(Value: String); + procedure SetEditOptions(Value: TTBEditItemOptions); + procedure SetEditWidth(Value: Integer); + procedure SetOnAcceptText(Value: TTBAcceptTextEvent); + procedure SetText(Value: String); + public + constructor Create(AOwner: TComponent); override; + published + property EditCaption: String read FEditCaption write SetEditCaption; + property EditOptions: TTBEditItemOptions read FEditOptions write SetEditOptions default EditItemDefaultEditOptions; + property EditWidth: Integer read FEditWidth write SetEditWidth default EditItemDefaultEditWidth; + property Text: String read FText write SetText; + + property OnAcceptText: TTBAcceptTextEvent read FOnAcceptText write SetOnAcceptText; + end; + + TTBEditItemActionLink = class(TTBCustomItemActionLink) + protected + procedure AssignClient(AClient: TObject); override; + function IsEditCaptionLinked: Boolean; virtual; + function IsEditOptionsLinked: Boolean; virtual; + function IsEditWidthLinked: Boolean; virtual; + function IsOnAcceptTextLinked: Boolean; virtual; + function IsTextLinked: Boolean; virtual; + procedure SetEditCaption(const Value: String); virtual; + procedure SetEditOptions(Value: TTBEditItemOptions); virtual; + procedure SetEditWidth(const Value: Integer); virtual; + procedure SetOnAcceptText(Value: TTBAcceptTextEvent); virtual; + procedure SetText(const Value: String); virtual; + end; + + TTBEditItem = class(TTBCustomItem) + private + FCharCase: TEditCharCase; + FEditCaption: String; + FEditOptions: TTBEditItemOptions; + FEditWidth: Integer; + FMaxLength: Integer; + FOnAcceptText: TTBAcceptTextEvent; + FOnBeginEdit: TTBBeginEditEvent; + FText: String; + function IsEditCaptionStored: Boolean; + function IsEditOptionsStored: Boolean; + function IsEditWidthStored: Boolean; + function IsTextStored: Boolean; + procedure SetCharCase(Value: TEditCharCase); + procedure SetEditCaption(Value: String); + procedure SetEditOptions(Value: TTBEditItemOptions); + procedure SetEditWidth(Value: Integer); + procedure SetMaxLength(Value: Integer); + procedure SetText(Value: String); + protected + procedure ActionChange(Sender: TObject; CheckDefaults: Boolean); override; + procedure DoBeginEdit(Viewer: TTBEditItemViewer); virtual; + function GetActionLinkClass: TTBCustomItemActionLinkClass; override; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + function NeedToRecreateViewer(AViewer: TTBItemViewer): Boolean; override; + public + constructor Create(AOwner: TComponent); override; + procedure Clear; + procedure Click; override; + published + property Action; + property AutoCheck; + property Caption; + property CharCase: TEditCharCase read FCharCase write SetCharCase default ecNormal; + property Checked; + property DisplayMode; + property EditCaption: String read FEditCaption write SetEditCaption stored IsEditCaptionStored; + property EditOptions: TTBEditItemOptions read FEditOptions write SetEditOptions stored IsEditOptionsStored; + property EditWidth: Integer read FEditWidth write SetEditWidth stored IsEditWidthStored; + property MaxLength: Integer read FMaxLength write SetMaxLength default 0; + property Enabled; + property GroupIndex; + property HelpContext; + property Hint; + property ImageIndex; + property RadioItem; + property ShortCut; + property Text: String read FText write SetText stored IsTextStored; + property Visible; + + property OnAcceptText: TTBAcceptTextEvent read FOnAcceptText write FOnAcceptText; + property OnBeginEdit: TTBBeginEditEvent read FOnBeginEdit write FOnBeginEdit; + property OnClick; + property OnSelect; + end; + + TTBEditItemViewer = class(TTBItemViewer) + private + FEditControl: TEdit; + FEditControlStatus: set of (ecsContinueLoop, ecsAccept, ecsClose); + function EditLoop(const CapHandle: HWND): Boolean; + procedure EditWndProc(var Message: TMessage); + procedure MouseBeginEdit; + protected + procedure CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); + override; + function CaptionShown: Boolean; override; + function DoExecute: Boolean; override; + function GetAccRole: Integer; override; + function GetAccValue(var Value: WideString): Boolean; override; + function GetCaptionText: String; override; + procedure GetCursor(const Pt: TPoint; var ACursor: HCURSOR); override; + procedure GetEditRect(var R: TRect); virtual; + procedure MouseDown(Shift: TShiftState; X, Y: Integer; + var MouseDownOnMenu: Boolean); override; + procedure MouseUp(X, Y: Integer; MouseWasDownOnMenu: Boolean); override; + procedure Paint(const Canvas: TCanvas; const ClientAreaRect: TRect; + IsSelected, IsPushed, UseDisabledShadow: Boolean); override; + function UsesSameWidth: Boolean; override; + public + property EditControl: TEdit read FEditControl; + end; + + { TTBVisibilityToggleItem } + + TTBVisibilityToggleItem = class(TTBCustomItem) + private + FControl: TControl; + procedure SetControl(Value: TControl); + procedure UpdateProps; + protected + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + public + procedure Click; override; + procedure InitiateAction; override; + published + property Caption; + property Control: TControl read FControl write SetControl; + property DisplayMode; + property Enabled; + property HelpContext; + property Hint; + property ImageIndex; + property Images; + property InheritOptions; + property MaskOptions; + property Options; + property ShortCut; + property Visible; + + property OnClick; + property OnSelect; + end; + + +implementation + +uses + TB2Common, TB2Consts; + +const + EditMenuTextMargin = 3; + EditMenuMidWidth = 4; + +type + TControlAccess = class(TControl); + TEditAccess = class(TEdit); + + +{ TTBEditAction } + +constructor TTBEditAction.Create(AOwner: TComponent); +begin + inherited; + FEditOptions := EditItemDefaultEditOptions; + FEditWidth := EditItemDefaultEditWidth; + DisableIfNoHandler := False; +end; + +procedure TTBEditAction.SetEditCaption(Value: String); +var + I: Integer; +begin + if FEditCaption <> Value then begin + for I := 0 to FClients.Count - 1 do + if TBasicActionLink(FClients[I]) is TTBEditItemActionLink then + TTBEditItemActionLink(FClients[I]).SetEditCaption(Value); + FEditCaption := Value; + Change; + end; +end; + +procedure TTBEditAction.SetEditOptions(Value: TTBEditItemOptions); +var + I: Integer; +begin + if FEditOptions <> Value then begin + for I := 0 to FClients.Count - 1 do + if TBasicActionLink(FClients[I]) is TTBEditItemActionLink then + TTBEditItemActionLink(FClients[I]).SetEditOptions(Value); + FEditOptions := Value; + Change; + end; +end; + +procedure TTBEditAction.SetEditWidth(Value: Integer); +var + I: Integer; +begin + if FEditWidth <> Value then begin + for I := 0 to FClients.Count - 1 do + if TBasicActionLink(FClients[I]) is TTBEditItemActionLink then + TTBEditItemActionLink(FClients[I]).SetEditWidth(Value); + FEditWidth := Value; + Change; + end; +end; + +procedure TTBEditAction.SetOnAcceptText(Value: TTBAcceptTextEvent); +var + I: Integer; +begin + if not MethodsEqual(TMethod(FOnAcceptText), TMethod(Value)) then begin + for I := 0 to FClients.Count - 1 do + if TBasicActionLink(FClients[I]) is TTBEditItemActionLink then + TTBEditItemActionLink(FClients[I]).SetOnAcceptText(Value); + FOnAcceptText := Value; + Change; + end; +end; + +procedure TTBEditAction.SetText(Value: String); +var + I: Integer; +begin + if FText <> Value then begin + for I := 0 to FClients.Count - 1 do + if TBasicActionLink(FClients[I]) is TTBEditItemActionLink then + TTBEditItemActionLink(FClients[I]).SetText(Value); + FText := Value; + Change; + end; +end; + + +{ TTBEditItemActionLink } + +procedure TTBEditItemActionLink.AssignClient(AClient: TObject); +begin + FClient := AClient as TTBEditItem; +end; + +function TTBEditItemActionLink.IsEditCaptionLinked: Boolean; +begin + if Action is TTBEditAction then + Result := TTBEditItem(FClient).EditCaption = TTBEditAction(Action).EditCaption + else + Result := False; +end; + +function TTBEditItemActionLink.IsEditOptionsLinked: Boolean; +begin + if Action is TTBEditAction then + Result := TTBEditItem(FClient).EditOptions = TTBEditAction(Action).EditOptions + else + Result := False; +end; + +function TTBEditItemActionLink.IsEditWidthLinked: Boolean; +begin + if Action is TTBEditAction then + Result := TTBEditItem(FClient).EditWidth = TTBEditAction(Action).EditWidth + else + Result := False; +end; + +function TTBEditItemActionLink.IsOnAcceptTextLinked: Boolean; +begin + if Action is TTBEditAction then + Result := MethodsEqual(TMethod(TTBEditItem(FClient).OnAcceptText), + TMethod(TTBEditAction(Action).OnAcceptText)) + else + Result := False; +end; + +function TTBEditItemActionLink.IsTextLinked: Boolean; +begin + if Action is TTBEditAction then + Result := TTBEditItem(FClient).Text = TTBEditAction(Action).Text + else + Result := False; +end; + +procedure TTBEditItemActionLink.SetEditCaption(const Value: String); +begin + if IsEditCaptionLinked then TTBEditItem(FClient).EditCaption := Value; +end; + +procedure TTBEditItemActionLink.SetEditOptions(Value: TTBEditItemOptions); +begin + if IsEditOptionsLinked then TTBEditItem(FClient).EditOptions := Value; +end; + +procedure TTBEditItemActionLink.SetEditWidth(const Value: Integer); +begin + if IsEditWidthLinked then TTBEditItem(FClient).EditWidth := Value; +end; + +procedure TTBEditItemActionLink.SetOnAcceptText(Value: TTBAcceptTextEvent); +begin + if IsOnAcceptTextLinked then TTBEditItem(FClient).OnAcceptText := Value; +end; + +procedure TTBEditItemActionLink.SetText(const Value: String); +begin + if IsTextLinked then TTBEditItem(FClient).Text := Value; +end; + + +{ TTBEditItem } + +constructor TTBEditItem.Create(AOwner: TComponent); +begin + inherited; + FEditOptions := EditItemDefaultEditOptions; + FEditWidth := EditItemDefaultEditWidth; +end; + +procedure TTBEditItem.ActionChange(Sender: TObject; CheckDefaults: Boolean); +begin + inherited; + if Action is TTBEditAction then + with TTBEditAction(Sender) do + begin + if not CheckDefaults or (Self.EditCaption = '') then + Self.EditCaption := EditCaption; + if not CheckDefaults or (Self.EditOptions = []) then + Self.EditOptions := EditOptions; + if not CheckDefaults or (Self.Text = '') then + Self.Text := Text; + if not CheckDefaults or not Assigned(Self.OnAcceptText) then + Self.OnAcceptText := OnAcceptText; + end; +end; + +function TTBEditItem.GetActionLinkClass: TTBCustomItemActionLinkClass; +begin + Result := TTBEditItemActionLink; +end; + +function TTBEditItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + if not(tboUseEditWhenVertical in EditOptions) and + (AView.Orientation = tbvoVertical) then + Result := inherited GetItemViewerClass(AView) + else + Result := TTBEditItemViewer; +end; + +function TTBEditItem.NeedToRecreateViewer(AViewer: TTBItemViewer): Boolean; +begin + Result := GetItemViewerClass(AViewer.View) <> AViewer.ClassType; +end; + +procedure TTBEditItem.Clear; +begin + Text := ''; +end; + +procedure TTBEditItem.Click; +begin + inherited; +end; + +procedure TTBEditItem.DoBeginEdit(Viewer: TTBEditItemViewer); +begin + if Assigned(FOnBeginEdit) then + FOnBeginEdit(Self, Viewer, Viewer.EditControl); +end; + +function TTBEditItem.IsEditOptionsStored: Boolean; +begin + Result := (EditOptions <> EditItemDefaultEditOptions) and + ((ActionLink = nil) or not(ActionLink is TTBEditItemActionLink) or + not TTBEditItemActionLink(ActionLink).IsEditOptionsLinked); +end; + +function TTBEditItem.IsEditCaptionStored: Boolean; +begin + Result := (ActionLink = nil) or not(ActionLink is TTBEditItemActionLink) or + not TTBEditItemActionLink(ActionLink).IsEditCaptionLinked; +end; + +function TTBEditItem.IsEditWidthStored: Boolean; +begin + Result := (EditWidth <> EditItemDefaultEditWidth) and + ((ActionLink = nil) or not(ActionLink is TTBEditItemActionLink) or + not TTBEditItemActionLink(ActionLink).IsEditWidthLinked); +end; + +function TTBEditItem.IsTextStored: Boolean; +begin + Result := (ActionLink = nil) or not(ActionLink is TTBEditItemActionLink) or + not TTBEditItemActionLink(ActionLink).IsTextLinked; +end; + +procedure TTBEditItem.SetCharCase(Value: TEditCharCase); +begin + if FCharCase <> Value then begin + FCharCase := Value; + Text := Text; { update case } + end; +end; + +procedure TTBEditItem.SetEditOptions(Value: TTBEditItemOptions); +begin + if FEditOptions <> Value then begin + FEditOptions := Value; + Change(True); + end; +end; + +procedure TTBEditItem.SetEditCaption(Value: String); +begin + if FEditCaption <> Value then begin + FEditCaption := Value; + Change(True); + end; +end; + +procedure TTBEditItem.SetEditWidth(Value: Integer); +begin + if FEditWidth <> Value then begin + FEditWidth := Value; + Change(True); + end; +end; + +procedure TTBEditItem.SetMaxLength(Value: Integer); +begin + if FMaxLength <> Value then begin + FMaxLength := Value; + Change(False); + end; +end; + +procedure TTBEditItem.SetText(Value: String); +begin + case FCharCase of + ecUpperCase: Value := AnsiUpperCase(Value); + ecLowerCase: Value := AnsiLowerCase(Value); + end; + if FText <> Value then begin + FText := Value; + Change(False); + end; +end; + + +{ TTBEditItemViewer } + +procedure TTBEditItemViewer.EditWndProc(var Message: TMessage); +var + Item: TTBEditItem; + + procedure AcceptText; + var + S: String; + Accept: Boolean; + begin + S := FEditControl.Text; + Accept := True; + if Assigned(Item.FOnAcceptText) then + Item.FOnAcceptText(Self, S, Accept); + if Accept then + Item.Text := S; + end; + +begin + Item := TTBEditItem(Self.Item); + if FEditControl = nil then + Exit; + if Message.Msg = WM_CHAR then + case TWMChar(Message).CharCode of + VK_TAB: begin + FEditControlStatus := [ecsAccept]; + AcceptText; + Exit; + end; + VK_RETURN: begin + FEditControlStatus := [ecsAccept, ecsClose]; + AcceptText; + Exit; + end; + VK_ESCAPE: begin + FEditControlStatus := []; + Exit; + end; + end; + TEditAccess(FEditControl).WndProc(Message); + if Message.Msg = WM_KILLFOCUS then begin + { Someone has stolen the focus from us, so 'cancel mode'. (We have to + handle WM_KILLFOCUS in addition to the upstream WM_CANCELMODE handling + since we don't always hold the mouse capture.) } + View.CancelMode; + FEditControlStatus := [ecsClose]; + end; +end; + +procedure TTBEditItemViewer.GetEditRect(var R: TRect); +var + Item: TTBEditItem; + DC: HDC; +begin + Item := TTBEditItem(Self.Item); + DC := GetDC(0); + try + SelectObject(DC, View.GetFont.Handle); + R := BoundsRect; + if not View.IsToolbar and (Item.EditCaption <> '') then begin + Inc(R.Left, GetTextWidth(DC, Item.EditCaption, True) + + EditMenuMidWidth + EditMenuTextMargin * 2); + end; + finally + ReleaseDC(0, DC); + end; +end; + +procedure TTBEditItemViewer.CalcSize(const Canvas: TCanvas; + var AWidth, AHeight: Integer); +var + Item: TTBEditItem; + DC: HDC; + TextHeight, MinHeight: Integer; +begin + Item := TTBEditItem(Self.Item); + DC := Canvas.Handle; + TextHeight := GetTextHeight(DC); + AWidth := Item.FEditWidth; + AHeight := TextHeight; + if not IsToolbarStyle and (Item.EditCaption <> '') then begin + Inc(AWidth, GetTextWidth(DC, Item.EditCaption, True) + EditMenuMidWidth + + EditMenuTextMargin * 2); + end; + MinHeight := AHeight + (EditMenuTextMargin * 2) + 1; + if not IsToolbarStyle then + Inc(AHeight, DivRoundUp(AHeight, 4)); + if AHeight < MinHeight then + AHeight := MinHeight; +end; + +function TTBEditItemViewer.CaptionShown: Boolean; +begin + Result := not IsToolbarStyle and inherited CaptionShown; +end; + +function TTBEditItemViewer.GetCaptionText: String; +begin + Result := TTBEditItem(Item).EditCaption; +end; + +procedure TTBEditItemViewer.Paint(const Canvas: TCanvas; + const ClientAreaRect: TRect; IsSelected, IsPushed, UseDisabledShadow: Boolean); +const + FillColors: array[Boolean] of TColor = (clBtnFace, clWindow); + TextColors: array[Boolean] of TColor = (clGrayText, clWindowText); +var + Item: TTBEditItem; + S: String; + R: TRect; + W: Integer; +begin + Item := TTBEditItem(Self.Item); + R := ClientAreaRect; + + { Caption } + if not IsToolbarStyle and (Item.EditCaption <> '') then begin + S := Item.EditCaption; + W := GetTextWidth(Canvas.Handle, S, True) + EditMenuTextMargin * 2; + R.Right := R.Left + W; + if IsSelected then + Canvas.FillRect(R); + Inc(R.Left, EditMenuTextMargin); + DrawItemCaption(Canvas, R, S, UseDisabledShadow, DT_SINGLELINE or + DT_LEFT or DT_VCENTER); + R := ClientAreaRect; + Inc(R.Left, W + EditMenuMidWidth); + end; + + { Border } + if IsSelected and Item.Enabled then + DrawEdge(Canvas.Handle, R, BDR_SUNKENOUTER, BF_RECT); + InflateRect(R, -1, -1); + Canvas.Brush.Color := FillColors[not Item.Enabled]; + Canvas.FrameRect(R); + InflateRect(R, -1, -1); + + { Fill } + Canvas.Brush.Color := FillColors[Item.Enabled]; + Canvas.FillRect(R); + InflateRect(R, -1, -1); + + { Text } + if Item.Text <> '' then begin + S := Item.Text; + Canvas.Brush.Style := bsClear; { speed optimization } + Canvas.Font.Color := TextColors[Item.Enabled]; + DrawText(Canvas.Handle, PChar(S), Length(S), R, DT_SINGLELINE or DT_NOPREFIX); + end; +end; + +procedure TTBEditItemViewer.GetCursor(const Pt: TPoint; var ACursor: HCURSOR); +var + R: TRect; +begin + if not Item.Enabled then + Exit; + GetEditRect(R); + OffsetRect(R, -BoundsRect.Left, -BoundsRect.Top); + InflateRect(R, -2, -2); + if PtInRect(R, Pt) then + ACursor := LoadCursor(0, IDC_IBEAM); +end; + +function TTBEditItemViewer.EditLoop(const CapHandle: HWND): Boolean; + + procedure ControlMessageLoop; + + function PointInWindow(const Wnd: HWND; const P: TPoint): Boolean; + var + W: HWND; + begin + Result := False; + W := WindowFromPoint(P); + if W = 0 then Exit; + if W = Wnd then + Result := True + else + if IsChild(Wnd, W) then + Result := True; + end; + + function ContinueLoop: Boolean; + begin + Result := (ecsContinueLoop in FEditControlStatus) and + not View.IsModalEnding and FEditControl.Focused and Item.Enabled; + { Note: View.IsModalEnding is checked since TTBView.CancelMode doesn't + destroy popup windows; it merely hides them and calls EndModal. So if + IsModalEnding returns True we can infer that CancelMode was likely + called. } + end; + + var + Msg: TMsg; + IsKeypadDigit: Boolean; + V: Integer; + begin + try + while ContinueLoop do begin + { Examine the next message before popping it out of the queue } + if not PeekMessage(Msg, 0, 0, 0, PM_NOREMOVE) then begin + WaitMessage; + Continue; + end; + case Msg.message of + WM_SYSKEYDOWN: begin + { Exit immediately if Alt+[key] or F10 are pressed, but not + Alt+Shift, Alt+`, or Alt+[keypad digit] } + if (Msg.wParam <> VK_MENU) and (Msg.wParam <> VK_SHIFT) and + (Msg.wParam <> VK_HANJA) then begin + IsKeypadDigit := False; + { This detect digits regardless of whether Num Lock is on: } + if Lo(LongRec(Msg.lParam).Hi) <> 0 then + for V := VK_NUMPAD0 to VK_NUMPAD9 do + if MapVirtualKey(V, 0) = Lo(LongRec(Msg.lParam).Hi) then begin + IsKeypadDigit := True; + Break; + end; + if not IsKeypadDigit then begin + FEditControlStatus := [ecsClose]; + Exit; + end; + end; + end; + WM_SYSKEYUP: begin + { Exit when Alt is released by itself } + if Msg.wParam = VK_MENU then begin + FEditControlStatus := [ecsClose]; + Exit; + end; + end; + WM_LBUTTONDOWN, WM_LBUTTONDBLCLK, + WM_RBUTTONDOWN, WM_RBUTTONDBLCLK, + WM_MBUTTONDOWN, WM_MBUTTONDBLCLK, + WM_NCLBUTTONDOWN, WM_NCLBUTTONDBLCLK, + WM_NCRBUTTONDOWN, WM_NCRBUTTONDBLCLK, + WM_NCMBUTTONDOWN, WM_NCMBUTTONDBLCLK: begin + { If a mouse click outside the edit control is in the queue, + exit and let the upstream message loop deal with it } + if Msg.hwnd <> FEditControl.Handle then + Exit; + end; + WM_MOUSEMOVE, WM_NCMOUSEMOVE: begin + if GetCapture = CapHandle then begin + if PointInWindow(FEditControl.Handle, Msg.pt) then + ReleaseCapture; + end + else if GetCapture = 0 then begin + if not PointInWindow(FEditControl.Handle, Msg.pt) then + SetCapture(CapHandle); + end; + if GetCapture = CapHandle then + SetCursor(LoadCursor(0, IDC_ARROW)); + end; + end; + { Now pop the message out of the queue } + if not PeekMessage(Msg, 0, Msg.message, Msg.message, PM_REMOVE or PM_NOYIELD) then + Continue; + if ((Msg.message >= WM_MOUSEFIRST) and (Msg.message <= WM_MOUSELAST)) and + (Msg.hwnd = CapHandle) then + { discard, so that the selection doesn't get changed } + else begin + TranslateMessage(Msg); + DispatchMessage(Msg); + end; + end; + finally + { Make sure there are no outstanding WM_*CHAR messages } + RemoveMessages(WM_CHAR, WM_DEADCHAR); + RemoveMessages(WM_SYSCHAR, WM_SYSDEADCHAR); + end; + end; + +var + Item: TTBEditItem; + R: TRect; + ActiveWnd, FocusWnd: HWND; +begin + Item := TTBEditItem(Self.Item); + GetEditRect(R); + if IsRectEmpty(R) then begin + Result := False; + Exit; + end; + + ActiveWnd := GetActiveWindow; + FocusWnd := GetFocus; + + { Create the edit control } + InflateRect(R, -3, -3); + //View.FreeNotification(Self); + FEditControl := TEdit.Create(nil); + try + FEditControl.Name := Format('%s_edit_control_%p', [ClassName, + Pointer(FEditControl)]); + FEditControl.Visible := False; + FEditControl.BorderStyle := bsNone; + FEditControl.AutoSize := False; + FEditControl.Font.Assign(View.GetFont); + FEditControl.Text := Item.Text; + FEditControl.CharCase := Item.FCharCase; + FEditControl.MaxLength := Item.FMaxLength; + FEditControl.BoundsRect := R; + FEditControl.WindowProc := EditWndProc; + FEditControl.ParentWindow := View.Window.Handle; + FEditControl.SelectAll; + Item.DoBeginEdit(Self); + FEditControl.Visible := True; + FEditControl.SetFocus; + if GetActiveWindow <> ActiveWnd then + { don't gray out title bar of old active window } + SendMessage(ActiveWnd, WM_NCACTIVATE, 1, 0) + else + ActiveWnd := 0; + + FEditControlStatus := [ecsContinueLoop]; + ControlMessageLoop; + finally + FreeAndNil(FEditControl); + end; + + { ensure the area underneath the edit control is repainted immediately } + View.Window.Update; + { If app is still active, set focus to previous control and restore capture + to CapHandle if another control hasn't taken it } + if GetActiveWindow <> 0 then begin + SetFocus(FocusWnd); + if GetCapture = 0 then + SetCapture(CapHandle); + end; + if ActiveWnd <> 0 then + SendMessage(ActiveWnd, WM_NCACTIVATE, Ord(GetActiveWindow = ActiveWnd), 0); + { The SetFocus call above can change the Z order of windows. If the parent + window is a popup window, reassert its topmostness. } + if View.Window is TTBPopupWindow then + SetWindowPos(View.Window.Handle, HWND_TOPMOST, 0, 0, 0, 0, + SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); + { Send an MSAA "focus" event now that we're returning to the regular modal loop } + View.NotifyFocusEvent; + + Result := ecsClose in FEditControlStatus; + if not Result and (GetCapture = CapHandle) then begin + if ecsAccept in FEditControlStatus then + { if we are accepting but not closing, Tab must have been pressed } + View.Selected := View.NextSelectable(View.Selected, + GetKeyState(VK_SHIFT) >= 0); + end; +end; + +function TTBEditItemViewer.DoExecute: Boolean; +begin + { Close any delay-close popup menus before entering the edit loop } + View.CancelChildPopups; + Result := False; + if EditLoop(View.GetCaptureWnd) then begin + View.EndModal; + if ecsAccept in FEditControlStatus then + Result := True; + end; +end; + +procedure TTBEditItemViewer.MouseBeginEdit; +begin + if Item.Enabled then + Execute(True) + else begin + if (View.ParentView = nil) and not View.IsPopup then + View.EndModal; + end; +end; + +procedure TTBEditItemViewer.MouseDown(Shift: TShiftState; X, Y: Integer; + var MouseDownOnMenu: Boolean); +begin + if IsPtInButtonPart(X, Y) then { for TBX... } + MouseBeginEdit + else + inherited; +end; + +procedure TTBEditItemViewer.MouseUp(X, Y: Integer; MouseWasDownOnMenu: Boolean); +begin + if IsPtInButtonPart(X, Y) then { for TBX... } + MouseBeginEdit + else + inherited; +end; + +function TTBEditItemViewer.UsesSameWidth: Boolean; +begin + Result := False; +end; + +function TTBEditItemViewer.GetAccRole: Integer; +const + ROLE_SYSTEM_TEXT = $2a; { from OleAcc.h } +begin + Result := ROLE_SYSTEM_TEXT; +end; + +function TTBEditItemViewer.GetAccValue(var Value: WideString): Boolean; +begin + Value := TTBEditItem(Item).Text; + Result := True; +end; + + +{ TTBToolbarVisibilityItem } + +procedure TTBVisibilityToggleItem.Click; +begin + if Assigned(FControl) then + FControl.Visible := not FControl.Visible; + inherited; +end; + +procedure TTBVisibilityToggleItem.InitiateAction; +begin + UpdateProps; +end; + +procedure TTBVisibilityToggleItem.Notification(AComponent: TComponent; + Operation: TOperation); +begin + inherited; + if (Operation = opRemove) and (AComponent = FControl) then + Control := nil; +end; + +procedure TTBVisibilityToggleItem.SetControl(Value: TControl); +begin + if FControl <> Value then begin + FControl := Value; + if Assigned(Value) then begin + Value.FreeNotification(Self); + if (Caption = '') and not(csLoading in ComponentState) then + Caption := TControlAccess(Value).Caption; + end; + UpdateProps; + end; +end; + +procedure TTBVisibilityToggleItem.UpdateProps; +begin + if (ComponentState * [csDesigning, csLoading, csDestroying] = []) then + Checked := Assigned(FControl) and FControl.Visible; +end; + +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2Hook.pas b/official/2.1.6+2.1.beta1/Source/TB2Hook.pas new file mode 100644 index 0000000..87d66cc --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2Hook.pas @@ -0,0 +1,311 @@ +unit TB2Hook; + +{ + Toolbar2000 + Copyright (C) 1998-2005 by Jordan Russell + All rights reserved. + + The contents of this file are subject to the "Toolbar2000 License"; you may + not use or distribute this file except in compliance with the + "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in + TB2k-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + + Alternatively, the contents of this file may be used under the terms of the + GNU General Public License (the "GPL"), in which case the provisions of the + GPL are applicable instead of those in the "Toolbar2000 License". A copy of + the GPL may be found in GPL-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + If you wish to allow use of your version of this file only under the terms of + the GPL and not to allow others to use your version of this file under the + "Toolbar2000 License", indicate your decision by deleting the provisions + above and replace them with the notice and other provisions required by the + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + + $jrsoftware: tb2k/Source/TB2Hook.pas,v 1.15 2005/06/26 18:21:33 jr Exp $ +} + +interface + +uses + Windows; + +type + THookProcCode = (hpSendActivate, hpSendActivateApp, hpSendWindowPosChanged, + hpPreDestroy, hpGetMessage); + THookProcCodes = set of THookProcCode; + + THookProc = procedure(Code: THookProcCode; Wnd: HWND; WParam: WPARAM; LParam: LPARAM); + +procedure InstallHookProc(AUser: TObject; AProc: THookProc; ACodes: THookProcCodes); +procedure UninstallHookProc(AUser: TObject; AProc: THookProc); + +implementation + +uses + SysUtils, Classes, Messages; + +type + THookType = (htCallWndProc, htCBT, htGetMessage); + THookTypes = set of THookType; + + PHookUserData = ^THookUserData; + THookUserData = record + Prev: PHookUserData; + User: TObject; + InstalledHookTypes: THookTypes; + end; + + PHookProcData = ^THookProcData; + THookProcData = record + Proc: THookProc; + Codes: THookProcCodes; + LastUserData: PHookUserData; + end; + +threadvar + HookHandles: array[THookType] of HHOOK; + HookProcList: TList; + HookCounts: array[THookType] of Longint; + + +function CallWndProcHook(Code: Integer; WParam: WPARAM; LParam: LPARAM): LRESULT; +stdcall; +type + THookProcCodeMsgs = hpSendActivate..hpSendWindowPosChanged; +const + MsgMap: array[THookProcCodeMsgs] of UINT = + (WM_ACTIVATE, WM_ACTIVATEAPP, WM_WINDOWPOSCHANGED); +var + J: THookProcCodeMsgs; + I: Integer; +begin + if Assigned(HookProcList) and (Code = HC_ACTION) then + with PCWPStruct(LParam)^ do begin + for J := Low(J) to High(J) do + if Message = MsgMap[J] then begin + for I := 0 to HookProcList.Count-1 do + try + with PHookProcData(HookProcList.List[I])^ do + if J in Codes then + Proc(J, hwnd, WParam, LParam); + except + end; + Break; + end; + end; + Result := CallNextHookEx(HookHandles[htCallWndProc], Code, WParam, LParam); +end; + +function CBTHook(Code: Integer; WParam: WPARAM; LParam: LPARAM): LRESULT; +stdcall; +var + I: Integer; +begin + if Assigned(HookProcList) and (Code = HCBT_DESTROYWND) then + for I := 0 to HookProcList.Count-1 do + try + with PHookProcData(HookProcList.List[I])^ do + if hpPreDestroy in Codes then + Proc(hpPreDestroy, HWND(WParam), 0, 0); + except + end; + Result := CallNextHookEx(HookHandles[htCBT], Code, WParam, LParam); +end; + +function GetMessageHook(Code: Integer; WParam: WPARAM; LParam: LPARAM): LRESULT; +stdcall; +var + I: Integer; +begin + if Assigned(HookProcList) and (Code = HC_ACTION) then + for I := 0 to HookProcList.Count-1 do + try + with PHookProcData(HookProcList.List[I])^ do + if hpGetMessage in Codes then + Proc(hpGetMessage, 0, WParam, LParam); + except + end; + Result := CallNextHookEx(HookHandles[htGetMessage], Code, WParam, LParam); +end; + +function HookCodesToTypes(Codes: THookProcCodes): THookTypes; +const + HookCodeToType: array[THookProcCode] of THookType = + (htCallWndProc, htCallWndProc, htCallWndProc, htCBT, htGetMessage); +var + J: THookProcCode; +begin + Result := []; + for J := Low(J) to High(J) do + if J in Codes then + Include(Result, HookCodeToType[J]); +end; + +const + HookProcs: array[THookType] of TFNHookProc = + (CallWndProcHook, CBTHook, GetMessageHook); + HookIDs: array[THookType] of Integer = + (WH_CALLWNDPROC, WH_CBT, WH_GETMESSAGE); + +procedure InstallHooks(ATypes: THookTypes; var InstalledTypes: THookTypes); +var + T: THookType; +begin + { Don't increment reference counts for hook types that were already + installed previously } + ATypes := ATypes - InstalledTypes; + + { Increment reference counts first. This should never raise an exception. } + for T := Low(T) to High(T) do + if T in ATypes then begin + Inc(HookCounts[T]); + Include(InstalledTypes, T); + end; + + { Then install the hooks } + for T := Low(T) to High(T) do + if T in InstalledTypes then begin + if HookHandles[T] = 0 then begin + { On Windows NT platforms, SetWindowsHookExW is used to work around an + apparent bug in Windows NT/2000/XP: if an 'ANSI' WH_GETMESSAGE hook + is called *before* a 'wide' WH_GETMESSAGE hook, then WM_*CHAR + messages passed to the 'wide' hook use ANSI character codes. + This is needed for compatibility with the combination of Tnt Unicode + Controls and Keyman. See "Widechar's and tb2k" thread on the + newsgroup from 2003-09-23 for more information. } + if Win32Platform = VER_PLATFORM_WIN32_NT then + HookHandles[T] := SetWindowsHookExW(HookIDs[T], HookProcs[T], + 0, GetCurrentThreadId) + else + HookHandles[T] := SetWindowsHookEx(HookIDs[T], HookProcs[T], + 0, GetCurrentThreadId); + end; + end; +end; + +procedure UninstallHooks(const ATypes: THookTypes; const Force: Boolean); +var + T: THookType; +begin + { Decrement reference counts first. This should never raise an exception. } + if not Force then + for T := Low(T) to High(T) do + if T in ATypes then + Dec(HookCounts[T]); + + { Then uninstall the hooks } + for T := Low(T) to High(T) do + if T in ATypes then begin + if (Force or (HookCounts[T] = 0)) and (HookHandles[T] <> 0) then begin + UnhookWindowsHookEx(HookHandles[T]); + HookHandles[T] := 0; + end; + end; +end; + +procedure InstallHookProc(AUser: TObject; AProc: THookProc; ACodes: THookProcCodes); +var + Found: Boolean; + I: Integer; + UserData: PHookUserData; + ProcData: PHookProcData; +label 1; +begin + if HookProcList = nil then + HookProcList := TList.Create; + Found := False; + UserData := nil; { avoid warning } + for I := 0 to HookProcList.Count-1 do begin + ProcData := PHookProcData(HookProcList[I]); + if @ProcData.Proc = @AProc then begin + UserData := ProcData.LastUserData; + while Assigned(UserData) do begin + if UserData.User = AUser then begin + { InstallHookProc was already called for AUser/AProc. Go ahead and + call InstallHooks again just in case the hooks weren't successfully + installed last time. } + goto 1; + end; + UserData := UserData.Prev; + end; + New(UserData); + UserData.Prev := ProcData.LastUserData; + UserData.User := AUser; + UserData.InstalledHookTypes := []; + ProcData.LastUserData := UserData; + Found := True; + Break; + end; + end; + if not Found then begin + New(UserData); + try + UserData.Prev := nil; + UserData.User := AUser; + UserData.InstalledHookTypes := []; + HookProcList.Expand; + New(ProcData); + except + Dispose(UserData); + raise; + end; + ProcData.Proc := AProc; + ProcData.Codes := ACodes; + ProcData.LastUserData := UserData; + HookProcList.Add(ProcData); + end; +1:InstallHooks(HookCodesToTypes(ACodes), UserData.InstalledHookTypes); +end; + +procedure UninstallHookProc(AUser: TObject; AProc: THookProc); +var + I: Integer; + ProcData: PHookProcData; + NextUserData, UserData: PHookUserData; + T: THookTypes; +begin + if HookProcList = nil then Exit; + for I := 0 to HookProcList.Count-1 do begin + ProcData := PHookProcData(HookProcList[I]); + if @ProcData.Proc = @AProc then begin + { Locate the UserData record } + NextUserData := nil; + UserData := ProcData.LastUserData; + while Assigned(UserData) and (UserData.User <> AUser) do begin + NextUserData := UserData; + UserData := UserData.Prev; + end; + if UserData = nil then + Exit; + + { Remove record from linked list } + if NextUserData = nil then begin + { It's the last item in the list } + if UserData.Prev = nil then begin + { It's the only item in the list, so destroy the ProcData record } + HookProcList.Delete(I); + Dispose(ProcData); + end + else + ProcData.LastUserData := UserData.Prev; + end + else + NextUserData.Prev := UserData.Prev; + + T := UserData.InstalledHookTypes; + Dispose(UserData); + UninstallHooks(T, False); + Break; + end; + end; + if HookProcList.Count = 0 then + FreeAndNil(HookProcList); +end; + + +initialization +finalization + UninstallHooks([Low(THookType)..High(THookType)], True); +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2Item.pas b/official/2.1.6+2.1.beta1/Source/TB2Item.pas new file mode 100644 index 0000000..3a87052 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2Item.pas @@ -0,0 +1,6905 @@ +unit TB2Item; + +{ + Toolbar2000 + Copyright (C) 1998-2005 by Jordan Russell + All rights reserved. + + The contents of this file are subject to the "Toolbar2000 License"; you may + not use or distribute this file except in compliance with the + "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in + TB2k-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + + Alternatively, the contents of this file may be used under the terms of the + GNU General Public License (the "GPL"), in which case the provisions of the + GPL are applicable instead of those in the "Toolbar2000 License". A copy of + the GPL may be found in GPL-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + If you wish to allow use of your version of this file only under the terms of + the GPL and not to allow others to use your version of this file under the + "Toolbar2000 License", indicate your decision by deleting the provisions + above and replace them with the notice and other provisions required by the + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + + $jrsoftware: tb2k/Source/TB2Item.pas,v 1.277 2005/06/23 21:55:44 jr Exp $ +} + +interface + +{$I TB2Ver.inc} +{x$DEFINE TB2K_NO_ANIMATION} + { Enabling the above define disables all menu animation. For debugging + purpose only. } +{x$DEFINE TB2K_USE_STRICT_O2K_MENU_STYLE} + { Enabling the above define forces it to use clBtnFace for the menu color + instead of clMenu, and disables the use of flat menu borders on Windows + XP with themes enabled. } + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + StdCtrls, CommCtrl, Menus, ActnList, ImgList, TB2Anim; + +const + WM_TB2K_POPUPSHOWING = WM_USER + 554; + + { Parameter in LParam of WM_TB2K_POPUPSHOWING } + TPS_ANIMSTART = 1; // animation query: if Result <> 0, do not animate! + TPS_ANIMFINISHED = 2; // only fired when animation thread is done + TPS_NOANIM = 3; // fired when animation is done, or if showing with no animation + +type + TTBCustomItem = class; + TTBCustomItemClass = class of TTBCustomItem; + TTBCustomItemActionLink = class; + TTBCustomItemActionLinkClass = class of TTBCustomItemActionLink; + TTBItemViewer = class; + TTBItemViewerClass = class of TTBItemViewer; + TTBPopupWindow = class; + TTBPopupWindowClass = class of TTBPopupWindow; + TTBView = class; + + TTBDoneAction = (tbdaNone, tbdaCancel, tbdaClickItem, tbdaOpenSystemMenu, + tbdaHelpContext); + PTBDoneActionData = ^TTBDoneActionData; + TTBDoneActionData = record + DoneAction: TTBDoneAction; + case TTBDoneAction of + tbdaClickItem: (ClickItem: TTBCustomItem; Sound: Boolean); + tbdaOpenSystemMenu: (Wnd: HWND; Key: Cardinal); + tbdaHelpContext: (ContextID: Integer); + end; + TTBInsertItemProc = procedure(AParent: TComponent; AItem: TTBCustomItem) of object; + TTBItemChangedAction = (tbicInserted, tbicDeleting, tbicSubitemsChanged, + tbicSubitemsBeginUpdate, tbicSubitemsEndUpdate, tbicInvalidate, + tbicInvalidateAndResize, tbicRecreateItemViewers, tbicNameChanged, + tbicSubMenuImagesChanged); + TTBItemChangedProc = procedure(Sender: TTBCustomItem; Relayed: Boolean; + Action: TTBItemChangedAction; Index: Integer; Item: TTBCustomItem) of object; + TTBItemData = record + Item: TTBCustomItem; + end; + PTBItemDataArray = ^TTBItemDataArray; + TTBItemDataArray = array[0..$7FFFFFFF div SizeOf(TTBItemData)-1] of TTBItemData; + TTBItemDisplayMode = (nbdmDefault, nbdmTextOnly, nbdmTextOnlyInMenus, nbdmImageAndText); + TTBItemOption = (tboDefault, tboDropdownArrow, tboImageAboveCaption, + tboLongHintInMenuOnly, tboNoAutoHint, tboNoRotation, tboSameWidth, + tboShowHint, tboToolbarStyle, tboToolbarSize); + TTBItemOptions = set of TTBItemOption; + TTBItemStyle = set of (tbisSubmenu, tbisSelectable, tbisSeparator, + tbisEmbeddedGroup, tbisClicksTransparent, tbisCombo, tbisNoAutoOpen, + tbisSubitemsEditable, tbisNoLineBreak, tbisRightAlign, tbisDontSelectFirst, + tbisRedrawOnSelChange, tbisRedrawOnMouseOverChange, tbisStretch); + TTBPopupAlignment = (tbpaLeft, tbpaRight, tbpaCenter); + TTBPopupEvent = procedure(Sender: TTBCustomItem; FromLink: Boolean) of object; + TTBSelectEvent = procedure(Sender: TTBCustomItem; Viewer: TTBItemViewer; + Selecting: Boolean) of object; + + ETBItemError = class(Exception); + + TTBImageChangeLink = class(TChangeLink) + private + FLastWidth, FLastHeight: Integer; + end; + {$IFNDEF JR_D5} + TImageIndex = type Integer; + {$ENDIF} + TTBPopupPositionRec = record + PositionAsSubmenu: Boolean; + Alignment: TTBPopupAlignment; + Opposite: Boolean; + MonitorRect: TRect; + ParentItemRect: TRect; + NCSizeX: Integer; + NCSizeY: Integer; + X, Y, W, H: Integer; + AnimDir: TTBAnimationDirection; + PlaySound: Boolean; + end; + + TTBCustomItem = class(TComponent) + private + FActionLink: TTBCustomItemActionLink; + FAutoCheck: Boolean; + FCaption: String; + FChecked: Boolean; + FDisplayMode: TTBItemDisplayMode; + FEnabled: Boolean; + FEffectiveOptions: TTBItemOptions; + FGroupIndex: Integer; + FHelpContext: THelpContext; + FHint: String; + FImageIndex: TImageIndex; + FImages: TCustomImageList; + FImagesChangeLink: TTBImageChangeLink; + FItems: PTBItemDataArray; + FItemCount: Integer; + FItemStyle: TTBItemStyle; + FLinkParents: TList; + FMaskOptions: TTBItemOptions; + FOptions: TTBItemOptions; + FInheritOptions: Boolean; + FNotifyList: TList; + FOnClick: TNotifyEvent; + FOnPopup: TTBPopupEvent; + FOnSelect: TTBSelectEvent; + FParent: TTBCustomItem; + FParentComponent: TComponent; + FRadioItem: Boolean; + FShortCut: TShortCut; + FSubMenuImages: TCustomImageList; + FSubMenuImagesChangeLink: TTBImageChangeLink; + FLinkSubitems: TTBCustomItem; + FVisible: Boolean; + + procedure DoActionChange(Sender: TObject); + function ChangeImages(var AImages: TCustomImageList; + const Value: TCustomImageList; var AChangeLink: TTBImageChangeLink): Boolean; + class procedure ClickWndProc(var Message: TMessage); + function FindItemWithShortCut(AShortCut: TShortCut; + var ATopmostParent: TTBCustomItem): TTBCustomItem; + function FixOptions(const AOptions: TTBItemOptions): TTBItemOptions; + function GetAction: TBasicAction; + function GetItem(Index: Integer): TTBCustomItem; + procedure ImageListChangeHandler(Sender: TObject); + procedure InternalNotify(Ancestor: TTBCustomItem; NestingLevel: Integer; + Action: TTBItemChangedAction; Index: Integer; Item: TTBCustomItem); + {$IFDEF JR_D6} + function IsAutoCheckStored: Boolean; + {$ENDIF} + function IsCaptionStored: Boolean; + function IsCheckedStored: Boolean; + function IsEnabledStored: Boolean; + function IsHelpContextStored: Boolean; + function IsHintStored: Boolean; + function IsImageIndexStored: Boolean; + function IsOnClickStored: Boolean; + function IsShortCutStored: Boolean; + function IsVisibleStored: Boolean; + procedure Notify(Action: TTBItemChangedAction; Index: Integer; Item: TTBCustomItem); + procedure RefreshOptions; + procedure SetAction(Value: TBasicAction); + procedure SetCaption(Value: String); + procedure SetChecked(Value: Boolean); + procedure SetDisplayMode(Value: TTBItemDisplayMode); + procedure SetEnabled(Value: Boolean); + procedure SetGroupIndex(Value: Integer); + procedure SetImageIndex(Value: TImageIndex); + procedure SetImages(Value: TCustomImageList); + procedure SetInheritOptions(Value: Boolean); + procedure SetLinkSubitems(Value: TTBCustomItem); + procedure SetMaskOptions(Value: TTBItemOptions); + procedure SetOptions(Value: TTBItemOptions); + procedure SetRadioItem(Value: Boolean); + procedure SetSubMenuImages(Value: TCustomImageList); + procedure SetVisible(Value: Boolean); + procedure SubMenuImagesChanged; + procedure TurnSiblingsOff; + protected + procedure ActionChange(Sender: TObject; CheckDefaults: Boolean); dynamic; + procedure Change(NeedResize: Boolean); virtual; + function CreatePopup(const ParentView: TTBView; const ParentViewer: TTBItemViewer; + const PositionAsSubmenu, SelectFirstItem, Customizing: Boolean; + const APopupPoint: TPoint; const Alignment: TTBPopupAlignment): TTBPopupWindow; virtual; + procedure DoPopup(Sender: TTBCustomItem; FromLink: Boolean); virtual; + procedure EnabledChanged; virtual; + function GetActionLinkClass: TTBCustomItemActionLinkClass; dynamic; + function GetChevronParentView: TTBView; virtual; + procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; virtual; + procedure GetPopupPosition(ParentView: TTBView; + PopupWindow: TTBPopupWindow; var PopupPositionRec: TTBPopupPositionRec); virtual; + function GetPopupWindowClass: TTBPopupWindowClass; virtual; + procedure IndexError; + procedure Loaded; override; + function NeedToRecreateViewer(AViewer: TTBItemViewer): Boolean; virtual; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + function OpenPopup(const SelectFirstItem, TrackRightButton: Boolean; + const PopupPoint: TPoint; const Alignment: TTBPopupAlignment; + const ReturnClickedItemOnly: Boolean): TTBCustomItem; + procedure RecreateItemViewers; + procedure SetChildOrder(Child: TComponent; Order: Integer); override; + procedure SetName(const NewName: TComponentName); override; + procedure SetParentComponent(Value: TComponent); override; + + property ActionLink: TTBCustomItemActionLink read FActionLink write FActionLink; + property ItemStyle: TTBItemStyle read FItemStyle write FItemStyle; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function HasParent: Boolean; override; + function GetParentComponent: TComponent; override; + + procedure Add(AItem: TTBCustomItem); + procedure Clear; + procedure Click; virtual; + function ContainsItem(AItem: TTBCustomItem): Boolean; + procedure Delete(Index: Integer); + function GetShortCutText: String; + function IndexOf(AItem: TTBCustomItem): Integer; + procedure InitiateAction; virtual; + procedure Insert(NewIndex: Integer; AItem: TTBCustomItem); + function IsShortCut(var Message: TWMKey): Boolean; + procedure Move(CurIndex, NewIndex: Integer); + function Popup(X, Y: Integer; TrackRightButton: Boolean; + Alignment: TTBPopupAlignment = tbpaLeft; + ReturnClickedItemOnly: Boolean = False): TTBCustomItem; + procedure PostClick; + procedure RegisterNotification(ANotify: TTBItemChangedProc); + procedure Remove(Item: TTBCustomItem); + procedure UnregisterNotification(ANotify: TTBItemChangedProc); + procedure ViewBeginUpdate; + procedure ViewEndUpdate; + + property Action: TBasicAction read GetAction write SetAction; + property AutoCheck: Boolean read FAutoCheck write FAutoCheck {$IFDEF JR_D6} stored IsAutoCheckStored {$ENDIF} default False; + property Caption: String read FCaption write SetCaption stored IsCaptionStored; + property Count: Integer read FItemCount; + property Checked: Boolean read FChecked write SetChecked stored IsCheckedStored default False; + property DisplayMode: TTBItemDisplayMode read FDisplayMode write SetDisplayMode default nbdmDefault; + property EffectiveOptions: TTBItemOptions read FEffectiveOptions; + property Enabled: Boolean read FEnabled write SetEnabled stored IsEnabledStored default True; + property GroupIndex: Integer read FGroupIndex write SetGroupIndex default 0; + property HelpContext: THelpContext read FHelpContext write FHelpContext stored IsHelpContextStored default 0; + property Hint: String read FHint write FHint stored IsHintStored; + property ImageIndex: TImageIndex read FImageIndex write SetImageIndex stored IsImageIndexStored default -1; + property Images: TCustomImageList read FImages write SetImages; + property InheritOptions: Boolean read FInheritOptions write SetInheritOptions default True; + property Items[Index: Integer]: TTBCustomItem read GetItem; default; + property LinkSubitems: TTBCustomItem read FLinkSubitems write SetLinkSubitems; + property MaskOptions: TTBItemOptions read FMaskOptions write SetMaskOptions default []; + property Options: TTBItemOptions read FOptions write SetOptions default []; + property Parent: TTBCustomItem read FParent; + property ParentComponent: TComponent read FParentComponent write FParentComponent; + property RadioItem: Boolean read FRadioItem write SetRadioItem default False; + property ShortCut: TShortCut read FShortCut write FShortCut stored IsShortCutStored default 0; + property SubMenuImages: TCustomImageList read FSubMenuImages write SetSubMenuImages; + property Visible: Boolean read FVisible write SetVisible stored IsVisibleStored default True; + property OnClick: TNotifyEvent read FOnClick write FOnClick stored IsOnClickStored; + property OnPopup: TTBPopupEvent read FOnPopup write FOnPopup; + property OnSelect: TTBSelectEvent read FOnSelect write FOnSelect; + end; + + TTBCustomItemActionLink = class(TActionLink) + protected + FClient: TTBCustomItem; + procedure AssignClient(AClient: TObject); override; + {$IFDEF JR_D6} + function IsAutoCheckLinked: Boolean; virtual; + {$ENDIF} + function IsCaptionLinked: Boolean; override; + function IsCheckedLinked: Boolean; override; + function IsEnabledLinked: Boolean; override; + function IsHelpContextLinked: Boolean; override; + function IsHintLinked: Boolean; override; + function IsImageIndexLinked: Boolean; override; + function IsShortCutLinked: Boolean; override; + function IsVisibleLinked: Boolean; override; + function IsOnExecuteLinked: Boolean; override; + {$IFDEF JR_D6} + procedure SetAutoCheck(Value: Boolean); override; + {$ENDIF} + procedure SetCaption(const Value: String); override; + procedure SetChecked(Value: Boolean); override; + procedure SetEnabled(Value: Boolean); override; + procedure SetHelpContext(Value: THelpContext); override; + procedure SetHint(const Value: String); override; + procedure SetImageIndex(Value: Integer); override; + procedure SetShortCut(Value: TShortCut); override; + procedure SetVisible(Value: Boolean); override; + procedure SetOnExecute(Value: TNotifyEvent); override; + end; + + TTBBaseAccObject = class(TInterfacedObject, IDispatch) + public + procedure ClientIsDestroying; virtual; abstract; + { IDispatch } + function GetTypeInfoCount(out Count: Integer): HResult; stdcall; + function GetTypeInfo(Index, LocaleID: Integer; out TypeInfo): HResult; stdcall; + function GetIDsOfNames(const IID: TGUID; Names: Pointer; + NameCount, LocaleID: Integer; DispIDs: Pointer): HResult; stdcall; + function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; + Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall; + end; + + TTBItemViewer = class + private + FBoundsRect: TRect; + FClipped: Boolean; + FGroupLevel: Integer; + FItem: TTBCustomItem; + FOffEdge: Boolean; + FShow: Boolean; + FView: TTBView; + procedure AccSelect(const AExecute: Boolean); + function GetIndex: Integer; + protected + FAccObjectInstance: TTBBaseAccObject; + procedure CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); + virtual; + function CaptionShown: Boolean; dynamic; + function DoExecute: Boolean; virtual; + procedure DrawItemCaption(const Canvas: TCanvas; ARect: TRect; + const ACaption: String; ADrawDisabledShadow: Boolean; AFormat: UINT); virtual; + procedure Entering(OldSelected: TTBItemViewer); virtual; + function GetAccRole: Integer; virtual; + function GetAccValue(var Value: WideString): Boolean; virtual; + function GetCaptionText: String; virtual; + procedure GetCursor(const Pt: TPoint; var ACursor: HCURSOR); virtual; + function GetImageList: TCustomImageList; + function ImageShown: Boolean; + function IsRotated: Boolean; + function IsToolbarSize: Boolean; virtual; + function IsPtInButtonPart(X, Y: Integer): Boolean; virtual; + procedure KeyDown(var Key: Word; Shift: TShiftState); virtual; + procedure Leaving; virtual; + procedure LosingCapture; virtual; + procedure MouseDown(Shift: TShiftState; X, Y: Integer; + var MouseDownOnMenu: Boolean); virtual; + procedure MouseMove(X, Y: Integer); virtual; + procedure MouseUp(X, Y: Integer; MouseWasDownOnMenu: Boolean); virtual; + procedure MouseWheel(WheelDelta: Integer; X, Y: Integer); virtual; + procedure Paint(const Canvas: TCanvas; const ClientAreaRect: TRect; + IsSelected, IsPushed, UseDisabledShadow: Boolean); virtual; + procedure PostAccSelect(const AExecute: Boolean); + function UsesSameWidth: Boolean; virtual; + public + State: set of (tbisInvalidated, tbisLineSep); + property BoundsRect: TRect read FBoundsRect; + property Clipped: Boolean read FClipped; + property Index: Integer read GetIndex; + property Item: TTBCustomItem read FItem; + property OffEdge: Boolean read FOffEdge; + property Show: Boolean read FShow; + property View: TTBView read FView; + constructor Create(AView: TTBView; AItem: TTBCustomItem; AGroupLevel: Integer); virtual; + destructor Destroy; override; + procedure Execute(AGivePriority: Boolean); + function GetAccObject: IDispatch; + function GetHintText: String; + function IsAccessible: Boolean; + function IsToolbarStyle: Boolean; virtual; + function ScreenToClient(const P: TPoint): TPoint; + end; + PTBItemViewerArray = ^TTBItemViewerArray; + TTBItemViewerArray = array[0..$7FFFFFFF div SizeOf(TTBItemViewer)-1] of TTBItemViewer; + TTBViewOrientation = (tbvoHorizontal, tbvoVertical, tbvoFloating); + TTBEnterToolbarLoopOptions = set of (tbetMouseDown, tbetExecuteSelected, + tbetFromMSAA); + TTBViewState = set of (vsModal, vsMouseInWindow, vsDrawInOrder, vsOppositePopup, + vsIgnoreFirstMouseUp, vsShowAccels, vsDropDownMenus, vsNoAnimation); + TTBViewStyle = set of (vsMenuBar, vsUseHiddenAccels, vsAlwaysShowHints); + TTBViewTimerID = (tiOpen, tiClose, tiScrollUp, tiScrollDown); + + TTBViewClass = class of TTBView; + TTBView = class(TComponent) + private + FActiveTimers: set of TTBViewTimerID; + FBackgroundColor: TColor; + FBaseSize: TPoint; + FCapture: Boolean; + FCaptureWnd: HWND; + FChevronOffset: Integer; + FChevronParentView: TTBView; + FChevronSize: Integer; + FCurParentItem: TTBCustomItem; + FCustomizing: Boolean; + FDoneActionData: TTBDoneActionData; + FInternalViewersAtEnd: Integer; + FInternalViewersAtFront: Integer; + FIsPopup: Boolean; + FIsToolbar: Boolean; + FMaxHeight: Integer; + FMonitorRect: TRect; + FMouseOverSelected: Boolean; + FNewViewersGetHighestPriority: Boolean; + FOpenViewer: TTBItemViewer; + FOpenViewerView: TTBView; + FOpenViewerWindow: TTBPopupWindow; + FParentView: TTBView; + FParentItem: TTBCustomItem; + FPriorityList: TList; + FOrientation: TTBViewOrientation; + FScrollOffset: Integer; + FSelected: TTBItemViewer; + FSelectedViaMouse: Boolean; + FShowDownArrow: Boolean; + FShowUpArrow: Boolean; + FState: TTBViewState; + FStyle: TTBViewStyle; + FUpdating: Integer; + FUsePriorityList: Boolean; + FValidated: Boolean; + FViewerCount: Integer; + FViewers: PTBItemViewerArray; + FWindow: TWinControl; + FWrapOffset: Integer; + + procedure DeletingViewer(Viewer: TTBItemViewer); + procedure DrawItem(Viewer: TTBItemViewer; DrawTo: TCanvas; Offscreen: Boolean); + procedure FreeViewers; + procedure ImagesChanged; + function InsertItemViewers(const NewIndex: Integer; + const AItem: TTBCustomItem; const AGroupLevel: Integer; + const AddToPriorityList, TopOfPriorityList: Boolean): Integer; + procedure ItemNotification(Ancestor: TTBCustomItem; Relayed: Boolean; + Action: TTBItemChangedAction; Index: Integer; Item: TTBCustomItem); + procedure LinkNotification(Ancestor: TTBCustomItem; Relayed: Boolean; + Action: TTBItemChangedAction; Index: Integer; Item: TTBCustomItem); + procedure RecreateItemViewer(const I: Integer); + procedure Scroll(ADown: Boolean); + procedure SetCustomizing(Value: Boolean); + procedure SetSelected(Value: TTBItemViewer); + procedure SetUsePriorityList(Value: Boolean); + procedure StartTimer(const ATimer: TTBViewTimerID; const Interval: Integer); + procedure StopAllTimers; + procedure StopTimer(const ATimer: TTBViewTimerID); + procedure UpdateCurParentItem; + protected + FAccObjectInstance: TTBBaseAccObject; + procedure AutoSize(AWidth, AHeight: Integer); virtual; + function CalculatePositions(const CanMoveControls: Boolean; + const AOrientation: TTBViewOrientation; + AWrapOffset, AChevronOffset, AChevronSize: Integer; + var ABaseSize, TotalSize: TPoint; + var AWrappedLines: Integer): Boolean; + procedure DoUpdatePositions(var ASize: TPoint); virtual; + function GetChevronItem: TTBCustomItem; virtual; + procedure GetMargins(AOrientation: TTBViewOrientation; var Margins: TRect); + virtual; + function GetMDIButtonsItem: TTBCustomItem; virtual; + function GetMDISystemMenuItem: TTBCustomItem; virtual; + function GetParentToolbarView: TTBView; + function GetRootView: TTBView; + function HandleWMGetObject(var Message: TMessage): Boolean; + procedure InitiateActions; + procedure KeyDown(var Key: Word; Shift: TShiftState); virtual; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure SetAccelsVisibility(AShowAccels: Boolean); + procedure SetState(AState: TTBViewState); + property DoneActionData: TTBDoneActionData read FDoneActionData write FDoneActionData; + property ShowDownArrow: Boolean read FShowDownArrow; {vb+} + property ShowUpArrow: Boolean read FShowUpArrow; {vb+} + public + constructor CreateView(AOwner: TComponent; AParentView: TTBView; + AParentItem: TTBCustomItem; AWindow: TWinControl; + AIsToolbar, ACustomizing, AUsePriorityList: Boolean); virtual; + destructor Destroy; override; + procedure BeginUpdate; + procedure CancelCapture; + procedure CancelChildPopups; + procedure CancelMode; + procedure CloseChildPopups; + function ContainsView(AView: TTBView): Boolean; + procedure DrawSubitems(ACanvas: TCanvas); + procedure EndModal; + procedure EndModalWithClick(AViewer: TTBItemViewer); + procedure EndModalWithHelp(AContextID: Integer); + procedure EndModalWithSystemMenu(AWnd: HWND; AKey: Cardinal); + procedure EndUpdate; + procedure EnterToolbarLoop(Options: TTBEnterToolbarLoopOptions); + procedure ExecuteSelected(AGivePriority: Boolean); + function Find(Item: TTBCustomItem): TTBItemViewer; + function FirstSelectable: TTBItemViewer; + function GetAccObject: IDispatch; + function GetCaptureWnd: HWND; + function GetFont: TFont; virtual; + procedure GetOffEdgeControlList(const List: TList); + procedure GivePriority(AViewer: TTBItemViewer); + function HighestPriorityViewer: TTBItemViewer; + procedure Invalidate(AViewer: TTBItemViewer); + procedure InvalidatePositions; virtual; + function IndexOf(AViewer: TTBItemViewer): Integer; + function IsModalEnding: Boolean; + function NextSelectable(CurViewer: TTBItemViewer; GoForward: Boolean): TTBItemViewer; + function NextSelectableWithAccel(CurViewer: TTBItemViewer; Key: Char; + RequirePrimaryAccel: Boolean; var IsOnlyItemWithAccel: Boolean): TTBItemViewer; + procedure NotifyFocusEvent; + function OpenChildPopup(const SelectFirstItem: Boolean): Boolean; + procedure RecreateAllViewers; + procedure ScrollSelectedIntoView; + procedure Select(Value: TTBItemViewer; ViaMouse: Boolean); + procedure SetCapture; + procedure TryValidatePositions; + procedure UpdateSelection(const P: PPoint; const AllowNewSelection: Boolean); + function UpdatePositions: TPoint; + procedure ValidatePositions; + function ViewerFromPoint(const P: TPoint): TTBItemViewer; + + property BackgroundColor: TColor read FBackgroundColor write FBackgroundColor; + property BaseSize: TPoint read FBaseSize; + property Capture: Boolean read FCapture; + property ChevronOffset: Integer read FChevronOffset write FChevronOffset; + property ChevronSize: Integer read FChevronSize write FChevronSize; + property Customizing: Boolean read FCustomizing write SetCustomizing; + property IsPopup: Boolean read FIsPopup; + property IsToolbar: Boolean read FIsToolbar; + property MouseOverSelected: Boolean read FMouseOverSelected; + property NewViewersGetHighestPriority: Boolean read FNewViewersGetHighestPriority + write FNewViewersGetHighestPriority; + property ParentView: TTBView read FParentView; + property ParentItem: TTBCustomItem read FParentItem; + property OpenViewer: TTBItemViewer read FOpenViewer; + property OpenViewerView: TTBView read FOpenViewerView; + property Orientation: TTBViewOrientation read FOrientation write FOrientation; + property Selected: TTBItemViewer read FSelected write SetSelected; + property SelectedViaMouse: Boolean read FSelectedViaMouse; + property State: TTBViewState read FState; + property Style: TTBViewStyle read FStyle write FStyle; + property UsePriorityList: Boolean read FUsePriorityList write SetUsePriorityList; + property Viewers: PTBItemViewerArray read FViewers; + property ViewerCount: Integer read FViewerCount; + property Window: TWinControl read FWindow; + property WrapOffset: Integer read FWrapOffset write FWrapOffset; + end; + + TTBRootItemClass = class of TTBRootItem; + TTBRootItem = class(TTBCustomItem); + { same as TTBCustomItem, except there's a property editor for it } + + TTBItem = class(TTBCustomItem) + published + property Action; + property AutoCheck; + property Caption; + property Checked; + property DisplayMode; + property Enabled; + property GroupIndex; + property HelpContext; + property Hint; + property ImageIndex; + property Images; + property InheritOptions; + property MaskOptions; + property Options; + property RadioItem; + property ShortCut; + property Visible; + + property OnClick; + property OnSelect; + end; + + TTBGroupItem = class(TTBCustomItem) + public + constructor Create(AOwner: TComponent); override; + published + property InheritOptions; + property LinkSubitems; + property MaskOptions; + property Options; + end; + + TTBSubmenuItem = class(TTBCustomItem) + private + function GetDropdownCombo: Boolean; + procedure SetDropdownCombo(Value: Boolean); + public + constructor Create(AOwner: TComponent); override; + published + property Action; + property AutoCheck; + property Caption; + property Checked; + //property DisplayAsToolbar; + property DisplayMode; + property DropdownCombo: Boolean read GetDropdownCombo write SetDropdownCombo default False; + property Enabled; + property GroupIndex; + property HelpContext; + property Hint; + property ImageIndex; + property Images; + property InheritOptions; + property LinkSubitems; + property MaskOptions; + property Options; + property RadioItem; + property ShortCut; + property SubMenuImages; + property Visible; + + property OnClick; + property OnPopup; + property OnSelect; + end; + + TTBSeparatorItem = class(TTBCustomItem) + private + FBlank: Boolean; + procedure SetBlank(Value: Boolean); + protected + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + public + constructor Create(AOwner: TComponent); override; + published + property Blank: Boolean read FBlank write SetBlank default False; + property Hint; + property Visible; + end; + + TTBSeparatorItemViewer = class(TTBItemViewer) + protected + procedure CalcSize(const Canvas: TCanvas; + var AWidth, AHeight: Integer); override; + procedure Paint(const Canvas: TCanvas; const ClientAreaRect: TRect; + IsSelected, IsPushed, UseDisabledShadow: Boolean); override; + function UsesSameWidth: Boolean; override; + end; + + TTBControlItem = class(TTBCustomItem) + private + FControl: TControl; + FDontFreeControl: Boolean; + procedure SetControl(Value: TControl); + protected + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + public + constructor Create(AOwner: TComponent); override; + constructor CreateControlItem(AOwner: TComponent; AControl: TControl); + destructor Destroy; override; + property DontFreeControl: Boolean read FDontFreeControl write FDontFreeControl; + published + property Control: TControl read FControl write SetControl; + end; + + TTBPopupView = class(TTBView) + protected + procedure AutoSize(AWidth, AHeight: Integer); override; + public + function GetFont: TFont; override; + end; + + ITBPopupWindow = interface + ['{E45CBE74-1ECF-44CB-B064-6D45B1924708}'] + end; + + TTBPopupWindow = class(TCustomControl, ITBPopupWindow) + private + FAccelsVisibilitySet: Boolean; + FAnimationDirection: TTBAnimationDirection; + FView: TTBView; + procedure CMHintShow(var Message: TCMHintShow); message CM_HINTSHOW; + procedure CMShowingChanged(var Message: TMessage); message CM_SHOWINGCHANGED; + procedure WMClose(var Message: TWMClose); message WM_CLOSE; + procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND; + procedure WMGetObject(var Message: TMessage); message WM_GETOBJECT; + procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE; + procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT; + procedure WMPaint(var Message: TWMPaint); message WM_PAINT; + procedure WMPrint(var Message: TMessage); message WM_PRINT; + procedure WMPrintClient(var Message: TMessage); message WM_PRINTCLIENT; + procedure WMTB2kStepAnimation(var Message: TMessage); message WM_TB2K_STEPANIMATION; + procedure WMTB2kAnimationEnded (var Message: TMessage); message WM_TB2K_ANIMATIONENDED; + protected + procedure CreateParams(var Params: TCreateParams); override; + procedure CreateWnd; override; + procedure DestroyWindowHandle; override; + function GetNCSize: TPoint; dynamic; + function GetViewClass: TTBViewClass; dynamic; + procedure Paint; override; + procedure PaintScrollArrows; virtual; + property AnimationDirection: TTBAnimationDirection read FAnimationDirection; + public + constructor CreatePopupWindow(AOwner: TComponent; const AParentView: TTBView; + const AItem: TTBCustomItem; const ACustomizing: Boolean); virtual; + destructor Destroy; override; + procedure BeforeDestruction; override; + + property View: TTBView read FView; + end; + + ITBItems = interface + ['{A5C0D7CC-3EC4-4090-A0F8-3D03271877EA}'] + function GetItems: TTBCustomItem; + end; + + TTBItemContainer = class(TComponent, ITBItems) + private + FItem: TTBRootItem; + function GetImages: TCustomImageList; + function GetItems: TTBCustomItem; + procedure SetImages(Value: TCustomImageList); + protected + procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + + property Items: TTBRootItem read FItem; + published + property Images: TCustomImageList read GetImages write SetImages; + end; + + TTBPopupMenu = class(TPopupMenu, ITBItems) + private + FItem: TTBRootItem; + //procedure SetItems(Value: TTBCustomItem); + function GetImages: TCustomImageList; + function GetItems: TTBCustomItem; + function GetLinkSubitems: TTBCustomItem; + function GetOptions: TTBItemOptions; + procedure RootItemClick(Sender: TObject); + procedure SetImages(Value: TCustomImageList); + procedure SetLinkSubitems(Value: TTBCustomItem); + procedure SetOptions(Value: TTBItemOptions); + protected + {$IFNDEF JR_D5} + procedure DoPopup(Sender: TObject); + {$ENDIF} + procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override; + function GetRootItemClass: TTBRootItemClass; dynamic; + procedure SetChildOrder(Child: TComponent; Order: Integer); override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function IsShortCut(var Message: TWMKey): Boolean; override; + procedure Popup(X, Y: Integer); override; + function PopupEx(X, Y: Integer; ReturnClickedItemOnly: Boolean = False): TTBCustomItem; + published + property Images: TCustomImageList read GetImages write SetImages; + property Items: TTBRootItem read FItem; + property LinkSubitems: TTBCustomItem read GetLinkSubitems write SetLinkSubitems; + property Options: TTBItemOptions read GetOptions write SetOptions default []; + end; + + TTBCustomImageList = class(TImageList) + private + FCheckedImages: TCustomImageList; + FCheckedImagesChangeLink: TChangeLink; + FDisabledImages: TCustomImageList; + FDisabledImagesChangeLink: TChangeLink; + FHotImages: TCustomImageList; + FHotImagesChangeLink: TChangeLink; + FImagesBitmap: TBitmap; + FImagesBitmapMaskColor: TColor; + procedure ChangeImages(var AImageList: TCustomImageList; + Value: TCustomImageList; AChangeLink: TChangeLink); + procedure ImageListChanged(Sender: TObject); + procedure ImagesBitmapChanged(Sender: TObject); + procedure SetCheckedImages(Value: TCustomImageList); + procedure SetDisabledImages(Value: TCustomImageList); + procedure SetHotImages(Value: TCustomImageList); + procedure SetImagesBitmap(Value: TBitmap); + procedure SetImagesBitmapMaskColor(Value: TColor); + protected + procedure DefineProperties(Filer: TFiler); override; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + property CheckedImages: TCustomImageList read FCheckedImages write SetCheckedImages; + property DisabledImages: TCustomImageList read FDisabledImages write SetDisabledImages; + property HotImages: TCustomImageList read FHotImages write SetHotImages; + property ImagesBitmap: TBitmap read FImagesBitmap write SetImagesBitmap; + property ImagesBitmapMaskColor: TColor read FImagesBitmapMaskColor + write SetImagesBitmapMaskColor default clFuchsia; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure DrawState(Canvas: TCanvas; X, Y, Index: Integer; + Enabled, Selected, Checked: Boolean); virtual; + end; + + TTBImageList = class(TTBCustomImageList) + published + property CheckedImages; + property DisabledImages; + property HotImages; + property ImagesBitmap; + property ImagesBitmapMaskColor; + end; + +const + {$IFNDEF TB2K_USE_STRICT_O2K_MENU_STYLE} + tbMenuBkColor = clMenu; + tbMenuTextColor = clMenuText; + {$ELSE} + tbMenuBkColor = clBtnFace; + tbMenuTextColor = clBtnText; + {$ENDIF} + + tbMenuVerticalMargin = 4; + tbMenuImageTextSpace = 1; + tbMenuLeftTextMargin = 2; + tbMenuRightTextMargin = 3; + + tbMenuSeparatorOffset = 12; + + tbMenuScrollArrowHeight = 19; + + tbDropdownArrowWidth = 8; + tbDropdownArrowMargin = 3; + tbDropdownComboArrowWidth = 11; + tbDropdownComboMargin = 2; + + tbLineSpacing = 6; + tbLineSepOffset = 1; + tbDockedLineSepOffset = 4; + + WM_TB2K_CLICKITEM = WM_USER + $100; + +procedure TBInitToolbarSystemFont; + +var + ToolbarFont: TFont; + +type + TTBModalHandler = class + private + FCreatedWnd: Boolean; + FInited: Boolean; + FWnd: HWND; + FRootPopup: TTBPopupWindow; + procedure WndProc(var Msg: TMessage); + public + constructor Create(AExistingWnd: HWND); + destructor Destroy; override; + procedure Loop(const RootView: TTBView; const AMouseDown, AExecuteSelected, + AFromMSAA, TrackRightButton: Boolean); + property RootPopup: TTBPopupWindow read FRootPopup write FRootPopup; + property Wnd: HWND read FWnd; + end; + +function ProcessDoneAction(const DoneActionData: TTBDoneActionData; + const ReturnClickedItemOnly: Boolean): TTBCustomItem; + +implementation + +uses + MMSYSTEM, TB2Consts, TB2Common, IMM, TB2Acc; + +var + LastPos: TPoint; + +threadvar + ClickWndRefCount: Integer; + ClickWnd: HWND; + ClickList: TList; + +type + PItemChangedNotificationData = ^TItemChangedNotificationData; + TItemChangedNotificationData = record + Proc: TTBItemChangedProc; + RefCount: Integer; + end; + + TComponentAccess = class(TComponent); + TControlAccess = class(TControl); + +const + ViewTimerBaseID = 9000; + MaxGroupLevel = 10; + + +{ Misc. } + +procedure DestroyClickWnd; +begin + if ClickWnd <> 0 then begin + {$IFDEF JR_D6}Classes.{$ENDIF} DeallocateHWnd(ClickWnd); + ClickWnd := 0; + end; + FreeAndNil(ClickList); +end; + +procedure ReferenceClickWnd; +begin + Inc(ClickWndRefCount); +end; + +procedure ReleaseClickWnd; +begin + Dec(ClickWndRefCount); + if ClickWndRefCount = 0 then + DestroyClickWnd; +end; + +procedure QueueClick(const AItem: TObject; const AArg: Integer); +{ Adds an item to ClickList and posts a message to handle it. AItem must be + either a TTBCustomItem or TTBItemViewer. } +var + I: Integer; +begin + if ClickWnd = 0 then + ClickWnd := {$IFDEF JR_D6}Classes.{$ENDIF} AllocateHWnd(TTBCustomItem.ClickWndProc); + if ClickList = nil then + ClickList := TList.Create; + + { Add a new item to ClickList or replace an empty one } + I := ClickList.IndexOf(nil); + if I = -1 then + I := ClickList.Add(AItem) + else + ClickList[I] := AItem; + + PostMessage(ClickWnd, WM_TB2K_CLICKITEM, AArg, I); +end; + +procedure RemoveFromClickList(const AItem: TObject); +{ Any class that potentially calls QueueClick needs to call RemoveFromClickList + before an instance is destroyed to ensure that any references to the + instance still in ClickList are removed. } +var + I: Integer; +begin + if Assigned(ClickList) and Assigned(AItem) then + for I := 0 to ClickList.Count-1 do + if ClickList[I] = AItem then + ClickList[I] := Pointer(1); + { ^ The special value of Pointer(1) is assigned to the item instead of + of nil because we want the index to stay reserved until the + WM_TB2K_CLICKITEM message for the index is processed. We don't want + the WM_TB2K_CLICKITEM message that's still in the queue to later + refer to a different item; this would result in queued clicks being + processed in the wrong order in a case like this: + A.PostClick; B.PostClick; A.Free; C.PostClick; + C's click would end up being processed before A's, because C would + get A's index. } +end; + +function ProcessDoneAction(const DoneActionData: TTBDoneActionData; + const ReturnClickedItemOnly: Boolean): TTBCustomItem; +begin + Result := nil; + case DoneActionData.DoneAction of + tbdaNone: ; + tbdaClickItem: begin + if DoneActionData.Sound and NeedToPlaySound('MenuCommand') then + PlaySound('MenuCommand', 0, SND_ALIAS or SND_ASYNC or SND_NODEFAULT or SND_NOSTOP); + Result := DoneActionData.ClickItem; + if not ReturnClickedItemOnly then + Result.PostClick; + end; + tbdaOpenSystemMenu: begin + SendMessage(DoneActionData.Wnd, WM_SYSCOMMAND, SC_KEYMENU, DoneActionData.Key); + end; + tbdaHelpContext: begin + { Based on code in TPopupList.WndProc: } + if Assigned(Screen.ActiveForm) and + (biHelp in Screen.ActiveForm.BorderIcons) then + Application.HelpCommand(HELP_CONTEXTPOPUP, DoneActionData.ContextID) + else + Application.HelpContext(DoneActionData.ContextID); + end; + end; +end; + + +{ TTBItemDataArray routines } + +procedure InsertIntoItemArray(var AItems: PTBItemDataArray; + var AItemCount: Integer; NewIndex: Integer; AItem: TTBCustomItem); +begin + ReallocMem(AItems, (AItemCount+1) * SizeOf(AItems[0])); + if NewIndex < AItemCount then + System.Move(AItems[NewIndex], AItems[NewIndex+1], + (AItemCount-NewIndex) * SizeOf(AItems[0])); + AItems[NewIndex].Item := AItem; + Inc(AItemCount); +end; + +procedure DeleteFromItemArray(var AItems: PTBItemDataArray; + var AItemCount: Integer; Index: Integer); +begin + Dec(AItemCount); + if Index < AItemCount then + System.Move(AItems[Index+1], AItems[Index], + (AItemCount-Index) * SizeOf(AItems[0])); + ReallocMem(AItems, AItemCount * SizeOf(AItems[0])); +end; + +procedure InsertIntoViewerArray(var AItems: PTBItemViewerArray; + var AItemCount: Integer; NewIndex: Integer; AItem: TTBItemViewer); +begin + ReallocMem(AItems, (AItemCount+1) * SizeOf(AItems[0])); + if NewIndex < AItemCount then + System.Move(AItems[NewIndex], AItems[NewIndex+1], + (AItemCount-NewIndex) * SizeOf(AItems[0])); + AItems[NewIndex] := AItem; + Inc(AItemCount); +end; + +procedure DeleteFromViewerArray(var AItems: PTBItemViewerArray; + var AItemCount: Integer; Index: Integer); +begin + Dec(AItemCount); + if Index < AItemCount then + System.Move(AItems[Index+1], AItems[Index], + (AItemCount-Index) * SizeOf(AItems[0])); + ReallocMem(AItems, AItemCount * SizeOf(AItems[0])); +end; + + +{ TTBCustomItemActionLink } + +procedure TTBCustomItemActionLink.AssignClient(AClient: TObject); +begin + FClient := AClient as TTBCustomItem; +end; + +{$IFDEF JR_D6} +function TTBCustomItemActionLink.IsAutoCheckLinked: Boolean; +begin + Result := (FClient.AutoCheck = (Action as TCustomAction).AutoCheck); +end; +{$ENDIF} + +function TTBCustomItemActionLink.IsCaptionLinked: Boolean; +begin + Result := inherited IsCaptionLinked and + (FClient.Caption = (Action as TCustomAction).Caption); +end; + +function TTBCustomItemActionLink.IsCheckedLinked: Boolean; +begin + Result := inherited IsCheckedLinked and + (FClient.Checked = (Action as TCustomAction).Checked); +end; + +function TTBCustomItemActionLink.IsEnabledLinked: Boolean; +begin + Result := inherited IsEnabledLinked and + (FClient.Enabled = (Action as TCustomAction).Enabled); +end; + +function TTBCustomItemActionLink.IsHelpContextLinked: Boolean; +begin + Result := inherited IsHelpContextLinked and + (FClient.HelpContext = (Action as TCustomAction).HelpContext); +end; + +function TTBCustomItemActionLink.IsHintLinked: Boolean; +begin + Result := inherited IsHintLinked and + (FClient.Hint = (Action as TCustomAction).Hint); +end; + +function TTBCustomItemActionLink.IsImageIndexLinked: Boolean; +begin + Result := inherited IsImageIndexLinked and + (FClient.ImageIndex = (Action as TCustomAction).ImageIndex); +end; + +function TTBCustomItemActionLink.IsShortCutLinked: Boolean; +begin + Result := inherited IsShortCutLinked and + (FClient.ShortCut = (Action as TCustomAction).ShortCut); +end; + +function TTBCustomItemActionLink.IsVisibleLinked: Boolean; +begin + Result := inherited IsVisibleLinked and + (FClient.Visible = (Action as TCustomAction).Visible); +end; + +function TTBCustomItemActionLink.IsOnExecuteLinked: Boolean; +begin + Result := inherited IsOnExecuteLinked and + MethodsEqual(TMethod(FClient.OnClick), TMethod(Action.OnExecute)); +end; + +{$IFDEF JR_D6} +procedure TTBCustomItemActionLink.SetAutoCheck(Value: Boolean); +begin + if IsAutoCheckLinked then FClient.AutoCheck := Value; +end; +{$ENDIF} + +procedure TTBCustomItemActionLink.SetCaption(const Value: string); +begin + if IsCaptionLinked then FClient.Caption := Value; +end; + +procedure TTBCustomItemActionLink.SetChecked(Value: Boolean); +begin + if IsCheckedLinked then FClient.Checked := Value; +end; + +procedure TTBCustomItemActionLink.SetEnabled(Value: Boolean); +begin + if IsEnabledLinked then FClient.Enabled := Value; +end; + +procedure TTBCustomItemActionLink.SetHelpContext(Value: THelpContext); +begin + if IsHelpContextLinked then FClient.HelpContext := Value; +end; + +procedure TTBCustomItemActionLink.SetHint(const Value: string); +begin + if IsHintLinked then FClient.Hint := Value; +end; + +procedure TTBCustomItemActionLink.SetImageIndex(Value: Integer); +begin + if IsImageIndexLinked then FClient.ImageIndex := Value; +end; + +procedure TTBCustomItemActionLink.SetShortCut(Value: TShortCut); +begin + if IsShortCutLinked then FClient.ShortCut := Value; +end; + +procedure TTBCustomItemActionLink.SetVisible(Value: Boolean); +begin + if IsVisibleLinked then FClient.Visible := Value; +end; + +procedure TTBCustomItemActionLink.SetOnExecute(Value: TNotifyEvent); +begin + if IsOnExecuteLinked then FClient.OnClick := Value; +end; + + +{ TTBCustomItem } + +{}function ItemContainingItems(const AItem: TTBCustomItem): TTBCustomItem; +begin + if Assigned(AItem) and Assigned(AItem.FLinkSubitems) then + Result := AItem.FLinkSubitems + else + Result := AItem; +end; + +constructor TTBCustomItem.Create(AOwner: TComponent); +begin + inherited; + FEnabled := True; + FImageIndex := -1; + FInheritOptions := True; + FItemStyle := [tbisSelectable, tbisRedrawOnSelChange, tbisRedrawOnMouseOverChange]; + FVisible := True; + ReferenceClickWnd; +end; + +destructor TTBCustomItem.Destroy; +var + I: Integer; +begin + Destroying; + RemoveFromClickList(Self); + { Changed in 0.33. Moved FParent.Remove call *after* the child items are + deleted. } + for I := Count-1 downto 0 do + Items[I].Free; + if Assigned(FParent) then + FParent.Remove(Self); + FreeMem(FItems); + FActionLink.Free; + FActionLink := nil; + FreeAndNil(FSubMenuImagesChangeLink); + FreeAndNil(FImagesChangeLink); + inherited; + if Assigned(FNotifyList) then begin + for I := FNotifyList.Count-1 downto 0 do + Dispose(PItemChangedNotificationData(FNotifyList[I])); + FNotifyList.Free; + end; + FLinkParents.Free; + ReleaseClickWnd; +end; + +{$IFDEF JR_D6} +function TTBCustomItem.IsAutoCheckStored: Boolean; +begin + Result := (ActionLink = nil) or not FActionLink.IsAutoCheckLinked; +end; +{$ENDIF} + +function TTBCustomItem.IsCaptionStored: Boolean; +begin + Result := (ActionLink = nil) or not FActionLink.IsCaptionLinked; +end; + +function TTBCustomItem.IsCheckedStored: Boolean; +begin + Result := (ActionLink = nil) or not FActionLink.IsCheckedLinked; +end; + +function TTBCustomItem.IsEnabledStored: Boolean; +begin + Result := (ActionLink = nil) or not FActionLink.IsEnabledLinked; +end; + +function TTBCustomItem.IsHintStored: Boolean; +begin + Result := (ActionLink = nil) or not FActionLink.IsHintLinked; +end; + +function TTBCustomItem.IsHelpContextStored: Boolean; +begin + Result := (ActionLink = nil) or not FActionLink.IsHelpContextLinked; +end; + +function TTBCustomItem.IsImageIndexStored: Boolean; +begin + Result := (ActionLink = nil) or not FActionLink.IsImageIndexLinked; +end; + +function TTBCustomItem.IsShortCutStored: Boolean; +begin + Result := (ActionLink = nil) or not FActionLink.IsShortCutLinked; +end; + +function TTBCustomItem.IsVisibleStored: Boolean; +begin + Result := (ActionLink = nil) or not FActionLink.IsVisibleLinked; +end; + +function TTBCustomItem.IsOnClickStored: Boolean; +begin + Result := (ActionLink = nil) or not FActionLink.IsOnExecuteLinked; +end; + +function TTBCustomItem.GetAction: TBasicAction; +begin + if FActionLink <> nil then + Result := FActionLink.Action + else + Result := nil; +end; + +function TTBCustomItem.GetActionLinkClass: TTBCustomItemActionLinkClass; +begin + Result := TTBCustomItemActionLink; +end; + +procedure TTBCustomItem.DoActionChange(Sender: TObject); +begin + if Sender = Action then ActionChange(Sender, False); +end; + +procedure TTBCustomItem.ActionChange(Sender: TObject; CheckDefaults: Boolean); +begin + if Action is TCustomAction then + with TCustomAction(Sender) do + begin + {$IFDEF JR_D6} + if not CheckDefaults or (Self.AutoCheck = False) then + Self.AutoCheck := AutoCheck; + {$ENDIF} + if not CheckDefaults or (Self.Caption = '') then + Self.Caption := Caption; + if not CheckDefaults or (Self.Checked = False) then + Self.Checked := Checked; + if not CheckDefaults or (Self.Enabled = True) then + Self.Enabled := Enabled; + if not CheckDefaults or (Self.HelpContext = 0) then + Self.HelpContext := HelpContext; + if not CheckDefaults or (Self.Hint = '') then + Self.Hint := Hint; + if not CheckDefaults or (Self.ImageIndex = -1) then + Self.ImageIndex := ImageIndex; + if not CheckDefaults or (Self.ShortCut = scNone) then + Self.ShortCut := ShortCut; + if not CheckDefaults or (Self.Visible = True) then + Self.Visible := Visible; + if not CheckDefaults or not Assigned(Self.OnClick) then + Self.OnClick := OnExecute; + end; +end; + +procedure TTBCustomItem.SetAction(Value: TBasicAction); +begin + if Value = nil then begin + FActionLink.Free; + FActionLink := nil; + end + else begin + if FActionLink = nil then + FActionLink := GetActionLinkClass.Create(Self); + FActionLink.Action := Value; + FActionLink.OnChange := DoActionChange; + { Note: Delphi's Controls.pas and Menus.pas merely check for + "csLoading in Value.ComponentState" here. But that doesn't help when + the Action property references an action on another form / data module + that has already finished loading. So we check two things: + 1. csLoading in Value.ComponentState + 2. csLoading in ComponentState + In the typical case where the item and action list reside on the same + form, #1 and #2 are both true. + Only #1 is true when Action references an action on another form / data + module that is created *after* the item (e.g. if Form1.TBItem1.Action = + Form2.Action1, and Form1 is created before Form2). + Only #2 is true when Action references an action on another form / data + module that is created *before* the item (e.g. if Form2.TBItem1.Action = + Form1.Action1, and Form1 is created before Form2). } + ActionChange(Value, (csLoading in Value.ComponentState) or + (csLoading in ComponentState)); + Value.FreeNotification(Self); + end; +end; + +procedure TTBCustomItem.InitiateAction; +begin + if FActionLink <> nil then FActionLink.Update; +end; + +procedure TTBCustomItem.Loaded; +begin + inherited; + if Action <> nil then ActionChange(Action, True); +end; + +procedure TTBCustomItem.GetChildren(Proc: TGetChildProc; Root: TComponent); +var + I: Integer; +begin + for I := 0 to FItemCount-1 do + Proc(FItems[I].Item); +end; + +procedure TTBCustomItem.SetChildOrder(Child: TComponent; Order: Integer); +var + I: Integer; +begin + I := IndexOf(Child as TTBCustomItem); + if I <> -1 then + Move(I, Order); +end; + +function TTBCustomItem.HasParent: Boolean; +begin + Result := True; +end; + +function TTBCustomItem.GetParentComponent: TComponent; +begin + if (FParent <> nil) and (FParent.FParentComponent <> nil) then + Result := FParent.FParentComponent + else + Result := FParent; +end; + +procedure TTBCustomItem.SetName(const NewName: TComponentName); +begin + if Name <> NewName then begin + inherited; + if Assigned(FParent) then + FParent.Notify(tbicNameChanged, -1, Self); + end; +end; + +procedure TTBCustomItem.SetParentComponent(Value: TComponent); +var + Intf: ITBItems; +begin + if FParent <> nil then FParent.Remove(Self); + if Value <> nil then begin + if Value is TTBCustomItem then + TTBCustomItem(Value).Add(Self) + else if Value.GetInterface(ITBItems, Intf) then + Intf.GetItems.Add(Self); + end; +end; + +procedure TTBCustomItem.Notification(AComponent: TComponent; + Operation: TOperation); +begin + inherited; + if Operation = opRemove then begin + RemoveFromList(FLinkParents, AComponent); + if AComponent = Action then Action := nil; + if AComponent = Images then Images := nil; + if AComponent = SubMenuImages then SubMenuImages := nil; + if AComponent = LinkSubitems then LinkSubitems := nil; + end; +end; + +procedure TTBCustomItem.IndexError; +begin + raise ETBItemError.Create(STBToolbarIndexOutOfBounds); +end; + +class procedure TTBCustomItem.ClickWndProc(var Message: TMessage); +var + List: TList; + I: Integer; + Item: TObject; +begin + if Message.Msg = WM_TB2K_CLICKITEM then begin + List := ClickList; { optimization... } + if Assigned(List) then begin + I := Message.LParam; + if (I >= 0) and (I < List.Count) then begin + Item := List[I]; + List[I] := nil; + if Item = Pointer(1) then { is it a destroyed item? } + Item := nil; + end + else + Item := nil; + + { Remove trailing nil items from ClickList. This is not *necessary*, but + it will make RemoveFromClickList faster if we clean out items that + aren't used, and may never be used again. } + for I := List.Count-1 downto 0 do begin + if List[I] = nil then + List.Delete(I) + else + Break; + end; + + if Assigned(Item) then begin + try + if Item is TTBCustomItem then + TTBCustomItem(Item).Click + else if Item is TTBItemViewer then + TTBItemViewer(Item).AccSelect(Message.WParam <> 0); + except + Application.HandleException(Item); + end; + end; + end; + end + else + with Message do + Result := DefWindowProc(ClickWnd, Msg, wParam, lParam); +end; + +procedure TTBCustomItem.PostClick; +{ Posts a message to the message queue that causes the item's Click handler to + be executed when control is returned to the message loop. + This should be called instead of Click when a WM_SYSCOMMAND message is + (possibly) currently being handled, because TApplication.WndProc's + CM_APPSYSCOMMAND handler disables the VCL's processing of focus messages + until the Perform(WM_SYSCOMMAND, ...) call returns. (An OnClick handler which + calls TForm.ShowModal needs focus messages to be enabled or else the form + will be shown with no initial focus.) } +begin + QueueClick(Self, 0); +end; + +procedure TTBCustomItem.Click; +begin + if Enabled then begin + { Following code based on D6's TMenuItem.Click } + {$IFDEF JR_D6} + if (not Assigned(ActionLink) and AutoCheck) or + (Assigned(ActionLink) and not ActionLink.IsAutoCheckLinked and AutoCheck) then + {$ELSE} + if AutoCheck then + {$ENDIF} + Checked := not Checked; + { Following code based on D4's TControl.Click } + { Call OnClick if assigned and not equal to associated action's OnExecute. + If associated action's OnExecute assigned then call it, otherwise, call + OnClick. } + if Assigned(FOnClick) and (Action <> nil) and + not MethodsEqual(TMethod(FOnClick), TMethod(Action.OnExecute)) then + FOnClick(Self) + else + if not(csDesigning in ComponentState) and (ActionLink <> nil) then + ActionLink.Execute {$IFDEF JR_D6}(Self){$ENDIF} + else + if Assigned(FOnClick) then + FOnClick(Self); + end; +end; + +function TTBCustomItem.GetItem(Index: Integer): TTBCustomItem; +begin + if (Index < 0) or (Index >= FItemCount) then IndexError; + Result := FItems[Index].Item; +end; + +procedure TTBCustomItem.Add(AItem: TTBCustomItem); +begin + Insert(Count, AItem); +end; + +procedure TTBCustomItem.InternalNotify(Ancestor: TTBCustomItem; + NestingLevel: Integer; Action: TTBItemChangedAction; Index: Integer; + Item: TTBCustomItem); +{ Note: Ancestor is Item's parent, or in the case of a group item relayed + notification, it can also be a group item which *links* to Item's parent + (i.e. ItemContainingItems(Ancestor) = Item.Parent). } + + procedure RelayToParentOf(const AItem: TTBCustomItem); + begin + if NestingLevel > MaxGroupLevel then + Exit; + if (tbisEmbeddedGroup in AItem.ItemStyle) and Assigned(AItem.Parent) then begin + if Ancestor = Self then + AItem.Parent.InternalNotify(AItem, NestingLevel + 1, Action, Index, Item) + else + { Don't alter Ancestor on subsequent relays; only on the first. } + AItem.Parent.InternalNotify(Ancestor, NestingLevel + 1, Action, Index, Item); + end; + end; + +var + I: Integer; + P: TTBCustomItem; + SaveProc: TTBItemChangedProc; +begin + { If Self is a group item, relay the notification to the parent } + RelayToParentOf(Self); + { If any group items are linked to Self, relay the notification to + those items' parents } + if Assigned(FLinkParents) then + for I := 0 to FLinkParents.Count-1 do begin + P := FLinkParents[I]; + if P <> Parent then + RelayToParentOf(P); + end; + if Assigned(FNotifyList) then begin + I := 0; + while I < FNotifyList.Count do begin + with PItemChangedNotificationData(FNotifyList[I])^ do begin + SaveProc := Proc; + Proc(Ancestor, Ancestor <> Self, Action, Index, Item); + end; + { Is I now out of bounds? } + if I >= FNotifyList.Count then + Break; + { Only proceed to the next index if the list didn't change } + if MethodsEqual(TMethod(PItemChangedNotificationData(FNotifyList[I])^.Proc), + TMethod(SaveProc)) then + Inc(I); + end; + end; +end; + +procedure TTBCustomItem.Notify(Action: TTBItemChangedAction; Index: Integer; + Item: TTBCustomItem); +begin + InternalNotify(Self, 0, Action, Index, Item); +end; + +procedure TTBCustomItem.ViewBeginUpdate; +begin + Notify(tbicSubitemsBeginUpdate, -1, nil); +end; + +procedure TTBCustomItem.ViewEndUpdate; +begin + Notify(tbicSubitemsEndUpdate, -1, nil); +end; + +procedure TTBCustomItem.Insert(NewIndex: Integer; AItem: TTBCustomItem); +begin + if Assigned(AItem.FParent) then + raise ETBItemError.Create(STBToolbarItemReinserted); + if (NewIndex < 0) or (NewIndex > FItemCount) then IndexError; + InsertIntoItemArray(FItems, FItemCount, NewIndex, AItem); + AItem.FParent := Self; + ViewBeginUpdate; + try + Notify(tbicInserted, NewIndex, AItem); + AItem.RefreshOptions; + finally + ViewEndUpdate; + end; +end; + +procedure TTBCustomItem.Delete(Index: Integer); +begin + if (Index < 0) or (Index >= FItemCount) then IndexError; + Notify(tbicDeleting, Index, FItems[Index].Item); + FItems[Index].Item.FParent := nil; + DeleteFromItemArray(FItems, FItemCount, Index); +end; + +function TTBCustomItem.IndexOf(AItem: TTBCustomItem): Integer; +var + I: Integer; +begin + for I := 0 to FItemCount-1 do + if FItems[I].Item = AItem then begin + Result := I; + Exit; + end; + Result := -1; +end; + +procedure TTBCustomItem.Remove(Item: TTBCustomItem); +var + I: Integer; +begin + I := IndexOf(Item); + //if I = -1 then raise ETBItemError.Create(STBToolbarItemNotFound); + if I <> -1 then + Delete(I); +end; + +procedure TTBCustomItem.Clear; +var + I: Integer; +begin + for I := Count-1 downto 0 do + Items[I].Free; +end; + +procedure TTBCustomItem.Move(CurIndex, NewIndex: Integer); +var + Item: TTBCustomItem; +begin + if CurIndex <> NewIndex then begin + if (NewIndex < 0) or (NewIndex >= FItemCount) then IndexError; + Item := Items[CurIndex]; + ViewBeginUpdate; + try + Delete(CurIndex); + Insert(NewIndex, Item); + finally + ViewEndUpdate; + end; + end; +end; + +function TTBCustomItem.ContainsItem(AItem: TTBCustomItem): Boolean; +begin + while Assigned(AItem) and (AItem <> Self) do + AItem := AItem.Parent; + Result := Assigned(AItem); +end; + +procedure TTBCustomItem.RegisterNotification(ANotify: TTBItemChangedProc); +var + I: Integer; + Data: PItemChangedNotificationData; +begin + if FNotifyList = nil then FNotifyList := TList.Create; + for I := 0 to FNotifyList.Count-1 do + with PItemChangedNotificationData(FNotifyList[I])^ do + if MethodsEqual(TMethod(ANotify), TMethod(Proc)) then begin + Inc(RefCount); + Exit; + end; + FNotifyList.Expand; + New(Data); + Data.Proc := ANotify; + Data.RefCount := 1; + FNotifyList.Add(Data); +end; + +procedure TTBCustomItem.UnregisterNotification(ANotify: TTBItemChangedProc); +var + I: Integer; + Data: PItemChangedNotificationData; +begin + if Assigned(FNotifyList) then + for I := 0 to FNotifyList.Count-1 do begin + Data := FNotifyList[I]; + if MethodsEqual(TMethod(Data.Proc), TMethod(ANotify)) then begin + Dec(Data.RefCount); + if Data.RefCount = 0 then begin + FNotifyList.Delete(I); + Dispose(Data); + if FNotifyList.Count = 0 then begin + FNotifyList.Free; + FNotifyList := nil; + end; + end; + Break; + end; + end; +end; + +function TTBCustomItem.GetPopupWindowClass: TTBPopupWindowClass; +begin + Result := TTBPopupWindow; +end; + +procedure TTBCustomItem.DoPopup(Sender: TTBCustomItem; FromLink: Boolean); +begin + if Assigned(FOnPopup) then + FOnPopup(Sender, FromLink); + if not(tbisCombo in ItemStyle) then + Click; +end; + +var + PlayedSound: Boolean = False; + +procedure TTBCustomItem.GetPopupPosition(ParentView: TTBView; + PopupWindow: TTBPopupWindow; var PopupPositionRec: TTBPopupPositionRec); +var + X2, Y2: Integer; + RepeatCalcX: Boolean; + + function CountObscured(X, Y, W, H: Integer): Integer; + var + I: Integer; + P: TPoint; + V: TTBItemViewer; + begin + Result := 0; + if ParentView = nil then + Exit; + P := ParentView.FWindow.ClientToScreen(Point(0, 0)); + Dec(X, P.X); + Dec(Y, P.Y); + Inc(W, X); + Inc(H, Y); + for I := 0 to ParentView.FViewerCount-1 do begin + V := ParentView.FViewers[I]; + if V.Show and (V.BoundsRect.Left >= X) and (V.BoundsRect.Right <= W) and + (V.BoundsRect.Top >= Y) and (V.BoundsRect.Bottom <= H) then + Inc(Result); + end; + end; + +begin + with PopupPositionRec do + begin + { Adjust the Y position of the popup window } + { If the window is going off the bottom of the monitor, try placing it + above the parent item } + if (Y + H > MonitorRect.Bottom) and + ((ParentView = nil) or (ParentView.FOrientation <> tbvoVertical)) then begin + if not PositionAsSubmenu then + Y2 := ParentItemRect.Top + else + Y2 := ParentItemRect.Bottom + NCSizeY; + Dec(Y2, H); + { Only place it above the parent item if it isn't going to go off the + top of the monitor } + if Y2 >= MonitorRect.Top then + Y := Y2; + end; + { If it's still going off the bottom (which can be possible if a menu bar + was off the screen to begin with), clip it to the bottom of the monitor } + if Y + H > MonitorRect.Bottom then + Y := MonitorRect.Bottom - H; + if Y < MonitorRect.Top then + Y := MonitorRect.Top; + + { Other adjustments to the position of the popup window } + if not PositionAsSubmenu then begin + if (ParentView = nil) and (Alignment = tbpaRight) and (X < MonitorRect.Left) then + Inc(X, W); + if X + W > MonitorRect.Right then begin + if Assigned(ParentView) or (Alignment <> tbpaLeft) then + X := MonitorRect.Right; + Dec(X, W); + end; + if X < MonitorRect.Left then + X := MonitorRect.Left; + if (ParentView = nil) or (ParentView.FOrientation <> tbvoVertical) then begin + Y2 := ParentItemRect.Top - H; + if Y2 >= MonitorRect.Top then begin + { Would the popup window obscure less items if it popped out to the + top instead? } + if (CountObscured(X, Y2, W, H) < CountObscured(X, Y, W, H)) or + ((Y < ParentItemRect.Bottom) and (Y + H > ParentItemRect.Top) and + (X < ParentItemRect.Right) and (X + W > ParentItemRect.Left)) then + Y := Y2; + end; + { Make sure a tall popup window doesn't overlap the parent item } + if (Y < ParentItemRect.Bottom) and (Y + H > ParentItemRect.Top) and + (X < ParentItemRect.Right) and (X + W > ParentItemRect.Left) then begin + if ParentItemRect.Right + W <= MonitorRect.Right then + X := ParentItemRect.Right + else + X := ParentItemRect.Left - W; + if X < MonitorRect.Top then + X := MonitorRect.Top; + end; + end + else begin + X2 := ParentItemRect.Right; + if X2 + W <= MonitorRect.Right then begin + { Would the popup window obscure less items if it popped out to the + right instead? } + if (CountObscured(X2, Y, W, H) < CountObscured(X, Y, W, H)) or + ((Y < ParentItemRect.Bottom) and (Y + H > ParentItemRect.Top) and + (X < ParentItemRect.Right) and (X + W > ParentItemRect.Left)) then + X := X2; + end; + { Make sure a wide popup window doesn't overlap the parent item } + if (Y < ParentItemRect.Bottom) and (Y + H > ParentItemRect.Top) and + (X < ParentItemRect.Right) and (X + W > ParentItemRect.Left) then begin + if ParentItemRect.Bottom + H <= MonitorRect.Bottom then + Y := ParentItemRect.Bottom + else + Y := ParentItemRect.Top - H; + if Y < MonitorRect.Top then + Y := MonitorRect.Top; + end; + end; + end + else begin + { Make nested submenus go from left to right on the screen. Each it + runs out of space on the screen, switch directions } + repeat + RepeatCalcX := False; + X2 := X; + if Opposite or (X2 + W > MonitorRect.Right) then begin + if Assigned(ParentView) then + X2 := ParentItemRect.Left + NCSizeX; + Dec(X2, W); + if not Opposite then + Include(PopupWindow.View.FState, vsOppositePopup) + else begin + if X2 < MonitorRect.Left then begin + Opposite := False; + RepeatCalcX := True; + end + else + Include(PopupWindow.View.FState, vsOppositePopup); + end; + end; + until not RepeatCalcX; + X := X2; + if X < MonitorRect.Left then + X := MonitorRect.Left; + end; + + { Determine animation direction } + AnimDir := []; + if not PositionAsSubmenu then begin + if Y >= ParentItemRect.Bottom then + Include(AnimDir, tbadDown) + else if Y + H <= ParentItemRect.Top then + Include(AnimDir, tbadUp); + if X >= ParentItemRect.Right then + Include(AnimDir, tbadRight) + else if X + W <= ParentItemRect.Left then + Include(AnimDir, tbadLeft); + end + else begin + if X + W div 2 >= ParentItemRect.Left + (ParentItemRect.Right - ParentItemRect.Left) div 2 then + Include(AnimDir, tbadRight) + else + Include(AnimDir, tbadLeft); + end; + end; +end; + +function TTBCustomItem.CreatePopup(const ParentView: TTBView; + const ParentViewer: TTBItemViewer; const PositionAsSubmenu, SelectFirstItem, + Customizing: Boolean; const APopupPoint: TPoint; + const Alignment: TTBPopupAlignment): TTBPopupWindow; +var + EventItem, ParentItem: TTBCustomItem; + Opposite: Boolean; + ChevronParentView: TTBView; + X, Y, W, H: Integer; + P: TPoint; + ParentItemRect: TRect; + MonitorRect: TRect; + PopupRec: TTBPopupPositionRec; + NCSize: TPoint; +begin + EventItem := ItemContainingItems(Self); + if EventItem <> Self then + EventItem.DoPopup(Self, True); + DoPopup(Self, False); + + ChevronParentView := GetChevronParentView; + if ChevronParentView = nil then + ParentItem := Self + else + ParentItem := ChevronParentView.FParentItem; + + Opposite := Assigned(ParentView) and (vsOppositePopup in ParentView.FState); + Result := GetPopupWindowClass.CreatePopupWindow(nil, ParentView, ParentItem, + Customizing); + try + if Assigned(ChevronParentView) then begin + ChevronParentView.FreeNotification(Result.View); + Result.View.FChevronParentView := ChevronParentView; + Result.View.FIsToolbar := True; + Result.View.Style := Result.View.Style + + (ChevronParentView.Style * [vsAlwaysShowHints]); + Result.Color := clBtnFace; + end; + + { Calculate ParentItemRect, and MonitorRect (the rectangle of the monitor + that the popup window will be confined to) } + if Assigned(ParentView) then begin + ParentView.ValidatePositions; + ParentItemRect := ParentViewer.BoundsRect; + P := ParentView.FWindow.ClientToScreen(Point(0, 0)); + OffsetRect(ParentItemRect, P.X, P.Y); + if not IsRectEmpty(ParentView.FMonitorRect) then + MonitorRect := ParentView.FMonitorRect + else + {MonitorRect := GetRectOfMonitorContainingPoint(APopupPoint, False);} {vb-} + MonitorRect := GetRectOfMonitorContainingPoint(APopupPoint, True); {vb+} + end + else begin + ParentItemRect.TopLeft := APopupPoint; + ParentItemRect.BottomRight := APopupPoint; + {MonitorRect := GetRectOfMonitorContainingPoint(APopupPoint, False);} {vb-} + MonitorRect := GetRectOfMonitorContainingPoint(APopupPoint, True); {vb+} + end; + Result.View.FMonitorRect := MonitorRect; + + { Initialize item positions and size of the popup window } + NCSize := Result.GetNCSize; + if ChevronParentView = nil then + Result.View.FMaxHeight := (MonitorRect.Bottom - MonitorRect.Top) - + (NCSize.Y * 2) + else + Result.View.WrapOffset := (MonitorRect.Right - MonitorRect.Left) - + (NCSize.X * 2); + if SelectFirstItem then + Result.View.Selected := Result.View.FirstSelectable; + Result.View.UpdatePositions; + W := Result.Width; + H := Result.Height; + + { Calculate initial X,Y position of the popup window } + if Assigned(ParentView) then begin + if not PositionAsSubmenu then begin + if ChevronParentView = nil then begin + if (ParentView = nil) or (ParentView.FOrientation <> tbvoVertical) then begin + if GetSystemMetrics(SM_MENUDROPALIGNMENT) = 0 then + X := ParentItemRect.Left + else + X := ParentItemRect.Right - W; + Y := ParentItemRect.Bottom; + end + else begin + X := ParentItemRect.Left - W; + Y := ParentItemRect.Top; + end; + end + else begin + if ChevronParentView.FOrientation <> tbvoVertical then begin + X := ParentItemRect.Right - W; + Y := ParentItemRect.Bottom; + end + else begin + X := ParentItemRect.Left - W; + Y := ParentItemRect.Top; + end; + end; + end + else begin + X := ParentItemRect.Right - NCSize.X; + Y := ParentItemRect.Top - NCSize.Y; + end; + end + else begin + X := APopupPoint.X; + Y := APopupPoint.Y; + case Alignment of + tbpaRight: Dec(X, W); + tbpaCenter: Dec(X, W div 2); + end; + end; + + PopupRec.PositionAsSubmenu := PositionAsSubmenu; + PopupRec.Alignment := Alignment; + PopupRec.Opposite := Opposite; + PopupRec.MonitorRect := MonitorRect; + PopupRec.ParentItemRect := ParentItemRect; + PopupRec.NCSizeX := NCSize.X; + PopupRec.NCSizeY := NCSize.Y; + PopupRec.X := X; + PopupRec.Y := Y; + PopupRec.W := W; + PopupRec.H := H; + PopupRec.AnimDir := []; + PopupRec.PlaySound := True; + GetPopupPosition(ParentView, Result, PopupRec); + X := PopupRec.X; + Y := PopupRec.Y; + W := PopupRec.W; + H := PopupRec.H; + Result.FAnimationDirection := PopupRec.AnimDir; + Result.SetBounds(X, Y, W, H); + if Assigned(ParentView) then begin + Result.FreeNotification(ParentView); + ParentView.FOpenViewerWindow := Result; + ParentView.FOpenViewerView := Result.View; + ParentView.FOpenViewer := ParentViewer; + if ParentView.FIsToolbar then begin + Include(ParentView.FState, vsDropDownMenus); + ParentView.Invalidate(ParentViewer); + ParentView.FWindow.Update; + end; + end; + Include(Result.View.FState, vsDrawInOrder); + if not PopupRec.PlaySound or not NeedToPlaySound('MenuPopup') then begin + { Don't call PlaySound if we don't have to } + Result.Visible := True; + end + else begin + if not PlayedSound then begin + { Work around Windows 2000 "bug" where there's a 1/3 second delay upon the + first call to PlaySound (or sndPlaySound) by painting the window + completely first. This way the delay isn't very noticable. } + PlayedSound := True; + Result.Visible := True; + Result.Update; + PlaySound('MenuPopup', 0, SND_ALIAS or SND_ASYNC or SND_NODEFAULT or SND_NOSTOP); + end + else begin + PlaySound('MenuPopup', 0, SND_ALIAS or SND_ASYNC or SND_NODEFAULT or SND_NOSTOP); + Result.Visible := True; + end; + end; + CallNotifyWinEvent(EVENT_SYSTEM_MENUPOPUPSTART, Result.View.FWindow.Handle, + OBJID_CLIENT, CHILDID_SELF); + { Call NotifyFocusEvent now that the window is visible } + if Assigned(Result.View.Selected) then + Result.View.NotifyFocusEvent; + except + Result.Free; + raise; + end; +end; + +function TTBCustomItem.OpenPopup(const SelectFirstItem, TrackRightButton: Boolean; + const PopupPoint: TPoint; const Alignment: TTBPopupAlignment; + const ReturnClickedItemOnly: Boolean): TTBCustomItem; +var + ModalHandler: TTBModalHandler; + Popup: TTBPopupWindow; + DoneActionData: TTBDoneActionData; +begin + ModalHandler := TTBModalHandler.Create(0); + try + Popup := CreatePopup(nil, nil, False, SelectFirstItem, False, PopupPoint, + Alignment); + try + Include(Popup.View.FState, vsIgnoreFirstMouseUp); + ModalHandler.RootPopup := Popup; + ModalHandler.Loop(Popup.View, False, False, False, TrackRightButton); + DoneActionData := Popup.View.FDoneActionData; + finally + ModalHandler.RootPopup := nil; + { Remove vsModal state from the root view before any TTBView.Destroy + methods get called, so that NotifyFocusEvent becomes a no-op } + Exclude(Popup.View.FState, vsModal); + Popup.Free; + end; + finally + ModalHandler.Free; + end; + Result := ProcessDoneAction(DoneActionData, ReturnClickedItemOnly); +end; + +function TTBCustomItem.Popup(X, Y: Integer; TrackRightButton: Boolean; + Alignment: TTBPopupAlignment = tbpaLeft; + ReturnClickedItemOnly: Boolean = False): TTBCustomItem; +var + P: TPoint; +begin + P.X := X; + P.Y := Y; + Result := OpenPopup(False, TrackRightButton, P, Alignment, + ReturnClickedItemOnly); +end; + +function TTBCustomItem.FindItemWithShortCut(AShortCut: TShortCut; + var ATopmostParent: TTBCustomItem): TTBCustomItem; + + function DoItem(AParentItem: TTBCustomItem; LinkDepth: Integer): TTBCustomItem; + var + I: Integer; + NewParentItem, Item: TTBCustomItem; + begin + Result := nil; + NewParentItem := AParentItem; + if Assigned(NewParentItem.LinkSubitems) then begin + NewParentItem := NewParentItem.LinkSubitems; + Inc(LinkDepth); + if LinkDepth > 25 then + Exit; { prevent infinite link recursion } + end; + for I := 0 to NewParentItem.Count-1 do begin + Item := NewParentItem.Items[I]; + if Item.ShortCut = AShortCut then begin + Result := Item; + Exit; + end; + Result := DoItem(Item, LinkDepth); + if Assigned(Result) then begin + ATopmostParent := Item; + Exit; + end; + end; + end; + +begin + ATopmostParent := nil; + Result := DoItem(Self, 0); +end; + +function TTBCustomItem.IsShortCut(var Message: TWMKey): Boolean; +var + ShortCut: TShortCut; + ShiftState: TShiftState; + ShortCutItem, TopmostItem, Item, EventItem: TTBCustomItem; + I: Integer; +label 1; +begin + Result := False; + ShiftState := KeyDataToShiftState(Message.KeyData); + ShortCut := Menus.ShortCut(Message.CharCode, ShiftState); +1:ShortCutItem := FindItemWithShortCut(ShortCut, TopmostItem); + if Assigned(ShortCutItem) then begin + { Send OnPopup/OnClick events to ShortCutItem's parents so that they can + update the Enabled state of ShortCutItem if needed } + Item := Self; + repeat + if not Item.Enabled then + Exit; + EventItem := ItemContainingItems(Item); + if not(csDesigning in ComponentState) then begin + for I := 0 to EventItem.Count-1 do + EventItem.Items[I].InitiateAction; + end; + if not(tbisEmbeddedGroup in Item.ItemStyle) then begin + if EventItem <> Item then begin + try + EventItem.DoPopup(Item, True); + except + Application.HandleException(Self); + end; + end; + try + Item.DoPopup(Item, False); + except + Application.HandleException(Self); + end; + end; + ShortCutItem := Item.FindItemWithShortCut(ShortCut, TopmostItem); + if ShortCutItem = nil then + { Can no longer find the shortcut inside TopmostItem. Start over + because the shortcut might have moved. } + goto 1; + Item := TopmostItem; + until Item = nil; + if ShortCutItem.Enabled then begin + try + ShortCutItem.Click; + except + Application.HandleException(Self); + end; + Result := True; + end; + end; +end; + +function TTBCustomItem.GetChevronParentView: TTBView; +begin + Result := nil; +end; + +function TTBCustomItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBItemViewer; +end; + +function TTBCustomItem.NeedToRecreateViewer(AViewer: TTBItemViewer): Boolean; +begin + Result := False; +end; + +function TTBCustomItem.GetShortCutText: String; +var + P: Integer; +begin + P := Pos(#9, Caption); + if P = 0 then begin + if ShortCut <> 0 then + Result := ShortCutToText(ShortCut) + else + Result := ''; + end + else + Result := Copy(Caption, P+1, Maxint); +end; + +procedure TTBCustomItem.Change(NeedResize: Boolean); +const + ItemChangedActions: array[Boolean] of TTBItemChangedAction = + (tbicInvalidate, tbicInvalidateAndResize); +begin + if Assigned(FParent) then + FParent.Notify(ItemChangedActions[NeedResize], -1, Self); +end; + +procedure TTBCustomItem.RecreateItemViewers; +begin + if Assigned(FParent) then + FParent.Notify(tbicRecreateItemViewers, -1, Self); +end; + +procedure TTBCustomItem.ImageListChangeHandler(Sender: TObject); +var + Resize: Boolean; +begin + if Sender = FSubMenuImages then begin + FSubMenuImagesChangeLink.FLastWidth := FSubMenuImages.Width; + FSubMenuImagesChangeLink.FLastHeight := FSubMenuImages.Height; + SubMenuImagesChanged; + end + else begin + { Sender is FImages } + Resize := False; + if (FImagesChangeLink.FLastWidth <> FImages.Width) or + (FImagesChangeLink.FLastHeight <> FImages.Height) then begin + FImagesChangeLink.FLastWidth := FImages.Width; + FImagesChangeLink.FLastHeight := FImages.Height; + Resize := True; + end; + Change(Resize); + end; +end; + +procedure TTBCustomItem.SubMenuImagesChanged; +begin + Notify(tbicSubMenuImagesChanged, -1, nil); +end; + +procedure TTBCustomItem.TurnSiblingsOff; +var + I: Integer; + Item: TTBCustomItem; +begin + if (GroupIndex <> 0) and Assigned(FParent) then begin + for I := 0 to FParent.Count-1 do begin + Item := FParent[I]; + if (Item <> Self) and (Item.GroupIndex = GroupIndex) then + Item.Checked := False; + end; + end; +end; + +procedure TTBCustomItem.SetCaption(Value: String); +begin + if FCaption <> Value then begin + FCaption := Value; + Change(True); + end; +end; + +procedure TTBCustomItem.SetChecked(Value: Boolean); +begin + if FChecked <> Value then begin + FChecked := Value; + Change(False); + if Value then + TurnSiblingsOff; + end; +end; + +procedure TTBCustomItem.SetDisplayMode(Value: TTBItemDisplayMode); +begin + if FDisplayMode <> Value then begin + FDisplayMode := Value; + Change(True); + end; +end; + +procedure TTBCustomItem.EnabledChanged; +begin + Change(False); +end; + +procedure TTBCustomItem.SetEnabled(Value: Boolean); +begin + if FEnabled <> Value then begin + FEnabled := Value; + EnabledChanged; + end; +end; + +procedure TTBCustomItem.SetGroupIndex(Value: Integer); +begin + if FGroupIndex <> Value then begin + FGroupIndex := Value; + if Checked then + TurnSiblingsOff; + end; +end; + +procedure TTBCustomItem.SetImageIndex(Value: TImageIndex); +var + HadNoImage: Boolean; +begin + if FImageIndex <> Value then begin + HadNoImage := FImageIndex = -1; + FImageIndex := Value; + Change(HadNoImage xor (Value = -1)); + end; +end; + +function TTBCustomItem.ChangeImages(var AImages: TCustomImageList; + const Value: TCustomImageList; var AChangeLink: TTBImageChangeLink): Boolean; +{ Returns True if image list was resized } +var + LastWidth, LastHeight: Integer; +begin + Result := False; + LastWidth := -1; + LastHeight := -1; + if Assigned(AImages) then begin + LastWidth := AImages.Width; + LastHeight := AImages.Height; + AImages.UnregisterChanges(AChangeLink); + if Value = nil then begin + AChangeLink.Free; + AChangeLink := nil; + Result := True; + end; + end; + AImages := Value; + if Assigned(Value) then begin + Result := (Value.Width <> LastWidth) or (Value.Height <> LastHeight); + if AChangeLink = nil then begin + AChangeLink := TTBImageChangeLink.Create; + AChangeLink.FLastWidth := Value.Width; + AChangeLink.FLastHeight := Value.Height; + AChangeLink.OnChange := ImageListChangeHandler; + end; + Value.RegisterChanges(AChangeLink); + Value.FreeNotification(Self); + end; +end; + +procedure TTBCustomItem.SetImages(Value: TCustomImageList); +begin + if FImages <> Value then + Change(ChangeImages(FImages, Value, FImagesChangeLink)); +end; + +procedure TTBCustomItem.SetSubMenuImages(Value: TCustomImageList); +begin + if FSubMenuImages <> Value then begin + ChangeImages(FSubMenuImages, Value, FSubMenuImagesChangeLink); + SubMenuImagesChanged; + end; +end; + +procedure TTBCustomItem.SetInheritOptions(Value: Boolean); +begin + if FInheritOptions <> Value then begin + FInheritOptions := Value; + RefreshOptions; + end; +end; + +procedure TTBCustomItem.SetLinkSubitems(Value: TTBCustomItem); +begin + if Value = Self then + Value := nil; + if FLinkSubitems <> Value then begin + if Assigned(FLinkSubitems) then + RemoveFromList(FLinkSubitems.FLinkParents, Self); + FLinkSubitems := Value; + if Assigned(Value) then begin + Value.FreeNotification(Self); + AddToList(Value.FLinkParents, Self); + end; + Notify(tbicSubitemsChanged, -1, nil); + end; +end; + +function TTBCustomItem.FixOptions(const AOptions: TTBItemOptions): TTBItemOptions; +begin + Result := AOptions; + if not(tboToolbarStyle in Result) then + Exclude(Result, tboToolbarSize); +end; + +procedure TTBCustomItem.RefreshOptions; +const + NonInheritedOptions = [tboDefault]; + ChangeOptions = [tboDefault, tboDropdownArrow, tboImageAboveCaption, + tboNoRotation, tboSameWidth, tboToolbarStyle, tboToolbarSize]; +var + OldOptions, NewOptions: TTBItemOptions; + I: Integer; + Item: TTBCustomItem; +begin + OldOptions := FEffectiveOptions; + if FInheritOptions and Assigned(FParent) then + NewOptions := FParent.FEffectiveOptions - NonInheritedOptions + else + NewOptions := []; + NewOptions := FixOptions(NewOptions - FMaskOptions + FOptions); + if FEffectiveOptions <> NewOptions then begin + FEffectiveOptions := NewOptions; + if (OldOptions * ChangeOptions) <> (NewOptions * ChangeOptions) then + Change(True); + for I := 0 to FItemCount-1 do begin + Item := FItems[I].Item; + if Item.FInheritOptions then + Item.RefreshOptions; + end; + end; +end; + +procedure TTBCustomItem.SetMaskOptions(Value: TTBItemOptions); +begin + if FMaskOptions <> Value then begin + FMaskOptions := Value; + RefreshOptions; + end; +end; + +procedure TTBCustomItem.SetOptions(Value: TTBItemOptions); +begin + Value := FixOptions(Value); + if FOptions <> Value then begin + FOptions := Value; + RefreshOptions; + end; +end; + +procedure TTBCustomItem.SetRadioItem(Value: Boolean); +begin + if FRadioItem <> Value then begin + FRadioItem := Value; + Change(False); + end; +end; + +procedure TTBCustomItem.SetVisible(Value: Boolean); +begin + if FVisible <> Value then begin + FVisible := Value; + Change(True); + end; +end; + + +{ TTBGroupItem } + +constructor TTBGroupItem.Create(AOwner: TComponent); +begin + inherited; + ItemStyle := ItemStyle + [tbisEmbeddedGroup, tbisSubitemsEditable]; +end; + + +{ TTBSubmenuItem } + +constructor TTBSubmenuItem.Create(AOwner: TComponent); +begin + inherited; + ItemStyle := ItemStyle + [tbisSubMenu, tbisSubitemsEditable]; +end; + +function TTBSubmenuItem.GetDropdownCombo: Boolean; +begin + Result := tbisCombo in ItemStyle; +end; + +procedure TTBSubmenuItem.SetDropdownCombo(Value: Boolean); +begin + if (tbisCombo in ItemStyle) <> Value then begin + if Value then + ItemStyle := ItemStyle + [tbisCombo] + else + ItemStyle := ItemStyle - [tbisCombo]; + Change(True); + end; +end; + + +{ TTBSeparatorItem } + +constructor TTBSeparatorItem.Create(AOwner: TComponent); +begin + inherited; + ItemStyle := ItemStyle - [tbisSelectable, tbisRedrawOnSelChange, + tbisRedrawOnMouseOverChange] + [tbisSeparator, tbisClicksTransparent]; +end; + +function TTBSeparatorItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBSeparatorItemViewer; +end; + +procedure TTBSeparatorItem.SetBlank(Value: Boolean); +begin + if FBlank <> Value then begin + FBlank := Value; + Change(False); + end; +end; + + +{ TTBSeparatorItemViewer } + +procedure TTBSeparatorItemViewer.CalcSize(const Canvas: TCanvas; + var AWidth, AHeight: Integer); +begin + if not IsToolbarStyle then + Inc(AHeight, DivRoundUp(GetTextHeight(Canvas.Handle) * 2, 3)) + else begin + AWidth := 6; + AHeight := 6; + end; +end; + +procedure TTBSeparatorItemViewer.Paint(const Canvas: TCanvas; + const ClientAreaRect: TRect; IsSelected, IsPushed, UseDisabledShadow: Boolean); +var + DC: HDC; + R: TRect; + ToolbarStyle, Horiz, LineSep: Boolean; +begin + DC := Canvas.Handle; + if TTBSeparatorItem(Item).FBlank then + Exit; + + R := ClientAreaRect; + ToolbarStyle := IsToolbarStyle; + Horiz := not ToolbarStyle or (View.FOrientation = tbvoVertical); + LineSep := tbisLineSep in State; + if LineSep then + Horiz := not Horiz; + if Horiz then begin + R.Top := R.Bottom div 2 - 1; + if not ToolbarStyle then + InflateRect(R, -tbMenuSeparatorOffset, 0) + else if LineSep then begin + if View.FOrientation = tbvoFloating then + InflateRect(R, -tbLineSepOffset, 0) + else + InflateRect(R, -tbDockedLineSepOffset, 0); + end; + DrawEdge(DC, R, EDGE_ETCHED, BF_TOP); + end + else begin + R.Left := R.Right div 2 - 1; + if LineSep then + InflateRect(R, 0, -tbDockedLineSepOffset); + DrawEdge(DC, R, EDGE_ETCHED, BF_LEFT); + end; +end; + +function TTBSeparatorItemViewer.UsesSameWidth: Boolean; +begin + Result := False; +end; + + +{ TTBControlItem } + +constructor TTBControlItem.Create(AOwner: TComponent); +begin + inherited; + ItemStyle := ItemStyle - [tbisSelectable] + [tbisClicksTransparent]; +end; + +constructor TTBControlItem.CreateControlItem(AOwner: TComponent; + AControl: TControl); +begin + FControl := AControl; + AControl.FreeNotification(Self); + Create(AOwner); +end; + +destructor TTBControlItem.Destroy; +begin + inherited; + { Free the associated control *after* the item is completely destroyed } + if not FDontFreeControl and Assigned(FControl) and + not(csAncestor in FControl.ComponentState) then + FControl.Free; +end; + +procedure TTBControlItem.Notification(AComponent: TComponent; + Operation: TOperation); +begin + inherited; + if (Operation = opRemove) and (AComponent = FControl) then + Control := nil; +end; + +procedure TTBControlItem.SetControl(Value: TControl); +begin + if FControl <> Value then begin + FControl := Value; + if Assigned(Value) then + Value.FreeNotification(Self); + Change(True); + end; +end; + + +{ TTBItemViewer } + +constructor TTBItemViewer.Create(AView: TTBView; AItem: TTBCustomItem; + AGroupLevel: Integer); +begin + FItem := AItem; + FView := AView; + FGroupLevel := AGroupLevel; + ReferenceClickWnd; +end; + +destructor TTBItemViewer.Destroy; +begin + RemoveFromClickList(Self); + if Assigned(FAccObjectInstance) then begin + FAccObjectInstance.ClientIsDestroying; + FAccObjectInstance := nil; + end; + inherited; + ReleaseClickWnd; +end; + +function TTBItemViewer.GetAccObject: IDispatch; +begin + if FAccObjectInstance = nil then begin + if not InitializeOleAcc then begin + Result := nil; + Exit; + end; + FAccObjectInstance := TTBItemViewerAccObject.Create(Self); + end; + Result := FAccObjectInstance; +end; + +procedure TTBItemViewer.AccSelect(const AExecute: Boolean); +{ Called by ClickWndProc when an item of type TTBItemViewer is in ClickList } +var + Obj: IDispatch; +begin + { Ensure FAccObjectInstance is created by calling GetAccObject } + Obj := GetAccObject; + if Assigned(Obj) then + (FAccObjectInstance as TTBItemViewerAccObject).HandleAccSelect(AExecute); +end; + +procedure TTBItemViewer.PostAccSelect(const AExecute: Boolean); +{ Internally called by TTBItemViewerAccObject. Don't call directly. } +begin + QueueClick(Self, Ord(AExecute)); +end; + +function TTBItemViewer.IsAccessible: Boolean; +{ Returns True if MSAA clients should know about the viewer, specifically + if it's either shown, off-edge, or clipped (in other words, not completely + invisible/inaccessible). } +begin + { Note: Can't simply check Item.Visible because the chevron item's Visible + property is always True } + Result := Show or OffEdge or Clipped; +end; + +function TTBItemViewer.GetCaptionText: String; +var + P: Integer; +begin + Result := Item.Caption; + P := Pos(#9, Result); + if P <> 0 then + SetLength(Result, P-1); +end; + +function TTBItemViewer.GetHintText: String; +var P: Integer; +begin + Result := GetShortHint(Item.Hint); + { If there is no short hint, use the caption for the hint. Like Office, + strip any trailing colon or ellipsis. } + if (Result = '') and not(tboNoAutoHint in Item.EffectiveOptions) and + (not(tbisSubmenu in Item.ItemStyle) or (tbisCombo in Item.ItemStyle) or + not CaptionShown) then + Result := StripAccelChars(StripTrailingPunctuation(GetCaptionText)); + { Call associated action's OnHint event handler to post-process the hint } + if Assigned(Item.ActionLink) and + (Item.ActionLink.Action is TCustomAction) then begin + if not TCustomAction(Item.ActionLink.Action).DoHint(Result) then + Result := ''; + { Note: TControlActionLink.DoShowHint actually misinterprets the result + of DoHint, but we get it right... } + end; + { Add shortcut text } + if (Result <> '') and Application.HintShortCuts then + begin + { Custom shortcut } + P := Pos(#9, Item.Caption); + if (P <> 0) and (P < Length(Item.Caption)) then + Result := Format('%s (%s)', [Result, Copy(Item.Caption, P+ 1, MaxInt)]) + else + if (Item.ShortCut <> scNone) then + Result := Format('%s (%s)', [Result, ShortCutToText(Item.ShortCut)]); + end; +end; + +function TTBItemViewer.CaptionShown: Boolean; +begin + Result := (GetCaptionText <> '') and (not IsToolbarSize or + (Item.ImageIndex < 0) or (Item.DisplayMode in [nbdmTextOnly, nbdmImageAndText])) or + (tboImageAboveCaption in Item.EffectiveOptions); +end; + +function TTBItemViewer.ImageShown: Boolean; +begin + {}{should also return false if Images=nil (use UsedImageList?)} + ImageShown := (Item.ImageIndex >= 0) and + ((Item.DisplayMode in [nbdmDefault, nbdmImageAndText]) or + (IsToolbarStyle and (Item.DisplayMode = nbdmTextOnlyInMenus))); +end; + +function TTBItemViewer.GetImageList: TCustomImageList; +var + V: TTBView; +begin + Result := Item.Images; + if Assigned(Result) then + Exit; + V := View; + repeat + if Assigned(V.FCurParentItem) then begin + Result := V.FCurParentItem.SubMenuImages; + if Assigned(Result) then + Break; + end; + if Assigned(V.FParentItem) then begin + Result := V.FParentItem.SubMenuImages; + if Assigned(Result) then + Break; + end; + V := V.FParentView; + until V = nil; +end; + +function TTBItemViewer.IsRotated: Boolean; +{ Returns True if the caption should be drawn with rotated (vertical) text, + underneath the image } +begin + Result := (View.Orientation = tbvoVertical) and + not (tboNoRotation in Item.EffectiveOptions) and + not (tboImageAboveCaption in Item.EffectiveOptions); +end; + +procedure TTBItemViewer.CalcSize(const Canvas: TCanvas; + var AWidth, AHeight: Integer); +var + ToolbarStyle: Boolean; + DC: HDC; + TextMetrics: TTextMetric; + H, LeftMargin: Integer; + ImgList: TCustomImageList; + S: String; + RotatedFont, SaveFont: HFONT; +begin + ToolbarStyle := IsToolbarStyle; + DC := Canvas.Handle; + ImgList := GetImageList; + if ToolbarStyle then begin + AWidth := 6; + AHeight := 6; + end + else begin + AWidth := 0; + AHeight := 0; + end; + if not ToolbarStyle or CaptionShown then begin + if not IsRotated then begin + GetTextMetrics(DC, TextMetrics); + Inc(AHeight, TextMetrics.tmHeight); + Inc(AWidth, GetTextWidth(DC, GetCaptionText, True)); + if ToolbarStyle then + Inc(AWidth, 6); + end + else begin + { Vertical text isn't always the same size as horizontal text, so we have + to select the rotated font into the DC to get an accurate size } + RotatedFont := CreateRotatedFont(DC); + SaveFont := SelectObject(DC, RotatedFont); + GetTextMetrics(DC, TextMetrics); + Inc(AWidth, TextMetrics.tmHeight); + Inc(AHeight, GetTextWidth(DC, GetCaptionText, True)); + if ToolbarStyle then + Inc(AHeight, 6); + SelectObject(DC, SaveFont); + DeleteObject(RotatedFont); + end; + end; + if ToolbarStyle and ImageShown and Assigned(ImgList) then begin + if not IsRotated and not(tboImageAboveCaption in Item.EffectiveOptions) then begin + Inc(AWidth, ImgList.Width + 1); + if AHeight < ImgList.Height + 6 then + AHeight := ImgList.Height + 6; + end + else begin + Inc(AHeight, ImgList.Height); + if AWidth < ImgList.Width + 7 then + AWidth := ImgList.Width + 7; + end; + end; + if ToolbarStyle and (tbisSubmenu in Item.ItemStyle) then begin + if tbisCombo in Item.ItemStyle then + Inc(AWidth, tbDropdownComboArrowWidth) + else + if tboDropdownArrow in Item.EffectiveOptions then begin + if View.Orientation <> tbvoVertical then + Inc(AWidth, tbDropdownArrowWidth) + else + Inc(AHeight, tbDropdownArrowWidth); + end; + end; + if not ToolbarStyle then begin + Inc(AHeight, TextMetrics.tmExternalLeading + tbMenuVerticalMargin); + if Assigned(ImgList) then begin + H := ImgList.Height + 3; + if H > AHeight then + AHeight := H; + LeftMargin := MulDiv(ImgList.Width + 3, AHeight, H); + end + else + LeftMargin := AHeight; + Inc(AWidth, LeftMargin + tbMenuImageTextSpace + tbMenuLeftTextMargin + + tbMenuRightTextMargin); + S := Item.GetShortCutText; + if S <> '' then + Inc(AWidth, (AHeight - 6) + GetTextWidth(DC, S, True)); + Inc(AWidth, AHeight); + end; +end; + +procedure TTBItemViewer.DrawItemCaption(const Canvas: TCanvas; ARect: TRect; + const ACaption: String; ADrawDisabledShadow: Boolean; AFormat: UINT); +var + DC: HDC; + + procedure Draw; + begin + if not IsRotated then + DrawText(DC, PChar(ACaption), Length(ACaption), ARect, AFormat) + else + DrawRotatedText(DC, ACaption, ARect, AFormat); + end; + +var + ShadowColor, HighlightColor, SaveTextColor: DWORD; +begin + DC := Canvas.Handle; + if not ADrawDisabledShadow then + Draw + else begin + ShadowColor := GetSysColor(COLOR_BTNSHADOW); + HighlightColor := GetSysColor(COLOR_BTNHIGHLIGHT); + OffsetRect(ARect, 1, 1); + SaveTextColor := SetTextColor(DC, HighlightColor); + Draw; + OffsetRect(ARect, -1, -1); + SetTextColor(DC, ShadowColor); + Draw; + SetTextColor(DC, SaveTextColor); + end; +end; + +procedure TTBItemViewer.Paint(const Canvas: TCanvas; + const ClientAreaRect: TRect; IsSelected, IsPushed, UseDisabledShadow: Boolean); +var + ShowEnabled, HasArrow: Boolean; + MenuCheckWidth, MenuCheckHeight: Integer; + + function GetDrawTextFlags: UINT; + begin + Result := 0; + if not AreKeyboardCuesEnabled and (vsUseHiddenAccels in View.FStyle) and + not(vsShowAccels in View.FState) then + Result := DT_HIDEPREFIX; + end; + + procedure DrawSubmenuArrow; + var + BR: TRect; + Bmp: TBitmap; + + procedure DrawWithColor(AColor: TColor); + const + ROP_DSPDxax = $00E20746; + var + DC: HDC; + SaveTextColor, SaveBkColor: TColorRef; + begin + Canvas.Brush.Color := AColor; + DC := Canvas.Handle; + SaveTextColor := SetTextColor(DC, clWhite); + SaveBkColor := SetBkColor(DC, clBlack); + BitBlt(DC, BR.Left, BR.Top, MenuCheckWidth, MenuCheckHeight, + Bmp.Canvas.Handle, 0, 0, ROP_DSPDxax); + SetBkColor(DC, SaveBkColor); + SetTextColor(DC, SaveTextColor); + Canvas.Brush.Style := bsClear; + end; + + begin + Bmp := TBitmap.Create; + try + Bmp.Monochrome := True; + Bmp.Width := MenuCheckWidth; + Bmp.Height := MenuCheckHeight; + BR := Rect(0, 0, MenuCheckWidth, MenuCheckHeight); + DrawFrameControl(Bmp.Canvas.Handle, BR, DFC_MENU, DFCS_MENUARROW); + OffsetRect(BR, ClientAreaRect.Right - MenuCheckWidth, + ClientAreaRect.Top + ((ClientAreaRect.Bottom - ClientAreaRect.Top) - MenuCheckHeight) div 2); + if not UseDisabledShadow then begin + if ShowEnabled and (tbisCombo in Item.ItemStyle) and IsSelected then begin + OffsetRect(BR, 1, 1); + DrawWithColor(clBtnText); + end + else + DrawWithColor(Canvas.Font.Color); + end + else begin + OffsetRect(BR, 1, 1); + DrawWithColor(clBtnHighlight); + OffsetRect(BR, -1, -1); + DrawWithColor(clBtnShadow); + end; + finally + Bmp.Free; + end; + end; + + procedure DrawDropdownArrow(R: TRect; Rotated: Boolean); + + procedure DrawWithColor(AColor: TColor); + var + X, Y: Integer; + P: array[0..2] of TPoint; + begin + X := (R.Left + R.Right) div 2; + Y := (R.Top + R.Bottom) div 2; + if not Rotated then begin + Dec(Y); + P[0].X := X-2; + P[0].Y := Y; + P[1].X := X+2; + P[1].Y := Y; + P[2].X := X; + P[2].Y := Y+2; + end + else begin + Dec(X); + P[0].X := X; + P[0].Y := Y+2; + P[1].X := X; + P[1].Y := Y-2; + P[2].X := X-2; + P[2].Y := Y; + end; + Canvas.Pen.Color := AColor; + Canvas.Brush.Color := AColor; + Canvas.Polygon(P); + end; + + begin + if not UseDisabledShadow then + DrawWithColor(Canvas.Font.Color) + else begin + OffsetRect(R, 1, 1); + DrawWithColor(clBtnHighlight); + OffsetRect(R, -1, -1); + DrawWithColor(clBtnShadow); + end; + end; + + function GetDitherBitmap: TBitmap; + begin + Result := AllocPatternBitmap(clBtnFace, clBtnHighlight); + Result.HandleType := bmDDB; { needed for Win95, or else brush is solid white } + end; + +const + EdgeStyles: array[Boolean] of UINT = (BDR_RAISEDINNER, BDR_SUNKENOUTER); + CheckMarkPoints: array[0..11] of TPoint = ( + { Black } + (X: -2; Y: -2), (X: 0; Y: 0), (X: 4; Y: -4), + (X: 4; Y: -3), (X: 0; Y: 1), (X: -2; Y: -1), + (X: -2; Y: -2), + { White } + (X: -3; Y: -2), (X: -3; Y: -1), (X: 0; Y: 2), + (X: 5; Y: -3), (X: 5; Y: -5)); +var + ToolbarStyle, ImageIsShown: Boolean; + R, RC, RD: TRect; + S: String; + ImgList: TCustomImageList; + I, X, Y: Integer; + Points: array[0..11] of TPoint; + DrawTextFlags: UINT; + LeftMargin: Integer; + TextMetrics: TTextMetric; +begin + ToolbarStyle := IsToolbarStyle; + ShowEnabled := Item.Enabled or View.Customizing; + HasArrow := (tbisSubmenu in Item.ItemStyle) and + ((tbisCombo in Item.ItemStyle) or (tboDropdownArrow in Item.EffectiveOptions)); + MenuCheckWidth := GetSystemMetrics(SM_CXMENUCHECK); + MenuCheckHeight := GetSystemMetrics(SM_CYMENUCHECK); + ImgList := GetImageList; + ImageIsShown := ImageShown and Assigned(ImgList); + LeftMargin := 0; + if not ToolbarStyle then begin + if Assigned(ImgList) then + LeftMargin := MulDiv(ImgList.Width + 3, ClientAreaRect.Bottom, ImgList.Height + 3) + else + LeftMargin := ClientAreaRect.Bottom; + end; + + { Border } + RC := ClientAreaRect; + if ToolbarStyle then begin + if HasArrow then begin + if tbisCombo in Item.ItemStyle then begin + Dec(RC.Right, tbDropdownComboMargin); + RD := RC; + Dec(RC.Right, tbDropdownComboArrowWidth - tbDropdownComboMargin); + RD.Left := RC.Right; + end + else begin + if View.Orientation <> tbvoVertical then + RD := Rect(RC.Right - tbDropdownArrowWidth - tbDropdownArrowMargin, 0, + RC.Right - tbDropdownArrowMargin, RC.Bottom) + else + RD := Rect(0, RC.Bottom - tbDropdownArrowWidth - tbDropdownArrowMargin, + RC.Right, RC.Bottom - tbDropdownArrowMargin); + end; + end + else + SetRectEmpty(RD); + if (IsSelected and ShowEnabled) or Item.Checked or + (csDesigning in Item.ComponentState) then begin + if not(tbisCombo in Item.ItemStyle) then + DrawEdge(Canvas.Handle, RC, EdgeStyles[IsPushed or Item.Checked], BF_RECT) + else begin + DrawEdge(Canvas.Handle, RC, EdgeStyles[(IsPushed and View.FCapture) or Item.Checked], BF_RECT); + if (IsSelected and ShowEnabled) or + (csDesigning in Item.ComponentState) then + DrawEdge(Canvas.Handle, RD, EdgeStyles[IsPushed and not View.FCapture], BF_RECT); + end; + end; + if HasArrow then begin + if not(tbisCombo in Item.ItemStyle) and IsPushed then + OffsetRect(RD, 1, 1); + DrawDropdownArrow(RD, not(tbisCombo in Item.ItemStyle) and + (View.Orientation = tbvoVertical)); + end; + InflateRect(RC, -1, -1); + if Item.Checked and not (IsSelected and ShowEnabled) then begin + Canvas.Brush.Bitmap := GetDitherBitmap; + Canvas.FillRect(RC); + Canvas.Brush.Style := bsClear; + end; + InflateRect(RC, -1, -1); + if Item.Checked or + ((IsSelected and IsPushed) and + (not(tbisCombo in Item.ItemStyle) or View.FCapture)) then + OffsetRect(RC, 1, 1); + if HasArrow and not(tbisCombo in Item.ItemStyle) then begin + if View.Orientation <> tbvoVertical then + Dec(RC.Right, tbDropdownArrowWidth) + else + Dec(RC.Bottom, tbDropdownArrowWidth); + end; + end + else begin + { On selected menu items, fill the background with the selected color. + Note: This assumes the brush color was not changed from the initial + value. } + if IsSelected then begin + R := RC; + if ImageIsShown or Item.Checked then + Inc(R.Left, LeftMargin + tbMenuImageTextSpace); + if (tbisCombo in Item.ItemStyle) and IsSelected and ShowEnabled then + Dec(R.Right, MenuCheckWidth); + Canvas.FillRect(R); + end; + end; + + { Adjust brush & font } + Canvas.Brush.Style := bsClear; + if tboDefault in Item.EffectiveOptions then + with Canvas.Font do Style := Style + [fsBold]; + GetTextMetrics(Canvas.Handle, TextMetrics); + + { Caption } + if CaptionShown then begin + S := GetCaptionText; + R := RC; + DrawTextFlags := GetDrawTextFlags; + if ToolbarStyle then begin + if ImageIsShown then begin + if not IsRotated and not(tboImageAboveCaption in Item.EffectiveOptions) then + Inc(R.Left, ImgList.Width + 1) + else + Inc(R.Top, ImgList.Height + 1); + end; + DrawItemCaption(Canvas, R, S, UseDisabledShadow, + DT_SINGLELINE or DT_CENTER or DT_VCENTER or DrawTextFlags) + end + else begin + Inc(R.Left, LeftMargin + tbMenuImageTextSpace + tbMenuLeftTextMargin); + { Like standard menus, shift the text up one pixel if the text height + is 4 pixels less than the total item height. This is done so underlined + characters aren't displayed too low. } + if (R.Bottom - R.Top) - (TextMetrics.tmHeight + TextMetrics.tmExternalLeading) = tbMenuVerticalMargin then + Dec(R.Bottom); + Inc(R.Top, TextMetrics.tmExternalLeading); + DrawItemCaption(Canvas, R, S, UseDisabledShadow, + DT_SINGLELINE or DT_LEFT or DT_VCENTER or DrawTextFlags); + end; + end; + + { Shortcut and/or submenu arrow (menus only) } + if not ToolbarStyle then begin + S := Item.GetShortCutText; + if S <> '' then begin + R := RC; + R.Left := R.Right - (R.Bottom - R.Top) - GetTextWidth(Canvas.Handle, S, True); + { Like standard menus, shift the text up one pixel if the text height + is 4 pixels less than the total item height. This is done so underlined + characters aren't displayed too low. } + if (R.Bottom - R.Top) - (TextMetrics.tmHeight + TextMetrics.tmExternalLeading) = tbMenuVerticalMargin then + Dec(R.Bottom); + Inc(R.Top, TextMetrics.tmExternalLeading); + DrawItemCaption(Canvas, R, S, UseDisabledShadow, + DT_SINGLELINE or DT_LEFT or DT_VCENTER or DT_NOPREFIX); + end; + if tbisSubmenu in Item.ItemStyle then begin + if tbisCombo in Item.ItemStyle then begin + R := RC; + R.Left := R.Right - MenuCheckWidth; + if IsSelected and ShowEnabled then + DrawEdge(Canvas.Handle, R, BDR_SUNKENOUTER, BF_RECT or BF_MIDDLE) + else begin + Dec(R.Left); + if not IsSelected then + DrawEdge(Canvas.Handle, R, EDGE_ETCHED, BF_LEFT) + else + DrawEdge(Canvas.Handle, R, BDR_SUNKENOUTER, BF_LEFT); + end; + end; + DrawSubmenuArrow; + end; + end; + + { Image, or check box } + if ImageIsShown or (not ToolbarStyle and Item.Checked) then begin + R := RC; + if ToolbarStyle then begin + if not IsRotated and not(tboImageAboveCaption in Item.EffectiveOptions) then + R.Right := R.Left + ImgList.Width + 2 + else + R.Bottom := R.Top + ImgList.Height + 2; + end + else begin + R.Right := R.Left + LeftMargin; + if (IsSelected and ShowEnabled) or Item.Checked then + DrawEdge(Canvas.Handle, R, EdgeStyles[Item.Checked], BF_RECT or BF_MIDDLE); + if Item.Checked and not IsSelected then begin + InflateRect(R, -1, -1); + Canvas.Brush.Bitmap := GetDitherBitmap; + Canvas.FillRect(R); + Canvas.Brush.Style := bsClear; + InflateRect(R, 1, 1); + end; + if Item.Checked then + OffsetRect(R, 1, 1); + end; + if ImageIsShown then begin + X := R.Left + ((R.Right - R.Left) - ImgList.Width) div 2; + Y := R.Top + ((R.Bottom - R.Top) - ImgList.Height) div 2; + if ImgList is TTBCustomImageList then + TTBCustomImageList(ImgList).DrawState(Canvas, X, Y, Item.ImageIndex, + ShowEnabled, IsSelected, Item.Checked) + else + ImgList.Draw(Canvas, X, Y, Item.ImageIndex, ShowEnabled); + end + else + if not ToolbarStyle and Item.Checked then begin + { Draw default check mark or radio button image when user hasn't + specified their own } + X := (R.Left + R.Right) div 2; + Y := (R.Top + R.Bottom) div 2; + if Item.RadioItem then begin + Canvas.Pen.Color := clBtnText; + Canvas.Brush.Color := clBtnText; + Canvas.RoundRect(X-3, Y-3, X+2, Y+2, 2, 2); + Canvas.Pen.Color := clBtnHighlight; + Canvas.Brush.Style := bsClear; + Canvas.RoundRect(X-4, Y-4, X+3, Y+3, 6, 6); + end + else begin + Dec(X, 2); + Inc(Y); + System.Move(CheckMarkPoints, Points, 12 * SizeOf(TPoint)); + for I := Low(Points) to High(Points) do begin + Inc(Points[I].X, X); + Inc(Points[I].Y, Y); + end; + Canvas.Pen.Color := clBtnText; + Polyline(Canvas.Handle, Points[0], 7); + Canvas.Pen.Color := clBtnHighlight; + Polyline(Canvas.Handle, Points[7], 5); + end; + end; + end; +end; + +procedure TTBItemViewer.GetCursor(const Pt: TPoint; var ACursor: HCURSOR); +begin +end; + +function TTBItemViewer.GetIndex: Integer; +begin + Result := View.IndexOf(Self); +end; + +function TTBItemViewer.IsToolbarSize: Boolean; +begin + Result := View.FIsToolbar or (tboToolbarSize in Item.FEffectiveOptions); +end; + +function TTBItemViewer.IsToolbarStyle: Boolean; +begin + Result := View.FIsToolbar or (tboToolbarStyle in Item.FEffectiveOptions); +end; + +function TTBItemViewer.IsPtInButtonPart(X, Y: Integer): Boolean; +var + W: Integer; +begin + Result := not(tbisSubmenu in Item.ItemStyle); + if tbisCombo in Item.ItemStyle then begin + if IsToolbarStyle then + W := tbDropdownComboArrowWidth + else + W := GetSystemMetrics(SM_CXMENUCHECK); + Result := X < (BoundsRect.Right - BoundsRect.Left) - W; + end; +end; + +procedure TTBItemViewer.MouseDown(Shift: TShiftState; X, Y: Integer; + var MouseDownOnMenu: Boolean); + + procedure HandleDefaultDoubleClick(const View: TTBView); + { Looks for a tboDefault item in View and ends the modal loop if it finds + one. } + var + I: Integer; + Viewer: TTBItemViewer; + Item: TTBCustomItem; + begin + for I := 0 to View.FViewerCount-1 do begin + Viewer := View.FViewers[I]; + Item := Viewer.Item; + if (Viewer.Show or Viewer.Clipped) and (tboDefault in Item.EffectiveOptions) and + (tbisSelectable in Item.ItemStyle) and Item.Enabled and Item.Visible then begin + Viewer.Execute(True); + Break; + end; + end; + end; + +var + WasAlreadyOpen: Boolean; +begin + if not Item.Enabled then begin + if (View.FParentView = nil) and not View.FIsPopup then + View.EndModal; + Exit; + end; + if IsPtInButtonPart(X, Y) then begin + if IsToolbarStyle then begin + View.CancelChildPopups; + View.SetCapture; + View.Invalidate(Self); + end; + end + else begin + WasAlreadyOpen := (View.FOpenViewer = Self); + if View.OpenChildPopup(False) then begin + if WasAlreadyOpen and ((View.FParentView = nil) and not View.FIsPopup) then + MouseDownOnMenu := True; + if (ssDouble in Shift) and not(tbisCombo in Item.ItemStyle) then + HandleDefaultDoubleClick(View.FOpenViewerView); + end; + end; +end; + +procedure TTBItemViewer.MouseMove(X, Y: Integer); +begin +end; + +procedure TTBItemViewer.MouseUp(X, Y: Integer; MouseWasDownOnMenu: Boolean); +var + HadCapture, IsToolbarItem: Boolean; +begin + HadCapture := View.FCapture; + View.CancelCapture; + IsToolbarItem := (View.FParentView = nil) and not View.FIsPopup; + if not View.FMouseOverSelected or not Item.Enabled or + (tbisClicksTransparent in Item.ItemStyle) then begin + if IsToolbarItem then + View.EndModal; + Exit; + end; + if (tbisSubmenu in Item.ItemStyle) and not IsPtInButtonPart(X, Y) then begin + if IsToolbarItem and MouseWasDownOnMenu then + View.EndModal; + end + else begin + { it's a 'normal' item } + if not IsToolbarStyle or HadCapture then + Execute(True); + end; +end; + +procedure TTBItemViewer.MouseWheel(WheelDelta, X, Y: Integer); +begin +end; + +procedure TTBItemViewer.LosingCapture; +begin + View.Invalidate(Self); +end; + +procedure TTBItemViewer.Entering(OldSelected: TTBItemViewer); +begin + if Assigned(Item.FOnSelect) then + Item.FOnSelect(Item, Self, True); +end; + +procedure TTBItemViewer.Leaving; +begin + if Assigned(Item.FOnSelect) then + Item.FOnSelect(Item, Self, False); +end; + +procedure TTBItemViewer.KeyDown(var Key: Word; Shift: TShiftState); +begin +end; + +function TTBItemViewer.ScreenToClient(const P: TPoint): TPoint; +begin + Result := View.FWindow.ScreenToClient(P); + Dec(Result.X, BoundsRect.Left); + Dec(Result.Y, BoundsRect.Top); +end; + +function TTBItemViewer.UsesSameWidth: Boolean; +{ If UsesSameWidth returns True, the item viewer's width will be expanded to + match the widest item viewer on the same view whose UsesSameWidth method + also returns True. } +begin + Result := (tboImageAboveCaption in Item.FEffectiveOptions) and + (tboSameWidth in Item.FEffectiveOptions) and IsToolbarSize; +end; + +function TTBItemViewer.DoExecute: Boolean; +{ Low-level 'execute' handler. Returns True if the caller should call + GivePriority on the viewer (normally, if the 'execute' operation was a + success and the modal loop is ending). } +begin + View.EndModalWithClick(Self); + Result := True; +end; + +procedure TTBItemViewer.Execute(AGivePriority: Boolean); +{ Calls DoExecute and, if applicable, View.GivePriority. Note that it is up to + the caller to check the viewer's visibility and enabled state. } +begin + if DoExecute and AGivePriority then + View.GivePriority(Self); +end; + +function TTBItemViewer.GetAccRole: Integer; +{ Returns the MSAA "role" of the viewer. } +const + { Constants from OleAcc.h } + ROLE_SYSTEM_CLIENT = $a; + ROLE_SYSTEM_MENUITEM = $c; + ROLE_SYSTEM_SEPARATOR = $15; + ROLE_SYSTEM_PUSHBUTTON = $2b; + ROLE_SYSTEM_BUTTONMENU = $39; +begin + if Item is TTBControlItem then + Result := ROLE_SYSTEM_CLIENT + else if tbisSeparator in Item.ItemStyle then + Result := ROLE_SYSTEM_SEPARATOR + else if View.IsPopup or (vsMenuBar in View.Style) then + Result := ROLE_SYSTEM_MENUITEM + else if tbisSubmenu in Item.ItemStyle then + Result := ROLE_SYSTEM_BUTTONMENU + else + Result := ROLE_SYSTEM_PUSHBUTTON; +end; + +function TTBItemViewer.GetAccValue(var Value: WideString): Boolean; +{ Gets the MSAA "value" text of the viewer. Returns True if something was + assigned to Value, or False if the viewer does not possess a "value". } +begin + Result := False; +end; + + +{ TTBView } + +constructor TTBView.CreateView(AOwner: TComponent; AParentView: TTBView; + AParentItem: TTBCustomItem; AWindow: TWinControl; + AIsToolbar, ACustomizing, AUsePriorityList: Boolean); +begin + Create(AOwner); + FBackgroundColor := clDefault; + FCustomizing := ACustomizing; + FIsPopup := not AIsToolbar; + FIsToolbar := AIsToolbar; + FNewViewersGetHighestPriority := True; + FParentView := AParentView; + FParentItem := AParentItem; + if Assigned(FParentItem) then begin + //FIsToolbar := FIsToolbar or FParentItem.FDisplayAsToolbar; + FParentItem.RegisterNotification(LinkNotification); + FParentItem.FreeNotification(Self); + end; + FUsePriorityList := AUsePriorityList; + FWindow := AWindow; + UpdateCurParentItem; +end; + +destructor TTBView.Destroy; +begin + CloseChildPopups; + if Assigned(FAccObjectInstance) then begin + FAccObjectInstance.ClientIsDestroying; + { Get rid of our own reference to FAccObjectInstance. Normally the + reference count will be now be zero and FAccObjectInstance will be + freed, unless MSAA still holds a reference. } + FAccObjectInstance._Release; + FAccObjectInstance := nil; + end; + { If parent view is a toolbar, invalidate the open item so that it's + redrawn back in the "up" position } + if Assigned(ParentView) and ParentView.FIsToolbar then begin + Include(ParentView.FState, vsNoAnimation); + if Assigned(ParentView.FOpenViewer) then + ParentView.Invalidate(ParentView.FOpenViewer); + end; + if Assigned(FCurParentItem) then + FCurParentItem.UnregisterNotification(ItemNotification); + if Assigned(FParentItem) then + FParentItem.UnregisterNotification(LinkNotification); + inherited; + FPriorityList.Free; + FreeViewers; + { Now that we're destroyed, "focus" the parent view } + if Assigned(FParentView) then + FParentView.NotifyFocusEvent; +end; + +function TTBView.GetAccObject: IDispatch; +begin + if FAccObjectInstance = nil then begin + if not InitializeOleAcc then begin + Result := nil; + Exit; + end; + FAccObjectInstance := TTBViewAccObject.Create(Self); + { Strictly as an optimization, take a reference for ourself and keep it + for the lifetime of the view. (Destroy calls _Release.) } + FAccObjectInstance._AddRef; + end; + Result := FAccObjectInstance; +end; + +function TTBView.HandleWMGetObject(var Message: TMessage): Boolean; +begin + if (Message.LParam = Integer(OBJID_CLIENT)) and InitializeOleAcc then begin + Message.Result := LresultFromObjectFunc(ITBAccessible, Message.WParam, GetAccObject); + Result := True; + end + else + Result := False; +end; + +procedure TTBView.UpdateCurParentItem; +var + Value: TTBCustomItem; +begin + Value := ItemContainingItems(FParentItem); + if FCurParentItem <> Value then begin + CloseChildPopups; + if Assigned(FCurParentItem) then + FCurParentItem.UnregisterNotification(ItemNotification); + FCurParentItem := Value; + if Assigned(Value) then + Value.RegisterNotification(ItemNotification); + RecreateAllViewers; + if Assigned(Value) and not(csDesigning in Value.ComponentState) then + InitiateActions; + end; +end; + +procedure TTBView.InitiateActions; +var + I: Integer; +begin + { Use a 'while' instead of a 'for' since an InitiateAction implementation + may add/delete items } + I := 0; + while I < FViewerCount do begin + FViewers[I].Item.InitiateAction; + Inc(I); + end; +end; + +procedure TTBView.Notification(AComponent: TComponent; Operation: TOperation); +begin + inherited; + if Operation = opRemove then begin + if AComponent = FParentItem then begin + FParentItem := nil; + UpdateCurParentItem; + if Assigned(FParentView) then + FParentView.CloseChildPopups; + end + else if AComponent = FOpenViewerWindow then begin + FOpenViewerWindow := nil; + FOpenViewerView := nil; + FOpenViewer := nil; + end + else if AComponent = FChevronParentView then + FChevronParentView := nil; + end +end; + +function TTBView.ContainsView(AView: TTBView): Boolean; +begin + while Assigned(AView) and (AView <> Self) do + AView := AView.FParentView; + Result := Assigned(AView); +end; + +function TTBView.GetRootView: TTBView; +begin + Result := Self; + while Assigned(Result.FParentView) do + Result := Result.FParentView; +end; + +function TTBView.GetParentToolbarView: TTBView; +begin + Result := Self; + while Assigned(Result) and not Result.FIsToolbar do + Result := Result.FParentView; +end; + +procedure TTBView.FreeViewers; +var + VI: PTBItemViewerArray; + I, C: Integer; +begin + if Assigned(FViewers) then begin + VI := FViewers; + C := FViewerCount; + FViewers := nil; + FViewerCount := 0; + for I := C-1 downto 0 do + FreeAndNil(VI[I]); + FreeMem(VI); + end; +end; + +procedure TTBView.InvalidatePositions; +begin + if FValidated then begin + FValidated := False; + if Assigned(FWindow) and FWindow.HandleAllocated then + InvalidateRect(FWindow.Handle, nil, True); + end; +end; + +procedure TTBView.ValidatePositions; +begin + if not FValidated then + UpdatePositions; +end; + +procedure TTBView.TryValidatePositions; +begin + if (FUpdating = 0) and + (not Assigned(FParentItem) or not(csLoading in FParentItem.ComponentState)) and + (not Assigned(FParentItem.Owner) or not(csLoading in FParentItem.Owner.ComponentState)) then + ValidatePositions; +end; + +(*procedure TTBView.TryRevalidatePositions; +begin + if FValidated then begin + if FUpdating = 0 then begin + FreePositions; + UpdatePositions; + end + else + InvalidatePositions; + end; +end;*) + +function TTBView.Find(Item: TTBCustomItem): TTBItemViewer; +var + I: Integer; +begin + for I := 0 to FViewerCount-1 do + if FViewers[I].Item = Item then begin + Result := FViewers[I]; + Exit; + end; + raise ETBItemError.Create(STBViewerNotFound); +end; + +function TTBView.IndexOf(AViewer: TTBItemViewer): Integer; +var + I: Integer; +begin + if Assigned(AViewer) then + for I := 0 to FViewerCount-1 do + if FViewers[I] = AViewer then begin + Result := I; + Exit; + end; + Result := -1; +end; + + +procedure TTBView.DeletingViewer(Viewer: TTBItemViewer); +begin + if FSelected = Viewer then + FSelected := nil; + if FOpenViewer = Viewer then + CloseChildPopups; +end; + +procedure TTBView.RecreateItemViewer(const I: Integer); +var + OldViewer, NewViewer: TTBItemViewer; + J: Integer; +begin + OldViewer := FViewers[I]; + DeletingViewer(OldViewer); + NewViewer := OldViewer.Item.GetItemViewerClass(Self).Create(Self, + OldViewer.Item, OldViewer.FGroupLevel); + FViewers[I] := NewViewer; + if Assigned(FPriorityList) then begin + J := FPriorityList.IndexOf(OldViewer); + if J <> -1 then + FPriorityList[J] := NewViewer; + end; + OldViewer.Free; +end; + +function TTBView.InsertItemViewers(const NewIndex: Integer; + const AItem: TTBCustomItem; const AGroupLevel: Integer; + const AddToPriorityList, TopOfPriorityList: Boolean): Integer; +var + NewViewer: TTBItemViewer; + LinkItem: TTBCustomItem; + I: Integer; +begin + if AGroupLevel > MaxGroupLevel then begin + Result := 0; + Exit; + end; + + NewViewer := AItem.GetItemViewerClass(Self).Create(Self, AItem, + AGroupLevel); + InsertIntoViewerArray(FViewers, FViewerCount, NewIndex, + NewViewer); + if AddToPriorityList and FUsePriorityList then begin + if not TopOfPriorityList then + AddToList(FPriorityList, NewViewer) + else + { When new items are inserted programmatically at run-time, place + them at the top of FPriorityList } + AddToFrontOfList(FPriorityList, NewViewer); + end; + Result := 1; + + { If a new group item is being inserted, insert all its child items too } + if not FCustomizing and (tbisEmbeddedGroup in AItem.ItemStyle) then begin + LinkItem := ItemContainingItems(AItem); + for I := 0 to LinkItem.Count-1 do begin + Inc(Result, InsertItemViewers(NewIndex + Result, LinkItem.FItems[I].Item, + AGroupLevel + 1, AddToPriorityList, TopOfPriorityList)); + end; + end; +end; + +procedure TTBView.ItemNotification(Ancestor: TTBCustomItem; Relayed: Boolean; + Action: TTBItemChangedAction; Index: Integer; Item: TTBCustomItem); + + procedure ItemInserted; + var + NewLevel, Start, InsertPoint, Last: Integer; + GroupItem, NextItem: TTBCustomItem; + Found, SearchAgain: Boolean; + begin + InvalidatePositions; + NewLevel := 0; + Start := 0; + if Ancestor = FCurParentItem then + InsertPoint := FViewerCount + else begin + { Ancestor <> FCurParentItem, so apparently an item has been inserted + inside a group item } + repeat + Found := False; + while Start < FViewerCount do begin + GroupItem := FViewers[Start].Item; + if (tbisEmbeddedGroup in GroupItem.ItemStyle) and (GroupItem = Ancestor) then begin + NewLevel := FViewers[Start].FGroupLevel + 1; + Inc(Start); + Found := True; + Break; + end; + Inc(Start); + end; + if not Found then + { Couldn't find Ancestor; it shouldn't get here } + Exit; + InsertPoint := Start; + SearchAgain := False; + while (InsertPoint < FViewerCount) and + (FViewers[InsertPoint].FGroupLevel >= NewLevel) do begin + if (FViewers[InsertPoint].Item = Item) and + (FViewers[InsertPoint].FGroupLevel = NewLevel) then begin + { If the item we were going to insert already exists, then there + must be multiple instances of the same group item. This can + happen when are two group items on the same toolbar each + linking to the same submenu item, with the submenu item + containing a group item of its own, and an item is inserted + inside that. } + SearchAgain := True; + Break; + end; + Inc(InsertPoint); + end; + until not SearchAgain; + end; + if InsertPoint = FViewerCount then begin + { Don't add items after the chevron or MDI buttons item } + Dec(InsertPoint, FInternalViewersAtEnd); + if InsertPoint < 0 then + InsertPoint := 0; { just in case? } + end; + { If the new item wasn't placed at the end, adjust InsertPoint accordingly } + if Index < Item.Parent.Count-1 then begin + Last := InsertPoint; + InsertPoint := Start; + NextItem := Item.Parent.FItems[Index+1].Item; + while (InsertPoint < Last) and + ((FViewers[InsertPoint].Item <> NextItem) or + (FViewers[InsertPoint].FGroupLevel <> NewLevel)) do + Inc(InsertPoint); + end; + InsertItemViewers(InsertPoint, Item, NewLevel, True, + not(csLoading in Item.ComponentState) and FNewViewersGetHighestPriority); + end; + + procedure ItemDeleting; + + procedure DeleteItem(DeleteIndex: Integer); + var + Viewer: TTBItemViewer; + begin + Viewer := FViewers[DeleteIndex]; + DeletingViewer(Viewer); + RemoveFromList(FPriorityList, Viewer); + FreeAndNil(Viewer); + DeleteFromViewerArray(FViewers, FViewerCount, DeleteIndex); + end; + + var + I: Integer; + DeleteLevel: Integer; + begin + InvalidatePositions; + I := 0; + DeleteLevel := 0; + while I < FViewerCount do begin + if DeleteLevel > 0 then begin + if FViewers[I].FGroupLevel >= DeleteLevel then begin + DeleteItem(I); + Continue; + end + else + DeleteLevel := 0; + end; + if FViewers[I].Item = Item then begin + { Delete the item, and any group item children afterward } + DeleteLevel := FViewers[I].FGroupLevel + 1; + DeleteItem(I); + Continue; + end; + Inc(I); + end; + end; + +var + I: Integer; +begin + case Action of + tbicInserted: ItemInserted; + tbicDeleting: ItemDeleting; + tbicSubitemsChanged: begin + { If Relayed=True, LinkSubitems must have changed on a child group + item. Currently there isn't any optimized way of handling this + situation; just recreate all viewers. } + if Relayed then + RecreateAllViewers; + end; + tbicSubitemsBeginUpdate: BeginUpdate; + tbicSubitemsEndUpdate: EndUpdate; + tbicInvalidate: begin + for I := 0 to FViewerCount-1 do + if FViewers[I].Item = Item then + Invalidate(FViewers[I]); + end; + tbicInvalidateAndResize: InvalidatePositions; + tbicRecreateItemViewers: begin + InvalidatePositions; + for I := 0 to FViewerCount-1 do + if FViewers[I].Item = Item then + RecreateItemViewer(I); + end; + tbicSubMenuImagesChanged: ImagesChanged; + else + { Prevent TryValidatePositions from being called below on Actions other than + those listed above. Currently there are no other Actions, but for forward + compatibility, we should ignore unknown Actions completely. } + Exit; + end; + TryValidatePositions; +end; + +procedure TTBView.LinkNotification(Ancestor: TTBCustomItem; Relayed: Boolean; + Action: TTBItemChangedAction; Index: Integer; Item: TTBCustomItem); +{ This notification procedure watches for tbicSubitemsChanged notifications + from FParentItem } +begin + case Action of + tbicSubitemsChanged: begin + { LinkSubitems may have changed on FParentItem, e.g. on the root item + of a toolbar, so see if FCurParentItem needs updating } + UpdateCurParentItem; + end; + tbicSubMenuImagesChanged: begin + { In case the images were inherited from the actual parent instead of + the linked parent... } + if FParentItem <> FCurParentItem then + ImagesChanged; + end; + end; +end; + +procedure TTBView.ImagesChanged; +begin + InvalidatePositions; + TryValidatePositions; + if Assigned(FOpenViewerView) then + FOpenViewerView.ImagesChanged; +end; + +procedure TTBView.GivePriority(AViewer: TTBItemViewer); +{ Move item to top of priority list. Rearranges items if necessary. } +var + I: Integer; +begin + if Assigned(FChevronParentView) then begin + I := AViewer.Index + FChevronParentView.FInternalViewersAtFront; + if I < FChevronParentView.FViewerCount then { range check just in case } + FChevronParentView.GivePriority(FChevronParentView.FViewers[I]); + Exit; + end; + if Assigned(FPriorityList) then begin + I := FPriorityList.IndexOf(AViewer); + if I <> -1 then begin + FPriorityList.Move(I, 0); + if not FValidated or AViewer.OffEdge then + UpdatePositions; + end; + end; + { Call GivePriority on parent view, so that if an item on a submenu is + clicked, the parent item of the submenu gets priority. } + if Assigned(FParentView) and Assigned(FParentView.FOpenViewer) then + FParentView.GivePriority(FParentView.FOpenViewer); +end; + +function TTBView.HighestPriorityViewer: TTBItemViewer; +{ Returns index of first visible, non-separator item at top of priority list, + or -1 if there are no items found } +var + I: Integer; + J: TTBItemViewer; +begin + ValidatePositions; + Result := nil; + if Assigned(FPriorityList) then begin + for I := 0 to FPriorityList.Count-1 do begin + J := FPriorityList[I]; + if J.Show and not(tbisSeparator in J.Item.ItemStyle) then begin + Result := J; + Break; + end; + end; + end + else begin + for I := 0 to FViewerCount-1 do begin + J := FViewers[I]; + if J.Show and not(tbisSeparator in J.Item.ItemStyle) then begin + Result := J; + Break; + end; + end; + end; +end; + +procedure TTBView.StartTimer(const ATimer: TTBViewTimerID; + const Interval: Integer); +{ Starts a timer. Stops any previously set timer of the same ID first. + Note: WM_TIMER messages generated by timers set by the method are handled + in PopupMessageLoop. } +begin + StopTimer(ATimer); + if (FWindow is TTBPopupWindow) and FWindow.HandleAllocated then begin + SetTimer(FWindow.Handle, ViewTimerBaseID + Ord(ATimer), Interval, nil); + Include(FActiveTimers, ATimer); + end; +end; + +procedure TTBView.StopAllTimers; +var + I: TTBViewTimerID; +begin + for I := Low(I) to High(I) do + StopTimer(I); +end; + +procedure TTBView.StopTimer(const ATimer: TTBViewTimerID); +begin + if ATimer in FActiveTimers then begin + if (FWindow is TTBPopupWindow) and FWindow.HandleAllocated then + KillTimer(FWindow.Handle, ViewTimerBaseID + Ord(ATimer)); + Exclude(FActiveTimers, ATimer); + end; +end; + +function TTBView.OpenChildPopup(const SelectFirstItem: Boolean): Boolean; +var + Item: TTBCustomItem; +begin + StopTimer(tiClose); + StopTimer(tiOpen); + if FSelected <> FOpenViewer then begin + CloseChildPopups; + if Assigned(FSelected) then begin + Item := FSelected.Item; + if Item.Enabled and (tbisSubmenu in Item.ItemStyle) then + Item.CreatePopup(Self, FSelected, not FIsToolbar, SelectFirstItem, + False, Point(0, 0), tbpaLeft); + end; + end; + Result := Assigned(FOpenViewer); +end; + +procedure TTBView.CloseChildPopups; +begin + if Assigned(FOpenViewerView) then + FOpenViewerView.CloseChildPopups; + StopTimer(tiClose); + FOpenViewerWindow.Free; + FOpenViewerWindow := nil; + FOpenViewerView := nil; + FOpenViewer := nil; +end; + +procedure TTBView.CancelChildPopups; +begin + if FIsToolbar then + Exclude(FState, vsDropDownMenus); + CloseChildPopups; +end; + +function TTBView.ViewerFromPoint(const P: TPoint): TTBItemViewer; +var + I: Integer; +begin + ValidatePositions; + for I := 0 to FViewerCount-1 do begin + if FViewers[I].Show and + PtInRect(FViewers[I].BoundsRect, P) then begin + Result := FViewers[I]; + Exit; + end; + end; + Result := nil; +end; + +procedure TTBView.NotifyFocusEvent; +{ Notifies Active Accessibility of a change in "focus". Has no effect if the + view or the root view lacks the vsModal state, or if the modal loop is + ending (EndModal* was called). } +var + I, ChildID, J: Integer; +begin + { Note: We don't notify about windows not yet shown (e.g. a popup menu that + is still initializing) because that would probably confuse screen readers. + Also allocating a window handle at this point *might* not be a good idea. } + if (vsModal in FState) and (vsModal in GetRootView.FState) and + not IsModalEnding and + FWindow.HandleAllocated and IsWindowVisible(FWindow.Handle) then begin + if Assigned(FSelected) and FSelected.IsAccessible then + I := IndexOf(FSelected) + else + I := -1; + if (I < 0) and Assigned(FParentView) then begin + { If we have no selected item, report the the selected item on the parent + view as having the "focus". + Note: With standard menus, when you go from having a selection to no + selection on a submenu, it sends two focus events - first with the + client window as having the focus, then with the parent item. I + figure that's probably a bug, so I don't try to emulate that behavior + here. } + FParentView.NotifyFocusEvent; + end + else begin + if I >= 0 then begin + { Convert viewer index into a one-based child index. + (TTBViewAccObject.get_accChild does the inverse.) } + ChildID := 1; + for J := 0 to I-1 do + if FViewers[J].IsAccessible then + Inc(ChildID); + end + else begin + { If there is no (accessible) selection and no parent view, report + the client window itself as being "focused". This is what happens + when a standard context menu has no selection. } + ChildID := CHILDID_SELF; + end; + CallNotifyWinEvent(EVENT_OBJECT_FOCUS, FWindow.Handle, OBJID_CLIENT, ChildID); + end; + end; +end; + +procedure TTBView.SetSelected(Value: TTBItemViewer); +begin + Select(Value, False); +end; + +procedure TTBView.Select(Value: TTBItemViewer; ViaMouse: Boolean); +{ Sets the current selection. + When the selection is changing it will also, if necessary, open/close child + popups. How exactly this works depends on the setting of ViaMouse. If + ViaMouse is True it will delay the opening/closing of popups using timers. } +var + OldSelected: TTBItemViewer; + NewMouseOverSelected: Boolean; + P: TPoint; +begin + OldSelected := FSelected; + if Value <> OldSelected then begin + { If there's a new selection and the parent item on the parent view + isn't currently selected, select it. Also stop any timer running on + the parent view. } + if Assigned(Value) and Assigned(FParentView) and + Assigned(FParentView.FOpenViewer) and + (FParentView.FSelected <> FParentView.FOpenViewer) then begin + FParentView.Selected := FParentView.FOpenViewer; + FParentView.StopTimer(tiClose); + FParentView.StopTimer(tiOpen); + end; + + { Handle automatic closing of child popups } + if vsModal in FState then begin + { If the view is a toolbar, or if the new selection didn't come from + the mouse, close child popups immediately } + if FIsToolbar or not ViaMouse then begin + { Always stop any close timer because CloseChildPopups may not be + called below } + StopTimer(tiClose); + if Value <> FOpenViewer then + { ^ But don't close if selection is returning to the open item. + Needed for the "FParentView.Selected := FParentView.FOpenViewer" + line above to work. } + CloseChildPopups; + end + else begin + { Otherwise, delay-close any child popup } + if Assigned(FOpenViewerView) and not(tiClose in FActiveTimers) then + StartTimer(tiClose, GetMenuShowDelay); + end; + end; + + CancelCapture; + if Assigned(OldSelected) then + OldSelected.Leaving; + FSelected := Value; + FSelectedViaMouse := ViaMouse; + end; + + NewMouseOverSelected := False; + if Assigned(Value) and Assigned(FWindow) then begin + P := SmallPointToPoint(TSmallPoint(GetMessagePos())); + if FindDragTarget(P, True) = FWindow then begin + P := FWindow.ScreenToClient(P); + NewMouseOverSelected := (ViewerFromPoint(P) = Value); + if NewMouseOverSelected and FCapture and + not Value.IsPtInButtonPart(P.X - Value.BoundsRect.Left, + P.Y - Value.BoundsRect.Top) then + NewMouseOverSelected := False; + end; + end; + + if Value <> OldSelected then begin + FMouseOverSelected := NewMouseOverSelected; + if Assigned(OldSelected) and (tbisRedrawOnSelChange in OldSelected.Item.ItemStyle) then + Invalidate(OldSelected); + if Assigned(Value) then begin + if tbisRedrawOnSelChange in Value.Item.ItemStyle then + Invalidate(Value); + Value.Entering(OldSelected); + end; + NotifyFocusEvent; + + { Handle automatic opening of a child popup } + if vsModal in FState then begin + { If the view is a toolbar, immediately open any child popup } + if FIsToolbar then begin + if Assigned(Value) then begin + if ViaMouse and Assigned(FParentView) then begin + { On chevron popups, always drop down menus when mouse passes + over them, like Office 2000 } + Include(FState, vsDropDownMenus); + end; + if (vsDropDownMenus in FState) and + (ViaMouse or not(tbisNoAutoOpen in Value.Item.ItemStyle)) then + OpenChildPopup(not ViaMouse); + end; + end + else begin + { Otherwise, delay-open any child popup if the selection came from + the mouse } + StopTimer(tiOpen); + if ViaMouse and Assigned(Value) and (tbisSubmenu in Value.Item.ItemStyle) then + StartTimer(tiOpen, GetMenuShowDelay); + end; + end; + end + else if FMouseOverSelected <> NewMouseOverSelected then begin + FMouseOverSelected := NewMouseOverSelected; + if Assigned(Value) and FCapture and (tbisRedrawOnMouseOverChange in Value.Item.ItemStyle) then + Invalidate(Value); + end; +end; + +procedure TTBView.UpdateSelection(const P: PPoint; const AllowNewSelection: Boolean); +{ Called in response to a mouse movement, this method updates the current + selection, updates the vsMouseInWindow view state, and enables/disables + scroll timers. } + + function IsPtInScrollArrow(ADownArrow: Boolean): Boolean; + var + P2: TPoint; + R: TRect; + begin + Result := False; + if (vsModal in FState) and (vsMouseInWindow in FState) and + Assigned(P) then begin + P2 := FWindow.ScreenToClient(P^); + R := FWindow.ClientRect; + if PtInRect(R, P2) then begin + if ADownArrow then + Result := FShowDownArrow and (P2.Y >= R.Bottom - tbMenuScrollArrowHeight) + else + Result := FShowUpArrow and (P2.Y < tbMenuScrollArrowHeight); + end; + end; + end; + +var + NewSelected, ViewerAtPoint: TTBItemViewer; + P2: TPoint; + MouseWasInWindow: Boolean; +begin + ValidatePositions; + + { If modal, default to keeping the existing selection } + if vsModal in FState then + NewSelected := FSelected + else + NewSelected := nil; + + { Is the mouse inside the window? } + MouseWasInWindow := vsMouseInWindow in FState; + if Assigned(P) and Assigned(FWindow) and (FindDragTarget(P^, True) = FWindow) then begin + { If we're a popup window and the mouse is inside, default to no selection } + if FIsPopup then + NewSelected := nil; + Include(FState, vsMouseInWindow); + if AllowNewSelection or Assigned(FSelected) then begin + P2 := FWindow.ScreenToClient(P^); + ViewerAtPoint := ViewerFromPoint(P2); + if Assigned(ViewerAtPoint) then + NewSelected := ViewerAtPoint; + end; + end + else + Exclude(FState, vsMouseInWindow); + + { If FCapture is True, don't allow the selection to change } + if FCapture and (NewSelected <> FSelected) then + NewSelected := FSelected; + + { If we're a popup window and there is a selection... } + if FIsPopup and Assigned(NewSelected) then begin + { If the mouse just moved out of the window and no submenu was open, + remove the highlight } + if not FCapture and MouseWasInWindow and not(vsMouseInWindow in FState) and + (not Assigned(FOpenViewerView) or not(tbisSubmenu in NewSelected.Item.ItemStyle)) then + NewSelected := nil; + end; + + { Now we set the new Selected value } + Select(NewSelected, True); + + { Update scroll arrow timers } + if IsPtInScrollArrow(False) then begin + StopTimer(tiScrollDown); + if not(tiScrollUp in FActiveTimers) then + StartTimer(tiScrollUp, 100); + end + else if IsPtInScrollArrow(True) then begin + StopTimer(tiScrollUp); + if not(tiScrollDown in FActiveTimers) then + StartTimer(tiScrollDown, 100); + end + else begin + StopTimer(tiScrollUp); + StopTimer(tiScrollDown); + end; +end; + +procedure TTBView.RecreateAllViewers; +var + Item: TTBCustomItem; + I: Integer; +begin + { Since the FViewers list is being rebuilt, FOpenViewer and FSelected + will no longer be valid, so ensure they're set to nil. } + CloseChildPopups; + Selected := nil; + + InvalidatePositions; + + FreeAndNil(FPriorityList); + FreeViewers; + FInternalViewersAtFront := 0; + FInternalViewersAtEnd := 0; + + { MDI system menu item } + Item := GetMDISystemMenuItem; + if Assigned(Item) then + Inc(FInternalViewersAtFront, InsertItemViewers(FViewerCount, Item, 0, + False, False)); + + { Items } + if Assigned(FCurParentItem) then begin + for I := 0 to FCurParentItem.Count-1 do + InsertItemViewers(FViewerCount, FCurParentItem.FItems[I].Item, 0, + True, False); + end; + + { MDI buttons item } + Item := GetMDIButtonsItem; + if Assigned(Item) then begin + for I := 0 to Item.Count-1 do + Inc(FInternalViewersAtEnd, InsertItemViewers(FViewerCount, + Item.FItems[I].Item, 0, False, False)); + end; + + { Chevron item } + Item := GetChevronItem; + if Assigned(Item) then + Inc(FInternalViewersAtEnd, InsertItemViewers(FViewerCount, Item, 0, + False, False)); +end; + +function TTBView.CalculatePositions(const CanMoveControls: Boolean; + const AOrientation: TTBViewOrientation; + AWrapOffset, AChevronOffset, AChevronSize: Integer; + var ABaseSize, TotalSize: TPoint; + var AWrappedLines: Integer): Boolean; +{ Returns True if the positions have changed } +type + PTempPosition = ^TTempPosition; + TTempPosition = record + BoundsRect: TRect; + Show, OffEdge, LineSep, Clipped, SameWidth: Boolean; + end; + PTempPositionArray = ^TTempPositionArray; + TTempPositionArray = array[0..$7FFFFFFF div SizeOf(TTempPosition)-1] of TTempPosition; +var + DC: HDC; + LeftX, TopY, CurX, CurY, I: Integer; + NewPositions: PTempPositionArray; + GroupSplit, DidWrap: Boolean; + LineStart, HighestHeightOnLine, HighestWidthOnLine: Integer; + + function GetSizeOfGroup(const StartingIndex: Integer): Integer; + var + I: Integer; + begin + Result := 0; + for I := StartingIndex to FViewerCount-1 do begin + if not NewPositions[I].Show then + Continue; + if tbisSeparator in FViewers[I].Item.ItemStyle then + Break; + with NewPositions[I] do begin + if AOrientation <> tbvoVertical then + Inc(Result, BoundsRect.Right) + else + Inc(Result, BoundsRect.Bottom); + end; + end; + end; + + procedure Mirror; + { Reverses the horizontal ordering (i.e. first item becomes last) } + var + I, NewRight: Integer; + begin + for I := 0 to FViewerCount-1 do + with NewPositions[I] do + if Show then begin + NewRight := TotalSize.X - BoundsRect.Left; + BoundsRect.Left := TotalSize.X - BoundsRect.Right; + BoundsRect.Right := NewRight; + end; + end; + + procedure HandleMaxHeight; + { Decreases, if necessary, the height of the view to FMaxHeight, and adjusts + the visibility of the scroll arrows } + var + MaxOffset, I, MaxTop, MaxBottom: Integer; + begin + FShowUpArrow := False; + FShowDownArrow := False; + if (FMaxHeight > 0) and (TotalSize.Y > FMaxHeight) then begin + MaxOffset := TotalSize.Y - FMaxHeight; + if FScrollOffset > MaxOffset then + FScrollOffset := MaxOffset; + if FScrollOffset < 0 then + FScrollOffset := 0; + FShowUpArrow := (FScrollOffset > 0); + FShowDownArrow := (FScrollOffset < MaxOffset); + MaxTop := 0; + if FShowUpArrow then + MaxTop := tbMenuScrollArrowHeight; + MaxBottom := FMaxHeight; + if FShowDownArrow then + Dec(MaxBottom, tbMenuScrollArrowHeight); + for I := 0 to FViewerCount-1 do begin + if not IsRectEmpty(NewPositions[I].BoundsRect) then begin + OffsetRect(NewPositions[I].BoundsRect, 0, -FScrollOffset); + if NewPositions[I].Show and + ((NewPositions[I].BoundsRect.Top < MaxTop) or + (NewPositions[I].BoundsRect.Bottom > MaxBottom)) then begin + NewPositions[I].Show := False; + NewPositions[I].Clipped := True; + end; + end; + end; + TotalSize.Y := FMaxHeight; + end + else + FScrollOffset := 0; + end; + + procedure FinalizeLine(const LineEnd: Integer; const LastLine: Boolean); + var + I, RightAlignStart: Integer; + Item: TTBCustomItem; + IsButton: Boolean; + Pos: PTempPosition; + Z: Integer; + begin + if LineStart <> -1 then begin + if DidWrap and (FChevronParentView = nil) then begin + { When wrapping on a docked toolbar, extend TotalSize.X/Y to + AWrapOffset so that the toolbar always fills the whole row } + if (AOrientation = tbvoHorizontal) and (TotalSize.X < AWrapOffset) then + TotalSize.X := AWrapOffset + else if (AOrientation = tbvoVertical) and (TotalSize.Y < AWrapOffset) then + TotalSize.Y := AWrapOffset; + end; + RightAlignStart := -1; + for I := LineStart to LineEnd do begin + Pos := @NewPositions[I]; + if not Pos.Show then + Continue; + Item := FViewers[I].Item; + if (RightAlignStart < 0) and (tbisRightAlign in Item.ItemStyle) then + RightAlignStart := I; + IsButton := FIsToolbar or (tboToolbarSize in Item.FEffectiveOptions); + if FIsToolbar then begin + if LastLine and not DidWrap and (AOrientation <> tbvoFloating) then begin + { In case the toolbar is docked next to a taller/wider toolbar... } + HighestWidthOnLine := TotalSize.X; + HighestHeightOnLine := TotalSize.Y; + end; + { Make separators on toolbars as tall/wide as the tallest/widest item } + if [tbisSeparator, tbisStretch] * Item.ItemStyle <> [] then begin + if AOrientation <> tbvoVertical then + Pos.BoundsRect.Bottom := Pos.BoundsRect.Top + HighestHeightOnLine + else + Pos.BoundsRect.Right := Pos.BoundsRect.Left + HighestWidthOnLine; + end + else begin + { Center the item } + if AOrientation <> tbvoVertical then begin + Z := (HighestHeightOnLine - (Pos.BoundsRect.Bottom - Pos.BoundsRect.Top)) div 2; + Inc(Pos.BoundsRect.Top, Z); + Inc(Pos.BoundsRect.Bottom, Z); + end + else begin + Z := (HighestWidthOnLine - (Pos.BoundsRect.Right - Pos.BoundsRect.Left)) div 2; + Inc(Pos.BoundsRect.Left, Z); + Inc(Pos.BoundsRect.Right, Z); + end; + end; + end + else begin + { Make items in a menu as wide as the widest item } + if not IsButton then begin + with Pos.BoundsRect do Right := Left + HighestWidthOnLine; + end; + end; + end; + if RightAlignStart >= 0 then begin + Z := 0; + for I := LineEnd downto RightAlignStart do begin + Pos := @NewPositions[I]; + if not Pos.Show then + Continue; + if AOrientation <> tbvoVertical then + Z := Min(AWrapOffset, TotalSize.X) - Pos.BoundsRect.Right + else + Z := Min(AWrapOffset, TotalSize.Y) - Pos.BoundsRect.Bottom; + Break; + end; + if Z > 0 then begin + for I := RightAlignStart to LineEnd do begin + Pos := @NewPositions[I]; + if not Pos.Show then + Continue; + if AOrientation <> tbvoVertical then begin + Inc(Pos.BoundsRect.Left, Z); + Inc(Pos.BoundsRect.Right, Z); + end + else begin + Inc(Pos.BoundsRect.Top, Z); + Inc(Pos.BoundsRect.Bottom, Z); + end; + end; + end; + end; + end; + LineStart := -1; + HighestHeightOnLine := 0; + HighestWidthOnLine := 0; + end; + + procedure PositionItem(const CurIndex: Integer; var Pos: TTempPosition); + var + O, X, Y: Integer; + IsLineSep, Vert: Boolean; + begin + if LineStart = -1 then begin + LineStart := CurIndex; + HighestHeightOnLine := 0; + HighestWidthOnLine := 0; + end; + IsLineSep := False; + Vert := (AOrientation = tbvoVertical); + if not Vert then + O := CurX + else + O := CurY; + if (AWrapOffset > 0) and (O > 0) then begin + if not Vert then + Inc(O, Pos.BoundsRect.Right) + else + Inc(O, Pos.BoundsRect.Bottom); + if (tbisSeparator in FViewers[CurIndex].Item.ItemStyle) and + ((GroupSplit and not(tbisNoLineBreak in FViewers[CurIndex].Item.ItemStyle)) + or (O + GetSizeOfGroup(CurIndex+1) > AWrapOffset)) then begin + DidWrap := True; + Inc(AWrappedLines); + if not Vert then begin + CurX := 0; + Inc(CurY, HighestHeightOnLine); + end + else begin + CurY := 0; + Inc(CurX, HighestWidthOnLine); + end; + FinalizeLine(CurIndex-1, False); + LineStart := CurIndex+1; + if not Vert then begin + Pos.BoundsRect.Right := 0; + Pos.BoundsRect.Bottom := tbLineSpacing; + end + else begin + Pos.BoundsRect.Right := tbLineSpacing; + Pos.BoundsRect.Bottom := 0; + end; + Pos.LineSep := True; + IsLineSep := True; + end + else if O > AWrapOffset then begin + { proceed to next row } + DidWrap := True; + Inc(AWrappedLines); + if not Vert then begin + CurX := LeftX; + Inc(CurY, HighestHeightOnLine); + end + else begin + CurY := TopY; + Inc(CurX, HighestWidthOnLine); + end; + GroupSplit := True; + FinalizeLine(CurIndex-1, False); + LineStart := CurIndex; + end; + end; + if Pos.BoundsRect.Bottom > HighestHeightOnLine then + HighestHeightOnLine := Pos.BoundsRect.Bottom; + if Pos.BoundsRect.Right > HighestWidthOnLine then + HighestWidthOnLine := Pos.BoundsRect.Right; + X := CurX; + Y := CurY; + if X < 0 then X := 0; + if Y < 0 then Y := 0; + OffsetRect(Pos.BoundsRect, X, Y); + if IsLineSep then begin + if not Vert then begin + CurX := LeftX; + Inc(CurY, tbLineSpacing); + end + else begin + CurY := TopY; + Inc(CurX, tbLineSpacing); + end; + GroupSplit := False; + end; + end; + +var + SaveOrientation: TTBViewOrientation; + ChevronItem: TTBCustomItem; + CalcCanvas: TCanvas; + LastWasSep, LastWasButton, IsButton, IsControl: Boolean; + Item: TTBCustomItem; + Ctl: TControl; + ChangedBold: Boolean; + HighestSameWidthViewerWidth, Total, J, TotalVisibleItems: Integer; + IsFirst: Boolean; + Viewer: TTBItemViewer; + UseChevron, NonControlsOffEdge, TempViewerCreated: Boolean; + Margins: TRect; +label 1; +begin + SaveOrientation := FOrientation; + AWrappedLines := 1; + ChevronItem := GetChevronItem; + NewPositions := nil; + DC := 0; + CalcCanvas := nil; + try + FOrientation := AOrientation; + + CalcCanvas := TCanvas.Create; + DC := GetDC(0); + CalcCanvas.Handle := DC; + CalcCanvas.Font.Assign(GetFont); + + NewPositions := AllocMem(FViewerCount * SizeOf(TTempPosition)); + + { Figure out which items should be shown } + LastWasSep := True; { set to True initially so it won't show leading seps } + for I := 0 to FViewerCount-1 do begin + Item := FViewers[I].Item; + IsControl := Item is TTBControlItem; + with NewPositions[I] do begin + { Show is initially False since AllocMem initializes to zero } + if Item = ChevronItem then + Continue; + if Assigned(FChevronParentView) then begin + if IsControl then + Continue; + FChevronParentView.ValidatePositions; + J := I + FChevronParentView.FInternalViewersAtFront; + if J < FChevronParentView.FViewerCount then + { range check just in case } + Viewer := FChevronParentView.FViewers[J] + else + Viewer := nil; + if (Viewer = nil) or (not Viewer.OffEdge and not(tbisSeparator in Item.ItemStyle)) then + Continue; + end; + if not IsControl then begin + if not(tbisEmbeddedGroup in Item.ItemStyle) or FCustomizing then begin + Show := Item.Visible; + { Don't display two consecutive separators } + if Show then begin + if (tbisSeparator in Item.ItemStyle) and LastWasSep then + Show := False; + LastWasSep := tbisSeparator in Item.ItemStyle; + end; + end; + end + else begin + { Controls can only be rendered on a single Parent, so only + include the control if its parent is currently equal to + FWindow } + Ctl := TTBControlItem(Item).FControl; + if Assigned(Ctl) and Assigned(FWindow) and (Ctl.Parent = FWindow) and + (Ctl.Visible or (csDesigning in Ctl.ComponentState)) then begin + Show := True; + LastWasSep := False; + end; + end; + end; + end; + + { Hide any trailing separators, so that they aren't included in the + base size } + for I := FViewerCount-1 downto 0 do begin + with NewPositions[I] do + if Show then begin + if not(tbisSeparator in FViewers[I].Item.ItemStyle) then + Break; + Show := False; + end; + end; + + { Calculate sizes of all the items } + HighestSameWidthViewerWidth := 0; + for I := 0 to FViewerCount-1 do begin + Item := FViewers[I].Item; + IsControl := Item is TTBControlItem; + with NewPositions[I] do begin + { BoundsRect is currently empty since AllocMem initializes to zero } + if not Show then + Continue; + if not IsControl then begin + ChangedBold := False; + if tboDefault in Item.EffectiveOptions then + with CalcCanvas.Font do + if not(fsBold in Style) then begin + ChangedBold := True; + Style := Style + [fsBold]; + end; + Viewer := FViewers[I]; + TempViewerCreated := False; + if Item.NeedToRecreateViewer(Viewer) then begin + if CanMoveControls then begin + RecreateItemViewer(I); + Viewer := FViewers[I]; + end + else begin + Viewer := Item.GetItemViewerClass(Self).Create(Self, Item, 0); + TempViewerCreated := True; + end; + end; + try + Viewer.CalcSize(CalcCanvas, BoundsRect.Right, BoundsRect.Bottom); + if Viewer.UsesSameWidth then begin + SameWidth := True; + if (BoundsRect.Right > HighestSameWidthViewerWidth) then + HighestSameWidthViewerWidth := BoundsRect.Right; + end; + finally + if TempViewerCreated then + Viewer.Free; + end; + if ChangedBold then + with CalcCanvas.Font do + Style := Style - [fsBold]; + end + else begin + Ctl := TTBControlItem(Item).FControl; + BoundsRect.Right := Ctl.Width; + BoundsRect.Bottom := Ctl.Height; + end; + end; + end; + + { Increase widths of SameWidth items if necessary. Also calculate + ABaseSize.X (or Y). } + ABaseSize.X := 0; + ABaseSize.Y := 0; + for I := 0 to FViewerCount-1 do begin + with NewPositions[I] do begin + if SameWidth and (BoundsRect.Right < HighestSameWidthViewerWidth) then + BoundsRect.Right := HighestSameWidthViewerWidth; + if AOrientation <> tbvoVertical then + Inc(ABaseSize.X, BoundsRect.Right) + else + Inc(ABaseSize.Y, BoundsRect.Bottom); + end; + end; + + { Hide partially visible items, mark them as 'OffEdge' } + if AOrientation <> tbvoVertical then + Total := ABaseSize.X + else + Total := ABaseSize.Y; + NonControlsOffEdge := False; + UseChevron := Assigned(ChevronItem) and (AChevronOffset > 0) and + (Total > AChevronOffset); + if UseChevron then begin + Dec(AChevronOffset, AChevronSize); + while Total > AChevronOffset do begin + { Count number of items. Stop loop if <= 1 } + TotalVisibleItems := 0; + for I := FViewerCount-1 downto 0 do begin + if NewPositions[I].Show and not(tbisSeparator in FViewers[I].Item.ItemStyle) then + Inc(TotalVisibleItems); + end; + if TotalVisibleItems <= 1 then + Break; + { Hide any trailing separators } + for I := FViewerCount-1 downto 0 do begin + with NewPositions[I] do + if Show then begin + if not(tbisSeparator in FViewers[I].Item.ItemStyle) then + Break; + Show := False; + if AOrientation <> tbvoVertical then + Dec(Total, BoundsRect.Right) + else + Dec(Total, BoundsRect.Bottom); + goto 1; + end; + end; + { Find an item to hide } + if Assigned(FPriorityList) then + I := FPriorityList.Count-1 + else + I := FViewerCount-1; + while I >= 0 do begin + if Assigned(FPriorityList) then begin + Viewer := FPriorityList[I]; + J := Viewer.Index; + end + else begin + Viewer := FViewers[I]; + J := I; + end; + if NewPositions[J].Show and not(tbisSeparator in Viewer.Item.ItemStyle) then begin + NewPositions[J].Show := False; + NewPositions[J].OffEdge := True; + if AOrientation <> tbvoVertical then + Dec(Total, NewPositions[J].BoundsRect.Right) + else + Dec(Total, NewPositions[J].BoundsRect.Bottom); + if not NonControlsOffEdge and not(Viewer.Item is TTBControlItem) then + NonControlsOffEdge := True; + goto 1; + end; + Dec(I); + end; + Break; { prevent endless loop } + 1: + { Don't show two consecutive separators } + LastWasSep := True; { set to True initially so it won't show leading seps } + for J := 0 to FViewerCount-1 do begin + Item := FViewers[J].Item; + with NewPositions[J] do begin + if Show then begin + if (tbisSeparator in Item.ItemStyle) and LastWasSep then begin + Show := False; + if AOrientation <> tbvoVertical then + Dec(Total, BoundsRect.Right) + else + Dec(Total, BoundsRect.Bottom); + end; + LastWasSep := tbisSeparator in Item.ItemStyle; + end; + end; + end; + end; + end; + + { Hide any trailing separators after items were hidden } + for I := FViewerCount-1 downto 0 do begin + with NewPositions[I] do + if Show then begin + if not(tbisSeparator in FViewers[I].Item.ItemStyle) then + Break; + Show := False; + end; + end; + + { Set the ABaseSize.Y (or X) *after* items were hidden } + for I := 0 to FViewerCount-1 do begin + with NewPositions[I] do + if Show then begin + if AOrientation <> tbvoVertical then begin + if BoundsRect.Bottom > ABaseSize.Y then + ABaseSize.Y := BoundsRect.Bottom; + end + else begin + if BoundsRect.Right > ABaseSize.X then + ABaseSize.X := BoundsRect.Right; + end; + end; + end; + + { On menus, set all non-separator items to be as tall as the tallest item } + {if not FIsToolbar then begin + J := 0; + for I := 0 to FViewerCount-1 do begin + Item := FViewers[I].Item; + with NewPositions[I] do + if Show and not(tbisSeparator in Item.ItemStyle) and + not(tboToolbarSize in Item.FEffectiveOptions) and + (BoundsRect.Bottom - BoundsRect.Top > J) then + J := BoundsRect.Bottom - BoundsRect.Top; + end; + for I := 0 to FViewerCount-1 do begin + Item := FViewers[I].Item; + with NewPositions[I] do + if Show and not(tbisSeparator in Item.ItemStyle) and + not(tboToolbarSize in Item.FEffectiveOptions) then + BoundsRect.Bottom := BoundsRect.Top + J; + end; + end;} + + { Calculate the position of the items } + GetMargins(AOrientation, Margins); + LeftX := Margins.Left; + TopY := Margins.Top; + if AWrapOffset > 0 then begin + Dec(AWrapOffset, Margins.Right); + if AWrapOffset < 1 then AWrapOffset := 1; + end; + CurX := LeftX; + CurY := TopY; + GroupSplit := False; + DidWrap := False; + LastWasButton := FIsToolbar; + LineStart := -1; + for I := 0 to FViewerCount-1 do begin + Item := FViewers[I].Item; + with NewPositions[I] do begin + if not Show then + Continue; + IsButton := FIsToolbar or (tboToolbarSize in Item.FEffectiveOptions); + if LastWasButton and not IsButton then begin + { On a menu, if last item was a button and the current item isn't, + proceed to next row } + CurX := LeftX; + CurY := TotalSize.Y; + end; + LastWasButton := IsButton; + PositionItem(I, NewPositions[I]); + if IsButton and (AOrientation <> tbvoVertical) then + Inc(CurX, BoundsRect.Right - BoundsRect.Left) + else + Inc(CurY, BoundsRect.Bottom - BoundsRect.Top); + if BoundsRect.Right > TotalSize.X then + TotalSize.X := BoundsRect.Right; + if BoundsRect.Bottom > TotalSize.Y then + TotalSize.Y := BoundsRect.Bottom; + end; + end; + if FViewerCount <> 0 then + FinalizeLine(FViewerCount-1, True); + Inc(TotalSize.X, Margins.Right); + Inc(TotalSize.Y, Margins.Bottom); + if AOrientation = tbvoVertical then + Mirror; + HandleMaxHeight; + if CanMoveControls then begin + for I := 0 to FViewerCount-1 do begin + Item := FViewers[I].Item; + if Item is TTBControlItem then begin + if NewPositions[I].Show then begin + Ctl := TTBControlItem(Item).FControl; + if not EqualRect(NewPositions[I].BoundsRect, Ctl.BoundsRect) then + Ctl.BoundsRect := NewPositions[I].BoundsRect; + end + else if NewPositions[I].OffEdge or NewPositions[I].Clipped then begin + { Simulate hiding of OddEdge controls by literally moving them + off the edge. Do the same for Clipped controls. } + Ctl := TTBControlItem(Item).FControl; + Ctl.SetBounds(FWindow.ClientWidth, FWindow.ClientHeight, + Ctl.Width, Ctl.Height); + end; + end; + end; + end; + { Set size of line separators } + if FIsToolbar then + for I := 0 to FViewerCount-1 do begin + Item := FViewers[I].Item; + with NewPositions[I] do + if Show and (tbisSeparator in Item.ItemStyle) and + LineSep then begin + if AOrientation <> tbvoVertical then + BoundsRect.Right := TotalSize.X + else + BoundsRect.Bottom := TotalSize.Y; + end; + end; + + { Position the chevron item } + if UseChevron then begin + if CanMoveControls then + ChevronItem.Enabled := NonControlsOffEdge; + NewPositions[FViewerCount-1].Show := True; + I := AChevronOffset; + if AOrientation <> tbvoVertical then begin + if I < TotalSize.X then + I := TotalSize.X; + NewPositions[FViewerCount-1].BoundsRect := Bounds(I, 0, + AChevronSize, TotalSize.Y); + end + else begin + if I < TotalSize.Y then + I := TotalSize.Y; + NewPositions[FViewerCount-1].BoundsRect := Bounds(0, I, + TotalSize.X, AChevronSize); + end; + end; + + { Commit changes } + Result := False; + if CanMoveControls then begin + for I := 0 to FViewerCount-1 do begin + if not Result and + (not EqualRect(FViewers[I].BoundsRect, NewPositions[I].BoundsRect) or + (FViewers[I].Show <> NewPositions[I].Show) or + (tbisLineSep in FViewers[I].State <> NewPositions[I].LineSep)) then + Result := True; + FViewers[I].FBoundsRect := NewPositions[I].BoundsRect; + FViewers[I].FShow := NewPositions[I].Show; + FViewers[I].FOffEdge := NewPositions[I].OffEdge; + FViewers[I].FClipped := NewPositions[I].Clipped; + if NewPositions[I].LineSep then + Include(FViewers[I].State, tbisLineSep) + else + Exclude(FViewers[I].State, tbisLineSep); + end; + end; + finally + FOrientation := SaveOrientation; + if Assigned(CalcCanvas) then + CalcCanvas.Handle := 0; + if DC <> 0 then ReleaseDC(0, DC); + CalcCanvas.Free; + FreeMem(NewPositions); + end; + if (ABaseSize.X = 0) or (ABaseSize.Y = 0) then begin + { If there are no visible items... } + {}{scale this?} + ABaseSize.X := 23; + ABaseSize.Y := 22; + if TotalSize.X < 23 then TotalSize.X := 23; + if TotalSize.Y < 22 then TotalSize.Y := 22; + end; +end; + +procedure TTBView.DoUpdatePositions(var ASize: TPoint); +{ This is called by UpdatePositions } +var + Bmp: TBitmap; + CtlCanvas: TControlCanvas; + WrappedLines: Integer; +begin + { Don't call InvalidatePositions before CalculatePositions so that + endless recursion doesn't happen if an item's CalcSize uses a method that + calls ValidatePositions } + if not CalculatePositions(True, FOrientation, FWrapOffset, FChevronOffset, + FChevronSize, FBaseSize, ASize, WrappedLines) then begin + { If the new positions are identical to the previous ones, continue using + the previous ones, and don't redraw } + FValidated := True; + { Just because the positions are the same doesn't mean the size hasn't + changed. (If a shrunken toolbar moves between docks, the positions of + the non-OffEdge items may be the same on the new dock as on the old + dock.) } + AutoSize(ASize.X, ASize.Y); + end + else begin + if not(csDesigning in ComponentState) then begin + FValidated := True; + { Need to call ValidateRect before AutoSize, otherwise Windows will + erase the client area during a resize } + if FWindow.HandleAllocated then + ValidateRect(FWindow.Handle, nil); + AutoSize(ASize.X, ASize.Y); + if Assigned(FWindow) and FWindow.HandleAllocated and + IsWindowVisible(FWindow.Handle) and + (FWindow.ClientWidth > 0) and (FWindow.ClientHeight > 0) then begin + CtlCanvas := nil; + Bmp := TBitmap.Create; + try + CtlCanvas := TControlCanvas.Create; + CtlCanvas.Control := FWindow; + Bmp.Width := FWindow.ClientWidth; + Bmp.Height := FWindow.ClientHeight; + + SendMessage(FWindow.Handle, WM_ERASEBKGND, WPARAM(Bmp.Canvas.Handle), 0); + SendMessage(FWindow.Handle, WM_PAINT, WPARAM(Bmp.Canvas.Handle), 0); + BitBlt(CtlCanvas.Handle, 0, 0, Bmp.Width, Bmp.Height, + Bmp.Canvas.Handle, 0, 0, SRCCOPY); + ValidateRect(FWindow.Handle, nil); + finally + CtlCanvas.Free; + Bmp.Free; + end; + end; + end + else begin + { Delphi's handling of canvases is different at design time -- child + controls aren't clipped from a parent control's canvas, so the above + offscreen rendering code doesn't work right at design-time } + InvalidatePositions; + FValidated := True; + AutoSize(ASize.X, ASize.Y); + end; + end; +end; + +function TTBView.UpdatePositions: TPoint; +{ Called whenever the size or orientation of a view changes. When items are + added or removed from the view, InvalidatePositions must be called instead, + otherwise the view may not be redrawn properly. } +begin + Result.X := 0; + Result.Y := 0; + DoUpdatePositions(Result); +end; + +procedure TTBView.AutoSize(AWidth, AHeight: Integer); +begin +end; + +function TTBView.GetChevronItem: TTBCustomItem; +begin + Result := nil; +end; + +procedure TTBView.GetMargins(AOrientation: TTBViewOrientation; + var Margins: TRect); +begin + if AOrientation = tbvoFloating then begin + Margins.Left := 4; + Margins.Top := 2; + Margins.Right := 4; + Margins.Bottom := 1; + end + else begin + Margins.Left := 0; + Margins.Top := 0; + Margins.Right := 0; + Margins.Bottom := 0; + end; +end; + +function TTBView.GetMDIButtonsItem: TTBCustomItem; +begin + Result := nil; +end; + +function TTBView.GetMDISystemMenuItem: TTBCustomItem; +begin + Result := nil; +end; + +function TTBView.GetFont: TFont; +begin + if Assigned(ToolbarFont) then + Result := ToolbarFont + else begin + { ToolbarFont is destroyed during unit finalization, but in rare cases + this method may end up being called from ValidatePositions *after* + unit finalization if Application.Run is never called; see the + "EConvertError" newsgroup thread. We can't return nil because that would + cause an exception in the calling function, so just return the window + font. It's not the *right* font, but it shouldn't matter since the app + is exiting anyway. } + Result := TControlAccess(FWindow).Font; + end; +end; + +procedure TTBView.DrawItem(Viewer: TTBItemViewer; DrawTo: TCanvas; + Offscreen: Boolean); +const + COLOR_MENUHILIGHT = 29; + clMenuHighlight = TColor(COLOR_MENUHILIGHT or $80000000); +var + Bmp: TBitmap; + DrawToDC, BmpDC: HDC; + DrawCanvas: TCanvas; + R1, R2, R3: TRect; + IsOpen, IsSelected, IsPushed: Boolean; + ToolbarStyle: Boolean; + UseDisabledShadow: Boolean; + SaveIndex, SaveIndex2: Integer; + BkColor: TColor; +begin + ValidatePositions; + + if tbisInvalidated in Viewer.State then begin + Offscreen := True; + Exclude(Viewer.State, tbisInvalidated); + end; + + R1 := Viewer.BoundsRect; + if not Viewer.Show or IsRectEmpty(R1) or (Viewer.Item is TTBControlItem) then + Exit; + R2 := R1; + OffsetRect(R2, -R2.Left, -R2.Top); + + IsOpen := FOpenViewer = Viewer; + IsSelected := (FSelected = Viewer); + IsPushed := IsSelected and (IsOpen or (FMouseOverSelected and FCapture)); + ToolbarStyle := Viewer.IsToolbarStyle; + + DrawToDC := DrawTo.Handle; + Bmp := nil; + { Must deselect any currently selected handles before calling SaveDC, because + if they are left selected and DeleteObject gets called on them after the + SaveDC call, it will fail on Win9x/Me, and thus leak GDI resources. } + DrawTo.Refresh; + SaveIndex := SaveDC(DrawToDC); + try + IntersectClipRect(DrawToDC, R1.Left, R1.Top, R1.Right, R1.Bottom); + GetClipBox(DrawToDC, R3); + if IsRectEmpty(R3) then + Exit; + + if not Offscreen then begin + MoveWindowOrg(DrawToDC, R1.Left, R1.Top); + { Tweak the brush origin so that the checked background drawn behind + checked items always looks the same regardless of whether the item + is positioned on an even or odd Left or Top coordinate. } + SetBrushOrgEx(DrawToDC, R1.Left and 1, R1.Top and 1, nil); + DrawCanvas := DrawTo; + end + else begin + Bmp := TBitmap.Create; + Bmp.Width := R2.Right; + Bmp.Height := R2.Bottom; + DrawCanvas := Bmp.Canvas; + BmpDC := DrawCanvas.Handle; + SaveIndex2 := SaveDC(BmpDC); + SetWindowOrgEx(BmpDC, R1.Left, R1.Top, nil); + FWindow.Perform(WM_ERASEBKGND, WPARAM(BmpDC), 0); + RestoreDC(BmpDC, SaveIndex2); + end; + + { Initialize brush } + if not ToolbarStyle and IsSelected then begin + {$IFNDEF TB2K_USE_STRICT_O2K_MENU_STYLE} + if AreFlatMenusEnabled then + { Windows XP uses a different fill color for selected menu items when + flat menus are enabled } + DrawCanvas.Brush.Color := clMenuHighlight + else + {$ENDIF} + DrawCanvas.Brush.Color := clHighlight; + end + else + DrawCanvas.Brush.Style := bsClear; + + { Initialize font } + DrawCanvas.Font.Assign(GetFont); + if Viewer.Item.Enabled then begin + if not ToolbarStyle and IsSelected then + DrawCanvas.Font.Color := clHighlightText + else begin + if ToolbarStyle then + DrawCanvas.Font.Color := clBtnText + else + DrawCanvas.Font.Color := tbMenuTextColor; + end; + UseDisabledShadow := False; + end + else begin + DrawCanvas.Font.Color := clGrayText; + { Use the disabled shadow if either: + 1. The item is a toolbar-style item. + 2. The item is not selected, and the background color equals the + button-face color. + 3. The gray-text color is the same as the background color. + Note: Windows actually uses dithered text in this case. } + BkColor := ColorToRGB(TControlAccess(FWindow).Color); + UseDisabledShadow := ToolbarStyle or + (not IsSelected and (BkColor = ColorToRGB(clBtnFace))) or + (ColorToRGB(clGrayText) = BkColor); + end; + + Viewer.Paint(DrawCanvas, R2, IsSelected, IsPushed, UseDisabledShadow); + + if Offscreen then + BitBlt(DrawToDC, R1.Left, R1.Top, Bmp.Width, Bmp.Height, DrawCanvas.Handle, + 0, 0, SRCCOPY); + finally + DrawTo.Refresh; { must do this before a RestoreDC } + RestoreDC(DrawToDC, SaveIndex); + Bmp.Free; + end; +end; + +procedure TTBView.DrawSubitems(ACanvas: TCanvas); +var + I: Integer; +begin + for I := 0 to FViewerCount-1 do begin + if (vsDrawInOrder in FState) or (FViewers[I] <> FSelected) then + DrawItem(FViewers[I], ACanvas, False); + end; + if not(vsDrawInOrder in FState) and Assigned(FSelected) then + DrawItem(FSelected, ACanvas, False); + + Exclude(FState, vsDrawInOrder); +end; + +procedure TTBView.Invalidate(AViewer: TTBItemViewer); +begin + if not FValidated or not Assigned(FWindow) or not FWindow.HandleAllocated then + Exit; + if AViewer.Show and not IsRectEmpty(AViewer.BoundsRect) and + not(AViewer.Item is TTBControlItem) then begin + Include(AViewer.State, tbisInvalidated); + InvalidateRect(FWindow.Handle, @AViewer.BoundsRect, False); + end; +end; + +procedure TTBView.SetAccelsVisibility(AShowAccels: Boolean); +var + I: Integer; + Viewer: TTBItemViewer; +begin + { Always show accels when keyboard cues are enabled } + AShowAccels := AShowAccels or not(vsUseHiddenAccels in FStyle) or + AreKeyboardCuesEnabled; + if AShowAccels <> (vsShowAccels in FState) then begin + if AShowAccels then + Include(FState, vsShowAccels) + else + Exclude(FState, vsShowAccels); + if Assigned(FWindow) and FWindow.HandleAllocated and + IsWindowVisible(FWindow.Handle) then + { ^ the visibility check is just an optimization } + for I := 0 to FViewerCount-1 do begin + Viewer := FViewers[I]; + if Viewer.CaptionShown and + (FindAccelChar(Viewer.GetCaptionText) <> #0) then + Invalidate(Viewer); + end; + end; +end; + +function TTBView.FirstSelectable: TTBItemViewer; +var + FirstViewer: TTBItemViewer; +begin + Result := NextSelectable(nil, True); + if Assigned(Result) then begin + FirstViewer := Result; + while tbisDontSelectFirst in Result.Item.ItemStyle do begin + Result := NextSelectable(Result, True); + if Result = FirstViewer then + { don't loop endlessly if all items have the tbisDontSelectFirst style } + Break; + end; + end; +end; + +function TTBView.NextSelectable(CurViewer: TTBItemViewer; + GoForward: Boolean): TTBItemViewer; +var + I, J: Integer; +begin + ValidatePositions; + Result := nil; + if FViewerCount = 0 then Exit; + J := -1; + I := IndexOf(CurViewer); + while True do begin + if GoForward then begin + Inc(I); + if I >= FViewerCount then I := 0; + end + else begin + Dec(I); + if I < 0 then I := FViewerCount-1; + end; + if J = -1 then + J := I + else + if I = J then + Exit; + if (FViewers[I].Show or FViewers[I].Clipped) and FViewers[I].Item.Visible and + (tbisSelectable in FViewers[I].Item.ItemStyle) then + Break; + end; + Result := FViewers[I]; +end; + +function TTBView.NextSelectableWithAccel(CurViewer: TTBItemViewer; + Key: Char; RequirePrimaryAccel: Boolean; var IsOnlyItemWithAccel: Boolean): TTBItemViewer; + + function IsAccelItem(const Index: Integer; + const Primary, EnabledItems: Boolean): Boolean; + var + S: String; + LastAccel: Char; + Viewer: TTBItemViewer; + Item: TTBCustomItem; + begin + Result := False; + Viewer := FViewers[Index]; + Item := Viewer.Item; + if (Viewer.Show or Viewer.Clipped) and (tbisSelectable in Item.ItemStyle) and + (Item.Enabled = EnabledItems) and + Item.Visible and Viewer.CaptionShown then begin + S := Viewer.GetCaptionText; + if S <> '' then begin + LastAccel := FindAccelChar(S); + if Primary then begin + if LastAccel <> #0 then + Result := AnsiCompareText(LastAccel, Key) = 0; + end + else + if (LastAccel = #0) and (Key <> ' ') then + Result := AnsiCompareText(S[1], Key) = 0; + end; + end; + end; + + function FindAccel(I: Integer; + const Primary, EnabledItems: Boolean): Integer; + var + J: Integer; + begin + Result := -1; + J := -1; + while True do begin + Inc(I); + if I >= FViewerCount then I := 0; + if J = -1 then + J := I + else + if I = J then + Break; + if IsAccelItem(I, Primary, EnabledItems) then begin + Result := I; + Break; + end; + end; + end; + +var + Start, I: Integer; + Primary, EnabledItems: Boolean; +begin + ValidatePositions; + Result := nil; + IsOnlyItemWithAccel := False; + if FViewerCount = 0 then Exit; + + Start := IndexOf(CurViewer); + for Primary := True downto False do + if not RequirePrimaryAccel or Primary then + for EnabledItems := True downto False do begin + I := FindAccel(Start, Primary, EnabledItems); + if I <> -1 then begin + Result := FViewers[I]; + IsOnlyItemWithAccel := not EnabledItems or + (FindAccel(I, Primary, EnabledItems) = I); + Exit; + end; + end; +end; + +procedure TTBView.EnterToolbarLoop(Options: TTBEnterToolbarLoopOptions); +var + ModalHandler: TTBModalHandler; + P: TPoint; +begin + if vsModal in FState then Exit; + ModalHandler := TTBModalHandler.Create(FWindow.Handle); + try + { remove all states except... } + FState := FState * [vsShowAccels]; + try + Include(FState, vsModal); + { Must ensure that DoneAction is reset to tbdaNone *before* calling + NotifyFocusEvent so that the IsModalEnding call it makes won't return + True } + FDoneActionData.DoneAction := tbdaNone; + { Now that the vsModal state has been added, send an MSAA focus event } + if Assigned(Selected) then + NotifyFocusEvent; + ModalHandler.Loop(Self, tbetMouseDown in Options, + tbetExecuteSelected in Options, tbetFromMSAA in Options, False); + finally + { Remove vsModal state from the root view before any TTBView.Destroy + methods get called (as a result of the CloseChildPopups call below), + so that NotifyFocusEvent becomes a no-op } + Exclude(FState, vsModal); + StopAllTimers; + CloseChildPopups; + GetCursorPos(P); + UpdateSelection(@P, True); + end; + finally + ModalHandler.Free; + end; + SetAccelsVisibility(False); + Selected := nil; + // caused flicker: FWindow.Update; + ProcessDoneAction(FDoneActionData, False); +end; + +procedure TTBView.SetCustomizing(Value: Boolean); +begin + if FCustomizing <> Value then begin + FCustomizing := Value; + RecreateAllViewers; + end; +end; + +procedure TTBView.BeginUpdate; +begin + Inc(FUpdating); +end; + +procedure TTBView.EndUpdate; +begin + Dec(FUpdating); + if FUpdating = 0 then + TryValidatePositions; +end; + +procedure TTBView.GetOffEdgeControlList(const List: TList); +var + I: Integer; + Item: TTBCustomItem; +begin + for I := 0 to FViewerCount-1 do begin + Item := FViewers[I].Item; + if (Item is TTBControlItem) and FViewers[I].OffEdge and + (TTBControlItem(Item).FControl is TWinControl) then + List.Add(TTBControlItem(Item).FControl); + end; +end; + +procedure TTBView.SetCapture; +begin + FCapture := True; +end; + +procedure TTBView.CancelCapture; +begin + if FCapture then begin + FCapture := False; + LastPos.X := Low(LastPos.X); + if Assigned(FSelected) then + FSelected.LosingCapture; + end; +end; + +procedure TTBView.KeyDown(var Key: Word; Shift: TShiftState); + + procedure SelNextItem(const ParentView: TTBView; const GoForward: Boolean); + begin + ParentView.Selected := ParentView.NextSelectable(ParentView.FSelected, + GoForward); + ParentView.ScrollSelectedIntoView; + end; + + procedure HelpKey; + var + V: TTBView; + ContextID: Integer; + begin + ContextID := 0; + V := Self; + while Assigned(V) do begin + if Assigned(V.FSelected) then begin + ContextID := V.FSelected.Item.HelpContext; + if ContextID <> 0 then Break; + end; + V := V.FParentView; + end; + if ContextID <> 0 then + EndModalWithHelp(ContextID); + end; + +var + ParentTBView: TTBView; +begin + ParentTBView := GetParentToolbarView; + case Key of + VK_TAB: begin + SelNextItem(Self, GetKeyState(VK_SHIFT) >= 0); + end; + VK_RETURN: begin + ExecuteSelected(True); + end; + VK_MENU, VK_F10: begin + EndModal; + end; + VK_ESCAPE: begin + Key := 0; + if FParentView = nil then + EndModal + else + FParentView.CancelChildPopups; + end; + VK_LEFT, VK_RIGHT: begin + if (Self = ParentTBView) and (Orientation = tbvoVertical) then + OpenChildPopup(True) + else if Key = VK_LEFT then begin + if Assigned(ParentTBView) and (ParentTBView.Orientation <> tbvoVertical) then begin + if (Self = ParentTBView) or + (FParentView = ParentTBView) then + SelNextItem(ParentTBView, False) + else + FParentView.CloseChildPopups; + end + else begin + if Assigned(FParentView) then + FParentView.CancelChildPopups; + end; + end + else begin + if ((Self = ParentTBView) or not OpenChildPopup(True)) and + (Assigned(ParentTBView) and (ParentTBView.Orientation <> tbvoVertical)) then begin + { If we're on ParentTBView, or if the selected item can't display + a submenu, proceed to next item on ParentTBView } + SelNextItem(ParentTBView, True); + end; + end; + end; + VK_UP, VK_DOWN: begin + if (Self = ParentTBView) and (Orientation <> tbvoVertical) then + OpenChildPopup(True) + else + SelNextItem(Self, Key = VK_DOWN); + end; + VK_HOME, VK_END: begin + Selected := NextSelectable(nil, Key = VK_HOME); + ScrollSelectedIntoView; + end; + VK_F1: HelpKey; + else + Exit; { don't set Key to 0 for unprocessed keys } + end; + Key := 0; +end; + +function TTBView.IsModalEnding: Boolean; +begin + Result := (GetRootView.FDoneActionData.DoneAction <> tbdaNone); +end; + +procedure TTBView.EndModal; +var + RootView: TTBView; +begin + RootView := GetRootView; + RootView.FDoneActionData.DoneAction := tbdaCancel; +end; + +procedure TTBView.EndModalWithClick(AViewer: TTBItemViewer); +var + RootView: TTBView; +begin + RootView := GetRootView; + RootView.FDoneActionData.ClickItem := AViewer.Item; + RootView.FDoneActionData.Sound := AViewer.FView.FIsPopup; + RootView.FDoneActionData.DoneAction := tbdaClickItem; +end; + +procedure TTBView.EndModalWithHelp(AContextID: Integer); +var + RootView: TTBView; +begin + RootView := GetRootView; + RootView.FDoneActionData.ContextID := AContextID; + RootView.FDoneActionData.DoneAction := tbdaHelpContext; +end; + +procedure TTBView.EndModalWithSystemMenu(AWnd: HWND; AKey: Cardinal); +var + RootView: TTBView; +begin + RootView := GetRootView; + RootView.FDoneActionData.Wnd := AWnd; + RootView.FDoneActionData.Key := AKey; + RootView.FDoneActionData.DoneAction := tbdaOpenSystemMenu; +end; + +procedure TTBView.ExecuteSelected(AGivePriority: Boolean); +{ Normally called after an Enter or accelerator key press on the view, this + method 'executes' or opens the selected item. It ends the modal loop, except + when a submenu is opened. } +var + Item: TTBCustomItem; +begin + if Assigned(FSelected) and FSelected.Item.Enabled then begin + Item := FSelected.Item; + if (tbisCombo in Item.ItemStyle) or not OpenChildPopup(True) then begin + if tbisSelectable in Item.ItemStyle then + FSelected.Execute(AGivePriority) + else + EndModal; + end + end + else + EndModal; + Exit; asm db 0,'Toolbar2000 (C) 1998-2005 Jordan Russell',0 end; +end; + +procedure TTBView.Scroll(ADown: Boolean); +var + CurPos, NewPos, I: Integer; +begin + ValidatePositions; + if ADown then begin + NewPos := High(NewPos); + CurPos := FMaxHeight - tbMenuScrollArrowHeight; + for I := 0 to FViewerCount-1 do begin + with FViewers[I] do + if Clipped and not(tbisSeparator in Item.ItemStyle) and + (BoundsRect.Bottom < NewPos) and (BoundsRect.Bottom > CurPos) then + NewPos := BoundsRect.Bottom; + end; + if NewPos = High(NewPos) then + Exit; + Dec(NewPos, FMaxHeight - tbMenuScrollArrowHeight); + end + else begin + NewPos := Low(NewPos); + CurPos := tbMenuScrollArrowHeight; + for I := 0 to FViewerCount-1 do begin + with FViewers[I] do + if Clipped and not(tbisSeparator in Item.ItemStyle) and + (BoundsRect.Top > NewPos) and (BoundsRect.Top < CurPos) then + NewPos := BoundsRect.Top; + end; + if NewPos = Low(NewPos) then + Exit; + Dec(NewPos, tbMenuScrollArrowHeight); + end; + Inc(FScrollOffset, NewPos); + UpdatePositions; +end; + +procedure TTBView.ScrollSelectedIntoView; +begin + ValidatePositions; + if (FSelected = nil) or not FSelected.Clipped then + Exit; + + if FSelected.BoundsRect.Top < tbMenuScrollArrowHeight then begin + Dec(FScrollOffset, tbMenuScrollArrowHeight - FSelected.BoundsRect.Top); + UpdatePositions; + end + else if FSelected.BoundsRect.Bottom > FMaxHeight - tbMenuScrollArrowHeight then begin + Dec(FScrollOffset, (FMaxHeight - tbMenuScrollArrowHeight) - + FSelected.BoundsRect.Bottom); + UpdatePositions; + end; +end; + +procedure TTBView.SetUsePriorityList(Value: Boolean); +begin + if FUsePriorityList <> Value then begin + FUsePriorityList := Value; + RecreateAllViewers; + end; +end; + +function TTBView.GetCaptureWnd: HWND; +begin + Result := GetRootView.FCaptureWnd; +end; + +procedure TTBView.CancelMode; +var + View: TTBView; +begin + EndModal; + + { Hide all parent/child popup windows. Can't actually destroy them using + CloseChildPopups because this method may be called while inside + TTBEditItemViewer's message loop, and it could result in the active + TTBEditItemViewer instance being destroyed (leading to an AV). } + View := Self; + while Assigned(View.FOpenViewerView) do + View := View.FOpenViewerView; + repeat + View.StopAllTimers; + if View.FWindow is TTBPopupWindow then + View.FWindow.Visible := False; + View := View.FParentView; + until View = nil; + + { Note: This doesn't remove the selection from a top-level toolbar item. + Unfortunately, we can't do 'Selected := nil' because it would destroy + child popups and that must'nt happen for the reason stated above. } +end; + +procedure TTBView.SetState(AState: TTBViewState); +begin + FState := AState; +end; + +{ TTBModalHandler } + +const + LSFW_LOCK = 1; + LSFW_UNLOCK = 2; + +var + LockSetForegroundWindowInited: BOOL; + LockSetForegroundWindow: function(uLockCode: UINT): BOOL; stdcall; + +constructor TTBModalHandler.Create(AExistingWnd: HWND); +begin + inherited Create; + if not LockSetForegroundWindowInited then begin + LockSetForegroundWindow := GetProcAddress(GetModuleHandle(user32), + 'LockSetForegroundWindow'); + InterlockedExchange(Integer(LockSetForegroundWindowInited), Ord(True)); + end; + LastPos := SmallPointToPoint(TSmallPoint(GetMessagePos())); + if AExistingWnd <> 0 then + FWnd := AExistingWnd + else begin + FWnd := {$IFDEF JR_D6}Classes.{$ENDIF} AllocateHWnd(WndProc); + FCreatedWnd := True; + end; + if Assigned(LockSetForegroundWindow) then begin + { Like standard menus, don't allow other apps to steal the focus during + our modal loop. This also prevents us from losing activation when + "active window tracking" is enabled and the user moves the mouse over + another application's window. } + LockSetForegroundWindow(LSFW_LOCK); + end; + SetCapture(FWnd); + SetCursor(LoadCursor(0, IDC_ARROW)); + CallNotifyWinEvent(EVENT_SYSTEM_MENUSTART, FWnd, OBJID_CLIENT, CHILDID_SELF); + FInited := True; +end; + +destructor TTBModalHandler.Destroy; +begin + if Assigned(LockSetForegroundWindow) then + LockSetForegroundWindow(LSFW_UNLOCK); + if FWnd <> 0 then begin + if GetCapture = FWnd then + ReleaseCapture; + if FInited then + CallNotifyWinEvent(EVENT_SYSTEM_MENUEND, FWnd, OBJID_CLIENT, CHILDID_SELF); + if FCreatedWnd then + {$IFDEF JR_D6}Classes.{$ENDIF} DeallocateHWnd(FWnd); + end; + inherited; +end; + +procedure TTBModalHandler.WndProc(var Msg: TMessage); +begin + Msg.Result := DefWindowProc(FWnd, Msg.Msg, Msg.WParam, Msg.LParam); + if (Msg.Msg = WM_CANCELMODE) and Assigned(FRootPopup) then begin + try + { We can receive a WM_CANCELMODE message during a modal loop if a dialog + pops up. Respond by hiding menus to make it look like the modal loop + has returned, even though it really hasn't yet. + Note: Similar code in TTBCustomToolbar.WMCancelMode. } + FRootPopup.View.CancelMode; + except + Application.HandleException(Self); + end; + end; +end; + +procedure TTBModalHandler.Loop(const RootView: TTBView; + const AMouseDown, AExecuteSelected, AFromMSAA, TrackRightButton: Boolean); +var + OriginalActiveWindow: HWND; + + function GetActiveView: TTBView; + begin + Result := RootView; + while Assigned(Result.FOpenViewerView) do + Result := Result.FOpenViewerView; + end; + + procedure UpdateAllSelections(const P: TPoint; const AllowNewSelection: Boolean); + var + View, CapView: TTBView; + begin + View := GetActiveView; + + CapView := View; + while Assigned(CapView) and not CapView.FCapture do + CapView := CapView.FParentView; + + while Assigned(View) do begin + if (CapView = nil) or (View = CapView) then + View.UpdateSelection(@P, AllowNewSelection); + View := View.FParentView; + end; + end; + + function GetSelectedViewer(var AView: TTBView; var AViewer: TTBItemViewer): Boolean; + { Returns True if AViewer <> nil. } + var + View: TTBView; + begin + AView := nil; + AViewer := nil; + { Look for a capture item first } + View := RootView; + repeat + if View.FCapture then begin + AView := View; + AViewer := View.FSelected; + Break; + end; + View := View.FOpenViewerView; + until View = nil; + if View = nil then begin + View := RootView; + repeat + if Assigned(View.FSelected) and View.FMouseOverSelected then begin + AView := View; + AViewer := View.FSelected; + Break; + end; + if vsMouseInWindow in View.FState then begin + { ...there is no current selection, but the mouse is still in the + window. This can happen if the mouse is over the non-client area + of the toolbar or popup window, or in an area not containing an + item. } + AView := View; + Break; + end; + View := View.FOpenViewerView; + until View = nil; + end; + Result := Assigned(AViewer); + end; + + function ContinueLoop: Boolean; + begin + { Don't continue if the mouse capture is lost, if a (modeless) top-level + window is shown causing the active window to change, or if EndModal* was + called. } + Result := (GetCapture = FWnd) and (GetActiveWindow = OriginalActiveWindow) + and not RootView.IsModalEnding; + end; + + function SendKeyEvent(const View: TTBView; var Key: Word; + const Shift: TShiftState): Boolean; + begin + Result := True; + if Assigned(View.FSelected) then begin + View.FSelected.KeyDown(Key, Shift); + if RootView.IsModalEnding then + Exit; + end; + if Key <> 0 then begin + View.KeyDown(Key, Shift); + if RootView.IsModalEnding then + Exit; + end; + Result := False; + end; + + procedure DoHintMouseMessage(const Ctl: TControl; const P: TPoint); + var + M: TWMMouseMove; + begin + M.Msg := WM_MOUSEMOVE; + M.Keys := 0; + M.Pos := PointToSmallPoint(P); + Application.HintMouseMessage(Ctl, TMessage(M)); + end; + + procedure MouseMoved; + var + View: TTBView; + Cursor: HCURSOR; + Item: TTBCustomItem; + P: TPoint; + R: TRect; + begin + UpdateAllSelections(LastPos, True); + View := GetActiveView; + Cursor := 0; + if Assigned(View.FSelected) and Assigned(View.FWindow) then begin + Item := View.FSelected.Item; + P := View.FWindow.ScreenToClient(LastPos); + if ((vsAlwaysShowHints in View.FStyle) or + (tboShowHint in Item.FEffectiveOptions)) and not View.FCapture then begin + { Display popup hint for the item. Update is called + first to minimize flicker caused by the hiding & + showing of the hint window. } + View.FWindow.Update; + DoHintMouseMessage(View.FWindow, P); + end + else + Application.CancelHint; + R := View.FSelected.BoundsRect; + Dec(P.X, R.Left); + Dec(P.Y, R.Top); + View.FSelected.GetCursor(P, Cursor); + end + else + Application.CancelHint; + if Cursor = 0 then + Cursor := LoadCursor(0, IDC_ARROW); + SetCursor(Cursor); + end; + + procedure UpdateAppHint; + var + View: TTBView; + begin + View := RootView; + while Assigned(View.FOpenViewerView) and Assigned(View.FOpenViewerView.FSelected) do + View := View.FOpenViewerView; + if Assigned(View.FSelected) then + Application.Hint := GetLongHint(View.FSelected.Item.Hint) + else + Application.Hint := ''; + end; + + procedure HandleTimer(const View: TTBView; const ID: TTBViewTimerID); + begin + case ID of + tiOpen: begin + { Similar to standard menus, always close child popups, even if + Selected = OpenViewer. + Note: CloseChildPopups and OpenChildPopup will stop the tiClose + and tiOpen timers respectively. } + View.CloseChildPopups; + View.OpenChildPopup(False); + end; + tiClose: begin + { Note: CloseChildPopups stops the tiClose timer. } + View.CloseChildPopups; + end; + tiScrollUp: begin + if View.FShowUpArrow then + View.Scroll(False) + else + View.StopTimer(tiScrollUp); + end; + tiScrollDown: begin + if View.FShowDownArrow then + View.Scroll(True) + else + View.StopTimer(tiScrollDown); + end; + end; + end; + +var + MouseDownOnMenu: Boolean; + Msg: TMsg; + P: TPoint; + Ctl: TControl; + View: TTBView; + IsOnlyItemWithAccel: Boolean; + MouseIsDown: Boolean; + Key: Word; + Shift: TShiftState; + Viewer: TTBItemViewer; +begin + FillChar(RootView.FDoneActionData, SizeOf(RootView.FDoneActionData), 0); + RootView.ValidatePositions; + try + try + RootView.FCaptureWnd := FWnd; + MouseDownOnMenu := False; + if AMouseDown then begin + P := RootView.FSelected.ScreenToClient(SmallPointToPoint(TSmallPoint(GetMessagePos()))); + RootView.FSelected.MouseDown([], P.X, P.Y, MouseDownOnMenu); + if RootView.IsModalEnding then + Exit; + MouseDownOnMenu := False; { never set MouseDownOnMenu to True on first click } + end + else if AExecuteSelected then begin + RootView.ExecuteSelected(not AFromMSAA); + if RootView.IsModalEnding then + Exit; + end; + OriginalActiveWindow := GetActiveWindow; + while ContinueLoop do begin + { Examine the next message before popping it out of the queue } + if not PeekMessage(Msg, 0, 0, 0, PM_NOREMOVE) then begin + WaitMessage; + Continue; + end; + case Msg.message of + WM_LBUTTONDOWN, WM_RBUTTONDOWN: begin + P := SmallPointToPoint(TSmallPoint(Msg.lParam)); + Windows.ClientToScreen(Msg.hwnd, P); + Ctl := FindDragTarget(P, True); + { Was the mouse not clicked on a popup, or was it clicked on a + popup that is not a child of RootView? + (The latter can happen when in customization mode, for example, + if the user right-clicks a popup menu being customized and + the context menu is displayed.) } + if not(Ctl is TTBPopupWindow) or + not RootView.ContainsView(TTBPopupWindow(Ctl).View) then begin + { If the root view is a popup, or if the root view is a toolbar + and the user clicked outside the toolbar or in its non-client + area (e.g. on its drag handle), exit } + if RootView.FIsPopup or (Ctl <> RootView.FWindow) or + not PtInRect(RootView.FWindow.ClientRect, RootView.FWindow.ScreenToClient(P)) then + Exit + else + if Msg.message = WM_LBUTTONDOWN then begin + { If the user clicked inside a toolbar on anything but an + item, exit } + UpdateAllSelections(P, True); + if (RootView.FSelected = nil) or not RootView.FMouseOverSelected or + (tbisClicksTransparent in RootView.FSelected.Item.ItemStyle) then + Exit; + end; + end; + end; + end; + { Now pop the message out of the queue } + if not PeekMessage(Msg, 0, Msg.message, Msg.message, PM_REMOVE or PM_NOYIELD) then + Continue; + case Msg.message of + $4D: + { This undocumented message is sent to the focused window when + F1 is pressed. Windows handles it by sending a WM_HELP message + to the same window. We don't want this to happen while a menu + is up, so swallow the message. } + ; + WM_CONTEXTMENU: + { Windows still sends WM_CONTEXTMENU messages for "context menu" + keystrokes even if WM_KEYUP messages are never dispatched, + so it must specifically ignore this message } + ; + WM_KEYFIRST..WM_KEYLAST: begin + Application.CancelHint; + MouseIsDown := (GetKeyState(VK_LBUTTON) < 0) or + (TrackRightButton and (GetKeyState(VK_RBUTTON) < 0)); + case Msg.message of + WM_KEYDOWN, WM_SYSKEYDOWN: + begin + if Msg.wParam = VK_PROCESSKEY then + { Don't let IME process the key } + Msg.wParam := ImmGetVirtualKey(Msg.hwnd); + if not MouseIsDown or (Msg.wParam = VK_F1) then begin + Key := Word(Msg.wParam); + if SendKeyEvent(GetActiveView, Key, + KeyDataToShiftState(Msg.lParam)) then + Exit; + { If it's not handled by a KeyDown method, translate + it into a WM_*CHAR message } + if Key <> 0 then + TranslateMessage(Msg); + end; + end; + WM_CHAR, WM_SYSCHAR: + if not MouseIsDown then begin + View := GetActiveView; + Viewer := View.NextSelectableWithAccel(View.FSelected, + Chr(Msg.WParam), False, IsOnlyItemWithAccel); + if Viewer = nil then begin + if (Msg.WParam in [VK_SPACE, Ord('-')]) and + not RootView.FIsPopup and (View = RootView) and + (GetActiveWindow <> 0) then begin + RootView.EndModalWithSystemMenu(GetActiveWindow, + Msg.WParam); + Exit; + end + else + MessageBeep(0); + end + else begin + View.Selected := Viewer; + View.ScrollSelectedIntoView; + if IsOnlyItemWithAccel then + View.ExecuteSelected(True); + end; + end; + end; + end; + WM_TIMER: + begin + Ctl := FindControl(Msg.hwnd); + if Assigned(Ctl) and (Ctl is TTBPopupWindow) and + (Msg.wParam >= ViewTimerBaseID + Ord(Low(TTBViewTimerID))) and + (Msg.wParam <= ViewTimerBaseID + Ord(High(TTBViewTimerID))) then begin + if Assigned(TTBPopupWindow(Ctl).FView) then + HandleTimer(TTBPopupWindow(Ctl).FView, + TTBViewTimerID(WPARAM(Msg.wParam - ViewTimerBaseID))); + end + else + DispatchMessage(Msg); + end; + $118: ; + { ^ Like standard menus, don't dispatch WM_SYSTIMER messages + (the internal Windows message used for things like caret + blink and list box scrolling). } + WM_MOUSEFIRST..WM_MOUSELAST: + case Msg.message of + WM_MOUSEMOVE: begin + if (Msg.pt.X <> LastPos.X) or (Msg.pt.Y <> LastPos.Y) then begin + LastPos := Msg.pt; + MouseMoved; + end; + if GetSelectedViewer(View, Viewer) then begin + P := Viewer.ScreenToClient(Msg.pt); + Viewer.MouseMove(P.X, P.Y); + end; + end; + WM_MOUSEWHEEL: + if GetSelectedViewer(View, Viewer) then begin + P := Viewer.ScreenToClient(Msg.pt); + Viewer.MouseWheel(Smallint(LongRec(Msg.wParam).Hi), P.X, P.Y); + end; + WM_LBUTTONDOWN, WM_LBUTTONDBLCLK, WM_RBUTTONDOWN: + if (Msg.message <> WM_RBUTTONDOWN) or TrackRightButton then begin + Application.CancelHint; + MouseDownOnMenu := False; + Exclude(RootView.FState, vsIgnoreFirstMouseUp); + UpdateAllSelections(Msg.pt, True); + if GetSelectedViewer(View, Viewer) then begin + if Msg.message <> WM_LBUTTONDBLCLK then + Shift := [] + else + Shift := [ssDouble]; + P := Viewer.ScreenToClient(Msg.pt); + Viewer.MouseDown(Shift, P.X, P.Y, MouseDownOnMenu); + LastPos := SmallPointToPoint(TSmallPoint(GetMessagePos())); + end; + end; + WM_LBUTTONUP, WM_RBUTTONUP: + if (Msg.message = WM_LBUTTONUP) or TrackRightButton then begin + UpdateAllSelections(Msg.pt, False); + { ^ False is used so that when a popup menu is + displayed with the cursor currently inside it, the item + under the cursor won't be accidentally selected when the + user releases the button. The user must move the mouse at + at least one pixel (generating a WM_MOUSEMOVE message), + and then release the button. } + if not GetSelectedViewer(View, Viewer) then begin + { Mouse was not released over any item. Cancel out of the + loop if it's outside all views, or is inside unused + space on a topmost toolbar } + if not Assigned(View) or + ((View = RootView) and RootView.FIsToolbar) then begin + if not(vsIgnoreFirstMouseUp in RootView.FState) then + Exit + else + Exclude(RootView.FState, vsIgnoreFirstMouseUp); + end; + end + else begin + P := Viewer.ScreenToClient(Msg.pt); + Viewer.MouseUp(P.X, P.Y, MouseDownOnMenu); + end; + end; + end; + else + DispatchMessage(Msg); + end; + if not ContinueLoop then + Exit; + if LastPos.X = Low(LastPos.X) then begin + LastPos := SmallPointToPoint(TSmallPoint(GetMessagePos())); + MouseMoved; + end; + UpdateAppHint; + end; + finally + RootView.CancelCapture; + end; + finally + RootView.FCaptureWnd := 0; + Application.Hint := ''; + { Make sure there are no outstanding WM_*CHAR messages } + RemoveMessages(WM_CHAR, WM_DEADCHAR); + RemoveMessages(WM_SYSCHAR, WM_SYSDEADCHAR); + { Nor any outstanding 'send WM_HELP' messages caused by an earlier press + of the F1 key } + RemoveMessages($4D, $4D); + end; +end; + + +{ TTBPopupView } + +procedure TTBPopupView.AutoSize(AWidth, AHeight: Integer); +begin + with TTBPopupWindow(FWindow) do + with GetNCSize do + SetBounds(Left, Top, AWidth + (X * 2), + AHeight + (Y * 2)); +end; + +function TTBPopupView.GetFont: TFont; +begin + Result := (Owner as TTBPopupWindow).Font; +end; + + +{ TTBPopupWindow } + +constructor TTBPopupWindow.CreatePopupWindow(AOwner: TComponent; + const AParentView: TTBView; const AItem: TTBCustomItem; + const ACustomizing: Boolean); +begin + inherited Create(AOwner); + Visible := False; + SetBounds(0, 0, 320, 240); + ControlStyle := ControlStyle - [csCaptureMouse]; + ShowHint := True; + Color := tbMenuBkColor; + FView := GetViewClass.CreateView(Self, AParentView, AItem, Self, False, + ACustomizing, False); + Include(FView.FState, vsModal); + + { Inherit the font from the parent view, or use the system menu font if + there is no parent view } + if Assigned(AParentView) then + Font.Assign(AParentView.GetFont) + else + Font.Assign(ToolbarFont); + + { Inherit the accelerator visibility state from the parent view. If there + is no parent view (i.e. it's a standalone popup menu), then default to + hiding accelerator keys, but change this in CreateWnd if the last input + came from the keyboard. } + if Assigned(AParentView) then begin + if vsUseHiddenAccels in AParentView.FStyle then + Include(FView.FStyle, vsUseHiddenAccels); + if vsShowAccels in AParentView.FState then + Include(FView.FState, vsShowAccels); + end + else + Include(FView.FStyle, vsUseHiddenAccels); + + if Application.Handle <> 0 then + { Use Application.Handle if possible so that the taskbar button for the app + doesn't pop up when a TTBEditItem on a popup menu is focused } + ParentWindow := Application.Handle + else + { When Application.Handle is zero, use GetDesktopWindow() as the parent + window, not zero, otherwise UpdateControlState won't show the window } + ParentWindow := GetDesktopWindow; +end; + +destructor TTBPopupWindow.Destroy; +begin + Destroying; + { Ensure window handle is destroyed *before* FView is freed, since + DestroyWindowHandle calls CallNotifyWinEvent which may result in + FView.HandleWMObject being called } + if HandleAllocated then + DestroyWindowHandle; + FreeAndNil(FView); + inherited; +end; + +procedure TTBPopupWindow.BeforeDestruction; +begin + { The inherited BeforeDestruction method hides the form. We need to close + any child popups first, so that pixels behind the popups are properly + restored without generating a WM_PAINT message. } + if Assigned(FView) then + FView.CloseChildPopups; + inherited; +end; + +function TTBPopupWindow.GetNCSize: TPoint; +begin + Result.X := PopupMenuWindowNCSize; + Result.Y := PopupMenuWindowNCSize; +end; + +function TTBPopupWindow.GetViewClass: TTBViewClass; +begin + Result := TTBPopupView; +end; + +procedure TTBPopupWindow.CreateParams(var Params: TCreateParams); +const + CS_DROPSHADOW = $00020000; +begin + inherited; + with Params do begin + Style := (Style and not (WS_CHILD or WS_GROUP or WS_TABSTOP)) or WS_POPUP; + ExStyle := ExStyle or WS_EX_TOPMOST or WS_EX_TOOLWINDOW; + WindowClass.Style := WindowClass.Style or CS_SAVEBITS; + { Enable drop shadow effect on Windows XP and later } + if IsWindowsXP then + WindowClass.Style := WindowClass.Style or CS_DROPSHADOW; + end; +end; + +procedure TTBPopupWindow.CreateWnd; +const + WM_CHANGEUISTATE = $0127; + WM_QUERYUISTATE = $0129; + UIS_INITIALIZE = 3; + UISF_HIDEACCEL = $2; +var + B: Boolean; +begin + inherited; + { On a top-level popup window, send WM_CHANGEUISTATE & WM_QUERYUISTATE + messages to the window to see if the last input came from the keyboard + and if the accelerator keys should be shown } + if (FView.ParentView = nil) and not FAccelsVisibilitySet then begin + FAccelsVisibilitySet := True; + SendMessage(Handle, WM_CHANGEUISTATE, UIS_INITIALIZE, 0); + B := (SendMessage(Handle, WM_QUERYUISTATE, 0, 0) and UISF_HIDEACCEL = 0); + FView.SetAccelsVisibility(B); + end; +end; + +procedure TTBPopupWindow.DestroyWindowHandle; +begin + { Before destroying the window handle, we must stop any animation, otherwise + the animation thread will use an invalid handle } + TBEndAnimation(WindowHandle); + { Cleanly destroy any timers before the window handle is destroyed } + if Assigned(FView) then + FView.StopAllTimers; + CallNotifyWinEvent(EVENT_SYSTEM_MENUPOPUPEND, WindowHandle, OBJID_CLIENT, + CHILDID_SELF); + inherited; +end; + +procedure TTBPopupWindow.WMGetObject(var Message: TMessage); +begin + if not FView.HandleWMGetObject(Message) then + inherited; +end; + +procedure TTBPopupWindow.CMShowingChanged(var Message: TMessage); +const + ShowFlags: array[Boolean] of UINT = ( + SWP_NOSIZE or SWP_NOMOVE or SWP_NOZORDER or SWP_NOACTIVATE or SWP_HIDEWINDOW, + SWP_NOSIZE or SWP_NOMOVE or SWP_NOZORDER or SWP_NOACTIVATE or SWP_SHOWWINDOW); + SPI_GETMENUFADE = $1012; +var + Animate: BOOL; + Blend: Boolean; +begin + { Must override TCustomForm/TForm's CM_SHOWINGCHANGED handler so that the + form doesn't get activated when Visible is set to True. } + + { Handle animation. NOTE: I do not recommend trying to enable animation on + Windows 95 and NT 4.0 because there's a difference in the way the + SetWindowPos works on those versions. See the comment in the + TBStartAnimation function of TB2Anim.pas. } + {$IFNDEF TB2K_NO_ANIMATION} + if ((FView.ParentView = nil) or not(vsNoAnimation in FView.FParentView.FState)) and + Showing and (FView.Selected = nil) and not IsWindowVisible(WindowHandle) and + SystemParametersInfo(SPI_GETMENUANIMATION, 0, @Animate, 0) and Animate then begin + Blend := SystemParametersInfo(SPI_GETMENUFADE, 0, @Animate, 0) and Animate; + if Blend or (FAnimationDirection <> []) then begin + if SendMessage(WindowHandle, WM_TB2K_POPUPSHOWING, TPS_ANIMSTART, 0) = 0 then + begin + { Start animation only if WM_TB2K_POPUPSHOWING returns zero (or not handled) } + TBStartAnimation(WindowHandle, Blend, FAnimationDirection); + Exit; + end; + end; + end; + {$ENDIF} + + { No animation... } + if not Showing then begin + { Call TBEndAnimation to ensure WS_EX_LAYERED style is removed before + hiding, otherwise windows under the popup window aren't repainted + properly. } + TBEndAnimation(WindowHandle); + end; + SetWindowPos(WindowHandle, 0, 0, 0, 0, 0, ShowFlags[Showing]); + if Showing then SendNotifyMessage(WindowHandle, WM_TB2K_POPUPSHOWING, TPS_NOANIM, 0); +end; + +procedure TTBPopupWindow.WMTB2kAnimationEnded(var Message: TMessage); +begin + SendNotifyMessage(WindowHandle, WM_TB2K_POPUPSHOWING, TPS_ANIMFINISHED, 0); +end; + +procedure TTBPopupWindow.WMTB2kStepAnimation(var Message: TMessage); +begin + TBStepAnimation(Message); +end; + +procedure TTBPopupWindow.WMEraseBkgnd(var Message: TWMEraseBkgnd); +begin + { May be necessary in some cases... } + TBEndAnimation(WindowHandle); + inherited; +end; + +procedure TTBPopupWindow.WMPaint(var Message: TWMPaint); +begin + { Must abort animation when a WM_PAINT message is received } + TBEndAnimation(WindowHandle); + inherited; +end; + +procedure TTBPopupWindow.Paint; +begin + FView.DrawSubitems(Canvas); + PaintScrollArrows; +end; + +procedure TTBPopupWindow.PaintScrollArrows; + + procedure DrawArrow(const R: TRect; ADown: Boolean); + var + X, Y: Integer; + P: array[0..2] of TPoint; + begin + X := (R.Left + R.Right) div 2; + Y := (R.Top + R.Bottom) div 2; + Dec(Y); + P[0].X := X-3; + P[0].Y := Y; + P[1].X := X+3; + P[1].Y := Y; + P[2].X := X; + P[2].Y := Y; + if ADown then + Inc(P[2].Y, 3) + else begin + Inc(P[0].Y, 3); + Inc(P[1].Y, 3); + end; + Canvas.Pen.Color := tbMenuTextColor; + Canvas.Brush.Color := tbMenuTextColor; + Canvas.Polygon(P); + end; + +begin + if FView.FShowUpArrow then + DrawArrow(Rect(0, 0, ClientWidth, tbMenuScrollArrowHeight), False); + if FView.FShowDownArrow then + DrawArrow(Bounds(0, ClientHeight - tbMenuScrollArrowHeight, + ClientWidth, tbMenuScrollArrowHeight), True); +end; + +procedure TTBPopupWindow.WMClose(var Message: TWMClose); +begin + { do nothing -- ignore Alt+F4 keypresses } +end; + +procedure TTBPopupWindow.WMNCCalcSize(var Message: TWMNCCalcSize); +begin + with GetNCSize do + InflateRect(Message.CalcSize_Params^.rgrc[0], -X, -Y); + inherited; +end; + +procedure PopupWindowNCPaintProc(Wnd: HWND; DC: HDC; AppData: Longint); +var + R: TRect; + {$IFNDEF TB2K_USE_STRICT_O2K_MENU_STYLE} + Brush: HBRUSH; + {$ENDIF} +begin + GetWindowRect(Wnd, R); OffsetRect(R, -R.Left, -R.Top); + {$IFNDEF TB2K_USE_STRICT_O2K_MENU_STYLE} + if not AreFlatMenusEnabled then begin + {$ENDIF} + DrawEdge(DC, R, EDGE_RAISED, BF_RECT or BF_ADJUST); + FrameRect(DC, R, GetSysColorBrush(COLOR_BTNFACE)); + {$IFNDEF TB2K_USE_STRICT_O2K_MENU_STYLE} + end + else begin + FrameRect(DC, R, GetSysColorBrush(COLOR_BTNSHADOW)); + Brush := CreateSolidBrush(ColorToRGB(TTBPopupWindow(AppData).Color)); + InflateRect(R, -1, -1); + FrameRect(DC, R, Brush); + InflateRect(R, -1, -1); + FrameRect(DC, R, Brush); + DeleteObject(Brush); + end; + {$ENDIF} +end; + +procedure TTBPopupWindow.WMNCPaint(var Message: TMessage); +var + DC: HDC; +begin + DC := GetWindowDC(Handle); + try + SelectNCUpdateRgn(Handle, DC, HRGN(Message.WParam)); + PopupWindowNCPaintProc(Handle, DC, Longint(Self)); + finally + ReleaseDC(Handle, DC); + end; +end; + +procedure TTBPopupWindow.WMPrint(var Message: TMessage); +begin + HandleWMPrint(Handle, Message, PopupWindowNCPaintProc, Longint(Self)); +end; + +procedure TTBPopupWindow.WMPrintClient(var Message: TMessage); +begin + HandleWMPrintClient(Self, Message); +end; + +procedure TTBPopupWindow.CMHintShow(var Message: TCMHintShow); +begin + with Message.HintInfo^ do begin + HintStr := ''; + if Assigned(FView.Selected) then begin + CursorRect := FView.Selected.BoundsRect; + HintStr := FView.FSelected.GetHintText; + end; + end; +end; + + +{ TTBItemContainer } + +constructor TTBItemContainer.Create(AOwner: TComponent); +begin + inherited; + FItem := TTBRootItem.Create(Self); + FItem.ParentComponent := Self; +end; + +destructor TTBItemContainer.Destroy; +begin + FItem.Free; + inherited; +end; + +function TTBItemContainer.GetItems: TTBCustomItem; +begin + Result := FItem; +end; + +procedure TTBItemContainer.GetChildren(Proc: TGetChildProc; Root: TComponent); +begin + FItem.GetChildren(Proc, Root); +end; + +function TTBItemContainer.GetImages: TCustomImageList; +begin + Result := FItem.SubMenuImages; +end; + +procedure TTBItemContainer.SetImages(Value: TCustomImageList); +begin + FItem.SubMenuImages := Value; +end; + + +{ TTBPopupMenu } + +constructor TTBPopupMenu.Create(AOwner: TComponent); +begin + inherited; + FItem := GetRootItemClass.Create(Self); + FItem.ParentComponent := Self; + FItem.OnClick := RootItemClick; +end; + +destructor TTBPopupMenu.Destroy; +begin + FItem.Free; + inherited; +end; + +function TTBPopupMenu.GetItems: TTBCustomItem; +begin + Result := FItem; +end; + +procedure TTBPopupMenu.GetChildren(Proc: TGetChildProc; Root: TComponent); +begin + FItem.GetChildren(Proc, Root); +end; + +procedure TTBPopupMenu.SetChildOrder(Child: TComponent; Order: Integer); +begin + FItem.SetChildOrder(Child, Order); +end; + +function TTBPopupMenu.GetRootItemClass: TTBRootItemClass; +begin + Result := TTBRootItem; +end; + +function TTBPopupMenu.GetImages: TCustomImageList; +begin + Result := FItem.SubMenuImages; +end; + +function TTBPopupMenu.GetLinkSubitems: TTBCustomItem; +begin + Result := FItem.LinkSubitems; +end; + +function TTBPopupMenu.GetOptions: TTBItemOptions; +begin + Result := FItem.Options; +end; + +procedure TTBPopupMenu.SetImages(Value: TCustomImageList); +begin + FItem.SubMenuImages := Value; +end; + +procedure TTBPopupMenu.SetLinkSubitems(Value: TTBCustomItem); +begin + FItem.LinkSubitems := Value; +end; + +procedure TTBPopupMenu.SetOptions(Value: TTBItemOptions); +begin + FItem.Options := Value; +end; + +procedure TTBPopupMenu.RootItemClick(Sender: TObject); +begin + if Sender = FItem then + Sender := Self; + DoPopup(Sender); +end; + +{$IFNDEF JR_D5} +procedure TTBPopupMenu.DoPopup(Sender: TObject); +begin + if Assigned(OnPopup) then OnPopup(Sender); +end; +{$ENDIF} + +procedure TTBPopupMenu.Popup(X, Y: Integer); +begin + PopupEx(X, Y, False); +end; + +function TTBPopupMenu.PopupEx(X, Y: Integer; + ReturnClickedItemOnly: Boolean = False): TTBCustomItem; +begin + {$IFDEF JR_D5} + {$IFDEF JR_D9} + SetPopupPoint(Point(X, Y)); + {$ELSE} + PPoint(@PopupPoint)^ := Point(X, Y); + {$ENDIF} + {$ENDIF} + Result := FItem.Popup(X, Y, TrackButton = tbRightButton, + TTBPopupAlignment(Alignment), ReturnClickedItemOnly); +end; + +function TTBPopupMenu.IsShortCut(var Message: TWMKey): Boolean; +begin + Result := FItem.IsShortCut(Message); +end; + + +{ TTBImageList } + +constructor TTBCustomImageList.Create(AOwner: TComponent); +begin + inherited; + FCheckedImagesChangeLink := TChangeLink.Create; + FCheckedImagesChangeLink.OnChange := ImageListChanged; + FDisabledImagesChangeLink := TChangeLink.Create; + FDisabledImagesChangeLink.OnChange := ImageListChanged; + FHotImagesChangeLink := TChangeLink.Create; + FHotImagesChangeLink.OnChange := ImageListChanged; + FImagesBitmap := TBitmap.Create; + FImagesBitmap.OnChange := ImagesBitmapChanged; + FImagesBitmapMaskColor := clFuchsia; +end; + +destructor TTBCustomImageList.Destroy; +begin + FreeAndNil(FImagesBitmap); + FreeAndNil(FHotImagesChangeLink); + FreeAndNil(FDisabledImagesChangeLink); + FreeAndNil(FCheckedImagesChangeLink); + inherited; +end; + +procedure TTBCustomImageList.ImagesBitmapChanged(Sender: TObject); +begin + if not ImagesBitmap.Empty then begin + Clear; + AddMasked(ImagesBitmap, FImagesBitmapMaskColor); + end; +end; + +procedure TTBCustomImageList.ImageListChanged(Sender: TObject); +begin + Change; +end; + +procedure TTBCustomImageList.DefineProperties(Filer: TFiler); +type + TProc = procedure(ASelf: TObject; Filer: TFiler); +begin + if (Filer is TReader) or FImagesBitmap.Empty then + inherited + else + { Bypass TCustomImageList.DefineProperties when we've got an ImageBitmap } + TProc(@TComponentAccess.DefineProperties)(Self, Filer); +end; + +procedure TTBCustomImageList.DrawState(Canvas: TCanvas; X, Y, Index: Integer; + Enabled, Selected, Checked: Boolean); +begin + if not Enabled and Assigned(DisabledImages) then + DisabledImages.Draw(Canvas, X, Y, Index) + else if Checked and Assigned(CheckedImages) then + CheckedImages.Draw(Canvas, X, Y, Index, Enabled) + else if Selected and Assigned(HotImages) then + HotImages.Draw(Canvas, X, Y, Index, Enabled) + else + Draw(Canvas, X, Y, Index, Enabled); +end; + +procedure TTBCustomImageList.Notification(AComponent: TComponent; Operation: TOperation); +begin + inherited; + if Operation = opRemove then begin + if AComponent = CheckedImages then CheckedImages := nil; + if AComponent = DisabledImages then DisabledImages := nil; + if AComponent = HotImages then HotImages := nil; + end; +end; + +procedure TTBCustomImageList.ChangeImages(var AImageList: TCustomImageList; + Value: TCustomImageList; AChangeLink: TChangeLink); +begin + if Value = Self then + Value := nil; + if AImageList <> Value then begin + if Assigned(AImageList) then + AImageList.UnregisterChanges(AChangeLink); + AImageList := Value; + if Assigned(Value) then begin + Value.RegisterChanges(AChangeLink); + Value.FreeNotification(Self); + end; + { Don't call Change while loading because it causes the Delphi IDE to + think the form has been modified (?). Also, don't call Change while + destroying since there's no reason to. } + if not(csLoading in ComponentState) and + not(csDestroying in ComponentState) then + Change; + end; +end; + +procedure TTBCustomImageList.SetCheckedImages(Value: TCustomImageList); +begin + ChangeImages(FCheckedImages, Value, FCheckedImagesChangeLink); +end; + +procedure TTBCustomImageList.SetDisabledImages(Value: TCustomImageList); +begin + ChangeImages(FDisabledImages, Value, FDisabledImagesChangeLink); +end; + +procedure TTBCustomImageList.SetHotImages(Value: TCustomImageList); +begin + ChangeImages(FHotImages, Value, FHotImagesChangeLink); +end; + +procedure TTBCustomImageList.SetImagesBitmap(Value: TBitmap); +begin + FImagesBitmap.Assign(Value); +end; + +procedure TTBCustomImageList.SetImagesBitmapMaskColor(Value: TColor); +begin + if FImagesBitmapMaskColor <> Value then begin + FImagesBitmapMaskColor := Value; + ImagesBitmapChanged(nil); + end; +end; + + +{ TTBBaseAccObject } + +{ According to the MSAA docs: + "With Active Accessibility 2.0, servers can return E_NOTIMPL from IDispatch + methods and Active Accessibility will implement the IAccessible interface + for them." + And there was much rejoicing. } + +function TTBBaseAccObject.GetIDsOfNames(const IID: TGUID; Names: Pointer; + NameCount, LocaleID: Integer; DispIDs: Pointer): HResult; +begin + Result := E_NOTIMPL; +end; + +function TTBBaseAccObject.GetTypeInfo(Index, LocaleID: Integer; + out TypeInfo): HResult; +begin + Result := E_NOTIMPL; +end; + +function TTBBaseAccObject.GetTypeInfoCount(out Count: Integer): HResult; +begin + Result := E_NOTIMPL; +end; + +function TTBBaseAccObject.Invoke(DispID: Integer; const IID: TGUID; + LocaleID: Integer; Flags: Word; var Params; VarResult, ExcepInfo, + ArgErr: Pointer): HResult; +begin + Result := E_NOTIMPL; +end; + + +{ Initialization & finalization } + +procedure TBInitToolbarSystemFont; +var + NonClientMetrics: TNonClientMetrics; +begin + NonClientMetrics.cbSize := SizeOf(NonClientMetrics); + if SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @NonClientMetrics, 0) then + ToolbarFont.Handle := CreateFontIndirect(NonClientMetrics.lfMenuFont); +end; + +initialization + ToolbarFont := TFont.Create; + TBInitToolbarSystemFont; +finalization + DestroyClickWnd; + FreeAndNil(ToolbarFont); +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2Item.pas.orig b/official/2.1.6+2.1.beta1/Source/TB2Item.pas.orig new file mode 100644 index 0000000..fb3f179 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2Item.pas.orig @@ -0,0 +1,6813 @@ +unit TB2Item; + +{ + Toolbar2000 + Copyright (C) 1998-2005 by Jordan Russell + All rights reserved. + + The contents of this file are subject to the "Toolbar2000 License"; you may + not use or distribute this file except in compliance with the + "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in + TB2k-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + + Alternatively, the contents of this file may be used under the terms of the + GNU General Public License (the "GPL"), in which case the provisions of the + GPL are applicable instead of those in the "Toolbar2000 License". A copy of + the GPL may be found in GPL-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + If you wish to allow use of your version of this file only under the terms of + the GPL and not to allow others to use your version of this file under the + "Toolbar2000 License", indicate your decision by deleting the provisions + above and replace them with the notice and other provisions required by the + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + + $jrsoftware: tb2k/Source/TB2Item.pas,v 1.277 2005/06/23 21:55:44 jr Exp $ +} + +interface + +{$I TB2Ver.inc} +{x$DEFINE TB2K_NO_ANIMATION} + { Enabling the above define disables all menu animation. For debugging + purpose only. } +{x$DEFINE TB2K_USE_STRICT_O2K_MENU_STYLE} + { Enabling the above define forces it to use clBtnFace for the menu color + instead of clMenu, and disables the use of flat menu borders on Windows + XP with themes enabled. } + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + StdCtrls, CommCtrl, Menus, ActnList, ImgList, TB2Anim; + +type + TTBCustomItem = class; + TTBCustomItemClass = class of TTBCustomItem; + TTBCustomItemActionLink = class; + TTBCustomItemActionLinkClass = class of TTBCustomItemActionLink; + TTBItemViewer = class; + TTBItemViewerClass = class of TTBItemViewer; + TTBPopupWindow = class; + TTBPopupWindowClass = class of TTBPopupWindow; + TTBView = class; + + TTBDoneAction = (tbdaNone, tbdaCancel, tbdaClickItem, tbdaOpenSystemMenu, + tbdaHelpContext); + PTBDoneActionData = ^TTBDoneActionData; + TTBDoneActionData = record + DoneAction: TTBDoneAction; + case TTBDoneAction of + tbdaClickItem: (ClickItem: TTBCustomItem; Sound: Boolean); + tbdaOpenSystemMenu: (Wnd: HWND; Key: Cardinal); + tbdaHelpContext: (ContextID: Integer); + end; + TTBInsertItemProc = procedure(AParent: TComponent; AItem: TTBCustomItem) of object; + TTBItemChangedAction = (tbicInserted, tbicDeleting, tbicSubitemsChanged, + tbicSubitemsBeginUpdate, tbicSubitemsEndUpdate, tbicInvalidate, + tbicInvalidateAndResize, tbicRecreateItemViewers, tbicNameChanged, + tbicSubMenuImagesChanged); + TTBItemChangedProc = procedure(Sender: TTBCustomItem; Relayed: Boolean; + Action: TTBItemChangedAction; Index: Integer; Item: TTBCustomItem) of object; + TTBItemData = record + Item: TTBCustomItem; + end; + PTBItemDataArray = ^TTBItemDataArray; + TTBItemDataArray = array[0..$7FFFFFFF div SizeOf(TTBItemData)-1] of TTBItemData; + TTBItemDisplayMode = (nbdmDefault, nbdmTextOnly, nbdmTextOnlyInMenus, nbdmImageAndText); + TTBItemOption = (tboDefault, tboDropdownArrow, tboImageAboveCaption, + tboLongHintInMenuOnly, tboNoAutoHint, tboNoRotation, tboSameWidth, + tboShowHint, tboToolbarStyle, tboToolbarSize); + TTBItemOptions = set of TTBItemOption; + TTBItemStyle = set of (tbisSubmenu, tbisSelectable, tbisSeparator, + tbisEmbeddedGroup, tbisClicksTransparent, tbisCombo, tbisNoAutoOpen, + tbisSubitemsEditable, tbisNoLineBreak, tbisRightAlign, tbisDontSelectFirst, + tbisRedrawOnSelChange, tbisRedrawOnMouseOverChange); + TTBPopupAlignment = (tbpaLeft, tbpaRight, tbpaCenter); + TTBPopupEvent = procedure(Sender: TTBCustomItem; FromLink: Boolean) of object; + TTBSelectEvent = procedure(Sender: TTBCustomItem; Viewer: TTBItemViewer; + Selecting: Boolean) of object; + + ETBItemError = class(Exception); + + TTBImageChangeLink = class(TChangeLink) + private + FLastWidth, FLastHeight: Integer; + end; + {$IFNDEF JR_D5} + TImageIndex = type Integer; + {$ENDIF} + + TTBCustomItem = class(TComponent) + private + FActionLink: TTBCustomItemActionLink; + FAutoCheck: Boolean; + FCaption: String; + FChecked: Boolean; + FDisplayMode: TTBItemDisplayMode; + FEnabled: Boolean; + FEffectiveOptions: TTBItemOptions; + FGroupIndex: Integer; + FHelpContext: THelpContext; + FHint: String; + FImageIndex: TImageIndex; + FImages: TCustomImageList; + FImagesChangeLink: TTBImageChangeLink; + FItems: PTBItemDataArray; + FItemCount: Integer; + FItemStyle: TTBItemStyle; + FLinkParents: TList; + FMaskOptions: TTBItemOptions; + FOptions: TTBItemOptions; + FInheritOptions: Boolean; + FNotifyList: TList; + FOnClick: TNotifyEvent; + FOnPopup: TTBPopupEvent; + FOnSelect: TTBSelectEvent; + FParent: TTBCustomItem; + FParentComponent: TComponent; + FRadioItem: Boolean; + FShortCut: TShortCut; + FSubMenuImages: TCustomImageList; + FSubMenuImagesChangeLink: TTBImageChangeLink; + FLinkSubitems: TTBCustomItem; + FVisible: Boolean; + + procedure DoActionChange(Sender: TObject); + function ChangeImages(var AImages: TCustomImageList; + const Value: TCustomImageList; var AChangeLink: TTBImageChangeLink): Boolean; + class procedure ClickWndProc(var Message: TMessage); + function FindItemWithShortCut(AShortCut: TShortCut; + var ATopmostParent: TTBCustomItem): TTBCustomItem; + function FixOptions(const AOptions: TTBItemOptions): TTBItemOptions; + function GetAction: TBasicAction; + function GetItem(Index: Integer): TTBCustomItem; + procedure ImageListChangeHandler(Sender: TObject); + procedure InternalNotify(Ancestor: TTBCustomItem; NestingLevel: Integer; + Action: TTBItemChangedAction; Index: Integer; Item: TTBCustomItem); + {$IFDEF JR_D6} + function IsAutoCheckStored: Boolean; + {$ENDIF} + function IsCaptionStored: Boolean; + function IsCheckedStored: Boolean; + function IsEnabledStored: Boolean; + function IsHelpContextStored: Boolean; + function IsHintStored: Boolean; + function IsImageIndexStored: Boolean; + function IsOnClickStored: Boolean; + function IsShortCutStored: Boolean; + function IsVisibleStored: Boolean; + procedure Notify(Action: TTBItemChangedAction; Index: Integer; Item: TTBCustomItem); + procedure RefreshOptions; + procedure SetAction(Value: TBasicAction); + procedure SetCaption(Value: String); + procedure SetChecked(Value: Boolean); + procedure SetDisplayMode(Value: TTBItemDisplayMode); + procedure SetEnabled(Value: Boolean); + procedure SetGroupIndex(Value: Integer); + procedure SetImageIndex(Value: TImageIndex); + procedure SetImages(Value: TCustomImageList); + procedure SetInheritOptions(Value: Boolean); + procedure SetLinkSubitems(Value: TTBCustomItem); + procedure SetMaskOptions(Value: TTBItemOptions); + procedure SetOptions(Value: TTBItemOptions); + procedure SetRadioItem(Value: Boolean); + procedure SetSubMenuImages(Value: TCustomImageList); + procedure SetVisible(Value: Boolean); + procedure SubMenuImagesChanged; + procedure TurnSiblingsOff; + protected + procedure ActionChange(Sender: TObject; CheckDefaults: Boolean); dynamic; + procedure Change(NeedResize: Boolean); virtual; + function CreatePopup(const ParentView: TTBView; const ParentViewer: TTBItemViewer; + const PositionAsSubmenu, SelectFirstItem, Customizing: Boolean; + const APopupPoint: TPoint; const Alignment: TTBPopupAlignment): TTBPopupWindow; virtual; + procedure DoPopup(Sender: TTBCustomItem; FromLink: Boolean); virtual; + procedure EnabledChanged; virtual; + function GetActionLinkClass: TTBCustomItemActionLinkClass; dynamic; + function GetChevronParentView: TTBView; virtual; + procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; virtual; + function GetPopupWindowClass: TTBPopupWindowClass; virtual; + procedure IndexError; + procedure Loaded; override; + function NeedToRecreateViewer(AViewer: TTBItemViewer): Boolean; virtual; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + function OpenPopup(const SelectFirstItem, TrackRightButton: Boolean; + const PopupPoint: TPoint; const Alignment: TTBPopupAlignment; + const ReturnClickedItemOnly: Boolean): TTBCustomItem; + procedure RecreateItemViewers; + procedure SetChildOrder(Child: TComponent; Order: Integer); override; + procedure SetName(const NewName: TComponentName); override; + procedure SetParentComponent(Value: TComponent); override; + + property ActionLink: TTBCustomItemActionLink read FActionLink write FActionLink; + property ItemStyle: TTBItemStyle read FItemStyle write FItemStyle; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function HasParent: Boolean; override; + function GetParentComponent: TComponent; override; + + procedure Add(AItem: TTBCustomItem); + procedure Clear; + procedure Click; virtual; + function ContainsItem(AItem: TTBCustomItem): Boolean; + procedure Delete(Index: Integer); + function GetShortCutText: String; + function IndexOf(AItem: TTBCustomItem): Integer; + procedure InitiateAction; virtual; + procedure Insert(NewIndex: Integer; AItem: TTBCustomItem); + function IsShortCut(var Message: TWMKey): Boolean; + procedure Move(CurIndex, NewIndex: Integer); + function Popup(X, Y: Integer; TrackRightButton: Boolean; + Alignment: TTBPopupAlignment = tbpaLeft; + ReturnClickedItemOnly: Boolean = False): TTBCustomItem; + procedure PostClick; + procedure RegisterNotification(ANotify: TTBItemChangedProc); + procedure Remove(Item: TTBCustomItem); + procedure UnregisterNotification(ANotify: TTBItemChangedProc); + procedure ViewBeginUpdate; + procedure ViewEndUpdate; + + property Action: TBasicAction read GetAction write SetAction; + property AutoCheck: Boolean read FAutoCheck write FAutoCheck {$IFDEF JR_D6} stored IsAutoCheckStored {$ENDIF} default False; + property Caption: String read FCaption write SetCaption stored IsCaptionStored; + property Count: Integer read FItemCount; + property Checked: Boolean read FChecked write SetChecked stored IsCheckedStored default False; + property DisplayMode: TTBItemDisplayMode read FDisplayMode write SetDisplayMode default nbdmDefault; + property EffectiveOptions: TTBItemOptions read FEffectiveOptions; + property Enabled: Boolean read FEnabled write SetEnabled stored IsEnabledStored default True; + property GroupIndex: Integer read FGroupIndex write SetGroupIndex default 0; + property HelpContext: THelpContext read FHelpContext write FHelpContext stored IsHelpContextStored default 0; + property Hint: String read FHint write FHint stored IsHintStored; + property ImageIndex: TImageIndex read FImageIndex write SetImageIndex stored IsImageIndexStored default -1; + property Images: TCustomImageList read FImages write SetImages; + property InheritOptions: Boolean read FInheritOptions write SetInheritOptions default True; + property Items[Index: Integer]: TTBCustomItem read GetItem; default; + property LinkSubitems: TTBCustomItem read FLinkSubitems write SetLinkSubitems; + property MaskOptions: TTBItemOptions read FMaskOptions write SetMaskOptions default []; + property Options: TTBItemOptions read FOptions write SetOptions default []; + property Parent: TTBCustomItem read FParent; + property ParentComponent: TComponent read FParentComponent write FParentComponent; + property RadioItem: Boolean read FRadioItem write SetRadioItem default False; + property ShortCut: TShortCut read FShortCut write FShortCut stored IsShortCutStored default 0; + property SubMenuImages: TCustomImageList read FSubMenuImages write SetSubMenuImages; + property Visible: Boolean read FVisible write SetVisible stored IsVisibleStored default True; + property OnClick: TNotifyEvent read FOnClick write FOnClick stored IsOnClickStored; + property OnPopup: TTBPopupEvent read FOnPopup write FOnPopup; + property OnSelect: TTBSelectEvent read FOnSelect write FOnSelect; + end; + + TTBCustomItemActionLink = class(TActionLink) + protected + FClient: TTBCustomItem; + procedure AssignClient(AClient: TObject); override; + {$IFDEF JR_D6} + function IsAutoCheckLinked: Boolean; virtual; + {$ENDIF} + function IsCaptionLinked: Boolean; override; + function IsCheckedLinked: Boolean; override; + function IsEnabledLinked: Boolean; override; + function IsHelpContextLinked: Boolean; override; + function IsHintLinked: Boolean; override; + function IsImageIndexLinked: Boolean; override; + function IsShortCutLinked: Boolean; override; + function IsVisibleLinked: Boolean; override; + function IsOnExecuteLinked: Boolean; override; + {$IFDEF JR_D6} + procedure SetAutoCheck(Value: Boolean); override; + {$ENDIF} + procedure SetCaption(const Value: String); override; + procedure SetChecked(Value: Boolean); override; + procedure SetEnabled(Value: Boolean); override; + procedure SetHelpContext(Value: THelpContext); override; + procedure SetHint(const Value: String); override; + procedure SetImageIndex(Value: Integer); override; + procedure SetShortCut(Value: TShortCut); override; + procedure SetVisible(Value: Boolean); override; + procedure SetOnExecute(Value: TNotifyEvent); override; + end; + + TTBBaseAccObject = class(TInterfacedObject, IDispatch) + public + procedure ClientIsDestroying; virtual; abstract; + { IDispatch } + function GetTypeInfoCount(out Count: Integer): HResult; stdcall; + function GetTypeInfo(Index, LocaleID: Integer; out TypeInfo): HResult; stdcall; + function GetIDsOfNames(const IID: TGUID; Names: Pointer; + NameCount, LocaleID: Integer; DispIDs: Pointer): HResult; stdcall; + function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; + Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall; + end; + + TTBItemViewer = class + private + FBoundsRect: TRect; + FClipped: Boolean; + FGroupLevel: Integer; + FItem: TTBCustomItem; + FOffEdge: Boolean; + FShow: Boolean; + FView: TTBView; + procedure AccSelect(const AExecute: Boolean); + function GetIndex: Integer; + protected + FAccObjectInstance: TTBBaseAccObject; + procedure CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); + virtual; + function CaptionShown: Boolean; dynamic; + function DoExecute: Boolean; virtual; + procedure DrawItemCaption(const Canvas: TCanvas; ARect: TRect; + const ACaption: String; ADrawDisabledShadow: Boolean; AFormat: UINT); virtual; + procedure Entering; virtual; + function GetAccRole: Integer; virtual; + function GetAccValue(var Value: WideString): Boolean; virtual; + function GetCaptionText: String; virtual; + procedure GetCursor(const Pt: TPoint; var ACursor: HCURSOR); virtual; + function GetImageList: TCustomImageList; + function ImageShown: Boolean; + function IsRotated: Boolean; + function IsToolbarSize: Boolean; + function IsPtInButtonPart(X, Y: Integer): Boolean; virtual; + procedure KeyDown(var Key: Word; Shift: TShiftState); virtual; + procedure Leaving; virtual; + procedure LosingCapture; virtual; + procedure MouseDown(Shift: TShiftState; X, Y: Integer; + var MouseDownOnMenu: Boolean); virtual; + procedure MouseMove(X, Y: Integer); virtual; + procedure MouseUp(X, Y: Integer; MouseWasDownOnMenu: Boolean); virtual; + procedure MouseWheel(WheelDelta: Integer; X, Y: Integer); virtual; + procedure Paint(const Canvas: TCanvas; const ClientAreaRect: TRect; + IsSelected, IsPushed, UseDisabledShadow: Boolean); virtual; + procedure PostAccSelect(const AExecute: Boolean); + function UsesSameWidth: Boolean; virtual; + public + State: set of (tbisInvalidated, tbisLineSep); + property BoundsRect: TRect read FBoundsRect; + property Clipped: Boolean read FClipped; + property Index: Integer read GetIndex; + property Item: TTBCustomItem read FItem; + property OffEdge: Boolean read FOffEdge; + property Show: Boolean read FShow; + property View: TTBView read FView; + constructor Create(AView: TTBView; AItem: TTBCustomItem; AGroupLevel: Integer); virtual; + destructor Destroy; override; + procedure Execute(AGivePriority: Boolean); + function GetAccObject: IDispatch; + function GetHintText: String; + function IsAccessible: Boolean; + function IsToolbarStyle: Boolean; + function ScreenToClient(const P: TPoint): TPoint; + end; + PTBItemViewerArray = ^TTBItemViewerArray; + TTBItemViewerArray = array[0..$7FFFFFFF div SizeOf(TTBItemViewer)-1] of TTBItemViewer; + TTBViewOrientation = (tbvoHorizontal, tbvoVertical, tbvoFloating); + TTBEnterToolbarLoopOptions = set of (tbetMouseDown, tbetExecuteSelected, + tbetFromMSAA); + TTBViewState = set of (vsModal, vsMouseInWindow, vsDrawInOrder, vsOppositePopup, + vsIgnoreFirstMouseUp, vsShowAccels, vsDropDownMenus, vsNoAnimation); + TTBViewStyle = set of (vsMenuBar, vsUseHiddenAccels, vsAlwaysShowHints); + TTBViewTimerID = (tiOpen, tiClose, tiScrollUp, tiScrollDown); + + TTBViewClass = class of TTBView; + TTBView = class(TComponent) + private + FActiveTimers: set of TTBViewTimerID; + FBackgroundColor: TColor; + FBaseSize: TPoint; + FCapture: Boolean; + FCaptureWnd: HWND; + FChevronOffset: Integer; + FChevronParentView: TTBView; + FChevronSize: Integer; + FCurParentItem: TTBCustomItem; + FCustomizing: Boolean; + FDoneActionData: TTBDoneActionData; + FInternalViewersAtEnd: Integer; + FInternalViewersAtFront: Integer; + FIsPopup: Boolean; + FIsToolbar: Boolean; + FMaxHeight: Integer; + FMonitorRect: TRect; + FMouseOverSelected: Boolean; + FNewViewersGetHighestPriority: Boolean; + FOpenViewer: TTBItemViewer; + FOpenViewerView: TTBView; + FOpenViewerWindow: TTBPopupWindow; + FParentView: TTBView; + FParentItem: TTBCustomItem; + FPriorityList: TList; + FOrientation: TTBViewOrientation; + FScrollOffset: Integer; + FSelected: TTBItemViewer; + FSelectedViaMouse: Boolean; + FShowDownArrow: Boolean; + FShowUpArrow: Boolean; + FState: TTBViewState; + FStyle: TTBViewStyle; + FUpdating: Integer; + FUsePriorityList: Boolean; + FValidated: Boolean; + FViewerCount: Integer; + FViewers: PTBItemViewerArray; + FWindow: TWinControl; + FWrapOffset: Integer; + + procedure DeletingViewer(Viewer: TTBItemViewer); + procedure DrawItem(Viewer: TTBItemViewer; DrawTo: TCanvas; Offscreen: Boolean); + procedure FreeViewers; + procedure ImagesChanged; + function InsertItemViewers(const NewIndex: Integer; + const AItem: TTBCustomItem; const AGroupLevel: Integer; + const AddToPriorityList, TopOfPriorityList: Boolean): Integer; + procedure ItemNotification(Ancestor: TTBCustomItem; Relayed: Boolean; + Action: TTBItemChangedAction; Index: Integer; Item: TTBCustomItem); + procedure LinkNotification(Ancestor: TTBCustomItem; Relayed: Boolean; + Action: TTBItemChangedAction; Index: Integer; Item: TTBCustomItem); + procedure RecreateItemViewer(const I: Integer); + procedure Scroll(ADown: Boolean); + procedure SetCustomizing(Value: Boolean); + procedure SetSelected(Value: TTBItemViewer); + procedure SetUsePriorityList(Value: Boolean); + procedure StartTimer(const ATimer: TTBViewTimerID; const Interval: Integer); + procedure StopAllTimers; + procedure StopTimer(const ATimer: TTBViewTimerID); + procedure UpdateCurParentItem; + protected + FAccObjectInstance: TTBBaseAccObject; + procedure AutoSize(AWidth, AHeight: Integer); virtual; + function CalculatePositions(const CanMoveControls: Boolean; + const AOrientation: TTBViewOrientation; + AWrapOffset, AChevronOffset, AChevronSize: Integer; + var ABaseSize, TotalSize: TPoint; + var AWrappedLines: Integer): Boolean; + procedure DoUpdatePositions(var ASize: TPoint); virtual; + function GetChevronItem: TTBCustomItem; virtual; + procedure GetMargins(AOrientation: TTBViewOrientation; var Margins: TRect); + virtual; + function GetMDIButtonsItem: TTBCustomItem; virtual; + function GetMDISystemMenuItem: TTBCustomItem; virtual; + function GetParentToolbarView: TTBView; + function GetRootView: TTBView; + function HandleWMGetObject(var Message: TMessage): Boolean; + procedure InitiateActions; + procedure KeyDown(var Key: Word; Shift: TShiftState); virtual; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure SetAccelsVisibility(AShowAccels: Boolean); + public + constructor CreateView(AOwner: TComponent; AParentView: TTBView; + AParentItem: TTBCustomItem; AWindow: TWinControl; + AIsToolbar, ACustomizing, AUsePriorityList: Boolean); virtual; + destructor Destroy; override; + procedure BeginUpdate; + procedure CancelCapture; + procedure CancelChildPopups; + procedure CancelMode; + procedure CloseChildPopups; + function ContainsView(AView: TTBView): Boolean; + procedure DrawSubitems(ACanvas: TCanvas); + procedure EndModal; + procedure EndModalWithClick(AViewer: TTBItemViewer); + procedure EndModalWithHelp(AContextID: Integer); + procedure EndModalWithSystemMenu(AWnd: HWND; AKey: Cardinal); + procedure EndUpdate; + procedure EnterToolbarLoop(Options: TTBEnterToolbarLoopOptions); + procedure ExecuteSelected(AGivePriority: Boolean); + function Find(Item: TTBCustomItem): TTBItemViewer; + function FirstSelectable: TTBItemViewer; + function GetAccObject: IDispatch; + function GetCaptureWnd: HWND; + function GetFont: TFont; virtual; + procedure GetOffEdgeControlList(const List: TList); + procedure GivePriority(AViewer: TTBItemViewer); + function HighestPriorityViewer: TTBItemViewer; + procedure Invalidate(AViewer: TTBItemViewer); + procedure InvalidatePositions; virtual; + function IndexOf(AViewer: TTBItemViewer): Integer; + function IsModalEnding: Boolean; + function NextSelectable(CurViewer: TTBItemViewer; GoForward: Boolean): TTBItemViewer; + function NextSelectableWithAccel(CurViewer: TTBItemViewer; Key: Char; + RequirePrimaryAccel: Boolean; var IsOnlyItemWithAccel: Boolean): TTBItemViewer; + procedure NotifyFocusEvent; + function OpenChildPopup(const SelectFirstItem: Boolean): Boolean; + procedure RecreateAllViewers; + procedure ScrollSelectedIntoView; + procedure Select(Value: TTBItemViewer; ViaMouse: Boolean); + procedure SetCapture; + procedure TryValidatePositions; + procedure UpdateSelection(const P: PPoint; const AllowNewSelection: Boolean); + function UpdatePositions: TPoint; + procedure ValidatePositions; + function ViewerFromPoint(const P: TPoint): TTBItemViewer; + + property BackgroundColor: TColor read FBackgroundColor write FBackgroundColor; + property BaseSize: TPoint read FBaseSize; + property Capture: Boolean read FCapture; + property ChevronOffset: Integer read FChevronOffset write FChevronOffset; + property ChevronSize: Integer read FChevronSize write FChevronSize; + property Customizing: Boolean read FCustomizing write SetCustomizing; + property IsPopup: Boolean read FIsPopup; + property IsToolbar: Boolean read FIsToolbar; + property MouseOverSelected: Boolean read FMouseOverSelected; + property NewViewersGetHighestPriority: Boolean read FNewViewersGetHighestPriority + write FNewViewersGetHighestPriority; + property ParentView: TTBView read FParentView; + property ParentItem: TTBCustomItem read FParentItem; + property OpenViewer: TTBItemViewer read FOpenViewer; + property OpenViewerView: TTBView read FOpenViewerView; + property Orientation: TTBViewOrientation read FOrientation write FOrientation; + property Selected: TTBItemViewer read FSelected write SetSelected; + property SelectedViaMouse: Boolean read FSelectedViaMouse; + property State: TTBViewState read FState; + property Style: TTBViewStyle read FStyle write FStyle; + property UsePriorityList: Boolean read FUsePriorityList write SetUsePriorityList; + property Viewers: PTBItemViewerArray read FViewers; + property ViewerCount: Integer read FViewerCount; + property Window: TWinControl read FWindow; + property WrapOffset: Integer read FWrapOffset write FWrapOffset; + end; + + TTBRootItemClass = class of TTBRootItem; + TTBRootItem = class(TTBCustomItem); + { same as TTBCustomItem, except there's a property editor for it } + + TTBItem = class(TTBCustomItem) + published + property Action; + property AutoCheck; + property Caption; + property Checked; + property DisplayMode; + property Enabled; + property GroupIndex; + property HelpContext; + property Hint; + property ImageIndex; + property Images; + property InheritOptions; + property MaskOptions; + property Options; + property RadioItem; + property ShortCut; + property Visible; + + property OnClick; + property OnSelect; + end; + + TTBGroupItem = class(TTBCustomItem) + public + constructor Create(AOwner: TComponent); override; + published + property InheritOptions; + property LinkSubitems; + property MaskOptions; + property Options; + end; + + TTBSubmenuItem = class(TTBCustomItem) + private + function GetDropdownCombo: Boolean; + procedure SetDropdownCombo(Value: Boolean); + public + constructor Create(AOwner: TComponent); override; + published + property Action; + property AutoCheck; + property Caption; + property Checked; + //property DisplayAsToolbar; + property DisplayMode; + property DropdownCombo: Boolean read GetDropdownCombo write SetDropdownCombo default False; + property Enabled; + property GroupIndex; + property HelpContext; + property Hint; + property ImageIndex; + property Images; + property InheritOptions; + property LinkSubitems; + property MaskOptions; + property Options; + property RadioItem; + property ShortCut; + property SubMenuImages; + property Visible; + + property OnClick; + property OnPopup; + property OnSelect; + end; + + TTBSeparatorItem = class(TTBCustomItem) + private + FBlank: Boolean; + procedure SetBlank(Value: Boolean); + protected + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + public + constructor Create(AOwner: TComponent); override; + published + property Blank: Boolean read FBlank write SetBlank default False; + property Hint; + property Visible; + end; + + TTBSeparatorItemViewer = class(TTBItemViewer) + protected + procedure CalcSize(const Canvas: TCanvas; + var AWidth, AHeight: Integer); override; + procedure Paint(const Canvas: TCanvas; const ClientAreaRect: TRect; + IsSelected, IsPushed, UseDisabledShadow: Boolean); override; + function UsesSameWidth: Boolean; override; + end; + + TTBControlItem = class(TTBCustomItem) + private + FControl: TControl; + FDontFreeControl: Boolean; + procedure SetControl(Value: TControl); + protected + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + public + constructor Create(AOwner: TComponent); override; + constructor CreateControlItem(AOwner: TComponent; AControl: TControl); + destructor Destroy; override; + property DontFreeControl: Boolean read FDontFreeControl write FDontFreeControl; + published + property Control: TControl read FControl write SetControl; + end; + + TTBPopupView = class(TTBView) + protected + procedure AutoSize(AWidth, AHeight: Integer); override; + public + function GetFont: TFont; override; + end; + + ITBPopupWindow = interface + ['{E45CBE74-1ECF-44CB-B064-6D45B1924708}'] + end; + + TTBPopupWindow = class(TCustomControl, ITBPopupWindow) + private + FAccelsVisibilitySet: Boolean; + FAnimationDirection: TTBAnimationDirection; + FView: TTBView; + procedure CMHintShow(var Message: TCMHintShow); message CM_HINTSHOW; + procedure CMShowingChanged(var Message: TMessage); message CM_SHOWINGCHANGED; + procedure WMClose(var Message: TWMClose); message WM_CLOSE; + procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND; + procedure WMGetObject(var Message: TMessage); message WM_GETOBJECT; + procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE; + procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT; + procedure WMPaint(var Message: TWMPaint); message WM_PAINT; + procedure WMPrint(var Message: TMessage); message WM_PRINT; + procedure WMPrintClient(var Message: TMessage); message WM_PRINTCLIENT; + procedure WMTB2kStepAnimation(var Message: TMessage); message WM_TB2K_STEPANIMATION; + protected + procedure CreateParams(var Params: TCreateParams); override; + procedure CreateWnd; override; + procedure DestroyWindowHandle; override; + function GetViewClass: TTBViewClass; dynamic; + procedure Paint; override; + procedure PaintScrollArrows; virtual; + public + constructor CreatePopupWindow(AOwner: TComponent; const AParentView: TTBView; + const AItem: TTBCustomItem; const ACustomizing: Boolean); virtual; + destructor Destroy; override; + procedure BeforeDestruction; override; + + property View: TTBView read FView; + end; + + ITBItems = interface + ['{A5C0D7CC-3EC4-4090-A0F8-3D03271877EA}'] + function GetItems: TTBCustomItem; + end; + + TTBItemContainer = class(TComponent, ITBItems) + private + FItem: TTBRootItem; + function GetImages: TCustomImageList; + function GetItems: TTBCustomItem; + procedure SetImages(Value: TCustomImageList); + protected + procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + + property Items: TTBRootItem read FItem; + published + property Images: TCustomImageList read GetImages write SetImages; + end; + + TTBPopupMenu = class(TPopupMenu, ITBItems) + private + FItem: TTBRootItem; + //procedure SetItems(Value: TTBCustomItem); + function GetImages: TCustomImageList; + function GetItems: TTBCustomItem; + function GetLinkSubitems: TTBCustomItem; + function GetOptions: TTBItemOptions; + procedure RootItemClick(Sender: TObject); + procedure SetImages(Value: TCustomImageList); + procedure SetLinkSubitems(Value: TTBCustomItem); + procedure SetOptions(Value: TTBItemOptions); + protected + {$IFNDEF JR_D5} + procedure DoPopup(Sender: TObject); + {$ENDIF} + procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override; + function GetRootItemClass: TTBRootItemClass; dynamic; + procedure SetChildOrder(Child: TComponent; Order: Integer); override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function IsShortCut(var Message: TWMKey): Boolean; override; + procedure Popup(X, Y: Integer); override; + function PopupEx(X, Y: Integer; ReturnClickedItemOnly: Boolean = False): TTBCustomItem; + published + property Images: TCustomImageList read GetImages write SetImages; + property Items: TTBRootItem read FItem; + property LinkSubitems: TTBCustomItem read GetLinkSubitems write SetLinkSubitems; + property Options: TTBItemOptions read GetOptions write SetOptions default []; + end; + + TTBCustomImageList = class(TImageList) + private + FCheckedImages: TCustomImageList; + FCheckedImagesChangeLink: TChangeLink; + FDisabledImages: TCustomImageList; + FDisabledImagesChangeLink: TChangeLink; + FHotImages: TCustomImageList; + FHotImagesChangeLink: TChangeLink; + FImagesBitmap: TBitmap; + FImagesBitmapMaskColor: TColor; + procedure ChangeImages(var AImageList: TCustomImageList; + Value: TCustomImageList; AChangeLink: TChangeLink); + procedure ImageListChanged(Sender: TObject); + procedure ImagesBitmapChanged(Sender: TObject); + procedure SetCheckedImages(Value: TCustomImageList); + procedure SetDisabledImages(Value: TCustomImageList); + procedure SetHotImages(Value: TCustomImageList); + procedure SetImagesBitmap(Value: TBitmap); + procedure SetImagesBitmapMaskColor(Value: TColor); + protected + procedure DefineProperties(Filer: TFiler); override; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + property CheckedImages: TCustomImageList read FCheckedImages write SetCheckedImages; + property DisabledImages: TCustomImageList read FDisabledImages write SetDisabledImages; + property HotImages: TCustomImageList read FHotImages write SetHotImages; + property ImagesBitmap: TBitmap read FImagesBitmap write SetImagesBitmap; + property ImagesBitmapMaskColor: TColor read FImagesBitmapMaskColor + write SetImagesBitmapMaskColor default clFuchsia; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure DrawState(Canvas: TCanvas; X, Y, Index: Integer; + Enabled, Selected, Checked: Boolean); virtual; + end; + + TTBImageList = class(TTBCustomImageList) + published + property CheckedImages; + property DisabledImages; + property HotImages; + property ImagesBitmap; + property ImagesBitmapMaskColor; + end; + +const + {$IFNDEF TB2K_USE_STRICT_O2K_MENU_STYLE} + tbMenuBkColor = clMenu; + tbMenuTextColor = clMenuText; + {$ELSE} + tbMenuBkColor = clBtnFace; + tbMenuTextColor = clBtnText; + {$ENDIF} + + tbMenuVerticalMargin = 4; + tbMenuImageTextSpace = 1; + tbMenuLeftTextMargin = 2; + tbMenuRightTextMargin = 3; + + tbMenuSeparatorOffset = 12; + + tbMenuScrollArrowHeight = 19; + + tbDropdownArrowWidth = 8; + tbDropdownArrowMargin = 3; + tbDropdownComboArrowWidth = 11; + tbDropdownComboMargin = 2; + + tbLineSpacing = 6; + tbLineSepOffset = 1; + tbDockedLineSepOffset = 4; + + WM_TB2K_CLICKITEM = WM_USER + $100; + +procedure TBInitToolbarSystemFont; + +var + ToolbarFont: TFont; + + +implementation + +uses + MMSYSTEM, TB2Consts, TB2Common, IMM, TB2Acc; + +var + LastPos: TPoint; + +threadvar + ClickWndRefCount: Integer; + ClickWnd: HWND; + ClickList: TList; + +type + TTBModalHandler = class + private + FCreatedWnd: Boolean; + FInited: Boolean; + FWnd: HWND; + FRootPopup: TTBPopupWindow; + procedure WndProc(var Msg: TMessage); + public + constructor Create(AExistingWnd: HWND); + destructor Destroy; override; + procedure Loop(const RootView: TTBView; const AMouseDown, AExecuteSelected, + AFromMSAA, TrackRightButton: Boolean); + property RootPopup: TTBPopupWindow read FRootPopup write FRootPopup; + property Wnd: HWND read FWnd; + end; + + PItemChangedNotificationData = ^TItemChangedNotificationData; + TItemChangedNotificationData = record + Proc: TTBItemChangedProc; + RefCount: Integer; + end; + + TComponentAccess = class(TComponent); + TControlAccess = class(TControl); + +const + ViewTimerBaseID = 9000; + MaxGroupLevel = 10; + + +{ Misc. } + +procedure DestroyClickWnd; +begin + if ClickWnd <> 0 then begin + {$IFDEF JR_D6}Classes.{$ENDIF} DeallocateHWnd(ClickWnd); + ClickWnd := 0; + end; + FreeAndNil(ClickList); +end; + +procedure ReferenceClickWnd; +begin + Inc(ClickWndRefCount); +end; + +procedure ReleaseClickWnd; +begin + Dec(ClickWndRefCount); + if ClickWndRefCount = 0 then + DestroyClickWnd; +end; + +procedure QueueClick(const AItem: TObject; const AArg: Integer); +{ Adds an item to ClickList and posts a message to handle it. AItem must be + either a TTBCustomItem or TTBItemViewer. } +var + I: Integer; +begin + if ClickWnd = 0 then + ClickWnd := {$IFDEF JR_D6}Classes.{$ENDIF} AllocateHWnd(TTBCustomItem.ClickWndProc); + if ClickList = nil then + ClickList := TList.Create; + + { Add a new item to ClickList or replace an empty one } + I := ClickList.IndexOf(nil); + if I = -1 then + I := ClickList.Add(AItem) + else + ClickList[I] := AItem; + + PostMessage(ClickWnd, WM_TB2K_CLICKITEM, AArg, I); +end; + +procedure RemoveFromClickList(const AItem: TObject); +{ Any class that potentially calls QueueClick needs to call RemoveFromClickList + before an instance is destroyed to ensure that any references to the + instance still in ClickList are removed. } +var + I: Integer; +begin + if Assigned(ClickList) and Assigned(AItem) then + for I := 0 to ClickList.Count-1 do + if ClickList[I] = AItem then + ClickList[I] := Pointer(1); + { ^ The special value of Pointer(1) is assigned to the item instead of + of nil because we want the index to stay reserved until the + WM_TB2K_CLICKITEM message for the index is processed. We don't want + the WM_TB2K_CLICKITEM message that's still in the queue to later + refer to a different item; this would result in queued clicks being + processed in the wrong order in a case like this: + A.PostClick; B.PostClick; A.Free; C.PostClick; + C's click would end up being processed before A's, because C would + get A's index. } +end; + +function ProcessDoneAction(const DoneActionData: TTBDoneActionData; + const ReturnClickedItemOnly: Boolean): TTBCustomItem; +begin + Result := nil; + case DoneActionData.DoneAction of + tbdaNone: ; + tbdaClickItem: begin + if DoneActionData.Sound and NeedToPlaySound('MenuCommand') then + PlaySound('MenuCommand', 0, SND_ALIAS or SND_ASYNC or SND_NODEFAULT or SND_NOSTOP); + Result := DoneActionData.ClickItem; + if not ReturnClickedItemOnly then + Result.PostClick; + end; + tbdaOpenSystemMenu: begin + SendMessage(DoneActionData.Wnd, WM_SYSCOMMAND, SC_KEYMENU, DoneActionData.Key); + end; + tbdaHelpContext: begin + { Based on code in TPopupList.WndProc: } + if Assigned(Screen.ActiveForm) and + (biHelp in Screen.ActiveForm.BorderIcons) then + Application.HelpCommand(HELP_CONTEXTPOPUP, DoneActionData.ContextID) + else + Application.HelpContext(DoneActionData.ContextID); + end; + end; +end; + + +{ TTBItemDataArray routines } + +procedure InsertIntoItemArray(var AItems: PTBItemDataArray; + var AItemCount: Integer; NewIndex: Integer; AItem: TTBCustomItem); +begin + ReallocMem(AItems, (AItemCount+1) * SizeOf(AItems[0])); + if NewIndex < AItemCount then + System.Move(AItems[NewIndex], AItems[NewIndex+1], + (AItemCount-NewIndex) * SizeOf(AItems[0])); + AItems[NewIndex].Item := AItem; + Inc(AItemCount); +end; + +procedure DeleteFromItemArray(var AItems: PTBItemDataArray; + var AItemCount: Integer; Index: Integer); +begin + Dec(AItemCount); + if Index < AItemCount then + System.Move(AItems[Index+1], AItems[Index], + (AItemCount-Index) * SizeOf(AItems[0])); + ReallocMem(AItems, AItemCount * SizeOf(AItems[0])); +end; + +procedure InsertIntoViewerArray(var AItems: PTBItemViewerArray; + var AItemCount: Integer; NewIndex: Integer; AItem: TTBItemViewer); +begin + ReallocMem(AItems, (AItemCount+1) * SizeOf(AItems[0])); + if NewIndex < AItemCount then + System.Move(AItems[NewIndex], AItems[NewIndex+1], + (AItemCount-NewIndex) * SizeOf(AItems[0])); + AItems[NewIndex] := AItem; + Inc(AItemCount); +end; + +procedure DeleteFromViewerArray(var AItems: PTBItemViewerArray; + var AItemCount: Integer; Index: Integer); +begin + Dec(AItemCount); + if Index < AItemCount then + System.Move(AItems[Index+1], AItems[Index], + (AItemCount-Index) * SizeOf(AItems[0])); + ReallocMem(AItems, AItemCount * SizeOf(AItems[0])); +end; + + +{ TTBCustomItemActionLink } + +procedure TTBCustomItemActionLink.AssignClient(AClient: TObject); +begin + FClient := AClient as TTBCustomItem; +end; + +{$IFDEF JR_D6} +function TTBCustomItemActionLink.IsAutoCheckLinked: Boolean; +begin + Result := (FClient.AutoCheck = (Action as TCustomAction).AutoCheck); +end; +{$ENDIF} + +function TTBCustomItemActionLink.IsCaptionLinked: Boolean; +begin + Result := inherited IsCaptionLinked and + (FClient.Caption = (Action as TCustomAction).Caption); +end; + +function TTBCustomItemActionLink.IsCheckedLinked: Boolean; +begin + Result := inherited IsCheckedLinked and + (FClient.Checked = (Action as TCustomAction).Checked); +end; + +function TTBCustomItemActionLink.IsEnabledLinked: Boolean; +begin + Result := inherited IsEnabledLinked and + (FClient.Enabled = (Action as TCustomAction).Enabled); +end; + +function TTBCustomItemActionLink.IsHelpContextLinked: Boolean; +begin + Result := inherited IsHelpContextLinked and + (FClient.HelpContext = (Action as TCustomAction).HelpContext); +end; + +function TTBCustomItemActionLink.IsHintLinked: Boolean; +begin + Result := inherited IsHintLinked and + (FClient.Hint = (Action as TCustomAction).Hint); +end; + +function TTBCustomItemActionLink.IsImageIndexLinked: Boolean; +begin + Result := inherited IsImageIndexLinked and + (FClient.ImageIndex = (Action as TCustomAction).ImageIndex); +end; + +function TTBCustomItemActionLink.IsShortCutLinked: Boolean; +begin + Result := inherited IsShortCutLinked and + (FClient.ShortCut = (Action as TCustomAction).ShortCut); +end; + +function TTBCustomItemActionLink.IsVisibleLinked: Boolean; +begin + Result := inherited IsVisibleLinked and + (FClient.Visible = (Action as TCustomAction).Visible); +end; + +function TTBCustomItemActionLink.IsOnExecuteLinked: Boolean; +begin + Result := inherited IsOnExecuteLinked and + MethodsEqual(TMethod(FClient.OnClick), TMethod(Action.OnExecute)); +end; + +{$IFDEF JR_D6} +procedure TTBCustomItemActionLink.SetAutoCheck(Value: Boolean); +begin + if IsAutoCheckLinked then FClient.AutoCheck := Value; +end; +{$ENDIF} + +procedure TTBCustomItemActionLink.SetCaption(const Value: string); +begin + if IsCaptionLinked then FClient.Caption := Value; +end; + +procedure TTBCustomItemActionLink.SetChecked(Value: Boolean); +begin + if IsCheckedLinked then FClient.Checked := Value; +end; + +procedure TTBCustomItemActionLink.SetEnabled(Value: Boolean); +begin + if IsEnabledLinked then FClient.Enabled := Value; +end; + +procedure TTBCustomItemActionLink.SetHelpContext(Value: THelpContext); +begin + if IsHelpContextLinked then FClient.HelpContext := Value; +end; + +procedure TTBCustomItemActionLink.SetHint(const Value: string); +begin + if IsHintLinked then FClient.Hint := Value; +end; + +procedure TTBCustomItemActionLink.SetImageIndex(Value: Integer); +begin + if IsImageIndexLinked then FClient.ImageIndex := Value; +end; + +procedure TTBCustomItemActionLink.SetShortCut(Value: TShortCut); +begin + if IsShortCutLinked then FClient.ShortCut := Value; +end; + +procedure TTBCustomItemActionLink.SetVisible(Value: Boolean); +begin + if IsVisibleLinked then FClient.Visible := Value; +end; + +procedure TTBCustomItemActionLink.SetOnExecute(Value: TNotifyEvent); +begin + if IsOnExecuteLinked then FClient.OnClick := Value; +end; + + +{ TTBCustomItem } + +{}function ItemContainingItems(const AItem: TTBCustomItem): TTBCustomItem; +begin + if Assigned(AItem) and Assigned(AItem.FLinkSubitems) then + Result := AItem.FLinkSubitems + else + Result := AItem; +end; + +constructor TTBCustomItem.Create(AOwner: TComponent); +begin + inherited; + FEnabled := True; + FImageIndex := -1; + FInheritOptions := True; + FItemStyle := [tbisSelectable, tbisRedrawOnSelChange, tbisRedrawOnMouseOverChange]; + FVisible := True; + ReferenceClickWnd; +end; + +destructor TTBCustomItem.Destroy; +var + I: Integer; +begin + Destroying; + RemoveFromClickList(Self); + { Changed in 0.33. Moved FParent.Remove call *after* the child items are + deleted. } + for I := Count-1 downto 0 do + Items[I].Free; + if Assigned(FParent) then + FParent.Remove(Self); + FreeMem(FItems); + FActionLink.Free; + FActionLink := nil; + FreeAndNil(FSubMenuImagesChangeLink); + FreeAndNil(FImagesChangeLink); + inherited; + if Assigned(FNotifyList) then begin + for I := FNotifyList.Count-1 downto 0 do + Dispose(PItemChangedNotificationData(FNotifyList[I])); + FNotifyList.Free; + end; + FLinkParents.Free; + ReleaseClickWnd; +end; + +{$IFDEF JR_D6} +function TTBCustomItem.IsAutoCheckStored: Boolean; +begin + Result := (ActionLink = nil) or not FActionLink.IsAutoCheckLinked; +end; +{$ENDIF} + +function TTBCustomItem.IsCaptionStored: Boolean; +begin + Result := (ActionLink = nil) or not FActionLink.IsCaptionLinked; +end; + +function TTBCustomItem.IsCheckedStored: Boolean; +begin + Result := (ActionLink = nil) or not FActionLink.IsCheckedLinked; +end; + +function TTBCustomItem.IsEnabledStored: Boolean; +begin + Result := (ActionLink = nil) or not FActionLink.IsEnabledLinked; +end; + +function TTBCustomItem.IsHintStored: Boolean; +begin + Result := (ActionLink = nil) or not FActionLink.IsHintLinked; +end; + +function TTBCustomItem.IsHelpContextStored: Boolean; +begin + Result := (ActionLink = nil) or not FActionLink.IsHelpContextLinked; +end; + +function TTBCustomItem.IsImageIndexStored: Boolean; +begin + Result := (ActionLink = nil) or not FActionLink.IsImageIndexLinked; +end; + +function TTBCustomItem.IsShortCutStored: Boolean; +begin + Result := (ActionLink = nil) or not FActionLink.IsShortCutLinked; +end; + +function TTBCustomItem.IsVisibleStored: Boolean; +begin + Result := (ActionLink = nil) or not FActionLink.IsVisibleLinked; +end; + +function TTBCustomItem.IsOnClickStored: Boolean; +begin + Result := (ActionLink = nil) or not FActionLink.IsOnExecuteLinked; +end; + +function TTBCustomItem.GetAction: TBasicAction; +begin + if FActionLink <> nil then + Result := FActionLink.Action + else + Result := nil; +end; + +function TTBCustomItem.GetActionLinkClass: TTBCustomItemActionLinkClass; +begin + Result := TTBCustomItemActionLink; +end; + +procedure TTBCustomItem.DoActionChange(Sender: TObject); +begin + if Sender = Action then ActionChange(Sender, False); +end; + +procedure TTBCustomItem.ActionChange(Sender: TObject; CheckDefaults: Boolean); +begin + if Action is TCustomAction then + with TCustomAction(Sender) do + begin + {$IFDEF JR_D6} + if not CheckDefaults or (Self.AutoCheck = False) then + Self.AutoCheck := AutoCheck; + {$ENDIF} + if not CheckDefaults or (Self.Caption = '') then + Self.Caption := Caption; + if not CheckDefaults or (Self.Checked = False) then + Self.Checked := Checked; + if not CheckDefaults or (Self.Enabled = True) then + Self.Enabled := Enabled; + if not CheckDefaults or (Self.HelpContext = 0) then + Self.HelpContext := HelpContext; + if not CheckDefaults or (Self.Hint = '') then + Self.Hint := Hint; + if not CheckDefaults or (Self.ImageIndex = -1) then + Self.ImageIndex := ImageIndex; + if not CheckDefaults or (Self.ShortCut = scNone) then + Self.ShortCut := ShortCut; + if not CheckDefaults or (Self.Visible = True) then + Self.Visible := Visible; + if not CheckDefaults or not Assigned(Self.OnClick) then + Self.OnClick := OnExecute; + end; +end; + +procedure TTBCustomItem.SetAction(Value: TBasicAction); +begin + if Value = nil then begin + FActionLink.Free; + FActionLink := nil; + end + else begin + if FActionLink = nil then + FActionLink := GetActionLinkClass.Create(Self); + FActionLink.Action := Value; + FActionLink.OnChange := DoActionChange; + { Note: Delphi's Controls.pas and Menus.pas merely check for + "csLoading in Value.ComponentState" here. But that doesn't help when + the Action property references an action on another form / data module + that has already finished loading. So we check two things: + 1. csLoading in Value.ComponentState + 2. csLoading in ComponentState + In the typical case where the item and action list reside on the same + form, #1 and #2 are both true. + Only #1 is true when Action references an action on another form / data + module that is created *after* the item (e.g. if Form1.TBItem1.Action = + Form2.Action1, and Form1 is created before Form2). + Only #2 is true when Action references an action on another form / data + module that is created *before* the item (e.g. if Form2.TBItem1.Action = + Form1.Action1, and Form1 is created before Form2). } + ActionChange(Value, (csLoading in Value.ComponentState) or + (csLoading in ComponentState)); + Value.FreeNotification(Self); + end; +end; + +procedure TTBCustomItem.InitiateAction; +begin + if FActionLink <> nil then FActionLink.Update; +end; + +procedure TTBCustomItem.Loaded; +begin + inherited; + if Action <> nil then ActionChange(Action, True); +end; + +procedure TTBCustomItem.GetChildren(Proc: TGetChildProc; Root: TComponent); +var + I: Integer; +begin + for I := 0 to FItemCount-1 do + Proc(FItems[I].Item); +end; + +procedure TTBCustomItem.SetChildOrder(Child: TComponent; Order: Integer); +var + I: Integer; +begin + I := IndexOf(Child as TTBCustomItem); + if I <> -1 then + Move(I, Order); +end; + +function TTBCustomItem.HasParent: Boolean; +begin + Result := True; +end; + +function TTBCustomItem.GetParentComponent: TComponent; +begin + if (FParent <> nil) and (FParent.FParentComponent <> nil) then + Result := FParent.FParentComponent + else + Result := FParent; +end; + +procedure TTBCustomItem.SetName(const NewName: TComponentName); +begin + if Name <> NewName then begin + inherited; + if Assigned(FParent) then + FParent.Notify(tbicNameChanged, -1, Self); + end; +end; + +procedure TTBCustomItem.SetParentComponent(Value: TComponent); +var + Intf: ITBItems; +begin + if FParent <> nil then FParent.Remove(Self); + if Value <> nil then begin + if Value is TTBCustomItem then + TTBCustomItem(Value).Add(Self) + else if Value.GetInterface(ITBItems, Intf) then + Intf.GetItems.Add(Self); + end; +end; + +procedure TTBCustomItem.Notification(AComponent: TComponent; + Operation: TOperation); +begin + inherited; + if Operation = opRemove then begin + RemoveFromList(FLinkParents, AComponent); + if AComponent = Action then Action := nil; + if AComponent = Images then Images := nil; + if AComponent = SubMenuImages then SubMenuImages := nil; + if AComponent = LinkSubitems then LinkSubitems := nil; + end; +end; + +procedure TTBCustomItem.IndexError; +begin + raise ETBItemError.Create(STBToolbarIndexOutOfBounds); +end; + +class procedure TTBCustomItem.ClickWndProc(var Message: TMessage); +var + List: TList; + I: Integer; + Item: TObject; +begin + if Message.Msg = WM_TB2K_CLICKITEM then begin + List := ClickList; { optimization... } + if Assigned(List) then begin + I := Message.LParam; + if (I >= 0) and (I < List.Count) then begin + Item := List[I]; + List[I] := nil; + if Item = Pointer(1) then { is it a destroyed item? } + Item := nil; + end + else + Item := nil; + + { Remove trailing nil items from ClickList. This is not *necessary*, but + it will make RemoveFromClickList faster if we clean out items that + aren't used, and may never be used again. } + for I := List.Count-1 downto 0 do begin + if List[I] = nil then + List.Delete(I) + else + Break; + end; + + if Assigned(Item) then begin + try + if Item is TTBCustomItem then + TTBCustomItem(Item).Click + else if Item is TTBItemViewer then + TTBItemViewer(Item).AccSelect(Message.WParam <> 0); + except + Application.HandleException(Item); + end; + end; + end; + end + else + with Message do + Result := DefWindowProc(ClickWnd, Msg, wParam, lParam); +end; + +procedure TTBCustomItem.PostClick; +{ Posts a message to the message queue that causes the item's Click handler to + be executed when control is returned to the message loop. + This should be called instead of Click when a WM_SYSCOMMAND message is + (possibly) currently being handled, because TApplication.WndProc's + CM_APPSYSCOMMAND handler disables the VCL's processing of focus messages + until the Perform(WM_SYSCOMMAND, ...) call returns. (An OnClick handler which + calls TForm.ShowModal needs focus messages to be enabled or else the form + will be shown with no initial focus.) } +begin + QueueClick(Self, 0); +end; + +procedure TTBCustomItem.Click; +begin + if Enabled then begin + { Following code based on D6's TMenuItem.Click } + {$IFDEF JR_D6} + if (not Assigned(ActionLink) and AutoCheck) or + (Assigned(ActionLink) and not ActionLink.IsAutoCheckLinked and AutoCheck) then + {$ELSE} + if AutoCheck then + {$ENDIF} + Checked := not Checked; + { Following code based on D4's TControl.Click } + { Call OnClick if assigned and not equal to associated action's OnExecute. + If associated action's OnExecute assigned then call it, otherwise, call + OnClick. } + if Assigned(FOnClick) and (Action <> nil) and + not MethodsEqual(TMethod(FOnClick), TMethod(Action.OnExecute)) then + FOnClick(Self) + else + if not(csDesigning in ComponentState) and (ActionLink <> nil) then + ActionLink.Execute {$IFDEF JR_D6}(Self){$ENDIF} + else + if Assigned(FOnClick) then + FOnClick(Self); + end; +end; + +function TTBCustomItem.GetItem(Index: Integer): TTBCustomItem; +begin + if (Index < 0) or (Index >= FItemCount) then IndexError; + Result := FItems[Index].Item; +end; + +procedure TTBCustomItem.Add(AItem: TTBCustomItem); +begin + Insert(Count, AItem); +end; + +procedure TTBCustomItem.InternalNotify(Ancestor: TTBCustomItem; + NestingLevel: Integer; Action: TTBItemChangedAction; Index: Integer; + Item: TTBCustomItem); +{ Note: Ancestor is Item's parent, or in the case of a group item relayed + notification, it can also be a group item which *links* to Item's parent + (i.e. ItemContainingItems(Ancestor) = Item.Parent). } + + procedure RelayToParentOf(const AItem: TTBCustomItem); + begin + if NestingLevel > MaxGroupLevel then + Exit; + if (tbisEmbeddedGroup in AItem.ItemStyle) and Assigned(AItem.Parent) then begin + if Ancestor = Self then + AItem.Parent.InternalNotify(AItem, NestingLevel + 1, Action, Index, Item) + else + { Don't alter Ancestor on subsequent relays; only on the first. } + AItem.Parent.InternalNotify(Ancestor, NestingLevel + 1, Action, Index, Item); + end; + end; + +var + I: Integer; + P: TTBCustomItem; + SaveProc: TTBItemChangedProc; +begin + { If Self is a group item, relay the notification to the parent } + RelayToParentOf(Self); + { If any group items are linked to Self, relay the notification to + those items' parents } + if Assigned(FLinkParents) then + for I := 0 to FLinkParents.Count-1 do begin + P := FLinkParents[I]; + if P <> Parent then + RelayToParentOf(P); + end; + if Assigned(FNotifyList) then begin + I := 0; + while I < FNotifyList.Count do begin + with PItemChangedNotificationData(FNotifyList[I])^ do begin + SaveProc := Proc; + Proc(Ancestor, Ancestor <> Self, Action, Index, Item); + end; + { Is I now out of bounds? } + if I >= FNotifyList.Count then + Break; + { Only proceed to the next index if the list didn't change } + if MethodsEqual(TMethod(PItemChangedNotificationData(FNotifyList[I])^.Proc), + TMethod(SaveProc)) then + Inc(I); + end; + end; +end; + +procedure TTBCustomItem.Notify(Action: TTBItemChangedAction; Index: Integer; + Item: TTBCustomItem); +begin + InternalNotify(Self, 0, Action, Index, Item); +end; + +procedure TTBCustomItem.ViewBeginUpdate; +begin + Notify(tbicSubitemsBeginUpdate, -1, nil); +end; + +procedure TTBCustomItem.ViewEndUpdate; +begin + Notify(tbicSubitemsEndUpdate, -1, nil); +end; + +procedure TTBCustomItem.Insert(NewIndex: Integer; AItem: TTBCustomItem); +begin + if Assigned(AItem.FParent) then + raise ETBItemError.Create(STBToolbarItemReinserted); + if (NewIndex < 0) or (NewIndex > FItemCount) then IndexError; + InsertIntoItemArray(FItems, FItemCount, NewIndex, AItem); + AItem.FParent := Self; + ViewBeginUpdate; + try + Notify(tbicInserted, NewIndex, AItem); + AItem.RefreshOptions; + finally + ViewEndUpdate; + end; +end; + +procedure TTBCustomItem.Delete(Index: Integer); +begin + if (Index < 0) or (Index >= FItemCount) then IndexError; + Notify(tbicDeleting, Index, FItems[Index].Item); + FItems[Index].Item.FParent := nil; + DeleteFromItemArray(FItems, FItemCount, Index); +end; + +function TTBCustomItem.IndexOf(AItem: TTBCustomItem): Integer; +var + I: Integer; +begin + for I := 0 to FItemCount-1 do + if FItems[I].Item = AItem then begin + Result := I; + Exit; + end; + Result := -1; +end; + +procedure TTBCustomItem.Remove(Item: TTBCustomItem); +var + I: Integer; +begin + I := IndexOf(Item); + //if I = -1 then raise ETBItemError.Create(STBToolbarItemNotFound); + if I <> -1 then + Delete(I); +end; + +procedure TTBCustomItem.Clear; +var + I: Integer; +begin + for I := Count-1 downto 0 do + Items[I].Free; +end; + +procedure TTBCustomItem.Move(CurIndex, NewIndex: Integer); +var + Item: TTBCustomItem; +begin + if CurIndex <> NewIndex then begin + if (NewIndex < 0) or (NewIndex >= FItemCount) then IndexError; + Item := Items[CurIndex]; + ViewBeginUpdate; + try + Delete(CurIndex); + Insert(NewIndex, Item); + finally + ViewEndUpdate; + end; + end; +end; + +function TTBCustomItem.ContainsItem(AItem: TTBCustomItem): Boolean; +begin + while Assigned(AItem) and (AItem <> Self) do + AItem := AItem.Parent; + Result := Assigned(AItem); +end; + +procedure TTBCustomItem.RegisterNotification(ANotify: TTBItemChangedProc); +var + I: Integer; + Data: PItemChangedNotificationData; +begin + if FNotifyList = nil then FNotifyList := TList.Create; + for I := 0 to FNotifyList.Count-1 do + with PItemChangedNotificationData(FNotifyList[I])^ do + if MethodsEqual(TMethod(ANotify), TMethod(Proc)) then begin + Inc(RefCount); + Exit; + end; + FNotifyList.Expand; + New(Data); + Data.Proc := ANotify; + Data.RefCount := 1; + FNotifyList.Add(Data); +end; + +procedure TTBCustomItem.UnregisterNotification(ANotify: TTBItemChangedProc); +var + I: Integer; + Data: PItemChangedNotificationData; +begin + if Assigned(FNotifyList) then + for I := 0 to FNotifyList.Count-1 do begin + Data := FNotifyList[I]; + if MethodsEqual(TMethod(Data.Proc), TMethod(ANotify)) then begin + Dec(Data.RefCount); + if Data.RefCount = 0 then begin + FNotifyList.Delete(I); + Dispose(Data); + if FNotifyList.Count = 0 then begin + FNotifyList.Free; + FNotifyList := nil; + end; + end; + Break; + end; + end; +end; + +function TTBCustomItem.GetPopupWindowClass: TTBPopupWindowClass; +begin + Result := TTBPopupWindow; +end; + +procedure TTBCustomItem.DoPopup(Sender: TTBCustomItem; FromLink: Boolean); +begin + if Assigned(FOnPopup) then + FOnPopup(Sender, FromLink); + if not(tbisCombo in ItemStyle) then + Click; +end; + +var + PlayedSound: Boolean = False; + +function TTBCustomItem.CreatePopup(const ParentView: TTBView; + const ParentViewer: TTBItemViewer; const PositionAsSubmenu, SelectFirstItem, + Customizing: Boolean; const APopupPoint: TPoint; + const Alignment: TTBPopupAlignment): TTBPopupWindow; + + function CountObscured(X, Y, W, H: Integer): Integer; + var + I: Integer; + P: TPoint; + V: TTBItemViewer; + begin + Result := 0; + if ParentView = nil then + Exit; + P := ParentView.FWindow.ClientToScreen(Point(0, 0)); + Dec(X, P.X); + Dec(Y, P.Y); + Inc(W, X); + Inc(H, Y); + for I := 0 to ParentView.FViewerCount-1 do begin + V := ParentView.FViewers[I]; + if V.Show and (V.BoundsRect.Left >= X) and (V.BoundsRect.Right <= W) and + (V.BoundsRect.Top >= Y) and (V.BoundsRect.Bottom <= H) then + Inc(Result); + end; + end; + +var + EventItem, ParentItem: TTBCustomItem; + Opposite: Boolean; + ChevronParentView: TTBView; + X, X2, Y, Y2, W, H: Integer; + P: TPoint; + RepeatCalcX: Boolean; + ParentItemRect: TRect; + MonitorRect: TRect; + AnimDir: TTBAnimationDirection; +begin + EventItem := ItemContainingItems(Self); + if EventItem <> Self then + EventItem.DoPopup(Self, True); + DoPopup(Self, False); + + ChevronParentView := GetChevronParentView; + if ChevronParentView = nil then + ParentItem := Self + else + ParentItem := ChevronParentView.FParentItem; + + Opposite := Assigned(ParentView) and (vsOppositePopup in ParentView.FState); + Result := GetPopupWindowClass.CreatePopupWindow(nil, ParentView, ParentItem, + Customizing); + try + if Assigned(ChevronParentView) then begin + ChevronParentView.FreeNotification(Result.View); + Result.View.FChevronParentView := ChevronParentView; + Result.View.FIsToolbar := True; + Result.View.Style := Result.View.Style + + (ChevronParentView.Style * [vsAlwaysShowHints]); + Result.Color := clBtnFace; + end; + + { Calculate ParentItemRect, and MonitorRect (the rectangle of the monitor + that the popup window will be confined to) } + if Assigned(ParentView) then begin + ParentView.ValidatePositions; + ParentItemRect := ParentViewer.BoundsRect; + P := ParentView.FWindow.ClientToScreen(Point(0, 0)); + OffsetRect(ParentItemRect, P.X, P.Y); + if not IsRectEmpty(ParentView.FMonitorRect) then + MonitorRect := ParentView.FMonitorRect + else + MonitorRect := GetRectOfMonitorContainingRect(ParentItemRect, False); + end + else begin + ParentItemRect.TopLeft := APopupPoint; + ParentItemRect.BottomRight := APopupPoint; + MonitorRect := GetRectOfMonitorContainingPoint(APopupPoint, False); + end; + Result.View.FMonitorRect := MonitorRect; + + { Initialize item positions and size of the popup window } + if ChevronParentView = nil then + Result.View.FMaxHeight := (MonitorRect.Bottom - MonitorRect.Top) - + (PopupMenuWindowNCSize * 2) + else + Result.View.WrapOffset := (MonitorRect.Right - MonitorRect.Left) - + (PopupMenuWindowNCSize * 2); + if SelectFirstItem then + Result.View.Selected := Result.View.FirstSelectable; + Result.View.UpdatePositions; + W := Result.Width; + H := Result.Height; + + { Calculate initial X,Y position of the popup window } + if Assigned(ParentView) then begin + if not PositionAsSubmenu then begin + if ChevronParentView = nil then begin + if (ParentView = nil) or (ParentView.FOrientation <> tbvoVertical) then begin + if GetSystemMetrics(SM_MENUDROPALIGNMENT) = 0 then + X := ParentItemRect.Left + else + X := ParentItemRect.Right - W; + Y := ParentItemRect.Bottom; + end + else begin + X := ParentItemRect.Left - W; + Y := ParentItemRect.Top; + end; + end + else begin + if ChevronParentView.FOrientation <> tbvoVertical then begin + X := ParentItemRect.Right - W; + Y := ParentItemRect.Bottom; + end + else begin + X := ParentItemRect.Left - W; + Y := ParentItemRect.Top; + end; + end; + end + else begin + X := ParentItemRect.Right - PopupMenuWindowNCSize; + Y := ParentItemRect.Top - PopupMenuWindowNCSize; + end; + end + else begin + X := APopupPoint.X; + Y := APopupPoint.Y; + case Alignment of + tbpaRight: Dec(X, W); + tbpaCenter: Dec(X, W div 2); + end; + end; + + { Adjust the Y position of the popup window } + { If the window is going off the bottom of the monitor, try placing it + above the parent item } + if (Y + H > MonitorRect.Bottom) and + ((ParentView = nil) or (ParentView.FOrientation <> tbvoVertical)) then begin + if not PositionAsSubmenu then + Y2 := ParentItemRect.Top + else + Y2 := ParentItemRect.Bottom + PopupMenuWindowNCSize; + Dec(Y2, H); + { Only place it above the parent item if it isn't going to go off the + top of the monitor } + if Y2 >= MonitorRect.Top then + Y := Y2; + end; + { If it's still going off the bottom (which can be possible if a menu bar + was off the screen to begin with), clip it to the bottom of the monitor } + if Y + H > MonitorRect.Bottom then + Y := MonitorRect.Bottom - H; + if Y < MonitorRect.Top then + Y := MonitorRect.Top; + + { Other adjustments to the position of the popup window } + if not PositionAsSubmenu then begin + if (ParentView = nil) and (Alignment = tbpaRight) and (X < MonitorRect.Left) then + Inc(X, W); + if X + W > MonitorRect.Right then begin + if Assigned(ParentView) or (Alignment <> tbpaLeft) then + X := MonitorRect.Right; + Dec(X, W); + end; + if X < MonitorRect.Left then + X := MonitorRect.Left; + if (ParentView = nil) or (ParentView.FOrientation <> tbvoVertical) then begin + Y2 := ParentItemRect.Top - H; + if Y2 >= MonitorRect.Top then begin + { Would the popup window obscure less items if it popped out to the + top instead? } + if (CountObscured(X, Y2, W, H) < CountObscured(X, Y, W, H)) or + ((Y < ParentItemRect.Bottom) and (Y + H > ParentItemRect.Top) and + (X < ParentItemRect.Right) and (X + W > ParentItemRect.Left)) then + Y := Y2; + end; + { Make sure a tall popup window doesn't overlap the parent item } + if (Y < ParentItemRect.Bottom) and (Y + H > ParentItemRect.Top) and + (X < ParentItemRect.Right) and (X + W > ParentItemRect.Left) then begin + if ParentItemRect.Right + W <= MonitorRect.Right then + X := ParentItemRect.Right + else + X := ParentItemRect.Left - W; + if X < MonitorRect.Top then + X := MonitorRect.Top; + end; + end + else begin + X2 := ParentItemRect.Right; + if X2 + W <= MonitorRect.Right then begin + { Would the popup window obscure less items if it popped out to the + right instead? } + if (CountObscured(X2, Y, W, H) < CountObscured(X, Y, W, H)) or + ((Y < ParentItemRect.Bottom) and (Y + H > ParentItemRect.Top) and + (X < ParentItemRect.Right) and (X + W > ParentItemRect.Left)) then + X := X2; + end; + { Make sure a wide popup window doesn't overlap the parent item } + if (Y < ParentItemRect.Bottom) and (Y + H > ParentItemRect.Top) and + (X < ParentItemRect.Right) and (X + W > ParentItemRect.Left) then begin + if ParentItemRect.Bottom + H <= MonitorRect.Bottom then + Y := ParentItemRect.Bottom + else + Y := ParentItemRect.Top - H; + if Y < MonitorRect.Top then + Y := MonitorRect.Top; + end; + end; + end + else begin + { Make nested submenus go from left to right on the screen. Each it + runs out of space on the screen, switch directions } + repeat + RepeatCalcX := False; + X2 := X; + if Opposite or (X2 + W > MonitorRect.Right) then begin + if Assigned(ParentView) then + X2 := ParentItemRect.Left + PopupMenuWindowNCSize; + Dec(X2, W); + if not Opposite then + Include(Result.View.FState, vsOppositePopup) + else begin + if X2 < MonitorRect.Left then begin + Opposite := False; + RepeatCalcX := True; + end + else + Include(Result.View.FState, vsOppositePopup); + end; + end; + until not RepeatCalcX; + X := X2; + if X < MonitorRect.Left then + X := MonitorRect.Left; + end; + + { Determine animation direction } + AnimDir := []; + if not PositionAsSubmenu then begin + if Y >= ParentItemRect.Bottom then + Include(AnimDir, tbadDown) + else if Y + H <= ParentItemRect.Top then + Include(AnimDir, tbadUp); + if X >= ParentItemRect.Right then + Include(AnimDir, tbadRight) + else if X + W <= ParentItemRect.Left then + Include(AnimDir, tbadLeft); + end + else begin + if X + W div 2 >= ParentItemRect.Left + (ParentItemRect.Right - ParentItemRect.Left) div 2 then + Include(AnimDir, tbadRight) + else + Include(AnimDir, tbadLeft); + end; + Result.FAnimationDirection := AnimDir; + + Result.SetBounds(X, Y, W, H); + if Assigned(ParentView) then begin + Result.FreeNotification(ParentView); + ParentView.FOpenViewerWindow := Result; + ParentView.FOpenViewerView := Result.View; + ParentView.FOpenViewer := ParentViewer; + if ParentView.FIsToolbar then begin + Include(ParentView.FState, vsDropDownMenus); + ParentView.Invalidate(ParentViewer); + ParentView.FWindow.Update; + end; + end; + Include(Result.View.FState, vsDrawInOrder); + if not NeedToPlaySound('MenuPopup') then begin + { Don't call PlaySound if we don't have to } + Result.Visible := True; + end + else begin + if not PlayedSound then begin + { Work around Windows 2000 "bug" where there's a 1/3 second delay upon the + first call to PlaySound (or sndPlaySound) by painting the window + completely first. This way the delay isn't very noticable. } + PlayedSound := True; + Result.Visible := True; + Result.Update; + PlaySound('MenuPopup', 0, SND_ALIAS or SND_ASYNC or SND_NODEFAULT or SND_NOSTOP); + end + else begin + PlaySound('MenuPopup', 0, SND_ALIAS or SND_ASYNC or SND_NODEFAULT or SND_NOSTOP); + Result.Visible := True; + end; + end; + CallNotifyWinEvent(EVENT_SYSTEM_MENUPOPUPSTART, Result.View.FWindow.Handle, + OBJID_CLIENT, CHILDID_SELF); + { Call NotifyFocusEvent now that the window is visible } + if Assigned(Result.View.Selected) then + Result.View.NotifyFocusEvent; + except + Result.Free; + raise; + end; +end; + +function TTBCustomItem.OpenPopup(const SelectFirstItem, TrackRightButton: Boolean; + const PopupPoint: TPoint; const Alignment: TTBPopupAlignment; + const ReturnClickedItemOnly: Boolean): TTBCustomItem; +var + ModalHandler: TTBModalHandler; + Popup: TTBPopupWindow; + DoneActionData: TTBDoneActionData; +begin + ModalHandler := TTBModalHandler.Create(0); + try + Popup := CreatePopup(nil, nil, False, SelectFirstItem, False, PopupPoint, + Alignment); + try + Include(Popup.View.FState, vsIgnoreFirstMouseUp); + ModalHandler.RootPopup := Popup; + ModalHandler.Loop(Popup.View, False, False, False, TrackRightButton); + DoneActionData := Popup.View.FDoneActionData; + finally + ModalHandler.RootPopup := nil; + { Remove vsModal state from the root view before any TTBView.Destroy + methods get called, so that NotifyFocusEvent becomes a no-op } + Exclude(Popup.View.FState, vsModal); + Popup.Free; + end; + finally + ModalHandler.Free; + end; + Result := ProcessDoneAction(DoneActionData, ReturnClickedItemOnly); +end; + +function TTBCustomItem.Popup(X, Y: Integer; TrackRightButton: Boolean; + Alignment: TTBPopupAlignment = tbpaLeft; + ReturnClickedItemOnly: Boolean = False): TTBCustomItem; +var + P: TPoint; +begin + P.X := X; + P.Y := Y; + Result := OpenPopup(False, TrackRightButton, P, Alignment, + ReturnClickedItemOnly); +end; + +function TTBCustomItem.FindItemWithShortCut(AShortCut: TShortCut; + var ATopmostParent: TTBCustomItem): TTBCustomItem; + + function DoItem(AParentItem: TTBCustomItem; LinkDepth: Integer): TTBCustomItem; + var + I: Integer; + NewParentItem, Item: TTBCustomItem; + begin + Result := nil; + NewParentItem := AParentItem; + if Assigned(NewParentItem.LinkSubitems) then begin + NewParentItem := NewParentItem.LinkSubitems; + Inc(LinkDepth); + if LinkDepth > 25 then + Exit; { prevent infinite link recursion } + end; + for I := 0 to NewParentItem.Count-1 do begin + Item := NewParentItem.Items[I]; + if Item.ShortCut = AShortCut then begin + Result := Item; + Exit; + end; + Result := DoItem(Item, LinkDepth); + if Assigned(Result) then begin + ATopmostParent := Item; + Exit; + end; + end; + end; + +begin + ATopmostParent := nil; + Result := DoItem(Self, 0); +end; + +function TTBCustomItem.IsShortCut(var Message: TWMKey): Boolean; +var + ShortCut: TShortCut; + ShiftState: TShiftState; + ShortCutItem, TopmostItem, Item, EventItem: TTBCustomItem; + I: Integer; +label 1; +begin + Result := False; + ShiftState := KeyDataToShiftState(Message.KeyData); + ShortCut := Menus.ShortCut(Message.CharCode, ShiftState); +1:ShortCutItem := FindItemWithShortCut(ShortCut, TopmostItem); + if Assigned(ShortCutItem) then begin + { Send OnPopup/OnClick events to ShortCutItem's parents so that they can + update the Enabled state of ShortCutItem if needed } + Item := Self; + repeat + if not Item.Enabled then + Exit; + EventItem := ItemContainingItems(Item); + if not(csDesigning in ComponentState) then begin + for I := 0 to EventItem.Count-1 do + EventItem.Items[I].InitiateAction; + end; + if not(tbisEmbeddedGroup in Item.ItemStyle) then begin + if EventItem <> Item then begin + try + EventItem.DoPopup(Item, True); + except + Application.HandleException(Self); + end; + end; + try + Item.DoPopup(Item, False); + except + Application.HandleException(Self); + end; + end; + ShortCutItem := Item.FindItemWithShortCut(ShortCut, TopmostItem); + if ShortCutItem = nil then + { Can no longer find the shortcut inside TopmostItem. Start over + because the shortcut might have moved. } + goto 1; + Item := TopmostItem; + until Item = nil; + if ShortCutItem.Enabled then begin + try + ShortCutItem.Click; + except + Application.HandleException(Self); + end; + Result := True; + end; + end; +end; + +function TTBCustomItem.GetChevronParentView: TTBView; +begin + Result := nil; +end; + +function TTBCustomItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBItemViewer; +end; + +function TTBCustomItem.NeedToRecreateViewer(AViewer: TTBItemViewer): Boolean; +begin + Result := False; +end; + +function TTBCustomItem.GetShortCutText: String; +var + P: Integer; +begin + P := Pos(#9, Caption); + if P = 0 then begin + if ShortCut <> 0 then + Result := ShortCutToText(ShortCut) + else + Result := ''; + end + else + Result := Copy(Caption, P+1, Maxint); +end; + +procedure TTBCustomItem.Change(NeedResize: Boolean); +const + ItemChangedActions: array[Boolean] of TTBItemChangedAction = + (tbicInvalidate, tbicInvalidateAndResize); +begin + if Assigned(FParent) then + FParent.Notify(ItemChangedActions[NeedResize], -1, Self); +end; + +procedure TTBCustomItem.RecreateItemViewers; +begin + if Assigned(FParent) then + FParent.Notify(tbicRecreateItemViewers, -1, Self); +end; + +procedure TTBCustomItem.ImageListChangeHandler(Sender: TObject); +var + Resize: Boolean; +begin + if Sender = FSubMenuImages then begin + FSubMenuImagesChangeLink.FLastWidth := FSubMenuImages.Width; + FSubMenuImagesChangeLink.FLastHeight := FSubMenuImages.Height; + SubMenuImagesChanged; + end + else begin + { Sender is FImages } + Resize := False; + if (FImagesChangeLink.FLastWidth <> FImages.Width) or + (FImagesChangeLink.FLastHeight <> FImages.Height) then begin + FImagesChangeLink.FLastWidth := FImages.Width; + FImagesChangeLink.FLastHeight := FImages.Height; + Resize := True; + end; + Change(Resize); + end; +end; + +procedure TTBCustomItem.SubMenuImagesChanged; +begin + Notify(tbicSubMenuImagesChanged, -1, nil); +end; + +procedure TTBCustomItem.TurnSiblingsOff; +var + I: Integer; + Item: TTBCustomItem; +begin + if (GroupIndex <> 0) and Assigned(FParent) then begin + for I := 0 to FParent.Count-1 do begin + Item := FParent[I]; + if (Item <> Self) and (Item.GroupIndex = GroupIndex) then + Item.Checked := False; + end; + end; +end; + +procedure TTBCustomItem.SetCaption(Value: String); +begin + if FCaption <> Value then begin + FCaption := Value; + Change(True); + end; +end; + +procedure TTBCustomItem.SetChecked(Value: Boolean); +begin + if FChecked <> Value then begin + FChecked := Value; + Change(False); + if Value then + TurnSiblingsOff; + end; +end; + +procedure TTBCustomItem.SetDisplayMode(Value: TTBItemDisplayMode); +begin + if FDisplayMode <> Value then begin + FDisplayMode := Value; + Change(True); + end; +end; + +procedure TTBCustomItem.EnabledChanged; +begin + Change(False); +end; + +procedure TTBCustomItem.SetEnabled(Value: Boolean); +begin + if FEnabled <> Value then begin + FEnabled := Value; + EnabledChanged; + end; +end; + +procedure TTBCustomItem.SetGroupIndex(Value: Integer); +begin + if FGroupIndex <> Value then begin + FGroupIndex := Value; + if Checked then + TurnSiblingsOff; + end; +end; + +procedure TTBCustomItem.SetImageIndex(Value: TImageIndex); +var + HadNoImage: Boolean; +begin + if FImageIndex <> Value then begin + HadNoImage := FImageIndex = -1; + FImageIndex := Value; + Change(HadNoImage xor (Value = -1)); + end; +end; + +function TTBCustomItem.ChangeImages(var AImages: TCustomImageList; + const Value: TCustomImageList; var AChangeLink: TTBImageChangeLink): Boolean; +{ Returns True if image list was resized } +var + LastWidth, LastHeight: Integer; +begin + Result := False; + LastWidth := -1; + LastHeight := -1; + if Assigned(AImages) then begin + LastWidth := AImages.Width; + LastHeight := AImages.Height; + AImages.UnregisterChanges(AChangeLink); + if Value = nil then begin + AChangeLink.Free; + AChangeLink := nil; + Result := True; + end; + end; + AImages := Value; + if Assigned(Value) then begin + Result := (Value.Width <> LastWidth) or (Value.Height <> LastHeight); + if AChangeLink = nil then begin + AChangeLink := TTBImageChangeLink.Create; + AChangeLink.FLastWidth := Value.Width; + AChangeLink.FLastHeight := Value.Height; + AChangeLink.OnChange := ImageListChangeHandler; + end; + Value.RegisterChanges(AChangeLink); + Value.FreeNotification(Self); + end; +end; + +procedure TTBCustomItem.SetImages(Value: TCustomImageList); +begin + if FImages <> Value then + Change(ChangeImages(FImages, Value, FImagesChangeLink)); +end; + +procedure TTBCustomItem.SetSubMenuImages(Value: TCustomImageList); +begin + if FSubMenuImages <> Value then begin + ChangeImages(FSubMenuImages, Value, FSubMenuImagesChangeLink); + SubMenuImagesChanged; + end; +end; + +procedure TTBCustomItem.SetInheritOptions(Value: Boolean); +begin + if FInheritOptions <> Value then begin + FInheritOptions := Value; + RefreshOptions; + end; +end; + +procedure TTBCustomItem.SetLinkSubitems(Value: TTBCustomItem); +begin + if Value = Self then + Value := nil; + if FLinkSubitems <> Value then begin + if Assigned(FLinkSubitems) then + RemoveFromList(FLinkSubitems.FLinkParents, Self); + FLinkSubitems := Value; + if Assigned(Value) then begin + Value.FreeNotification(Self); + AddToList(Value.FLinkParents, Self); + end; + Notify(tbicSubitemsChanged, -1, nil); + end; +end; + +function TTBCustomItem.FixOptions(const AOptions: TTBItemOptions): TTBItemOptions; +begin + Result := AOptions; + if not(tboToolbarStyle in Result) then + Exclude(Result, tboToolbarSize); +end; + +procedure TTBCustomItem.RefreshOptions; +const + NonInheritedOptions = [tboDefault]; + ChangeOptions = [tboDefault, tboDropdownArrow, tboImageAboveCaption, + tboNoRotation, tboSameWidth, tboToolbarStyle, tboToolbarSize]; +var + OldOptions, NewOptions: TTBItemOptions; + I: Integer; + Item: TTBCustomItem; +begin + OldOptions := FEffectiveOptions; + if FInheritOptions and Assigned(FParent) then + NewOptions := FParent.FEffectiveOptions - NonInheritedOptions + else + NewOptions := []; + NewOptions := FixOptions(NewOptions - FMaskOptions + FOptions); + if FEffectiveOptions <> NewOptions then begin + FEffectiveOptions := NewOptions; + if (OldOptions * ChangeOptions) <> (NewOptions * ChangeOptions) then + Change(True); + for I := 0 to FItemCount-1 do begin + Item := FItems[I].Item; + if Item.FInheritOptions then + Item.RefreshOptions; + end; + end; +end; + +procedure TTBCustomItem.SetMaskOptions(Value: TTBItemOptions); +begin + if FMaskOptions <> Value then begin + FMaskOptions := Value; + RefreshOptions; + end; +end; + +procedure TTBCustomItem.SetOptions(Value: TTBItemOptions); +begin + Value := FixOptions(Value); + if FOptions <> Value then begin + FOptions := Value; + RefreshOptions; + end; +end; + +procedure TTBCustomItem.SetRadioItem(Value: Boolean); +begin + if FRadioItem <> Value then begin + FRadioItem := Value; + Change(False); + end; +end; + +procedure TTBCustomItem.SetVisible(Value: Boolean); +begin + if FVisible <> Value then begin + FVisible := Value; + Change(True); + end; +end; + + +{ TTBGroupItem } + +constructor TTBGroupItem.Create(AOwner: TComponent); +begin + inherited; + ItemStyle := ItemStyle + [tbisEmbeddedGroup, tbisSubitemsEditable]; +end; + + +{ TTBSubmenuItem } + +constructor TTBSubmenuItem.Create(AOwner: TComponent); +begin + inherited; + ItemStyle := ItemStyle + [tbisSubMenu, tbisSubitemsEditable]; +end; + +function TTBSubmenuItem.GetDropdownCombo: Boolean; +begin + Result := tbisCombo in ItemStyle; +end; + +procedure TTBSubmenuItem.SetDropdownCombo(Value: Boolean); +begin + if (tbisCombo in ItemStyle) <> Value then begin + if Value then + ItemStyle := ItemStyle + [tbisCombo] + else + ItemStyle := ItemStyle - [tbisCombo]; + Change(True); + end; +end; + + +{ TTBSeparatorItem } + +constructor TTBSeparatorItem.Create(AOwner: TComponent); +begin + inherited; + ItemStyle := ItemStyle - [tbisSelectable, tbisRedrawOnSelChange, + tbisRedrawOnMouseOverChange] + [tbisSeparator, tbisClicksTransparent]; +end; + +function TTBSeparatorItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBSeparatorItemViewer; +end; + +procedure TTBSeparatorItem.SetBlank(Value: Boolean); +begin + if FBlank <> Value then begin + FBlank := Value; + Change(False); + end; +end; + + +{ TTBSeparatorItemViewer } + +procedure TTBSeparatorItemViewer.CalcSize(const Canvas: TCanvas; + var AWidth, AHeight: Integer); +begin + if not IsToolbarStyle then + Inc(AHeight, DivRoundUp(GetTextHeight(Canvas.Handle) * 2, 3)) + else begin + AWidth := 6; + AHeight := 6; + end; +end; + +procedure TTBSeparatorItemViewer.Paint(const Canvas: TCanvas; + const ClientAreaRect: TRect; IsSelected, IsPushed, UseDisabledShadow: Boolean); +var + DC: HDC; + R: TRect; + ToolbarStyle, Horiz, LineSep: Boolean; +begin + DC := Canvas.Handle; + if TTBSeparatorItem(Item).FBlank then + Exit; + + R := ClientAreaRect; + ToolbarStyle := IsToolbarStyle; + Horiz := not ToolbarStyle or (View.FOrientation = tbvoVertical); + LineSep := tbisLineSep in State; + if LineSep then + Horiz := not Horiz; + if Horiz then begin + R.Top := R.Bottom div 2 - 1; + if not ToolbarStyle then + InflateRect(R, -tbMenuSeparatorOffset, 0) + else if LineSep then begin + if View.FOrientation = tbvoFloating then + InflateRect(R, -tbLineSepOffset, 0) + else + InflateRect(R, -tbDockedLineSepOffset, 0); + end; + DrawEdge(DC, R, EDGE_ETCHED, BF_TOP); + end + else begin + R.Left := R.Right div 2 - 1; + if LineSep then + InflateRect(R, 0, -tbDockedLineSepOffset); + DrawEdge(DC, R, EDGE_ETCHED, BF_LEFT); + end; +end; + +function TTBSeparatorItemViewer.UsesSameWidth: Boolean; +begin + Result := False; +end; + + +{ TTBControlItem } + +constructor TTBControlItem.Create(AOwner: TComponent); +begin + inherited; + ItemStyle := ItemStyle - [tbisSelectable] + [tbisClicksTransparent]; +end; + +constructor TTBControlItem.CreateControlItem(AOwner: TComponent; + AControl: TControl); +begin + FControl := AControl; + AControl.FreeNotification(Self); + Create(AOwner); +end; + +destructor TTBControlItem.Destroy; +begin + inherited; + { Free the associated control *after* the item is completely destroyed } + if not FDontFreeControl and Assigned(FControl) and + not(csAncestor in FControl.ComponentState) then + FControl.Free; +end; + +procedure TTBControlItem.Notification(AComponent: TComponent; + Operation: TOperation); +begin + inherited; + if (Operation = opRemove) and (AComponent = FControl) then + Control := nil; +end; + +procedure TTBControlItem.SetControl(Value: TControl); +begin + if FControl <> Value then begin + FControl := Value; + if Assigned(Value) then + Value.FreeNotification(Self); + Change(True); + end; +end; + + +{ TTBItemViewer } + +constructor TTBItemViewer.Create(AView: TTBView; AItem: TTBCustomItem; + AGroupLevel: Integer); +begin + FItem := AItem; + FView := AView; + FGroupLevel := AGroupLevel; + ReferenceClickWnd; +end; + +destructor TTBItemViewer.Destroy; +begin + RemoveFromClickList(Self); + if Assigned(FAccObjectInstance) then begin + FAccObjectInstance.ClientIsDestroying; + FAccObjectInstance := nil; + end; + inherited; + ReleaseClickWnd; +end; + +function TTBItemViewer.GetAccObject: IDispatch; +begin + if FAccObjectInstance = nil then begin + if not InitializeOleAcc then begin + Result := nil; + Exit; + end; + FAccObjectInstance := TTBItemViewerAccObject.Create(Self); + end; + Result := FAccObjectInstance; +end; + +procedure TTBItemViewer.AccSelect(const AExecute: Boolean); +{ Called by ClickWndProc when an item of type TTBItemViewer is in ClickList } +var + Obj: IDispatch; +begin + { Ensure FAccObjectInstance is created by calling GetAccObject } + Obj := GetAccObject; + if Assigned(Obj) then + (FAccObjectInstance as TTBItemViewerAccObject).HandleAccSelect(AExecute); +end; + +procedure TTBItemViewer.PostAccSelect(const AExecute: Boolean); +{ Internally called by TTBItemViewerAccObject. Don't call directly. } +begin + QueueClick(Self, Ord(AExecute)); +end; + +function TTBItemViewer.IsAccessible: Boolean; +{ Returns True if MSAA clients should know about the viewer, specifically + if it's either shown, off-edge, or clipped (in other words, not completely + invisible/inaccessible). } +begin + { Note: Can't simply check Item.Visible because the chevron item's Visible + property is always True } + Result := Show or OffEdge or Clipped; +end; + +function TTBItemViewer.GetCaptionText: String; +var + P: Integer; +begin + Result := Item.Caption; + P := Pos(#9, Result); + if P <> 0 then + SetLength(Result, P-1); +end; + +function TTBItemViewer.GetHintText: String; +begin + Result := GetShortHint(Item.Hint); + { If there is no short hint, use the caption for the hint. Like Office, + strip any trailing colon or ellipsis. } + if (Result = '') and not(tboNoAutoHint in Item.EffectiveOptions) and + (not(tbisSubmenu in Item.ItemStyle) or (tbisCombo in Item.ItemStyle) or + not CaptionShown) then + Result := StripAccelChars(StripTrailingPunctuation(GetCaptionText)); + { Call associated action's OnHint event handler to post-process the hint } + if Assigned(Item.ActionLink) and + (Item.ActionLink.Action is TCustomAction) then begin + if not TCustomAction(Item.ActionLink.Action).DoHint(Result) then + Result := ''; + { Note: TControlActionLink.DoShowHint actually misinterprets the result + of DoHint, but we get it right... } + end; + { Add shortcut text } + if (Result <> '') and Application.HintShortCuts and + (Item.ShortCut <> scNone) then + Result := Format('%s (%s)', [Result, ShortCutToText(Item.ShortCut)]); +end; + +function TTBItemViewer.CaptionShown: Boolean; +begin + Result := (GetCaptionText <> '') and (not IsToolbarSize or + (Item.ImageIndex < 0) or (Item.DisplayMode in [nbdmTextOnly, nbdmImageAndText])) or + (tboImageAboveCaption in Item.EffectiveOptions); +end; + +function TTBItemViewer.ImageShown: Boolean; +begin + {}{should also return false if Images=nil (use UsedImageList?)} + ImageShown := (Item.ImageIndex >= 0) and + ((Item.DisplayMode in [nbdmDefault, nbdmImageAndText]) or + (IsToolbarStyle and (Item.DisplayMode = nbdmTextOnlyInMenus))); +end; + +function TTBItemViewer.GetImageList: TCustomImageList; +var + V: TTBView; +begin + Result := Item.Images; + if Assigned(Result) then + Exit; + V := View; + repeat + if Assigned(V.FCurParentItem) then begin + Result := V.FCurParentItem.SubMenuImages; + if Assigned(Result) then + Break; + end; + if Assigned(V.FParentItem) then begin + Result := V.FParentItem.SubMenuImages; + if Assigned(Result) then + Break; + end; + V := V.FParentView; + until V = nil; +end; + +function TTBItemViewer.IsRotated: Boolean; +{ Returns True if the caption should be drawn with rotated (vertical) text, + underneath the image } +begin + Result := (View.Orientation = tbvoVertical) and + not (tboNoRotation in Item.EffectiveOptions) and + not (tboImageAboveCaption in Item.EffectiveOptions); +end; + +procedure TTBItemViewer.CalcSize(const Canvas: TCanvas; + var AWidth, AHeight: Integer); +var + ToolbarStyle: Boolean; + DC: HDC; + TextMetrics: TTextMetric; + H, LeftMargin: Integer; + ImgList: TCustomImageList; + S: String; + RotatedFont, SaveFont: HFONT; +begin + ToolbarStyle := IsToolbarStyle; + DC := Canvas.Handle; + ImgList := GetImageList; + if ToolbarStyle then begin + AWidth := 6; + AHeight := 6; + end + else begin + AWidth := 0; + AHeight := 0; + end; + if not ToolbarStyle or CaptionShown then begin + if not IsRotated then begin + GetTextMetrics(DC, TextMetrics); + Inc(AHeight, TextMetrics.tmHeight); + Inc(AWidth, GetTextWidth(DC, GetCaptionText, True)); + if ToolbarStyle then + Inc(AWidth, 6); + end + else begin + { Vertical text isn't always the same size as horizontal text, so we have + to select the rotated font into the DC to get an accurate size } + RotatedFont := CreateRotatedFont(DC); + SaveFont := SelectObject(DC, RotatedFont); + GetTextMetrics(DC, TextMetrics); + Inc(AWidth, TextMetrics.tmHeight); + Inc(AHeight, GetTextWidth(DC, GetCaptionText, True)); + if ToolbarStyle then + Inc(AHeight, 6); + SelectObject(DC, SaveFont); + DeleteObject(RotatedFont); + end; + end; + if ToolbarStyle and ImageShown and Assigned(ImgList) then begin + if not IsRotated and not(tboImageAboveCaption in Item.EffectiveOptions) then begin + Inc(AWidth, ImgList.Width + 1); + if AHeight < ImgList.Height + 6 then + AHeight := ImgList.Height + 6; + end + else begin + Inc(AHeight, ImgList.Height); + if AWidth < ImgList.Width + 7 then + AWidth := ImgList.Width + 7; + end; + end; + if ToolbarStyle and (tbisSubmenu in Item.ItemStyle) then begin + if tbisCombo in Item.ItemStyle then + Inc(AWidth, tbDropdownComboArrowWidth) + else + if tboDropdownArrow in Item.EffectiveOptions then begin + if View.Orientation <> tbvoVertical then + Inc(AWidth, tbDropdownArrowWidth) + else + Inc(AHeight, tbDropdownArrowWidth); + end; + end; + if not ToolbarStyle then begin + Inc(AHeight, TextMetrics.tmExternalLeading + tbMenuVerticalMargin); + if Assigned(ImgList) then begin + H := ImgList.Height + 3; + if H > AHeight then + AHeight := H; + LeftMargin := MulDiv(ImgList.Width + 3, AHeight, H); + end + else + LeftMargin := AHeight; + Inc(AWidth, LeftMargin + tbMenuImageTextSpace + tbMenuLeftTextMargin + + tbMenuRightTextMargin); + S := Item.GetShortCutText; + if S <> '' then + Inc(AWidth, (AHeight - 6) + GetTextWidth(DC, S, True)); + Inc(AWidth, AHeight); + end; +end; + +procedure TTBItemViewer.DrawItemCaption(const Canvas: TCanvas; ARect: TRect; + const ACaption: String; ADrawDisabledShadow: Boolean; AFormat: UINT); +var + DC: HDC; + + procedure Draw; + begin + if not IsRotated then + DrawText(DC, PChar(ACaption), Length(ACaption), ARect, AFormat) + else + DrawRotatedText(DC, ACaption, ARect, AFormat); + end; + +var + ShadowColor, HighlightColor, SaveTextColor: DWORD; +begin + DC := Canvas.Handle; + if not ADrawDisabledShadow then + Draw + else begin + ShadowColor := GetSysColor(COLOR_BTNSHADOW); + HighlightColor := GetSysColor(COLOR_BTNHIGHLIGHT); + OffsetRect(ARect, 1, 1); + SaveTextColor := SetTextColor(DC, HighlightColor); + Draw; + OffsetRect(ARect, -1, -1); + SetTextColor(DC, ShadowColor); + Draw; + SetTextColor(DC, SaveTextColor); + end; +end; + +procedure TTBItemViewer.Paint(const Canvas: TCanvas; + const ClientAreaRect: TRect; IsSelected, IsPushed, UseDisabledShadow: Boolean); +var + ShowEnabled, HasArrow: Boolean; + MenuCheckWidth, MenuCheckHeight: Integer; + + function GetDrawTextFlags: UINT; + begin + Result := 0; + if not AreKeyboardCuesEnabled and (vsUseHiddenAccels in View.FStyle) and + not(vsShowAccels in View.FState) then + Result := DT_HIDEPREFIX; + end; + + procedure DrawSubmenuArrow; + var + BR: TRect; + Bmp: TBitmap; + + procedure DrawWithColor(AColor: TColor); + const + ROP_DSPDxax = $00E20746; + var + DC: HDC; + SaveTextColor, SaveBkColor: TColorRef; + begin + Canvas.Brush.Color := AColor; + DC := Canvas.Handle; + SaveTextColor := SetTextColor(DC, clWhite); + SaveBkColor := SetBkColor(DC, clBlack); + BitBlt(DC, BR.Left, BR.Top, MenuCheckWidth, MenuCheckHeight, + Bmp.Canvas.Handle, 0, 0, ROP_DSPDxax); + SetBkColor(DC, SaveBkColor); + SetTextColor(DC, SaveTextColor); + Canvas.Brush.Style := bsClear; + end; + + begin + Bmp := TBitmap.Create; + try + Bmp.Monochrome := True; + Bmp.Width := MenuCheckWidth; + Bmp.Height := MenuCheckHeight; + BR := Rect(0, 0, MenuCheckWidth, MenuCheckHeight); + DrawFrameControl(Bmp.Canvas.Handle, BR, DFC_MENU, DFCS_MENUARROW); + OffsetRect(BR, ClientAreaRect.Right - MenuCheckWidth, + ClientAreaRect.Top + ((ClientAreaRect.Bottom - ClientAreaRect.Top) - MenuCheckHeight) div 2); + if not UseDisabledShadow then begin + if ShowEnabled and (tbisCombo in Item.ItemStyle) and IsSelected then begin + OffsetRect(BR, 1, 1); + DrawWithColor(clBtnText); + end + else + DrawWithColor(Canvas.Font.Color); + end + else begin + OffsetRect(BR, 1, 1); + DrawWithColor(clBtnHighlight); + OffsetRect(BR, -1, -1); + DrawWithColor(clBtnShadow); + end; + finally + Bmp.Free; + end; + end; + + procedure DrawDropdownArrow(R: TRect; Rotated: Boolean); + + procedure DrawWithColor(AColor: TColor); + var + X, Y: Integer; + P: array[0..2] of TPoint; + begin + X := (R.Left + R.Right) div 2; + Y := (R.Top + R.Bottom) div 2; + if not Rotated then begin + Dec(Y); + P[0].X := X-2; + P[0].Y := Y; + P[1].X := X+2; + P[1].Y := Y; + P[2].X := X; + P[2].Y := Y+2; + end + else begin + Dec(X); + P[0].X := X; + P[0].Y := Y+2; + P[1].X := X; + P[1].Y := Y-2; + P[2].X := X-2; + P[2].Y := Y; + end; + Canvas.Pen.Color := AColor; + Canvas.Brush.Color := AColor; + Canvas.Polygon(P); + end; + + begin + if not UseDisabledShadow then + DrawWithColor(Canvas.Font.Color) + else begin + OffsetRect(R, 1, 1); + DrawWithColor(clBtnHighlight); + OffsetRect(R, -1, -1); + DrawWithColor(clBtnShadow); + end; + end; + + function GetDitherBitmap: TBitmap; + begin + Result := AllocPatternBitmap(clBtnFace, clBtnHighlight); + Result.HandleType := bmDDB; { needed for Win95, or else brush is solid white } + end; + +const + EdgeStyles: array[Boolean] of UINT = (BDR_RAISEDINNER, BDR_SUNKENOUTER); + CheckMarkPoints: array[0..11] of TPoint = ( + { Black } + (X: -2; Y: -2), (X: 0; Y: 0), (X: 4; Y: -4), + (X: 4; Y: -3), (X: 0; Y: 1), (X: -2; Y: -1), + (X: -2; Y: -2), + { White } + (X: -3; Y: -2), (X: -3; Y: -1), (X: 0; Y: 2), + (X: 5; Y: -3), (X: 5; Y: -5)); +var + ToolbarStyle, ImageIsShown: Boolean; + R, RC, RD: TRect; + S: String; + ImgList: TCustomImageList; + I, X, Y: Integer; + Points: array[0..11] of TPoint; + DrawTextFlags: UINT; + LeftMargin: Integer; + TextMetrics: TTextMetric; +begin + ToolbarStyle := IsToolbarStyle; + ShowEnabled := Item.Enabled or View.Customizing; + HasArrow := (tbisSubmenu in Item.ItemStyle) and + ((tbisCombo in Item.ItemStyle) or (tboDropdownArrow in Item.EffectiveOptions)); + MenuCheckWidth := GetSystemMetrics(SM_CXMENUCHECK); + MenuCheckHeight := GetSystemMetrics(SM_CYMENUCHECK); + ImgList := GetImageList; + ImageIsShown := ImageShown and Assigned(ImgList); + LeftMargin := 0; + if not ToolbarStyle then begin + if Assigned(ImgList) then + LeftMargin := MulDiv(ImgList.Width + 3, ClientAreaRect.Bottom, ImgList.Height + 3) + else + LeftMargin := ClientAreaRect.Bottom; + end; + + { Border } + RC := ClientAreaRect; + if ToolbarStyle then begin + if HasArrow then begin + if tbisCombo in Item.ItemStyle then begin + Dec(RC.Right, tbDropdownComboMargin); + RD := RC; + Dec(RC.Right, tbDropdownComboArrowWidth - tbDropdownComboMargin); + RD.Left := RC.Right; + end + else begin + if View.Orientation <> tbvoVertical then + RD := Rect(RC.Right - tbDropdownArrowWidth - tbDropdownArrowMargin, 0, + RC.Right - tbDropdownArrowMargin, RC.Bottom) + else + RD := Rect(0, RC.Bottom - tbDropdownArrowWidth - tbDropdownArrowMargin, + RC.Right, RC.Bottom - tbDropdownArrowMargin); + end; + end + else + SetRectEmpty(RD); + if (IsSelected and ShowEnabled) or Item.Checked or + (csDesigning in Item.ComponentState) then begin + if not(tbisCombo in Item.ItemStyle) then + DrawEdge(Canvas.Handle, RC, EdgeStyles[IsPushed or Item.Checked], BF_RECT) + else begin + DrawEdge(Canvas.Handle, RC, EdgeStyles[(IsPushed and View.FCapture) or Item.Checked], BF_RECT); + if (IsSelected and ShowEnabled) or + (csDesigning in Item.ComponentState) then + DrawEdge(Canvas.Handle, RD, EdgeStyles[IsPushed and not View.FCapture], BF_RECT); + end; + end; + if HasArrow then begin + if not(tbisCombo in Item.ItemStyle) and IsPushed then + OffsetRect(RD, 1, 1); + DrawDropdownArrow(RD, not(tbisCombo in Item.ItemStyle) and + (View.Orientation = tbvoVertical)); + end; + InflateRect(RC, -1, -1); + if Item.Checked and not (IsSelected and ShowEnabled) then begin + Canvas.Brush.Bitmap := GetDitherBitmap; + Canvas.FillRect(RC); + Canvas.Brush.Style := bsClear; + end; + InflateRect(RC, -1, -1); + if Item.Checked or + ((IsSelected and IsPushed) and + (not(tbisCombo in Item.ItemStyle) or View.FCapture)) then + OffsetRect(RC, 1, 1); + if HasArrow and not(tbisCombo in Item.ItemStyle) then begin + if View.Orientation <> tbvoVertical then + Dec(RC.Right, tbDropdownArrowWidth) + else + Dec(RC.Bottom, tbDropdownArrowWidth); + end; + end + else begin + { On selected menu items, fill the background with the selected color. + Note: This assumes the brush color was not changed from the initial + value. } + if IsSelected then begin + R := RC; + if ImageIsShown or Item.Checked then + Inc(R.Left, LeftMargin + tbMenuImageTextSpace); + if (tbisCombo in Item.ItemStyle) and IsSelected and ShowEnabled then + Dec(R.Right, MenuCheckWidth); + Canvas.FillRect(R); + end; + end; + + { Adjust brush & font } + Canvas.Brush.Style := bsClear; + if tboDefault in Item.EffectiveOptions then + with Canvas.Font do Style := Style + [fsBold]; + GetTextMetrics(Canvas.Handle, TextMetrics); + + { Caption } + if CaptionShown then begin + S := GetCaptionText; + R := RC; + DrawTextFlags := GetDrawTextFlags; + if ToolbarStyle then begin + if ImageIsShown then begin + if not IsRotated and not(tboImageAboveCaption in Item.EffectiveOptions) then + Inc(R.Left, ImgList.Width + 1) + else + Inc(R.Top, ImgList.Height + 1); + end; + DrawItemCaption(Canvas, R, S, UseDisabledShadow, + DT_SINGLELINE or DT_CENTER or DT_VCENTER or DrawTextFlags) + end + else begin + Inc(R.Left, LeftMargin + tbMenuImageTextSpace + tbMenuLeftTextMargin); + { Like standard menus, shift the text up one pixel if the text height + is 4 pixels less than the total item height. This is done so underlined + characters aren't displayed too low. } + if (R.Bottom - R.Top) - (TextMetrics.tmHeight + TextMetrics.tmExternalLeading) = tbMenuVerticalMargin then + Dec(R.Bottom); + Inc(R.Top, TextMetrics.tmExternalLeading); + DrawItemCaption(Canvas, R, S, UseDisabledShadow, + DT_SINGLELINE or DT_LEFT or DT_VCENTER or DrawTextFlags); + end; + end; + + { Shortcut and/or submenu arrow (menus only) } + if not ToolbarStyle then begin + S := Item.GetShortCutText; + if S <> '' then begin + R := RC; + R.Left := R.Right - (R.Bottom - R.Top) - GetTextWidth(Canvas.Handle, S, True); + { Like standard menus, shift the text up one pixel if the text height + is 4 pixels less than the total item height. This is done so underlined + characters aren't displayed too low. } + if (R.Bottom - R.Top) - (TextMetrics.tmHeight + TextMetrics.tmExternalLeading) = tbMenuVerticalMargin then + Dec(R.Bottom); + Inc(R.Top, TextMetrics.tmExternalLeading); + DrawItemCaption(Canvas, R, S, UseDisabledShadow, + DT_SINGLELINE or DT_LEFT or DT_VCENTER or DT_NOPREFIX); + end; + if tbisSubmenu in Item.ItemStyle then begin + if tbisCombo in Item.ItemStyle then begin + R := RC; + R.Left := R.Right - MenuCheckWidth; + if IsSelected and ShowEnabled then + DrawEdge(Canvas.Handle, R, BDR_SUNKENOUTER, BF_RECT or BF_MIDDLE) + else begin + Dec(R.Left); + if not IsSelected then + DrawEdge(Canvas.Handle, R, EDGE_ETCHED, BF_LEFT) + else + DrawEdge(Canvas.Handle, R, BDR_SUNKENOUTER, BF_LEFT); + end; + end; + DrawSubmenuArrow; + end; + end; + + { Image, or check box } + if ImageIsShown or (not ToolbarStyle and Item.Checked) then begin + R := RC; + if ToolbarStyle then begin + if not IsRotated and not(tboImageAboveCaption in Item.EffectiveOptions) then + R.Right := R.Left + ImgList.Width + 2 + else + R.Bottom := R.Top + ImgList.Height + 2; + end + else begin + R.Right := R.Left + LeftMargin; + if (IsSelected and ShowEnabled) or Item.Checked then + DrawEdge(Canvas.Handle, R, EdgeStyles[Item.Checked], BF_RECT or BF_MIDDLE); + if Item.Checked and not IsSelected then begin + InflateRect(R, -1, -1); + Canvas.Brush.Bitmap := GetDitherBitmap; + Canvas.FillRect(R); + Canvas.Brush.Style := bsClear; + InflateRect(R, 1, 1); + end; + if Item.Checked then + OffsetRect(R, 1, 1); + end; + if ImageIsShown then begin + X := R.Left + ((R.Right - R.Left) - ImgList.Width) div 2; + Y := R.Top + ((R.Bottom - R.Top) - ImgList.Height) div 2; + if ImgList is TTBCustomImageList then + TTBCustomImageList(ImgList).DrawState(Canvas, X, Y, Item.ImageIndex, + ShowEnabled, IsSelected, Item.Checked) + else + ImgList.Draw(Canvas, X, Y, Item.ImageIndex, ShowEnabled); + end + else + if not ToolbarStyle and Item.Checked then begin + { Draw default check mark or radio button image when user hasn't + specified their own } + X := (R.Left + R.Right) div 2; + Y := (R.Top + R.Bottom) div 2; + if Item.RadioItem then begin + Canvas.Pen.Color := clBtnText; + Canvas.Brush.Color := clBtnText; + Canvas.RoundRect(X-3, Y-3, X+2, Y+2, 2, 2); + Canvas.Pen.Color := clBtnHighlight; + Canvas.Brush.Style := bsClear; + Canvas.RoundRect(X-4, Y-4, X+3, Y+3, 6, 6); + end + else begin + Dec(X, 2); + Inc(Y); + System.Move(CheckMarkPoints, Points, 12 * SizeOf(TPoint)); + for I := Low(Points) to High(Points) do begin + Inc(Points[I].X, X); + Inc(Points[I].Y, Y); + end; + Canvas.Pen.Color := clBtnText; + Polyline(Canvas.Handle, Points[0], 7); + Canvas.Pen.Color := clBtnHighlight; + Polyline(Canvas.Handle, Points[7], 5); + end; + end; + end; +end; + +procedure TTBItemViewer.GetCursor(const Pt: TPoint; var ACursor: HCURSOR); +begin +end; + +function TTBItemViewer.GetIndex: Integer; +begin + Result := View.IndexOf(Self); +end; + +function TTBItemViewer.IsToolbarSize: Boolean; +begin + Result := View.FIsToolbar or (tboToolbarSize in Item.FEffectiveOptions); +end; + +function TTBItemViewer.IsToolbarStyle: Boolean; +begin + Result := View.FIsToolbar or (tboToolbarStyle in Item.FEffectiveOptions); +end; + +function TTBItemViewer.IsPtInButtonPart(X, Y: Integer): Boolean; +var + W: Integer; +begin + Result := not(tbisSubmenu in Item.ItemStyle); + if tbisCombo in Item.ItemStyle then begin + if IsToolbarStyle then + W := tbDropdownComboArrowWidth + else + W := GetSystemMetrics(SM_CXMENUCHECK); + Result := X < (BoundsRect.Right - BoundsRect.Left) - W; + end; +end; + +procedure TTBItemViewer.MouseDown(Shift: TShiftState; X, Y: Integer; + var MouseDownOnMenu: Boolean); + + procedure HandleDefaultDoubleClick(const View: TTBView); + { Looks for a tboDefault item in View and ends the modal loop if it finds + one. } + var + I: Integer; + Viewer: TTBItemViewer; + Item: TTBCustomItem; + begin + for I := 0 to View.FViewerCount-1 do begin + Viewer := View.FViewers[I]; + Item := Viewer.Item; + if (Viewer.Show or Viewer.Clipped) and (tboDefault in Item.EffectiveOptions) and + (tbisSelectable in Item.ItemStyle) and Item.Enabled and Item.Visible then begin + Viewer.Execute(True); + Break; + end; + end; + end; + +var + WasAlreadyOpen: Boolean; +begin + if not Item.Enabled then begin + if (View.FParentView = nil) and not View.FIsPopup then + View.EndModal; + Exit; + end; + if IsPtInButtonPart(X, Y) then begin + if IsToolbarStyle then begin + View.CancelChildPopups; + View.SetCapture; + View.Invalidate(Self); + end; + end + else begin + WasAlreadyOpen := (View.FOpenViewer = Self); + if View.OpenChildPopup(False) then begin + if WasAlreadyOpen and ((View.FParentView = nil) and not View.FIsPopup) then + MouseDownOnMenu := True; + if (ssDouble in Shift) and not(tbisCombo in Item.ItemStyle) then + HandleDefaultDoubleClick(View.FOpenViewerView); + end; + end; +end; + +procedure TTBItemViewer.MouseMove(X, Y: Integer); +begin +end; + +procedure TTBItemViewer.MouseUp(X, Y: Integer; MouseWasDownOnMenu: Boolean); +var + HadCapture, IsToolbarItem: Boolean; +begin + HadCapture := View.FCapture; + View.CancelCapture; + IsToolbarItem := (View.FParentView = nil) and not View.FIsPopup; + if not View.FMouseOverSelected or not Item.Enabled or + (tbisClicksTransparent in Item.ItemStyle) then begin + if IsToolbarItem then + View.EndModal; + Exit; + end; + if (tbisSubmenu in Item.ItemStyle) and not IsPtInButtonPart(X, Y) then begin + if IsToolbarItem and MouseWasDownOnMenu then + View.EndModal; + end + else begin + { it's a 'normal' item } + if not IsToolbarStyle or HadCapture then + Execute(True); + end; +end; + +procedure TTBItemViewer.MouseWheel(WheelDelta, X, Y: Integer); +begin +end; + +procedure TTBItemViewer.LosingCapture; +begin + View.Invalidate(Self); +end; + +procedure TTBItemViewer.Entering; +begin + if Assigned(Item.FOnSelect) then + Item.FOnSelect(Item, Self, True); +end; + +procedure TTBItemViewer.Leaving; +begin + if Assigned(Item.FOnSelect) then + Item.FOnSelect(Item, Self, False); +end; + +procedure TTBItemViewer.KeyDown(var Key: Word; Shift: TShiftState); +begin +end; + +function TTBItemViewer.ScreenToClient(const P: TPoint): TPoint; +begin + Result := View.FWindow.ScreenToClient(P); + Dec(Result.X, BoundsRect.Left); + Dec(Result.Y, BoundsRect.Top); +end; + +function TTBItemViewer.UsesSameWidth: Boolean; +{ If UsesSameWidth returns True, the item viewer's width will be expanded to + match the widest item viewer on the same view whose UsesSameWidth method + also returns True. } +begin + Result := (tboImageAboveCaption in Item.FEffectiveOptions) and + (tboSameWidth in Item.FEffectiveOptions) and IsToolbarSize; +end; + +function TTBItemViewer.DoExecute: Boolean; +{ Low-level 'execute' handler. Returns True if the caller should call + GivePriority on the viewer (normally, if the 'execute' operation was a + success and the modal loop is ending). } +begin + View.EndModalWithClick(Self); + Result := True; +end; + +procedure TTBItemViewer.Execute(AGivePriority: Boolean); +{ Calls DoExecute and, if applicable, View.GivePriority. Note that it is up to + the caller to check the viewer's visibility and enabled state. } +begin + if DoExecute and AGivePriority then + View.GivePriority(Self); +end; + +function TTBItemViewer.GetAccRole: Integer; +{ Returns the MSAA "role" of the viewer. } +const + { Constants from OleAcc.h } + ROLE_SYSTEM_CLIENT = $a; + ROLE_SYSTEM_MENUITEM = $c; + ROLE_SYSTEM_SEPARATOR = $15; + ROLE_SYSTEM_PUSHBUTTON = $2b; + ROLE_SYSTEM_BUTTONMENU = $39; +begin + if Item is TTBControlItem then + Result := ROLE_SYSTEM_CLIENT + else if tbisSeparator in Item.ItemStyle then + Result := ROLE_SYSTEM_SEPARATOR + else if View.IsPopup or (vsMenuBar in View.Style) then + Result := ROLE_SYSTEM_MENUITEM + else if tbisSubmenu in Item.ItemStyle then + Result := ROLE_SYSTEM_BUTTONMENU + else + Result := ROLE_SYSTEM_PUSHBUTTON; +end; + +function TTBItemViewer.GetAccValue(var Value: WideString): Boolean; +{ Gets the MSAA "value" text of the viewer. Returns True if something was + assigned to Value, or False if the viewer does not possess a "value". } +begin + Result := False; +end; + + +{ TTBView } + +constructor TTBView.CreateView(AOwner: TComponent; AParentView: TTBView; + AParentItem: TTBCustomItem; AWindow: TWinControl; + AIsToolbar, ACustomizing, AUsePriorityList: Boolean); +begin + Create(AOwner); + FBackgroundColor := clDefault; + FCustomizing := ACustomizing; + FIsPopup := not AIsToolbar; + FIsToolbar := AIsToolbar; + FNewViewersGetHighestPriority := True; + FParentView := AParentView; + FParentItem := AParentItem; + if Assigned(FParentItem) then begin + //FIsToolbar := FIsToolbar or FParentItem.FDisplayAsToolbar; + FParentItem.RegisterNotification(LinkNotification); + FParentItem.FreeNotification(Self); + end; + FUsePriorityList := AUsePriorityList; + FWindow := AWindow; + UpdateCurParentItem; +end; + +destructor TTBView.Destroy; +begin + CloseChildPopups; + if Assigned(FAccObjectInstance) then begin + FAccObjectInstance.ClientIsDestroying; + { Get rid of our own reference to FAccObjectInstance. Normally the + reference count will be now be zero and FAccObjectInstance will be + freed, unless MSAA still holds a reference. } + FAccObjectInstance._Release; + FAccObjectInstance := nil; + end; + { If parent view is a toolbar, invalidate the open item so that it's + redrawn back in the "up" position } + if Assigned(ParentView) and ParentView.FIsToolbar then begin + Include(ParentView.FState, vsNoAnimation); + if Assigned(ParentView.FOpenViewer) then + ParentView.Invalidate(ParentView.FOpenViewer); + end; + if Assigned(FCurParentItem) then + FCurParentItem.UnregisterNotification(ItemNotification); + if Assigned(FParentItem) then + FParentItem.UnregisterNotification(LinkNotification); + inherited; + FPriorityList.Free; + FreeViewers; + { Now that we're destroyed, "focus" the parent view } + if Assigned(FParentView) then + FParentView.NotifyFocusEvent; +end; + +function TTBView.GetAccObject: IDispatch; +begin + if FAccObjectInstance = nil then begin + if not InitializeOleAcc then begin + Result := nil; + Exit; + end; + FAccObjectInstance := TTBViewAccObject.Create(Self); + { Strictly as an optimization, take a reference for ourself and keep it + for the lifetime of the view. (Destroy calls _Release.) } + FAccObjectInstance._AddRef; + end; + Result := FAccObjectInstance; +end; + +function TTBView.HandleWMGetObject(var Message: TMessage): Boolean; +begin + if (Message.LParam = Integer(OBJID_CLIENT)) and InitializeOleAcc then begin + Message.Result := LresultFromObjectFunc(ITBAccessible, Message.WParam, GetAccObject); + Result := True; + end + else + Result := False; +end; + +procedure TTBView.UpdateCurParentItem; +var + Value: TTBCustomItem; +begin + Value := ItemContainingItems(FParentItem); + if FCurParentItem <> Value then begin + CloseChildPopups; + if Assigned(FCurParentItem) then + FCurParentItem.UnregisterNotification(ItemNotification); + FCurParentItem := Value; + if Assigned(Value) then + Value.RegisterNotification(ItemNotification); + RecreateAllViewers; + if Assigned(Value) and not(csDesigning in Value.ComponentState) then + InitiateActions; + end; +end; + +procedure TTBView.InitiateActions; +var + I: Integer; +begin + { Use a 'while' instead of a 'for' since an InitiateAction implementation + may add/delete items } + I := 0; + while I < FViewerCount do begin + FViewers[I].Item.InitiateAction; + Inc(I); + end; +end; + +procedure TTBView.Notification(AComponent: TComponent; Operation: TOperation); +begin + inherited; + if Operation = opRemove then begin + if AComponent = FParentItem then begin + FParentItem := nil; + UpdateCurParentItem; + if Assigned(FParentView) then + FParentView.CloseChildPopups; + end + else if AComponent = FOpenViewerWindow then begin + FOpenViewerWindow := nil; + FOpenViewerView := nil; + FOpenViewer := nil; + end + else if AComponent = FChevronParentView then + FChevronParentView := nil; + end +end; + +function TTBView.ContainsView(AView: TTBView): Boolean; +begin + while Assigned(AView) and (AView <> Self) do + AView := AView.FParentView; + Result := Assigned(AView); +end; + +function TTBView.GetRootView: TTBView; +begin + Result := Self; + while Assigned(Result.FParentView) do + Result := Result.FParentView; +end; + +function TTBView.GetParentToolbarView: TTBView; +begin + Result := Self; + while Assigned(Result) and not Result.FIsToolbar do + Result := Result.FParentView; +end; + +procedure TTBView.FreeViewers; +var + VI: PTBItemViewerArray; + I, C: Integer; +begin + if Assigned(FViewers) then begin + VI := FViewers; + C := FViewerCount; + FViewers := nil; + FViewerCount := 0; + for I := C-1 downto 0 do + FreeAndNil(VI[I]); + FreeMem(VI); + end; +end; + +procedure TTBView.InvalidatePositions; +begin + if FValidated then begin + FValidated := False; + if Assigned(FWindow) and FWindow.HandleAllocated then + InvalidateRect(FWindow.Handle, nil, True); + end; +end; + +procedure TTBView.ValidatePositions; +begin + if not FValidated then + UpdatePositions; +end; + +procedure TTBView.TryValidatePositions; +begin + if (FUpdating = 0) and + (not Assigned(FParentItem) or not(csLoading in FParentItem.ComponentState)) and + (not Assigned(FParentItem.Owner) or not(csLoading in FParentItem.Owner.ComponentState)) then + ValidatePositions; +end; + +(*procedure TTBView.TryRevalidatePositions; +begin + if FValidated then begin + if FUpdating = 0 then begin + FreePositions; + UpdatePositions; + end + else + InvalidatePositions; + end; +end;*) + +function TTBView.Find(Item: TTBCustomItem): TTBItemViewer; +var + I: Integer; +begin + for I := 0 to FViewerCount-1 do + if FViewers[I].Item = Item then begin + Result := FViewers[I]; + Exit; + end; + raise ETBItemError.Create(STBViewerNotFound); +end; + +function TTBView.IndexOf(AViewer: TTBItemViewer): Integer; +var + I: Integer; +begin + if Assigned(AViewer) then + for I := 0 to FViewerCount-1 do + if FViewers[I] = AViewer then begin + Result := I; + Exit; + end; + Result := -1; +end; + + +procedure TTBView.DeletingViewer(Viewer: TTBItemViewer); +begin + if FSelected = Viewer then + FSelected := nil; + if FOpenViewer = Viewer then + CloseChildPopups; +end; + +procedure TTBView.RecreateItemViewer(const I: Integer); +var + OldViewer, NewViewer: TTBItemViewer; + J: Integer; +begin + OldViewer := FViewers[I]; + DeletingViewer(OldViewer); + NewViewer := OldViewer.Item.GetItemViewerClass(Self).Create(Self, + OldViewer.Item, OldViewer.FGroupLevel); + FViewers[I] := NewViewer; + if Assigned(FPriorityList) then begin + J := FPriorityList.IndexOf(OldViewer); + if J <> -1 then + FPriorityList[J] := NewViewer; + end; + OldViewer.Free; +end; + +function TTBView.InsertItemViewers(const NewIndex: Integer; + const AItem: TTBCustomItem; const AGroupLevel: Integer; + const AddToPriorityList, TopOfPriorityList: Boolean): Integer; +var + NewViewer: TTBItemViewer; + LinkItem: TTBCustomItem; + I: Integer; +begin + if AGroupLevel > MaxGroupLevel then begin + Result := 0; + Exit; + end; + + NewViewer := AItem.GetItemViewerClass(Self).Create(Self, AItem, + AGroupLevel); + InsertIntoViewerArray(FViewers, FViewerCount, NewIndex, + NewViewer); + if AddToPriorityList and FUsePriorityList then begin + if not TopOfPriorityList then + AddToList(FPriorityList, NewViewer) + else + { When new items are inserted programmatically at run-time, place + them at the top of FPriorityList } + AddToFrontOfList(FPriorityList, NewViewer); + end; + Result := 1; + + { If a new group item is being inserted, insert all its child items too } + if not FCustomizing and (tbisEmbeddedGroup in AItem.ItemStyle) then begin + LinkItem := ItemContainingItems(AItem); + for I := 0 to LinkItem.Count-1 do begin + Inc(Result, InsertItemViewers(NewIndex + Result, LinkItem.FItems[I].Item, + AGroupLevel + 1, AddToPriorityList, TopOfPriorityList)); + end; + end; +end; + +procedure TTBView.ItemNotification(Ancestor: TTBCustomItem; Relayed: Boolean; + Action: TTBItemChangedAction; Index: Integer; Item: TTBCustomItem); + + procedure ItemInserted; + var + NewLevel, Start, InsertPoint, Last: Integer; + GroupItem, NextItem: TTBCustomItem; + Found, SearchAgain: Boolean; + begin + InvalidatePositions; + NewLevel := 0; + Start := 0; + if Ancestor = FCurParentItem then + InsertPoint := FViewerCount + else begin + { Ancestor <> FCurParentItem, so apparently an item has been inserted + inside a group item } + repeat + Found := False; + while Start < FViewerCount do begin + GroupItem := FViewers[Start].Item; + if (tbisEmbeddedGroup in GroupItem.ItemStyle) and (GroupItem = Ancestor) then begin + NewLevel := FViewers[Start].FGroupLevel + 1; + Inc(Start); + Found := True; + Break; + end; + Inc(Start); + end; + if not Found then + { Couldn't find Ancestor; it shouldn't get here } + Exit; + InsertPoint := Start; + SearchAgain := False; + while (InsertPoint < FViewerCount) and + (FViewers[InsertPoint].FGroupLevel >= NewLevel) do begin + if (FViewers[InsertPoint].Item = Item) and + (FViewers[InsertPoint].FGroupLevel = NewLevel) then begin + { If the item we were going to insert already exists, then there + must be multiple instances of the same group item. This can + happen when are two group items on the same toolbar each + linking to the same submenu item, with the submenu item + containing a group item of its own, and an item is inserted + inside that. } + SearchAgain := True; + Break; + end; + Inc(InsertPoint); + end; + until not SearchAgain; + end; + if InsertPoint = FViewerCount then begin + { Don't add items after the chevron or MDI buttons item } + Dec(InsertPoint, FInternalViewersAtEnd); + if InsertPoint < 0 then + InsertPoint := 0; { just in case? } + end; + { If the new item wasn't placed at the end, adjust InsertPoint accordingly } + if Index < Item.Parent.Count-1 then begin + Last := InsertPoint; + InsertPoint := Start; + NextItem := Item.Parent.FItems[Index+1].Item; + while (InsertPoint < Last) and + ((FViewers[InsertPoint].Item <> NextItem) or + (FViewers[InsertPoint].FGroupLevel <> NewLevel)) do + Inc(InsertPoint); + end; + InsertItemViewers(InsertPoint, Item, NewLevel, True, + not(csLoading in Item.ComponentState) and FNewViewersGetHighestPriority); + end; + + procedure ItemDeleting; + + procedure DeleteItem(DeleteIndex: Integer); + var + Viewer: TTBItemViewer; + begin + Viewer := FViewers[DeleteIndex]; + DeletingViewer(Viewer); + RemoveFromList(FPriorityList, Viewer); + FreeAndNil(Viewer); + DeleteFromViewerArray(FViewers, FViewerCount, DeleteIndex); + end; + + var + I: Integer; + DeleteLevel: Integer; + begin + InvalidatePositions; + I := 0; + DeleteLevel := 0; + while I < FViewerCount do begin + if DeleteLevel > 0 then begin + if FViewers[I].FGroupLevel >= DeleteLevel then begin + DeleteItem(I); + Continue; + end + else + DeleteLevel := 0; + end; + if FViewers[I].Item = Item then begin + { Delete the item, and any group item children afterward } + DeleteLevel := FViewers[I].FGroupLevel + 1; + DeleteItem(I); + Continue; + end; + Inc(I); + end; + end; + +var + I: Integer; +begin + case Action of + tbicInserted: ItemInserted; + tbicDeleting: ItemDeleting; + tbicSubitemsChanged: begin + { If Relayed=True, LinkSubitems must have changed on a child group + item. Currently there isn't any optimized way of handling this + situation; just recreate all viewers. } + if Relayed then + RecreateAllViewers; + end; + tbicSubitemsBeginUpdate: BeginUpdate; + tbicSubitemsEndUpdate: EndUpdate; + tbicInvalidate: begin + for I := 0 to FViewerCount-1 do + if FViewers[I].Item = Item then + Invalidate(FViewers[I]); + end; + tbicInvalidateAndResize: InvalidatePositions; + tbicRecreateItemViewers: begin + InvalidatePositions; + for I := 0 to FViewerCount-1 do + if FViewers[I].Item = Item then + RecreateItemViewer(I); + end; + tbicSubMenuImagesChanged: ImagesChanged; + else + { Prevent TryValidatePositions from being called below on Actions other than + those listed above. Currently there are no other Actions, but for forward + compatibility, we should ignore unknown Actions completely. } + Exit; + end; + TryValidatePositions; +end; + +procedure TTBView.LinkNotification(Ancestor: TTBCustomItem; Relayed: Boolean; + Action: TTBItemChangedAction; Index: Integer; Item: TTBCustomItem); +{ This notification procedure watches for tbicSubitemsChanged notifications + from FParentItem } +begin + case Action of + tbicSubitemsChanged: begin + { LinkSubitems may have changed on FParentItem, e.g. on the root item + of a toolbar, so see if FCurParentItem needs updating } + UpdateCurParentItem; + end; + tbicSubMenuImagesChanged: begin + { In case the images were inherited from the actual parent instead of + the linked parent... } + if FParentItem <> FCurParentItem then + ImagesChanged; + end; + end; +end; + +procedure TTBView.ImagesChanged; +begin + InvalidatePositions; + TryValidatePositions; + if Assigned(FOpenViewerView) then + FOpenViewerView.ImagesChanged; +end; + +procedure TTBView.GivePriority(AViewer: TTBItemViewer); +{ Move item to top of priority list. Rearranges items if necessary. } +var + I: Integer; +begin + if Assigned(FChevronParentView) then begin + I := AViewer.Index + FChevronParentView.FInternalViewersAtFront; + if I < FChevronParentView.FViewerCount then { range check just in case } + FChevronParentView.GivePriority(FChevronParentView.FViewers[I]); + Exit; + end; + if Assigned(FPriorityList) then begin + I := FPriorityList.IndexOf(AViewer); + if I <> -1 then begin + FPriorityList.Move(I, 0); + if not FValidated or AViewer.OffEdge then + UpdatePositions; + end; + end; + { Call GivePriority on parent view, so that if an item on a submenu is + clicked, the parent item of the submenu gets priority. } + if Assigned(FParentView) and Assigned(FParentView.FOpenViewer) then + FParentView.GivePriority(FParentView.FOpenViewer); +end; + +function TTBView.HighestPriorityViewer: TTBItemViewer; +{ Returns index of first visible, non-separator item at top of priority list, + or -1 if there are no items found } +var + I: Integer; + J: TTBItemViewer; +begin + ValidatePositions; + Result := nil; + if Assigned(FPriorityList) then begin + for I := 0 to FPriorityList.Count-1 do begin + J := FPriorityList[I]; + if J.Show and not(tbisSeparator in J.Item.ItemStyle) then begin + Result := J; + Break; + end; + end; + end + else begin + for I := 0 to FViewerCount-1 do begin + J := FViewers[I]; + if J.Show and not(tbisSeparator in J.Item.ItemStyle) then begin + Result := J; + Break; + end; + end; + end; +end; + +procedure TTBView.StartTimer(const ATimer: TTBViewTimerID; + const Interval: Integer); +{ Starts a timer. Stops any previously set timer of the same ID first. + Note: WM_TIMER messages generated by timers set by the method are handled + in PopupMessageLoop. } +begin + StopTimer(ATimer); + if (FWindow is TTBPopupWindow) and FWindow.HandleAllocated then begin + SetTimer(FWindow.Handle, ViewTimerBaseID + Ord(ATimer), Interval, nil); + Include(FActiveTimers, ATimer); + end; +end; + +procedure TTBView.StopAllTimers; +var + I: TTBViewTimerID; +begin + for I := Low(I) to High(I) do + StopTimer(I); +end; + +procedure TTBView.StopTimer(const ATimer: TTBViewTimerID); +begin + if ATimer in FActiveTimers then begin + if (FWindow is TTBPopupWindow) and FWindow.HandleAllocated then + KillTimer(FWindow.Handle, ViewTimerBaseID + Ord(ATimer)); + Exclude(FActiveTimers, ATimer); + end; +end; + +function TTBView.OpenChildPopup(const SelectFirstItem: Boolean): Boolean; +var + Item: TTBCustomItem; +begin + StopTimer(tiClose); + StopTimer(tiOpen); + if FSelected <> FOpenViewer then begin + CloseChildPopups; + if Assigned(FSelected) then begin + Item := FSelected.Item; + if Item.Enabled and (tbisSubmenu in Item.ItemStyle) then + Item.CreatePopup(Self, FSelected, not FIsToolbar, SelectFirstItem, + False, Point(0, 0), tbpaLeft); + end; + end; + Result := Assigned(FOpenViewer); +end; + +procedure TTBView.CloseChildPopups; +begin + if Assigned(FOpenViewerView) then + FOpenViewerView.CloseChildPopups; + StopTimer(tiClose); + FOpenViewerWindow.Free; + FOpenViewerWindow := nil; + FOpenViewerView := nil; + FOpenViewer := nil; +end; + +procedure TTBView.CancelChildPopups; +begin + if FIsToolbar then + Exclude(FState, vsDropDownMenus); + CloseChildPopups; +end; + +function TTBView.ViewerFromPoint(const P: TPoint): TTBItemViewer; +var + I: Integer; +begin + ValidatePositions; + for I := 0 to FViewerCount-1 do begin + if FViewers[I].Show and + PtInRect(FViewers[I].BoundsRect, P) then begin + Result := FViewers[I]; + Exit; + end; + end; + Result := nil; +end; + +procedure TTBView.NotifyFocusEvent; +{ Notifies Active Accessibility of a change in "focus". Has no effect if the + view or the root view lacks the vsModal state, or if the modal loop is + ending (EndModal* was called). } +var + I, ChildID, J: Integer; +begin + { Note: We don't notify about windows not yet shown (e.g. a popup menu that + is still initializing) because that would probably confuse screen readers. + Also allocating a window handle at this point *might* not be a good idea. } + if (vsModal in FState) and (vsModal in GetRootView.FState) and + not IsModalEnding and + FWindow.HandleAllocated and IsWindowVisible(FWindow.Handle) then begin + if Assigned(FSelected) and FSelected.IsAccessible then + I := IndexOf(FSelected) + else + I := -1; + if (I < 0) and Assigned(FParentView) then begin + { If we have no selected item, report the the selected item on the parent + view as having the "focus". + Note: With standard menus, when you go from having a selection to no + selection on a submenu, it sends two focus events - first with the + client window as having the focus, then with the parent item. I + figure that's probably a bug, so I don't try to emulate that behavior + here. } + FParentView.NotifyFocusEvent; + end + else begin + if I >= 0 then begin + { Convert viewer index into a one-based child index. + (TTBViewAccObject.get_accChild does the inverse.) } + ChildID := 1; + for J := 0 to I-1 do + if FViewers[J].IsAccessible then + Inc(ChildID); + end + else begin + { If there is no (accessible) selection and no parent view, report + the client window itself as being "focused". This is what happens + when a standard context menu has no selection. } + ChildID := CHILDID_SELF; + end; + CallNotifyWinEvent(EVENT_OBJECT_FOCUS, FWindow.Handle, OBJID_CLIENT, ChildID); + end; + end; +end; + +procedure TTBView.SetSelected(Value: TTBItemViewer); +begin + Select(Value, False); +end; + +procedure TTBView.Select(Value: TTBItemViewer; ViaMouse: Boolean); +{ Sets the current selection. + When the selection is changing it will also, if necessary, open/close child + popups. How exactly this works depends on the setting of ViaMouse. If + ViaMouse is True it will delay the opening/closing of popups using timers. } +var + OldSelected: TTBItemViewer; + NewMouseOverSelected: Boolean; + P: TPoint; +begin + OldSelected := FSelected; + if Value <> OldSelected then begin + { If there's a new selection and the parent item on the parent view + isn't currently selected, select it. Also stop any timer running on + the parent view. } + if Assigned(Value) and Assigned(FParentView) and + Assigned(FParentView.FOpenViewer) and + (FParentView.FSelected <> FParentView.FOpenViewer) then begin + FParentView.Selected := FParentView.FOpenViewer; + FParentView.StopTimer(tiClose); + FParentView.StopTimer(tiOpen); + end; + + { Handle automatic closing of child popups } + if vsModal in FState then begin + { If the view is a toolbar, or if the new selection didn't come from + the mouse, close child popups immediately } + if FIsToolbar or not ViaMouse then begin + { Always stop any close timer because CloseChildPopups may not be + called below } + StopTimer(tiClose); + if Value <> FOpenViewer then + { ^ But don't close if selection is returning to the open item. + Needed for the "FParentView.Selected := FParentView.FOpenViewer" + line above to work. } + CloseChildPopups; + end + else begin + { Otherwise, delay-close any child popup } + if Assigned(FOpenViewerView) and not(tiClose in FActiveTimers) then + StartTimer(tiClose, GetMenuShowDelay); + end; + end; + + CancelCapture; + if Assigned(OldSelected) then + OldSelected.Leaving; + FSelected := Value; + FSelectedViaMouse := ViaMouse; + end; + + NewMouseOverSelected := False; + if Assigned(Value) and Assigned(FWindow) then begin + P := SmallPointToPoint(TSmallPoint(GetMessagePos())); + if FindDragTarget(P, True) = FWindow then begin + P := FWindow.ScreenToClient(P); + NewMouseOverSelected := (ViewerFromPoint(P) = Value); + if NewMouseOverSelected and FCapture and + not Value.IsPtInButtonPart(P.X - Value.BoundsRect.Left, + P.Y - Value.BoundsRect.Top) then + NewMouseOverSelected := False; + end; + end; + + if Value <> OldSelected then begin + FMouseOverSelected := NewMouseOverSelected; + if Assigned(OldSelected) and (tbisRedrawOnSelChange in OldSelected.Item.ItemStyle) then + Invalidate(OldSelected); + if Assigned(Value) then begin + if tbisRedrawOnSelChange in Value.Item.ItemStyle then + Invalidate(Value); + Value.Entering; + end; + NotifyFocusEvent; + + { Handle automatic opening of a child popup } + if vsModal in FState then begin + { If the view is a toolbar, immediately open any child popup } + if FIsToolbar then begin + if Assigned(Value) then begin + if ViaMouse and Assigned(FParentView) then begin + { On chevron popups, always drop down menus when mouse passes + over them, like Office 2000 } + Include(FState, vsDropDownMenus); + end; + if (vsDropDownMenus in FState) and + (ViaMouse or not(tbisNoAutoOpen in Value.Item.ItemStyle)) then + OpenChildPopup(not ViaMouse); + end; + end + else begin + { Otherwise, delay-open any child popup if the selection came from + the mouse } + StopTimer(tiOpen); + if ViaMouse and Assigned(Value) and (tbisSubmenu in Value.Item.ItemStyle) then + StartTimer(tiOpen, GetMenuShowDelay); + end; + end; + end + else if FMouseOverSelected <> NewMouseOverSelected then begin + FMouseOverSelected := NewMouseOverSelected; + if Assigned(Value) and FCapture and (tbisRedrawOnMouseOverChange in Value.Item.ItemStyle) then + Invalidate(Value); + end; +end; + +procedure TTBView.UpdateSelection(const P: PPoint; const AllowNewSelection: Boolean); +{ Called in response to a mouse movement, this method updates the current + selection, updates the vsMouseInWindow view state, and enables/disables + scroll timers. } + + function IsPtInScrollArrow(ADownArrow: Boolean): Boolean; + var + P2: TPoint; + R: TRect; + begin + Result := False; + if (vsModal in FState) and (vsMouseInWindow in FState) and + Assigned(P) then begin + P2 := FWindow.ScreenToClient(P^); + R := FWindow.ClientRect; + if PtInRect(R, P2) then begin + if ADownArrow then + Result := FShowDownArrow and (P2.Y >= R.Bottom - tbMenuScrollArrowHeight) + else + Result := FShowUpArrow and (P2.Y < tbMenuScrollArrowHeight); + end; + end; + end; + +var + NewSelected, ViewerAtPoint: TTBItemViewer; + P2: TPoint; + MouseWasInWindow: Boolean; +begin + ValidatePositions; + + { If modal, default to keeping the existing selection } + if vsModal in FState then + NewSelected := FSelected + else + NewSelected := nil; + + { Is the mouse inside the window? } + MouseWasInWindow := vsMouseInWindow in FState; + if Assigned(P) and Assigned(FWindow) and (FindDragTarget(P^, True) = FWindow) then begin + { If we're a popup window and the mouse is inside, default to no selection } + if FIsPopup then + NewSelected := nil; + Include(FState, vsMouseInWindow); + if AllowNewSelection or Assigned(FSelected) then begin + P2 := FWindow.ScreenToClient(P^); + ViewerAtPoint := ViewerFromPoint(P2); + if Assigned(ViewerAtPoint) then + NewSelected := ViewerAtPoint; + end; + end + else + Exclude(FState, vsMouseInWindow); + + { If FCapture is True, don't allow the selection to change } + if FCapture and (NewSelected <> FSelected) then + NewSelected := FSelected; + + { If we're a popup window and there is a selection... } + if FIsPopup and Assigned(NewSelected) then begin + { If the mouse just moved out of the window and no submenu was open, + remove the highlight } + if not FCapture and MouseWasInWindow and not(vsMouseInWindow in FState) and + (not Assigned(FOpenViewerView) or not(tbisSubmenu in NewSelected.Item.ItemStyle)) then + NewSelected := nil; + end; + + { Now we set the new Selected value } + Select(NewSelected, True); + + { Update scroll arrow timers } + if IsPtInScrollArrow(False) then begin + StopTimer(tiScrollDown); + if not(tiScrollUp in FActiveTimers) then + StartTimer(tiScrollUp, 100); + end + else if IsPtInScrollArrow(True) then begin + StopTimer(tiScrollUp); + if not(tiScrollDown in FActiveTimers) then + StartTimer(tiScrollDown, 100); + end + else begin + StopTimer(tiScrollUp); + StopTimer(tiScrollDown); + end; +end; + +procedure TTBView.RecreateAllViewers; +var + Item: TTBCustomItem; + I: Integer; +begin + { Since the FViewers list is being rebuilt, FOpenViewer and FSelected + will no longer be valid, so ensure they're set to nil. } + CloseChildPopups; + Selected := nil; + + InvalidatePositions; + + FreeAndNil(FPriorityList); + FreeViewers; + FInternalViewersAtFront := 0; + FInternalViewersAtEnd := 0; + + { MDI system menu item } + Item := GetMDISystemMenuItem; + if Assigned(Item) then + Inc(FInternalViewersAtFront, InsertItemViewers(FViewerCount, Item, 0, + False, False)); + + { Items } + if Assigned(FCurParentItem) then begin + for I := 0 to FCurParentItem.Count-1 do + InsertItemViewers(FViewerCount, FCurParentItem.FItems[I].Item, 0, + True, False); + end; + + { MDI buttons item } + Item := GetMDIButtonsItem; + if Assigned(Item) then begin + for I := 0 to Item.Count-1 do + Inc(FInternalViewersAtEnd, InsertItemViewers(FViewerCount, + Item.FItems[I].Item, 0, False, False)); + end; + + { Chevron item } + Item := GetChevronItem; + if Assigned(Item) then + Inc(FInternalViewersAtEnd, InsertItemViewers(FViewerCount, Item, 0, + False, False)); +end; + +function TTBView.CalculatePositions(const CanMoveControls: Boolean; + const AOrientation: TTBViewOrientation; + AWrapOffset, AChevronOffset, AChevronSize: Integer; + var ABaseSize, TotalSize: TPoint; + var AWrappedLines: Integer): Boolean; +{ Returns True if the positions have changed } +type + PTempPosition = ^TTempPosition; + TTempPosition = record + BoundsRect: TRect; + Show, OffEdge, LineSep, Clipped, SameWidth: Boolean; + end; + PTempPositionArray = ^TTempPositionArray; + TTempPositionArray = array[0..$7FFFFFFF div SizeOf(TTempPosition)-1] of TTempPosition; +var + DC: HDC; + LeftX, TopY, CurX, CurY, I: Integer; + NewPositions: PTempPositionArray; + GroupSplit, DidWrap: Boolean; + LineStart, HighestHeightOnLine, HighestWidthOnLine: Integer; + + function GetSizeOfGroup(const StartingIndex: Integer): Integer; + var + I: Integer; + begin + Result := 0; + for I := StartingIndex to FViewerCount-1 do begin + if not NewPositions[I].Show then + Continue; + if tbisSeparator in FViewers[I].Item.ItemStyle then + Break; + with NewPositions[I] do begin + if AOrientation <> tbvoVertical then + Inc(Result, BoundsRect.Right) + else + Inc(Result, BoundsRect.Bottom); + end; + end; + end; + + procedure Mirror; + { Reverses the horizontal ordering (i.e. first item becomes last) } + var + I, NewRight: Integer; + begin + for I := 0 to FViewerCount-1 do + with NewPositions[I] do + if Show then begin + NewRight := TotalSize.X - BoundsRect.Left; + BoundsRect.Left := TotalSize.X - BoundsRect.Right; + BoundsRect.Right := NewRight; + end; + end; + + procedure HandleMaxHeight; + { Decreases, if necessary, the height of the view to FMaxHeight, and adjusts + the visibility of the scroll arrows } + var + MaxOffset, I, MaxTop, MaxBottom: Integer; + begin + FShowUpArrow := False; + FShowDownArrow := False; + if (FMaxHeight > 0) and (TotalSize.Y > FMaxHeight) then begin + MaxOffset := TotalSize.Y - FMaxHeight; + if FScrollOffset > MaxOffset then + FScrollOffset := MaxOffset; + if FScrollOffset < 0 then + FScrollOffset := 0; + FShowUpArrow := (FScrollOffset > 0); + FShowDownArrow := (FScrollOffset < MaxOffset); + MaxTop := 0; + if FShowUpArrow then + MaxTop := tbMenuScrollArrowHeight; + MaxBottom := FMaxHeight; + if FShowDownArrow then + Dec(MaxBottom, tbMenuScrollArrowHeight); + for I := 0 to FViewerCount-1 do begin + if not IsRectEmpty(NewPositions[I].BoundsRect) then begin + OffsetRect(NewPositions[I].BoundsRect, 0, -FScrollOffset); + if NewPositions[I].Show and + ((NewPositions[I].BoundsRect.Top < MaxTop) or + (NewPositions[I].BoundsRect.Bottom > MaxBottom)) then begin + NewPositions[I].Show := False; + NewPositions[I].Clipped := True; + end; + end; + end; + TotalSize.Y := FMaxHeight; + end + else + FScrollOffset := 0; + end; + + procedure FinalizeLine(const LineEnd: Integer; const LastLine: Boolean); + var + I, RightAlignStart: Integer; + Item: TTBCustomItem; + IsButton: Boolean; + Pos: PTempPosition; + Z: Integer; + begin + if LineStart <> -1 then begin + if DidWrap and (FChevronParentView = nil) then begin + { When wrapping on a docked toolbar, extend TotalSize.X/Y to + AWrapOffset so that the toolbar always fills the whole row } + if (AOrientation = tbvoHorizontal) and (TotalSize.X < AWrapOffset) then + TotalSize.X := AWrapOffset + else if (AOrientation = tbvoVertical) and (TotalSize.Y < AWrapOffset) then + TotalSize.Y := AWrapOffset; + end; + RightAlignStart := -1; + for I := LineStart to LineEnd do begin + Pos := @NewPositions[I]; + if not Pos.Show then + Continue; + Item := FViewers[I].Item; + if (RightAlignStart < 0) and (tbisRightAlign in Item.ItemStyle) then + RightAlignStart := I; + IsButton := FIsToolbar or (tboToolbarSize in Item.FEffectiveOptions); + if FIsToolbar then begin + if LastLine and not DidWrap and (AOrientation <> tbvoFloating) then begin + { In case the toolbar is docked next to a taller/wider toolbar... } + HighestWidthOnLine := TotalSize.X; + HighestHeightOnLine := TotalSize.Y; + end; + { Make separators on toolbars as tall/wide as the tallest/widest item } + if tbisSeparator in Item.ItemStyle then begin + if AOrientation <> tbvoVertical then + Pos.BoundsRect.Bottom := Pos.BoundsRect.Top + HighestHeightOnLine + else + Pos.BoundsRect.Right := Pos.BoundsRect.Left + HighestWidthOnLine; + end + else begin + { Center the item } + if AOrientation <> tbvoVertical then begin + Z := (HighestHeightOnLine - (Pos.BoundsRect.Bottom - Pos.BoundsRect.Top)) div 2; + Inc(Pos.BoundsRect.Top, Z); + Inc(Pos.BoundsRect.Bottom, Z); + end + else begin + Z := (HighestWidthOnLine - (Pos.BoundsRect.Right - Pos.BoundsRect.Left)) div 2; + Inc(Pos.BoundsRect.Left, Z); + Inc(Pos.BoundsRect.Right, Z); + end; + end; + end + else begin + { Make items in a menu as wide as the widest item } + if not IsButton then begin + with Pos.BoundsRect do Right := Left + HighestWidthOnLine; + end; + end; + end; + if RightAlignStart >= 0 then begin + Z := 0; + for I := LineEnd downto RightAlignStart do begin + Pos := @NewPositions[I]; + if not Pos.Show then + Continue; + if AOrientation <> tbvoVertical then + Z := Min(AWrapOffset, TotalSize.X) - Pos.BoundsRect.Right + else + Z := Min(AWrapOffset, TotalSize.Y) - Pos.BoundsRect.Bottom; + Break; + end; + if Z > 0 then begin + for I := RightAlignStart to LineEnd do begin + Pos := @NewPositions[I]; + if not Pos.Show then + Continue; + if AOrientation <> tbvoVertical then begin + Inc(Pos.BoundsRect.Left, Z); + Inc(Pos.BoundsRect.Right, Z); + end + else begin + Inc(Pos.BoundsRect.Top, Z); + Inc(Pos.BoundsRect.Bottom, Z); + end; + end; + end; + end; + end; + LineStart := -1; + HighestHeightOnLine := 0; + HighestWidthOnLine := 0; + end; + + procedure PositionItem(const CurIndex: Integer; var Pos: TTempPosition); + var + O, X, Y: Integer; + IsLineSep, Vert: Boolean; + begin + if LineStart = -1 then begin + LineStart := CurIndex; + HighestHeightOnLine := 0; + HighestWidthOnLine := 0; + end; + IsLineSep := False; + Vert := (AOrientation = tbvoVertical); + if not Vert then + O := CurX + else + O := CurY; + if (AWrapOffset > 0) and (O > 0) then begin + if not Vert then + Inc(O, Pos.BoundsRect.Right) + else + Inc(O, Pos.BoundsRect.Bottom); + if (tbisSeparator in FViewers[CurIndex].Item.ItemStyle) and + ((GroupSplit and not(tbisNoLineBreak in FViewers[CurIndex].Item.ItemStyle)) + or (O + GetSizeOfGroup(CurIndex+1) > AWrapOffset)) then begin + DidWrap := True; + Inc(AWrappedLines); + if not Vert then begin + CurX := 0; + Inc(CurY, HighestHeightOnLine); + end + else begin + CurY := 0; + Inc(CurX, HighestWidthOnLine); + end; + FinalizeLine(CurIndex-1, False); + LineStart := CurIndex+1; + if not Vert then begin + Pos.BoundsRect.Right := 0; + Pos.BoundsRect.Bottom := tbLineSpacing; + end + else begin + Pos.BoundsRect.Right := tbLineSpacing; + Pos.BoundsRect.Bottom := 0; + end; + Pos.LineSep := True; + IsLineSep := True; + end + else if O > AWrapOffset then begin + { proceed to next row } + DidWrap := True; + Inc(AWrappedLines); + if not Vert then begin + CurX := LeftX; + Inc(CurY, HighestHeightOnLine); + end + else begin + CurY := TopY; + Inc(CurX, HighestWidthOnLine); + end; + GroupSplit := True; + FinalizeLine(CurIndex-1, False); + LineStart := CurIndex; + end; + end; + if Pos.BoundsRect.Bottom > HighestHeightOnLine then + HighestHeightOnLine := Pos.BoundsRect.Bottom; + if Pos.BoundsRect.Right > HighestWidthOnLine then + HighestWidthOnLine := Pos.BoundsRect.Right; + X := CurX; + Y := CurY; + if X < 0 then X := 0; + if Y < 0 then Y := 0; + OffsetRect(Pos.BoundsRect, X, Y); + if IsLineSep then begin + if not Vert then begin + CurX := LeftX; + Inc(CurY, tbLineSpacing); + end + else begin + CurY := TopY; + Inc(CurX, tbLineSpacing); + end; + GroupSplit := False; + end; + end; + +var + SaveOrientation: TTBViewOrientation; + ChevronItem: TTBCustomItem; + CalcCanvas: TCanvas; + LastWasSep, LastWasButton, IsButton, IsControl: Boolean; + Item: TTBCustomItem; + Ctl: TControl; + ChangedBold: Boolean; + HighestSameWidthViewerWidth, Total, J, TotalVisibleItems: Integer; + IsFirst: Boolean; + Viewer: TTBItemViewer; + UseChevron, NonControlsOffEdge, TempViewerCreated: Boolean; + Margins: TRect; +label 1; +begin + SaveOrientation := FOrientation; + AWrappedLines := 1; + ChevronItem := GetChevronItem; + NewPositions := nil; + DC := 0; + CalcCanvas := nil; + try + FOrientation := AOrientation; + + CalcCanvas := TCanvas.Create; + DC := GetDC(0); + CalcCanvas.Handle := DC; + CalcCanvas.Font.Assign(GetFont); + + NewPositions := AllocMem(FViewerCount * SizeOf(TTempPosition)); + + { Figure out which items should be shown } + LastWasSep := True; { set to True initially so it won't show leading seps } + for I := 0 to FViewerCount-1 do begin + Item := FViewers[I].Item; + IsControl := Item is TTBControlItem; + with NewPositions[I] do begin + { Show is initially False since AllocMem initializes to zero } + if Item = ChevronItem then + Continue; + if Assigned(FChevronParentView) then begin + if IsControl then + Continue; + FChevronParentView.ValidatePositions; + J := I + FChevronParentView.FInternalViewersAtFront; + if J < FChevronParentView.FViewerCount then + { range check just in case } + Viewer := FChevronParentView.FViewers[J] + else + Viewer := nil; + if (Viewer = nil) or (not Viewer.OffEdge and not(tbisSeparator in Item.ItemStyle)) then + Continue; + end; + if not IsControl then begin + if not(tbisEmbeddedGroup in Item.ItemStyle) or FCustomizing then begin + Show := Item.Visible; + { Don't display two consecutive separators } + if Show then begin + if (tbisSeparator in Item.ItemStyle) and LastWasSep then + Show := False; + LastWasSep := tbisSeparator in Item.ItemStyle; + end; + end; + end + else begin + { Controls can only be rendered on a single Parent, so only + include the control if its parent is currently equal to + FWindow } + Ctl := TTBControlItem(Item).FControl; + if Assigned(Ctl) and Assigned(FWindow) and (Ctl.Parent = FWindow) and + (Ctl.Visible or (csDesigning in Ctl.ComponentState)) then begin + Show := True; + LastWasSep := False; + end; + end; + end; + end; + + { Hide any trailing separators, so that they aren't included in the + base size } + for I := FViewerCount-1 downto 0 do begin + with NewPositions[I] do + if Show then begin + if not(tbisSeparator in FViewers[I].Item.ItemStyle) then + Break; + Show := False; + end; + end; + + { Calculate sizes of all the items } + HighestSameWidthViewerWidth := 0; + for I := 0 to FViewerCount-1 do begin + Item := FViewers[I].Item; + IsControl := Item is TTBControlItem; + with NewPositions[I] do begin + { BoundsRect is currently empty since AllocMem initializes to zero } + if not Show then + Continue; + if not IsControl then begin + ChangedBold := False; + if tboDefault in Item.EffectiveOptions then + with CalcCanvas.Font do + if not(fsBold in Style) then begin + ChangedBold := True; + Style := Style + [fsBold]; + end; + Viewer := FViewers[I]; + TempViewerCreated := False; + if Item.NeedToRecreateViewer(Viewer) then begin + if CanMoveControls then begin + RecreateItemViewer(I); + Viewer := FViewers[I]; + end + else begin + Viewer := Item.GetItemViewerClass(Self).Create(Self, Item, 0); + TempViewerCreated := True; + end; + end; + try + Viewer.CalcSize(CalcCanvas, BoundsRect.Right, BoundsRect.Bottom); + if Viewer.UsesSameWidth then begin + SameWidth := True; + if (BoundsRect.Right > HighestSameWidthViewerWidth) then + HighestSameWidthViewerWidth := BoundsRect.Right; + end; + finally + if TempViewerCreated then + Viewer.Free; + end; + if ChangedBold then + with CalcCanvas.Font do + Style := Style - [fsBold]; + end + else begin + Ctl := TTBControlItem(Item).FControl; + BoundsRect.Right := Ctl.Width; + BoundsRect.Bottom := Ctl.Height; + end; + end; + end; + + { Increase widths of SameWidth items if necessary. Also calculate + ABaseSize.X (or Y). } + ABaseSize.X := 0; + ABaseSize.Y := 0; + for I := 0 to FViewerCount-1 do begin + with NewPositions[I] do begin + if SameWidth and (BoundsRect.Right < HighestSameWidthViewerWidth) then + BoundsRect.Right := HighestSameWidthViewerWidth; + if AOrientation <> tbvoVertical then + Inc(ABaseSize.X, BoundsRect.Right) + else + Inc(ABaseSize.Y, BoundsRect.Bottom); + end; + end; + + { Hide partially visible items, mark them as 'OffEdge' } + if AOrientation <> tbvoVertical then + Total := ABaseSize.X + else + Total := ABaseSize.Y; + NonControlsOffEdge := False; + UseChevron := Assigned(ChevronItem) and (AChevronOffset > 0) and + (Total > AChevronOffset); + if UseChevron then begin + Dec(AChevronOffset, AChevronSize); + while Total > AChevronOffset do begin + { Count number of items. Stop loop if <= 1 } + TotalVisibleItems := 0; + for I := FViewerCount-1 downto 0 do begin + if NewPositions[I].Show and not(tbisSeparator in FViewers[I].Item.ItemStyle) then + Inc(TotalVisibleItems); + end; + if TotalVisibleItems <= 1 then + Break; + { Hide any trailing separators } + for I := FViewerCount-1 downto 0 do begin + with NewPositions[I] do + if Show then begin + if not(tbisSeparator in FViewers[I].Item.ItemStyle) then + Break; + Show := False; + if AOrientation <> tbvoVertical then + Dec(Total, BoundsRect.Right) + else + Dec(Total, BoundsRect.Bottom); + goto 1; + end; + end; + { Find an item to hide } + if Assigned(FPriorityList) then + I := FPriorityList.Count-1 + else + I := FViewerCount-1; + while I >= 0 do begin + if Assigned(FPriorityList) then begin + Viewer := FPriorityList[I]; + J := Viewer.Index; + end + else begin + Viewer := FViewers[I]; + J := I; + end; + if NewPositions[J].Show and not(tbisSeparator in Viewer.Item.ItemStyle) then begin + NewPositions[J].Show := False; + NewPositions[J].OffEdge := True; + if AOrientation <> tbvoVertical then + Dec(Total, NewPositions[J].BoundsRect.Right) + else + Dec(Total, NewPositions[J].BoundsRect.Bottom); + if not NonControlsOffEdge and not(Viewer.Item is TTBControlItem) then + NonControlsOffEdge := True; + goto 1; + end; + Dec(I); + end; + Break; { prevent endless loop } + 1: + { Don't show two consecutive separators } + LastWasSep := True; { set to True initially so it won't show leading seps } + for J := 0 to FViewerCount-1 do begin + Item := FViewers[J].Item; + with NewPositions[J] do begin + if Show then begin + if (tbisSeparator in Item.ItemStyle) and LastWasSep then begin + Show := False; + if AOrientation <> tbvoVertical then + Dec(Total, BoundsRect.Right) + else + Dec(Total, BoundsRect.Bottom); + end; + LastWasSep := tbisSeparator in Item.ItemStyle; + end; + end; + end; + end; + end; + + { Hide any trailing separators after items were hidden } + for I := FViewerCount-1 downto 0 do begin + with NewPositions[I] do + if Show then begin + if not(tbisSeparator in FViewers[I].Item.ItemStyle) then + Break; + Show := False; + end; + end; + + { Set the ABaseSize.Y (or X) *after* items were hidden } + for I := 0 to FViewerCount-1 do begin + with NewPositions[I] do + if Show then begin + if AOrientation <> tbvoVertical then begin + if BoundsRect.Bottom > ABaseSize.Y then + ABaseSize.Y := BoundsRect.Bottom; + end + else begin + if BoundsRect.Right > ABaseSize.X then + ABaseSize.X := BoundsRect.Right; + end; + end; + end; + + { On menus, set all non-separator items to be as tall as the tallest item } + {if not FIsToolbar then begin + J := 0; + for I := 0 to FViewerCount-1 do begin + Item := FViewers[I].Item; + with NewPositions[I] do + if Show and not(tbisSeparator in Item.ItemStyle) and + not(tboToolbarSize in Item.FEffectiveOptions) and + (BoundsRect.Bottom - BoundsRect.Top > J) then + J := BoundsRect.Bottom - BoundsRect.Top; + end; + for I := 0 to FViewerCount-1 do begin + Item := FViewers[I].Item; + with NewPositions[I] do + if Show and not(tbisSeparator in Item.ItemStyle) and + not(tboToolbarSize in Item.FEffectiveOptions) then + BoundsRect.Bottom := BoundsRect.Top + J; + end; + end;} + + { Calculate the position of the items } + GetMargins(AOrientation, Margins); + LeftX := Margins.Left; + TopY := Margins.Top; + if AWrapOffset > 0 then begin + Dec(AWrapOffset, Margins.Right); + if AWrapOffset < 1 then AWrapOffset := 1; + end; + CurX := LeftX; + CurY := TopY; + GroupSplit := False; + DidWrap := False; + LastWasButton := FIsToolbar; + LineStart := -1; + for I := 0 to FViewerCount-1 do begin + Item := FViewers[I].Item; + with NewPositions[I] do begin + if not Show then + Continue; + IsButton := FIsToolbar or (tboToolbarSize in Item.FEffectiveOptions); + if LastWasButton and not IsButton then begin + { On a menu, if last item was a button and the current item isn't, + proceed to next row } + CurX := LeftX; + CurY := TotalSize.Y; + end; + LastWasButton := IsButton; + PositionItem(I, NewPositions[I]); + if IsButton and (AOrientation <> tbvoVertical) then + Inc(CurX, BoundsRect.Right - BoundsRect.Left) + else + Inc(CurY, BoundsRect.Bottom - BoundsRect.Top); + if BoundsRect.Right > TotalSize.X then + TotalSize.X := BoundsRect.Right; + if BoundsRect.Bottom > TotalSize.Y then + TotalSize.Y := BoundsRect.Bottom; + end; + end; + if FViewerCount <> 0 then + FinalizeLine(FViewerCount-1, True); + Inc(TotalSize.X, Margins.Right); + Inc(TotalSize.Y, Margins.Bottom); + if AOrientation = tbvoVertical then + Mirror; + HandleMaxHeight; + if CanMoveControls then begin + for I := 0 to FViewerCount-1 do begin + Item := FViewers[I].Item; + if Item is TTBControlItem then begin + if NewPositions[I].Show then begin + Ctl := TTBControlItem(Item).FControl; + if not EqualRect(NewPositions[I].BoundsRect, Ctl.BoundsRect) then + Ctl.BoundsRect := NewPositions[I].BoundsRect; + end + else if NewPositions[I].OffEdge or NewPositions[I].Clipped then begin + { Simulate hiding of OddEdge controls by literally moving them + off the edge. Do the same for Clipped controls. } + Ctl := TTBControlItem(Item).FControl; + Ctl.SetBounds(FWindow.ClientWidth, FWindow.ClientHeight, + Ctl.Width, Ctl.Height); + end; + end; + end; + end; + { Set size of line separators } + if FIsToolbar then + for I := 0 to FViewerCount-1 do begin + Item := FViewers[I].Item; + with NewPositions[I] do + if Show and (tbisSeparator in Item.ItemStyle) and + LineSep then begin + if AOrientation <> tbvoVertical then + BoundsRect.Right := TotalSize.X + else + BoundsRect.Bottom := TotalSize.Y; + end; + end; + + { Position the chevron item } + if UseChevron then begin + if CanMoveControls then + ChevronItem.Enabled := NonControlsOffEdge; + NewPositions[FViewerCount-1].Show := True; + I := AChevronOffset; + if AOrientation <> tbvoVertical then begin + if I < TotalSize.X then + I := TotalSize.X; + NewPositions[FViewerCount-1].BoundsRect := Bounds(I, 0, + AChevronSize, TotalSize.Y); + end + else begin + if I < TotalSize.Y then + I := TotalSize.Y; + NewPositions[FViewerCount-1].BoundsRect := Bounds(0, I, + TotalSize.X, AChevronSize); + end; + end; + + { Commit changes } + Result := False; + if CanMoveControls then begin + for I := 0 to FViewerCount-1 do begin + if not Result and + (not EqualRect(FViewers[I].BoundsRect, NewPositions[I].BoundsRect) or + (FViewers[I].Show <> NewPositions[I].Show) or + (tbisLineSep in FViewers[I].State <> NewPositions[I].LineSep)) then + Result := True; + FViewers[I].FBoundsRect := NewPositions[I].BoundsRect; + FViewers[I].FShow := NewPositions[I].Show; + FViewers[I].FOffEdge := NewPositions[I].OffEdge; + FViewers[I].FClipped := NewPositions[I].Clipped; + if NewPositions[I].LineSep then + Include(FViewers[I].State, tbisLineSep) + else + Exclude(FViewers[I].State, tbisLineSep); + end; + end; + finally + FOrientation := SaveOrientation; + if Assigned(CalcCanvas) then + CalcCanvas.Handle := 0; + if DC <> 0 then ReleaseDC(0, DC); + CalcCanvas.Free; + FreeMem(NewPositions); + end; + if (ABaseSize.X = 0) or (ABaseSize.Y = 0) then begin + { If there are no visible items... } + {}{scale this?} + ABaseSize.X := 23; + ABaseSize.Y := 22; + if TotalSize.X < 23 then TotalSize.X := 23; + if TotalSize.Y < 22 then TotalSize.Y := 22; + end; +end; + +procedure TTBView.DoUpdatePositions(var ASize: TPoint); +{ This is called by UpdatePositions } +var + Bmp: TBitmap; + CtlCanvas: TControlCanvas; + WrappedLines: Integer; +begin + { Don't call InvalidatePositions before CalculatePositions so that + endless recursion doesn't happen if an item's CalcSize uses a method that + calls ValidatePositions } + if not CalculatePositions(True, FOrientation, FWrapOffset, FChevronOffset, + FChevronSize, FBaseSize, ASize, WrappedLines) then begin + { If the new positions are identical to the previous ones, continue using + the previous ones, and don't redraw } + FValidated := True; + { Just because the positions are the same doesn't mean the size hasn't + changed. (If a shrunken toolbar moves between docks, the positions of + the non-OffEdge items may be the same on the new dock as on the old + dock.) } + AutoSize(ASize.X, ASize.Y); + end + else begin + if not(csDesigning in ComponentState) then begin + FValidated := True; + { Need to call ValidateRect before AutoSize, otherwise Windows will + erase the client area during a resize } + if FWindow.HandleAllocated then + ValidateRect(FWindow.Handle, nil); + AutoSize(ASize.X, ASize.Y); + if Assigned(FWindow) and FWindow.HandleAllocated and + IsWindowVisible(FWindow.Handle) and + (FWindow.ClientWidth > 0) and (FWindow.ClientHeight > 0) then begin + CtlCanvas := nil; + Bmp := TBitmap.Create; + try + CtlCanvas := TControlCanvas.Create; + CtlCanvas.Control := FWindow; + Bmp.Width := FWindow.ClientWidth; + Bmp.Height := FWindow.ClientHeight; + + SendMessage(FWindow.Handle, WM_ERASEBKGND, WPARAM(Bmp.Canvas.Handle), 0); + SendMessage(FWindow.Handle, WM_PAINT, WPARAM(Bmp.Canvas.Handle), 0); + BitBlt(CtlCanvas.Handle, 0, 0, Bmp.Width, Bmp.Height, + Bmp.Canvas.Handle, 0, 0, SRCCOPY); + ValidateRect(FWindow.Handle, nil); + finally + CtlCanvas.Free; + Bmp.Free; + end; + end; + end + else begin + { Delphi's handling of canvases is different at design time -- child + controls aren't clipped from a parent control's canvas, so the above + offscreen rendering code doesn't work right at design-time } + InvalidatePositions; + FValidated := True; + AutoSize(ASize.X, ASize.Y); + end; + end; +end; + +function TTBView.UpdatePositions: TPoint; +{ Called whenever the size or orientation of a view changes. When items are + added or removed from the view, InvalidatePositions must be called instead, + otherwise the view may not be redrawn properly. } +begin + Result.X := 0; + Result.Y := 0; + DoUpdatePositions(Result); +end; + +procedure TTBView.AutoSize(AWidth, AHeight: Integer); +begin +end; + +function TTBView.GetChevronItem: TTBCustomItem; +begin + Result := nil; +end; + +procedure TTBView.GetMargins(AOrientation: TTBViewOrientation; + var Margins: TRect); +begin + if AOrientation = tbvoFloating then begin + Margins.Left := 4; + Margins.Top := 2; + Margins.Right := 4; + Margins.Bottom := 1; + end + else begin + Margins.Left := 0; + Margins.Top := 0; + Margins.Right := 0; + Margins.Bottom := 0; + end; +end; + +function TTBView.GetMDIButtonsItem: TTBCustomItem; +begin + Result := nil; +end; + +function TTBView.GetMDISystemMenuItem: TTBCustomItem; +begin + Result := nil; +end; + +function TTBView.GetFont: TFont; +begin + if Assigned(ToolbarFont) then + Result := ToolbarFont + else begin + { ToolbarFont is destroyed during unit finalization, but in rare cases + this method may end up being called from ValidatePositions *after* + unit finalization if Application.Run is never called; see the + "EConvertError" newsgroup thread. We can't return nil because that would + cause an exception in the calling function, so just return the window + font. It's not the *right* font, but it shouldn't matter since the app + is exiting anyway. } + Result := TControlAccess(FWindow).Font; + end; +end; + +procedure TTBView.DrawItem(Viewer: TTBItemViewer; DrawTo: TCanvas; + Offscreen: Boolean); +const + COLOR_MENUHILIGHT = 29; + clMenuHighlight = TColor(COLOR_MENUHILIGHT or $80000000); +var + Bmp: TBitmap; + DrawToDC, BmpDC: HDC; + DrawCanvas: TCanvas; + R1, R2, R3: TRect; + IsOpen, IsSelected, IsPushed: Boolean; + ToolbarStyle: Boolean; + UseDisabledShadow: Boolean; + SaveIndex, SaveIndex2: Integer; + BkColor: TColor; +begin + ValidatePositions; + + if tbisInvalidated in Viewer.State then begin + Offscreen := True; + Exclude(Viewer.State, tbisInvalidated); + end; + + R1 := Viewer.BoundsRect; + if not Viewer.Show or IsRectEmpty(R1) or (Viewer.Item is TTBControlItem) then + Exit; + R2 := R1; + OffsetRect(R2, -R2.Left, -R2.Top); + + IsOpen := FOpenViewer = Viewer; + IsSelected := (FSelected = Viewer); + IsPushed := IsSelected and (IsOpen or (FMouseOverSelected and FCapture)); + ToolbarStyle := Viewer.IsToolbarStyle; + + DrawToDC := DrawTo.Handle; + Bmp := nil; + { Must deselect any currently selected handles before calling SaveDC, because + if they are left selected and DeleteObject gets called on them after the + SaveDC call, it will fail on Win9x/Me, and thus leak GDI resources. } + DrawTo.Refresh; + SaveIndex := SaveDC(DrawToDC); + try + IntersectClipRect(DrawToDC, R1.Left, R1.Top, R1.Right, R1.Bottom); + GetClipBox(DrawToDC, R3); + if IsRectEmpty(R3) then + Exit; + + if not Offscreen then begin + MoveWindowOrg(DrawToDC, R1.Left, R1.Top); + { Tweak the brush origin so that the checked background drawn behind + checked items always looks the same regardless of whether the item + is positioned on an even or odd Left or Top coordinate. } + SetBrushOrgEx(DrawToDC, R1.Left and 1, R1.Top and 1, nil); + DrawCanvas := DrawTo; + end + else begin + Bmp := TBitmap.Create; + Bmp.Width := R2.Right; + Bmp.Height := R2.Bottom; + DrawCanvas := Bmp.Canvas; + BmpDC := DrawCanvas.Handle; + SaveIndex2 := SaveDC(BmpDC); + SetWindowOrgEx(BmpDC, R1.Left, R1.Top, nil); + FWindow.Perform(WM_ERASEBKGND, WPARAM(BmpDC), 0); + RestoreDC(BmpDC, SaveIndex2); + end; + + { Initialize brush } + if not ToolbarStyle and IsSelected then begin + {$IFNDEF TB2K_USE_STRICT_O2K_MENU_STYLE} + if AreFlatMenusEnabled then + { Windows XP uses a different fill color for selected menu items when + flat menus are enabled } + DrawCanvas.Brush.Color := clMenuHighlight + else + {$ENDIF} + DrawCanvas.Brush.Color := clHighlight; + end + else + DrawCanvas.Brush.Style := bsClear; + + { Initialize font } + DrawCanvas.Font.Assign(GetFont); + if Viewer.Item.Enabled then begin + if not ToolbarStyle and IsSelected then + DrawCanvas.Font.Color := clHighlightText + else begin + if ToolbarStyle then + DrawCanvas.Font.Color := clBtnText + else + DrawCanvas.Font.Color := tbMenuTextColor; + end; + UseDisabledShadow := False; + end + else begin + DrawCanvas.Font.Color := clGrayText; + { Use the disabled shadow if either: + 1. The item is a toolbar-style item. + 2. The item is not selected, and the background color equals the + button-face color. + 3. The gray-text color is the same as the background color. + Note: Windows actually uses dithered text in this case. } + BkColor := ColorToRGB(TControlAccess(FWindow).Color); + UseDisabledShadow := ToolbarStyle or + (not IsSelected and (BkColor = ColorToRGB(clBtnFace))) or + (ColorToRGB(clGrayText) = BkColor); + end; + + Viewer.Paint(DrawCanvas, R2, IsSelected, IsPushed, UseDisabledShadow); + + if Offscreen then + BitBlt(DrawToDC, R1.Left, R1.Top, Bmp.Width, Bmp.Height, DrawCanvas.Handle, + 0, 0, SRCCOPY); + finally + DrawTo.Refresh; { must do this before a RestoreDC } + RestoreDC(DrawToDC, SaveIndex); + Bmp.Free; + end; +end; + +procedure TTBView.DrawSubitems(ACanvas: TCanvas); +var + I: Integer; +begin + for I := 0 to FViewerCount-1 do begin + if (vsDrawInOrder in FState) or (FViewers[I] <> FSelected) then + DrawItem(FViewers[I], ACanvas, False); + end; + if not(vsDrawInOrder in FState) and Assigned(FSelected) then + DrawItem(FSelected, ACanvas, False); + + Exclude(FState, vsDrawInOrder); +end; + +procedure TTBView.Invalidate(AViewer: TTBItemViewer); +begin + if not FValidated or not Assigned(FWindow) or not FWindow.HandleAllocated then + Exit; + if AViewer.Show and not IsRectEmpty(AViewer.BoundsRect) and + not(AViewer.Item is TTBControlItem) then begin + Include(AViewer.State, tbisInvalidated); + InvalidateRect(FWindow.Handle, @AViewer.BoundsRect, False); + end; +end; + +procedure TTBView.SetAccelsVisibility(AShowAccels: Boolean); +var + I: Integer; + Viewer: TTBItemViewer; +begin + { Always show accels when keyboard cues are enabled } + AShowAccels := AShowAccels or not(vsUseHiddenAccels in FStyle) or + AreKeyboardCuesEnabled; + if AShowAccels <> (vsShowAccels in FState) then begin + if AShowAccels then + Include(FState, vsShowAccels) + else + Exclude(FState, vsShowAccels); + if Assigned(FWindow) and FWindow.HandleAllocated and + IsWindowVisible(FWindow.Handle) then + { ^ the visibility check is just an optimization } + for I := 0 to FViewerCount-1 do begin + Viewer := FViewers[I]; + if Viewer.CaptionShown and + (FindAccelChar(Viewer.GetCaptionText) <> #0) then + Invalidate(Viewer); + end; + end; +end; + +function TTBView.FirstSelectable: TTBItemViewer; +var + FirstViewer: TTBItemViewer; +begin + Result := NextSelectable(nil, True); + if Assigned(Result) then begin + FirstViewer := Result; + while tbisDontSelectFirst in Result.Item.ItemStyle do begin + Result := NextSelectable(Result, True); + if Result = FirstViewer then + { don't loop endlessly if all items have the tbisDontSelectFirst style } + Break; + end; + end; +end; + +function TTBView.NextSelectable(CurViewer: TTBItemViewer; + GoForward: Boolean): TTBItemViewer; +var + I, J: Integer; +begin + ValidatePositions; + Result := nil; + if FViewerCount = 0 then Exit; + J := -1; + I := IndexOf(CurViewer); + while True do begin + if GoForward then begin + Inc(I); + if I >= FViewerCount then I := 0; + end + else begin + Dec(I); + if I < 0 then I := FViewerCount-1; + end; + if J = -1 then + J := I + else + if I = J then + Exit; + if (FViewers[I].Show or FViewers[I].Clipped) and FViewers[I].Item.Visible and + (tbisSelectable in FViewers[I].Item.ItemStyle) then + Break; + end; + Result := FViewers[I]; +end; + +function TTBView.NextSelectableWithAccel(CurViewer: TTBItemViewer; + Key: Char; RequirePrimaryAccel: Boolean; var IsOnlyItemWithAccel: Boolean): TTBItemViewer; + + function IsAccelItem(const Index: Integer; + const Primary, EnabledItems: Boolean): Boolean; + var + S: String; + LastAccel: Char; + Viewer: TTBItemViewer; + Item: TTBCustomItem; + begin + Result := False; + Viewer := FViewers[Index]; + Item := Viewer.Item; + if (Viewer.Show or Viewer.Clipped) and (tbisSelectable in Item.ItemStyle) and + (Item.Enabled = EnabledItems) and + Item.Visible and Viewer.CaptionShown then begin + S := Viewer.GetCaptionText; + if S <> '' then begin + LastAccel := FindAccelChar(S); + if Primary then begin + if LastAccel <> #0 then + Result := AnsiCompareText(LastAccel, Key) = 0; + end + else + if (LastAccel = #0) and (Key <> ' ') then + Result := AnsiCompareText(S[1], Key) = 0; + end; + end; + end; + + function FindAccel(I: Integer; + const Primary, EnabledItems: Boolean): Integer; + var + J: Integer; + begin + Result := -1; + J := -1; + while True do begin + Inc(I); + if I >= FViewerCount then I := 0; + if J = -1 then + J := I + else + if I = J then + Break; + if IsAccelItem(I, Primary, EnabledItems) then begin + Result := I; + Break; + end; + end; + end; + +var + Start, I: Integer; + Primary, EnabledItems: Boolean; +begin + ValidatePositions; + Result := nil; + IsOnlyItemWithAccel := False; + if FViewerCount = 0 then Exit; + + Start := IndexOf(CurViewer); + for Primary := True downto False do + if not RequirePrimaryAccel or Primary then + for EnabledItems := True downto False do begin + I := FindAccel(Start, Primary, EnabledItems); + if I <> -1 then begin + Result := FViewers[I]; + IsOnlyItemWithAccel := not EnabledItems or + (FindAccel(I, Primary, EnabledItems) = I); + Exit; + end; + end; +end; + +procedure TTBView.EnterToolbarLoop(Options: TTBEnterToolbarLoopOptions); +var + ModalHandler: TTBModalHandler; + P: TPoint; +begin + if vsModal in FState then Exit; + ModalHandler := TTBModalHandler.Create(FWindow.Handle); + try + { remove all states except... } + FState := FState * [vsShowAccels]; + try + Include(FState, vsModal); + { Must ensure that DoneAction is reset to tbdaNone *before* calling + NotifyFocusEvent so that the IsModalEnding call it makes won't return + True } + FDoneActionData.DoneAction := tbdaNone; + { Now that the vsModal state has been added, send an MSAA focus event } + if Assigned(Selected) then + NotifyFocusEvent; + ModalHandler.Loop(Self, tbetMouseDown in Options, + tbetExecuteSelected in Options, tbetFromMSAA in Options, False); + finally + { Remove vsModal state from the root view before any TTBView.Destroy + methods get called (as a result of the CloseChildPopups call below), + so that NotifyFocusEvent becomes a no-op } + Exclude(FState, vsModal); + StopAllTimers; + CloseChildPopups; + GetCursorPos(P); + UpdateSelection(@P, True); + end; + finally + ModalHandler.Free; + end; + SetAccelsVisibility(False); + Selected := nil; + // caused flicker: FWindow.Update; + ProcessDoneAction(FDoneActionData, False); +end; + +procedure TTBView.SetCustomizing(Value: Boolean); +begin + if FCustomizing <> Value then begin + FCustomizing := Value; + RecreateAllViewers; + end; +end; + +procedure TTBView.BeginUpdate; +begin + Inc(FUpdating); +end; + +procedure TTBView.EndUpdate; +begin + Dec(FUpdating); + if FUpdating = 0 then + TryValidatePositions; +end; + +procedure TTBView.GetOffEdgeControlList(const List: TList); +var + I: Integer; + Item: TTBCustomItem; +begin + for I := 0 to FViewerCount-1 do begin + Item := FViewers[I].Item; + if (Item is TTBControlItem) and FViewers[I].OffEdge and + (TTBControlItem(Item).FControl is TWinControl) then + List.Add(TTBControlItem(Item).FControl); + end; +end; + +procedure TTBView.SetCapture; +begin + FCapture := True; +end; + +procedure TTBView.CancelCapture; +begin + if FCapture then begin + FCapture := False; + LastPos.X := Low(LastPos.X); + if Assigned(FSelected) then + FSelected.LosingCapture; + end; +end; + +procedure TTBView.KeyDown(var Key: Word; Shift: TShiftState); + + procedure SelNextItem(const ParentView: TTBView; const GoForward: Boolean); + begin + ParentView.Selected := ParentView.NextSelectable(ParentView.FSelected, + GoForward); + ParentView.ScrollSelectedIntoView; + end; + + procedure HelpKey; + var + V: TTBView; + ContextID: Integer; + begin + ContextID := 0; + V := Self; + while Assigned(V) do begin + if Assigned(V.FSelected) then begin + ContextID := V.FSelected.Item.HelpContext; + if ContextID <> 0 then Break; + end; + V := V.FParentView; + end; + if ContextID <> 0 then + EndModalWithHelp(ContextID); + end; + +var + ParentTBView: TTBView; +begin + ParentTBView := GetParentToolbarView; + case Key of + VK_TAB: begin + SelNextItem(Self, GetKeyState(VK_SHIFT) >= 0); + end; + VK_RETURN: begin + ExecuteSelected(True); + end; + VK_MENU, VK_F10: begin + EndModal; + end; + VK_ESCAPE: begin + Key := 0; + if FParentView = nil then + EndModal + else + FParentView.CancelChildPopups; + end; + VK_LEFT, VK_RIGHT: begin + if (Self = ParentTBView) and (Orientation = tbvoVertical) then + OpenChildPopup(True) + else if Key = VK_LEFT then begin + if Assigned(ParentTBView) and (ParentTBView.Orientation <> tbvoVertical) then begin + if (Self = ParentTBView) or + (FParentView = ParentTBView) then + SelNextItem(ParentTBView, False) + else + FParentView.CloseChildPopups; + end + else begin + if Assigned(FParentView) then + FParentView.CancelChildPopups; + end; + end + else begin + if ((Self = ParentTBView) or not OpenChildPopup(True)) and + (Assigned(ParentTBView) and (ParentTBView.Orientation <> tbvoVertical)) then begin + { If we're on ParentTBView, or if the selected item can't display + a submenu, proceed to next item on ParentTBView } + SelNextItem(ParentTBView, True); + end; + end; + end; + VK_UP, VK_DOWN: begin + if (Self = ParentTBView) and (Orientation <> tbvoVertical) then + OpenChildPopup(True) + else + SelNextItem(Self, Key = VK_DOWN); + end; + VK_HOME, VK_END: begin + Selected := NextSelectable(nil, Key = VK_HOME); + ScrollSelectedIntoView; + end; + VK_F1: HelpKey; + else + Exit; { don't set Key to 0 for unprocessed keys } + end; + Key := 0; +end; + +function TTBView.IsModalEnding: Boolean; +begin + Result := (GetRootView.FDoneActionData.DoneAction <> tbdaNone); +end; + +procedure TTBView.EndModal; +var + RootView: TTBView; +begin + RootView := GetRootView; + RootView.FDoneActionData.DoneAction := tbdaCancel; +end; + +procedure TTBView.EndModalWithClick(AViewer: TTBItemViewer); +var + RootView: TTBView; +begin + RootView := GetRootView; + RootView.FDoneActionData.ClickItem := AViewer.Item; + RootView.FDoneActionData.Sound := AViewer.FView.FIsPopup; + RootView.FDoneActionData.DoneAction := tbdaClickItem; +end; + +procedure TTBView.EndModalWithHelp(AContextID: Integer); +var + RootView: TTBView; +begin + RootView := GetRootView; + RootView.FDoneActionData.ContextID := AContextID; + RootView.FDoneActionData.DoneAction := tbdaHelpContext; +end; + +procedure TTBView.EndModalWithSystemMenu(AWnd: HWND; AKey: Cardinal); +var + RootView: TTBView; +begin + RootView := GetRootView; + RootView.FDoneActionData.Wnd := AWnd; + RootView.FDoneActionData.Key := AKey; + RootView.FDoneActionData.DoneAction := tbdaOpenSystemMenu; +end; + +procedure TTBView.ExecuteSelected(AGivePriority: Boolean); +{ Normally called after an Enter or accelerator key press on the view, this + method 'executes' or opens the selected item. It ends the modal loop, except + when a submenu is opened. } +var + Item: TTBCustomItem; +begin + if Assigned(FSelected) and FSelected.Item.Enabled then begin + Item := FSelected.Item; + if (tbisCombo in Item.ItemStyle) or not OpenChildPopup(True) then begin + if tbisSelectable in Item.ItemStyle then + FSelected.Execute(AGivePriority) + else + EndModal; + end + end + else + EndModal; + Exit; asm db 0,'Toolbar2000 (C) 1998-2005 Jordan Russell',0 end; +end; + +procedure TTBView.Scroll(ADown: Boolean); +var + CurPos, NewPos, I: Integer; +begin + ValidatePositions; + if ADown then begin + NewPos := High(NewPos); + CurPos := FMaxHeight - tbMenuScrollArrowHeight; + for I := 0 to FViewerCount-1 do begin + with FViewers[I] do + if Clipped and not(tbisSeparator in Item.ItemStyle) and + (BoundsRect.Bottom < NewPos) and (BoundsRect.Bottom > CurPos) then + NewPos := BoundsRect.Bottom; + end; + if NewPos = High(NewPos) then + Exit; + Dec(NewPos, FMaxHeight - tbMenuScrollArrowHeight); + end + else begin + NewPos := Low(NewPos); + CurPos := tbMenuScrollArrowHeight; + for I := 0 to FViewerCount-1 do begin + with FViewers[I] do + if Clipped and not(tbisSeparator in Item.ItemStyle) and + (BoundsRect.Top > NewPos) and (BoundsRect.Top < CurPos) then + NewPos := BoundsRect.Top; + end; + if NewPos = Low(NewPos) then + Exit; + Dec(NewPos, tbMenuScrollArrowHeight); + end; + Inc(FScrollOffset, NewPos); + UpdatePositions; +end; + +procedure TTBView.ScrollSelectedIntoView; +begin + ValidatePositions; + if (FSelected = nil) or not FSelected.Clipped then + Exit; + + if FSelected.BoundsRect.Top < tbMenuScrollArrowHeight then begin + Dec(FScrollOffset, tbMenuScrollArrowHeight - FSelected.BoundsRect.Top); + UpdatePositions; + end + else if FSelected.BoundsRect.Bottom > FMaxHeight - tbMenuScrollArrowHeight then begin + Dec(FScrollOffset, (FMaxHeight - tbMenuScrollArrowHeight) - + FSelected.BoundsRect.Bottom); + UpdatePositions; + end; +end; + +procedure TTBView.SetUsePriorityList(Value: Boolean); +begin + if FUsePriorityList <> Value then begin + FUsePriorityList := Value; + RecreateAllViewers; + end; +end; + +function TTBView.GetCaptureWnd: HWND; +begin + Result := GetRootView.FCaptureWnd; +end; + +procedure TTBView.CancelMode; +var + View: TTBView; +begin + EndModal; + + { Hide all parent/child popup windows. Can't actually destroy them using + CloseChildPopups because this method may be called while inside + TTBEditItemViewer's message loop, and it could result in the active + TTBEditItemViewer instance being destroyed (leading to an AV). } + View := Self; + while Assigned(View.FOpenViewerView) do + View := View.FOpenViewerView; + repeat + View.StopAllTimers; + if View.FWindow is TTBPopupWindow then + View.FWindow.Visible := False; + View := View.FParentView; + until View = nil; + + { Note: This doesn't remove the selection from a top-level toolbar item. + Unfortunately, we can't do 'Selected := nil' because it would destroy + child popups and that must'nt happen for the reason stated above. } +end; + + +{ TTBModalHandler } + +const + LSFW_LOCK = 1; + LSFW_UNLOCK = 2; + +var + LockSetForegroundWindowInited: BOOL; + LockSetForegroundWindow: function(uLockCode: UINT): BOOL; stdcall; + +constructor TTBModalHandler.Create(AExistingWnd: HWND); +begin + inherited Create; + if not LockSetForegroundWindowInited then begin + LockSetForegroundWindow := GetProcAddress(GetModuleHandle(user32), + 'LockSetForegroundWindow'); + InterlockedExchange(Integer(LockSetForegroundWindowInited), Ord(True)); + end; + LastPos := SmallPointToPoint(TSmallPoint(GetMessagePos())); + if AExistingWnd <> 0 then + FWnd := AExistingWnd + else begin + FWnd := {$IFDEF JR_D6}Classes.{$ENDIF} AllocateHWnd(WndProc); + FCreatedWnd := True; + end; + if Assigned(LockSetForegroundWindow) then begin + { Like standard menus, don't allow other apps to steal the focus during + our modal loop. This also prevents us from losing activation when + "active window tracking" is enabled and the user moves the mouse over + another application's window. } + LockSetForegroundWindow(LSFW_LOCK); + end; + SetCapture(FWnd); + SetCursor(LoadCursor(0, IDC_ARROW)); + CallNotifyWinEvent(EVENT_SYSTEM_MENUSTART, FWnd, OBJID_CLIENT, CHILDID_SELF); + FInited := True; +end; + +destructor TTBModalHandler.Destroy; +begin + if Assigned(LockSetForegroundWindow) then + LockSetForegroundWindow(LSFW_UNLOCK); + if FWnd <> 0 then begin + if GetCapture = FWnd then + ReleaseCapture; + if FInited then + CallNotifyWinEvent(EVENT_SYSTEM_MENUEND, FWnd, OBJID_CLIENT, CHILDID_SELF); + if FCreatedWnd then + {$IFDEF JR_D6}Classes.{$ENDIF} DeallocateHWnd(FWnd); + end; + inherited; +end; + +procedure TTBModalHandler.WndProc(var Msg: TMessage); +begin + Msg.Result := DefWindowProc(FWnd, Msg.Msg, Msg.WParam, Msg.LParam); + if (Msg.Msg = WM_CANCELMODE) and Assigned(FRootPopup) then begin + try + { We can receive a WM_CANCELMODE message during a modal loop if a dialog + pops up. Respond by hiding menus to make it look like the modal loop + has returned, even though it really hasn't yet. + Note: Similar code in TTBCustomToolbar.WMCancelMode. } + FRootPopup.View.CancelMode; + except + Application.HandleException(Self); + end; + end; +end; + +procedure TTBModalHandler.Loop(const RootView: TTBView; + const AMouseDown, AExecuteSelected, AFromMSAA, TrackRightButton: Boolean); +var + OriginalActiveWindow: HWND; + + function GetActiveView: TTBView; + begin + Result := RootView; + while Assigned(Result.FOpenViewerView) do + Result := Result.FOpenViewerView; + end; + + procedure UpdateAllSelections(const P: TPoint; const AllowNewSelection: Boolean); + var + View, CapView: TTBView; + begin + View := GetActiveView; + + CapView := View; + while Assigned(CapView) and not CapView.FCapture do + CapView := CapView.FParentView; + + while Assigned(View) do begin + if (CapView = nil) or (View = CapView) then + View.UpdateSelection(@P, AllowNewSelection); + View := View.FParentView; + end; + end; + + function GetSelectedViewer(var AView: TTBView; var AViewer: TTBItemViewer): Boolean; + { Returns True if AViewer <> nil. } + var + View: TTBView; + begin + AView := nil; + AViewer := nil; + { Look for a capture item first } + View := RootView; + repeat + if View.FCapture then begin + AView := View; + AViewer := View.FSelected; + Break; + end; + View := View.FOpenViewerView; + until View = nil; + if View = nil then begin + View := RootView; + repeat + if Assigned(View.FSelected) and View.FMouseOverSelected then begin + AView := View; + AViewer := View.FSelected; + Break; + end; + if vsMouseInWindow in View.FState then begin + { ...there is no current selection, but the mouse is still in the + window. This can happen if the mouse is over the non-client area + of the toolbar or popup window, or in an area not containing an + item. } + AView := View; + Break; + end; + View := View.FOpenViewerView; + until View = nil; + end; + Result := Assigned(AViewer); + end; + + function ContinueLoop: Boolean; + begin + { Don't continue if the mouse capture is lost, if a (modeless) top-level + window is shown causing the active window to change, or if EndModal* was + called. } + Result := (GetCapture = FWnd) and (GetActiveWindow = OriginalActiveWindow) + and not RootView.IsModalEnding; + end; + + function SendKeyEvent(const View: TTBView; var Key: Word; + const Shift: TShiftState): Boolean; + begin + Result := True; + if Assigned(View.FSelected) then begin + View.FSelected.KeyDown(Key, Shift); + if RootView.IsModalEnding then + Exit; + end; + if Key <> 0 then begin + View.KeyDown(Key, Shift); + if RootView.IsModalEnding then + Exit; + end; + Result := False; + end; + + procedure DoHintMouseMessage(const Ctl: TControl; const P: TPoint); + var + M: TWMMouseMove; + begin + M.Msg := WM_MOUSEMOVE; + M.Keys := 0; + M.Pos := PointToSmallPoint(P); + Application.HintMouseMessage(Ctl, TMessage(M)); + end; + + procedure MouseMoved; + var + View: TTBView; + Cursor: HCURSOR; + Item: TTBCustomItem; + P: TPoint; + R: TRect; + begin + UpdateAllSelections(LastPos, True); + View := GetActiveView; + Cursor := 0; + if Assigned(View.FSelected) and Assigned(View.FWindow) then begin + Item := View.FSelected.Item; + P := View.FWindow.ScreenToClient(LastPos); + if ((vsAlwaysShowHints in View.FStyle) or + (tboShowHint in Item.FEffectiveOptions)) and not View.FCapture then begin + { Display popup hint for the item. Update is called + first to minimize flicker caused by the hiding & + showing of the hint window. } + View.FWindow.Update; + DoHintMouseMessage(View.FWindow, P); + end + else + Application.CancelHint; + R := View.FSelected.BoundsRect; + Dec(P.X, R.Left); + Dec(P.Y, R.Top); + View.FSelected.GetCursor(P, Cursor); + end + else + Application.CancelHint; + if Cursor = 0 then + Cursor := LoadCursor(0, IDC_ARROW); + SetCursor(Cursor); + end; + + procedure UpdateAppHint; + var + View: TTBView; + begin + View := RootView; + while Assigned(View.FOpenViewerView) and Assigned(View.FOpenViewerView.FSelected) do + View := View.FOpenViewerView; + if Assigned(View.FSelected) then + Application.Hint := GetLongHint(View.FSelected.Item.Hint) + else + Application.Hint := ''; + end; + + procedure HandleTimer(const View: TTBView; const ID: TTBViewTimerID); + begin + case ID of + tiOpen: begin + { Similar to standard menus, always close child popups, even if + Selected = OpenViewer. + Note: CloseChildPopups and OpenChildPopup will stop the tiClose + and tiOpen timers respectively. } + View.CloseChildPopups; + View.OpenChildPopup(False); + end; + tiClose: begin + { Note: CloseChildPopups stops the tiClose timer. } + View.CloseChildPopups; + end; + tiScrollUp: begin + if View.FShowUpArrow then + View.Scroll(False) + else + View.StopTimer(tiScrollUp); + end; + tiScrollDown: begin + if View.FShowDownArrow then + View.Scroll(True) + else + View.StopTimer(tiScrollDown); + end; + end; + end; + +var + MouseDownOnMenu: Boolean; + Msg: TMsg; + P: TPoint; + Ctl: TControl; + View: TTBView; + IsOnlyItemWithAccel: Boolean; + MouseIsDown: Boolean; + Key: Word; + Shift: TShiftState; + Viewer: TTBItemViewer; +begin + FillChar(RootView.FDoneActionData, SizeOf(RootView.FDoneActionData), 0); + RootView.ValidatePositions; + try + try + RootView.FCaptureWnd := FWnd; + MouseDownOnMenu := False; + if AMouseDown then begin + P := RootView.FSelected.ScreenToClient(SmallPointToPoint(TSmallPoint(GetMessagePos()))); + RootView.FSelected.MouseDown([], P.X, P.Y, MouseDownOnMenu); + if RootView.IsModalEnding then + Exit; + MouseDownOnMenu := False; { never set MouseDownOnMenu to True on first click } + end + else if AExecuteSelected then begin + RootView.ExecuteSelected(not AFromMSAA); + if RootView.IsModalEnding then + Exit; + end; + OriginalActiveWindow := GetActiveWindow; + while ContinueLoop do begin + { Examine the next message before popping it out of the queue } + if not PeekMessage(Msg, 0, 0, 0, PM_NOREMOVE) then begin + WaitMessage; + Continue; + end; + case Msg.message of + WM_LBUTTONDOWN, WM_RBUTTONDOWN: begin + P := SmallPointToPoint(TSmallPoint(Msg.lParam)); + Windows.ClientToScreen(Msg.hwnd, P); + Ctl := FindDragTarget(P, True); + { Was the mouse not clicked on a popup, or was it clicked on a + popup that is not a child of RootView? + (The latter can happen when in customization mode, for example, + if the user right-clicks a popup menu being customized and + the context menu is displayed.) } + if not(Ctl is TTBPopupWindow) or + not RootView.ContainsView(TTBPopupWindow(Ctl).View) then begin + { If the root view is a popup, or if the root view is a toolbar + and the user clicked outside the toolbar or in its non-client + area (e.g. on its drag handle), exit } + if RootView.FIsPopup or (Ctl <> RootView.FWindow) or + not PtInRect(RootView.FWindow.ClientRect, RootView.FWindow.ScreenToClient(P)) then + Exit + else + if Msg.message = WM_LBUTTONDOWN then begin + { If the user clicked inside a toolbar on anything but an + item, exit } + UpdateAllSelections(P, True); + if (RootView.FSelected = nil) or not RootView.FMouseOverSelected or + (tbisClicksTransparent in RootView.FSelected.Item.ItemStyle) then + Exit; + end; + end; + end; + end; + { Now pop the message out of the queue } + if not PeekMessage(Msg, 0, Msg.message, Msg.message, PM_REMOVE or PM_NOYIELD) then + Continue; + case Msg.message of + $4D: + { This undocumented message is sent to the focused window when + F1 is pressed. Windows handles it by sending a WM_HELP message + to the same window. We don't want this to happen while a menu + is up, so swallow the message. } + ; + WM_CONTEXTMENU: + { Windows still sends WM_CONTEXTMENU messages for "context menu" + keystrokes even if WM_KEYUP messages are never dispatched, + so it must specifically ignore this message } + ; + WM_KEYFIRST..WM_KEYLAST: begin + Application.CancelHint; + MouseIsDown := (GetKeyState(VK_LBUTTON) < 0) or + (TrackRightButton and (GetKeyState(VK_RBUTTON) < 0)); + case Msg.message of + WM_KEYDOWN, WM_SYSKEYDOWN: + begin + if Msg.wParam = VK_PROCESSKEY then + { Don't let IME process the key } + Msg.wParam := ImmGetVirtualKey(Msg.hwnd); + if not MouseIsDown or (Msg.wParam = VK_F1) then begin + Key := Word(Msg.wParam); + if SendKeyEvent(GetActiveView, Key, + KeyDataToShiftState(Msg.lParam)) then + Exit; + { If it's not handled by a KeyDown method, translate + it into a WM_*CHAR message } + if Key <> 0 then + TranslateMessage(Msg); + end; + end; + WM_CHAR, WM_SYSCHAR: + if not MouseIsDown then begin + View := GetActiveView; + Viewer := View.NextSelectableWithAccel(View.FSelected, + Chr(Msg.WParam), False, IsOnlyItemWithAccel); + if Viewer = nil then begin + if (Msg.WParam in [VK_SPACE, Ord('-')]) and + not RootView.FIsPopup and (View = RootView) and + (GetActiveWindow <> 0) then begin + RootView.EndModalWithSystemMenu(GetActiveWindow, + Msg.WParam); + Exit; + end + else + MessageBeep(0); + end + else begin + View.Selected := Viewer; + View.ScrollSelectedIntoView; + if IsOnlyItemWithAccel then + View.ExecuteSelected(True); + end; + end; + end; + end; + WM_TIMER: + begin + Ctl := FindControl(Msg.hwnd); + if Assigned(Ctl) and (Ctl is TTBPopupWindow) and + (Msg.wParam >= ViewTimerBaseID + Ord(Low(TTBViewTimerID))) and + (Msg.wParam <= ViewTimerBaseID + Ord(High(TTBViewTimerID))) then begin + if Assigned(TTBPopupWindow(Ctl).FView) then + HandleTimer(TTBPopupWindow(Ctl).FView, + TTBViewTimerID(WPARAM(Msg.wParam - ViewTimerBaseID))); + end + else + DispatchMessage(Msg); + end; + $118: ; + { ^ Like standard menus, don't dispatch WM_SYSTIMER messages + (the internal Windows message used for things like caret + blink and list box scrolling). } + WM_MOUSEFIRST..WM_MOUSELAST: + case Msg.message of + WM_MOUSEMOVE: begin + if (Msg.pt.X <> LastPos.X) or (Msg.pt.Y <> LastPos.Y) then begin + LastPos := Msg.pt; + MouseMoved; + end; + if GetSelectedViewer(View, Viewer) then begin + P := Viewer.ScreenToClient(Msg.pt); + Viewer.MouseMove(P.X, P.Y); + end; + end; + WM_MOUSEWHEEL: + if GetSelectedViewer(View, Viewer) then begin + P := Viewer.ScreenToClient(Msg.pt); + Viewer.MouseWheel(Smallint(LongRec(Msg.wParam).Hi), P.X, P.Y); + end; + WM_LBUTTONDOWN, WM_LBUTTONDBLCLK, WM_RBUTTONDOWN: + if (Msg.message <> WM_RBUTTONDOWN) or TrackRightButton then begin + Application.CancelHint; + MouseDownOnMenu := False; + Exclude(RootView.FState, vsIgnoreFirstMouseUp); + UpdateAllSelections(Msg.pt, True); + if GetSelectedViewer(View, Viewer) then begin + if Msg.message <> WM_LBUTTONDBLCLK then + Shift := [] + else + Shift := [ssDouble]; + P := Viewer.ScreenToClient(Msg.pt); + Viewer.MouseDown(Shift, P.X, P.Y, MouseDownOnMenu); + LastPos := SmallPointToPoint(TSmallPoint(GetMessagePos())); + end; + end; + WM_LBUTTONUP, WM_RBUTTONUP: + if (Msg.message = WM_LBUTTONUP) or TrackRightButton then begin + UpdateAllSelections(Msg.pt, False); + { ^ False is used so that when a popup menu is + displayed with the cursor currently inside it, the item + under the cursor won't be accidentally selected when the + user releases the button. The user must move the mouse at + at least one pixel (generating a WM_MOUSEMOVE message), + and then release the button. } + if not GetSelectedViewer(View, Viewer) then begin + { Mouse was not released over any item. Cancel out of the + loop if it's outside all views, or is inside unused + space on a topmost toolbar } + if not Assigned(View) or + ((View = RootView) and RootView.FIsToolbar) then begin + if not(vsIgnoreFirstMouseUp in RootView.FState) then + Exit + else + Exclude(RootView.FState, vsIgnoreFirstMouseUp); + end; + end + else begin + P := Viewer.ScreenToClient(Msg.pt); + Viewer.MouseUp(P.X, P.Y, MouseDownOnMenu); + end; + end; + end; + else + DispatchMessage(Msg); + end; + if not ContinueLoop then + Exit; + if LastPos.X = Low(LastPos.X) then begin + LastPos := SmallPointToPoint(TSmallPoint(GetMessagePos())); + MouseMoved; + end; + UpdateAppHint; + end; + finally + RootView.CancelCapture; + end; + finally + RootView.FCaptureWnd := 0; + Application.Hint := ''; + { Make sure there are no outstanding WM_*CHAR messages } + RemoveMessages(WM_CHAR, WM_DEADCHAR); + RemoveMessages(WM_SYSCHAR, WM_SYSDEADCHAR); + { Nor any outstanding 'send WM_HELP' messages caused by an earlier press + of the F1 key } + RemoveMessages($4D, $4D); + end; +end; + + +{ TTBPopupView } + +procedure TTBPopupView.AutoSize(AWidth, AHeight: Integer); +begin + with FWindow do + SetBounds(Left, Top, AWidth + (PopupMenuWindowNCSize * 2), + AHeight + (PopupMenuWindowNCSize * 2)); +end; + +function TTBPopupView.GetFont: TFont; +begin + Result := (Owner as TTBPopupWindow).Font; +end; + + +{ TTBPopupWindow } + +constructor TTBPopupWindow.CreatePopupWindow(AOwner: TComponent; + const AParentView: TTBView; const AItem: TTBCustomItem; + const ACustomizing: Boolean); +begin + inherited Create(AOwner); + Visible := False; + SetBounds(0, 0, 320, 240); + ControlStyle := ControlStyle - [csCaptureMouse]; + ShowHint := True; + Color := tbMenuBkColor; + FView := GetViewClass.CreateView(Self, AParentView, AItem, Self, False, + ACustomizing, False); + Include(FView.FState, vsModal); + + { Inherit the font from the parent view, or use the system menu font if + there is no parent view } + if Assigned(AParentView) then + Font.Assign(AParentView.GetFont) + else + Font.Assign(ToolbarFont); + + { Inherit the accelerator visibility state from the parent view. If there + is no parent view (i.e. it's a standalone popup menu), then default to + hiding accelerator keys, but change this in CreateWnd if the last input + came from the keyboard. } + if Assigned(AParentView) then begin + if vsUseHiddenAccels in AParentView.FStyle then + Include(FView.FStyle, vsUseHiddenAccels); + if vsShowAccels in AParentView.FState then + Include(FView.FState, vsShowAccels); + end + else + Include(FView.FStyle, vsUseHiddenAccels); + + if Application.Handle <> 0 then + { Use Application.Handle if possible so that the taskbar button for the app + doesn't pop up when a TTBEditItem on a popup menu is focused } + ParentWindow := Application.Handle + else + { When Application.Handle is zero, use GetDesktopWindow() as the parent + window, not zero, otherwise UpdateControlState won't show the window } + ParentWindow := GetDesktopWindow; +end; + +destructor TTBPopupWindow.Destroy; +begin + Destroying; + { Ensure window handle is destroyed *before* FView is freed, since + DestroyWindowHandle calls CallNotifyWinEvent which may result in + FView.HandleWMObject being called } + if HandleAllocated then + DestroyWindowHandle; + FreeAndNil(FView); + inherited; +end; + +procedure TTBPopupWindow.BeforeDestruction; +begin + { The inherited BeforeDestruction method hides the form. We need to close + any child popups first, so that pixels behind the popups are properly + restored without generating a WM_PAINT message. } + if Assigned(FView) then + FView.CloseChildPopups; + inherited; +end; + +function TTBPopupWindow.GetViewClass: TTBViewClass; +begin + Result := TTBPopupView; +end; + +procedure TTBPopupWindow.CreateParams(var Params: TCreateParams); +const + CS_DROPSHADOW = $00020000; +begin + inherited; + with Params do begin + Style := (Style and not (WS_CHILD or WS_GROUP or WS_TABSTOP)) or WS_POPUP; + ExStyle := ExStyle or WS_EX_TOPMOST or WS_EX_TOOLWINDOW; + WindowClass.Style := WindowClass.Style or CS_SAVEBITS; + { Enable drop shadow effect on Windows XP and later } + if IsWindowsXP then + WindowClass.Style := WindowClass.Style or CS_DROPSHADOW; + end; +end; + +procedure TTBPopupWindow.CreateWnd; +const + WM_CHANGEUISTATE = $0127; + WM_QUERYUISTATE = $0129; + UIS_INITIALIZE = 3; + UISF_HIDEACCEL = $2; +var + B: Boolean; +begin + inherited; + { On a top-level popup window, send WM_CHANGEUISTATE & WM_QUERYUISTATE + messages to the window to see if the last input came from the keyboard + and if the accelerator keys should be shown } + if (FView.ParentView = nil) and not FAccelsVisibilitySet then begin + FAccelsVisibilitySet := True; + SendMessage(Handle, WM_CHANGEUISTATE, UIS_INITIALIZE, 0); + B := (SendMessage(Handle, WM_QUERYUISTATE, 0, 0) and UISF_HIDEACCEL = 0); + FView.SetAccelsVisibility(B); + end; +end; + +procedure TTBPopupWindow.DestroyWindowHandle; +begin + { Before destroying the window handle, we must stop any animation, otherwise + the animation thread will use an invalid handle } + TBEndAnimation(WindowHandle); + { Cleanly destroy any timers before the window handle is destroyed } + if Assigned(FView) then + FView.StopAllTimers; + CallNotifyWinEvent(EVENT_SYSTEM_MENUPOPUPEND, WindowHandle, OBJID_CLIENT, + CHILDID_SELF); + inherited; +end; + +procedure TTBPopupWindow.WMGetObject(var Message: TMessage); +begin + if not FView.HandleWMGetObject(Message) then + inherited; +end; + +procedure TTBPopupWindow.CMShowingChanged(var Message: TMessage); +const + ShowFlags: array[Boolean] of UINT = ( + SWP_NOSIZE or SWP_NOMOVE or SWP_NOZORDER or SWP_NOACTIVATE or SWP_HIDEWINDOW, + SWP_NOSIZE or SWP_NOMOVE or SWP_NOZORDER or SWP_NOACTIVATE or SWP_SHOWWINDOW); + SPI_GETMENUFADE = $1012; +var + Animate: BOOL; + Blend: Boolean; +begin + { Must override TCustomForm/TForm's CM_SHOWINGCHANGED handler so that the + form doesn't get activated when Visible is set to True. } + + { Handle animation. NOTE: I do not recommend trying to enable animation on + Windows 95 and NT 4.0 because there's a difference in the way the + SetWindowPos works on those versions. See the comment in the + TBStartAnimation function of TB2Anim.pas. } + {$IFNDEF TB2K_NO_ANIMATION} + if ((FView.ParentView = nil) or not(vsNoAnimation in FView.FParentView.FState)) and + Showing and (FView.Selected = nil) and not IsWindowVisible(WindowHandle) and + SystemParametersInfo(SPI_GETMENUANIMATION, 0, @Animate, 0) and Animate then begin + Blend := SystemParametersInfo(SPI_GETMENUFADE, 0, @Animate, 0) and Animate; + if Blend or (FAnimationDirection <> []) then begin + TBStartAnimation(WindowHandle, Blend, FAnimationDirection); + Exit; + end; + end; + {$ENDIF} + + { No animation... } + if not Showing then begin + { Call TBEndAnimation to ensure WS_EX_LAYERED style is removed before + hiding, otherwise windows under the popup window aren't repainted + properly. } + TBEndAnimation(WindowHandle); + end; + SetWindowPos(WindowHandle, 0, 0, 0, 0, 0, ShowFlags[Showing]); +end; + +procedure TTBPopupWindow.WMTB2kStepAnimation(var Message: TMessage); +begin + TBStepAnimation(Message); +end; + +procedure TTBPopupWindow.WMEraseBkgnd(var Message: TWMEraseBkgnd); +begin + { May be necessary in some cases... } + TBEndAnimation(WindowHandle); + inherited; +end; + +procedure TTBPopupWindow.WMPaint(var Message: TWMPaint); +begin + { Must abort animation when a WM_PAINT message is received } + TBEndAnimation(WindowHandle); + inherited; +end; + +procedure TTBPopupWindow.Paint; +begin + FView.DrawSubitems(Canvas); + PaintScrollArrows; +end; + +procedure TTBPopupWindow.PaintScrollArrows; + + procedure DrawArrow(const R: TRect; ADown: Boolean); + var + X, Y: Integer; + P: array[0..2] of TPoint; + begin + X := (R.Left + R.Right) div 2; + Y := (R.Top + R.Bottom) div 2; + Dec(Y); + P[0].X := X-3; + P[0].Y := Y; + P[1].X := X+3; + P[1].Y := Y; + P[2].X := X; + P[2].Y := Y; + if ADown then + Inc(P[2].Y, 3) + else begin + Inc(P[0].Y, 3); + Inc(P[1].Y, 3); + end; + Canvas.Pen.Color := tbMenuTextColor; + Canvas.Brush.Color := tbMenuTextColor; + Canvas.Polygon(P); + end; + +begin + if FView.FShowUpArrow then + DrawArrow(Rect(0, 0, ClientWidth, tbMenuScrollArrowHeight), False); + if FView.FShowDownArrow then + DrawArrow(Bounds(0, ClientHeight - tbMenuScrollArrowHeight, + ClientWidth, tbMenuScrollArrowHeight), True); +end; + +procedure TTBPopupWindow.WMClose(var Message: TWMClose); +begin + { do nothing -- ignore Alt+F4 keypresses } +end; + +procedure TTBPopupWindow.WMNCCalcSize(var Message: TWMNCCalcSize); +begin + InflateRect(Message.CalcSize_Params^.rgrc[0], + -PopupMenuWindowNCSize, -PopupMenuWindowNCSize); + inherited; +end; + +procedure PopupWindowNCPaintProc(Wnd: HWND; DC: HDC; AppData: Longint); +var + R: TRect; + {$IFNDEF TB2K_USE_STRICT_O2K_MENU_STYLE} + Brush: HBRUSH; + {$ENDIF} +begin + GetWindowRect(Wnd, R); OffsetRect(R, -R.Left, -R.Top); + {$IFNDEF TB2K_USE_STRICT_O2K_MENU_STYLE} + if not AreFlatMenusEnabled then begin + {$ENDIF} + DrawEdge(DC, R, EDGE_RAISED, BF_RECT or BF_ADJUST); + FrameRect(DC, R, GetSysColorBrush(COLOR_BTNFACE)); + {$IFNDEF TB2K_USE_STRICT_O2K_MENU_STYLE} + end + else begin + FrameRect(DC, R, GetSysColorBrush(COLOR_BTNSHADOW)); + Brush := CreateSolidBrush(ColorToRGB(TTBPopupWindow(AppData).Color)); + InflateRect(R, -1, -1); + FrameRect(DC, R, Brush); + InflateRect(R, -1, -1); + FrameRect(DC, R, Brush); + DeleteObject(Brush); + end; + {$ENDIF} +end; + +procedure TTBPopupWindow.WMNCPaint(var Message: TMessage); +var + DC: HDC; +begin + DC := GetWindowDC(Handle); + try + SelectNCUpdateRgn(Handle, DC, HRGN(Message.WParam)); + PopupWindowNCPaintProc(Handle, DC, Longint(Self)); + finally + ReleaseDC(Handle, DC); + end; +end; + +procedure TTBPopupWindow.WMPrint(var Message: TMessage); +begin + HandleWMPrint(Handle, Message, PopupWindowNCPaintProc, Longint(Self)); +end; + +procedure TTBPopupWindow.WMPrintClient(var Message: TMessage); +begin + HandleWMPrintClient(Self, Message); +end; + +procedure TTBPopupWindow.CMHintShow(var Message: TCMHintShow); +begin + with Message.HintInfo^ do begin + HintStr := ''; + if Assigned(FView.Selected) then begin + CursorRect := FView.Selected.BoundsRect; + HintStr := FView.FSelected.GetHintText; + end; + end; +end; + + +{ TTBItemContainer } + +constructor TTBItemContainer.Create(AOwner: TComponent); +begin + inherited; + FItem := TTBRootItem.Create(Self); + FItem.ParentComponent := Self; +end; + +destructor TTBItemContainer.Destroy; +begin + FItem.Free; + inherited; +end; + +function TTBItemContainer.GetItems: TTBCustomItem; +begin + Result := FItem; +end; + +procedure TTBItemContainer.GetChildren(Proc: TGetChildProc; Root: TComponent); +begin + FItem.GetChildren(Proc, Root); +end; + +function TTBItemContainer.GetImages: TCustomImageList; +begin + Result := FItem.SubMenuImages; +end; + +procedure TTBItemContainer.SetImages(Value: TCustomImageList); +begin + FItem.SubMenuImages := Value; +end; + + +{ TTBPopupMenu } + +constructor TTBPopupMenu.Create(AOwner: TComponent); +begin + inherited; + FItem := GetRootItemClass.Create(Self); + FItem.ParentComponent := Self; + FItem.OnClick := RootItemClick; +end; + +destructor TTBPopupMenu.Destroy; +begin + FItem.Free; + inherited; +end; + +function TTBPopupMenu.GetItems: TTBCustomItem; +begin + Result := FItem; +end; + +procedure TTBPopupMenu.GetChildren(Proc: TGetChildProc; Root: TComponent); +begin + FItem.GetChildren(Proc, Root); +end; + +procedure TTBPopupMenu.SetChildOrder(Child: TComponent; Order: Integer); +begin + FItem.SetChildOrder(Child, Order); +end; + +function TTBPopupMenu.GetRootItemClass: TTBRootItemClass; +begin + Result := TTBRootItem; +end; + +function TTBPopupMenu.GetImages: TCustomImageList; +begin + Result := FItem.SubMenuImages; +end; + +function TTBPopupMenu.GetLinkSubitems: TTBCustomItem; +begin + Result := FItem.LinkSubitems; +end; + +function TTBPopupMenu.GetOptions: TTBItemOptions; +begin + Result := FItem.Options; +end; + +procedure TTBPopupMenu.SetImages(Value: TCustomImageList); +begin + FItem.SubMenuImages := Value; +end; + +procedure TTBPopupMenu.SetLinkSubitems(Value: TTBCustomItem); +begin + FItem.LinkSubitems := Value; +end; + +procedure TTBPopupMenu.SetOptions(Value: TTBItemOptions); +begin + FItem.Options := Value; +end; + +procedure TTBPopupMenu.RootItemClick(Sender: TObject); +begin + if Sender = FItem then + Sender := Self; + DoPopup(Sender); +end; + +{$IFNDEF JR_D5} +procedure TTBPopupMenu.DoPopup(Sender: TObject); +begin + if Assigned(OnPopup) then OnPopup(Sender); +end; +{$ENDIF} + +procedure TTBPopupMenu.Popup(X, Y: Integer); +begin + PopupEx(X, Y, False); +end; + +function TTBPopupMenu.PopupEx(X, Y: Integer; + ReturnClickedItemOnly: Boolean = False): TTBCustomItem; +begin + {$IFDEF JR_D5} + {$IFDEF JR_D9} + SetPopupPoint(Point(X, Y)); + {$ELSE} + PPoint(@PopupPoint)^ := Point(X, Y); + {$ENDIF} + {$ENDIF} + Result := FItem.Popup(X, Y, TrackButton = tbRightButton, + TTBPopupAlignment(Alignment), ReturnClickedItemOnly); +end; + +function TTBPopupMenu.IsShortCut(var Message: TWMKey): Boolean; +begin + Result := FItem.IsShortCut(Message); +end; + + +{ TTBImageList } + +constructor TTBCustomImageList.Create(AOwner: TComponent); +begin + inherited; + FCheckedImagesChangeLink := TChangeLink.Create; + FCheckedImagesChangeLink.OnChange := ImageListChanged; + FDisabledImagesChangeLink := TChangeLink.Create; + FDisabledImagesChangeLink.OnChange := ImageListChanged; + FHotImagesChangeLink := TChangeLink.Create; + FHotImagesChangeLink.OnChange := ImageListChanged; + FImagesBitmap := TBitmap.Create; + FImagesBitmap.OnChange := ImagesBitmapChanged; + FImagesBitmapMaskColor := clFuchsia; +end; + +destructor TTBCustomImageList.Destroy; +begin + FreeAndNil(FImagesBitmap); + FreeAndNil(FHotImagesChangeLink); + FreeAndNil(FDisabledImagesChangeLink); + FreeAndNil(FCheckedImagesChangeLink); + inherited; +end; + +procedure TTBCustomImageList.ImagesBitmapChanged(Sender: TObject); +begin + if not ImagesBitmap.Empty then begin + Clear; + AddMasked(ImagesBitmap, FImagesBitmapMaskColor); + end; +end; + +procedure TTBCustomImageList.ImageListChanged(Sender: TObject); +begin + Change; +end; + +procedure TTBCustomImageList.DefineProperties(Filer: TFiler); +type + TProc = procedure(ASelf: TObject; Filer: TFiler); +begin + if (Filer is TReader) or FImagesBitmap.Empty then + inherited + else + { Bypass TCustomImageList.DefineProperties when we've got an ImageBitmap } + TProc(@TComponentAccess.DefineProperties)(Self, Filer); +end; + +procedure TTBCustomImageList.DrawState(Canvas: TCanvas; X, Y, Index: Integer; + Enabled, Selected, Checked: Boolean); +begin + if not Enabled and Assigned(DisabledImages) then + DisabledImages.Draw(Canvas, X, Y, Index) + else if Checked and Assigned(CheckedImages) then + CheckedImages.Draw(Canvas, X, Y, Index, Enabled) + else if Selected and Assigned(HotImages) then + HotImages.Draw(Canvas, X, Y, Index, Enabled) + else + Draw(Canvas, X, Y, Index, Enabled); +end; + +procedure TTBCustomImageList.Notification(AComponent: TComponent; Operation: TOperation); +begin + inherited; + if Operation = opRemove then begin + if AComponent = CheckedImages then CheckedImages := nil; + if AComponent = DisabledImages then DisabledImages := nil; + if AComponent = HotImages then HotImages := nil; + end; +end; + +procedure TTBCustomImageList.ChangeImages(var AImageList: TCustomImageList; + Value: TCustomImageList; AChangeLink: TChangeLink); +begin + if Value = Self then + Value := nil; + if AImageList <> Value then begin + if Assigned(AImageList) then + AImageList.UnregisterChanges(AChangeLink); + AImageList := Value; + if Assigned(Value) then begin + Value.RegisterChanges(AChangeLink); + Value.FreeNotification(Self); + end; + { Don't call Change while loading because it causes the Delphi IDE to + think the form has been modified (?). Also, don't call Change while + destroying since there's no reason to. } + if not(csLoading in ComponentState) and + not(csDestroying in ComponentState) then + Change; + end; +end; + +procedure TTBCustomImageList.SetCheckedImages(Value: TCustomImageList); +begin + ChangeImages(FCheckedImages, Value, FCheckedImagesChangeLink); +end; + +procedure TTBCustomImageList.SetDisabledImages(Value: TCustomImageList); +begin + ChangeImages(FDisabledImages, Value, FDisabledImagesChangeLink); +end; + +procedure TTBCustomImageList.SetHotImages(Value: TCustomImageList); +begin + ChangeImages(FHotImages, Value, FHotImagesChangeLink); +end; + +procedure TTBCustomImageList.SetImagesBitmap(Value: TBitmap); +begin + FImagesBitmap.Assign(Value); +end; + +procedure TTBCustomImageList.SetImagesBitmapMaskColor(Value: TColor); +begin + if FImagesBitmapMaskColor <> Value then begin + FImagesBitmapMaskColor := Value; + ImagesBitmapChanged(nil); + end; +end; + + +{ TTBBaseAccObject } + +{ According to the MSAA docs: + "With Active Accessibility 2.0, servers can return E_NOTIMPL from IDispatch + methods and Active Accessibility will implement the IAccessible interface + for them." + And there was much rejoicing. } + +function TTBBaseAccObject.GetIDsOfNames(const IID: TGUID; Names: Pointer; + NameCount, LocaleID: Integer; DispIDs: Pointer): HResult; +begin + Result := E_NOTIMPL; +end; + +function TTBBaseAccObject.GetTypeInfo(Index, LocaleID: Integer; + out TypeInfo): HResult; +begin + Result := E_NOTIMPL; +end; + +function TTBBaseAccObject.GetTypeInfoCount(out Count: Integer): HResult; +begin + Result := E_NOTIMPL; +end; + +function TTBBaseAccObject.Invoke(DispID: Integer; const IID: TGUID; + LocaleID: Integer; Flags: Word; var Params; VarResult, ExcepInfo, + ArgErr: Pointer): HResult; +begin + Result := E_NOTIMPL; +end; + + +{ Initialization & finalization } + +procedure TBInitToolbarSystemFont; +var + NonClientMetrics: TNonClientMetrics; +begin + NonClientMetrics.cbSize := SizeOf(NonClientMetrics); + if SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @NonClientMetrics, 0) then + ToolbarFont.Handle := CreateFontIndirect(NonClientMetrics.lfMenuFont); +end; + +initialization + ToolbarFont := TFont.Create; + TBInitToolbarSystemFont; +finalization + DestroyClickWnd; + FreeAndNil(ToolbarFont); +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2MDI.pas b/official/2.1.6+2.1.beta1/Source/TB2MDI.pas new file mode 100644 index 0000000..143e063 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2MDI.pas @@ -0,0 +1,682 @@ +unit TB2MDI; + +{ + Toolbar2000 + Copyright (C) 1998-2005 by Jordan Russell + All rights reserved. + + The contents of this file are subject to the "Toolbar2000 License"; you may + not use or distribute this file except in compliance with the + "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in + TB2k-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + + Alternatively, the contents of this file may be used under the terms of the + GNU General Public License (the "GPL"), in which case the provisions of the + GPL are applicable instead of those in the "Toolbar2000 License". A copy of + the GPL may be found in GPL-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + If you wish to allow use of your version of this file only under the terms of + the GPL and not to allow others to use your version of this file under the + "Toolbar2000 License", indicate your decision by deleting the provisions + above and replace them with the notice and other provisions required by the + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + + $jrsoftware: tb2k/Source/TB2MDI.pas,v 1.13 2005/01/06 03:56:50 jr Exp $ +} + +interface + +{$I TB2Ver.inc} + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + Menus, TB2Item, TB2Toolbar; + +type + TTBMDIButtonsItem = class; + TTBMDISystemMenuItem = class; + + TTBMDIHandler = class(TComponent) + private + FButtonsItem: TTBMDIButtonsItem; + FSystemMenuItem: TTBMDISystemMenuItem; + FToolbar: TTBCustomToolbar; + procedure SetToolbar(Value: TTBCustomToolbar); + protected + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + published + property Toolbar: TTBCustomToolbar read FToolbar write SetToolbar; + end; + + TTBMDIWindowItem = class(TTBCustomItem) + private + FForm: TForm; + FOnUpdate: TNotifyEvent; + FWindowMenu: TMenuItem; + procedure ItemClick(Sender: TObject); + procedure SetForm(AForm: TForm); + protected + procedure EnabledChanged; override; + procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + public + constructor Create(AOwner: TComponent); override; + procedure InitiateAction; override; + published + property Enabled; + property OnUpdate: TNotifyEvent read FOnUpdate write FOnUpdate; + end; + + TTBMDISystemMenuItem = class(TTBCustomItem) + private + FImageList: TImageList; + procedure CommandClick(Sender: TObject); + protected + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + public + constructor Create(AOwner: TComponent); override; + procedure Click; override; + end; + + TTBMDISystemMenuItemViewer = class(TTBItemViewer) + protected + procedure CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); + override; + procedure Paint(const Canvas: TCanvas; const ClientAreaRect: TRect; + IsSelected, IsPushed, UseDisabledShadow: Boolean); override; + end; + + TTBMDIButtonType = (tbmbMinimize, tbmbRestore, tbmbClose); + + TTBMDIButtonItem = class(TTBCustomItem) + private + FButtonType: TTBMDIButtonType; + protected + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + public + constructor Create(AOwner: TComponent); override; + end; + + TTBMDIButtonItemViewer = class(TTBItemViewer) + protected + procedure CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); + override; + procedure Paint(const Canvas: TCanvas; const ClientAreaRect: TRect; + IsSelected, IsPushed, UseDisabledShadow: Boolean); override; + end; + + TTBMDISepItem = class(TTBSeparatorItem) + protected + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + end; + + TTBMDISepItemViewer = class(TTBSeparatorItemViewer) + protected + procedure CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); + override; + end; + + TTBMDIButtonsItem = class(TTBCustomItem) + private + FMinimizeItem: TTBMDIButtonItem; + FRestoreItem: TTBMDIButtonItem; + FCloseItem: TTBMDIButtonItem; + FSep1, FSep2: TTBMDISepItem; + procedure InvalidateSystemMenuItem; + procedure ItemClick(Sender: TObject); + procedure UpdateState(W: HWND; Maximized: Boolean); + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +uses + TB2Common, TB2Consts, CommCtrl; + +type + TTBCustomToolbarAccess = class(TTBCustomToolbar); + + +{ TTBMDIHandler } + +constructor TTBMDIHandler.Create(AOwner: TComponent); +begin + inherited; + FSystemMenuItem := TTBMDISystemMenuItem.Create(Self); + FButtonsItem := TTBMDIButtonsItem.Create(Self); +end; + +destructor TTBMDIHandler.Destroy; +begin + Toolbar := nil; + inherited; +end; + +procedure TTBMDIHandler.Notification(AComponent: TComponent; Operation: TOperation); +begin + inherited; + if (AComponent = FToolbar) and (Operation = opRemove) then + Toolbar := nil; +end; + +procedure TTBMDIHandler.SetToolbar(Value: TTBCustomToolbar); +var + Rebuild: Boolean; +begin + if FToolbar <> Value then begin + if Assigned(FToolbar) then begin + Rebuild := False; + if TTBCustomToolbarAccess(FToolbar).FMDIButtonsItem = FButtonsItem then begin + TTBCustomToolbarAccess(FToolbar).FMDIButtonsItem := nil; + Rebuild := True; + end; + if TTBCustomToolbarAccess(FToolbar).FMDISystemMenuItem = FSystemMenuItem then begin + TTBCustomToolbarAccess(FToolbar).FMDISystemMenuItem := nil; + Rebuild := True; + end; + if Rebuild and Assigned(FToolbar.View) then + FToolbar.View.RecreateAllViewers; + end; + FToolbar := Value; + if Assigned(Value) then begin + Value.FreeNotification(Self); + TTBCustomToolbarAccess(Value).FMDIButtonsItem := FButtonsItem; + TTBCustomToolbarAccess(Value).FMDISystemMenuItem := FSystemMenuItem; + Value.View.RecreateAllViewers; + end; + end; +end; + + +{ TTBMDISystemMenuItem } + +constructor TTBMDISystemMenuItem.Create(AOwner: TComponent); +begin + inherited; + ItemStyle := ItemStyle + [tbisSubMenu, tbisDontSelectFirst] - + [tbisRedrawOnSelChange, tbisRedrawOnMouseOverChange]; + Caption := '&-'; + + {$R TB2MDI.res} + FImageList := TImageList.Create(Self); + FImageList.Handle := ImageList_LoadBitmap(HInstance, 'TB2SYSMENUIMAGES', + 16, 0, clSilver); + SubMenuImages := FImageList; +end; + +function TTBMDISystemMenuItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBMDISystemMenuItemViewer; +end; + +procedure TTBMDISystemMenuItem.Click; +var + I: Integer; + Form: TForm; + M: HMENU; + State, ID: UINT; + Item: TTBCustomItem; + Buf: array[0..1023] of Char; +begin + inherited; + Clear; + if Application.MainForm = nil then + Exit; + Form := Application.MainForm.ActiveMDIChild; + if Form = nil then + Exit; + M := GetSystemMenu(Form.Handle, False); + for I := 0 to GetMenuItemCount(M)-1 do begin + State := GetMenuState(M, I, MF_BYPOSITION); + if State and MF_SEPARATOR <> 0 then + Add(TTBSeparatorItem.Create(Self)) + else begin + Item := TTBCustomItem.Create(Self); + if State and MF_GRAYED <> 0 then + Item.Enabled := False; + if GetMenuString(M, I, Buf, SizeOf(Buf), MF_BYPOSITION) = 0 then + Buf[0] := #0; + Item.Caption := Buf; + ID := GetMenuItemID(M, I); + Item.Tag := ID; + case ID and $FFF0 of + SC_RESTORE: Item.ImageIndex := 3; + SC_MINIMIZE: Item.ImageIndex := 2; + SC_MAXIMIZE: Item.ImageIndex := 1; + SC_CLOSE: begin + Item.ImageIndex := 0; + Item.Options := Item.Options + [tboDefault]; + end; + end; + Item.OnClick := CommandClick; + Add(Item); + end; + end; +end; + +procedure TTBMDISystemMenuItem.CommandClick(Sender: TObject); +var + Form: TForm; +begin + if Assigned(Application.MainForm) then begin + Form := Application.MainForm.ActiveMDIChild; + if Assigned(Form) then + SendMessage(Form.Handle, WM_SYSCOMMAND, TTBCustomItem(Sender).Tag, + GetMessagePos); + end; +end; + + +{ TTBMDISystemMenuItemViewer } + +procedure TTBMDISystemMenuItemViewer.CalcSize(const Canvas: TCanvas; + var AWidth, AHeight: Integer); +begin + AWidth := GetSystemMetrics(SM_CXSMICON) + 2; + AHeight := GetSystemMetrics(SM_CYSMICON) + 2; +end; + +procedure TTBMDISystemMenuItemViewer.Paint(const Canvas: TCanvas; + const ClientAreaRect: TRect; IsSelected, IsPushed, UseDisabledShadow: Boolean); + + function GetIconHandle: HICON; + var + Form: TForm; + begin + Result := 0; + if Assigned(Application.MainForm) then begin + Form := Application.MainForm.ActiveMDIChild; + if Assigned(Form) then + Result := Form.Icon.Handle; + end; + if Result = 0 then + Result := Application.Icon.Handle; + if Result = 0 then + Result := LoadIcon(0, IDI_APPLICATION); + end; + +var + R: TRect; + TempIcon: HICON; +begin + R := ClientAreaRect; + InflateRect(R, -1, -1); + TempIcon := CopyImage(GetIconHandle, IMAGE_ICON, R.Right - R.Left, + R.Bottom - R.Top, LR_COPYFROMRESOURCE); + DrawIconEx(Canvas.Handle, R.Left, R.Top, TempIcon, 0, 0, 0, 0, DI_NORMAL); + DestroyIcon(TempIcon); +end; + + +{ TTBMDIButtonItem } + +constructor TTBMDIButtonItem.Create(AOwner: TComponent); +begin + inherited; + ItemStyle := ItemStyle - [tbisSelectable, tbisRedrawOnSelChange] + + [tbisRightAlign]; +end; + +function TTBMDIButtonItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBMDIButtonItemViewer; +end; + + +{ TTBMDIButtonItemViewer } + +procedure TTBMDIButtonItemViewer.CalcSize(const Canvas: TCanvas; + var AWidth, AHeight: Integer); +begin + if NewStyleControls then begin + AWidth := GetSystemMetrics(SM_CXMENUSIZE) - 2; + if AWidth < 0 then AWidth := 0; + AHeight := GetSystemMetrics(SM_CYMENUSIZE) - 4; + if AHeight < 0 then AHeight := 0; + end + else begin + AWidth := 16; + AHeight := 14; + end; +end; + +procedure TTBMDIButtonItemViewer.Paint(const Canvas: TCanvas; + const ClientAreaRect: TRect; IsSelected, IsPushed, UseDisabledShadow: Boolean); +const + ButtonTypeFlags: array[TTBMDIButtonType] of UINT = (DFCS_CAPTIONMIN, + DFCS_CAPTIONRESTORE, DFCS_CAPTIONCLOSE); + PushedFlags: array[Boolean] of UINT = (0, DFCS_PUSHED); + EnabledFlags: array[Boolean] of UINT = (DFCS_INACTIVE, 0); +begin + DrawFrameControl(Canvas.Handle, ClientAreaRect, DFC_CAPTION, + ButtonTypeFlags[TTBMDIButtonItem(Item).FButtonType] or + PushedFlags[IsPushed] or EnabledFlags[Item.Enabled]); +end; + + +{ TTBMDISepItem } + +function TTBMDISepItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBMDISepItemViewer; +end; + + +{ TTBMDISepItemViewer } + +procedure TTBMDISepItemViewer.CalcSize(const Canvas: TCanvas; + var AWidth, AHeight: Integer); +begin + if View.Orientation <> tbvoVertical then begin + AWidth := 2; + AHeight := 6; + end + else begin + AWidth := 6; + AHeight := 2; + end; +end; + + +{ TTBMDIButtonsItem } + +var + CBTHookHandle: HHOOK; + MDIButtonsItems: TList; + +function WindowIsMDIChild(W: HWND): Boolean; +var + I: Integer; + MainForm, ChildForm: TForm; +begin + MainForm := Application.MainForm; + if Assigned(MainForm) then + for I := 0 to MainForm.MDIChildCount-1 do begin + ChildForm := MainForm.MDIChildren[I]; + if ChildForm.HandleAllocated and (ChildForm.Handle = W) then begin + Result := True; + Exit; + end; + end; + Result := False; +end; + +function CBTHook(Code: Integer; WParam: WPARAM; LParam: LPARAM): LRESULT; +stdcall; +var + Maximizing: Boolean; + WindowPlacement: TWindowPlacement; + I: Integer; +begin + case Code of + HCBT_SETFOCUS: begin + if WindowIsMDIChild(HWND(WParam)) and Assigned(MDIButtonsItems) then begin + for I := 0 to MDIButtonsItems.Count-1 do + TTBMDIButtonsItem(MDIButtonsItems[I]).InvalidateSystemMenuItem; + end; + end; + HCBT_MINMAX: begin + if WindowIsMDIChild(HWND(WParam)) and Assigned(MDIButtonsItems) and + (LParam in [SW_SHOWNORMAL, SW_SHOWMAXIMIZED, SW_MINIMIZE, SW_RESTORE]) then begin + Maximizing := (LParam = SW_MAXIMIZE); + if (LParam = SW_RESTORE) and not IsZoomed(HWND(WParam)) then begin + WindowPlacement.length := SizeOf(WindowPlacement); + GetWindowPlacement(HWND(WParam), @WindowPlacement); + Maximizing := (WindowPlacement.flags and WPF_RESTORETOMAXIMIZED <> 0); + end; + for I := 0 to MDIButtonsItems.Count-1 do + TTBMDIButtonsItem(MDIButtonsItems[I]).UpdateState(HWND(WParam), + Maximizing); + end; + end; + HCBT_DESTROYWND: begin + if WindowIsMDIChild(HWND(WParam)) and Assigned(MDIButtonsItems) then begin + for I := 0 to MDIButtonsItems.Count-1 do + TTBMDIButtonsItem(MDIButtonsItems[I]).UpdateState(HWND(WParam), + False); + end; + end; + end; + Result := CallNextHookEx(CBTHookHandle, Code, WParam, LParam); +end; + +constructor TTBMDIButtonsItem.Create(AOwner: TComponent); + + function CreateItem(const AType: TTBMDIButtonType): TTBMDIButtonItem; + begin + Result := TTBMDIButtonItem.Create(Self); + Result.FButtonType := AType; + Result.OnClick := ItemClick; + end; + +begin + inherited; + ItemStyle := ItemStyle + [tbisEmbeddedGroup]; + FMinimizeItem := CreateItem(tbmbMinimize); + FRestoreItem := CreateItem(tbmbRestore); + FCloseItem := CreateItem(tbmbClose); + FSep1 := TTBMDISepItem.Create(Self); + FSep1.Blank := True; + FSep1.ItemStyle := FSep1.ItemStyle + [tbisRightAlign, tbisNoLineBreak]; + FSep2 := TTBMDISepItem.Create(Self); + FSep2.Blank := True; + FSep2.ItemStyle := FSep2.ItemStyle + [tbisRightAlign, tbisNoLineBreak]; + Add(FSep1); + Add(FMinimizeItem); + Add(FRestoreItem); + Add(FSep2); + Add(FCloseItem); + UpdateState(0, False); + AddToList(MDIButtonsItems, Self); + if CBTHookHandle = 0 then + CBTHookHandle := SetWindowsHookEx(WH_CBT, CBTHook, 0, GetCurrentThreadId); +end; + +destructor TTBMDIButtonsItem.Destroy; +begin + RemoveFromList(MDIButtonsItems, Self); + if (MDIButtonsItems = nil) and (CBTHookHandle <> 0) then begin + UnhookWindowsHookEx(CBTHookHandle); + CBTHookHandle := 0; + end; + inherited; +end; + +procedure TTBMDIButtonsItem.UpdateState(W: HWND; Maximized: Boolean); +var + HasMaxChild, VisibilityChanged: Boolean; + + procedure UpdateVisibleEnabled(const Item: TTBCustomItem; + const AEnabled: Boolean); + begin + if (Item.Visible <> HasMaxChild) or (Item.Enabled <> AEnabled) then begin + Item.Visible := HasMaxChild; + Item.Enabled := AEnabled; + VisibilityChanged := True; + end; + end; + +var + MainForm, ActiveMDIChild, ChildForm: TForm; + I: Integer; +begin + HasMaxChild := False; + MainForm := Application.MainForm; + ActiveMDIChild := nil; + if Assigned(MainForm) then begin + for I := 0 to MainForm.MDIChildCount-1 do begin + ChildForm := MainForm.MDIChildren[I]; + if ChildForm.HandleAllocated and + (((ChildForm.Handle = W) and Maximized) or + ((ChildForm.Handle <> W) and IsZoomed(ChildForm.Handle))) then begin + HasMaxChild := True; + Break; + end; + end; + ActiveMDIChild := MainForm.ActiveMDIChild; + end; + + VisibilityChanged := False; + UpdateVisibleEnabled(TTBMDIHandler(Owner).FSystemMenuItem, True); + UpdateVisibleEnabled(FSep1, True); + UpdateVisibleEnabled(FMinimizeItem, (ActiveMDIChild = nil) or + (GetWindowLong(ActiveMDIChild.Handle, GWL_STYLE) and WS_MINIMIZEBOX <> 0)); + UpdateVisibleEnabled(FRestoreItem, True); + UpdateVisibleEnabled(FSep2, True); + UpdateVisibleEnabled(FCloseItem, True); + + if VisibilityChanged and Assigned((Owner as TTBMDIHandler).FToolbar) then begin + TTBMDIHandler(Owner).FToolbar.View.InvalidatePositions; + TTBMDIHandler(Owner).FToolbar.View.TryValidatePositions; + end; +end; + +procedure TTBMDIButtonsItem.ItemClick(Sender: TObject); +var + MainForm, ChildForm: TForm; + Cmd: WPARAM; +begin + MainForm := Application.MainForm; + if Assigned(MainForm) then begin + ChildForm := MainForm.ActiveMDIChild; + if Assigned(ChildForm) then begin + { Send WM_SYSCOMMAND messages so that we get sounds } + if Sender = FRestoreItem then + Cmd := SC_RESTORE + else if Sender = FCloseItem then + Cmd := SC_CLOSE + else + Cmd := SC_MINIMIZE; + SendMessage(ChildForm.Handle, WM_SYSCOMMAND, Cmd, GetMessagePos); + end; + end; +end; + +procedure TTBMDIButtonsItem.InvalidateSystemMenuItem; +var + View: TTBView; +begin + if Assigned((Owner as TTBMDIHandler).FToolbar) then begin + View := TTBMDIHandler(Owner).FToolbar.View; + View.Invalidate(View.Find(TTBMDIHandler(Owner).FSystemMenuItem)); + end; +end; + + +{ TTBMDIWindowItem } + +constructor TTBMDIWindowItem.Create(AOwner: TComponent); +var + Form: TForm; +begin + inherited; + ItemStyle := ItemStyle + [tbisEmbeddedGroup]; + Caption := STBMDIWindowItemDefCaption; + FWindowMenu := TMenuItem.Create(Self); + + if not(csDesigning in ComponentState) then begin + { Need to set WindowMenu before MDI children are created. Otherwise the + list incorrectly shows the first 9 child windows, even if window 10+ is + active. } + Form := Application.MainForm; + if (Form = nil) and (Screen.FormCount > 0) then + Form := Screen.Forms[0]; + SetForm(Form); + end; +end; + +procedure TTBMDIWindowItem.GetChildren(Proc: TGetChildProc; Root: TComponent); +begin +end; + +procedure TTBMDIWindowItem.Notification(AComponent: TComponent; Operation: TOperation); +begin + inherited; + if (Operation = opRemove) and (AComponent = FForm) then + SetForm(nil); +end; + +procedure TTBMDIWindowItem.SetForm(AForm: TForm); +begin + if FForm <> AForm then begin + if Assigned(FForm) and (FForm.WindowMenu = FWindowMenu) then + FForm.WindowMenu := nil; + FForm := AForm; + if Assigned(FForm) then + FForm.FreeNotification(Self); + end; + if Assigned(FForm) then + FForm.WindowMenu := FWindowMenu; +end; + +procedure TTBMDIWindowItem.EnabledChanged; +var + I: Integer; +begin + inherited; + for I := 0 to Count-1 do + Items[I].Enabled := Enabled; +end; + +procedure TTBMDIWindowItem.InitiateAction; +var + MainForm: TForm; + I: Integer; + M: HMENU; + Item: TTBCustomItem; + ItemCount: Integer; + Buf: array[0..1023] of Char; +begin + inherited; + if csDesigning in ComponentState then + Exit; + MainForm := Application.MainForm; + if Assigned(MainForm) then + SetForm(MainForm); + if FForm = nil then + Exit; + if FForm.ClientHandle <> 0 then + { This is needed, otherwise windows selected on the More Windows dialog + don't move back into the list } + SendMessage(FForm.ClientHandle, WM_MDIREFRESHMENU, 0, 0); + M := FWindowMenu.Handle; + ItemCount := GetMenuItemCount(M) - 1; + if ItemCount < 0 then + ItemCount := 0; + while Count < ItemCount do begin + Item := TTBCustomItem.Create(Self); + Item.Enabled := Enabled; + Item.OnClick := ItemClick; + Add(Item); + end; + while Count > ItemCount do + Items[Count-1].Free; + for I := 0 to ItemCount-1 do begin + Item := Items[I]; + Item.Tag := GetMenuItemID(M, I+1); + if GetMenuString(M, I+1, Buf, SizeOf(Buf), MF_BYPOSITION) = 0 then + Buf[0] := #0; + Item.Caption := Buf; + Item.Checked := GetMenuState(M, I+1, MF_BYPOSITION) and MF_CHECKED <> 0; + end; + if Assigned(FOnUpdate) then + FOnUpdate(Self); +end; + +procedure TTBMDIWindowItem.ItemClick(Sender: TObject); +var + Form: TForm; +begin + Form := Application.MainForm; + if Assigned(Form) then + PostMessage(Form.Handle, WM_COMMAND, TTBCustomItem(Sender).Tag, 0); +end; + +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2MDI.res b/official/2.1.6+2.1.beta1/Source/TB2MDI.res new file mode 100644 index 0000000000000000000000000000000000000000..4a6203581a390a61c4fb08e5e23f5205e7b9749e GIT binary patch literal 712 zcmcJJI}QRd3`7S+k&+`&QX)>UAR$Bn4N!0cj*&9Q+M9(pn`8k2C8PK=9y_)qEwG%6 zk-p(Rl{zXpPj%5&Yn^q&j@s#@s}5uv?P2F}ZZ#iMElE4frHN*Ez@Og{C7xm|0Z)oW z^?i@vBOP)H_;Pnv`Zr=o$y>NbB2P7#n@0H&u@taYuQVx?KKP(J0{4d@k;k9&CcyeI uSpE3_prU(EaO02prvKRA4*0mg{$CdGJv)4$_mz8Ug9~U4rmwu!{~R9{E(V(b literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Source/TB2MRU.pas b/official/2.1.6+2.1.beta1/Source/TB2MRU.pas new file mode 100644 index 0000000..4ee91c0 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2MRU.pas @@ -0,0 +1,403 @@ +unit TB2MRU; + +{ + Toolbar2000 + Copyright (C) 1998-2005 by Jordan Russell + All rights reserved. + + The contents of this file are subject to the "Toolbar2000 License"; you may + not use or distribute this file except in compliance with the + "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in + TB2k-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + + Alternatively, the contents of this file may be used under the terms of the + GNU General Public License (the "GPL"), in which case the provisions of the + GPL are applicable instead of those in the "Toolbar2000 License". A copy of + the GPL may be found in GPL-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + If you wish to allow use of your version of this file only under the terms of + the GPL and not to allow others to use your version of this file under the + "Toolbar2000 License", indicate your decision by deleting the provisions + above and replace them with the notice and other provisions required by the + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + + $jrsoftware: tb2k/Source/TB2MRU.pas,v 1.23 2005/01/06 03:56:50 jr Exp $ +} + +interface + +{$I TB2Ver.inc} + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + TB2Item, IniFiles, Registry; + +type + TTBMRUListClickEvent = procedure(Sender: TObject; const Filename: String) of object; + + TTBMRUList = class(TComponent) + private + FAddFullPath: Boolean; + FContainer: TTBCustomItem; + FHidePathExtension: Boolean; + FList: TStrings; + FMaxItems: Integer; + FOnChange: TNotifyEvent; + FOnClick: TTBMRUListClickEvent; + FPrefix: String; + procedure ClickHandler(Sender: TObject); + procedure SetHidePathExtension(Value: Boolean); + procedure SetList(Value: TStrings); + procedure SetMaxItems(Value: Integer); + protected + property Container: TTBCustomItem read FContainer; + function GetFirstKey: Integer; virtual; + function GetItemClass: TTBCustomItemClass; virtual; + procedure SetItemCaptions; virtual; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure Add(Filename: String); + procedure Remove(const Filename: String); + procedure LoadFromIni(Ini: TCustomIniFile; const Section: String); + procedure LoadFromRegIni(Ini: TRegIniFile; const Section: String); + procedure SaveToIni(Ini: TCustomIniFile; const Section: String); + procedure SaveToRegIni(Ini: TRegIniFile; const Section: String); + published + { MaxItems must be published before Items } + property AddFullPath: Boolean read FAddFullPath write FAddFullPath default True; + property HidePathExtension: Boolean read FHidePathExtension write SetHidePathExtension default True; + property MaxItems: Integer read FMaxItems write SetMaxItems default 4; + property Items: TStrings read FList write SetList; + property OnClick: TTBMRUListClickEvent read FOnClick write FOnClick; + property OnChange: TNotifyEvent read FOnChange write FOnChange; + property Prefix: String read FPrefix write FPrefix; + end; + + TTBMRUListItem = class(TTBCustomItem) + private + FMRUList: TTBMRUList; + procedure SetMRUList(Value: TTBMRUList); + protected + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + public + constructor Create(AOwner: TComponent); override; + published + property MRUList: TTBMRUList read FMRUList write SetMRUList; + //property Caption; + //property LinkSubitems; + end; + +implementation + +uses + TB2Common, TB2Consts, CommDlg; + +type + TTBMRUListStrings = class(TStrings) + private + FInternalList: TStrings; + FMRUList: TTBMRUList; + procedure Changed; + public + constructor Create; + destructor Destroy; override; + procedure Clear; override; + procedure Delete(Index: Integer); override; + function Get(Index: Integer): String; override; + function GetCount: Integer; override; + function IndexOf(const S: String): Integer; override; + procedure Insert(Index: Integer; const S: String); override; + procedure Move(CurIndex, NewIndex: Integer); override; + procedure Put(Index: Integer; const S: String); override; + end; + + +{ TTBMRUListStrings } + +constructor TTBMRUListStrings.Create; +begin + inherited; + FInternalList := TStringList.Create; +end; + +destructor TTBMRUListStrings.Destroy; +begin + inherited; + FInternalList.Free; +end; + +procedure TTBMRUListStrings.Changed; +begin + if Assigned(FMRUList.FOnChange) and + not(csLoading in FMRUList.ComponentState) then + FMRUList.FOnChange(FMRUList); +end; + +procedure TTBMRUListStrings.Clear; +var + I: Integer; +begin + for I := FInternalList.Count-1 downto 0 do + Delete(I); +end; + +procedure TTBMRUListStrings.Delete(Index: Integer); +begin + FMRUList.FContainer[Index].Free; + FInternalList.Delete(Index); + FMRUList.SetItemCaptions; + Changed; +end; + +function TTBMRUListStrings.Get(Index: Integer): String; +begin + Result := FInternalList[Index]; +end; + +function TTBMRUListStrings.GetCount: Integer; +begin + Result := FInternalList.Count; +end; + +function TTBMRUListStrings.IndexOf(const S: String): Integer; +begin + { This is identical to TStrings.IndexOf except we use AnsiCompareFileName. } + for Result := 0 to GetCount - 1 do + if AnsiCompareFileName(Get(Result), S) = 0 then Exit; + Result := -1; +end; + +procedure TTBMRUListStrings.Insert(Index: Integer; const S: String); +var + Item: TTBCustomItem; +begin + Item := FMRUList.GetItemClass.Create(FMRUList.FContainer); + Item.OnClick := FMRUList.ClickHandler; + FMRUList.FContainer.Insert(Index, Item); + FInternalList.Insert(Index, S); + FMRUList.SetItemCaptions; + Changed; +end; + +procedure TTBMRUListStrings.Move(CurIndex, NewIndex: Integer); +begin + FInternalList.Move(CurIndex, NewIndex); + FMRUList.FContainer.Move(CurIndex, NewIndex); + FMRUList.SetItemCaptions; + Changed; +end; + +procedure TTBMRUListStrings.Put(Index: Integer; const S: String); +begin + FInternalList[Index] := S; + FMRUList.SetItemCaptions; + Changed; +end; + + +{ TTBMRUList } + +constructor TTBMRUList.Create(AOwner: TComponent); +begin + inherited; + FAddFullPath := True; + FHidePathExtension := True; + FMaxItems := 4; + FPrefix := 'MRU'; + FList := TTBMRUListStrings.Create; + TTBMRUListStrings(FList).FMRUList := Self; + FContainer := TTBCustomItem.Create(nil); +end; + +destructor TTBMRUList.Destroy; +begin + FContainer.Free; + FList.Free; + inherited; +end; + +procedure TTBMRUList.Add(Filename: String); +var + I: Integer; +begin + if AddFullPath then + Filename := ExpandFileName(Filename); + { If Filename is already in the MRU list, move it to the top } + I := FList.IndexOf(Filename); + if I <> -1 then begin + if I > 0 then + FList.Move(I, 0); + FList[0] := Filename; { ...in case the capitalization changed } + end + else + FList.Insert(0, Filename); +end; + +procedure TTBMRUList.Remove(const Filename: String); +var + I: Integer; +begin + I := FList.IndexOf(Filename); + if I <> -1 then + FList.Delete(I); +end; + +procedure TTBMRUList.LoadFromIni(Ini: TCustomIniFile; const Section: String); +var + I: Integer; + S: String; +begin + FList.Clear; + for I := 1 to FMaxItems do begin + S := Ini.ReadString(Section, FPrefix + IntToStr(I), ''); + if S <> '' then + FList.Add(S); + end; +end; + +procedure TTBMRUList.LoadFromRegIni(Ini: TRegIniFile; const Section: String); +var + I: Integer; + S: String; +begin + FList.Clear; + for I := 1 to FMaxItems do begin + S := Ini.ReadString(Section, FPrefix + IntToStr(I), ''); + if S <> '' then + FList.Add(S); + end; +end; + +procedure TTBMRUList.SaveToIni(Ini: TCustomIniFile; const Section: String); +var + I: Integer; +begin + for I := 1 to FMaxItems do begin + if I <= FList.Count then + Ini.WriteString(Section, FPrefix + IntToStr(I), FList[I-1]) + else + Ini.DeleteKey(Section, FPrefix + IntToStr(I)); + end; +end; + +procedure TTBMRUList.SaveToRegIni(Ini: TRegIniFile; const Section: String); +var + I: Integer; +begin + for I := 1 to FMaxItems do begin + if I <= FList.Count then + Ini.WriteString(Section, FPrefix + IntToStr(I), FList[I-1]) + else + Ini.DeleteKey(Section, FPrefix + IntToStr(I)); + end; +end; + +procedure TTBMRUList.SetItemCaptions; +var + I, J, N: Integer; + Key: Char; + S: String; + Buf: array[0..MAX_PATH-1] of Char; +begin + while FList.Count > FMaxItems do + FList.Delete(FList.Count-1); + N := GetFirstKey; + for I := 0 to FContainer.Count-1 do begin + Key := #0; + if N < 9 then + Key := Chr(Ord('1') + N) + else begin + { No more numbers; try letters } + J := N - 9; + if J < 26 then + Key := Chr(Ord('A') + J); + end; + S := FList[I]; + if HidePathExtension and (GetFileTitle(PChar(S), Buf, SizeOf(Buf)) = 0) then + S := Buf; + S := EscapeAmpersands(S); + if Key <> #0 then + FContainer[I].Caption := Format('&%s %s', [Key, S]) + else + FContainer[I].Caption := S; + Inc(N); + end; +end; + +procedure TTBMRUList.ClickHandler(Sender: TObject); +var + I: Integer; +begin + I := FContainer.IndexOf(TTBCustomItem(Sender)); + if I <> -1 then begin + if I > 0 then + FList.Move(I, 0); + if Assigned(FOnClick) then + FOnClick(Self, FList[0]); + end; +end; + +procedure TTBMRUList.SetHidePathExtension(Value: Boolean); +begin + if FHidePathExtension <> Value then begin + FHidePathExtension := Value; + SetItemCaptions; + end; +end; + +procedure TTBMRUList.SetList(Value: TStrings); +begin + FList.Assign(Value); +end; + +procedure TTBMRUList.SetMaxItems(Value: Integer); +begin + FMaxItems := Value; + SetItemCaptions; +end; + +function TTBMRUList.GetItemClass: TTBCustomItemClass; +begin + Result := TTBCustomItem; +end; + +function TTBMRUList.GetFirstKey: Integer; +begin + Result := 0; +end; + + +{ TTBMRUListItem } + +constructor TTBMRUListItem.Create(AOwner: TComponent); +begin + inherited; + ItemStyle := ItemStyle + [tbisEmbeddedGroup]; + Caption := STBMRUListItemDefCaption; +end; + +procedure TTBMRUListItem.Notification(AComponent: TComponent; + Operation: TOperation); +begin + inherited; + if (AComponent = FMRUList) and (Operation = opRemove) then + SetMRUList(nil); +end; + +procedure TTBMRUListItem.SetMRUList(Value: TTBMRUList); +begin + if FMRUList <> Value then begin + FMRUList := Value; + if Assigned(FMRUList) then begin + Value.FreeNotification(Self); + LinkSubitems := FMRUList.FContainer; + end + else + LinkSubitems := nil; + end; +end; + +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2MRU.pas.orig b/official/2.1.6+2.1.beta1/Source/TB2MRU.pas.orig new file mode 100644 index 0000000..fa776d9 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2MRU.pas.orig @@ -0,0 +1,395 @@ +unit TB2MRU; + +{ + Toolbar2000 + Copyright (C) 1998-2005 by Jordan Russell + All rights reserved. + + The contents of this file are subject to the "Toolbar2000 License"; you may + not use or distribute this file except in compliance with the + "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in + TB2k-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + + Alternatively, the contents of this file may be used under the terms of the + GNU General Public License (the "GPL"), in which case the provisions of the + GPL are applicable instead of those in the "Toolbar2000 License". A copy of + the GPL may be found in GPL-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + If you wish to allow use of your version of this file only under the terms of + the GPL and not to allow others to use your version of this file under the + "Toolbar2000 License", indicate your decision by deleting the provisions + above and replace them with the notice and other provisions required by the + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + + $jrsoftware: tb2k/Source/TB2MRU.pas,v 1.23 2005/01/06 03:56:50 jr Exp $ +} + +interface + +{$I TB2Ver.inc} + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + TB2Item, IniFiles, Registry; + +type + TTBMRUListClickEvent = procedure(Sender: TObject; const Filename: String) of object; + + TTBMRUList = class(TComponent) + private + FAddFullPath: Boolean; + FContainer: TTBCustomItem; + FHidePathExtension: Boolean; + FList: TStrings; + FMaxItems: Integer; + FOnChange: TNotifyEvent; + FOnClick: TTBMRUListClickEvent; + FPrefix: String; + procedure ClickHandler(Sender: TObject); + procedure SetHidePathExtension(Value: Boolean); + procedure SetList(Value: TStrings); + procedure SetMaxItems(Value: Integer); + protected + property Container: TTBCustomItem read FContainer; + function GetItemClass: TTBCustomItemClass; virtual; + procedure SetItemCaptions; virtual; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure Add(Filename: String); + procedure Remove(const Filename: String); + procedure LoadFromIni(Ini: TCustomIniFile; const Section: String); + procedure LoadFromRegIni(Ini: TRegIniFile; const Section: String); + procedure SaveToIni(Ini: TCustomIniFile; const Section: String); + procedure SaveToRegIni(Ini: TRegIniFile; const Section: String); + published + { MaxItems must be published before Items } + property AddFullPath: Boolean read FAddFullPath write FAddFullPath default True; + property HidePathExtension: Boolean read FHidePathExtension write SetHidePathExtension default True; + property MaxItems: Integer read FMaxItems write SetMaxItems default 4; + property Items: TStrings read FList write SetList; + property OnClick: TTBMRUListClickEvent read FOnClick write FOnClick; + property OnChange: TNotifyEvent read FOnChange write FOnChange; + property Prefix: String read FPrefix write FPrefix; + end; + + TTBMRUListItem = class(TTBCustomItem) + private + FMRUList: TTBMRUList; + procedure SetMRUList(Value: TTBMRUList); + protected + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + public + constructor Create(AOwner: TComponent); override; + published + property MRUList: TTBMRUList read FMRUList write SetMRUList; + //property Caption; + //property LinkSubitems; + end; + +implementation + +uses + TB2Common, TB2Consts, CommDlg; + +type + TTBMRUListStrings = class(TStrings) + private + FInternalList: TStrings; + FMRUList: TTBMRUList; + procedure Changed; + public + constructor Create; + destructor Destroy; override; + procedure Clear; override; + procedure Delete(Index: Integer); override; + function Get(Index: Integer): String; override; + function GetCount: Integer; override; + function IndexOf(const S: String): Integer; override; + procedure Insert(Index: Integer; const S: String); override; + procedure Move(CurIndex, NewIndex: Integer); override; + procedure Put(Index: Integer; const S: String); override; + end; + + +{ TTBMRUListStrings } + +constructor TTBMRUListStrings.Create; +begin + inherited; + FInternalList := TStringList.Create; +end; + +destructor TTBMRUListStrings.Destroy; +begin + inherited; + FInternalList.Free; +end; + +procedure TTBMRUListStrings.Changed; +begin + if Assigned(FMRUList.FOnChange) and + not(csLoading in FMRUList.ComponentState) then + FMRUList.FOnChange(FMRUList); +end; + +procedure TTBMRUListStrings.Clear; +var + I: Integer; +begin + for I := FInternalList.Count-1 downto 0 do + Delete(I); +end; + +procedure TTBMRUListStrings.Delete(Index: Integer); +begin + FMRUList.FContainer[Index].Free; + FInternalList.Delete(Index); + FMRUList.SetItemCaptions; + Changed; +end; + +function TTBMRUListStrings.Get(Index: Integer): String; +begin + Result := FInternalList[Index]; +end; + +function TTBMRUListStrings.GetCount: Integer; +begin + Result := FInternalList.Count; +end; + +function TTBMRUListStrings.IndexOf(const S: String): Integer; +begin + { This is identical to TStrings.IndexOf except we use AnsiCompareFileName. } + for Result := 0 to GetCount - 1 do + if AnsiCompareFileName(Get(Result), S) = 0 then Exit; + Result := -1; +end; + +procedure TTBMRUListStrings.Insert(Index: Integer; const S: String); +var + Item: TTBCustomItem; +begin + Item := FMRUList.GetItemClass.Create(FMRUList.FContainer); + Item.OnClick := FMRUList.ClickHandler; + FMRUList.FContainer.Insert(Index, Item); + FInternalList.Insert(Index, S); + FMRUList.SetItemCaptions; + Changed; +end; + +procedure TTBMRUListStrings.Move(CurIndex, NewIndex: Integer); +begin + FInternalList.Move(CurIndex, NewIndex); + FMRUList.FContainer.Move(CurIndex, NewIndex); + FMRUList.SetItemCaptions; + Changed; +end; + +procedure TTBMRUListStrings.Put(Index: Integer; const S: String); +begin + FInternalList[Index] := S; + FMRUList.SetItemCaptions; + Changed; +end; + + +{ TTBMRUList } + +constructor TTBMRUList.Create(AOwner: TComponent); +begin + inherited; + FAddFullPath := True; + FHidePathExtension := True; + FMaxItems := 4; + FPrefix := 'MRU'; + FList := TTBMRUListStrings.Create; + TTBMRUListStrings(FList).FMRUList := Self; + FContainer := TTBCustomItem.Create(nil); +end; + +destructor TTBMRUList.Destroy; +begin + FContainer.Free; + FList.Free; + inherited; +end; + +procedure TTBMRUList.Add(Filename: String); +var + I: Integer; +begin + if AddFullPath then + Filename := ExpandFileName(Filename); + { If Filename is already in the MRU list, move it to the top } + I := FList.IndexOf(Filename); + if I <> -1 then begin + if I > 0 then + FList.Move(I, 0); + FList[0] := Filename; { ...in case the capitalization changed } + end + else + FList.Insert(0, Filename); +end; + +procedure TTBMRUList.Remove(const Filename: String); +var + I: Integer; +begin + I := FList.IndexOf(Filename); + if I <> -1 then + FList.Delete(I); +end; + +procedure TTBMRUList.LoadFromIni(Ini: TCustomIniFile; const Section: String); +var + I: Integer; + S: String; +begin + FList.Clear; + for I := 1 to FMaxItems do begin + S := Ini.ReadString(Section, FPrefix + IntToStr(I), ''); + if S <> '' then + FList.Add(S); + end; +end; + +procedure TTBMRUList.LoadFromRegIni(Ini: TRegIniFile; const Section: String); +var + I: Integer; + S: String; +begin + FList.Clear; + for I := 1 to FMaxItems do begin + S := Ini.ReadString(Section, FPrefix + IntToStr(I), ''); + if S <> '' then + FList.Add(S); + end; +end; + +procedure TTBMRUList.SaveToIni(Ini: TCustomIniFile; const Section: String); +var + I: Integer; +begin + for I := 1 to FMaxItems do begin + if I <= FList.Count then + Ini.WriteString(Section, FPrefix + IntToStr(I), FList[I-1]) + else + Ini.DeleteKey(Section, FPrefix + IntToStr(I)); + end; +end; + +procedure TTBMRUList.SaveToRegIni(Ini: TRegIniFile; const Section: String); +var + I: Integer; +begin + for I := 1 to FMaxItems do begin + if I <= FList.Count then + Ini.WriteString(Section, FPrefix + IntToStr(I), FList[I-1]) + else + Ini.DeleteKey(Section, FPrefix + IntToStr(I)); + end; +end; + +procedure TTBMRUList.SetItemCaptions; +var + I, J: Integer; + Key: Char; + S: String; + Buf: array[0..MAX_PATH-1] of Char; +begin + while FList.Count > FMaxItems do + FList.Delete(FList.Count-1); + for I := 0 to FContainer.Count-1 do begin + Key := #0; + if I < 9 then + Key := Chr(Ord('1') + I) + else begin + { No more numbers; try letters } + J := I - 9; + if J < 26 then + Key := Chr(Ord('A') + J); + end; + S := FList[I]; + if HidePathExtension and (GetFileTitle(PChar(S), Buf, SizeOf(Buf)) = 0) then + S := Buf; + S := EscapeAmpersands(S); + if Key <> #0 then + FContainer[I].Caption := Format('&%s %s', [Key, S]) + else + FContainer[I].Caption := S; + end; +end; + +procedure TTBMRUList.ClickHandler(Sender: TObject); +var + I: Integer; +begin + I := FContainer.IndexOf(TTBCustomItem(Sender)); + if I <> -1 then begin + if I > 0 then + FList.Move(I, 0); + if Assigned(FOnClick) then + FOnClick(Self, FList[0]); + end; +end; + +procedure TTBMRUList.SetHidePathExtension(Value: Boolean); +begin + if FHidePathExtension <> Value then begin + FHidePathExtension := Value; + SetItemCaptions; + end; +end; + +procedure TTBMRUList.SetList(Value: TStrings); +begin + FList.Assign(Value); +end; + +procedure TTBMRUList.SetMaxItems(Value: Integer); +begin + FMaxItems := Value; + SetItemCaptions; +end; + +function TTBMRUList.GetItemClass: TTBCustomItemClass; +begin + Result := TTBCustomItem; +end; + + +{ TTBMRUListItem } + +constructor TTBMRUListItem.Create(AOwner: TComponent); +begin + inherited; + ItemStyle := ItemStyle + [tbisEmbeddedGroup]; + Caption := STBMRUListItemDefCaption; +end; + +procedure TTBMRUListItem.Notification(AComponent: TComponent; + Operation: TOperation); +begin + inherited; + if (AComponent = FMRUList) and (Operation = opRemove) then + SetMRUList(nil); +end; + +procedure TTBMRUListItem.SetMRUList(Value: TTBMRUList); +begin + if FMRUList <> Value then begin + FMRUList := Value; + if Assigned(FMRUList) then begin + Value.FreeNotification(Self); + LinkSubitems := FMRUList.FContainer; + end + else + LinkSubitems := nil; + end; +end; + +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2Reg.dcr b/official/2.1.6+2.1.beta1/Source/TB2Reg.dcr new file mode 100644 index 0000000000000000000000000000000000000000..0ddba526813bb4f62c3ab1cb601cca1ce1deae4f GIT binary patch literal 3156 zcmd5;J#X7E5WN%y)Xfasdv^oDsc;$GI1Di{lfnC5{`QkMtvQ&(9;I zH-N9hbw)3J#RcL#Y&8*1s%yES1f`(Xr1SA(CvVpo0U9I4fp|Hf&V|S>*DYBA$I!j`aB##d}7U}&}M(X z-P4@D6DxS{)q7t0#nA&q$&?zd-?m%V&SKALRI_G3!+m6^4!%Lm3<-z_Op9G4$J6l@3V>&JPL_uLm`%O%};4W-q0Pnv_aE$yO{JObuK8=Hk<|9iK9Zg=?J&FLq; zeVv^mcgEfy394ivcbgC)t0B%xmEj`x3xaw4xA!dPz_%C#I*_s+>Wel*T n+GcfCzGAFuTP9f5mD2EIJ>bN42Of!kg~bsp{MZ~kocQ8z3JhxC literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Source/TB2Reg.pas b/official/2.1.6+2.1.beta1/Source/TB2Reg.pas new file mode 100644 index 0000000..1cdd320 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2Reg.pas @@ -0,0 +1,257 @@ +unit TB2Reg; + +{ + Toolbar2000 + Copyright (C) 1998-2005 by Jordan Russell + All rights reserved. + + The contents of this file are subject to the "Toolbar2000 License"; you may + not use or distribute this file except in compliance with the + "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in + TB2k-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + + Alternatively, the contents of this file may be used under the terms of the + GNU General Public License (the "GPL"), in which case the provisions of the + GPL are applicable instead of those in the "Toolbar2000 License". A copy of + the GPL may be found in GPL-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + If you wish to allow use of your version of this file only under the terms of + the GPL and not to allow others to use your version of this file under the + "Toolbar2000 License", indicate your decision by deleting the provisions + above and replace them with the notice and other provisions required by the + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + + $jrsoftware: tb2k/Source/TB2Reg.pas,v 1.28 2005/01/06 03:56:50 jr Exp $ +} + +interface + +{$I TB2Ver.inc} + +uses + Windows, SysUtils, Classes, Graphics, Controls, Dialogs, ActnList, ImgList, + {$IFDEF JR_D6} DesignIntf, DesignEditors, VCLEditors, {$ELSE} DsgnIntf, {$ENDIF} + TB2Toolbar, TB2ToolWindow, TB2Dock, TB2Item, TB2ExtItems, TB2MRU, TB2MDI, + TB2DsgnItemEditor; + +{$IFDEF JR_D5} + +{ TTBImageIndexPropertyEditor } + +{ Unfortunately TComponentImageIndexPropertyEditor seems to be gone in + Delphi 6, so we have to use our own image index property editor class } + +type + TTBImageIndexPropertyEditor = class(TIntegerProperty + {$IFDEF JR_D6} , ICustomPropertyListDrawing {$ENDIF}) + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + function GetImageListAt(Index: Integer): TCustomImageList; virtual; + + // ICustomPropertyListDrawing + procedure ListMeasureHeight(const Value: string; ACanvas: TCanvas; + var AHeight: Integer); {$IFNDEF JR_D6} override; {$ENDIF} + procedure ListMeasureWidth(const Value: string; ACanvas: TCanvas; + var AWidth: Integer); {$IFNDEF JR_D6} override; {$ENDIF} + procedure ListDrawValue(const Value: string; ACanvas: TCanvas; + const ARect: TRect; ASelected: Boolean); {$IFNDEF JR_D6} override; {$ENDIF} + end; + +{ TTBItemImageIndexPropertyEditor } + +type + TTBItemImageIndexPropertyEditor = class(TTBImageIndexPropertyEditor) + public + function GetImageListAt (Index: Integer): TCustomImageList; override; + end; + +{$ENDIF} + +procedure Register; + +implementation + +uses + ImgEdit; + +{$IFDEF JR_D5} + +function TTBImageIndexPropertyEditor.GetAttributes: TPropertyAttributes; +begin + Result := [paMultiSelect, paValueList, paRevertable]; +end; + +function TTBImageIndexPropertyEditor.GetImageListAt(Index: Integer): TCustomImageList; +begin + Result := nil; +end; + +procedure TTBImageIndexPropertyEditor.GetValues(Proc: TGetStrProc); +var + ImgList: TCustomImageList; + I: Integer; +begin + ImgList := GetImageListAt(0); + if Assigned(ImgList) then + for I := 0 to ImgList.Count-1 do + Proc(IntToStr(I)); +end; + +procedure TTBImageIndexPropertyEditor.ListDrawValue(const Value: string; + ACanvas: TCanvas; const ARect: TRect; ASelected: Boolean); +var + ImgList: TCustomImageList; + X: Integer; +begin + ImgList := GetImageListAt(0); + ACanvas.FillRect(ARect); + X := ARect.Left + 2; + if Assigned(ImgList) then begin + ImgList.Draw(ACanvas, X, ARect.Top + 2, StrToInt(Value)); + Inc(X, ImgList.Width); + end; + ACanvas.TextOut(X + 3, ARect.Top + 1, Value); +end; + +procedure TTBImageIndexPropertyEditor.ListMeasureHeight(const Value: string; + ACanvas: TCanvas; var AHeight: Integer); +var + ImgList: TCustomImageList; +begin + ImgList := GetImageListAt(0); + AHeight := ACanvas.TextHeight(Value) + 2; + if Assigned(ImgList) and (ImgList.Height + 4 > AHeight) then + AHeight := ImgList.Height + 4; +end; + +procedure TTBImageIndexPropertyEditor.ListMeasureWidth(const Value: string; + ACanvas: TCanvas; var AWidth: Integer); +var + ImgList: TCustomImageList; +begin + ImgList := GetImageListAt(0); + AWidth := ACanvas.TextWidth(Value) + 4; + if Assigned(ImgList) then + Inc(AWidth, ImgList.Width); +end; + +{ TTBItemImageIndexPropertyEditor } + +function TTBItemImageIndexPropertyEditor.GetImageListAt(Index: Integer): TCustomImageList; +var + C: TPersistent; + Item: TTBCustomItem; +begin + Result := nil; + { ? I'm guessing that the Index parameter is a component index (one that + would be passed to the GetComponent function). } + C := GetComponent(Index); + if C is TTBCustomItem then begin + Item := TTBCustomItem(C); + repeat + Result := Item.Images; + if Assigned(Result) then + Break; + Item := Item.Parent; + if Item = nil then + Break; + Result := Item.SubMenuImages; + until Assigned(Result); + end; +end; + +{$ENDIF} + +{ TTBCustomImageListEditor } + +type + TTBCustomImageListEditor = class(TComponentEditor) + public + procedure Edit; override; + procedure ExecuteVerb(Index: Integer); override; + function GetVerb(Index: Integer): String; override; + function GetVerbCount: Integer; override; + end; + + TTBCustomImageListAccess = class(TTBCustomImageList); + +procedure TTBCustomImageListEditor.Edit; +var + ImgList: TTBCustomImageList; +begin + ImgList := Component as TTBCustomImageList; + if not TTBCustomImageListAccess(ImgList).ImagesBitmap.Empty then begin + if MessageDlg('The image list''s ImagesBitmap property has ' + + 'a bitmap assigned. Because of this, any changes you make in the ' + + 'Image List Editor will not be preserved when the form is saved.'#13#10#13#10 + + 'Do you want to open the editor anyway?', mtWarning, + [mbYes, mbNo], 0) <> mrYes then + Exit; + end; + EditImageList(ImgList); +end; + +procedure TTBCustomImageListEditor.ExecuteVerb(Index: Integer); +begin + if Index = 0 then + Edit; +end; + +function TTBCustomImageListEditor.GetVerbCount: Integer; +begin + Result := 1; +end; + +function TTBCustomImageListEditor.GetVerb(Index: Integer): String; +begin + if Index = 0 then + Result := 'ImageList Editor...' + else + Result := ''; +end; + + +procedure Register; +begin + RegisterComponents('Toolbar2000', [TTBDock, TTBToolbar, TTBToolWindow, + TTBPopupMenu, TTBImageList, TTBItemContainer, TTBBackground, TTBMRUList, + TTBMDIHandler]); + {$IFDEF JR_D4} + RegisterActions('', [TTBEditAction], nil); + {$ENDIF} + RegisterNoIcon([TTBItem, TTBGroupItem, TTBSubmenuItem, TTBSeparatorItem, + TTBEditItem, TTBMRUListItem, TTBControlItem, TTBMDIWindowItem, + TTBVisibilityToggleItem]); + RegisterClasses([TTBItem, TTBGroupItem, TTBSubmenuItem, TTBSeparatorItem, + TTBEditItem, TTBMRUListItem, TTBControlItem, TTBMDIWindowItem, + TTBVisibilityToggleItem]); + + RegisterComponentEditor(TTBCustomToolbar, TTBItemsEditor); + RegisterComponentEditor(TTBItemContainer, TTBItemsEditor); + RegisterComponentEditor(TTBPopupMenu, TTBItemsEditor); + RegisterComponentEditor(TTBCustomImageList, TTBCustomImageListEditor); + RegisterPropertyEditor(TypeInfo(TTBRootItem), nil, '', TTBItemsPropertyEditor); + {$IFDEF JR_D5} + RegisterPropertyEditor(TypeInfo(TImageIndex), TTBCustomItem, 'ImageIndex', + TTBItemImageIndexPropertyEditor); + {$ENDIF} + {$IFDEF JR_D6} + { TShortCut properties show up like Integer properties in Delphi 6 + without this... } + RegisterPropertyEditor(TypeInfo(TShortCut), TTBCustomItem, '', + TShortCutProperty); + {$ENDIF} + + { Link in images for the toolbar buttons } + {$R TB2DsgnItemEditor.res} + TBRegisterItemClass(TTBEditItem, 'New &Edit', HInstance); + TBRegisterItemClass(TTBGroupItem, 'New &Group Item', HInstance); + TBRegisterItemClass(TTBMRUListItem, 'New &MRU List Item', HInstance); + TBRegisterItemClass(TTBMDIWindowItem, 'New MDI &Windows List', HInstance); + TBRegisterItemClass(TTBVisibilityToggleItem, 'New &Visibility-Toggle Item', HInstance); +end; + +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2Reg.pas.orig b/official/2.1.6+2.1.beta1/Source/TB2Reg.pas.orig new file mode 100644 index 0000000..950e5e5 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2Reg.pas.orig @@ -0,0 +1,251 @@ +unit TB2Reg; + +{ + Toolbar2000 + Copyright (C) 1998-2005 by Jordan Russell + All rights reserved. + + The contents of this file are subject to the "Toolbar2000 License"; you may + not use or distribute this file except in compliance with the + "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in + TB2k-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + + Alternatively, the contents of this file may be used under the terms of the + GNU General Public License (the "GPL"), in which case the provisions of the + GPL are applicable instead of those in the "Toolbar2000 License". A copy of + the GPL may be found in GPL-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + If you wish to allow use of your version of this file only under the terms of + the GPL and not to allow others to use your version of this file under the + "Toolbar2000 License", indicate your decision by deleting the provisions + above and replace them with the notice and other provisions required by the + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + + $jrsoftware: tb2k/Source/TB2Reg.pas,v 1.28 2005/01/06 03:56:50 jr Exp $ +} + +interface + +{$I TB2Ver.inc} + +uses + Windows, SysUtils, Classes, Graphics, Controls, Dialogs, ActnList, ImgList, + {$IFDEF JR_D6} DesignIntf, DesignEditors, VCLEditors, {$ELSE} DsgnIntf, {$ENDIF} + TB2Toolbar, TB2ToolWindow, TB2Dock, TB2Item, TB2ExtItems, TB2MRU, TB2MDI, + TB2DsgnItemEditor; + +procedure Register; + +implementation + +uses + ImgEdit; + +{$IFDEF JR_D5} + +{ TTBImageIndexPropertyEditor } + +{ Unfortunately TComponentImageIndexPropertyEditor seems to be gone in + Delphi 6, so we have to use our own image index property editor class } + +type + TTBImageIndexPropertyEditor = class(TIntegerProperty + {$IFDEF JR_D6} , ICustomPropertyListDrawing {$ENDIF}) + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + function GetImageListAt(Index: Integer): TCustomImageList; virtual; + + // ICustomPropertyListDrawing + procedure ListMeasureHeight(const Value: string; ACanvas: TCanvas; + var AHeight: Integer); {$IFNDEF JR_D6} override; {$ENDIF} + procedure ListMeasureWidth(const Value: string; ACanvas: TCanvas; + var AWidth: Integer); {$IFNDEF JR_D6} override; {$ENDIF} + procedure ListDrawValue(const Value: string; ACanvas: TCanvas; + const ARect: TRect; ASelected: Boolean); {$IFNDEF JR_D6} override; {$ENDIF} + end; + +function TTBImageIndexPropertyEditor.GetAttributes: TPropertyAttributes; +begin + Result := [paMultiSelect, paValueList, paRevertable]; +end; + +function TTBImageIndexPropertyEditor.GetImageListAt(Index: Integer): TCustomImageList; +begin + Result := nil; +end; + +procedure TTBImageIndexPropertyEditor.GetValues(Proc: TGetStrProc); +var + ImgList: TCustomImageList; + I: Integer; +begin + ImgList := GetImageListAt(0); + if Assigned(ImgList) then + for I := 0 to ImgList.Count-1 do + Proc(IntToStr(I)); +end; + +procedure TTBImageIndexPropertyEditor.ListDrawValue(const Value: string; + ACanvas: TCanvas; const ARect: TRect; ASelected: Boolean); +var + ImgList: TCustomImageList; + X: Integer; +begin + ImgList := GetImageListAt(0); + ACanvas.FillRect(ARect); + X := ARect.Left + 2; + if Assigned(ImgList) then begin + ImgList.Draw(ACanvas, X, ARect.Top + 2, StrToInt(Value)); + Inc(X, ImgList.Width); + end; + ACanvas.TextOut(X + 3, ARect.Top + 1, Value); +end; + +procedure TTBImageIndexPropertyEditor.ListMeasureHeight(const Value: string; + ACanvas: TCanvas; var AHeight: Integer); +var + ImgList: TCustomImageList; +begin + ImgList := GetImageListAt(0); + AHeight := ACanvas.TextHeight(Value) + 2; + if Assigned(ImgList) and (ImgList.Height + 4 > AHeight) then + AHeight := ImgList.Height + 4; +end; + +procedure TTBImageIndexPropertyEditor.ListMeasureWidth(const Value: string; + ACanvas: TCanvas; var AWidth: Integer); +var + ImgList: TCustomImageList; +begin + ImgList := GetImageListAt(0); + AWidth := ACanvas.TextWidth(Value) + 4; + if Assigned(ImgList) then + Inc(AWidth, ImgList.Width); +end; + +{ TTBItemImageIndexPropertyEditor } + +type + TTBItemImageIndexPropertyEditor = class(TTBImageIndexPropertyEditor) + protected + function GetImageListAt(Index: Integer): TCustomImageList; override; + end; + +function TTBItemImageIndexPropertyEditor.GetImageListAt(Index: Integer): TCustomImageList; +var + C: TPersistent; + Item: TTBCustomItem; +begin + Result := nil; + { ? I'm guessing that the Index parameter is a component index (one that + would be passed to the GetComponent function). } + C := GetComponent(Index); + if C is TTBCustomItem then begin + Item := TTBCustomItem(C); + repeat + Result := Item.Images; + if Assigned(Result) then + Break; + Item := Item.Parent; + if Item = nil then + Break; + Result := Item.SubMenuImages; + until Assigned(Result); + end; +end; + +{$ENDIF} + +{ TTBCustomImageListEditor } + +type + TTBCustomImageListEditor = class(TComponentEditor) + public + procedure Edit; override; + procedure ExecuteVerb(Index: Integer); override; + function GetVerb(Index: Integer): String; override; + function GetVerbCount: Integer; override; + end; + + TTBCustomImageListAccess = class(TTBCustomImageList); + +procedure TTBCustomImageListEditor.Edit; +var + ImgList: TTBCustomImageList; +begin + ImgList := Component as TTBCustomImageList; + if not TTBCustomImageListAccess(ImgList).ImagesBitmap.Empty then begin + if MessageDlg('The image list''s ImagesBitmap property has ' + + 'a bitmap assigned. Because of this, any changes you make in the ' + + 'Image List Editor will not be preserved when the form is saved.'#13#10#13#10 + + 'Do you want to open the editor anyway?', mtWarning, + [mbYes, mbNo], 0) <> mrYes then + Exit; + end; + EditImageList(ImgList); +end; + +procedure TTBCustomImageListEditor.ExecuteVerb(Index: Integer); +begin + if Index = 0 then + Edit; +end; + +function TTBCustomImageListEditor.GetVerbCount: Integer; +begin + Result := 1; +end; + +function TTBCustomImageListEditor.GetVerb(Index: Integer): String; +begin + if Index = 0 then + Result := 'ImageList Editor...' + else + Result := ''; +end; + + +procedure Register; +begin + RegisterComponents('Toolbar2000', [TTBDock, TTBToolbar, TTBToolWindow, + TTBPopupMenu, TTBImageList, TTBItemContainer, TTBBackground, TTBMRUList, + TTBMDIHandler]); + {$IFDEF JR_D4} + RegisterActions('', [TTBEditAction], nil); + {$ENDIF} + RegisterNoIcon([TTBItem, TTBGroupItem, TTBSubmenuItem, TTBSeparatorItem, + TTBEditItem, TTBMRUListItem, TTBControlItem, TTBMDIWindowItem, + TTBVisibilityToggleItem]); + RegisterClasses([TTBItem, TTBGroupItem, TTBSubmenuItem, TTBSeparatorItem, + TTBEditItem, TTBMRUListItem, TTBControlItem, TTBMDIWindowItem, + TTBVisibilityToggleItem]); + + RegisterComponentEditor(TTBCustomToolbar, TTBItemsEditor); + RegisterComponentEditor(TTBItemContainer, TTBItemsEditor); + RegisterComponentEditor(TTBPopupMenu, TTBItemsEditor); + RegisterComponentEditor(TTBCustomImageList, TTBCustomImageListEditor); + RegisterPropertyEditor(TypeInfo(TTBRootItem), nil, '', TTBItemsPropertyEditor); + {$IFDEF JR_D5} + RegisterPropertyEditor(TypeInfo(TImageIndex), TTBCustomItem, 'ImageIndex', + TTBItemImageIndexPropertyEditor); + {$ENDIF} + {$IFDEF JR_D6} + { TShortCut properties show up like Integer properties in Delphi 6 + without this... } + RegisterPropertyEditor(TypeInfo(TShortCut), TTBCustomItem, '', + TShortCutProperty); + {$ENDIF} + + { Link in images for the toolbar buttons } + {$R TB2DsgnItemEditor.res} + TBRegisterItemClass(TTBEditItem, 'New &Edit', HInstance); + TBRegisterItemClass(TTBGroupItem, 'New &Group Item', HInstance); + TBRegisterItemClass(TTBMRUListItem, 'New &MRU List Item', HInstance); + TBRegisterItemClass(TTBMDIWindowItem, 'New MDI &Windows List', HInstance); + TBRegisterItemClass(TTBVisibilityToggleItem, 'New &Visibility-Toggle Item', HInstance); +end; + +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2ResCursors.res b/official/2.1.6+2.1.beta1/Source/TB2ResCursors.res new file mode 100644 index 0000000000000000000000000000000000000000..e09ab15dfffb5b8fcb12fc48ac835711927ab2a5 GIT binary patch literal 1304 zcmds$Jx;_h5QU#(ln7~yAV8u(kTP^BD3LY`K`SJFBv=l>4YD?lyHNT zDY6W25?kyd6c7px6MY_!J+d7?4*(=Yq=nrj+c$pRFoyvxi&s~CQV5HbK|*q3_%-HS z8+^2)8~wyAla$ag;M&Rqc_tO%Qs#}+E-vX`fXydh?~#52q|OhS=Z$CRwt6a3IZBZ^ zsb9$ru?`HS#*{EN?bsdr-=Q0C@E|!68Q>g;C~%1p#yG(Q$2h|gt~qjr3%1^}*!R>2 zyyY}$S5buwmURl6&h;q;H)L_)A`= z5tS-BRO;3!_@t3O?!IeDHCn$1)~L-^25jFp-ZHiv|EC%i3mO%ypi`oi^!s|Ucn1ZG Bgx~-G literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Source/TB2ToolWindow.pas b/official/2.1.6+2.1.beta1/Source/TB2ToolWindow.pas new file mode 100644 index 0000000..b6922c1 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2ToolWindow.pas @@ -0,0 +1,268 @@ +unit TB2ToolWindow; + +{ + Toolbar2000 + Copyright (C) 1998-2005 by Jordan Russell + All rights reserved. + + The contents of this file are subject to the "Toolbar2000 License"; you may + not use or distribute this file except in compliance with the + "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in + TB2k-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + + Alternatively, the contents of this file may be used under the terms of the + GNU General Public License (the "GPL"), in which case the provisions of the + GPL are applicable instead of those in the "Toolbar2000 License". A copy of + the GPL may be found in GPL-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + If you wish to allow use of your version of this file only under the terms of + the GPL and not to allow others to use your version of this file under the + "Toolbar2000 License", indicate your decision by deleting the provisions + above and replace them with the notice and other provisions required by the + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + + $jrsoftware: tb2k/Source/TB2ToolWindow.pas,v 1.18 2005/01/06 03:56:50 jr Exp $ +} + +interface + +{$I TB2Ver.inc} + +uses + Windows, Classes, Graphics, Controls, TB2Dock; + +type + { TTBToolWindow } + + TTBToolWindow = class(TTBCustomDockableWindow) + private + FMinClientWidth, FMinClientHeight, FMaxClientWidth, FMaxClientHeight: Integer; + FBarHeight, FBarWidth: Integer; + function CalcSize(ADock: TTBDock): TPoint; + function GetClientAreaWidth: Integer; + procedure SetClientAreaWidth(Value: Integer); + function GetClientAreaHeight: Integer; + procedure SetClientAreaHeight(Value: Integer); + procedure SetClientAreaSize(AWidth, AHeight: Integer); + protected + function DoArrange(CanMoveControls: Boolean; PreviousDockType: TTBDockType; + NewFloating: Boolean; NewDock: TTBDock): TPoint; override; + procedure GetBaseSize(var ASize: TPoint); override; + procedure GetMinMaxSize(var AMinClientWidth, AMinClientHeight, + AMaxClientWidth, AMaxClientHeight: Integer); override; + procedure Paint; override; + procedure SizeChanging(const AWidth, AHeight: Integer); override; + public + constructor Create(AOwner: TComponent); override; + + procedure ReadPositionData(const Data: TTBReadPositionData); override; + procedure WritePositionData(const Data: TTBWritePositionData); override; + published + property ActivateParent; + property Align; + property Anchors; + property BorderStyle; + property Caption; + property Color; + property CloseButton; + property CloseButtonWhenDocked; + property ClientAreaHeight: Integer read GetClientAreaHeight write SetClientAreaHeight; + property ClientAreaWidth: Integer read GetClientAreaWidth write SetClientAreaWidth; + property CurrentDock; + property DefaultDock; + property DockableTo; + property DockMode; + property DockPos; + property DockRow; + property DragHandleStyle; + property FloatingMode; + property Font; + property FullSize; + property HideWhenInactive; + property LastDock; + property MaxClientHeight: Integer read FMaxClientHeight write FMaxClientHeight default 0; + property MaxClientWidth: Integer read FMaxClientWidth write FMaxClientWidth default 0; + property MinClientHeight: Integer read FMinClientHeight write FMinClientHeight default 32; + property MinClientWidth: Integer read FMinClientWidth write FMinClientWidth default 32; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property Resizable; + property ShowCaption; + property ShowHint; + property Stretch; + property SmoothDrag; + property TabOrder; + property UseLastDock; + {}{property Version;} + property Visible; + + property OnClose; + property OnCloseQuery; + {$IFDEF JR_D5} + property OnContextPopup; + {$ENDIF} + property OnDragDrop; + property OnDragOver; + property OnDockChanged; + property OnDockChanging; + property OnDockChangingHidden; + property OnMouseDown; + property OnMouseMove; + property OnMouseUp; + property OnMove; + property OnRecreated; + property OnRecreating; + property OnResize; + property OnVisibleChanged; + end; + +implementation + +const + { Constants for TTBToolWindow-specific registry values. Do not localize! } + rvClientWidth = 'ClientWidth'; + rvClientHeight = 'ClientHeight'; + + +{ TTBToolWindow } + +constructor TTBToolWindow.Create(AOwner: TComponent); +begin + inherited; + FMinClientWidth := 32; + FMinClientHeight := 32; + { Initialize the client size to 32x32 } + SetBounds(Left, Top, 32, 32); +end; + +procedure TTBToolWindow.Paint; +var + R: TRect; +begin + { Draw dotted border in design mode } + if csDesigning in ComponentState then + with Canvas do begin + R := ClientRect; + Pen.Style := psDot; + Pen.Color := clBtnShadow; + Brush.Style := bsClear; + Rectangle(R.Left, R.Top, R.Right, R.Bottom); + Pen.Style := psSolid; + end; +end; + +procedure TTBToolWindow.ReadPositionData(const Data: TTBReadPositionData); +begin + inherited; + { Restore ClientAreaWidth/ClientAreaHeight variables } + if Resizable then + with Data do + SetClientAreaSize(ReadIntProc(Name, rvClientWidth, FBarWidth, ExtraData), + ReadIntProc(Name, rvClientHeight, FBarHeight, ExtraData)); +end; + +procedure TTBToolWindow.WritePositionData(const Data: TTBWritePositionData); +begin + inherited; + { Write values of FBarWidth/FBarHeight } + with Data do begin + WriteIntProc(Name, rvClientWidth, FBarWidth, ExtraData); + WriteIntProc(Name, rvClientHeight, FBarHeight, ExtraData); + end; +end; + +procedure TTBToolWindow.GetMinMaxSize(var AMinClientWidth, AMinClientHeight, + AMaxClientWidth, AMaxClientHeight: Integer); +begin + AMinClientWidth := FMinClientWidth; + AMinClientHeight := FMinClientHeight; + AMaxClientWidth := FMaxClientWidth; + AMaxClientHeight := FMaxClientHeight; +end; + +procedure TTBToolWindow.SizeChanging(const AWidth, AHeight: Integer); +begin + FBarWidth := AWidth; + if Parent <> nil then Dec(FBarWidth, Width - ClientWidth); + FBarHeight := AHeight; + if Parent <> nil then Dec(FBarHeight, Height - ClientHeight); +end; + +function TTBToolWindow.CalcSize(ADock: TTBDock): TPoint; +begin + Result.X := FBarWidth; + Result.Y := FBarHeight; + if Assigned(ADock) then + if FullSize then + begin + { If docked and full size, return the size corresponding to docked size } + if not(ADock.Position in [dpLeft, dpRight]) then + Result.X := ADock.ClientWidth - (Width - ClientWidth) + else + Result.Y := ADock.ClientHeight - (Height - ClientHeight); + end + else if Stretch then + begin + { If docked and stretching, return the minimum size so that the toolbar + can shrink below FBarWidth/FBarHeight } + if not(ADock.Position in [dpLeft, dpRight]) then + Result.X := FMinClientWidth + else + Result.Y := FMinClientHeight; + end; +end; + +procedure TTBToolWindow.GetBaseSize(var ASize: TPoint); +begin + ASize := CalcSize(CurrentDock); +end; + +function TTBToolWindow.DoArrange(CanMoveControls: Boolean; + PreviousDockType: TTBDockType; NewFloating: Boolean; NewDock: TTBDock): TPoint; +begin + Result := CalcSize(NewDock); +end; + +function TTBToolWindow.GetClientAreaWidth: Integer; +begin + if Parent = nil then + Result := Width + else + Result := ClientWidth; +end; + +procedure TTBToolWindow.SetClientAreaWidth(Value: Integer); +begin + SetClientAreaSize(Value, ClientAreaHeight); +end; + +function TTBToolWindow.GetClientAreaHeight: Integer; +begin + if Parent = nil then + Result := Height + else + Result := ClientHeight; +end; + +procedure TTBToolWindow.SetClientAreaHeight(Value: Integer); +begin + SetClientAreaSize(ClientAreaWidth, Value); +end; + +procedure TTBToolWindow.SetClientAreaSize(AWidth, AHeight: Integer); +var + Client: TRect; +begin + if Parent = nil then + SetBounds(Left, Top, AWidth, AHeight) + else begin + Client := GetClientRect; + SetBounds(Left, Top, Width - Client.Right + AWidth, + Height - Client.Bottom + AHeight); + end; +end; + +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2ToolWindow.pas.orig b/official/2.1.6+2.1.beta1/Source/TB2ToolWindow.pas.orig new file mode 100644 index 0000000..90d5592 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2ToolWindow.pas.orig @@ -0,0 +1,258 @@ +unit TB2ToolWindow; + +{ + Toolbar2000 + Copyright (C) 1998-2005 by Jordan Russell + All rights reserved. + + The contents of this file are subject to the "Toolbar2000 License"; you may + not use or distribute this file except in compliance with the + "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in + TB2k-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + + Alternatively, the contents of this file may be used under the terms of the + GNU General Public License (the "GPL"), in which case the provisions of the + GPL are applicable instead of those in the "Toolbar2000 License". A copy of + the GPL may be found in GPL-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + If you wish to allow use of your version of this file only under the terms of + the GPL and not to allow others to use your version of this file under the + "Toolbar2000 License", indicate your decision by deleting the provisions + above and replace them with the notice and other provisions required by the + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + + $jrsoftware: tb2k/Source/TB2ToolWindow.pas,v 1.18 2005/01/06 03:56:50 jr Exp $ +} + +interface + +{$I TB2Ver.inc} + +uses + Windows, Classes, Graphics, Controls, TB2Dock; + +type + { TTBToolWindow } + + TTBToolWindow = class(TTBCustomDockableWindow) + private + FMinClientWidth, FMinClientHeight, FMaxClientWidth, FMaxClientHeight: Integer; + FBarHeight, FBarWidth: Integer; + function CalcSize(ADock: TTBDock): TPoint; + function GetClientAreaWidth: Integer; + procedure SetClientAreaWidth(Value: Integer); + function GetClientAreaHeight: Integer; + procedure SetClientAreaHeight(Value: Integer); + procedure SetClientAreaSize(AWidth, AHeight: Integer); + protected + function DoArrange(CanMoveControls: Boolean; PreviousDockType: TTBDockType; + NewFloating: Boolean; NewDock: TTBDock): TPoint; override; + procedure GetBaseSize(var ASize: TPoint); override; + procedure GetMinMaxSize(var AMinClientWidth, AMinClientHeight, + AMaxClientWidth, AMaxClientHeight: Integer); override; + procedure Paint; override; + procedure SizeChanging(const AWidth, AHeight: Integer); override; + public + constructor Create(AOwner: TComponent); override; + + procedure ReadPositionData(const Data: TTBReadPositionData); override; + procedure WritePositionData(const Data: TTBWritePositionData); override; + published + property ActivateParent; + property Align; + property Anchors; + property BorderStyle; + property Caption; + property Color; + property CloseButton; + property CloseButtonWhenDocked; + property ClientAreaHeight: Integer read GetClientAreaHeight write SetClientAreaHeight; + property ClientAreaWidth: Integer read GetClientAreaWidth write SetClientAreaWidth; + property CurrentDock; + property DefaultDock; + property DockableTo; + property DockMode; + property DockPos; + property DockRow; + property DragHandleStyle; + property FloatingMode; + property Font; + property FullSize; + property HideWhenInactive; + property LastDock; + property MaxClientHeight: Integer read FMaxClientHeight write FMaxClientHeight default 0; + property MaxClientWidth: Integer read FMaxClientWidth write FMaxClientWidth default 0; + property MinClientHeight: Integer read FMinClientHeight write FMinClientHeight default 32; + property MinClientWidth: Integer read FMinClientWidth write FMinClientWidth default 32; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property Resizable; + property ShowCaption; + property ShowHint; + property Stretch; + property SmoothDrag; + property TabOrder; + property UseLastDock; + {}{property Version;} + property Visible; + + property OnClose; + property OnCloseQuery; + {$IFDEF JR_D5} + property OnContextPopup; + {$ENDIF} + property OnDragDrop; + property OnDragOver; + property OnDockChanged; + property OnDockChanging; + property OnDockChangingHidden; + property OnMouseDown; + property OnMouseMove; + property OnMouseUp; + property OnMove; + property OnRecreated; + property OnRecreating; + property OnResize; + property OnVisibleChanged; + end; + +implementation + +const + { Constants for TTBToolWindow-specific registry values. Do not localize! } + rvClientWidth = 'ClientWidth'; + rvClientHeight = 'ClientHeight'; + + +{ TTBToolWindow } + +constructor TTBToolWindow.Create(AOwner: TComponent); +begin + inherited; + FMinClientWidth := 32; + FMinClientHeight := 32; + { Initialize the client size to 32x32 } + SetBounds(Left, Top, 32, 32); +end; + +procedure TTBToolWindow.Paint; +var + R: TRect; +begin + { Draw dotted border in design mode } + if csDesigning in ComponentState then + with Canvas do begin + R := ClientRect; + Pen.Style := psDot; + Pen.Color := clBtnShadow; + Brush.Style := bsClear; + Rectangle(R.Left, R.Top, R.Right, R.Bottom); + Pen.Style := psSolid; + end; +end; + +procedure TTBToolWindow.ReadPositionData(const Data: TTBReadPositionData); +begin + inherited; + { Restore ClientAreaWidth/ClientAreaHeight variables } + if Resizable then + with Data do + SetClientAreaSize(ReadIntProc(Name, rvClientWidth, FBarWidth, ExtraData), + ReadIntProc(Name, rvClientHeight, FBarHeight, ExtraData)); +end; + +procedure TTBToolWindow.WritePositionData(const Data: TTBWritePositionData); +begin + inherited; + { Write values of FBarWidth/FBarHeight } + with Data do begin + WriteIntProc(Name, rvClientWidth, FBarWidth, ExtraData); + WriteIntProc(Name, rvClientHeight, FBarHeight, ExtraData); + end; +end; + +procedure TTBToolWindow.GetMinMaxSize(var AMinClientWidth, AMinClientHeight, + AMaxClientWidth, AMaxClientHeight: Integer); +begin + AMinClientWidth := FMinClientWidth; + AMinClientHeight := FMinClientHeight; + AMaxClientWidth := FMaxClientWidth; + AMaxClientHeight := FMaxClientHeight; +end; + +procedure TTBToolWindow.SizeChanging(const AWidth, AHeight: Integer); +begin + FBarWidth := AWidth; + if Parent <> nil then Dec(FBarWidth, Width - ClientWidth); + FBarHeight := AHeight; + if Parent <> nil then Dec(FBarHeight, Height - ClientHeight); +end; + +function TTBToolWindow.CalcSize(ADock: TTBDock): TPoint; +begin + Result.X := FBarWidth; + Result.Y := FBarHeight; + if Assigned(ADock) and (FullSize or Stretch) then begin + { If docked and stretching, return the minimum size so that the toolbar + can shrink below FBarWidth/FBarHeight } + if not(ADock.Position in [dpLeft, dpRight]) then + Result.X := FMinClientWidth + else + Result.Y := FMinClientHeight; + end; +end; + +procedure TTBToolWindow.GetBaseSize(var ASize: TPoint); +begin + ASize := CalcSize(CurrentDock); +end; + +function TTBToolWindow.DoArrange(CanMoveControls: Boolean; + PreviousDockType: TTBDockType; NewFloating: Boolean; NewDock: TTBDock): TPoint; +begin + Result := CalcSize(NewDock); +end; + +function TTBToolWindow.GetClientAreaWidth: Integer; +begin + if Parent = nil then + Result := Width + else + Result := ClientWidth; +end; + +procedure TTBToolWindow.SetClientAreaWidth(Value: Integer); +begin + SetClientAreaSize(Value, ClientAreaHeight); +end; + +function TTBToolWindow.GetClientAreaHeight: Integer; +begin + if Parent = nil then + Result := Height + else + Result := ClientHeight; +end; + +procedure TTBToolWindow.SetClientAreaHeight(Value: Integer); +begin + SetClientAreaSize(ClientAreaWidth, Value); +end; + +procedure TTBToolWindow.SetClientAreaSize(AWidth, AHeight: Integer); +var + Client: TRect; +begin + if Parent = nil then + SetBounds(Left, Top, AWidth, AHeight) + else begin + Client := GetClientRect; + SetBounds(Left, Top, Width - Client.Right + AWidth, + Height - Client.Bottom + AHeight); + end; +end; + +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2Toolbar.pas b/official/2.1.6+2.1.beta1/Source/TB2Toolbar.pas new file mode 100644 index 0000000..2e2c010 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2Toolbar.pas @@ -0,0 +1,1716 @@ +unit TB2Toolbar; + +{ + Toolbar2000 + Copyright (C) 1998-2005 by Jordan Russell + All rights reserved. + + The contents of this file are subject to the "Toolbar2000 License"; you may + not use or distribute this file except in compliance with the + "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in + TB2k-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + + Alternatively, the contents of this file may be used under the terms of the + GNU General Public License (the "GPL"), in which case the provisions of the + GPL are applicable instead of those in the "Toolbar2000 License". A copy of + the GPL may be found in GPL-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + If you wish to allow use of your version of this file only under the terms of + the GPL and not to allow others to use your version of this file under the + "Toolbar2000 License", indicate your decision by deleting the provisions + above and replace them with the notice and other provisions required by the + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + + $jrsoftware: tb2k/Source/TB2Toolbar.pas,v 1.108 2005/07/30 18:17:20 jr Exp $ +} + +interface + +{$I TB2Ver.inc} + +uses + {$IFDEF JR_D9} Types, {$ENDIF} + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, ImgList, + Menus, ActnList, + TB2Item, TB2Dock; + +type + TTBCustomToolbar = class; + TTBChevronItem = class; + TTBChevronItemClass = class of TTBChevronItem; + + TTBToolbarViewClass = class of TTBToolbarView; + TTBToolbarView = class(TTBView) + private + FToolbar: TTBCustomToolbar; + protected + procedure AutoSize(AWidth, AHeight: Integer); override; + procedure DoUpdatePositions(var ASize: TPoint); override; + function GetChevronItem: TTBCustomItem; override; + function GetMDIButtonsItem: TTBCustomItem; override; + function GetMDISystemMenuItem: TTBCustomItem; override; + public + constructor Create(AOwner: TComponent); override; + function GetFont: TFont; override; + procedure InvalidatePositions; override; + end; + + TTBChevronPriorityForNewItems = (tbcpHighest, tbcpLowest); + + TTBCustomToolbar = class(TTBCustomDockableWindow, ITBItems) + private + FBaseSize: TPoint; + FChevronItem: TTBChevronItem; + FChevronMoveItems: Boolean; + FChevronPriorityForNewItems: TTBChevronPriorityForNewItems; + FDisableAlignArrange: Integer; + FFloatingWidth: Integer; + FIgnoreMouseLeave: Boolean; + FItem: TTBRootItem; + FLastWrappedLines: Integer; + FMenuBar: Boolean; + FOnShortCut: TShortCutEvent; + FProcessShortCuts: Boolean; + FMainWindowHookInstalled: Boolean; + FShrinkMode: TTBShrinkMode; + FSizeData: Pointer; + FSystemFont: Boolean; + FUpdateActions: Boolean; + + procedure CancelHover; + function CalcChevronOffset(const ADock: TTBDock; + const AOrientation: TTBViewOrientation): Integer; + function CalcWrapOffset(const ADock: TTBDock): Integer; + function CreateWrapper(Index: Integer; Ctl: TControl): TTBControlItem; + function FindWrapper(Ctl: TControl): TTBControlItem; + function GetChevronHint: String; + function GetImages: TCustomImageList; + function GetItems: TTBCustomItem; + function GetLinkSubitems: TTBCustomItem; + function GetOptions: TTBItemOptions; + procedure InstallMainWindowHook; + function IsChevronHintStored: Boolean; + class function MainWindowHook(var Message: TMessage): Boolean; + procedure SetChevronHint(const Value: String); + procedure SetChevronMoveItems(Value: Boolean); + procedure SetChevronPriorityForNewItems(Value: TTBChevronPriorityForNewItems); + procedure SetFloatingWidth(Value: Integer); + procedure SetImages(Value: TCustomImageList); + procedure SetLinkSubitems(Value: TTBCustomItem); + procedure SetMainWindowHook; + procedure SetMenuBar(Value: Boolean); + procedure SetOptions(Value: TTBItemOptions); + procedure SetProcessShortCuts(Value: Boolean); + procedure SetShrinkMode(Value: TTBShrinkMode); + procedure SetSystemFont(Value: Boolean); + procedure UninstallMainWindowHook; + procedure UpdateViewProperties; + + procedure CMColorChanged(var Message: TMessage); message CM_COLORCHANGED; + procedure CMControlChange(var Message: TCMControlChange); message CM_CONTROLCHANGE; + procedure CMControlListChange(var Message: TCMControlListChange); message CM_CONTROLLISTCHANGE; + procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED; + procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR; + procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY; + procedure CMHintShow(var Message: TCMHintShow); message CM_HINTSHOW; + procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; + procedure CMShowHintChanged(var Message: TMessage); message CM_SHOWHINTCHANGED; + procedure CMWinIniChange(var Message: TWMSettingChange); message CM_WININICHANGE; + procedure WMCancelMode(var Message: TWMCancelMode); message WM_CANCELMODE; + procedure WMGetObject(var Message: TMessage); message WM_GETOBJECT; + procedure WMMouseLeave(var Message: TMessage); message WM_MOUSELEAVE; + procedure WMNCMouseMove(var Message: TWMNCMouseMove); message WM_NCMOUSEMOVE; + {$IFNDEF JR_D5} + procedure WMRButtonUp(var Message: TWMRButtonUp); message WM_RBUTTONUP; + {$ENDIF} + procedure WMSetCursor(var Message: TWMSetCursor); message WM_SETCURSOR; + procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND; + protected + FMDIButtonsItem: TTBCustomItem; + FMDISystemMenuItem: TTBCustomItem; + FView: TTBToolbarView; + procedure AlignControls(AControl: TControl; var Rect: TRect); override; + procedure BuildPotentialSizesList(SizesList: TList); dynamic; + procedure ControlExistsAtPos(const P: TPoint; var ControlExists: Boolean); + override; + function DoArrange(CanMoveControls: Boolean; PreviousDockType: TTBDockType; + NewFloating: Boolean; NewDock: TTBDock): TPoint; override; + {$IFDEF JR_D5} + procedure DoContextPopup(MousePos: TPoint; var Handled: Boolean); override; + {$ENDIF} + procedure GetBaseSize(var ASize: TPoint); override; + procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override; + procedure GetMinBarSize(var MinimumSize: TPoint); + procedure GetMinShrinkSize(var AMinimumSize: Integer); override; + function GetShrinkMode: TTBShrinkMode; override; + function GetChevronItemClass: TTBChevronItemClass; dynamic; + function GetItemClass: TTBRootItemClass; dynamic; + function GetViewClass: TTBToolbarViewClass; dynamic; + procedure Loaded; override; + procedure MouseDown(Button: TMouseButton; Shift: TShiftState; + X, Y: Integer); override; + procedure MouseMove(Shift: TShiftState; X, Y: Integer); override; + procedure Paint; override; + procedure ResizeBegin(ASizeHandle: TTBSizeHandle); override; + procedure ResizeTrack(var Rect: TRect; const OrigRect: TRect); override; + procedure ResizeTrackAccept; override; + procedure ResizeEnd; override; + procedure SetChildOrder(Child: TComponent; Order: Integer); override; + + property SystemFont: Boolean read FSystemFont write SetSystemFont default True; + property OnShortCut: TShortCutEvent read FOnShortCut write FOnShortCut; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure BeginUpdate; + procedure EndUpdate; + procedure CreateWrappersForAllControls; + procedure GetTabOrderList(List: TList); override; + procedure InitiateAction; override; + function IsShortCut(var Message: TWMKey): Boolean; + function KeyboardOpen(Key: Char; RequirePrimaryAccel: Boolean): Boolean; + procedure ReadPositionData(const Data: TTBReadPositionData); override; + procedure WritePositionData(const Data: TTBWritePositionData); override; + + property ChevronHint: String read GetChevronHint write SetChevronHint stored IsChevronHintStored; + property ChevronMoveItems: Boolean read FChevronMoveItems write SetChevronMoveItems default True; + property ChevronPriorityForNewItems: TTBChevronPriorityForNewItems read FChevronPriorityForNewItems + write SetChevronPriorityForNewItems default tbcpHighest; + property FloatingWidth: Integer read FFloatingWidth write SetFloatingWidth default 0; + property Images: TCustomImageList read GetImages write SetImages; + property Items: TTBRootItem read FItem; + property LinkSubitems: TTBCustomItem read GetLinkSubitems write SetLinkSubitems; + property Options: TTBItemOptions read GetOptions write SetOptions default []; + property MenuBar: Boolean read FMenuBar write SetMenuBar default False; + property ProcessShortCuts: Boolean read FProcessShortCuts write SetProcessShortCuts default False; + property ShrinkMode: TTBShrinkMode read FShrinkMode write SetShrinkMode default tbsmChevron; + property UpdateActions: Boolean read FUpdateActions write FUpdateActions default True; + property View: TTBToolbarView read FView; + published + property Hint stored False; { Hint is set dynamically; don't save it } + end; + + TTBToolbar = class(TTBCustomToolbar) + published + property ActivateParent; + property Align; + property Anchors; + property AutoResize; + property BorderStyle; + property Caption; + property ChevronHint; + property ChevronMoveItems; + property ChevronPriorityForNewItems; + property CloseButton; + property CloseButtonWhenDocked; + property Color; + property CurrentDock; + property DefaultDock; + property DockableTo; + property DockMode; + property DockPos; + property DockRow; + property DragHandleStyle; + property FloatingMode; + property FloatingWidth; + property Font; + property FullSize; + property HideWhenInactive; + property Images; + property Items; + property LastDock; + property LinkSubitems; + property MenuBar; + property Options; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property ProcessShortCuts; + property Resizable; + property ShowCaption; + property ShowHint; + property ShrinkMode; + property SmoothDrag; + property Stretch; + property SystemFont; + property TabOrder; + property UpdateActions; + property UseLastDock; + property Visible; + + property OnClose; + property OnCloseQuery; + {$IFDEF JR_D5} + property OnContextPopup; + {$ENDIF} + property OnDragDrop; + property OnDragOver; + property OnMouseDown; + property OnMouseMove; + property OnMouseUp; + property OnMove; + property OnRecreated; + property OnRecreating; + property OnDockChanged; + property OnDockChanging; + property OnDockChangingHidden; + property OnResize; + property OnShortCut; + property OnVisibleChanged; + end; + +{ TTBChevronItem & TTBChevronItemViewer } + + TTBChevronItem = class(TTBCustomItem) + private + FToolbar: TTBCustomToolbar; + function GetDefaultHint: String; + public + constructor Create(AOwner: TComponent); override; + function GetChevronParentView: TTBView; override; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + end; + + TTBChevronItemViewer = class(TTBItemViewer) + protected + procedure Paint(const Canvas: TCanvas; const ClientAreaRect: TRect; + IsSelected, IsPushed, UseDisabledShadow: Boolean); override; + end; + +const + tbChevronSize = 12; + + +implementation + +uses + TB2Consts, TB2Common, TB2Hook; + +const + { Constants for TTBCustomToolbar-specific registry values. Do not localize! } + rvFloatRightX = 'FloatRightX'; + DockTypeToOrientation: array[TTBDockType] of TTBViewOrientation = + (tbvoHorizontal, tbvoFloating, tbvoHorizontal, tbvoVertical); + +type + { Used internally by the TCustomToolbar97.Resize* procedures } + PToolbar97SizeData = ^TToolbar97SizeData; + TToolbar97SizeData = record + SizeHandle: TTBSizeHandle; + NewSizes: TList; { List of valid new sizes. Items are casted into TSmallPoints } + OrigLeft, OrigTop, OrigWidth, OrigHeight, NCXDiff: Integer; + CurRightX: Integer; + DisableSensCheck, OpSide: Boolean; + SizeSens: Integer; + end; + + +procedure HookProc(Code: THookProcCode; Wnd: HWND; WParam: WPARAM; + LParam: LPARAM); +var + Msg: PMsg; + MainForm: TForm; +begin + { Work around an annoying Windows or VCL bug. If you close all MDI child + windows, the MDI client window gets the focus, and when it has the focus, + pressing Alt+[char] doesn't send a WM_SYSCOMMAND message to the form for + some reason. It seems silly to have to use a hook for this, but I don't + see a better workaround. + Also, route Alt+- to the main form so that when an MDI child form is + maximized, Alt+- brings up the TB2k MDI system menu instead of the + system's. } + if (Code = hpGetMessage) and (WParam = PM_REMOVE) then begin + Msg := PMsg(LParam); + if (Msg.message = WM_SYSCHAR) and (Msg.hwnd <> 0) then begin + { Note: On Windows NT/2000/XP, even though we install the hook using + SetWindowsHookExW, Msg.wParam may either be an ANSI character or a + Unicode character, due to an apparent bug on these platforms. It is + an ANSI character when the message passes through a separate + SetWindowsHookExA-installed WH_GETMESSAGE hook first, and that hook + calls us via CallNextHookEx. Windows apparently "forgets" to convert + the character from ANSI back to Unicode in this case. + We can't convert the character code because there seems to be no way + to detect whether it is ANSI or Unicode. So we can't really do much + with Msg.wParam, apart from comparing it against character codes that + are the same between ANSI and Unicode, such as '-'. } + MainForm := Application.MainForm; + if Assigned(MainForm) and MainForm.HandleAllocated and (GetCapture = 0) and + ((Msg.hwnd = MainForm.ClientHandle) or + ((Msg.wParam = Ord('-')) and (MainForm.ClientHandle <> 0) and + IsChild(MainForm.ClientHandle, Msg.hwnd))) then begin + { Redirect the message to the main form. + Note: Unfortunately, due to a bug in Windows NT 4.0 (and not + 2000/XP/9x/Me), modifications to the message don't take effect if + another WH_GETMESSAGE hook has been installed above this one. + (The bug is that CallNextHookEx copies lParam^ to a local buffer, but + does not propogate the changes made by the hook back to lParam^ when + it returns.) I don't know of any clean workaround, other than to + ensure other WH_GETMESSAGE hooks are installed *before* + Toolbar2000's. } + Msg.hwnd := MainForm.Handle; + end; + end; + end; +end; + +constructor TTBChevronItem.Create(AOwner: TComponent); +begin + inherited; + FToolbar := AOwner as TTBCustomToolbar; + ItemStyle := ItemStyle + [tbisSubMenu, tbisNoAutoOpen]; + Hint := GetDefaultHint; + Caption := EscapeAmpersands(GetShortHint(Hint)); +end; + +function TTBChevronItem.GetChevronParentView: TTBView; +begin + Result := FToolbar.FView; +end; + +function TTBChevronItem.GetDefaultHint: String; +begin + Result := STBChevronItemMoreButtonsHint; +end; + +function TTBChevronItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBChevronItemViewer; +end; + +procedure TTBChevronItemViewer.Paint(const Canvas: TCanvas; + const ClientAreaRect: TRect; IsSelected, IsPushed, UseDisabledShadow: Boolean); +const + Pattern: array[Boolean, 0..15] of Byte = ( + ($CC, 0, $66, 0, $33, 0, $66, 0, $CC, 0, 0, 0, 0, 0, 0, 0), + ($88, 0, $D8, 0, $70, 0, $20, 0, $88, 0, $D8, 0, $70, 0, $20, 0)); +var + DC: HDC; + R2: TRect; + TempBmp: TBitmap; + + procedure DrawPattern(const Color, Offset: Integer); + begin + SelectObject(DC, GetSysColorBrush(Color)); + BitBlt(DC, R2.Left, R2.Top + Offset, R2.Right - R2.Left, + R2.Bottom - R2.Top, TempBmp.Canvas.Handle, 0, 0, $00E20746 {ROP_DSPDxax}); + end; + +begin + DC := Canvas.Handle; + R2 := ClientAreaRect; + if Item.Enabled then begin + if IsPushed then + DrawEdge(DC, R2, BDR_SUNKENOUTER, BF_RECT) + else if IsSelected and not(csDesigning in Item.ComponentState) then + DrawEdge(DC, R2, BDR_RAISEDINNER, BF_RECT); + end; + + if View.Orientation <> tbvoVertical then begin + R2.Top := 4; + R2.Bottom := R2.Top + 5; + Inc(R2.Left, 2); + R2.Right := R2.Left + 8; + end + else begin + R2.Left := R2.Right - 9; + R2.Right := R2.Left + 5; + Inc(R2.Top, 2); + R2.Bottom := R2.Top + 8; + end; + if IsPushed then + OffsetRect(R2, 1, 1); + TempBmp := TBitmap.Create; + try + TempBmp.Handle := CreateBitmap(8, 8, 1, 1, + @Pattern[View.Orientation = tbvoVertical]); + SetTextColor(DC, clBlack); + SetBkColor(DC, clWhite); + if Item.Enabled then + DrawPattern(COLOR_BTNTEXT, 0) + else begin + DrawPattern(COLOR_BTNHIGHLIGHT, 1); + DrawPattern(COLOR_BTNSHADOW, 0); + end; + finally + TempBmp.Free; + end; +end; + + +{ TTBToolbarView } + +constructor TTBToolbarView.Create(AOwner: TComponent); +begin + FToolbar := AOwner as TTBCustomToolbar; + inherited; +end; + +procedure TTBToolbarView.AutoSize(AWidth, AHeight: Integer); +begin + FToolbar.FBaseSize := BaseSize; + if FToolbar.IsAutoResized then + FToolbar.ChangeSize(AWidth, AHeight); +end; + +procedure TTBToolbarView.DoUpdatePositions(var ASize: TPoint); +begin + { Reset CurrentSize because it probably won't be valid after positions + are recalculated [2001-06-24] } + FToolbar.CurrentSize := 0; + FToolbar.GetMinBarSize(ASize); + { On FullSize toolbars, increase ASize.X/Y to WrapOffset so that + right-aligned items always appear at the right edge even when the toolbar + isn't wrapping } + if FToolbar.FullSize then begin + if (Orientation = tbvoHorizontal) and (ASize.X < WrapOffset) then + ASize.X := WrapOffset + else if (Orientation = tbvoVertical) and (ASize.Y < WrapOffset) then + ASize.Y := WrapOffset; + end; + { Increment FDisableAlignArrange so that we don't recursively arrange when + CalculatePositions moves controls } + Inc(FToolbar.FDisableAlignArrange); + try + inherited; + finally + Dec(FToolbar.FDisableAlignArrange); + end; +end; + +procedure TTBToolbarView.InvalidatePositions; +begin + { Reset CurrentSize because it probably won't be valid after positions + are recalculated [2001-06-04] } + FToolbar.CurrentSize := 0; + inherited; +end; + +function TTBToolbarView.GetFont: TFont; +begin + if not FToolbar.SystemFont then + Result := FToolbar.Font + else + Result := inherited GetFont; +end; + +function TTBToolbarView.GetChevronItem: TTBCustomItem; +begin + Result := FToolbar.FChevronItem; +end; + +function TTBToolbarView.GetMDIButtonsItem: TTBCustomItem; +begin + Result := FToolbar.FMDIButtonsItem; +end; + +function TTBToolbarView.GetMDISystemMenuItem: TTBCustomItem; +begin + Result := FToolbar.FMDISystemMenuItem; +end; + + +{ TTBCustomToolbar } + +type + {}TTBCustomItemAccess = class(TTBCustomItem); + TTBItemViewerAccess = class(TTBItemViewer); + +constructor TTBCustomToolbar.Create(AOwner: TComponent); +begin + inherited; + ControlStyle := ControlStyle + [csAcceptsControls, csActionClient] - + [csCaptureMouse]; + DockableWindowStyles := DockableWindowStyles - [tbdsResizeEightCorner, + tbdsResizeClipCursor]; + FItem := GetItemClass.Create(Self); + FItem.ParentComponent := Self; + FChevronItem := GetChevronItemClass.Create(Self); + FChevronItem.LinkSubitems := FItem; + FChevronMoveItems := True; + FView := GetViewClass.CreateView(Self, nil, FItem, Self, True, False, + not(csDesigning in ComponentState)); + FView.BackgroundColor := clBtnFace; + FUpdateActions := True; + FShrinkMode := tbsmChevron; + FSystemFont := True; + Color := clBtnFace; + SetBounds(Left, Top, 23, 22);{} +end; + +destructor TTBCustomToolbar.Destroy; +begin + { Call Destroying to ensure csDestroying is in ComponentState now. Only + needed for Delphi 4 and earlier since Delphi 5 calls Destroying in + TComponent.BeforeDestruction } + Destroying; + UninstallHookProc(Self, HookProc); + UninstallMainWindowHook; + FreeAndNil(FView); + FreeAndNil(FChevronItem); + FreeAndNil(FItem); + inherited; +end; + +function TTBCustomToolbar.GetItems: TTBCustomItem; +begin + Result := FItem; +end; + +function TTBCustomToolbar.GetItemClass: TTBRootItemClass; +begin + Result := TTBRootItem; +end; + +function TTBCustomToolbar.GetViewClass: TTBToolbarViewClass; +begin + Result := TTBToolbarView; +end; + +function TTBCustomToolbar.GetChevronItemClass: TTBChevronItemClass; +begin + Result := TTBChevronItem; +end; + +procedure TTBCustomToolbar.CreateWrappersForAllControls; +{ Create wrappers for any controls that don't already have them } +var + L: TList; + I, J, C: Integer; +begin + if ControlCount = 0 then + Exit; + L := TList.Create; + try + L.Capacity := ControlCount; + for I := 0 to ControlCount-1 do + L.Add(Controls[I]); + C := FItem.Count-1; + for I := 0 to C do + if FItem[I] is TTBControlItem then begin + J := L.IndexOf(TTBControlItem(FItem[I]).Control); + if J <> -1 then + L[J] := nil; + end; + for I := 0 to L.Count-1 do + if Assigned(L[I]) then + CreateWrapper(FItem.Count, L[I]); + finally + L.Free; + end; +end; + +procedure TTBCustomToolbar.Loaded; +begin + CreateWrappersForAllControls; + inherited; +end; + +procedure TTBCustomToolbar.GetChildren(Proc: TGetChildProc; Root: TComponent); +begin + TTBCustomItemAccess(FItem).GetChildren(Proc, Root); + inherited; +end; + +procedure TTBCustomToolbar.SetChildOrder(Child: TComponent; Order: Integer); +begin + if Child is TTBCustomItem then + TTBCustomItemAccess(FItem).SetChildOrder(Child, Order); +end; + +procedure TTBCustomToolbar.AlignControls(AControl: TControl; var Rect: TRect); +{ VCL calls this whenever any child controls in the toolbar are moved, sized, + inserted, etc., and also when the toolbar is resized. } +begin + if FDisableAlignArrange = 0 then + Arrange; +end; + +procedure TTBCustomToolbar.InitiateAction; +begin + inherited; + {}{ also add this to popupmenu(?) } + { Update visible top-level items } + if FUpdateActions then + FView.InitiateActions; +end; + +procedure TTBCustomToolbar.CMColorChanged(var Message: TMessage); +begin + { Synchronize FView.BackgroundColor with the new color } + if Assigned(FView) then + FView.BackgroundColor := Color; + inherited; +end; + +function TTBCustomToolbar.CreateWrapper(Index: Integer; + Ctl: TControl): TTBControlItem; +var + I: Integer; + S: String; +begin + Result := TTBControlItem.CreateControlItem(Owner, Ctl); + if (csDesigning in ComponentState) and Assigned(Owner) then begin + { Needs a name for compatibility with form inheritance } + I := 1; + while True do begin + S := Format('TBControlItem%d', [I]); + if Owner.FindComponent(S) = nil then + Break; + Inc(I); + end; + Result.Name := S; + end; + FItem.Insert(Index, Result); +end; + +function TTBCustomToolbar.FindWrapper(Ctl: TControl): TTBControlItem; +var + I: Integer; + Item: TTBCustomItem; +begin + Result := nil; + for I := 0 to FItem.Count-1 do begin + Item := FItem[I]; + if (Item is TTBControlItem) and + (TTBControlItem(Item).Control = Ctl) then begin + Result := TTBControlItem(Item); + Break; + end; + end; +end; + +procedure TTBCustomToolbar.CMControlChange(var Message: TCMControlChange); +{ A CM_CONTROLCHANGE handler must be used instead of a CM_CONTROLLISTCHANGE + handler because when a CM_CONTROLLISTCHANGE message is sent it is relayed to + *all* parents. CM_CONTROLCHANGE messages are only sent to the immediate + parent. } +begin + inherited; + { Don't automatically create TTBControlItem wrappers if the component + is loading or being updated to reflect changes in an ancestor form, + because wrappers will be streamed in } + if Message.Inserting and not(csLoading in ComponentState) and + not(csUpdating in ComponentState) and + (FindWrapper(Message.Control) = nil) then + CreateWrapper(FItem.Count, Message.Control); +end; + +procedure TTBCustomToolbar.CMControlListChange(var Message: TCMControlListChange); +{ Don't handle deletions inside CM_CONTROLCHANGE because CM_CONTROLCHANGE is + sent *before* a control begins removing itself from its parent. (It used + to handle both insertions and deletions inside CM_CONTROLCHANGE but this + caused AV's.) } +var + Item: TTBControlItem; +begin + inherited; + if not Message.Inserting and Assigned(FItem) then begin + while True do begin + Item := FindWrapper(Message.Control); + if Item = nil then Break; + { The control is being removed the control, not necessarily destroyed, + so set DontFreeControl to True } + Item.DontFreeControl := True; + Item.Free; + end; + end; +end; + +procedure TTBCustomToolbar.CMHintShow(var Message: TCMHintShow); +{ Since the items on a toolbar aren't "real" controls, it needs a CM_HINTSHOW + handler for their hints to be displayed. } +var + V: TTBItemViewer; +begin + with Message.HintInfo^ do begin + HintStr := ''; + V := FView.ViewerFromPoint(CursorPos); + if Assigned(V) then begin + if not IsRectEmpty(V.BoundsRect) then begin + CursorRect := V.BoundsRect; + HintStr := V.GetHintText; + end; + end; + end; +end; + +procedure TTBCustomToolbar.CMShowHintChanged(var Message: TMessage); +begin + inherited; + if ShowHint then + FView.Style := FView.Style + [vsAlwaysShowHints] + else + FView.Style := FView.Style - [vsAlwaysShowHints]; +end; + +procedure TTBCustomToolbar.WMGetObject(var Message: TMessage); +begin + if not FView.HandleWMGetObject(Message) then + inherited; +end; + +procedure TTBCustomToolbar.WMSetCursor(var Message: TWMSetCursor); +var + P: TPoint; + Cursor: HCURSOR; + R: TRect; +begin + if not(csDesigning in ComponentState) and + (Message.CursorWnd = WindowHandle) and + (Smallint(Message.HitTest) = HTCLIENT) then begin + GetCursorPos(P); + FView.UpdateSelection(@P, True); + if Assigned(FView.Selected) then begin + Cursor := 0; + R := FView.Selected.BoundsRect; + P := ScreenToClient(P); + Dec(P.X, R.Left); + Dec(P.Y, R.Top); + TTBItemViewerAccess(FView.Selected).GetCursor(P, Cursor); + if Cursor <> 0 then begin + SetCursor(Cursor); + Message.Result := 1; + Exit; + end; + end; + end; + inherited; +end; + +procedure TTBCustomToolbar.WMSysCommand(var Message: TWMSysCommand); +var + AnsiKey: Char; +begin + if FMenuBar and Enabled and Showing then + with Message do + if (CmdType and $FFF0 = SC_KEYMENU) and (Key <> VK_SPACE) and + (GetCapture = 0) then begin + if Win32Platform = VER_PLATFORM_WIN32_NT then begin + { On Windows NT 4/2000/XP, Key is a wide character, so we have to + convert it. Pressing Alt+N in a Russian input locale, for example, + results in a Key value of $0442. + This could perhaps be considered a bug in Windows NT since the + character codes in other messages such as WM_SYSCHAR aren't left + in Unicode form. + The conversion isn't done with the system code page, but rather + with the code page of the currently active input locale, like + Windows does when sending WM_(SYS)CHAR messages. } + if WideCharToMultiByte(GetInputLocaleCodePage, 0, @WideChar(Key), 1, + @AnsiKey, 1, nil, nil) <> 1 then + Exit; { shouldn't fail, but if it does, we can't continue } + end + else begin + { On Windows 95/98/Me, Key is not a wide character. } + AnsiKey := Char(Key); + end; + if not KeyboardOpen(AnsiKey, False) then begin + if Key = Ord('-') then Exit; + MessageBeep(0); + end; + Result := 1; + end; +end; + +procedure TTBCustomToolbar.Paint; +var + R: TRect; +begin + { Draw dotted border in design mode on undocked toolbars } + if not Docked and (csDesigning in ComponentState) then + with Canvas do begin + R := ClientRect; + Pen.Style := psDot; + Pen.Color := clBtnShadow; + Brush.Style := bsClear; + Rectangle(R.Left, R.Top, R.Right, R.Bottom); + Pen.Style := psSolid; + end; + FView.DrawSubitems(Canvas); +end; + +procedure TTBCustomToolbar.CMDialogKey(var Message: TCMDialogKey); +begin + if (Message.CharCode = VK_MENU) and FMenuBar then + FView.SetAccelsVisibility(True); + inherited; +end; + +procedure TTBCustomToolbar.CMDialogChar(var Message: TCMDialogChar); +begin + { On toolbars that aren't menu bars, handle CM_DIALOGCHAR instead of + WM_SYSCOMMAND } + if not FMenuBar and Enabled and Showing and (Message.CharCode <> 0) then + if KeyboardOpen(Chr(Message.CharCode), True) then begin + Message.Result := 1; + Exit; + end; + inherited; +end; + +procedure TTBCustomToolbar.CancelHover; +begin + if not MouseCapture then + FView.UpdateSelection(nil, True); +end; + +procedure TTBCustomToolbar.CMMouseLeave(var Message: TMessage); +begin + CancelHover; + inherited; +end; + +{$IFDEF JR_D5} +procedure TTBCustomToolbar.DoContextPopup(MousePos: TPoint; + var Handled: Boolean); +begin + CancelHover; + inherited; +end; +{$ENDIF} + +{$IFNDEF JR_D5} +{ Delphi 4 and earlier don't have a DoContextPopup method; we instead have to + trap WM_RBUTTONUP to determine if a popup menu (might) be displayed } +procedure TTBCustomToolbar.WMRButtonUp(var Message: TWMRButtonUp); +begin + CancelHover; + inherited; +end; +{$ENDIF} + +procedure TTBCustomToolbar.MouseMove(Shift: TShiftState; X, Y: Integer); +var + P: TPoint; + Item: TTBCustomItem; +begin + if not(csDesigning in ComponentState) then begin + P := ClientToScreen(Point(X, Y)); + FView.UpdateSelection(@P, True); + if Assigned(FView.Selected) then begin + Item := FView.Selected.Item; + if not(tboLongHintInMenuOnly in Item.EffectiveOptions) then + Hint := Item.Hint + else + Hint := ''; + + with TTBItemViewerAccess(FView.Find(Item)) do + begin + MouseMove(X - BoundsRect.Left, Y - BoundsRect.Top); + end; + end + else + Hint := ''; + end; + { Call TrackMouseEvent to be sure that we are notified when the mouse leaves + the window. We won't get a CM_MOUSELEAVE message if the mouse moves + directly from the toolbar to another application's window } + CallTrackMouseEvent(Handle, TME_LEAVE); + inherited; +end; + +procedure TTBCustomToolbar.WMCancelMode(var Message: TWMCancelMode); +begin + inherited; + { We can receive a WM_CANCELMODE message during a modal loop if a dialog + pops up. Respond by hiding menus to make it look like the modal loop + has returned, even though it really hasn't yet. + Note: Similar code in TTBModalHandler.WndProc. } + if vsModal in FView.State then + FView.CancelMode; +end; + +procedure TTBCustomToolbar.WMMouseLeave(var Message: TMessage); +begin + { A WM_MOUSELEAVE handler is necessary because the control won't get a + CM_MOUSELEAVE message if the user presses Alt+Space. Also, CM_MOUSELEAVE + messages are also not sent if the application is in a + Application.ProcessMessages loop. } + if not FIgnoreMouseLeave then + CancelHover; + inherited; +end; + +procedure TTBCustomToolbar.WMNCMouseMove(var Message: TWMNCMouseMove); +begin + Hint := ''; + CancelHover; + inherited; +end; + +function TTBCustomToolbar.KeyboardOpen(Key: Char; + RequirePrimaryAccel: Boolean): Boolean; +var + I: TTBItemViewer; + IsOnlyItemWithAccel: Boolean; +begin + I := nil; + FView.SetAccelsVisibility(True); + try + Result := False; + if Key = #0 then begin + I := FView.FirstSelectable; + if I = nil then Exit; + FView.Selected := I; + FView.EnterToolbarLoop([]); + end + else begin + I := FView.NextSelectableWithAccel(nil, Key, RequirePrimaryAccel, + IsOnlyItemWithAccel); + if (I = nil) or not I.Item.Enabled then + Exit; + if IsOnlyItemWithAccel then begin + FView.Selected := I; + FView.EnterToolbarLoop([tbetExecuteSelected]); + end + else if FMenuBar then begin + FView.Selected := I; + FView.EnterToolbarLoop([]); + end + else + Exit; + end; + Result := True; + finally + if Assigned(I) then + FView.SetAccelsVisibility(False); + end; +end; + +procedure TTBCustomToolbar.MouseDown(Button: TMouseButton; Shift: TShiftState; + X, Y: Integer); +var + OldParent: TWinControl; + P: TPoint; + Item: TTBCustomItem; +begin + OldParent := Parent; + inherited; + if Parent <> OldParent then + { if the inherited handler (TTBDockableWindow.MouseDown) changed the Parent + (due to the toolbar moving between docks), nothing else should be done } + Exit; + if not(csDesigning in ComponentState) and (Button = mbLeft) then begin + P := ClientToScreen(Point(X, Y)); + FView.UpdateSelection(@P, True); + if Assigned(FView.Selected) then begin + Item := FView.Selected.Item; + if not(tbisClicksTransparent in TTBCustomItemAccess(Item).ItemStyle) then begin + FIgnoreMouseLeave := True; + try + FView.EnterToolbarLoop([tbetMouseDown]); + finally + FIgnoreMouseLeave := False; + end; + end; + end; + end; +end; + +procedure TTBCustomToolbar.CMFontChanged(var Message: TMessage); +begin + inherited; + if not FSystemFont then + Arrange; +end; + +function TTBCustomToolbar.GetChevronHint: String; +begin + Result := FChevronItem.Hint; +end; + +procedure TTBCustomToolbar.SetChevronHint(const Value: String); +begin + FChevronItem.Hint := Value; + FChevronItem.Caption := EscapeAmpersands(GetShortHint(Value)); +end; + +procedure TTBCustomToolbar.SetChevronMoveItems(Value: Boolean); +begin + if FChevronMoveItems <> Value then begin + FChevronMoveItems := Value; + FView.UsePriorityList := Value and not(csDesigning in ComponentState); + end; +end; + +procedure TTBCustomToolbar.SetChevronPriorityForNewItems(Value: TTBChevronPriorityForNewItems); +begin + FChevronPriorityForNewItems := Value; + FView.NewViewersGetHighestPriority := (Value = tbcpHighest); +end; + +function TTBCustomToolbar.IsChevronHintStored: Boolean; +begin + Result := (FChevronItem.Hint <> FChevronItem.GetDefaultHint); +end; + +function TTBCustomToolbar.GetImages: TCustomImageList; +begin + Result := FItem.SubMenuImages; +end; + +procedure TTBCustomToolbar.SetImages(Value: TCustomImageList); +begin + FItem.SubMenuImages := Value; +end; + +function TTBCustomToolbar.GetLinkSubitems: TTBCustomItem; +begin + Result := FItem.LinkSubitems; +end; + +procedure TTBCustomToolbar.SetLinkSubitems(Value: TTBCustomItem); +begin + FItem.LinkSubitems := Value; +end; + +procedure TTBCustomToolbar.SetMenuBar(Value: Boolean); +begin + if FMenuBar <> Value then begin + FMenuBar := Value; + if Value then begin + ControlStyle := ControlStyle + [csMenuEvents]; + FView.Style := FView.Style + [vsMenuBar, vsUseHiddenAccels]; + end + else begin + ControlStyle := ControlStyle - [csMenuEvents]; + FView.Style := FView.Style - [vsMenuBar, vsUseHiddenAccels]; + end; + if not(csLoading in ComponentState) then begin + FullSize := Value; + if Value then + ShrinkMode := tbsmWrap + else + ShrinkMode := tbsmChevron; + CloseButton := not Value; + ProcessShortCuts := Value; + end; + if Value and not(csDesigning in ComponentState) then + InstallHookProc(Self, HookProc, [hpGetMessage]) + else + UninstallHookProc(Self, HookProc); + SetMainWindowHook; + end; +end; + +function TTBCustomToolbar.GetOptions: TTBItemOptions; +begin + Result := FItem.Options; +end; + +procedure TTBCustomToolbar.SetOptions(Value: TTBItemOptions); +begin + FItem.Options := Value; +end; + +procedure TTBCustomToolbar.SetProcessShortCuts(Value: Boolean); +begin + if FProcessShortCuts <> Value then begin + FProcessShortCuts := Value; + SetMainWindowHook; + end; +end; + +procedure TTBCustomToolbar.SetSystemFont(Value: Boolean); +begin + if FSystemFont <> Value then begin + FSystemFont := Value; + Arrange; + end; +end; + +procedure TTBCustomToolbar.SetShrinkMode(Value: TTBShrinkMode); +begin + if FShrinkMode <> Value then begin + FShrinkMode := Value; + if Docked then + CurrentDock.ArrangeToolbars + else if not Floating then + Arrange; + end; +end; + +procedure TTBCustomToolbar.SetFloatingWidth(Value: Integer); +begin + if FFloatingWidth <> Value then begin + FFloatingWidth := Value; + if Floating then begin + UpdateViewProperties; + Arrange; + end; + end; +end; + +function TTBCustomToolbar.CalcWrapOffset(const ADock: TTBDock): Integer; +begin + if ADock = nil then + Result := FFloatingWidth + else begin + if FShrinkMode = tbsmWrap then begin + if not(ADock.Position in [dpLeft, dpRight]) then + Result := ADock.Width - ADock.NonClientWidth - NonClientWidth + else + Result := ADock.Height - ADock.NonClientHeight - NonClientHeight; + end + else + Result := 0; + end; +end; + +function TTBCustomToolbar.CalcChevronOffset(const ADock: TTBDock; + const AOrientation: TTBViewOrientation): Integer; +begin + if (FShrinkMode = tbsmChevron) and Docked and (ADock = CurrentDock) then begin + Result := CurrentSize; + { Subtract non-client size } + if AOrientation <> tbvoVertical then + Dec(Result, NonClientWidth) + else + Dec(Result, NonClientHeight); + if Result < 0 then + Result := 0; { in case CurrentSize wasn't properly initialized yet } + end + else + Result := 0; +end; + +procedure TTBCustomToolbar.UpdateViewProperties; +var + DT: TTBDockType; +begin + DT := TBGetDockTypeOf(CurrentDock, Floating); + FView.Orientation := DockTypeToOrientation[DT]; + FView.ChevronSize := tbChevronSize; + if Assigned(CurrentDock) or Floating then begin + FView.ChevronOffset := CalcChevronOffset(CurrentDock, FView.Orientation); + FView.WrapOffset := CalcWrapOffset(CurrentDock); + end + else begin + FView.ChevronOffset := 0; + FView.WrapOffset := 0; + { Only enable chevron/wrapping when the width of the toolbar is fixed } + if not AutoResize or ((akLeft in Anchors) and (akRight in Anchors)) then begin + if FShrinkMode = tbsmChevron then + FView.ChevronOffset := Width - NonClientWidth + else if FShrinkMode = tbsmWrap then + FView.WrapOffset := Width - NonClientWidth; + end; + end; +end; + +{}{DOCKING STUFF} + +procedure TTBCustomToolbar.ReadPositionData(const Data: TTBReadPositionData); +begin + inherited; + with Data do + FloatingWidth := ReadIntProc(Name, rvFloatRightX, 0, ExtraData); +end; + +procedure TTBCustomToolbar.WritePositionData(const Data: TTBWritePositionData); +begin + inherited; + with Data do + WriteIntProc(Name, rvFloatRightX, FFloatingWidth, ExtraData); +end; + +procedure TTBCustomToolbar.GetMinBarSize(var MinimumSize: TPoint); +var + WH: Integer; +begin + MinimumSize.X := 0; + MinimumSize.Y := 0; + if Docked then begin + WH := CurrentDock.GetMinRowSize(EffectiveDockRow, Self); + if not(CurrentDock.Position in [dpLeft, dpRight]) then + MinimumSize.Y := WH + else + MinimumSize.X := WH; + end; +end; + +procedure TTBCustomToolbar.GetBaseSize(var ASize: TPoint); +begin + FView.ValidatePositions; + ASize := FBaseSize; +end; + +function TTBCustomToolbar.DoArrange(CanMoveControls: Boolean; + PreviousDockType: TTBDockType; NewFloating: Boolean; NewDock: TTBDock): TPoint; +var + DT: TTBDockType; + O: TTBViewOrientation; + TempBaseSize: TPoint; +begin + //outputdebugstring (pchar(format('%s.DoArrange(%d)', [Name, Ord(CanMoveControls)]))); + if CanMoveControls then begin + UpdateViewProperties; + Result := FView.UpdatePositions; + end + else begin + DT := TBGetDockTypeOf(NewDock, NewFloating); + O := DockTypeToOrientation[DT]; + Result.X := 0; + Result.Y := 0; + FView.CalculatePositions(False, O, CalcWrapOffset(NewDock), + CalcChevronOffset(NewDock, O), tbChevronSize, TempBaseSize, Result, + FLastWrappedLines); + end; +end; + +procedure TTBCustomToolbar.ControlExistsAtPos(const P: TPoint; + var ControlExists: Boolean); +var + P2: TPoint; +begin + inherited; + if not ControlExists and not(csDesigning in ComponentState) then begin + P2 := ClientToScreen(P); + FView.UpdateSelection(@P2, True); + if Assigned(FView.Selected) and + not(tbisClicksTransparent in TTBCustomItemAccess(FView.Selected.Item).ItemStyle) then + ControlExists := True; + end; +end; + +procedure TTBCustomToolbar.BuildPotentialSizesList(SizesList: TList); +var + Margins: TRect; + MinX, SaveWrapX: Integer; + X, PrevWrappedLines: Integer; + S: TPoint; + S2: TSmallPoint; +begin + View.GetMargins(tbvoFloating, Margins); + MinX := Margins.Left + Margins.Right; + SaveWrapX := FFloatingWidth; + try + { Add the widest size to the list } + FFloatingWidth := 0; + S := DoArrange(False, dtNotDocked, True, nil); + SizesList.Add(Pointer(PointToSmallPoint(S))); + { Calculate and add rest of sizes to the list } + PrevWrappedLines := 1; + X := S.X-1; + while X >= MinX do begin + FFloatingWidth := X; + S := DoArrange(False, dtNotDocked, True, nil); + if S.X > X then { if it refuses to go any smaller } + Break + else + if X = S.X then begin + S2 := PointToSmallPoint(S); + if FLastWrappedLines <> PrevWrappedLines then + SizesList.Add(Pointer(S2)) + else + SizesList[SizesList.Count-1] := Pointer(S2); + PrevWrappedLines := FLastWrappedLines; + Dec(X); + end + else + X := S.X; + end; + finally + FFloatingWidth := SaveWrapX; + end; +end; + +function CompareNewSizes(const Item1, Item2, ExtraData: Pointer): Integer; far; +begin + { Sorts in descending order } + if ExtraData = nil then + Result := TSmallPoint(Item2).X - TSmallPoint(Item1).X + else + Result := TSmallPoint(Item2).Y - TSmallPoint(Item1).Y; +end; + +procedure TTBCustomToolbar.ResizeBegin(ASizeHandle: TTBSizeHandle); +const + MaxSizeSens = 12; +var + I, NewSize: Integer; + S, N: TSmallPoint; + P: TPoint; +begin + inherited; + + FSizeData := AllocMem(SizeOf(TToolbar97SizeData)); + + with PToolbar97SizeData(FSizeData)^ do begin + SizeHandle := ASizeHandle; + OrigLeft := Parent.Left; + OrigTop := Parent.Top; + OrigWidth := Parent.Width; + OrigHeight := Parent.Height; + NCXDiff := ClientToScreen(Point(0, 0)).X - OrigLeft; + CurRightX := FFloatingWidth; + DisableSensCheck := False; + OpSide := False; + + NewSizes := TList.Create; + BuildPotentialSizesList(NewSizes); + for I := 0 to NewSizes.Count-1 do begin + P := SmallPointToPoint(TSmallPoint(NewSizes.List[I])); + AddFloatingNCAreaToSize(P); + NewSizes.List[I] := Pointer(PointToSmallPoint(P)); + end; + ListSortEx(NewSizes, CompareNewSizes, + Pointer(Ord(ASizeHandle in [twshTop, twshBottom]))); + + SizeSens := MaxSizeSens; + { Adjust sensitivity if it's too high } + for I := 0 to NewSizes.Count-1 do begin + Pointer(S) := NewSizes[I]; + if (S.X = Width) and (S.Y = Height) then begin + if I > 0 then begin + Pointer(N) := NewSizes[I-1]; + if ASizeHandle in [twshLeft, twshRight] then + NewSize := N.X - S.X - 1 + else + NewSize := N.Y - S.Y - 1; + if NewSize < SizeSens then SizeSens := NewSize; + end; + if I < NewSizes.Count-1 then begin + Pointer(N) := NewSizes[I+1]; + if ASizeHandle in [twshLeft, twshRight] then + NewSize := S.X - N.X - 1 + else + NewSize := S.Y - N.Y - 1; + if NewSize < SizeSens then SizeSens := NewSize; + end; + Break; + end; + end; + if SizeSens < 0 then SizeSens := 0; + end; +end; + +procedure TTBCustomToolbar.ResizeTrack(var Rect: TRect; const OrigRect: TRect); +var + Pos: TPoint; + NewOpSide: Boolean; + Reverse: Boolean; + I: Integer; + P: TSmallPoint; +begin + inherited; + + with PToolbar97SizeData(FSizeData)^ do begin + GetCursorPos(Pos); + + Dec(Pos.X, OrigLeft); Dec(Pos.Y, OrigTop); + if SizeHandle = twshLeft then + Pos.X := OrigWidth-Pos.X + else + if SizeHandle = twshTop then + Pos.Y := OrigHeight-Pos.Y; + + { Adjust Pos to make up for the "sizing sensitivity", as seen in Office 97 } + if SizeHandle in [twshLeft, twshRight] then + NewOpSide := Pos.X < OrigWidth + else + NewOpSide := Pos.Y < OrigHeight; + if (not DisableSensCheck) or (OpSide <> NewOpSide) then begin + DisableSensCheck := False; + OpSide := NewOpSide; + if SizeHandle in [twshLeft, twshRight] then begin + if (Pos.X >= OrigWidth-SizeSens) and (Pos.X < OrigWidth+SizeSens) then + Pos.X := OrigWidth; + end + else begin + if (Pos.Y >= OrigHeight-SizeSens) and (Pos.Y < OrigHeight+SizeSens) then + Pos.Y := OrigHeight; + end; + end; + + Rect := OrigRect; + + if SizeHandle in [twshLeft, twshRight] then + Reverse := Pos.X > OrigWidth + else + Reverse := Pos.Y > OrigHeight; + if not Reverse then + I := NewSizes.Count-1 + else + I := 0; + while True do begin + if (not Reverse and (I < 0)) or + (Reverse and (I >= NewSizes.Count)) then + Break; + Pointer(P) := NewSizes[I]; + if SizeHandle in [twshLeft, twshRight] then begin + if (not Reverse and ((I = NewSizes.Count-1) or (Pos.X >= P.X))) or + (Reverse and ((I = 0) or (Pos.X < P.X))) then begin + if I = 0 then + CurRightX := 0 + else + CurRightX := P.X - NCXDiff*2; + if SizeHandle = twshRight then + Rect.Right := Rect.Left + P.X + else + Rect.Left := Rect.Right - P.X; + Rect.Bottom := Rect.Top + P.Y; + DisableSensCheck := not EqualRect(Rect, OrigRect); + end; + end + else begin + if (not Reverse and ((I = NewSizes.Count-1) or (Pos.Y >= P.Y))) or + (Reverse and ((I = 0) or (Pos.Y < P.Y))) then begin + if I = NewSizes.Count-1 then + CurRightX := 0 + else + CurRightX := P.X - NCXDiff*2; + if SizeHandle = twshBottom then + Rect.Bottom := Rect.Top + P.Y + else + Rect.Top := Rect.Bottom - P.Y; + Rect.Right := Rect.Left + P.X; + DisableSensCheck := not EqualRect(Rect, OrigRect); + end; + end; + if not Reverse then + Dec(I) + else + Inc(I); + end; + end; +end; + +procedure TTBCustomToolbar.ResizeTrackAccept; +begin + inherited; + FloatingWidth := PToolbar97SizeData(FSizeData)^.CurRightX; +end; + +procedure TTBCustomToolbar.ResizeEnd; +begin + inherited; + if Assigned(FSizeData) then begin + PToolbar97SizeData(FSizeData)^.NewSizes.Free; + FreeMem(FSizeData); + FSizeData := nil; + end; +end; + +function TTBCustomToolbar.GetShrinkMode: TTBShrinkMode; +begin + Result := FShrinkMode; +end; + +procedure TTBCustomToolbar.GetMinShrinkSize(var AMinimumSize: Integer); +var + I: TTBItemViewer; +begin + I := FView.HighestPriorityViewer; + if Assigned(I) then begin + if not(CurrentDock.Position in [dpLeft, dpRight]) then + AMinimumSize := I.BoundsRect.Right - I.BoundsRect.Left + else + AMinimumSize := I.BoundsRect.Bottom - I.BoundsRect.Top; + end; + if not(CurrentDock.Position in [dpLeft, dpRight]) then + Inc(AMinimumSize, NonClientWidth) + else + Inc(AMinimumSize, NonClientHeight); + Inc(AMinimumSize, tbChevronSize); +end; + +procedure TTBCustomToolbar.BeginUpdate; +begin + FView.BeginUpdate; +end; + +procedure TTBCustomToolbar.EndUpdate; +begin + FView.EndUpdate; +end; + +procedure TTBCustomToolbar.GetTabOrderList(List: TList); +var + CtlList: TList; + I, J: Integer; + CtlI, CtlJ: TWinControl; +begin + inherited; + { Remove off-edge items and their children from List } + CtlList := TList.Create; + try + FView.GetOffEdgeControlList(CtlList); + for I := 0 to CtlList.Count-1 do begin + CtlI := CtlList[I]; + J := 0; + while J < List.Count do begin + CtlJ := List[J]; + if (CtlJ = CtlI) or CtlI.ContainsControl(CtlJ) then + List.Delete(J) + else + Inc(J); + end; + end; + finally + CtlList.Free; + end; +end; + +procedure TTBCustomToolbar.CMWinIniChange(var Message: TWMSettingChange); +begin + inherited; + if Message.Flag = SPI_SETNONCLIENTMETRICS then begin + TBInitToolbarSystemFont; + Arrange; + end; +end; + +function TTBCustomToolbar.IsShortCut(var Message: TWMKey): Boolean; +begin + Result := False; + if Assigned(FOnShortCut) then + FOnShortCut(Message, Result); + Result := Result or FItem.IsShortCut(Message); +end; + +var + HookCount: Integer; + HookList: TList; + +class function TTBCustomToolbar.MainWindowHook(var Message: TMessage): Boolean; + + function GetActiveForm: TCustomForm; + var + Wnd: HWND; + Ctl: TWinControl; + begin + { Note: We don't use Screen.ActiveCustomForm because when an EXE calls a + DLL that shows a modal form, Screen.ActiveCustomForm doesn't change in + the EXE; it remains set to the last form that was active in the EXE. + Use FindControl(GetActiveWindow) instead to avoid this problem; it will + return nil when a form in another module is active. } + Result := nil; + Wnd := GetActiveWindow; + if Wnd <> 0 then begin + Ctl := FindControl(Wnd); + if Assigned(Ctl) and (Ctl is TCustomForm) then + Result := TCustomForm(Ctl); + end; + end; + + function HandleShortCutOnForm(const Form: TCustomForm): Boolean; + var + I: Integer; + Toolbar: TTBCustomToolbar; + begin + Result := False; + if Form = nil then + Exit; + for I := 0 to HookList.Count-1 do begin + Toolbar := HookList[I]; + if Toolbar.ProcessShortCuts and + (TBGetToolWindowParentForm(Toolbar) = Form) and + IsWindowEnabled(Form.Handle) and + Toolbar.IsShortCut(TWMKey(Message)) then begin + Message.Result := 1; + Result := True; + Exit; + end; + end; + end; + + function TraverseControls(Container: TWinControl): Boolean; + var + I: Integer; + Control: TControl; + begin + Result := False; + if Container.Showing then + for I := 0 to Container.ControlCount - 1 do begin + Control := Container.Controls[I]; + if Control.Visible and Control.Enabled then begin + if (csMenuEvents in Control.ControlStyle) and + ((Control is TTBDock) or (Control is TTBCustomToolbar)) and + (Control.Perform(WM_SYSCOMMAND, TMessage(Message).WParam, + TMessage(Message).LParam) <> 0) or (Control is TWinControl) and + TraverseControls(TWinControl(Control)) then begin + Result := True; + Exit; + end; + end; + end; + end; + +var + ActiveForm: TCustomForm; + ActiveMDIChild: TForm; +begin + Result := False; + if (Message.Msg = CM_APPKEYDOWN) and Assigned(HookList) then begin + { Process shortcuts on toolbars. Search forms in this order: + 1. If the active form is an MDI parent form, the active MDI child form + if it has the focus. + 2. The active form. + 3. The main form. } + ActiveForm := GetActiveForm; + if Assigned(ActiveForm) and (ActiveForm is TForm) and + (TForm(ActiveForm).FormStyle = fsMDIForm) then begin + ActiveMDIChild := TForm(ActiveForm).ActiveMDIChild; + { Don't search the child form if a control on the MDI parent form is + currently focused (i.e. Screen.ActiveCustomForm <> ActiveMDIChild) } + if Assigned(ActiveMDIChild) and + (Screen.ActiveCustomForm = ActiveMDIChild) and + HandleShortCutOnForm(ActiveMDIChild) then begin + Result := True; + Exit; + end; + end; + if HandleShortCutOnForm(ActiveForm) then + Result := True + else begin + if (Application.MainForm <> ActiveForm) and + HandleShortCutOnForm(Application.MainForm) then + Result := True; + end; + end + else if Message.Msg = CM_APPSYSCOMMAND then begin + { Handle "Alt or Alt+[key] pressed on secondary form" case. If there's a + menu bar on the active form we want the keypress to go to it instead of + to the main form (the VCL's default handling). } + ActiveForm := GetActiveForm; + if Assigned(ActiveForm) and IsWindowEnabled(ActiveForm.Handle) and + IsWindowVisible(ActiveForm.Handle) and TraverseControls(ActiveForm) then begin + Message.Result := 1; + Result := True; + end; + end; +end; + +procedure TTBCustomToolbar.SetMainWindowHook; +begin + if (ProcessShortCuts or MenuBar) and not(csDesigning in ComponentState) then + InstallMainWindowHook + else + UninstallMainWindowHook; +end; + +procedure TTBCustomToolbar.InstallMainWindowHook; +begin + if FMainWindowHookInstalled then + Exit; + if HookCount = 0 then + Application.HookMainWindow(MainWindowHook); + Inc(HookCount); + AddToList(HookList, Self); + FMainWindowHookInstalled := True; +end; + +procedure TTBCustomToolbar.UninstallMainWindowHook; +begin + if not FMainWindowHookInstalled then + Exit; + FMainWindowHookInstalled := False; + RemoveFromList(HookList, Self); + Dec(HookCount); + if HookCount = 0 then + Application.UnhookMainWindow(MainWindowHook); +end; + +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2Toolbar.pas.orig b/official/2.1.6+2.1.beta1/Source/TB2Toolbar.pas.orig new file mode 100644 index 0000000..98c3a44 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2Toolbar.pas.orig @@ -0,0 +1,1711 @@ +unit TB2Toolbar; + +{ + Toolbar2000 + Copyright (C) 1998-2005 by Jordan Russell + All rights reserved. + + The contents of this file are subject to the "Toolbar2000 License"; you may + not use or distribute this file except in compliance with the + "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in + TB2k-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + + Alternatively, the contents of this file may be used under the terms of the + GNU General Public License (the "GPL"), in which case the provisions of the + GPL are applicable instead of those in the "Toolbar2000 License". A copy of + the GPL may be found in GPL-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + If you wish to allow use of your version of this file only under the terms of + the GPL and not to allow others to use your version of this file under the + "Toolbar2000 License", indicate your decision by deleting the provisions + above and replace them with the notice and other provisions required by the + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + + $jrsoftware: tb2k/Source/TB2Toolbar.pas,v 1.108 2005/07/30 18:17:20 jr Exp $ +} + +interface + +{$I TB2Ver.inc} + +uses + {$IFDEF JR_D9} Types, {$ENDIF} + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, ImgList, + Menus, ActnList, + TB2Item, TB2Dock; + +type + TTBCustomToolbar = class; + TTBChevronItem = class; + TTBChevronItemClass = class of TTBChevronItem; + + TTBToolbarViewClass = class of TTBToolbarView; + TTBToolbarView = class(TTBView) + private + FToolbar: TTBCustomToolbar; + protected + procedure AutoSize(AWidth, AHeight: Integer); override; + procedure DoUpdatePositions(var ASize: TPoint); override; + function GetChevronItem: TTBCustomItem; override; + function GetMDIButtonsItem: TTBCustomItem; override; + function GetMDISystemMenuItem: TTBCustomItem; override; + public + constructor Create(AOwner: TComponent); override; + function GetFont: TFont; override; + procedure InvalidatePositions; override; + end; + + TTBChevronPriorityForNewItems = (tbcpHighest, tbcpLowest); + + TTBCustomToolbar = class(TTBCustomDockableWindow, ITBItems) + private + FBaseSize: TPoint; + FChevronItem: TTBChevronItem; + FChevronMoveItems: Boolean; + FChevronPriorityForNewItems: TTBChevronPriorityForNewItems; + FDisableAlignArrange: Integer; + FFloatingWidth: Integer; + FIgnoreMouseLeave: Boolean; + FItem: TTBRootItem; + FLastWrappedLines: Integer; + FMenuBar: Boolean; + FOnShortCut: TShortCutEvent; + FProcessShortCuts: Boolean; + FMainWindowHookInstalled: Boolean; + FShrinkMode: TTBShrinkMode; + FSizeData: Pointer; + FSystemFont: Boolean; + FUpdateActions: Boolean; + + procedure CancelHover; + function CalcChevronOffset(const ADock: TTBDock; + const AOrientation: TTBViewOrientation): Integer; + function CalcWrapOffset(const ADock: TTBDock): Integer; + function CreateWrapper(Index: Integer; Ctl: TControl): TTBControlItem; + function FindWrapper(Ctl: TControl): TTBControlItem; + function GetChevronHint: String; + function GetImages: TCustomImageList; + function GetItems: TTBCustomItem; + function GetLinkSubitems: TTBCustomItem; + function GetOptions: TTBItemOptions; + procedure InstallMainWindowHook; + function IsChevronHintStored: Boolean; + class function MainWindowHook(var Message: TMessage): Boolean; + procedure SetChevronHint(const Value: String); + procedure SetChevronMoveItems(Value: Boolean); + procedure SetChevronPriorityForNewItems(Value: TTBChevronPriorityForNewItems); + procedure SetFloatingWidth(Value: Integer); + procedure SetImages(Value: TCustomImageList); + procedure SetLinkSubitems(Value: TTBCustomItem); + procedure SetMainWindowHook; + procedure SetMenuBar(Value: Boolean); + procedure SetOptions(Value: TTBItemOptions); + procedure SetProcessShortCuts(Value: Boolean); + procedure SetShrinkMode(Value: TTBShrinkMode); + procedure SetSystemFont(Value: Boolean); + procedure UninstallMainWindowHook; + procedure UpdateViewProperties; + + procedure CMColorChanged(var Message: TMessage); message CM_COLORCHANGED; + procedure CMControlChange(var Message: TCMControlChange); message CM_CONTROLCHANGE; + procedure CMControlListChange(var Message: TCMControlListChange); message CM_CONTROLLISTCHANGE; + procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED; + procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR; + procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY; + procedure CMHintShow(var Message: TCMHintShow); message CM_HINTSHOW; + procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; + procedure CMShowHintChanged(var Message: TMessage); message CM_SHOWHINTCHANGED; + procedure CMWinIniChange(var Message: TWMSettingChange); message CM_WININICHANGE; + procedure WMCancelMode(var Message: TWMCancelMode); message WM_CANCELMODE; + procedure WMGetObject(var Message: TMessage); message WM_GETOBJECT; + procedure WMMouseLeave(var Message: TMessage); message WM_MOUSELEAVE; + procedure WMNCMouseMove(var Message: TWMNCMouseMove); message WM_NCMOUSEMOVE; + {$IFNDEF JR_D5} + procedure WMRButtonUp(var Message: TWMRButtonUp); message WM_RBUTTONUP; + {$ENDIF} + procedure WMSetCursor(var Message: TWMSetCursor); message WM_SETCURSOR; + procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND; + protected + FMDIButtonsItem: TTBCustomItem; + FMDISystemMenuItem: TTBCustomItem; + FView: TTBToolbarView; + procedure AlignControls(AControl: TControl; var Rect: TRect); override; + procedure BuildPotentialSizesList(SizesList: TList); dynamic; + procedure ControlExistsAtPos(const P: TPoint; var ControlExists: Boolean); + override; + function DoArrange(CanMoveControls: Boolean; PreviousDockType: TTBDockType; + NewFloating: Boolean; NewDock: TTBDock): TPoint; override; + {$IFDEF JR_D5} + procedure DoContextPopup(MousePos: TPoint; var Handled: Boolean); override; + {$ENDIF} + procedure GetBaseSize(var ASize: TPoint); override; + procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override; + procedure GetMinBarSize(var MinimumSize: TPoint); + procedure GetMinShrinkSize(var AMinimumSize: Integer); override; + function GetShrinkMode: TTBShrinkMode; override; + function GetChevronItemClass: TTBChevronItemClass; dynamic; + function GetItemClass: TTBRootItemClass; dynamic; + function GetViewClass: TTBToolbarViewClass; dynamic; + procedure Loaded; override; + procedure MouseDown(Button: TMouseButton; Shift: TShiftState; + X, Y: Integer); override; + procedure MouseMove(Shift: TShiftState; X, Y: Integer); override; + procedure Paint; override; + procedure ResizeBegin(ASizeHandle: TTBSizeHandle); override; + procedure ResizeTrack(var Rect: TRect; const OrigRect: TRect); override; + procedure ResizeTrackAccept; override; + procedure ResizeEnd; override; + procedure SetChildOrder(Child: TComponent; Order: Integer); override; + + property SystemFont: Boolean read FSystemFont write SetSystemFont default True; + property OnShortCut: TShortCutEvent read FOnShortCut write FOnShortCut; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure BeginUpdate; + procedure EndUpdate; + procedure CreateWrappersForAllControls; + procedure GetTabOrderList(List: TList); override; + procedure InitiateAction; override; + function IsShortCut(var Message: TWMKey): Boolean; + function KeyboardOpen(Key: Char; RequirePrimaryAccel: Boolean): Boolean; + procedure ReadPositionData(const Data: TTBReadPositionData); override; + procedure WritePositionData(const Data: TTBWritePositionData); override; + + property ChevronHint: String read GetChevronHint write SetChevronHint stored IsChevronHintStored; + property ChevronMoveItems: Boolean read FChevronMoveItems write SetChevronMoveItems default True; + property ChevronPriorityForNewItems: TTBChevronPriorityForNewItems read FChevronPriorityForNewItems + write SetChevronPriorityForNewItems default tbcpHighest; + property FloatingWidth: Integer read FFloatingWidth write SetFloatingWidth default 0; + property Images: TCustomImageList read GetImages write SetImages; + property Items: TTBRootItem read FItem; + property LinkSubitems: TTBCustomItem read GetLinkSubitems write SetLinkSubitems; + property Options: TTBItemOptions read GetOptions write SetOptions default []; + property MenuBar: Boolean read FMenuBar write SetMenuBar default False; + property ProcessShortCuts: Boolean read FProcessShortCuts write SetProcessShortCuts default False; + property ShrinkMode: TTBShrinkMode read FShrinkMode write SetShrinkMode default tbsmChevron; + property UpdateActions: Boolean read FUpdateActions write FUpdateActions default True; + property View: TTBToolbarView read FView; + published + property Hint stored False; { Hint is set dynamically; don't save it } + end; + + TTBToolbar = class(TTBCustomToolbar) + published + property ActivateParent; + property Align; + property Anchors; + property AutoResize; + property BorderStyle; + property Caption; + property ChevronHint; + property ChevronMoveItems; + property ChevronPriorityForNewItems; + property CloseButton; + property CloseButtonWhenDocked; + property Color; + property CurrentDock; + property DefaultDock; + property DockableTo; + property DockMode; + property DockPos; + property DockRow; + property DragHandleStyle; + property FloatingMode; + property FloatingWidth; + property Font; + property FullSize; + property HideWhenInactive; + property Images; + property Items; + property LastDock; + property LinkSubitems; + property MenuBar; + property Options; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property ProcessShortCuts; + property Resizable; + property ShowCaption; + property ShowHint; + property ShrinkMode; + property SmoothDrag; + property Stretch; + property SystemFont; + property TabOrder; + property UpdateActions; + property UseLastDock; + property Visible; + + property OnClose; + property OnCloseQuery; + {$IFDEF JR_D5} + property OnContextPopup; + {$ENDIF} + property OnDragDrop; + property OnDragOver; + property OnMouseDown; + property OnMouseMove; + property OnMouseUp; + property OnMove; + property OnRecreated; + property OnRecreating; + property OnDockChanged; + property OnDockChanging; + property OnDockChangingHidden; + property OnResize; + property OnShortCut; + property OnVisibleChanged; + end; + +{ TTBChevronItem & TTBChevronItemViewer } + + TTBChevronItem = class(TTBCustomItem) + private + FToolbar: TTBCustomToolbar; + function GetDefaultHint: String; + public + constructor Create(AOwner: TComponent); override; + function GetChevronParentView: TTBView; override; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + end; + + TTBChevronItemViewer = class(TTBItemViewer) + protected + procedure Paint(const Canvas: TCanvas; const ClientAreaRect: TRect; + IsSelected, IsPushed, UseDisabledShadow: Boolean); override; + end; + +const + tbChevronSize = 12; + + +implementation + +uses + TB2Consts, TB2Common, TB2Hook; + +const + { Constants for TTBCustomToolbar-specific registry values. Do not localize! } + rvFloatRightX = 'FloatRightX'; + DockTypeToOrientation: array[TTBDockType] of TTBViewOrientation = + (tbvoHorizontal, tbvoFloating, tbvoHorizontal, tbvoVertical); + +type + { Used internally by the TCustomToolbar97.Resize* procedures } + PToolbar97SizeData = ^TToolbar97SizeData; + TToolbar97SizeData = record + SizeHandle: TTBSizeHandle; + NewSizes: TList; { List of valid new sizes. Items are casted into TSmallPoints } + OrigLeft, OrigTop, OrigWidth, OrigHeight, NCXDiff: Integer; + CurRightX: Integer; + DisableSensCheck, OpSide: Boolean; + SizeSens: Integer; + end; + + +procedure HookProc(Code: THookProcCode; Wnd: HWND; WParam: WPARAM; + LParam: LPARAM); +var + Msg: PMsg; + MainForm: TForm; +begin + { Work around an annoying Windows or VCL bug. If you close all MDI child + windows, the MDI client window gets the focus, and when it has the focus, + pressing Alt+[char] doesn't send a WM_SYSCOMMAND message to the form for + some reason. It seems silly to have to use a hook for this, but I don't + see a better workaround. + Also, route Alt+- to the main form so that when an MDI child form is + maximized, Alt+- brings up the TB2k MDI system menu instead of the + system's. } + if (Code = hpGetMessage) and (WParam = PM_REMOVE) then begin + Msg := PMsg(LParam); + if (Msg.message = WM_SYSCHAR) and (Msg.hwnd <> 0) then begin + { Note: On Windows NT/2000/XP, even though we install the hook using + SetWindowsHookExW, Msg.wParam may either be an ANSI character or a + Unicode character, due to an apparent bug on these platforms. It is + an ANSI character when the message passes through a separate + SetWindowsHookExA-installed WH_GETMESSAGE hook first, and that hook + calls us via CallNextHookEx. Windows apparently "forgets" to convert + the character from ANSI back to Unicode in this case. + We can't convert the character code because there seems to be no way + to detect whether it is ANSI or Unicode. So we can't really do much + with Msg.wParam, apart from comparing it against character codes that + are the same between ANSI and Unicode, such as '-'. } + MainForm := Application.MainForm; + if Assigned(MainForm) and MainForm.HandleAllocated and (GetCapture = 0) and + ((Msg.hwnd = MainForm.ClientHandle) or + ((Msg.wParam = Ord('-')) and (MainForm.ClientHandle <> 0) and + IsChild(MainForm.ClientHandle, Msg.hwnd))) then begin + { Redirect the message to the main form. + Note: Unfortunately, due to a bug in Windows NT 4.0 (and not + 2000/XP/9x/Me), modifications to the message don't take effect if + another WH_GETMESSAGE hook has been installed above this one. + (The bug is that CallNextHookEx copies lParam^ to a local buffer, but + does not propogate the changes made by the hook back to lParam^ when + it returns.) I don't know of any clean workaround, other than to + ensure other WH_GETMESSAGE hooks are installed *before* + Toolbar2000's. } + Msg.hwnd := MainForm.Handle; + end; + end; + end; +end; + +constructor TTBChevronItem.Create(AOwner: TComponent); +begin + inherited; + FToolbar := AOwner as TTBCustomToolbar; + ItemStyle := ItemStyle + [tbisSubMenu, tbisNoAutoOpen]; + Hint := GetDefaultHint; + Caption := EscapeAmpersands(GetShortHint(Hint)); +end; + +function TTBChevronItem.GetChevronParentView: TTBView; +begin + Result := FToolbar.FView; +end; + +function TTBChevronItem.GetDefaultHint: String; +begin + Result := STBChevronItemMoreButtonsHint; +end; + +function TTBChevronItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBChevronItemViewer; +end; + +procedure TTBChevronItemViewer.Paint(const Canvas: TCanvas; + const ClientAreaRect: TRect; IsSelected, IsPushed, UseDisabledShadow: Boolean); +const + Pattern: array[Boolean, 0..15] of Byte = ( + ($CC, 0, $66, 0, $33, 0, $66, 0, $CC, 0, 0, 0, 0, 0, 0, 0), + ($88, 0, $D8, 0, $70, 0, $20, 0, $88, 0, $D8, 0, $70, 0, $20, 0)); +var + DC: HDC; + R2: TRect; + TempBmp: TBitmap; + + procedure DrawPattern(const Color, Offset: Integer); + begin + SelectObject(DC, GetSysColorBrush(Color)); + BitBlt(DC, R2.Left, R2.Top + Offset, R2.Right - R2.Left, + R2.Bottom - R2.Top, TempBmp.Canvas.Handle, 0, 0, $00E20746 {ROP_DSPDxax}); + end; + +begin + DC := Canvas.Handle; + R2 := ClientAreaRect; + if Item.Enabled then begin + if IsPushed then + DrawEdge(DC, R2, BDR_SUNKENOUTER, BF_RECT) + else if IsSelected and not(csDesigning in Item.ComponentState) then + DrawEdge(DC, R2, BDR_RAISEDINNER, BF_RECT); + end; + + if View.Orientation <> tbvoVertical then begin + R2.Top := 4; + R2.Bottom := R2.Top + 5; + Inc(R2.Left, 2); + R2.Right := R2.Left + 8; + end + else begin + R2.Left := R2.Right - 9; + R2.Right := R2.Left + 5; + Inc(R2.Top, 2); + R2.Bottom := R2.Top + 8; + end; + if IsPushed then + OffsetRect(R2, 1, 1); + TempBmp := TBitmap.Create; + try + TempBmp.Handle := CreateBitmap(8, 8, 1, 1, + @Pattern[View.Orientation = tbvoVertical]); + SetTextColor(DC, clBlack); + SetBkColor(DC, clWhite); + if Item.Enabled then + DrawPattern(COLOR_BTNTEXT, 0) + else begin + DrawPattern(COLOR_BTNHIGHLIGHT, 1); + DrawPattern(COLOR_BTNSHADOW, 0); + end; + finally + TempBmp.Free; + end; +end; + + +{ TTBToolbarView } + +constructor TTBToolbarView.Create(AOwner: TComponent); +begin + FToolbar := AOwner as TTBCustomToolbar; + inherited; +end; + +procedure TTBToolbarView.AutoSize(AWidth, AHeight: Integer); +begin + FToolbar.FBaseSize := BaseSize; + if FToolbar.IsAutoResized then + FToolbar.ChangeSize(AWidth, AHeight); +end; + +procedure TTBToolbarView.DoUpdatePositions(var ASize: TPoint); +begin + { Reset CurrentSize because it probably won't be valid after positions + are recalculated [2001-06-24] } + FToolbar.CurrentSize := 0; + FToolbar.GetMinBarSize(ASize); + { On FullSize toolbars, increase ASize.X/Y to WrapOffset so that + right-aligned items always appear at the right edge even when the toolbar + isn't wrapping } + if FToolbar.FullSize then begin + if (Orientation = tbvoHorizontal) and (ASize.X < WrapOffset) then + ASize.X := WrapOffset + else if (Orientation = tbvoVertical) and (ASize.Y < WrapOffset) then + ASize.Y := WrapOffset; + end; + { Increment FDisableAlignArrange so that we don't recursively arrange when + CalculatePositions moves controls } + Inc(FToolbar.FDisableAlignArrange); + try + inherited; + finally + Dec(FToolbar.FDisableAlignArrange); + end; +end; + +procedure TTBToolbarView.InvalidatePositions; +begin + { Reset CurrentSize because it probably won't be valid after positions + are recalculated [2001-06-04] } + FToolbar.CurrentSize := 0; + inherited; +end; + +function TTBToolbarView.GetFont: TFont; +begin + if not FToolbar.SystemFont then + Result := FToolbar.Font + else + Result := inherited GetFont; +end; + +function TTBToolbarView.GetChevronItem: TTBCustomItem; +begin + Result := FToolbar.FChevronItem; +end; + +function TTBToolbarView.GetMDIButtonsItem: TTBCustomItem; +begin + Result := FToolbar.FMDIButtonsItem; +end; + +function TTBToolbarView.GetMDISystemMenuItem: TTBCustomItem; +begin + Result := FToolbar.FMDISystemMenuItem; +end; + + +{ TTBCustomToolbar } + +type + {}TTBCustomItemAccess = class(TTBCustomItem); + TTBItemViewerAccess = class(TTBItemViewer); + +constructor TTBCustomToolbar.Create(AOwner: TComponent); +begin + inherited; + ControlStyle := ControlStyle + [csAcceptsControls, csActionClient] - + [csCaptureMouse]; + DockableWindowStyles := DockableWindowStyles - [tbdsResizeEightCorner, + tbdsResizeClipCursor]; + FItem := GetItemClass.Create(Self); + FItem.ParentComponent := Self; + FChevronItem := GetChevronItemClass.Create(Self); + FChevronItem.LinkSubitems := FItem; + FChevronMoveItems := True; + FView := GetViewClass.CreateView(Self, nil, FItem, Self, True, False, + not(csDesigning in ComponentState)); + FView.BackgroundColor := clBtnFace; + FUpdateActions := True; + FShrinkMode := tbsmChevron; + FSystemFont := True; + Color := clBtnFace; + SetBounds(Left, Top, 23, 22);{} +end; + +destructor TTBCustomToolbar.Destroy; +begin + { Call Destroying to ensure csDestroying is in ComponentState now. Only + needed for Delphi 4 and earlier since Delphi 5 calls Destroying in + TComponent.BeforeDestruction } + Destroying; + UninstallHookProc(Self, HookProc); + UninstallMainWindowHook; + FreeAndNil(FView); + FreeAndNil(FChevronItem); + FreeAndNil(FItem); + inherited; +end; + +function TTBCustomToolbar.GetItems: TTBCustomItem; +begin + Result := FItem; +end; + +function TTBCustomToolbar.GetItemClass: TTBRootItemClass; +begin + Result := TTBRootItem; +end; + +function TTBCustomToolbar.GetViewClass: TTBToolbarViewClass; +begin + Result := TTBToolbarView; +end; + +function TTBCustomToolbar.GetChevronItemClass: TTBChevronItemClass; +begin + Result := TTBChevronItem; +end; + +procedure TTBCustomToolbar.CreateWrappersForAllControls; +{ Create wrappers for any controls that don't already have them } +var + L: TList; + I, J, C: Integer; +begin + if ControlCount = 0 then + Exit; + L := TList.Create; + try + L.Capacity := ControlCount; + for I := 0 to ControlCount-1 do + L.Add(Controls[I]); + C := FItem.Count-1; + for I := 0 to C do + if FItem[I] is TTBControlItem then begin + J := L.IndexOf(TTBControlItem(FItem[I]).Control); + if J <> -1 then + L[J] := nil; + end; + for I := 0 to L.Count-1 do + if Assigned(L[I]) then + CreateWrapper(FItem.Count, L[I]); + finally + L.Free; + end; +end; + +procedure TTBCustomToolbar.Loaded; +begin + CreateWrappersForAllControls; + inherited; +end; + +procedure TTBCustomToolbar.GetChildren(Proc: TGetChildProc; Root: TComponent); +begin + TTBCustomItemAccess(FItem).GetChildren(Proc, Root); + inherited; +end; + +procedure TTBCustomToolbar.SetChildOrder(Child: TComponent; Order: Integer); +begin + if Child is TTBCustomItem then + TTBCustomItemAccess(FItem).SetChildOrder(Child, Order); +end; + +procedure TTBCustomToolbar.AlignControls(AControl: TControl; var Rect: TRect); +{ VCL calls this whenever any child controls in the toolbar are moved, sized, + inserted, etc., and also when the toolbar is resized. } +begin + if FDisableAlignArrange = 0 then + Arrange; +end; + +procedure TTBCustomToolbar.InitiateAction; +begin + inherited; + {}{ also add this to popupmenu(?) } + { Update visible top-level items } + if FUpdateActions then + FView.InitiateActions; +end; + +procedure TTBCustomToolbar.CMColorChanged(var Message: TMessage); +begin + { Synchronize FView.BackgroundColor with the new color } + if Assigned(FView) then + FView.BackgroundColor := Color; + inherited; +end; + +function TTBCustomToolbar.CreateWrapper(Index: Integer; + Ctl: TControl): TTBControlItem; +var + I: Integer; + S: String; +begin + Result := TTBControlItem.CreateControlItem(Owner, Ctl); + if (csDesigning in ComponentState) and Assigned(Owner) then begin + { Needs a name for compatibility with form inheritance } + I := 1; + while True do begin + S := Format('TBControlItem%d', [I]); + if Owner.FindComponent(S) = nil then + Break; + Inc(I); + end; + Result.Name := S; + end; + FItem.Insert(Index, Result); +end; + +function TTBCustomToolbar.FindWrapper(Ctl: TControl): TTBControlItem; +var + I: Integer; + Item: TTBCustomItem; +begin + Result := nil; + for I := 0 to FItem.Count-1 do begin + Item := FItem[I]; + if (Item is TTBControlItem) and + (TTBControlItem(Item).Control = Ctl) then begin + Result := TTBControlItem(Item); + Break; + end; + end; +end; + +procedure TTBCustomToolbar.CMControlChange(var Message: TCMControlChange); +{ A CM_CONTROLCHANGE handler must be used instead of a CM_CONTROLLISTCHANGE + handler because when a CM_CONTROLLISTCHANGE message is sent it is relayed to + *all* parents. CM_CONTROLCHANGE messages are only sent to the immediate + parent. } +begin + inherited; + { Don't automatically create TTBControlItem wrappers if the component + is loading or being updated to reflect changes in an ancestor form, + because wrappers will be streamed in } + if Message.Inserting and not(csLoading in ComponentState) and + not(csUpdating in ComponentState) and + (FindWrapper(Message.Control) = nil) then + CreateWrapper(FItem.Count, Message.Control); +end; + +procedure TTBCustomToolbar.CMControlListChange(var Message: TCMControlListChange); +{ Don't handle deletions inside CM_CONTROLCHANGE because CM_CONTROLCHANGE is + sent *before* a control begins removing itself from its parent. (It used + to handle both insertions and deletions inside CM_CONTROLCHANGE but this + caused AV's.) } +var + Item: TTBControlItem; +begin + inherited; + if not Message.Inserting and Assigned(FItem) then begin + while True do begin + Item := FindWrapper(Message.Control); + if Item = nil then Break; + { The control is being removed the control, not necessarily destroyed, + so set DontFreeControl to True } + Item.DontFreeControl := True; + Item.Free; + end; + end; +end; + +procedure TTBCustomToolbar.CMHintShow(var Message: TCMHintShow); +{ Since the items on a toolbar aren't "real" controls, it needs a CM_HINTSHOW + handler for their hints to be displayed. } +var + V: TTBItemViewer; +begin + with Message.HintInfo^ do begin + HintStr := ''; + V := FView.ViewerFromPoint(CursorPos); + if Assigned(V) then begin + if not IsRectEmpty(V.BoundsRect) then begin + CursorRect := V.BoundsRect; + HintStr := V.GetHintText; + end; + end; + end; +end; + +procedure TTBCustomToolbar.CMShowHintChanged(var Message: TMessage); +begin + inherited; + if ShowHint then + FView.Style := FView.Style + [vsAlwaysShowHints] + else + FView.Style := FView.Style - [vsAlwaysShowHints]; +end; + +procedure TTBCustomToolbar.WMGetObject(var Message: TMessage); +begin + if not FView.HandleWMGetObject(Message) then + inherited; +end; + +procedure TTBCustomToolbar.WMSetCursor(var Message: TWMSetCursor); +var + P: TPoint; + Cursor: HCURSOR; + R: TRect; +begin + if not(csDesigning in ComponentState) and + (Message.CursorWnd = WindowHandle) and + (Smallint(Message.HitTest) = HTCLIENT) then begin + GetCursorPos(P); + FView.UpdateSelection(@P, True); + if Assigned(FView.Selected) then begin + Cursor := 0; + R := FView.Selected.BoundsRect; + P := ScreenToClient(P); + Dec(P.X, R.Left); + Dec(P.Y, R.Top); + TTBItemViewerAccess(FView.Selected).GetCursor(P, Cursor); + if Cursor <> 0 then begin + SetCursor(Cursor); + Message.Result := 1; + Exit; + end; + end; + end; + inherited; +end; + +procedure TTBCustomToolbar.WMSysCommand(var Message: TWMSysCommand); +var + AnsiKey: Char; +begin + if FMenuBar and Enabled and Showing then + with Message do + if (CmdType and $FFF0 = SC_KEYMENU) and (Key <> VK_SPACE) and + (GetCapture = 0) then begin + if Win32Platform = VER_PLATFORM_WIN32_NT then begin + { On Windows NT 4/2000/XP, Key is a wide character, so we have to + convert it. Pressing Alt+N in a Russian input locale, for example, + results in a Key value of $0442. + This could perhaps be considered a bug in Windows NT since the + character codes in other messages such as WM_SYSCHAR aren't left + in Unicode form. + The conversion isn't done with the system code page, but rather + with the code page of the currently active input locale, like + Windows does when sending WM_(SYS)CHAR messages. } + if WideCharToMultiByte(GetInputLocaleCodePage, 0, @WideChar(Key), 1, + @AnsiKey, 1, nil, nil) <> 1 then + Exit; { shouldn't fail, but if it does, we can't continue } + end + else begin + { On Windows 95/98/Me, Key is not a wide character. } + AnsiKey := Char(Key); + end; + if not KeyboardOpen(AnsiKey, False) then begin + if Key = Ord('-') then Exit; + MessageBeep(0); + end; + Result := 1; + end; +end; + +procedure TTBCustomToolbar.Paint; +var + R: TRect; +begin + { Draw dotted border in design mode on undocked toolbars } + if not Docked and (csDesigning in ComponentState) then + with Canvas do begin + R := ClientRect; + Pen.Style := psDot; + Pen.Color := clBtnShadow; + Brush.Style := bsClear; + Rectangle(R.Left, R.Top, R.Right, R.Bottom); + Pen.Style := psSolid; + end; + FView.DrawSubitems(Canvas); +end; + +procedure TTBCustomToolbar.CMDialogKey(var Message: TCMDialogKey); +begin + if (Message.CharCode = VK_MENU) and FMenuBar then + FView.SetAccelsVisibility(True); + inherited; +end; + +procedure TTBCustomToolbar.CMDialogChar(var Message: TCMDialogChar); +begin + { On toolbars that aren't menu bars, handle CM_DIALOGCHAR instead of + WM_SYSCOMMAND } + if not FMenuBar and Enabled and Showing and (Message.CharCode <> 0) then + if KeyboardOpen(Chr(Message.CharCode), True) then begin + Message.Result := 1; + Exit; + end; + inherited; +end; + +procedure TTBCustomToolbar.CancelHover; +begin + if not MouseCapture then + FView.UpdateSelection(nil, True); +end; + +procedure TTBCustomToolbar.CMMouseLeave(var Message: TMessage); +begin + CancelHover; + inherited; +end; + +{$IFDEF JR_D5} +procedure TTBCustomToolbar.DoContextPopup(MousePos: TPoint; + var Handled: Boolean); +begin + CancelHover; + inherited; +end; +{$ENDIF} + +{$IFNDEF JR_D5} +{ Delphi 4 and earlier don't have a DoContextPopup method; we instead have to + trap WM_RBUTTONUP to determine if a popup menu (might) be displayed } +procedure TTBCustomToolbar.WMRButtonUp(var Message: TWMRButtonUp); +begin + CancelHover; + inherited; +end; +{$ENDIF} + +procedure TTBCustomToolbar.MouseMove(Shift: TShiftState; X, Y: Integer); +var + P: TPoint; + Item: TTBCustomItem; +begin + if not(csDesigning in ComponentState) then begin + P := ClientToScreen(Point(X, Y)); + FView.UpdateSelection(@P, True); + if Assigned(FView.Selected) then begin + Item := FView.Selected.Item; + if not(tboLongHintInMenuOnly in Item.EffectiveOptions) then + Hint := Item.Hint + else + Hint := ''; + end + else + Hint := ''; + end; + { Call TrackMouseEvent to be sure that we are notified when the mouse leaves + the window. We won't get a CM_MOUSELEAVE message if the mouse moves + directly from the toolbar to another application's window } + CallTrackMouseEvent(Handle, TME_LEAVE); + inherited; +end; + +procedure TTBCustomToolbar.WMCancelMode(var Message: TWMCancelMode); +begin + inherited; + { We can receive a WM_CANCELMODE message during a modal loop if a dialog + pops up. Respond by hiding menus to make it look like the modal loop + has returned, even though it really hasn't yet. + Note: Similar code in TTBModalHandler.WndProc. } + if vsModal in FView.State then + FView.CancelMode; +end; + +procedure TTBCustomToolbar.WMMouseLeave(var Message: TMessage); +begin + { A WM_MOUSELEAVE handler is necessary because the control won't get a + CM_MOUSELEAVE message if the user presses Alt+Space. Also, CM_MOUSELEAVE + messages are also not sent if the application is in a + Application.ProcessMessages loop. } + if not FIgnoreMouseLeave then + CancelHover; + inherited; +end; + +procedure TTBCustomToolbar.WMNCMouseMove(var Message: TWMNCMouseMove); +begin + Hint := ''; + CancelHover; + inherited; +end; + +function TTBCustomToolbar.KeyboardOpen(Key: Char; + RequirePrimaryAccel: Boolean): Boolean; +var + I: TTBItemViewer; + IsOnlyItemWithAccel: Boolean; +begin + I := nil; + FView.SetAccelsVisibility(True); + try + Result := False; + if Key = #0 then begin + I := FView.FirstSelectable; + if I = nil then Exit; + FView.Selected := I; + FView.EnterToolbarLoop([]); + end + else begin + I := FView.NextSelectableWithAccel(nil, Key, RequirePrimaryAccel, + IsOnlyItemWithAccel); + if (I = nil) or not I.Item.Enabled then + Exit; + if IsOnlyItemWithAccel then begin + FView.Selected := I; + FView.EnterToolbarLoop([tbetExecuteSelected]); + end + else if FMenuBar then begin + FView.Selected := I; + FView.EnterToolbarLoop([]); + end + else + Exit; + end; + Result := True; + finally + if Assigned(I) then + FView.SetAccelsVisibility(False); + end; +end; + +procedure TTBCustomToolbar.MouseDown(Button: TMouseButton; Shift: TShiftState; + X, Y: Integer); +var + OldParent: TWinControl; + P: TPoint; + Item: TTBCustomItem; +begin + OldParent := Parent; + inherited; + if Parent <> OldParent then + { if the inherited handler (TTBDockableWindow.MouseDown) changed the Parent + (due to the toolbar moving between docks), nothing else should be done } + Exit; + if not(csDesigning in ComponentState) and (Button = mbLeft) then begin + P := ClientToScreen(Point(X, Y)); + FView.UpdateSelection(@P, True); + if Assigned(FView.Selected) then begin + Item := FView.Selected.Item; + if not(tbisClicksTransparent in TTBCustomItemAccess(Item).ItemStyle) then begin + FIgnoreMouseLeave := True; + try + FView.EnterToolbarLoop([tbetMouseDown]); + finally + FIgnoreMouseLeave := False; + end; + end; + end; + end; +end; + +procedure TTBCustomToolbar.CMFontChanged(var Message: TMessage); +begin + inherited; + if not FSystemFont then + Arrange; +end; + +function TTBCustomToolbar.GetChevronHint: String; +begin + Result := FChevronItem.Hint; +end; + +procedure TTBCustomToolbar.SetChevronHint(const Value: String); +begin + FChevronItem.Hint := Value; + FChevronItem.Caption := EscapeAmpersands(GetShortHint(Value)); +end; + +procedure TTBCustomToolbar.SetChevronMoveItems(Value: Boolean); +begin + if FChevronMoveItems <> Value then begin + FChevronMoveItems := Value; + FView.UsePriorityList := Value and not(csDesigning in ComponentState); + end; +end; + +procedure TTBCustomToolbar.SetChevronPriorityForNewItems(Value: TTBChevronPriorityForNewItems); +begin + FChevronPriorityForNewItems := Value; + FView.NewViewersGetHighestPriority := (Value = tbcpHighest); +end; + +function TTBCustomToolbar.IsChevronHintStored: Boolean; +begin + Result := (FChevronItem.Hint <> FChevronItem.GetDefaultHint); +end; + +function TTBCustomToolbar.GetImages: TCustomImageList; +begin + Result := FItem.SubMenuImages; +end; + +procedure TTBCustomToolbar.SetImages(Value: TCustomImageList); +begin + FItem.SubMenuImages := Value; +end; + +function TTBCustomToolbar.GetLinkSubitems: TTBCustomItem; +begin + Result := FItem.LinkSubitems; +end; + +procedure TTBCustomToolbar.SetLinkSubitems(Value: TTBCustomItem); +begin + FItem.LinkSubitems := Value; +end; + +procedure TTBCustomToolbar.SetMenuBar(Value: Boolean); +begin + if FMenuBar <> Value then begin + FMenuBar := Value; + if Value then begin + ControlStyle := ControlStyle + [csMenuEvents]; + FView.Style := FView.Style + [vsMenuBar, vsUseHiddenAccels]; + end + else begin + ControlStyle := ControlStyle - [csMenuEvents]; + FView.Style := FView.Style - [vsMenuBar, vsUseHiddenAccels]; + end; + if not(csLoading in ComponentState) then begin + FullSize := Value; + if Value then + ShrinkMode := tbsmWrap + else + ShrinkMode := tbsmChevron; + CloseButton := not Value; + ProcessShortCuts := Value; + end; + if Value and not(csDesigning in ComponentState) then + InstallHookProc(Self, HookProc, [hpGetMessage]) + else + UninstallHookProc(Self, HookProc); + SetMainWindowHook; + end; +end; + +function TTBCustomToolbar.GetOptions: TTBItemOptions; +begin + Result := FItem.Options; +end; + +procedure TTBCustomToolbar.SetOptions(Value: TTBItemOptions); +begin + FItem.Options := Value; +end; + +procedure TTBCustomToolbar.SetProcessShortCuts(Value: Boolean); +begin + if FProcessShortCuts <> Value then begin + FProcessShortCuts := Value; + SetMainWindowHook; + end; +end; + +procedure TTBCustomToolbar.SetSystemFont(Value: Boolean); +begin + if FSystemFont <> Value then begin + FSystemFont := Value; + Arrange; + end; +end; + +procedure TTBCustomToolbar.SetShrinkMode(Value: TTBShrinkMode); +begin + if FShrinkMode <> Value then begin + FShrinkMode := Value; + if Docked then + CurrentDock.ArrangeToolbars + else if not Floating then + Arrange; + end; +end; + +procedure TTBCustomToolbar.SetFloatingWidth(Value: Integer); +begin + if FFloatingWidth <> Value then begin + FFloatingWidth := Value; + if Floating then begin + UpdateViewProperties; + Arrange; + end; + end; +end; + +function TTBCustomToolbar.CalcWrapOffset(const ADock: TTBDock): Integer; +begin + if ADock = nil then + Result := FFloatingWidth + else begin + if FShrinkMode = tbsmWrap then begin + if not(ADock.Position in [dpLeft, dpRight]) then + Result := ADock.Width - ADock.NonClientWidth - NonClientWidth + else + Result := ADock.Height - ADock.NonClientHeight - NonClientHeight; + end + else + Result := 0; + end; +end; + +function TTBCustomToolbar.CalcChevronOffset(const ADock: TTBDock; + const AOrientation: TTBViewOrientation): Integer; +begin + if (FShrinkMode = tbsmChevron) and Docked and (ADock = CurrentDock) then begin + Result := CurrentSize; + { Subtract non-client size } + if AOrientation <> tbvoVertical then + Dec(Result, NonClientWidth) + else + Dec(Result, NonClientHeight); + if Result < 0 then + Result := 0; { in case CurrentSize wasn't properly initialized yet } + end + else + Result := 0; +end; + +procedure TTBCustomToolbar.UpdateViewProperties; +var + DT: TTBDockType; +begin + DT := TBGetDockTypeOf(CurrentDock, Floating); + FView.Orientation := DockTypeToOrientation[DT]; + FView.ChevronSize := tbChevronSize; + if Assigned(CurrentDock) or Floating then begin + FView.ChevronOffset := CalcChevronOffset(CurrentDock, FView.Orientation); + FView.WrapOffset := CalcWrapOffset(CurrentDock); + end + else begin + FView.ChevronOffset := 0; + FView.WrapOffset := 0; + { Only enable chevron/wrapping when the width of the toolbar is fixed } + if not AutoResize or ((akLeft in Anchors) and (akRight in Anchors)) then begin + if FShrinkMode = tbsmChevron then + FView.ChevronOffset := Width - NonClientWidth + else if FShrinkMode = tbsmWrap then + FView.WrapOffset := Width - NonClientWidth; + end; + end; +end; + +{}{DOCKING STUFF} + +procedure TTBCustomToolbar.ReadPositionData(const Data: TTBReadPositionData); +begin + inherited; + with Data do + FloatingWidth := ReadIntProc(Name, rvFloatRightX, 0, ExtraData); +end; + +procedure TTBCustomToolbar.WritePositionData(const Data: TTBWritePositionData); +begin + inherited; + with Data do + WriteIntProc(Name, rvFloatRightX, FFloatingWidth, ExtraData); +end; + +procedure TTBCustomToolbar.GetMinBarSize(var MinimumSize: TPoint); +var + WH: Integer; +begin + MinimumSize.X := 0; + MinimumSize.Y := 0; + if Docked then begin + WH := CurrentDock.GetMinRowSize(EffectiveDockRow, Self); + if not(CurrentDock.Position in [dpLeft, dpRight]) then + MinimumSize.Y := WH + else + MinimumSize.X := WH; + end; +end; + +procedure TTBCustomToolbar.GetBaseSize(var ASize: TPoint); +begin + FView.ValidatePositions; + ASize := FBaseSize; +end; + +function TTBCustomToolbar.DoArrange(CanMoveControls: Boolean; + PreviousDockType: TTBDockType; NewFloating: Boolean; NewDock: TTBDock): TPoint; +var + DT: TTBDockType; + O: TTBViewOrientation; + TempBaseSize: TPoint; +begin + //outputdebugstring (pchar(format('%s.DoArrange(%d)', [Name, Ord(CanMoveControls)]))); + if CanMoveControls then begin + UpdateViewProperties; + Result := FView.UpdatePositions; + end + else begin + DT := TBGetDockTypeOf(NewDock, NewFloating); + O := DockTypeToOrientation[DT]; + Result.X := 0; + Result.Y := 0; + FView.CalculatePositions(False, O, CalcWrapOffset(NewDock), + CalcChevronOffset(NewDock, O), tbChevronSize, TempBaseSize, Result, + FLastWrappedLines); + end; +end; + +procedure TTBCustomToolbar.ControlExistsAtPos(const P: TPoint; + var ControlExists: Boolean); +var + P2: TPoint; +begin + inherited; + if not ControlExists and not(csDesigning in ComponentState) then begin + P2 := ClientToScreen(P); + FView.UpdateSelection(@P2, True); + if Assigned(FView.Selected) and + not(tbisClicksTransparent in TTBCustomItemAccess(FView.Selected.Item).ItemStyle) then + ControlExists := True; + end; +end; + +procedure TTBCustomToolbar.BuildPotentialSizesList(SizesList: TList); +var + Margins: TRect; + MinX, SaveWrapX: Integer; + X, PrevWrappedLines: Integer; + S: TPoint; + S2: TSmallPoint; +begin + View.GetMargins(tbvoFloating, Margins); + MinX := Margins.Left + Margins.Right; + SaveWrapX := FFloatingWidth; + try + { Add the widest size to the list } + FFloatingWidth := 0; + S := DoArrange(False, dtNotDocked, True, nil); + SizesList.Add(Pointer(PointToSmallPoint(S))); + { Calculate and add rest of sizes to the list } + PrevWrappedLines := 1; + X := S.X-1; + while X >= MinX do begin + FFloatingWidth := X; + S := DoArrange(False, dtNotDocked, True, nil); + if S.X > X then { if it refuses to go any smaller } + Break + else + if X = S.X then begin + S2 := PointToSmallPoint(S); + if FLastWrappedLines <> PrevWrappedLines then + SizesList.Add(Pointer(S2)) + else + SizesList[SizesList.Count-1] := Pointer(S2); + PrevWrappedLines := FLastWrappedLines; + Dec(X); + end + else + X := S.X; + end; + finally + FFloatingWidth := SaveWrapX; + end; +end; + +function CompareNewSizes(const Item1, Item2, ExtraData: Pointer): Integer; far; +begin + { Sorts in descending order } + if ExtraData = nil then + Result := TSmallPoint(Item2).X - TSmallPoint(Item1).X + else + Result := TSmallPoint(Item2).Y - TSmallPoint(Item1).Y; +end; + +procedure TTBCustomToolbar.ResizeBegin(ASizeHandle: TTBSizeHandle); +const + MaxSizeSens = 12; +var + I, NewSize: Integer; + S, N: TSmallPoint; + P: TPoint; +begin + inherited; + + FSizeData := AllocMem(SizeOf(TToolbar97SizeData)); + + with PToolbar97SizeData(FSizeData)^ do begin + SizeHandle := ASizeHandle; + OrigLeft := Parent.Left; + OrigTop := Parent.Top; + OrigWidth := Parent.Width; + OrigHeight := Parent.Height; + NCXDiff := ClientToScreen(Point(0, 0)).X - OrigLeft; + CurRightX := FFloatingWidth; + DisableSensCheck := False; + OpSide := False; + + NewSizes := TList.Create; + BuildPotentialSizesList(NewSizes); + for I := 0 to NewSizes.Count-1 do begin + P := SmallPointToPoint(TSmallPoint(NewSizes.List[I])); + AddFloatingNCAreaToSize(P); + NewSizes.List[I] := Pointer(PointToSmallPoint(P)); + end; + ListSortEx(NewSizes, CompareNewSizes, + Pointer(Ord(ASizeHandle in [twshTop, twshBottom]))); + + SizeSens := MaxSizeSens; + { Adjust sensitivity if it's too high } + for I := 0 to NewSizes.Count-1 do begin + Pointer(S) := NewSizes[I]; + if (S.X = Width) and (S.Y = Height) then begin + if I > 0 then begin + Pointer(N) := NewSizes[I-1]; + if ASizeHandle in [twshLeft, twshRight] then + NewSize := N.X - S.X - 1 + else + NewSize := N.Y - S.Y - 1; + if NewSize < SizeSens then SizeSens := NewSize; + end; + if I < NewSizes.Count-1 then begin + Pointer(N) := NewSizes[I+1]; + if ASizeHandle in [twshLeft, twshRight] then + NewSize := S.X - N.X - 1 + else + NewSize := S.Y - N.Y - 1; + if NewSize < SizeSens then SizeSens := NewSize; + end; + Break; + end; + end; + if SizeSens < 0 then SizeSens := 0; + end; +end; + +procedure TTBCustomToolbar.ResizeTrack(var Rect: TRect; const OrigRect: TRect); +var + Pos: TPoint; + NewOpSide: Boolean; + Reverse: Boolean; + I: Integer; + P: TSmallPoint; +begin + inherited; + + with PToolbar97SizeData(FSizeData)^ do begin + GetCursorPos(Pos); + + Dec(Pos.X, OrigLeft); Dec(Pos.Y, OrigTop); + if SizeHandle = twshLeft then + Pos.X := OrigWidth-Pos.X + else + if SizeHandle = twshTop then + Pos.Y := OrigHeight-Pos.Y; + + { Adjust Pos to make up for the "sizing sensitivity", as seen in Office 97 } + if SizeHandle in [twshLeft, twshRight] then + NewOpSide := Pos.X < OrigWidth + else + NewOpSide := Pos.Y < OrigHeight; + if (not DisableSensCheck) or (OpSide <> NewOpSide) then begin + DisableSensCheck := False; + OpSide := NewOpSide; + if SizeHandle in [twshLeft, twshRight] then begin + if (Pos.X >= OrigWidth-SizeSens) and (Pos.X < OrigWidth+SizeSens) then + Pos.X := OrigWidth; + end + else begin + if (Pos.Y >= OrigHeight-SizeSens) and (Pos.Y < OrigHeight+SizeSens) then + Pos.Y := OrigHeight; + end; + end; + + Rect := OrigRect; + + if SizeHandle in [twshLeft, twshRight] then + Reverse := Pos.X > OrigWidth + else + Reverse := Pos.Y > OrigHeight; + if not Reverse then + I := NewSizes.Count-1 + else + I := 0; + while True do begin + if (not Reverse and (I < 0)) or + (Reverse and (I >= NewSizes.Count)) then + Break; + Pointer(P) := NewSizes[I]; + if SizeHandle in [twshLeft, twshRight] then begin + if (not Reverse and ((I = NewSizes.Count-1) or (Pos.X >= P.X))) or + (Reverse and ((I = 0) or (Pos.X < P.X))) then begin + if I = 0 then + CurRightX := 0 + else + CurRightX := P.X - NCXDiff*2; + if SizeHandle = twshRight then + Rect.Right := Rect.Left + P.X + else + Rect.Left := Rect.Right - P.X; + Rect.Bottom := Rect.Top + P.Y; + DisableSensCheck := not EqualRect(Rect, OrigRect); + end; + end + else begin + if (not Reverse and ((I = NewSizes.Count-1) or (Pos.Y >= P.Y))) or + (Reverse and ((I = 0) or (Pos.Y < P.Y))) then begin + if I = NewSizes.Count-1 then + CurRightX := 0 + else + CurRightX := P.X - NCXDiff*2; + if SizeHandle = twshBottom then + Rect.Bottom := Rect.Top + P.Y + else + Rect.Top := Rect.Bottom - P.Y; + Rect.Right := Rect.Left + P.X; + DisableSensCheck := not EqualRect(Rect, OrigRect); + end; + end; + if not Reverse then + Dec(I) + else + Inc(I); + end; + end; +end; + +procedure TTBCustomToolbar.ResizeTrackAccept; +begin + inherited; + FloatingWidth := PToolbar97SizeData(FSizeData)^.CurRightX; +end; + +procedure TTBCustomToolbar.ResizeEnd; +begin + inherited; + if Assigned(FSizeData) then begin + PToolbar97SizeData(FSizeData)^.NewSizes.Free; + FreeMem(FSizeData); + FSizeData := nil; + end; +end; + +function TTBCustomToolbar.GetShrinkMode: TTBShrinkMode; +begin + Result := FShrinkMode; +end; + +procedure TTBCustomToolbar.GetMinShrinkSize(var AMinimumSize: Integer); +var + I: TTBItemViewer; +begin + I := FView.HighestPriorityViewer; + if Assigned(I) then begin + if not(CurrentDock.Position in [dpLeft, dpRight]) then + AMinimumSize := I.BoundsRect.Right - I.BoundsRect.Left + else + AMinimumSize := I.BoundsRect.Bottom - I.BoundsRect.Top; + end; + if not(CurrentDock.Position in [dpLeft, dpRight]) then + Inc(AMinimumSize, NonClientWidth) + else + Inc(AMinimumSize, NonClientHeight); + Inc(AMinimumSize, tbChevronSize); +end; + +procedure TTBCustomToolbar.BeginUpdate; +begin + FView.BeginUpdate; +end; + +procedure TTBCustomToolbar.EndUpdate; +begin + FView.EndUpdate; +end; + +procedure TTBCustomToolbar.GetTabOrderList(List: TList); +var + CtlList: TList; + I, J: Integer; + CtlI, CtlJ: TWinControl; +begin + inherited; + { Remove off-edge items and their children from List } + CtlList := TList.Create; + try + FView.GetOffEdgeControlList(CtlList); + for I := 0 to CtlList.Count-1 do begin + CtlI := CtlList[I]; + J := 0; + while J < List.Count do begin + CtlJ := List[J]; + if (CtlJ = CtlI) or CtlI.ContainsControl(CtlJ) then + List.Delete(J) + else + Inc(J); + end; + end; + finally + CtlList.Free; + end; +end; + +procedure TTBCustomToolbar.CMWinIniChange(var Message: TWMSettingChange); +begin + inherited; + if Message.Flag = SPI_SETNONCLIENTMETRICS then begin + TBInitToolbarSystemFont; + Arrange; + end; +end; + +function TTBCustomToolbar.IsShortCut(var Message: TWMKey): Boolean; +begin + Result := False; + if Assigned(FOnShortCut) then + FOnShortCut(Message, Result); + Result := Result or FItem.IsShortCut(Message); +end; + +var + HookCount: Integer; + HookList: TList; + +class function TTBCustomToolbar.MainWindowHook(var Message: TMessage): Boolean; + + function GetActiveForm: TCustomForm; + var + Wnd: HWND; + Ctl: TWinControl; + begin + { Note: We don't use Screen.ActiveCustomForm because when an EXE calls a + DLL that shows a modal form, Screen.ActiveCustomForm doesn't change in + the EXE; it remains set to the last form that was active in the EXE. + Use FindControl(GetActiveWindow) instead to avoid this problem; it will + return nil when a form in another module is active. } + Result := nil; + Wnd := GetActiveWindow; + if Wnd <> 0 then begin + Ctl := FindControl(Wnd); + if Assigned(Ctl) and (Ctl is TCustomForm) then + Result := TCustomForm(Ctl); + end; + end; + + function HandleShortCutOnForm(const Form: TCustomForm): Boolean; + var + I: Integer; + Toolbar: TTBCustomToolbar; + begin + Result := False; + if Form = nil then + Exit; + for I := 0 to HookList.Count-1 do begin + Toolbar := HookList[I]; + if Toolbar.ProcessShortCuts and + (TBGetToolWindowParentForm(Toolbar) = Form) and + IsWindowEnabled(Form.Handle) and + Toolbar.IsShortCut(TWMKey(Message)) then begin + Message.Result := 1; + Result := True; + Exit; + end; + end; + end; + + function TraverseControls(Container: TWinControl): Boolean; + var + I: Integer; + Control: TControl; + begin + Result := False; + if Container.Showing then + for I := 0 to Container.ControlCount - 1 do begin + Control := Container.Controls[I]; + if Control.Visible and Control.Enabled then begin + if (csMenuEvents in Control.ControlStyle) and + ((Control is TTBDock) or (Control is TTBCustomToolbar)) and + (Control.Perform(WM_SYSCOMMAND, TMessage(Message).WParam, + TMessage(Message).LParam) <> 0) or (Control is TWinControl) and + TraverseControls(TWinControl(Control)) then begin + Result := True; + Exit; + end; + end; + end; + end; + +var + ActiveForm: TCustomForm; + ActiveMDIChild: TForm; +begin + Result := False; + if (Message.Msg = CM_APPKEYDOWN) and Assigned(HookList) then begin + { Process shortcuts on toolbars. Search forms in this order: + 1. If the active form is an MDI parent form, the active MDI child form + if it has the focus. + 2. The active form. + 3. The main form. } + ActiveForm := GetActiveForm; + if Assigned(ActiveForm) and (ActiveForm is TForm) and + (TForm(ActiveForm).FormStyle = fsMDIForm) then begin + ActiveMDIChild := TForm(ActiveForm).ActiveMDIChild; + { Don't search the child form if a control on the MDI parent form is + currently focused (i.e. Screen.ActiveCustomForm <> ActiveMDIChild) } + if Assigned(ActiveMDIChild) and + (Screen.ActiveCustomForm = ActiveMDIChild) and + HandleShortCutOnForm(ActiveMDIChild) then begin + Result := True; + Exit; + end; + end; + if HandleShortCutOnForm(ActiveForm) then + Result := True + else begin + if (Application.MainForm <> ActiveForm) and + HandleShortCutOnForm(Application.MainForm) then + Result := True; + end; + end + else if Message.Msg = CM_APPSYSCOMMAND then begin + { Handle "Alt or Alt+[key] pressed on secondary form" case. If there's a + menu bar on the active form we want the keypress to go to it instead of + to the main form (the VCL's default handling). } + ActiveForm := GetActiveForm; + if Assigned(ActiveForm) and IsWindowEnabled(ActiveForm.Handle) and + IsWindowVisible(ActiveForm.Handle) and TraverseControls(ActiveForm) then begin + Message.Result := 1; + Result := True; + end; + end; +end; + +procedure TTBCustomToolbar.SetMainWindowHook; +begin + if (ProcessShortCuts or MenuBar) and not(csDesigning in ComponentState) then + InstallMainWindowHook + else + UninstallMainWindowHook; +end; + +procedure TTBCustomToolbar.InstallMainWindowHook; +begin + if FMainWindowHookInstalled then + Exit; + if HookCount = 0 then + Application.HookMainWindow(MainWindowHook); + Inc(HookCount); + AddToList(HookList, Self); + FMainWindowHookInstalled := True; +end; + +procedure TTBCustomToolbar.UninstallMainWindowHook; +begin + if not FMainWindowHookInstalled then + Exit; + FMainWindowHookInstalled := False; + RemoveFromList(HookList, Self); + Dec(HookCount); + if HookCount = 0 then + Application.UnhookMainWindow(MainWindowHook); +end; + +end. diff --git a/official/2.1.6+2.1.beta1/Source/TB2Ver.inc b/official/2.1.6+2.1.beta1/Source/TB2Ver.inc new file mode 100644 index 0000000..720ea8d --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2Ver.inc @@ -0,0 +1,37 @@ +{ $jrsoftware: tb2k/Source/TB2Ver.inc,v 1.5 2004/12/19 21:57:34 jr Exp $ } + +{ Determine Delphi/C++Builder version } +{$IFNDEF WIN32} Delphi 1 is not supported. {$ENDIF} +{$IFNDEF VER90} { if it's not Delphi 2.0 } + {$IFNDEF VER93} { and it's not C++Builder 1.0 } + {$DEFINE JR_D3} { then it must be at least Delphi 3 or C++Builder 3 } + {$IFNDEF VER100} { if it's not Delphi 3.0 } + {$IFNDEF VER120} { Delphi 4/5's command line compiler doesn't like the ObjExportAll directive, so don't include it on Delphi 4/5 } + {$IFNDEF VER130} + {$ObjExportAll On} { <- needed for compatibility with run-time packages in C++Builder 3+ } + {$ENDIF} + {$ENDIF} + {$IFNDEF VER110} { and it's not C++Builder 3.0 } + {$DEFINE JR_D4} { then it must be at least Delphi 4 or C++Builder 4 } + {$IFNDEF VER120} {$IFNDEF VER125} { if it's not Delphi 4 or C++Builder 4 } + {$DEFINE JR_D5} { then it must be at least Delphi 5 or C++Builder 5 } + {$IFNDEF VER130} { if it's not Delphi 5 or C++Builder 5 } + {$DEFINE JR_D6} { then it must be at least Delphi 6 or C++Builder 6 } + {$IFNDEF VER140} { if it's not Delphi 6 or C++Builder 6 } + {$DEFINE JR_D7} { then it must be at least Delphi 7 } + {$IFNDEF VER150} { if it's not Delphi 7 } + {$DEFINE JR_D9} { then it must be at least Delphi 9 (2005) } + {$ENDIF} + {$ENDIF} + {$ENDIF} + {$ENDIF} {$ENDIF} + {$ENDIF} + {$ENDIF} + {$ENDIF} +{$ENDIF} + +{$ALIGN ON} +{$BOOLEVAL OFF} +{$LONGSTRINGS ON} +{$TYPEDADDRESS OFF} +{$WRITEABLECONST ON} diff --git a/official/2.1.6+2.1.beta1/Source/TB2Version.pas b/official/2.1.6+2.1.beta1/Source/TB2Version.pas new file mode 100644 index 0000000..0ca7ffb --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/TB2Version.pas @@ -0,0 +1,55 @@ +unit TB2Version; + +{ + Toolbar2000 + Copyright (C) 1998-2005 by Jordan Russell + All rights reserved. + + The contents of this file are subject to the "Toolbar2000 License"; you may + not use or distribute this file except in compliance with the + "Toolbar2000 License". A copy of the "Toolbar2000 License" may be found in + TB2k-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/TB2k-LICENSE.txt + + Alternatively, the contents of this file may be used under the terms of the + GNU General Public License (the "GPL"), in which case the provisions of the + GPL are applicable instead of those in the "Toolbar2000 License". A copy of + the GPL may be found in GPL-LICENSE.txt or at: + http://www.jrsoftware.org/files/tb2k/GPL-LICENSE.txt + If you wish to allow use of your version of this file only under the terms of + the GPL and not to allow others to use your version of this file under the + "Toolbar2000 License", indicate your decision by deleting the provisions + above and replace them with the notice and other provisions required by the + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + + $jrsoftware: tb2k/Source/TB2Version.pas,v 1.61 2005/07/30 18:34:13 jr Exp $ +} + +interface + +{$I TB2Ver.inc} + +const + Toolbar2000Version = '2.1.6'; + Toolbar2000VersionPropText = 'Toolbar2000 version ' + Toolbar2000Version; + +type + TToolbar2000Version = type string; + +const + Sig: PChar = '- ' + Toolbar2000VersionPropText + + {$IFDEF VER90} '/D2'+ {$ENDIF} {$IFDEF VER93} '/CB1'+ {$ENDIF} + {$IFDEF VER100} '/D3'+ {$ENDIF} {$IFDEF VER110} '/CB3'+ {$ENDIF} + {$IFDEF VER120} '/D4'+ {$ENDIF} {$IFDEF VER125} '/CB4'+ {$ENDIF} + {$IFNDEF BCB} {$IFDEF VER130} '/D5'+ {$ENDIF} {$ELSE} {$IFDEF VER130} '/CB5'+ {$ENDIF} {$ENDIF} + {$IFNDEF BCB} {$IFDEF VER140} '/D6'+ {$ENDIF} {$ELSE} {$IFDEF VER140} '/CB6'+ {$ENDIF} {$ENDIF} + {$IFNDEF BCB} {$IFDEF VER150} '/D7'+ {$ENDIF} {$ELSE} {$IFDEF VER150} '/CB7'+ {$ENDIF} {$ENDIF} + {$IFNDEF BCB} {$IFDEF VER170} '/D9'+ {$ENDIF} {$ELSE} {$IFDEF VER170} '/CB9'+ {$ENDIF} {$ENDIF} + ', Copyright (C) 1998-2005 by Jordan Russell -'; + +implementation + +initialization + Sig := Sig; +end. diff --git a/official/2.1.6+2.1.beta1/Source/_cvs_patch-2_1_4.bat b/official/2.1.6+2.1.beta1/Source/_cvs_patch-2_1_4.bat new file mode 100644 index 0000000..ff38eca --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/_cvs_patch-2_1_4.bat @@ -0,0 +1 @@ +patch -p0 --backup < _cvs_patch-2_1_4.diff diff --git a/official/2.1.6+2.1.beta1/Source/_cvs_patch-2_1_4.diff b/official/2.1.6+2.1.beta1/Source/_cvs_patch-2_1_4.diff new file mode 100644 index 0000000..49460d7 --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/_cvs_patch-2_1_4.diff @@ -0,0 +1,1441 @@ +Index: TB2Common.pas +=================================================================== +RCS file: /data/cvs/tb2k/Source/TB2Common.pas,v +retrieving revision 1.28 +diff -u -r1.28 TB2Common.pas +--- TB2Common.pas 26 Feb 2004 07:05:57 -0000 1.28 ++++ TB2Common.pas 29 May 2004 22:19:14 -0000 +@@ -868,40 +868,82 @@ + procedure DrawRotatedText(const DC: HDC; AText: String; const ARect: TRect; + const AFormat: Cardinal); + { Like DrawText, but draws the text at a 270 degree angle. +- The only format flag this function respects is DT_HIDEPREFIX. Text is always +- drawn centered. } ++ The format flag this function respects are ++ DT_NOPREFIX, DT_HIDEPREFIX, DT_CENTER, DT_END_ELLIPSIS, DT_NOCLIP } + var + RotatedFont, SaveFont: HFONT; + TextMetrics: TTextMetric; +- X, Y, P, I, SU, FU: Integer; ++ X, Y, P, I, SU, FU, W: Integer; + SaveAlign: UINT; + SavePen, Pen: HPEN; ++ Clip: Boolean; ++ ++ function GetSize(DC: HDC; const S: string): Integer; ++ var ++ Size: TSize; ++ begin ++ GetTextExtentPoint32(DC, PChar(S), Length(S), Size); ++ Result := Size.cx; ++ end; ++ + begin ++ if Length(AText) = 0 then Exit; ++ + RotatedFont := CreateRotatedFont(DC); + SaveFont := SelectObject(DC, RotatedFont); + + GetTextMetrics(DC, TextMetrics); + X := ARect.Left + ((ARect.Right - ARect.Left) - TextMetrics.tmHeight) div 2; +- Y := ARect.Top + ((ARect.Bottom - ARect.Top) - GetTextWidth(DC, AText, True)) div 2; ++ ++ Clip := (AFormat and DT_NOCLIP) <> DT_NOCLIP; + + { Find the index of the character that should be underlined. Delete '&' + characters from the string. Like DrawText, only the last prefixed character + will be underlined. } + P := 0; + I := 1; +- while I <= Length(AText) do begin +- if AText[I] in LeadBytes then +- Inc(I) +- else if AText[I] = '&' then begin +- Delete(AText, I, 1); +- { Note: PChar cast is so that if Delete deleted the last character in +- the string, we don't step past the end of the string (which would cause +- an AV if AText is now empty), but rather look at the null character +- and treat it as an accelerator key like DrawText. } +- if PChar(AText)[I-1] <> '&' then +- P := I; ++ if (AFormat and DT_NOPREFIX) <> DT_NOPREFIX then ++ while I <= Length(AText) do begin ++ if AText[I] in LeadBytes then ++ Inc(I) ++ else if AText[I] = '&' then begin ++ Delete(AText, I, 1); ++ { Note: PChar cast is so that if Delete deleted the last character in ++ the string, we don't step past the end of the string (which would cause ++ an AV if AText is now empty), but rather look at the null character ++ and treat it as an accelerator key like DrawText. } ++ if PChar(AText)[I-1] <> '&' then ++ P := I; ++ end; ++ Inc(I); ++ end; ++ ++ if (AFormat and DT_END_ELLIPSIS) = DT_END_ELLIPSIS then ++ begin ++ if (Length(AText) > 1) and (GetSize(DC, AText) > ARect.Bottom - ARect.Top) then ++ begin ++ W := ARect.Bottom - ARect.Top; ++ if W > 2 then ++ begin ++ Delete(AText, Length(AText), 1); ++ while (Length(AText) > 1) and (GetSize(DC, AText + '...') > W) do ++ Delete(AText, Length(AText), 1); ++ end ++ else AText := AText[1]; ++ if P > Length(AText) then P := 0; ++ AText := AText + '...'; + end; +- Inc(I); ++ end; ++ ++ if (AFormat and DT_CENTER) = DT_CENTER then ++ Y := ARect.Top + ((ARect.Bottom - ARect.Top) - GetSize(DC, AText)) div 2 ++ else ++ Y := ARect.Top; ++ ++ if Clip then ++ begin ++ SaveDC(DC); ++ with ARect do IntersectClipRect(DC, Left, Top, Right, Bottom); + end; + + SaveAlign := SetTextAlign(DC, TA_BOTTOM); +@@ -920,6 +962,8 @@ + DeleteObject(Pen); + end; + ++ if Clip then RestoreDC(DC, -1); ++ + SelectObject(DC, SaveFont); + DeleteObject(RotatedFont); + end; +Index: TB2Dock.pas +=================================================================== +RCS file: /data/cvs/tb2k/Source/TB2Dock.pas,v +retrieving revision 1.88 +diff -u -r1.88 TB2Dock.pas +--- TB2Dock.pas 26 Feb 2004 07:05:57 -0000 1.88 ++++ TB2Dock.pas 29 May 2004 22:19:14 -0000 +@@ -82,9 +82,6 @@ + FDisableArrangeToolbars: Integer; { Increment to disable ArrangeToolbars } + FArrangeToolbarsNeeded: Boolean; + FNonClientWidth, FNonClientHeight: Integer; +- DockList: TList; { List of the toolbars docked, and those floating and have LastDock +- pointing to the dock. Items are casted in TTBCustomDockableWindow's. } +- DockVisibleList: TList; { Similar to DockList, but lists only docked and visible toolbars } + + { Property access methods } + //function GetVersion: TToolbar97Version; +@@ -102,14 +99,11 @@ + { Internal } + procedure BackgroundChanged(Sender: TObject); + procedure ChangeDockList(const Insert: Boolean; const Bar: TTBCustomDockableWindow); +- procedure ChangeWidthHeight(const NewWidth, NewHeight: Integer); + procedure CommitPositions; + procedure DrawNCArea(const DrawToDC: Boolean; const ADC: HDC; + const Clip: HRGN); + function GetDesignModeRowOf(const XY: Integer): Integer; +- function HasVisibleToolbars: Boolean; + procedure RelayMsgToFloatingBars(var Message: TMessage); +- function ToolbarVisibleOnDock(const AToolbar: TTBCustomDockableWindow): Boolean; + procedure ToolbarVisibilityChanged(const Bar: TTBCustomDockableWindow; + const ForceRemove: Boolean); + +@@ -128,21 +122,30 @@ + procedure WMPrintClient(var Message: TMessage); message WM_PRINTCLIENT; + procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND; + protected ++ DockList: TList; { List of the toolbars docked, and those floating and have LastDock ++ pointing to the dock. Items are casted in TTBCustomDockableWindow's. } ++ DockVisibleList: TList; { Similar to DockList, but lists only docked and visible toolbars } ++ function Accepts(ADockableWindow: TTBCustomDockableWindow): Boolean; virtual; + procedure AlignControls(AControl: TControl; var Rect: TRect); override; ++ procedure ChangeWidthHeight(const NewWidth, NewHeight: Integer); + procedure DrawBackground(DC: HDC; const DrawRect: TRect); virtual; + function GetPalette: HPALETTE; override; ++ function HasVisibleToolbars: Boolean; + procedure InvalidateBackgrounds; + procedure Loaded; override; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure SetParent(AParent: TWinControl); override; ++ function ToolbarVisibleOnDock(const AToolbar: TTBCustomDockableWindow): Boolean; + procedure Paint; override; + function UsingBackground: Boolean; virtual; ++ property ArrangeToolbarsNeeded: Boolean read FArrangeToolbarsNeeded write FArrangeToolbarsNeeded; ++ property DisableArrangeToolbars: Integer read FDisableArrangeToolbars write FDisableArrangeToolbars; + public + constructor Create(AOwner: TComponent); override; + procedure CreateParams(var Params: TCreateParams); override; + destructor Destroy; override; + +- procedure ArrangeToolbars; ++ procedure ArrangeToolbars; virtual; + procedure BeginUpdate; + procedure EndUpdate; + function GetCurrentRowSize(const Row: Integer; var AFullSize: Boolean): Integer; +@@ -266,6 +269,7 @@ + private + { Property variables } + FAutoResize: Boolean; ++ FDblClickUndock: Boolean; + FDockPos, FDockRow, FEffectiveDockPos, FEffectiveDockRow: Integer; + FDocked: Boolean; + FCurrentDock, FDefaultDock, FLastDock: TTBDock; +@@ -427,6 +431,7 @@ + { Methods accessible to descendants } + procedure Arrange; + function CalcNCSizes: TPoint; virtual; ++ function CanDockTo(ADock: TTBDock): Boolean; virtual; + procedure ChangeSize(AWidth, AHeight: Integer); + function ChildControlTransparent(Ctl: TControl): Boolean; dynamic; + procedure Close; +@@ -451,7 +456,10 @@ + procedure ResizeTrack(var Rect: TRect; const OrigRect: TRect); dynamic; + procedure ResizeTrackAccept; dynamic; + procedure SizeChanging(const AWidth, AHeight: Integer); virtual; ++ property EffectiveDockPosAccess: Integer read FEffectiveDockPos write FEffectiveDockPos; ++ property EffectiveDockRowAccess: Integer read FEffectiveDockRow write FEffectiveDockRow; + public ++ property DblClickUndock: Boolean read FDblClickUndock write FDblClickUndock default True; + property Docked: Boolean read FDocked; + property CurrentDock: TTBDock read FCurrentDock write SetCurrentDock stored False; + property CurrentSize: Integer read FCurrentSize write FCurrentSize; +@@ -1000,6 +1008,11 @@ + end; + end; + ++function TTBDock.Accepts(ADockableWindow: TTBCustomDockableWindow): Boolean; ++begin ++ Result := AllowDrag; ++end; ++ + procedure TTBDock.AlignControls(AControl: TControl; var Rect: TRect); + begin + ArrangeToolbars; +@@ -2494,6 +2507,7 @@ + FActivateParent := True; + FBorderStyle := bsSingle; + FCloseButton := True; ++ FDblClickUndock := True; + FDockableTo := [dpTop, dpBottom, dpLeft, dpRight]; + FDockableWindowStyles := [tbdsResizeEightCorner, tbdsResizeClipCursor]; + FDockPos := -1; +@@ -2911,6 +2925,11 @@ + RemoveFromList(FDockForms, Form); + end; + ++function TTBCustomDockableWindow.CanDockTo(ADock: TTBDock): Boolean; ++begin ++ Result := ADock.Position in DockableTo; ++end; ++ + function TTBCustomDockableWindow.IsAutoResized: Boolean; + begin + Result := AutoResize or Assigned(CurrentDock) or Floating; +@@ -3879,11 +3898,6 @@ + + procedure BuildDockList; + +- function AcceptableDock(const D: TTBDock): Boolean; +- begin +- Result := D.FAllowDrag and (D.Position in DockableTo); +- end; +- + procedure Recurse(const ParentCtl: TWinControl); + var + D: TTBDockPosition; +@@ -3900,7 +3914,7 @@ + if (Controls[I] is TWinControl) and not(Controls[I] is TTBDock) then + Recurse(TWinControl(Controls[I])); + end; +- if (ParentCtl is TTBDock) and AcceptableDock(TTBDock(ParentCtl)) and ++ if (ParentCtl is TTBDock) and TTBDock(ParentCtl).Accepts(Self) and CanDockTo(TTBDock(ParentCtl)) and + (DockList.IndexOf(ParentCtl) = -1) then + DockList.Add(ParentCtl); + end; +@@ -3912,7 +3926,7 @@ + begin + { Manually add CurrentDock to the DockList first so that it gets priority + over other docks } +- if Assigned(CurrentDock) and AcceptableDock(CurrentDock) then ++ if Assigned(CurrentDock) and CurrentDock.Accepts(Self) and CanDockTo(CurrentDock) then + DockList.Add(CurrentDock); + ParentForm := TBGetToolWindowParentForm(Self); + DockFormsList := TList.Create; +@@ -4201,19 +4215,20 @@ + procedure TTBCustomDockableWindow.DoubleClick; + begin + if Docked then begin +- if DockMode = dmCanFloat then begin ++ if DblClickUndock and (DockMode = dmCanFloat) then begin + Floating := True; + MoveOnScreen(True); + end; + end +- else +- if Assigned(LastDock) then +- Parent := LastDock +- else +- if Assigned(DefaultDock) then begin +- FDockRow := ForceDockAtTopRow; +- FDockPos := ForceDockAtLeftPos; +- Parent := DefaultDock; ++ else if Floating then begin ++ if Assigned(LastDock) then ++ Parent := LastDock ++ else ++ if Assigned(DefaultDock) then begin ++ FDockRow := ForceDockAtTopRow; ++ FDockPos := ForceDockAtLeftPos; ++ Parent := DefaultDock; ++ end; + end; + end; + +Index: TB2DsgnItemEditor.pas +=================================================================== +RCS file: /data/cvs/tb2k/Source/TB2DsgnItemEditor.pas,v +retrieving revision 1.52 +diff -u -r1.52 TB2DsgnItemEditor.pas +--- TB2DsgnItemEditor.pas 26 Feb 2004 07:05:57 -0000 1.52 ++++ TB2DsgnItemEditor.pas 29 May 2004 22:19:14 -0000 +@@ -152,6 +152,12 @@ + procedure TBRegisterItemClass(AClass: TTBCustomItemClass; + const ACaption: String; ResInstance: HINST); + ++type ++ TTBDsgnEditorHook = procedure(Sender: TTBItemEditForm) of object; ++ ++procedure TBRegisterDsgnEditorHook(Hook: TTBDsgnEditorHook); ++procedure TBUnregisterDsgnEditorHook(Hook: TTBDsgnEditorHook); ++ + implementation + + {$R *.DFM} +@@ -179,6 +185,7 @@ + var + ItemClasses: TList; + ItemImageList: TImageList; ++ EditFormHooks: TList; + + {$IFNDEF JR_D6} + function CreateSelectionList: TDesignerSelectionList; +@@ -240,7 +247,18 @@ + const ACaption: String; ResInstance: HINST); + var + Info: PItemClassInfo; ++ I: Integer; + begin ++ if ItemClasses <> nil then ++ for I := ItemClasses.Count - 1 downto 0 do ++ begin ++ Info := ItemClasses[I]; ++ if Info.ItemClass = AClass then ++ begin ++ Dispose(Info); ++ ItemClasses.Delete(I); ++ end; ++ end; + New(Info); + Info.ItemClass := AClass; + Info.Caption := ACaption; +@@ -357,6 +375,11 @@ + Item.OnClick := MoreItemClick; + MoreMenu.Add(Item); + end; ++ { Run the hooks } ++ ++ if EditFormHooks <> nil then ++ for I := 0 to EditFormHooks.Count - 1 do ++ TTBDsgnEditorHook(EditFormHooks[I]^)(Self); + end; + + destructor TTBItemEditForm.Destroy; +@@ -1332,14 +1355,44 @@ + Result := '(TB2000 Items)'; + end; + ++ ++procedure TBRegisterDsgnEditorHook(Hook: TTBDsgnEditorHook); ++var ++ H: ^TTBDsgnEditorHook; ++begin ++ New(H); ++ H^ := Hook; ++ EditFormHooks.Add(H); ++end; ++ ++procedure TBUnregisterDsgnEditorHook(Hook: TTBDsgnEditorHook); ++var ++ H: ^TTBDsgnEditorHook; ++ I: Integer; ++begin ++ for I := EditFormHooks.Count - 1 downto 0 do ++ begin ++ H := EditFormHooks[I]; ++ if (TMethod(H^).Code = TMethod(Hook).Code) and ++ (TMethod(H^).Data = TMethod(Hook).Data) then ++ begin ++ Dispose(H); ++ EditFormHooks.Delete(I); ++// Break; ++ end; ++ end; ++end; ++ + initialization + ItemImageList := TImageList.Create(nil); + ItemImageList.Handle := ImageList_LoadImage(HInstance, 'TB2_DSGNEDITORIMAGES', + 16, 0, clFuchsia, IMAGE_BITMAP, 0); + ItemClasses := TList.Create; ++ EditFormHooks := TList.Create; + AddModuleUnloadProc(UnregisterModuleItemClasses); + finalization + RemoveModuleUnloadProc(UnregisterModuleItemClasses); + FreeItemClasses; + FreeAndNil(ItemImageList); ++ FreeAndNil(EditFormHooks); + end. +Index: TB2ExtItems.pas +=================================================================== +RCS file: /data/cvs/tb2k/Source/TB2ExtItems.pas,v +retrieving revision 1.56 +diff -u -r1.56 TB2ExtItems.pas +--- TB2ExtItems.pas 26 Feb 2004 07:05:57 -0000 1.56 ++++ TB2ExtItems.pas 29 May 2004 22:19:14 -0000 +@@ -43,6 +43,11 @@ + EditItemDefaultEditOptions = []; + EditItemDefaultEditWidth = 64; + ++{ Change reasons for TTBEditItem.Text property } ++ tcrSetProperty = 0; // direct assignment to TTBEditItem.Text property ++ tcrActionLink = 1; // change comes from an action link ++ tcrEditControl = 2; // change is caused by typing in edit area ++ + type + TTBEditItem = class; + TTBEditItemViewer = class; +@@ -96,6 +101,7 @@ + FEditCaption: String; + FEditOptions: TTBEditItemOptions; + FEditWidth: Integer; ++ FExtendedAccept: Boolean; + FMaxLength: Integer; + FOnAcceptText: TTBAcceptTextEvent; + FOnBeginEdit: TTBBeginEditEvent; +@@ -112,10 +118,15 @@ + procedure SetText(Value: String); + protected + procedure ActionChange(Sender: TObject; CheckDefaults: Boolean); override; ++ function DoAcceptText(var NewText: string): Boolean; virtual; + procedure DoBeginEdit(Viewer: TTBEditItemViewer); virtual; ++ procedure DoTextChanging(const OldText: String; var NewText: String; Reason: Integer); virtual; ++ procedure DoTextChanged(Reason: Integer); virtual; + function GetActionLinkClass: TTBCustomItemActionLinkClass; override; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + function NeedToRecreateViewer(AViewer: TTBItemViewer): Boolean; override; ++ property ExtendedAccept: Boolean read FExtendedAccept write FExtendedAccept default False; ++ procedure SetTextEx(Value: String; Reason: Integer); + public + constructor Create(AOwner: TComponent); override; + procedure Clear; +@@ -146,6 +157,8 @@ + property OnSelect; + end; + ++ TEditClass = class of TEdit; ++ + TTBEditItemViewer = class(TTBItemViewer) + private + FEditControl: TEdit; +@@ -162,6 +175,7 @@ + function GetAccValue(var Value: WideString): Boolean; override; + function GetCaptionText: String; override; + procedure GetCursor(const Pt: TPoint; var ACursor: HCURSOR); override; ++ function GetEditControlClass: TEditClass; virtual; + procedure GetEditRect(var R: TRect); virtual; + procedure MouseDown(Shift: TShiftState; X, Y: Integer; + var MouseDownOnMenu: Boolean); override; +@@ -365,7 +379,7 @@ + + procedure TTBEditItemActionLink.SetText(const Value: String); + begin +- if IsTextLinked then TTBEditItem(FClient).Text := Value; ++ if IsTextLinked then TTBEditItem(FClient).SetTextEx(Value , tcrActionLink); + end; + + +@@ -389,7 +403,7 @@ + if not CheckDefaults or (Self.EditOptions = []) then + Self.EditOptions := EditOptions; + if not CheckDefaults or (Self.Text = '') then +- Self.Text := Text; ++ Self.SetTextEx(Text, tcrActionLink); + if not CheckDefaults or not Assigned(Self.OnAcceptText) then + Self.OnAcceptText := OnAcceptText; + end; +@@ -496,15 +510,41 @@ + end; + end; + +-procedure TTBEditItem.SetText(Value: String); ++function TTBEditItem.DoAcceptText(var NewText: string): Boolean; ++begin ++ Result := True; ++ if Assigned(FOnAcceptText) then FOnAcceptText(Self, NewText, Result); ++end; ++ ++procedure TTBEditItem.DoTextChanging(const OldText: String; var NewText: String; Reason: Integer); + begin + case FCharCase of +- ecUpperCase: Value := AnsiUpperCase(Value); +- ecLowerCase: Value := AnsiLowerCase(Value); ++ ecUpperCase: NewText := AnsiUpperCase(NewText); ++ ecLowerCase: NewText := AnsiLowerCase(NewText); ++ end; ++end; ++ ++procedure TTBEditItem.DoTextChanged(Reason: Integer); ++begin ++end; ++ ++procedure TTBEditItem.SetText(Value: String); ++begin ++ DoTextChanging(FText, Value, tcrSetProperty); ++ if FText <> Value then begin ++ FText := Value; ++ Change(False); ++ DoTextChanged(tcrSetProperty); + end; ++end; ++ ++procedure TTBEditItem.SetTextEx(Value: String; Reason: Integer); ++begin ++ DoTextChanging(FText, Value, Reason); + if FText <> Value then begin + FText := Value; + Change(False); ++ DoTextChanged(Reason); + end; + end; + +@@ -518,14 +558,9 @@ + procedure AcceptText; + var + S: String; +- Accept: Boolean; + begin + S := FEditControl.Text; +- Accept := True; +- if Assigned(Item.FOnAcceptText) then +- Item.FOnAcceptText(Self, S, Accept); +- if Accept then +- Item.Text := S; ++ if Item.DoAcceptText(S) then Item.SetTextEx(S, tcrEditControl); + end; + + begin +@@ -552,6 +587,11 @@ + TEditAccess(FEditControl).WndProc(Message); + end; + ++function TTBEditItemViewer.GetEditControlClass: TEditClass; ++begin ++ Result := TEdit; ++end; ++ + procedure TTBEditItemViewer.GetEditRect(var R: TRect); + var + Item: TTBEditItem; +@@ -771,6 +811,7 @@ + Item: TTBEditItem; + R: TRect; + ActiveWnd, FocusWnd: HWND; ++ S: string; + begin + Item := TTBEditItem(Self.Item); + GetEditRect(R); +@@ -784,8 +825,8 @@ + + { Create the edit control } + InflateRect(R, -3, -3); +- //View.FreeNotification(Self); +- FEditControl := TEdit.Create(nil); ++ //View.FreeNotification (Self); ++ FEditControl := GetEditControlClass.Create(nil); + try + FEditControl.Name := Format('%s_edit_control_%p', [ClassName, + Pointer(FEditControl)]); +@@ -812,9 +853,14 @@ + FEditControlStatus := [ecsContinueLoop]; + ControlMessageLoop; + finally ++ S := FEditControl.Text; + FreeAndNil(FEditControl); + end; + ++ with TTBEditItem(Item) do ++ if (FEditControlStatus = [ecsContinueLoop]) and ExtendedAccept then ++ if DoAcceptText(S) then SetTextEx(S, tcrEditControl); ++ + { ensure the area underneath the edit control is repainted immediately } + View.Window.Update; + { If app is still active, set focus to previous control and restore capture +Index: TB2Item.pas +=================================================================== +RCS file: /data/cvs/tb2k/Source/TB2Item.pas,v +retrieving revision 1.258 +diff -u -r1.258 TB2Item.pas +--- TB2Item.pas 26 Feb 2004 07:05:57 -0000 1.258 ++++ TB2Item.pas 29 May 2004 22:19:15 -0000 +@@ -1,5 +1,5 @@ + unit TB2Item; +- ++ + { + Toolbar2000 + Copyright (C) 1998-2004 by Jordan Russell +@@ -23,7 +23,7 @@ + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + +- $jrsoftware: tb2k/Source/TB2Item.pas,v 1.258 2004/02/26 07:05:57 jr Exp $ ++ $jrsoftware: tb2k/Source/TB2Item.pas,v 1.259 2004/05/05 08:43:18 jr Exp $ + } + + interface +@@ -41,6 +41,14 @@ + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + StdCtrls, CommCtrl, Menus, ActnList, ImgList, TB2Anim; + ++const ++ WM_TB2K_POPUPSHOWING = WM_USER + 554; ++ ++ { Parameter in LParam of WM_TB2K_POPUPSHOWING } ++ TPS_ANIMSTART = 1; // animation query: if Result <> 0, do not animate! ++ TPS_ANIMFINISHED = 2; // only fired when animation thread is done ++ TPS_NOANIM = 3; // fired when animation is done, or if showing with no animation ++ + type + TTBCustomItem = class; + TTBCustomItemClass = class of TTBCustomItem; +@@ -82,7 +90,7 @@ + TTBItemStyle = set of (tbisSubmenu, tbisSelectable, tbisSeparator, + tbisEmbeddedGroup, tbisClicksTransparent, tbisCombo, tbisNoAutoOpen, + tbisSubitemsEditable, tbisNoLineBreak, tbisRightAlign, tbisDontSelectFirst, +- tbisRedrawOnSelChange, tbisRedrawOnMouseOverChange); ++ tbisRedrawOnSelChange, tbisRedrawOnMouseOverChange, tbisStretch); + TTBPopupAlignment = (tbpaLeft, tbpaRight, tbpaCenter); + TTBPopupEvent = procedure(Sender: TTBCustomItem; FromLink: Boolean) of object; + TTBSelectEvent = procedure(Sender: TTBCustomItem; Viewer: TTBItemViewer; +@@ -97,6 +105,18 @@ + {$IFNDEF JR_D5} + TImageIndex = type Integer; + {$ENDIF} ++ TTBPopupPositionRec = record ++ PositionAsSubmenu: Boolean; ++ Alignment: TTBPopupAlignment; ++ Opposite: Boolean; ++ MonitorRect: TRect; ++ ParentItemRect: TRect; ++ NCSizeX: Integer; ++ NCSizeY: Integer; ++ X, Y, W, H: Integer; ++ AnimDir: TTBAnimationDirection; ++ PlaySound: Boolean; ++ end; + + TTBCustomItem = class(TComponent) + private +@@ -186,6 +206,8 @@ + function GetChevronParentView: TTBView; virtual; + procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; virtual; ++ procedure GetPopupPosition(ParentView: TTBView; ++ PopupWindow: TTBPopupWindow; var PopupPositionRec: TTBPopupPositionRec); virtual; + function GetPopupWindowClass: TTBPopupWindowClass; virtual; + procedure IndexError; + procedure Loaded; override; +@@ -315,7 +337,7 @@ + function DoExecute: Boolean; virtual; + procedure DrawItemCaption(const Canvas: TCanvas; ARect: TRect; + const ACaption: String; ADrawDisabledShadow: Boolean; AFormat: UINT); virtual; +- procedure Entering; virtual; ++ procedure Entering(OldSelected: TTBItemViewer); virtual; + function GetAccRole: Integer; virtual; + function GetAccValue(var Value: WideString): Boolean; virtual; + function GetCaptionText: String; virtual; +@@ -323,7 +345,7 @@ + function GetImageList: TCustomImageList; + function ImageShown: Boolean; + function IsRotated: Boolean; +- function IsToolbarSize: Boolean; ++ function IsToolbarSize: Boolean; virtual; + function IsPtInButtonPart(X, Y: Integer): Boolean; virtual; + procedure KeyDown(var Key: Word; Shift: TShiftState); virtual; + procedure Leaving; virtual; +@@ -352,7 +374,7 @@ + function GetAccObject: IDispatch; + function GetHintText: String; + function IsAccessible: Boolean; +- function IsToolbarStyle: Boolean; ++ function IsToolbarStyle: Boolean; virtual; + function ScreenToClient(const P: TPoint): TPoint; + end; + PTBItemViewerArray = ^TTBItemViewerArray; +@@ -450,6 +472,8 @@ + procedure KeyDown(var Key: Word; Shift: TShiftState); virtual; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure SetAccelsVisibility(AShowAccels: Boolean); ++ procedure SetState(AState: TTBViewState); ++ property DoneActionData: TTBDoneActionData read FDoneActionData write FDoneActionData; + public + constructor CreateView(AOwner: TComponent; AParentView: TTBView; + AParentItem: TTBCustomItem; AWindow: TWinControl; +@@ -653,10 +677,12 @@ + procedure WMPrint(var Message: TMessage); message WM_PRINT; + procedure WMPrintClient(var Message: TMessage); message WM_PRINTCLIENT; + procedure WMTB2kStepAnimation(var Message: TMessage); message WM_TB2K_STEPANIMATION; ++ procedure WMTB2kAnimationEnded (var Message: TMessage); message WM_TB2K_ANIMATIONENDED; + protected + procedure CreateParams(var Params: TCreateParams); override; + procedure CreateWnd; override; + procedure DestroyWindowHandle; override; ++ function GetNCSize: TPoint; dynamic; + function GetViewClass: TTBViewClass; dynamic; + procedure Paint; override; + procedure PaintScrollArrows; virtual; +@@ -800,6 +826,21 @@ + var + ToolbarFont: TFont; + ++type ++ TTBModalHandler = class ++ private ++ FCreatedWnd: Boolean; ++ FInited: Boolean; ++ FWnd: HWND; ++ public ++ constructor Create(AExistingWnd: HWND); ++ destructor Destroy; override; ++ procedure Loop(const RootView: TTBView; const AMouseDown, AExecuteSelected, ++ AFromMSAA, TrackRightButton: Boolean); ++ property Wnd: HWND read FWnd; ++ end; ++ ++procedure ProcessDoneAction(const DoneActionData: TTBDoneActionData); + + implementation + +@@ -815,19 +856,6 @@ + ClickList: TList; + + type +- TTBModalHandler = class +- private +- FCreatedWnd: Boolean; +- FInited: Boolean; +- FWnd: HWND; +- public +- constructor Create(AExistingWnd: HWND); +- destructor Destroy; override; +- procedure Loop(const RootView: TTBView; const AMouseDown, AExecuteSelected, +- AFromMSAA, TrackRightButton: Boolean); +- property Wnd: HWND read FWnd; +- end; +- + PItemChangedNotificationData = ^TItemChangedNotificationData; + TItemChangedNotificationData = record + Proc: TTBItemChangedProc; +@@ -1645,10 +1673,11 @@ + var + PlayedSound: Boolean = False; + +-function TTBCustomItem.CreatePopup(const ParentView: TTBView; +- const ParentViewer: TTBItemViewer; const PositionAsSubmenu, SelectFirstItem, +- Customizing: Boolean; const APopupPoint: TPoint; +- const Alignment: TTBPopupAlignment): TTBPopupWindow; ++procedure TTBCustomItem.GetPopupPosition(ParentView: TTBView; ++ PopupWindow: TTBPopupWindow; var PopupPositionRec: TTBPopupPositionRec); ++var ++ X2, Y2: Integer; ++ RepeatCalcX: Boolean; + + function CountObscured(X, Y, W, H: Integer): Integer; + var +@@ -1672,114 +1701,9 @@ + end; + end; + +-var +- EventItem, ParentItem: TTBCustomItem; +- Opposite: Boolean; +- ChevronParentView: TTBView; +- X, X2, Y, Y2, W, H: Integer; +- P: TPoint; +- RepeatCalcX: Boolean; +- ParentItemRect: TRect; +- MonitorRect: TRect; +- AnimDir: TTBAnimationDirection; + begin +- EventItem := ItemContainingItems(Self); +- if EventItem <> Self then +- EventItem.DoPopup(Self, True); +- DoPopup(Self, False); +- +- ChevronParentView := GetChevronParentView; +- if ChevronParentView = nil then +- ParentItem := Self +- else +- ParentItem := ChevronParentView.FParentItem; +- +- Opposite := Assigned(ParentView) and (vsOppositePopup in ParentView.FState); +- Result := GetPopupWindowClass.CreatePopupWindow(nil, ParentView, ParentItem, +- Customizing); +- try +- if Assigned(ChevronParentView) then begin +- ChevronParentView.FreeNotification(Result.View); +- Result.View.FChevronParentView := ChevronParentView; +- Result.View.FIsToolbar := True; +- Result.View.Style := Result.View.Style + +- (ChevronParentView.Style * [vsAlwaysShowHints]); +- Result.Color := clBtnFace; +- end; +- +- { Calculate ParentItemRect, and MonitorRect (the rectangle of the monitor +- that the popup window will be confined to) } +- if Assigned(ParentView) then begin +- ParentView.ValidatePositions; +- ParentItemRect := ParentViewer.BoundsRect; +- P := ParentView.FWindow.ClientToScreen(Point(0, 0)); +- OffsetRect(ParentItemRect, P.X, P.Y); +- if not IsRectEmpty(ParentView.FMonitorRect) then +- MonitorRect := ParentView.FMonitorRect +- else +- MonitorRect := GetRectOfMonitorContainingRect(ParentItemRect, False); +- end +- else begin +- ParentItemRect.TopLeft := APopupPoint; +- ParentItemRect.BottomRight := APopupPoint; +- MonitorRect := GetRectOfMonitorContainingPoint(APopupPoint, False); +- end; +- Result.View.FMonitorRect := MonitorRect; +- +- { Initialize item positions and size of the popup window } +- if ChevronParentView = nil then +- Result.View.FMaxHeight := (MonitorRect.Bottom - MonitorRect.Top) - +- (PopupMenuWindowNCSize * 2) +- else +- Result.View.WrapOffset := (MonitorRect.Right - MonitorRect.Left) - +- (PopupMenuWindowNCSize * 2); +- if SelectFirstItem then +- Result.View.Selected := Result.View.FirstSelectable; +- Result.View.UpdatePositions; +- W := Result.Width; +- H := Result.Height; +- +- { Calculate initial X,Y position of the popup window } +- if Assigned(ParentView) then begin +- if not PositionAsSubmenu then begin +- if ChevronParentView = nil then begin +- if (ParentView = nil) or (ParentView.FOrientation <> tbvoVertical) then begin +- if GetSystemMetrics(SM_MENUDROPALIGNMENT) = 0 then +- X := ParentItemRect.Left +- else +- X := ParentItemRect.Right - W; +- Y := ParentItemRect.Bottom; +- end +- else begin +- X := ParentItemRect.Left - W; +- Y := ParentItemRect.Top; +- end; +- end +- else begin +- if ChevronParentView.FOrientation <> tbvoVertical then begin +- X := ParentItemRect.Right - W; +- Y := ParentItemRect.Bottom; +- end +- else begin +- X := ParentItemRect.Left - W; +- Y := ParentItemRect.Top; +- end; +- end; +- end +- else begin +- X := ParentItemRect.Right - PopupMenuWindowNCSize; +- Y := ParentItemRect.Top - PopupMenuWindowNCSize; +- end; +- end +- else begin +- X := APopupPoint.X; +- Y := APopupPoint.Y; +- case Alignment of +- tbpaRight: Dec(X, W); +- tbpaCenter: Dec(X, W div 2); +- end; +- end; +- ++ with PopupPositionRec do ++ begin + { Adjust the Y position of the popup window } + { If the window is going off the bottom of the monitor, try placing it + above the parent item } +@@ -1788,7 +1712,7 @@ + if not PositionAsSubmenu then + Y2 := ParentItemRect.Top + else +- Y2 := ParentItemRect.Bottom + PopupMenuWindowNCSize; ++ Y2 := ParentItemRect.Bottom + NCSizeY; + Dec(Y2, H); + { Only place it above the parent item if it isn't going to go off the + top of the monitor } +@@ -1864,17 +1788,17 @@ + X2 := X; + if Opposite or (X2 + W > MonitorRect.Right) then begin + if Assigned(ParentView) then +- X2 := ParentItemRect.Left + PopupMenuWindowNCSize; ++ X2 := ParentItemRect.Left + NCSizeX; + Dec(X2, W); + if not Opposite then +- Include(Result.View.FState, vsOppositePopup) ++ Include(PopupWindow.View.FState, vsOppositePopup) + else begin + if X2 < MonitorRect.Left then begin + Opposite := False; + RepeatCalcX := True; + end + else +- Include(Result.View.FState, vsOppositePopup); ++ Include(PopupWindow.View.FState, vsOppositePopup); + end; + end; + until not RepeatCalcX; +@@ -1901,8 +1825,141 @@ + else + Include(AnimDir, tbadLeft); + end; +- Result.FAnimationDirection := AnimDir; ++ end; ++end; ++ ++function TTBCustomItem.CreatePopup(const ParentView: TTBView; ++ const ParentViewer: TTBItemViewer; const PositionAsSubmenu, SelectFirstItem, ++ Customizing: Boolean; const APopupPoint: TPoint; ++ const Alignment: TTBPopupAlignment): TTBPopupWindow; ++var ++ EventItem, ParentItem: TTBCustomItem; ++ Opposite: Boolean; ++ ChevronParentView: TTBView; ++ X, Y, W, H: Integer; ++ P: TPoint; ++ ParentItemRect: TRect; ++ MonitorRect: TRect; ++ PopupRec: TTBPopupPositionRec; ++ NCSize: TPoint; ++begin ++ EventItem := ItemContainingItems(Self); ++ if EventItem <> Self then ++ EventItem.DoPopup(Self, True); ++ DoPopup(Self, False); ++ ++ ChevronParentView := GetChevronParentView; ++ if ChevronParentView = nil then ++ ParentItem := Self ++ else ++ ParentItem := ChevronParentView.FParentItem; + ++ Opposite := Assigned(ParentView) and (vsOppositePopup in ParentView.FState); ++ Result := GetPopupWindowClass.CreatePopupWindow(nil, ParentView, ParentItem, ++ Customizing); ++ try ++ if Assigned(ChevronParentView) then begin ++ ChevronParentView.FreeNotification(Result.View); ++ Result.View.FChevronParentView := ChevronParentView; ++ Result.View.FIsToolbar := True; ++ Result.View.Style := Result.View.Style + ++ (ChevronParentView.Style * [vsAlwaysShowHints]); ++ Result.Color := clBtnFace; ++ end; ++ ++ { Calculate ParentItemRect, and MonitorRect (the rectangle of the monitor ++ that the popup window will be confined to) } ++ if Assigned(ParentView) then begin ++ ParentView.ValidatePositions; ++ ParentItemRect := ParentViewer.BoundsRect; ++ P := ParentView.FWindow.ClientToScreen(Point(0, 0)); ++ OffsetRect(ParentItemRect, P.X, P.Y); ++ if not IsRectEmpty(ParentView.FMonitorRect) then ++ MonitorRect := ParentView.FMonitorRect ++ else ++ MonitorRect := GetRectOfMonitorContainingRect(ParentItemRect, False); ++ end ++ else begin ++ ParentItemRect.TopLeft := APopupPoint; ++ ParentItemRect.BottomRight := APopupPoint; ++ MonitorRect := GetRectOfMonitorContainingPoint(APopupPoint, False); ++ end; ++ Result.View.FMonitorRect := MonitorRect; ++ ++ { Initialize item positions and size of the popup window } ++ NCSize := Result.GetNCSize; ++ if ChevronParentView = nil then ++ Result.View.FMaxHeight := (MonitorRect.Bottom - MonitorRect.Top) - ++ (NCSize.Y * 2) ++ else ++ Result.View.WrapOffset := (MonitorRect.Right - MonitorRect.Left) - ++ (NCSize.X * 2); ++ if SelectFirstItem then ++ Result.View.Selected := Result.View.FirstSelectable; ++ Result.View.UpdatePositions; ++ W := Result.Width; ++ H := Result.Height; ++ ++ { Calculate initial X,Y position of the popup window } ++ if Assigned(ParentView) then begin ++ if not PositionAsSubmenu then begin ++ if ChevronParentView = nil then begin ++ if (ParentView = nil) or (ParentView.FOrientation <> tbvoVertical) then begin ++ if GetSystemMetrics(SM_MENUDROPALIGNMENT) = 0 then ++ X := ParentItemRect.Left ++ else ++ X := ParentItemRect.Right - W; ++ Y := ParentItemRect.Bottom; ++ end ++ else begin ++ X := ParentItemRect.Left - W; ++ Y := ParentItemRect.Top; ++ end; ++ end ++ else begin ++ if ChevronParentView.FOrientation <> tbvoVertical then begin ++ X := ParentItemRect.Right - W; ++ Y := ParentItemRect.Bottom; ++ end ++ else begin ++ X := ParentItemRect.Left - W; ++ Y := ParentItemRect.Top; ++ end; ++ end; ++ end ++ else begin ++ X := ParentItemRect.Right - NCSize.X; ++ Y := ParentItemRect.Top - NCSize.Y; ++ end; ++ end ++ else begin ++ X := APopupPoint.X; ++ Y := APopupPoint.Y; ++ case Alignment of ++ tbpaRight: Dec(X, W); ++ tbpaCenter: Dec(X, W div 2); ++ end; ++ end; ++ ++ PopupRec.PositionAsSubmenu := PositionAsSubmenu; ++ PopupRec.Alignment := Alignment; ++ PopupRec.Opposite := Opposite; ++ PopupRec.MonitorRect := MonitorRect; ++ PopupRec.ParentItemRect := ParentItemRect; ++ PopupRec.NCSizeX := NCSize.X; ++ PopupRec.NCSizeY := NCSize.Y; ++ PopupRec.X := X; ++ PopupRec.Y := Y; ++ PopupRec.W := W; ++ PopupRec.H := H; ++ PopupRec.AnimDir := []; ++ PopupRec.PlaySound := True; ++ GetPopupPosition(ParentView, Result, PopupRec); ++ X := PopupRec.X; ++ Y := PopupRec.Y; ++ W := PopupRec.W; ++ H := PopupRec.H; ++ Result.FAnimationDirection := PopupRec.AnimDir; + Result.SetBounds(X, Y, W, H); + if Assigned(ParentView) then begin + Result.FreeNotification(ParentView); +@@ -1916,7 +1973,7 @@ + end; + end; + Include(Result.View.FState, vsDrawInOrder); +- if not NeedToPlaySound('MenuPopup') then begin ++ if not PopupRec.PlaySound or not NeedToPlaySound('MenuPopup') then begin + { Don't call PlaySound if we don't have to } + Result.Visible := True; + end +@@ -3224,7 +3281,7 @@ + View.Invalidate(Self); + end; + +-procedure TTBItemViewer.Entering; ++procedure TTBItemViewer.Entering(OldSelected: TTBItemViewer); + begin + if Assigned(Item.FOnSelect) then + Item.FOnSelect(Item, Self, True); +@@ -4015,7 +4072,7 @@ + if Assigned(Value) then begin + if tbisRedrawOnSelChange in Value.Item.ItemStyle then + Invalidate(Value); +- Value.Entering; ++ Value.Entering(OldSelected); + end; + NotifyFocusEvent; + +@@ -4308,7 +4365,7 @@ + HighestHeightOnLine := TotalSize.Y; + end; + { Make separators on toolbars as tall/wide as the tallest/widest item } +- if tbisSeparator in Item.ItemStyle then begin ++ if [tbisSeparator, tbisStretch] * Item.ItemStyle <> [] then begin + if AOrientation <> tbvoVertical then + Pos.BoundsRect.Bottom := Pos.BoundsRect.Top + HighestHeightOnLine + else +@@ -5576,12 +5633,30 @@ + Result := GetRootView.FCaptureWnd; + end; + ++procedure TTBView.SetState(AState: TTBViewState); ++begin ++ FState := AState; ++end; ++ + + { TTBModalHandler } + ++const ++ LSFW_LOCK = 1; ++ LSFW_UNLOCK = 2; ++ ++var ++ LockSetForegroundWindowInited: BOOL; ++ LockSetForegroundWindow: function(uLockCode: UINT): BOOL; stdcall; ++ + constructor TTBModalHandler.Create(AExistingWnd: HWND); + begin + inherited Create; ++ if not LockSetForegroundWindowInited then begin ++ LockSetForegroundWindow := GetProcAddress(GetModuleHandle(user32), ++ 'LockSetForegroundWindow'); ++ LockSetForegroundWindowInited := True; ++ end; + LastPos := SmallPointToPoint(TSmallPoint(GetMessagePos())); + if AExistingWnd <> 0 then + FWnd := AExistingWnd +@@ -5589,6 +5664,13 @@ + FWnd := {$IFDEF JR_D6}Classes.{$ENDIF} AllocateHWnd(nil); + FCreatedWnd := True; + end; ++ if Assigned(LockSetForegroundWindow) then begin ++ { Like standard menus, don't allow other apps to steal the focus during ++ our modal loop. This also prevents us from losing activation when ++ "active window tracking" is enabled and the user moves the mouse over ++ another application's window. } ++ LockSetForegroundWindow(LSFW_LOCK); ++ end; + SetCapture(FWnd); + SetCursor(LoadCursor(0, IDC_ARROW)); + CallNotifyWinEvent(EVENT_SYSTEM_MENUSTART, FWnd, OBJID_CLIENT, CHILDID_SELF); +@@ -5597,6 +5679,8 @@ + + destructor TTBModalHandler.Destroy; + begin ++ if Assigned(LockSetForegroundWindow) then ++ LockSetForegroundWindow(LSFW_UNLOCK); + if FWnd <> 0 then begin + if GetCapture = FWnd then + ReleaseCapture; +@@ -6021,9 +6105,10 @@ + + procedure TTBPopupView.AutoSize(AWidth, AHeight: Integer); + begin +- with FWindow do +- SetBounds(Left, Top, AWidth + (PopupMenuWindowNCSize * 2), +- AHeight + (PopupMenuWindowNCSize * 2)); ++ with TTBPopupWindow(FWindow) do ++ with GetNCSize do ++ SetBounds(Left, Top, AWidth + (X * 2), ++ AHeight + (Y * 2)); + end; + + function TTBPopupView.GetFont: TFont; +@@ -6100,6 +6185,12 @@ + inherited; + end; + ++function TTBPopupWindow.GetNCSize: TPoint; ++begin ++ Result.X := PopupMenuWindowNCSize; ++ Result.Y := PopupMenuWindowNCSize; ++end; ++ + function TTBPopupWindow.GetViewClass: TTBViewClass; + begin + Result := TTBPopupView; +@@ -6183,8 +6274,12 @@ + SystemParametersInfo(SPI_GETMENUANIMATION, 0, @Animate, 0) and Animate then begin + Blend := SystemParametersInfo(SPI_GETMENUFADE, 0, @Animate, 0) and Animate; + if Blend or (FAnimationDirection <> []) then begin +- TBStartAnimation(WindowHandle, 150, Blend, FAnimationDirection); +- Exit; ++ if SendMessage(WindowHandle, WM_TB2K_POPUPSHOWING, TPS_ANIMSTART, 0) = 0 then ++ begin ++ { Start animation only if WM_TB2K_POPUPSHOWING returns zero (or not handled) } ++ TBStartAnimation(WindowHandle, 150, Blend, FAnimationDirection); ++ Exit; ++ end; + end; + end; + {$ENDIF} +@@ -6197,6 +6292,12 @@ + TBEndAnimation(WindowHandle); + end; + SetWindowPos(WindowHandle, 0, 0, 0, 0, 0, ShowFlags[Showing]); ++ if Showing then SendNotifyMessage(WindowHandle, WM_TB2K_POPUPSHOWING, TPS_NOANIM, 0); ++end; ++ ++procedure TTBPopupWindow.WMTB2kAnimationEnded(var Message: TMessage); ++begin ++ SendNotifyMessage(WindowHandle, WM_TB2K_POPUPSHOWING, TPS_ANIMFINISHED, 0); + end; + + procedure TTBPopupWindow.WMTB2kStepAnimation(var Message: TMessage); +@@ -6266,8 +6367,8 @@ + + procedure TTBPopupWindow.WMNCCalcSize(var Message: TWMNCCalcSize); + begin +- InflateRect(Message.CalcSize_Params^.rgrc[0], +- -PopupMenuWindowNCSize, -PopupMenuWindowNCSize); ++ with GetNCSize do ++ InflateRect(Message.CalcSize_Params^.rgrc[0], -X, -Y); + inherited; + end; + +Index: TB2MRU.pas +=================================================================== +RCS file: /data/cvs/tb2k/Source/TB2MRU.pas,v +retrieving revision 1.22 +diff -u -r1.22 TB2MRU.pas +--- TB2MRU.pas 26 Feb 2004 07:05:58 -0000 1.22 ++++ TB2MRU.pas 29 May 2004 22:19:15 -0000 +@@ -53,6 +53,7 @@ + procedure SetMaxItems(Value: Integer); + protected + property Container: TTBCustomItem read FContainer; ++ function GetFirstKey: Integer; virtual; + function GetItemClass: TTBCustomItemClass; virtual; + procedure SetItemCaptions; virtual; + public +@@ -107,7 +108,7 @@ + procedure Delete(Index: Integer); override; + function Get(Index: Integer): String; override; + function GetCount: Integer; override; +- function IndexOf(const S: String): Integer; override; ++ function IndexOf(const S: String): Integer; override; + procedure Insert(Index: Integer; const S: String); override; + procedure Move(CurIndex, NewIndex: Integer); override; + procedure Put(Index: Integer; const S: String); override; +@@ -296,20 +297,21 @@ + + procedure TTBMRUList.SetItemCaptions; + var +- I, J: Integer; ++ I, J, N: Integer; + Key: Char; + S: String; + Buf: array[0..MAX_PATH-1] of Char; + begin + while FList.Count > FMaxItems do + FList.Delete(FList.Count-1); ++ N := GetFirstKey; + for I := 0 to FContainer.Count-1 do begin + Key := #0; +- if I < 9 then +- Key := Chr(Ord('1') + I) ++ if N < 9 then ++ Key := Chr(Ord('1') + N) + else begin + { No more numbers; try letters } +- J := I - 9; ++ J := N - 9; + if J < 26 then + Key := Chr(Ord('A') + J); + end; +@@ -321,6 +323,7 @@ + FContainer[I].Caption := Format('&%s %s', [Key, S]) + else + FContainer[I].Caption := S; ++ Inc(N); + end; + end; + +@@ -361,6 +364,11 @@ + Result := TTBCustomItem; + end; + ++function TTBMRUList.GetFirstKey: Integer; ++begin ++ Result := 0; ++end; ++ + + { TTBMRUListItem } + +Index: TB2Reg.pas +=================================================================== +RCS file: /data/cvs/tb2k/Source/TB2Reg.pas,v +retrieving revision 1.27 +diff -u -r1.27 TB2Reg.pas +--- TB2Reg.pas 26 Feb 2004 07:05:58 -0000 1.27 ++++ TB2Reg.pas 29 May 2004 22:19:15 -0000 +@@ -36,13 +36,6 @@ + TB2Toolbar, TB2ToolWindow, TB2Dock, TB2Item, TB2ExtItems, TB2MRU, TB2MDI, + TB2DsgnItemEditor; + +-procedure Register; +- +-implementation +- +-uses +- ImgEdit; +- + {$IFDEF JR_D5} + + { TTBImageIndexPropertyEditor } +@@ -67,6 +60,25 @@ + const ARect: TRect; ASelected: Boolean); {$IFNDEF JR_D6} override; {$ENDIF} + end; + ++{ TTBItemImageIndexPropertyEditor } ++ ++type ++ TTBItemImageIndexPropertyEditor = class(TTBImageIndexPropertyEditor) ++ public ++ function GetImageListAt (Index: Integer): TCustomImageList; override; ++ end; ++ ++{$ENDIF} ++ ++procedure Register; ++ ++implementation ++ ++uses ++ ImgEdit; ++ ++{$IFDEF JR_D5} ++ + function TTBImageIndexPropertyEditor.GetAttributes: TPropertyAttributes; + begin + Result := [paMultiSelect, paValueList, paRevertable]; +@@ -128,12 +140,6 @@ + + { TTBItemImageIndexPropertyEditor } + +-type +- TTBItemImageIndexPropertyEditor = class(TTBImageIndexPropertyEditor) +- protected +- function GetImageListAt(Index: Integer): TCustomImageList; override; +- end; +- + function TTBItemImageIndexPropertyEditor.GetImageListAt(Index: Integer): TCustomImageList; + var + C: TPersistent; +Index: TB2ToolWindow.pas +=================================================================== +RCS file: /data/cvs/tb2k/Source/TB2ToolWindow.pas,v +retrieving revision 1.17 +diff -u -r1.17 TB2ToolWindow.pas +--- TB2ToolWindow.pas 26 Feb 2004 07:05:58 -0000 1.17 ++++ TB2ToolWindow.pas 29 May 2004 22:19:15 -0000 +@@ -195,14 +195,24 @@ + begin + Result.X := FBarWidth; + Result.Y := FBarHeight; +- if Assigned(ADock) and (FullSize or Stretch) then begin +- { If docked and stretching, return the minimum size so that the toolbar +- can shrink below FBarWidth/FBarHeight } +- if not(ADock.Position in [dpLeft, dpRight]) then +- Result.X := FMinClientWidth +- else +- Result.Y := FMinClientHeight; +- end; ++ if Assigned(ADock) then ++ if FullSize then ++ begin ++ { If docked and full size, return the size corresponding to docked size } ++ if not(ADock.Position in [dpLeft, dpRight]) then ++ Result.X := ADock.ClientWidth - (Width - ClientWidth) ++ else ++ Result.Y := ADock.ClientHeight - (Height - ClientHeight); ++ end ++ else if Stretch then ++ begin ++ { If docked and stretching, return the minimum size so that the toolbar ++ can shrink below FBarWidth/FBarHeight } ++ if not(ADock.Position in [dpLeft, dpRight]) then ++ Result.X := FMinClientWidth ++ else ++ Result.Y := FMinClientHeight; ++ end; + end; + + procedure TTBToolWindow.GetBaseSize(var ASize: TPoint); +Index: TB2Toolbar.pas +=================================================================== +RCS file: /data/cvs/tb2k/Source/TB2Toolbar.pas,v +retrieving revision 1.99 +diff -u -r1.99 TB2Toolbar.pas +--- TB2Toolbar.pas 26 Feb 2004 07:05:58 -0000 1.99 ++++ TB2Toolbar.pas 29 May 2004 22:19:15 -0000 +@@ -23,7 +23,7 @@ + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + +- $jrsoftware: tb2k/Source/TB2Toolbar.pas,v 1.99 2004/02/26 07:05:58 jr Exp $ ++ $jrsoftware: tb2k/Source/TB2Toolbar.pas,v 1.100 2004/04/30 21:06:18 jr Exp $ + } + + interface +@@ -327,7 +327,9 @@ + SetWindowsHookExW, Msg.wParam may either be an ANSI character or a + Unicode character, due to an apparent bug on these platforms. It is + an ANSI character when the message passes through a separate +- SetWindowsHookExA-installed WH_GETMESSAGE hook first. ++ SetWindowsHookExA-installed WH_GETMESSAGE hook first, and that hook ++ calls us via CallNextHookEx. Windows apparently "forgets" to convert ++ the character from ANSI back to Unicode in this case. + We can't convert the character code because there seems to be no way + to detect whether it is ANSI or Unicode. So we can't really do much + with Msg.wParam, apart from comparing it against character codes that +@@ -340,9 +342,12 @@ + { Redirect the message to the main form. + Note: Unfortunately, due to a bug in Windows NT 4.0 (and not + 2000/XP/9x/Me), modifications to the message don't take effect if +- another WH_GETMESSAGE hook has been installed above this one. I +- don't know of any clean workaround, other than to ensure other +- WH_GETMESSAGE hooks are installed *before* Toolbar2000's. } ++ another WH_GETMESSAGE hook has been installed above this one. ++ (The bug is that CallNextHookEx copies lParam^ to a local buffer, but ++ does not propogate the changes made by the hook back to lParam^ when ++ it returns.) I don't know of any clean workaround, other than to ++ ensure other WH_GETMESSAGE hooks are installed *before* ++ Toolbar2000's. } + Msg.hwnd := MainForm.Handle; + end; + end; +@@ -891,6 +896,11 @@ + Hint := Item.Hint + else + Hint := ''; ++ ++ with TTBItemViewerAccess(FView.Find(Item)) do ++ begin ++ MouseMove(X - BoundsRect.Left, Y - BoundsRect.Top); ++ end; + end + else + Hint := ''; + diff --git a/official/2.1.6+2.1.beta1/Source/_tb2k_2.1.6_patch.diff.txt b/official/2.1.6+2.1.beta1/Source/_tb2k_2.1.6_patch.diff.txt new file mode 100644 index 0000000..62b90df --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/_tb2k_2.1.6_patch.diff.txt @@ -0,0 +1,1748 @@ +--- TB2Common.pas 2005-06-29 15:10:10.000000000 +-0400 ++++ TB2Common.pas 2005-08-12 08:33:58.000000000 +-0400 +@@ -882,46 +882,88 @@ + Result := CreateFontIndirect(LogFont); + end; + + procedure DrawRotatedText(const DC: HDC; AText: String; const ARect: TRect; + const AFormat: Cardinal); + { Like DrawText, but draws the text at a 270 degree angle. +- The only format flag this function respects is DT_HIDEPREFIX. Text is always +- drawn centered. } ++ The format flag this function respects are ++ DT_NOPREFIX, DT_HIDEPREFIX, DT_CENTER, DT_END_ELLIPSIS, DT_NOCLIP } + var + RotatedFont, SaveFont: HFONT; + TextMetrics: TTextMetric; +- X, Y, P, I, SU, FU: Integer; ++ X, Y, P, I, SU, FU, W: Integer; + SaveAlign: UINT; + SavePen, Pen: HPEN; ++ Clip: Boolean; ++ ++ function GetSize(DC: HDC; const S: string): Integer; ++ var ++ Size: TSize; ++ begin ++ GetTextExtentPoint32(DC, PChar(S), Length(S), Size); ++ Result := Size.cx; ++ end; ++ + begin ++ if Length(AText) = 0 then Exit; ++ + RotatedFont := CreateRotatedFont(DC); + SaveFont := SelectObject(DC, RotatedFont); + + GetTextMetrics(DC, TextMetrics); + X := ARect.Left + ((ARect.Right - ARect.Left) - TextMetrics.tmHeight) div 2; +- Y := ARect.Top + ((ARect.Bottom - ARect.Top) - GetTextWidth(DC, AText, True)) div 2; ++ ++ Clip := (AFormat and DT_NOCLIP) <> DT_NOCLIP; + + { Find the index of the character that should be underlined. Delete '&' + characters from the string. Like DrawText, only the last prefixed character + will be underlined. } + P := 0; + I := 1; +- while I <= Length(AText) do begin +- if AText[I] in LeadBytes then +- Inc(I) +- else if AText[I] = '&' then begin +- Delete(AText, I, 1); +- { Note: PChar cast is so that if Delete deleted the last character in +- the string, we don't step past the end of the string (which would cause +- an AV if AText is now empty), but rather look at the null character +- and treat it as an accelerator key like DrawText. } +- if PChar(AText)[I-1] <> '&' then +- P := I; +- end; +- Inc(I); ++ if (AFormat and DT_NOPREFIX) <> DT_NOPREFIX then ++ while I <= Length(AText) do begin ++ if AText[I] in LeadBytes then ++ Inc(I) ++ else if AText[I] = '&' then begin ++ Delete(AText, I, 1); ++ { Note: PChar cast is so that if Delete deleted the last character in ++ the string, we don't step past the end of the string (which would cause ++ an AV if AText is now empty), but rather look at the null character ++ and treat it as an accelerator key like DrawText. } ++ if PChar(AText)[I-1] <> '&' then ++ P := I; ++ end; ++ Inc(I); ++ end; ++ ++ if (AFormat and DT_END_ELLIPSIS) = DT_END_ELLIPSIS then ++ begin ++ if (Length(AText) > 1) and (GetSize(DC, AText) > ARect.Bottom - ARect.Top) then ++ begin ++ W := ARect.Bottom - ARect.Top; ++ if W > 2 then ++ begin ++ Delete(AText, Length(AText), 1); ++ while (Length(AText) > 1) and (GetSize(DC, AText + '...') > W) do ++ Delete(AText, Length(AText), 1); ++ end ++ else AText := AText[1]; ++ if P > Length(AText) then P := 0; ++ AText := AText + '...'; ++ end; ++ end; ++ ++ if (AFormat and DT_CENTER) = DT_CENTER then ++ Y := ARect.Top + ((ARect.Bottom - ARect.Top) - GetSize(DC, AText)) div 2 ++ else ++ Y := ARect.Top; ++ ++ if Clip then ++ begin ++ SaveDC(DC); ++ with ARect do IntersectClipRect(DC, Left, Top, Right, Bottom); + end; + + SaveAlign := SetTextAlign(DC, TA_BOTTOM); + TextOut(DC, X, Y, PChar(AText), Length(AText)); + SetTextAlign(DC, SaveAlign); + { Underline } +@@ -933,12 +975,14 @@ + SavePen := SelectObject(DC, Pen); + MoveToEx(DC, X, Y + SU, nil); + LineTo(DC, X, Y + FU); + SelectObject(DC, SavePen); + DeleteObject(Pen); + end; ++ ++ if Clip then RestoreDC(DC, -1); + + SelectObject(DC, SaveFont); + DeleteObject(RotatedFont); + end; + + function NeedToPlaySound(const Alias: String): Boolean; +--- TB2Dock.pas 2005-07-15 14:35:04.000000000 +-0400 ++++ TB2Dock.pas 2005-08-11 10:16:22.000000000 +-0400 +@@ -76,15 +76,12 @@ + {$ENDIF} + + { Internal } + FDisableArrangeToolbars: Integer; { Increment to disable ArrangeToolbars } + FArrangeToolbarsNeeded: Boolean; + FNonClientWidth, FNonClientHeight: Integer; +- DockList: TList; { List of the toolbars docked, and those floating and have LastDock +- pointing to the dock. Items are casted in TTBCustomDockableWindow's. } +- DockVisibleList: TList; { Similar to DockList, but lists only docked and visible toolbars } + + { Property access methods } + //function GetVersion: TToolbar97Version; + procedure SetAllowDrag(Value: Boolean); + procedure SetBackground(Value: TTBBasicBackground); + procedure SetBackgroundOnToolbars(Value: Boolean); +@@ -96,20 +93,17 @@ + function GetToolbarCount: Integer; + function GetToolbars(Index: Integer): TTBCustomDockableWindow; + + { Internal } + procedure BackgroundChanged(Sender: TObject); + procedure ChangeDockList(const Insert: Boolean; const Bar: TTBCustomDockableWindow); +- procedure ChangeWidthHeight(const NewWidth, NewHeight: Integer); + procedure CommitPositions; + procedure DrawNCArea(const DrawToDC: Boolean; const ADC: HDC; + const Clip: HRGN); + function GetDesignModeRowOf(const XY: Integer): Integer; +- function HasVisibleToolbars: Boolean; + procedure RelayMsgToFloatingBars(var Message: TMessage); +- function ToolbarVisibleOnDock(const AToolbar: TTBCustomDockableWindow): Boolean; + procedure ToolbarVisibilityChanged(const Bar: TTBCustomDockableWindow; + const ForceRemove: Boolean); + + { Messages } + procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR; + procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY; +@@ -122,27 +116,36 @@ + procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE; + procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT; + procedure WMPrint(var Message: TMessage); message WM_PRINT; + procedure WMPrintClient(var Message: TMessage); message WM_PRINTCLIENT; + procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND; + protected ++ DockList: TList; { List of the toolbars docked, and those floating and have LastDock ++ pointing to the dock. Items are casted in TTBCustomDockableWindow's. } ++ DockVisibleList: TList; { Similar to DockList, but lists only docked and visible toolbars } ++ function Accepts(ADockableWindow: TTBCustomDockableWindow): Boolean; virtual; + procedure AlignControls(AControl: TControl; var Rect: TRect); override; ++ procedure ChangeWidthHeight(const NewWidth, NewHeight: Integer); + procedure DrawBackground(DC: HDC; const DrawRect: TRect); virtual; + function GetPalette: HPALETTE; override; ++ function HasVisibleToolbars: Boolean; + procedure InvalidateBackgrounds; + procedure Loaded; override; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure SetParent(AParent: TWinControl); override; ++ function ToolbarVisibleOnDock(const AToolbar: TTBCustomDockableWindow): Boolean; + procedure Paint; override; + function UsingBackground: Boolean; virtual; ++ property ArrangeToolbarsNeeded: Boolean read FArrangeToolbarsNeeded write FArrangeToolbarsNeeded; ++ property DisableArrangeToolbars: Integer read FDisableArrangeToolbars write FDisableArrangeToolbars; + public + constructor Create(AOwner: TComponent); override; + procedure CreateParams(var Params: TCreateParams); override; + destructor Destroy; override; + +- procedure ArrangeToolbars; ++ procedure ArrangeToolbars; virtual; + procedure BeginUpdate; + procedure EndUpdate; + function GetCurrentRowSize(const Row: Integer; var AFullSize: Boolean): Integer; + function GetHighestRow(const HighestEffective: Boolean): Integer; + function GetMinRowSize(const Row: Integer; + const ExcludeControl: TTBCustomDockableWindow): Integer; +@@ -257,12 +260,13 @@ + TTBShrinkMode = (tbsmNone, tbsmWrap, tbsmChevron); + + TTBCustomDockableWindow = class(TCustomControl) + private + { Property variables } + FAutoResize: Boolean; ++ FDblClickUndock: Boolean; + FDockPos, FDockRow, FEffectiveDockPos, FEffectiveDockRow: Integer; + FDocked: Boolean; + FCurrentDock, FDefaultDock, FLastDock: TTBDock; + FCurrentSize: Integer; + FFloating: Boolean; + FOnClose, FOnDockChanged, FOnMove, FOnRecreated, +@@ -419,12 +423,13 @@ + function PaletteChanged(Foreground: Boolean): Boolean; override; + procedure SetParent(AParent: TWinControl); override; + + { Methods accessible to descendants } + procedure Arrange; + function CalcNCSizes: TPoint; virtual; ++ function CanDockTo(ADock: TTBDock): Boolean; virtual; + procedure ChangeSize(AWidth, AHeight: Integer); + function ChildControlTransparent(Ctl: TControl): Boolean; dynamic; + procedure Close; + procedure ControlExistsAtPos(const P: TPoint; var ControlExists: Boolean); virtual; + function DoArrange(CanMoveControls: Boolean; PreviousDockType: TTBDockType; + NewFloating: Boolean; NewDock: TTBDock): TPoint; virtual; abstract; +@@ -443,13 +448,16 @@ + function IsAutoResized: Boolean; + procedure ResizeBegin(SizeHandle: TTBSizeHandle); dynamic; + procedure ResizeEnd; dynamic; + procedure ResizeTrack(var Rect: TRect; const OrigRect: TRect); dynamic; + procedure ResizeTrackAccept; dynamic; + procedure SizeChanging(const AWidth, AHeight: Integer); virtual; ++ property EffectiveDockPosAccess: Integer read FEffectiveDockPos write FEffectiveDockPos; ++ property EffectiveDockRowAccess: Integer read FEffectiveDockRow write FEffectiveDockRow; + public ++ property DblClickUndock: Boolean read FDblClickUndock write FDblClickUndock default True; + property Docked: Boolean read FDocked; + property Canvas; + property CurrentDock: TTBDock read FCurrentDock write SetCurrentDock stored False; + property CurrentSize: Integer read FCurrentSize write FCurrentSize; + property DockPos: Integer read FDockPos write SetDockPos default -1; + property DockRow: Integer read FDockRow write SetDockRow default 0; +@@ -1011,12 +1019,17 @@ + SetBounds(Left, Top-NewHeight+Height, NewWidth, NewHeight); + alRight: + SetBounds(Left-NewWidth+Width, Top, NewWidth, NewHeight); + end; + end; + ++function TTBDock.Accepts(ADockableWindow: TTBCustomDockableWindow): Boolean; ++begin ++ Result := AllowDrag; ++end; ++ + procedure TTBDock.AlignControls(AControl: TControl; var Rect: TRect); + begin + ArrangeToolbars; + end; + + function CompareDockRowPos(const Item1, Item2, ExtraData: Pointer): Integer; far; +@@ -2523,12 +2536,13 @@ + [csAcceptsControls, csClickEvents, csDoubleClicks, csSetCaption] - + [csCaptureMouse{capturing is done manually}, csOpaque]; + FAutoResize := True; + FActivateParent := True; + FBorderStyle := bsSingle; + FCloseButton := True; ++ FDblClickUndock := True; + FDockableTo := [dpTop, dpBottom, dpLeft, dpRight]; + FDockableWindowStyles := [tbdsResizeEightCorner, tbdsResizeClipCursor]; + FDockPos := -1; + FDragHandleStyle := dhSingle; + FEffectiveDockRow := -1; + FHideWhenInactive := True; +@@ -3020,12 +3034,17 @@ + + procedure TTBCustomDockableWindow.RemoveDockForm(const Form: TTBCustomForm); + begin + RemoveFromList(FDockForms, Form); + end; + ++function TTBCustomDockableWindow.CanDockTo(ADock: TTBDock): Boolean; ++begin ++ Result := ADock.Position in DockableTo; ++end; ++ + function TTBCustomDockableWindow.IsAutoResized: Boolean; + begin + Result := AutoResize or Assigned(CurrentDock) or Floating; + end; + + procedure TTBCustomDockableWindow.ChangeSize(AWidth, AHeight: Integer); +@@ -3912,13 +3931,14 @@ + if FDragSplitting then + MouseOverDock := CurrentDock + else begin + { Check if it can dock } + MouseOverDock := nil; + if StartDocking and not PreventDocking then +- for I := 0 to DockList.Count-1 do begin ++ {for I := 0 to DockList.Count-1 do begin} {rl-} ++ for I := DockList.Count-1 downto 0 do begin {rl+} // Robert Lee: CurrentDock should not have the priority + Dock := DockList[I]; + if CheckIfCanDockTo(Dock, FindDockedSize(Dock).BoundsRect) then begin + MouseOverDock := Dock; + Accept := True; + if Assigned(MouseOverDock.FOnRequestDock) then + MouseOverDock.FOnRequestDock(MouseOverDock, Self, Accept); +@@ -3988,17 +4008,12 @@ + if not IsRectEmpty(MoveRect) then + Dropped; + end; + + procedure BuildDockList; + +- function AcceptableDock(const D: TTBDock): Boolean; +- begin +- Result := D.FAllowDrag and (D.Position in DockableTo); +- end; +- + procedure Recurse(const ParentCtl: TWinControl); + var + D: TTBDockPosition; + I: Integer; + begin + if ContainsControl(ParentCtl) or not ParentCtl.Showing then +@@ -4009,25 +4024,25 @@ + if (Controls[I] is TTBDock) and (TTBDock(Controls[I]).Position = D) then + Recurse(TWinControl(Controls[I])); + for I := 0 to ParentCtl.ControlCount-1 do + if (Controls[I] is TWinControl) and not(Controls[I] is TTBDock) then + Recurse(TWinControl(Controls[I])); + end; +- if (ParentCtl is TTBDock) and AcceptableDock(TTBDock(ParentCtl)) and ++ if (ParentCtl is TTBDock) and TTBDock(ParentCtl).Accepts(Self) and CanDockTo(TTBDock(ParentCtl)) and + (DockList.IndexOf(ParentCtl) = -1) then + DockList.Add(ParentCtl); + end; + + var + ParentForm: TTBCustomForm; + DockFormsList: TList; + I, J: Integer; + begin + { Manually add CurrentDock to the DockList first so that it gets priority + over other docks } +- if Assigned(CurrentDock) and AcceptableDock(CurrentDock) then ++ if Assigned(CurrentDock) and CurrentDock.Accepts(Self) and CanDockTo(CurrentDock) then + DockList.Add(CurrentDock); + ParentForm := TBGetToolWindowParentForm(Self); + DockFormsList := TList.Create; + try + if Assigned(FDockForms) then begin + for I := 0 to Screen.{$IFDEF JR_D3}CustomFormCount{$ELSE}FormCount{$ENDIF}-1 do begin +@@ -4313,25 +4328,26 @@ + end; + end; + + procedure TTBCustomDockableWindow.DoubleClick; + begin + if Docked then begin +- if DockMode = dmCanFloat then begin ++ if DblClickUndock and (DockMode = dmCanFloat) then begin + Floating := True; + MoveOnScreen(True); + end; + end +- else +- if Assigned(LastDock) then +- Parent := LastDock +- else +- if Assigned(DefaultDock) then begin +- FDockRow := ForceDockAtTopRow; +- FDockPos := ForceDockAtLeftPos; +- Parent := DefaultDock; ++ else if Floating then begin ++ if Assigned(LastDock) then ++ Parent := LastDock ++ else ++ if Assigned(DefaultDock) then begin ++ FDockRow := ForceDockAtTopRow; ++ FDockPos := ForceDockAtLeftPos; ++ Parent := DefaultDock; ++ end; + end; + end; + + function TTBCustomDockableWindow.IsMovable: Boolean; + begin + Result := (Docked and CurrentDock.FAllowDrag) or Floating; +--- TB2DsgnItemEditor.pas 2005-01-27 00:48:54.000000000 +-0400 ++++ TB2DsgnItemEditor.pas 2005-05-17 19:26:48.000000000 +-0400 +@@ -149,12 +149,18 @@ + function GetValue: String; override; + end; + + procedure TBRegisterItemClass(AClass: TTBCustomItemClass; + const ACaption: String; ResInstance: HINST); + ++type ++ TTBDsgnEditorHook = procedure(Sender: TTBItemEditForm) of object; ++ ++procedure TBRegisterDsgnEditorHook(Hook: TTBDsgnEditorHook); ++procedure TBUnregisterDsgnEditorHook(Hook: TTBDsgnEditorHook); ++ + implementation + + {$R *.DFM} + + uses + TypInfo, CommCtrl, TB2Version, TB2Common, TB2DsgnConverter; +@@ -176,12 +182,13 @@ + ImageIndex: Integer; + end; + + var + ItemClasses: TList; + ItemImageList: TImageList; ++ EditFormHooks: TList; + + {$IFNDEF JR_D6} + function CreateSelectionList: TDesignerSelectionList; + begin + Result := TDesignerSelectionList.Create; + end; +@@ -237,13 +244,24 @@ + end; + + procedure TBRegisterItemClass(AClass: TTBCustomItemClass; + const ACaption: String; ResInstance: HINST); + var + Info: PItemClassInfo; ++ I: Integer; + begin ++ if ItemClasses <> nil then ++ for I := ItemClasses.Count - 1 downto 0 do ++ begin ++ Info := ItemClasses[I]; ++ if Info.ItemClass = AClass then ++ begin ++ Dispose(Info); ++ ItemClasses.Delete(I); ++ end; ++ end; + New(Info); + Info.ItemClass := AClass; + Info.Caption := ACaption; + Info.ImageIndex := LoadItemImage(ResInstance, Uppercase(AClass.ClassName)); + ItemClasses.Add(Info); + end; +@@ -357,12 +375,17 @@ + Item.Caption := Info.Caption; + Item.ImageIndex := GetItemClassImage(Info.ItemClass); + Item.Tag := Integer(Info.ItemClass); + Item.OnClick := MoreItemClick; + MoreMenu.Add(Item); + end; ++ { Run the hooks } ++ ++ if EditFormHooks <> nil then ++ for I := 0 to EditFormHooks.Count - 1 do ++ TTBDsgnEditorHook(EditFormHooks[I]^)(Self); + end; + + destructor TTBItemEditForm.Destroy; + begin + inherited; + if Assigned(FNotifyItemList) then begin +@@ -1332,17 +1355,47 @@ + + function TTBItemsPropertyEditor.GetValue: String; + begin + Result := '(TB2000 Items)'; + end; + ++ ++procedure TBRegisterDsgnEditorHook(Hook: TTBDsgnEditorHook); ++var ++ H: ^TTBDsgnEditorHook; ++begin ++ New(H); ++ H^ := Hook; ++ EditFormHooks.Add(H); ++end; ++ ++procedure TBUnregisterDsgnEditorHook(Hook: TTBDsgnEditorHook); ++var ++ H: ^TTBDsgnEditorHook; ++ I: Integer; ++begin ++ for I := EditFormHooks.Count - 1 downto 0 do ++ begin ++ H := EditFormHooks[I]; ++ if (TMethod(H^).Code = TMethod(Hook).Code) and ++ (TMethod(H^).Data = TMethod(Hook).Data) then ++ begin ++ Dispose(H); ++ EditFormHooks.Delete(I); ++// Break; ++ end; ++ end; ++end; ++ + initialization + ItemImageList := TImageList.Create(nil); + ItemImageList.Handle := ImageList_LoadImage(HInstance, 'TB2_DSGNEDITORIMAGES', + 16, 0, clFuchsia, IMAGE_BITMAP, 0); + ItemClasses := TList.Create; ++ EditFormHooks := TList.Create; + AddModuleUnloadProc(UnregisterModuleItemClasses); + finalization + RemoveModuleUnloadProc(UnregisterModuleItemClasses); + FreeItemClasses; + FreeAndNil(ItemImageList); ++ FreeAndNil(EditFormHooks); + end. +--- TB2ExtItems.pas 2005-07-03 21:49:52.000000000 +-0400 ++++ TB2ExtItems.pas 2005-07-11 04:36:00.000000000 +-0400 +@@ -40,12 +40,17 @@ + TTBEditItemOptions = set of TTBEditItemOption; + + const + EditItemDefaultEditOptions = []; + EditItemDefaultEditWidth = 64; + ++{ Change reasons for TTBEditItem.Text property } ++ tcrSetProperty = 0; // direct assignment to TTBEditItem.Text property ++ tcrActionLink = 1; // change comes from an action link ++ tcrEditControl = 2; // change is caused by typing in edit area ++ + type + TTBEditItem = class; + TTBEditItemViewer = class; + + TTBAcceptTextEvent = procedure(Sender: TObject; var NewText: String; + var Accept: Boolean) of object; +@@ -93,12 +98,13 @@ + TTBEditItem = class(TTBCustomItem) + private + FCharCase: TEditCharCase; + FEditCaption: String; + FEditOptions: TTBEditItemOptions; + FEditWidth: Integer; ++ FExtendedAccept: Boolean; + FMaxLength: Integer; + FOnAcceptText: TTBAcceptTextEvent; + FOnBeginEdit: TTBBeginEditEvent; + FText: String; + function IsEditCaptionStored: Boolean; + function IsEditOptionsStored: Boolean; +@@ -109,16 +115,21 @@ + procedure SetEditOptions(Value: TTBEditItemOptions); + procedure SetEditWidth(Value: Integer); + procedure SetMaxLength(Value: Integer); + procedure SetText(Value: String); + protected + procedure ActionChange(Sender: TObject; CheckDefaults: Boolean); override; ++ function DoAcceptText(var NewText: string): Boolean; virtual; + procedure DoBeginEdit(Viewer: TTBEditItemViewer); virtual; ++ procedure DoTextChanging(const OldText: String; var NewText: String; Reason: Integer); virtual; ++ procedure DoTextChanged(Reason: Integer); virtual; + function GetActionLinkClass: TTBCustomItemActionLinkClass; override; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + function NeedToRecreateViewer(AViewer: TTBItemViewer): Boolean; override; ++ property ExtendedAccept: Boolean read FExtendedAccept write FExtendedAccept default False; ++ procedure SetTextEx(Value: String; Reason: Integer); + public + constructor Create(AOwner: TComponent); override; + procedure Clear; + procedure Click; override; + published + property Action; +@@ -143,12 +154,14 @@ + + property OnAcceptText: TTBAcceptTextEvent read FOnAcceptText write FOnAcceptText; + property OnBeginEdit: TTBBeginEditEvent read FOnBeginEdit write FOnBeginEdit; + property OnClick; + property OnSelect; + end; ++ ++ TEditClass = class of TEdit; + + TTBEditItemViewer = class(TTBItemViewer) + private + FEditControl: TEdit; + FEditControlStatus: set of (ecsContinueLoop, ecsAccept, ecsClose); + function EditLoop(const CapHandle: HWND): Boolean; +@@ -160,12 +173,13 @@ + function CaptionShown: Boolean; override; + function DoExecute: Boolean; override; + function GetAccRole: Integer; override; + function GetAccValue(var Value: WideString): Boolean; override; + function GetCaptionText: String; override; + procedure GetCursor(const Pt: TPoint; var ACursor: HCURSOR); override; ++ function GetEditControlClass: TEditClass; virtual; + procedure GetEditRect(var R: TRect); virtual; + procedure MouseDown(Shift: TShiftState; X, Y: Integer; + var MouseDownOnMenu: Boolean); override; + procedure MouseUp(X, Y: Integer; MouseWasDownOnMenu: Boolean); override; + procedure Paint(const Canvas: TCanvas; const ClientAreaRect: TRect; + IsSelected, IsPushed, UseDisabledShadow: Boolean); override; +@@ -363,13 +377,13 @@ + begin + if IsOnAcceptTextLinked then TTBEditItem(FClient).OnAcceptText := Value; + end; + + procedure TTBEditItemActionLink.SetText(const Value: String); + begin +- if IsTextLinked then TTBEditItem(FClient).Text := Value; ++ if IsTextLinked then TTBEditItem(FClient).SetTextEx(Value , tcrActionLink); + end; + + + { TTBEditItem } + + constructor TTBEditItem.Create(AOwner: TComponent); +@@ -387,13 +401,13 @@ + begin + if not CheckDefaults or (Self.EditCaption = '') then + Self.EditCaption := EditCaption; + if not CheckDefaults or (Self.EditOptions = []) then + Self.EditOptions := EditOptions; + if not CheckDefaults or (Self.Text = '') then +- Self.Text := Text; ++ Self.SetTextEx(Text, tcrActionLink); + if not CheckDefaults or not Assigned(Self.OnAcceptText) then + Self.OnAcceptText := OnAcceptText; + end; + end; + + function TTBEditItem.GetActionLinkClass: TTBCustomItemActionLinkClass; +@@ -494,21 +508,47 @@ + if FMaxLength <> Value then begin + FMaxLength := Value; + Change(False); + end; + end; + ++function TTBEditItem.DoAcceptText(var NewText: string): Boolean; ++begin ++ Result := True; ++ if Assigned(FOnAcceptText) then FOnAcceptText(Self, NewText, Result); ++end; ++ ++procedure TTBEditItem.DoTextChanging(const OldText: String; var NewText: String; Reason: Integer); ++begin ++ case FCharCase of ++ ecUpperCase: NewText := AnsiUpperCase(NewText); ++ ecLowerCase: NewText := AnsiLowerCase(NewText); ++ end; ++end; ++ ++procedure TTBEditItem.DoTextChanged(Reason: Integer); ++begin ++end; ++ + procedure TTBEditItem.SetText(Value: String); + begin +- case FCharCase of +- ecUpperCase: Value := AnsiUpperCase(Value); +- ecLowerCase: Value := AnsiLowerCase(Value); +- end; ++ DoTextChanging(FText, Value, tcrSetProperty); ++ if FText <> Value then begin ++ FText := Value; ++ Change(False); ++ DoTextChanged(tcrSetProperty); ++ end; ++end; ++ ++procedure TTBEditItem.SetTextEx(Value: String; Reason: Integer); ++begin ++ DoTextChanging(FText, Value, Reason); + if FText <> Value then begin + FText := Value; + Change(False); ++ DoTextChanged(Reason); + end; + end; + + + { TTBEditItemViewer } + +@@ -516,20 +556,15 @@ + var + Item: TTBEditItem; + + procedure AcceptText; + var + S: String; +- Accept: Boolean; + begin + S := FEditControl.Text; +- Accept := True; +- if Assigned(Item.FOnAcceptText) then +- Item.FOnAcceptText(Self, S, Accept); +- if Accept then +- Item.Text := S; ++ if Item.DoAcceptText(S) then Item.SetTextEx(S, tcrEditControl); + end; + + begin + Item := TTBEditItem(Self.Item); + if FEditControl = nil then + Exit; +@@ -555,12 +590,17 @@ + { Someone has stolen the focus from us, so 'cancel mode'. (We have to + handle WM_KILLFOCUS in addition to the upstream WM_CANCELMODE handling + since we don't always hold the mouse capture.) } + View.CancelMode; + FEditControlStatus := [ecsClose]; + end; ++end; ++ ++function TTBEditItemViewer.GetEditControlClass: TEditClass; ++begin ++ Result := TEdit; + end; + + procedure TTBEditItemViewer.GetEditRect(var R: TRect); + var + Item: TTBEditItem; + DC: HDC; +@@ -785,12 +825,13 @@ + end; + + var + Item: TTBEditItem; + R: TRect; + ActiveWnd, FocusWnd: HWND; ++ S: string; + begin + Item := TTBEditItem(Self.Item); + GetEditRect(R); + if IsRectEmpty(R) then begin + Result := False; + Exit; +@@ -798,14 +839,14 @@ + + ActiveWnd := GetActiveWindow; + FocusWnd := GetFocus; + + { Create the edit control } + InflateRect(R, -3, -3); +- //View.FreeNotification(Self); +- FEditControl := TEdit.Create(nil); ++ //View.FreeNotification (Self); ++ FEditControl := GetEditControlClass.Create(nil); + try + FEditControl.Name := Format('%s_edit_control_%p', [ClassName, + Pointer(FEditControl)]); + FEditControl.Visible := False; + FEditControl.BorderStyle := bsNone; + FEditControl.AutoSize := False; +@@ -826,14 +867,19 @@ + else + ActiveWnd := 0; + + FEditControlStatus := [ecsContinueLoop]; + ControlMessageLoop; + finally ++ S := FEditControl.Text; + FreeAndNil(FEditControl); + end; ++ ++ with TTBEditItem(Item) do ++ if (FEditControlStatus = [ecsContinueLoop]) and ExtendedAccept then ++ if DoAcceptText(S) then SetTextEx(S, tcrEditControl); + + { ensure the area underneath the edit control is repainted immediately } + View.Window.Update; + { If app is still active, set focus to previous control and restore capture + to CapHandle if another control hasn't taken it } + if GetActiveWindow <> 0 then begin +--- TB2Item.pas 2005-06-23 16:55:44.000000000 +-0400 ++++ TB2Item.pas 2005-08-12 08:32:48.000000000 +-0400 +@@ -38,12 +38,20 @@ + XP with themes enabled. } + + uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + StdCtrls, CommCtrl, Menus, ActnList, ImgList, TB2Anim; + ++const ++ WM_TB2K_POPUPSHOWING = WM_USER + 554; ++ ++ { Parameter in LParam of WM_TB2K_POPUPSHOWING } ++ TPS_ANIMSTART = 1; // animation query: if Result <> 0, do not animate! ++ TPS_ANIMFINISHED = 2; // only fired when animation thread is done ++ TPS_NOANIM = 3; // fired when animation is done, or if showing with no animation ++ + type + TTBCustomItem = class; + TTBCustomItemClass = class of TTBCustomItem; + TTBCustomItemActionLink = class; + TTBCustomItemActionLinkClass = class of TTBCustomItemActionLink; + TTBItemViewer = class; +@@ -79,13 +87,13 @@ + tboLongHintInMenuOnly, tboNoAutoHint, tboNoRotation, tboSameWidth, + tboShowHint, tboToolbarStyle, tboToolbarSize); + TTBItemOptions = set of TTBItemOption; + TTBItemStyle = set of (tbisSubmenu, tbisSelectable, tbisSeparator, + tbisEmbeddedGroup, tbisClicksTransparent, tbisCombo, tbisNoAutoOpen, + tbisSubitemsEditable, tbisNoLineBreak, tbisRightAlign, tbisDontSelectFirst, +- tbisRedrawOnSelChange, tbisRedrawOnMouseOverChange); ++ tbisRedrawOnSelChange, tbisRedrawOnMouseOverChange, tbisStretch); + TTBPopupAlignment = (tbpaLeft, tbpaRight, tbpaCenter); + TTBPopupEvent = procedure(Sender: TTBCustomItem; FromLink: Boolean) of object; + TTBSelectEvent = procedure(Sender: TTBCustomItem; Viewer: TTBItemViewer; + Selecting: Boolean) of object; + + ETBItemError = class(Exception); +@@ -94,12 +102,24 @@ + private + FLastWidth, FLastHeight: Integer; + end; + {$IFNDEF JR_D5} + TImageIndex = type Integer; + {$ENDIF} ++ TTBPopupPositionRec = record ++ PositionAsSubmenu: Boolean; ++ Alignment: TTBPopupAlignment; ++ Opposite: Boolean; ++ MonitorRect: TRect; ++ ParentItemRect: TRect; ++ NCSizeX: Integer; ++ NCSizeY: Integer; ++ X, Y, W, H: Integer; ++ AnimDir: TTBAnimationDirection; ++ PlaySound: Boolean; ++ end; + + TTBCustomItem = class(TComponent) + private + FActionLink: TTBCustomItemActionLink; + FAutoCheck: Boolean; + FCaption: String; +@@ -185,12 +205,14 @@ + procedure DoPopup(Sender: TTBCustomItem; FromLink: Boolean); virtual; + procedure EnabledChanged; virtual; + function GetActionLinkClass: TTBCustomItemActionLinkClass; dynamic; + function GetChevronParentView: TTBView; virtual; + procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; virtual; ++ procedure GetPopupPosition(ParentView: TTBView; ++ PopupWindow: TTBPopupWindow; var PopupPositionRec: TTBPopupPositionRec); virtual; + function GetPopupWindowClass: TTBPopupWindowClass; virtual; + procedure IndexError; + procedure Loaded; override; + function NeedToRecreateViewer(AViewer: TTBItemViewer): Boolean; virtual; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + function OpenPopup(const SelectFirstItem, TrackRightButton: Boolean; +@@ -317,21 +339,21 @@ + procedure CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); + virtual; + function CaptionShown: Boolean; dynamic; + function DoExecute: Boolean; virtual; + procedure DrawItemCaption(const Canvas: TCanvas; ARect: TRect; + const ACaption: String; ADrawDisabledShadow: Boolean; AFormat: UINT); virtual; +- procedure Entering; virtual; ++ procedure Entering(OldSelected: TTBItemViewer); virtual; + function GetAccRole: Integer; virtual; + function GetAccValue(var Value: WideString): Boolean; virtual; + function GetCaptionText: String; virtual; + procedure GetCursor(const Pt: TPoint; var ACursor: HCURSOR); virtual; + function GetImageList: TCustomImageList; + function ImageShown: Boolean; + function IsRotated: Boolean; +- function IsToolbarSize: Boolean; ++ function IsToolbarSize: Boolean; virtual; + function IsPtInButtonPart(X, Y: Integer): Boolean; virtual; + procedure KeyDown(var Key: Word; Shift: TShiftState); virtual; + procedure Leaving; virtual; + procedure LosingCapture; virtual; + procedure MouseDown(Shift: TShiftState; X, Y: Integer; + var MouseDownOnMenu: Boolean); virtual; +@@ -354,13 +376,13 @@ + constructor Create(AView: TTBView; AItem: TTBCustomItem; AGroupLevel: Integer); virtual; + destructor Destroy; override; + procedure Execute(AGivePriority: Boolean); + function GetAccObject: IDispatch; + function GetHintText: String; + function IsAccessible: Boolean; +- function IsToolbarStyle: Boolean; ++ function IsToolbarStyle: Boolean; virtual; + function ScreenToClient(const P: TPoint): TPoint; + end; + PTBItemViewerArray = ^TTBItemViewerArray; + TTBItemViewerArray = array[0..$7FFFFFFF div SizeOf(TTBItemViewer)-1] of TTBItemViewer; + TTBViewOrientation = (tbvoHorizontal, tbvoVertical, tbvoFloating); + TTBEnterToolbarLoopOptions = set of (tbetMouseDown, tbetExecuteSelected, +@@ -452,12 +474,16 @@ + function GetRootView: TTBView; + function HandleWMGetObject(var Message: TMessage): Boolean; + procedure InitiateActions; + procedure KeyDown(var Key: Word; Shift: TShiftState); virtual; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure SetAccelsVisibility(AShowAccels: Boolean); ++ procedure SetState(AState: TTBViewState); ++ property DoneActionData: TTBDoneActionData read FDoneActionData write FDoneActionData; ++ property ShowDownArrow: Boolean read FShowDownArrow; {vb+} ++ property ShowUpArrow: Boolean read FShowUpArrow; {vb+} + public + constructor CreateView(AOwner: TComponent; AParentView: TTBView; + AParentItem: TTBCustomItem; AWindow: TWinControl; + AIsToolbar, ACustomizing, AUsePriorityList: Boolean); virtual; + destructor Destroy; override; + procedure BeginUpdate; +@@ -663,19 +689,22 @@ + procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE; + procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT; + procedure WMPaint(var Message: TWMPaint); message WM_PAINT; + procedure WMPrint(var Message: TMessage); message WM_PRINT; + procedure WMPrintClient(var Message: TMessage); message WM_PRINTCLIENT; + procedure WMTB2kStepAnimation(var Message: TMessage); message WM_TB2K_STEPANIMATION; ++ procedure WMTB2kAnimationEnded (var Message: TMessage); message WM_TB2K_ANIMATIONENDED; + protected + procedure CreateParams(var Params: TCreateParams); override; + procedure CreateWnd; override; + procedure DestroyWindowHandle; override; ++ function GetNCSize: TPoint; dynamic; + function GetViewClass: TTBViewClass; dynamic; + procedure Paint; override; + procedure PaintScrollArrows; virtual; ++ property AnimationDirection: TTBAnimationDirection read FAnimationDirection; + public + constructor CreatePopupWindow(AOwner: TComponent; const AParentView: TTBView; + const AItem: TTBCustomItem; const ACustomizing: Boolean); virtual; + destructor Destroy; override; + procedure BeforeDestruction; override; + +@@ -811,26 +840,12 @@ + + procedure TBInitToolbarSystemFont; + + var + ToolbarFont: TFont; + +- +-implementation +- +-uses +- MMSYSTEM, TB2Consts, TB2Common, IMM, TB2Acc; +- +-var +- LastPos: TPoint; +- +-threadvar +- ClickWndRefCount: Integer; +- ClickWnd: HWND; +- ClickList: TList; +- + type + TTBModalHandler = class + private + FCreatedWnd: Boolean; + FInited: Boolean; + FWnd: HWND; +@@ -842,12 +857,29 @@ + procedure Loop(const RootView: TTBView; const AMouseDown, AExecuteSelected, + AFromMSAA, TrackRightButton: Boolean); + property RootPopup: TTBPopupWindow read FRootPopup write FRootPopup; + property Wnd: HWND read FWnd; + end; + ++function ProcessDoneAction(const DoneActionData: TTBDoneActionData; ++ const ReturnClickedItemOnly: Boolean): TTBCustomItem; ++ ++implementation ++ ++uses ++ MMSYSTEM, TB2Consts, TB2Common, IMM, TB2Acc; ++ ++var ++ LastPos: TPoint; ++ ++threadvar ++ ClickWndRefCount: Integer; ++ ClickWnd: HWND; ++ ClickList: TList; ++ ++type + PItemChangedNotificationData = ^TItemChangedNotificationData; + TItemChangedNotificationData = record + Proc: TTBItemChangedProc; + RefCount: Integer; + end; + +@@ -1678,16 +1710,17 @@ + Click; + end; + + var + PlayedSound: Boolean = False; + +-function TTBCustomItem.CreatePopup(const ParentView: TTBView; +- const ParentViewer: TTBItemViewer; const PositionAsSubmenu, SelectFirstItem, +- Customizing: Boolean; const APopupPoint: TPoint; +- const Alignment: TTBPopupAlignment): TTBPopupWindow; ++procedure TTBCustomItem.GetPopupPosition(ParentView: TTBView; ++ PopupWindow: TTBPopupWindow; var PopupPositionRec: TTBPopupPositionRec); ++var ++ X2, Y2: Integer; ++ RepeatCalcX: Boolean; + + function CountObscured(X, Y, W, H: Integer): Integer; + var + I: Integer; + P: TPoint; + V: TTBItemViewer; +@@ -1705,129 +1738,24 @@ + if V.Show and (V.BoundsRect.Left >= X) and (V.BoundsRect.Right <= W) and + (V.BoundsRect.Top >= Y) and (V.BoundsRect.Bottom <= H) then + Inc(Result); + end; + end; + +-var +- EventItem, ParentItem: TTBCustomItem; +- Opposite: Boolean; +- ChevronParentView: TTBView; +- X, X2, Y, Y2, W, H: Integer; +- P: TPoint; +- RepeatCalcX: Boolean; +- ParentItemRect: TRect; +- MonitorRect: TRect; +- AnimDir: TTBAnimationDirection; + begin +- EventItem := ItemContainingItems(Self); +- if EventItem <> Self then +- EventItem.DoPopup(Self, True); +- DoPopup(Self, False); +- +- ChevronParentView := GetChevronParentView; +- if ChevronParentView = nil then +- ParentItem := Self +- else +- ParentItem := ChevronParentView.FParentItem; +- +- Opposite := Assigned(ParentView) and (vsOppositePopup in ParentView.FState); +- Result := GetPopupWindowClass.CreatePopupWindow(nil, ParentView, ParentItem, +- Customizing); +- try +- if Assigned(ChevronParentView) then begin +- ChevronParentView.FreeNotification(Result.View); +- Result.View.FChevronParentView := ChevronParentView; +- Result.View.FIsToolbar := True; +- Result.View.Style := Result.View.Style + +- (ChevronParentView.Style * [vsAlwaysShowHints]); +- Result.Color := clBtnFace; +- end; +- +- { Calculate ParentItemRect, and MonitorRect (the rectangle of the monitor +- that the popup window will be confined to) } +- if Assigned(ParentView) then begin +- ParentView.ValidatePositions; +- ParentItemRect := ParentViewer.BoundsRect; +- P := ParentView.FWindow.ClientToScreen(Point(0, 0)); +- OffsetRect(ParentItemRect, P.X, P.Y); +- if not IsRectEmpty(ParentView.FMonitorRect) then +- MonitorRect := ParentView.FMonitorRect +- else +- MonitorRect := GetRectOfMonitorContainingRect(ParentItemRect, False); +- end +- else begin +- ParentItemRect.TopLeft := APopupPoint; +- ParentItemRect.BottomRight := APopupPoint; +- MonitorRect := GetRectOfMonitorContainingPoint(APopupPoint, False); +- end; +- Result.View.FMonitorRect := MonitorRect; +- +- { Initialize item positions and size of the popup window } +- if ChevronParentView = nil then +- Result.View.FMaxHeight := (MonitorRect.Bottom - MonitorRect.Top) - +- (PopupMenuWindowNCSize * 2) +- else +- Result.View.WrapOffset := (MonitorRect.Right - MonitorRect.Left) - +- (PopupMenuWindowNCSize * 2); +- if SelectFirstItem then +- Result.View.Selected := Result.View.FirstSelectable; +- Result.View.UpdatePositions; +- W := Result.Width; +- H := Result.Height; +- +- { Calculate initial X,Y position of the popup window } +- if Assigned(ParentView) then begin +- if not PositionAsSubmenu then begin +- if ChevronParentView = nil then begin +- if (ParentView = nil) or (ParentView.FOrientation <> tbvoVertical) then begin +- if GetSystemMetrics(SM_MENUDROPALIGNMENT) = 0 then +- X := ParentItemRect.Left +- else +- X := ParentItemRect.Right - W; +- Y := ParentItemRect.Bottom; +- end +- else begin +- X := ParentItemRect.Left - W; +- Y := ParentItemRect.Top; +- end; +- end +- else begin +- if ChevronParentView.FOrientation <> tbvoVertical then begin +- X := ParentItemRect.Right - W; +- Y := ParentItemRect.Bottom; +- end +- else begin +- X := ParentItemRect.Left - W; +- Y := ParentItemRect.Top; +- end; +- end; +- end +- else begin +- X := ParentItemRect.Right - PopupMenuWindowNCSize; +- Y := ParentItemRect.Top - PopupMenuWindowNCSize; +- end; +- end +- else begin +- X := APopupPoint.X; +- Y := APopupPoint.Y; +- case Alignment of +- tbpaRight: Dec(X, W); +- tbpaCenter: Dec(X, W div 2); +- end; +- end; +- ++ with PopupPositionRec do ++ begin + { Adjust the Y position of the popup window } + { If the window is going off the bottom of the monitor, try placing it + above the parent item } + if (Y + H > MonitorRect.Bottom) and + ((ParentView = nil) or (ParentView.FOrientation <> tbvoVertical)) then begin + if not PositionAsSubmenu then + Y2 := ParentItemRect.Top + else +- Y2 := ParentItemRect.Bottom + PopupMenuWindowNCSize; ++ Y2 := ParentItemRect.Bottom + NCSizeY; + Dec(Y2, H); + { Only place it above the parent item if it isn't going to go off the + top of the monitor } + if Y2 >= MonitorRect.Top then + Y := Y2; + end; +@@ -1897,23 +1825,23 @@ + runs out of space on the screen, switch directions } + repeat + RepeatCalcX := False; + X2 := X; + if Opposite or (X2 + W > MonitorRect.Right) then begin + if Assigned(ParentView) then +- X2 := ParentItemRect.Left + PopupMenuWindowNCSize; ++ X2 := ParentItemRect.Left + NCSizeX; + Dec(X2, W); + if not Opposite then +- Include(Result.View.FState, vsOppositePopup) ++ Include(PopupWindow.View.FState, vsOppositePopup) + else begin + if X2 < MonitorRect.Left then begin + Opposite := False; + RepeatCalcX := True; + end + else +- Include(Result.View.FState, vsOppositePopup); ++ Include(PopupWindow.View.FState, vsOppositePopup); + end; + end; + until not RepeatCalcX; + X := X2; + if X < MonitorRect.Left then + X := MonitorRect.Left; +@@ -1934,14 +1862,149 @@ + else begin + if X + W div 2 >= ParentItemRect.Left + (ParentItemRect.Right - ParentItemRect.Left) div 2 then + Include(AnimDir, tbadRight) + else + Include(AnimDir, tbadLeft); + end; +- Result.FAnimationDirection := AnimDir; ++ end; ++end; ++ ++function TTBCustomItem.CreatePopup(const ParentView: TTBView; ++ const ParentViewer: TTBItemViewer; const PositionAsSubmenu, SelectFirstItem, ++ Customizing: Boolean; const APopupPoint: TPoint; ++ const Alignment: TTBPopupAlignment): TTBPopupWindow; ++var ++ EventItem, ParentItem: TTBCustomItem; ++ Opposite: Boolean; ++ ChevronParentView: TTBView; ++ X, Y, W, H: Integer; ++ P: TPoint; ++ ParentItemRect: TRect; ++ MonitorRect: TRect; ++ PopupRec: TTBPopupPositionRec; ++ NCSize: TPoint; ++begin ++ EventItem := ItemContainingItems(Self); ++ if EventItem <> Self then ++ EventItem.DoPopup(Self, True); ++ DoPopup(Self, False); ++ ++ ChevronParentView := GetChevronParentView; ++ if ChevronParentView = nil then ++ ParentItem := Self ++ else ++ ParentItem := ChevronParentView.FParentItem; ++ ++ Opposite := Assigned(ParentView) and (vsOppositePopup in ParentView.FState); ++ Result := GetPopupWindowClass.CreatePopupWindow(nil, ParentView, ParentItem, ++ Customizing); ++ try ++ if Assigned(ChevronParentView) then begin ++ ChevronParentView.FreeNotification(Result.View); ++ Result.View.FChevronParentView := ChevronParentView; ++ Result.View.FIsToolbar := True; ++ Result.View.Style := Result.View.Style + ++ (ChevronParentView.Style * [vsAlwaysShowHints]); ++ Result.Color := clBtnFace; ++ end; + ++ { Calculate ParentItemRect, and MonitorRect (the rectangle of the monitor ++ that the popup window will be confined to) } ++ if Assigned(ParentView) then begin ++ ParentView.ValidatePositions; ++ ParentItemRect := ParentViewer.BoundsRect; ++ P := ParentView.FWindow.ClientToScreen(Point(0, 0)); ++ OffsetRect(ParentItemRect, P.X, P.Y); ++ if not IsRectEmpty(ParentView.FMonitorRect) then ++ MonitorRect := ParentView.FMonitorRect ++ else ++ {MonitorRect := GetRectOfMonitorContainingPoint(APopupPoint, False);} {vb-} ++ MonitorRect := GetRectOfMonitorContainingPoint(APopupPoint, True); {vb+} ++ end ++ else begin ++ ParentItemRect.TopLeft := APopupPoint; ++ ParentItemRect.BottomRight := APopupPoint; ++ {MonitorRect := GetRectOfMonitorContainingPoint(APopupPoint, False);} {vb-} ++ MonitorRect := GetRectOfMonitorContainingPoint(APopupPoint, True); {vb+} ++ end; ++ Result.View.FMonitorRect := MonitorRect; ++ ++ { Initialize item positions and size of the popup window } ++ NCSize := Result.GetNCSize; ++ if ChevronParentView = nil then ++ Result.View.FMaxHeight := (MonitorRect.Bottom - MonitorRect.Top) - ++ (NCSize.Y * 2) ++ else ++ Result.View.WrapOffset := (MonitorRect.Right - MonitorRect.Left) - ++ (NCSize.X * 2); ++ if SelectFirstItem then ++ Result.View.Selected := Result.View.FirstSelectable; ++ Result.View.UpdatePositions; ++ W := Result.Width; ++ H := Result.Height; ++ ++ { Calculate initial X,Y position of the popup window } ++ if Assigned(ParentView) then begin ++ if not PositionAsSubmenu then begin ++ if ChevronParentView = nil then begin ++ if (ParentView = nil) or (ParentView.FOrientation <> tbvoVertical) then begin ++ if GetSystemMetrics(SM_MENUDROPALIGNMENT) = 0 then ++ X := ParentItemRect.Left ++ else ++ X := ParentItemRect.Right - W; ++ Y := ParentItemRect.Bottom; ++ end ++ else begin ++ X := ParentItemRect.Left - W; ++ Y := ParentItemRect.Top; ++ end; ++ end ++ else begin ++ if ChevronParentView.FOrientation <> tbvoVertical then begin ++ X := ParentItemRect.Right - W; ++ Y := ParentItemRect.Bottom; ++ end ++ else begin ++ X := ParentItemRect.Left - W; ++ Y := ParentItemRect.Top; ++ end; ++ end; ++ end ++ else begin ++ X := ParentItemRect.Right - NCSize.X; ++ Y := ParentItemRect.Top - NCSize.Y; ++ end; ++ end ++ else begin ++ X := APopupPoint.X; ++ Y := APopupPoint.Y; ++ case Alignment of ++ tbpaRight: Dec(X, W); ++ tbpaCenter: Dec(X, W div 2); ++ end; ++ end; ++ ++ PopupRec.PositionAsSubmenu := PositionAsSubmenu; ++ PopupRec.Alignment := Alignment; ++ PopupRec.Opposite := Opposite; ++ PopupRec.MonitorRect := MonitorRect; ++ PopupRec.ParentItemRect := ParentItemRect; ++ PopupRec.NCSizeX := NCSize.X; ++ PopupRec.NCSizeY := NCSize.Y; ++ PopupRec.X := X; ++ PopupRec.Y := Y; ++ PopupRec.W := W; ++ PopupRec.H := H; ++ PopupRec.AnimDir := []; ++ PopupRec.PlaySound := True; ++ GetPopupPosition(ParentView, Result, PopupRec); ++ X := PopupRec.X; ++ Y := PopupRec.Y; ++ W := PopupRec.W; ++ H := PopupRec.H; ++ Result.FAnimationDirection := PopupRec.AnimDir; + Result.SetBounds(X, Y, W, H); + if Assigned(ParentView) then begin + Result.FreeNotification(ParentView); + ParentView.FOpenViewerWindow := Result; + ParentView.FOpenViewerView := Result.View; + ParentView.FOpenViewer := ParentViewer; +@@ -1949,13 +2012,13 @@ + Include(ParentView.FState, vsDropDownMenus); + ParentView.Invalidate(ParentViewer); + ParentView.FWindow.Update; + end; + end; + Include(Result.View.FState, vsDrawInOrder); +- if not NeedToPlaySound('MenuPopup') then begin ++ if not PopupRec.PlaySound or not NeedToPlaySound('MenuPopup') then begin + { Don't call PlaySound if we don't have to } + Result.Visible := True; + end + else begin + if not PlayedSound then begin + { Work around Windows 2000 "bug" where there's a 1/3 second delay upon the +@@ -2626,12 +2689,13 @@ + P := Pos(#9, Result); + if P <> 0 then + SetLength(Result, P-1); + end; + + function TTBItemViewer.GetHintText: String; ++var P: Integer; + begin + Result := GetShortHint(Item.Hint); + { If there is no short hint, use the caption for the hint. Like Office, + strip any trailing colon or ellipsis. } + if (Result = '') and not(tboNoAutoHint in Item.EffectiveOptions) and + (not(tbisSubmenu in Item.ItemStyle) or (tbisCombo in Item.ItemStyle) or +@@ -2643,15 +2707,22 @@ + if not TCustomAction(Item.ActionLink.Action).DoHint(Result) then + Result := ''; + { Note: TControlActionLink.DoShowHint actually misinterprets the result + of DoHint, but we get it right... } + end; + { Add shortcut text } +- if (Result <> '') and Application.HintShortCuts and +- (Item.ShortCut <> scNone) then +- Result := Format('%s (%s)', [Result, ShortCutToText(Item.ShortCut)]); ++ if (Result <> '') and Application.HintShortCuts then ++ begin ++ { Custom shortcut } ++ P := Pos(#9, Item.Caption); ++ if (P <> 0) and (P < Length(Item.Caption)) then ++ Result := Format('%s (%s)', [Result, Copy(Item.Caption, P+ 1, MaxInt)]) ++ else ++ if (Item.ShortCut <> scNone) then ++ Result := Format('%s (%s)', [Result, ShortCutToText(Item.ShortCut)]); ++ end; + end; + + function TTBItemViewer.CaptionShown: Boolean; + begin + Result := (GetCaptionText <> '') and (not IsToolbarSize or + (Item.ImageIndex < 0) or (Item.DisplayMode in [nbdmTextOnly, nbdmImageAndText])) or +@@ -3283,13 +3354,13 @@ + + procedure TTBItemViewer.LosingCapture; + begin + View.Invalidate(Self); + end; + +-procedure TTBItemViewer.Entering; ++procedure TTBItemViewer.Entering(OldSelected: TTBItemViewer); + begin + if Assigned(Item.FOnSelect) then + Item.FOnSelect(Item, Self, True); + end; + + procedure TTBItemViewer.Leaving; +@@ -4086,13 +4157,13 @@ + FMouseOverSelected := NewMouseOverSelected; + if Assigned(OldSelected) and (tbisRedrawOnSelChange in OldSelected.Item.ItemStyle) then + Invalidate(OldSelected); + if Assigned(Value) then begin + if tbisRedrawOnSelChange in Value.Item.ItemStyle then + Invalidate(Value); +- Value.Entering; ++ Value.Entering(OldSelected); + end; + NotifyFocusEvent; + + { Handle automatic opening of a child popup } + if vsModal in FState then begin + { If the view is a toolbar, immediately open any child popup } +@@ -4379,13 +4450,13 @@ + if LastLine and not DidWrap and (AOrientation <> tbvoFloating) then begin + { In case the toolbar is docked next to a taller/wider toolbar... } + HighestWidthOnLine := TotalSize.X; + HighestHeightOnLine := TotalSize.Y; + end; + { Make separators on toolbars as tall/wide as the tallest/widest item } +- if tbisSeparator in Item.ItemStyle then begin ++ if [tbisSeparator, tbisStretch] * Item.ItemStyle <> [] then begin + if AOrientation <> tbvoVertical then + Pos.BoundsRect.Bottom := Pos.BoundsRect.Top + HighestHeightOnLine + else + Pos.BoundsRect.Right := Pos.BoundsRect.Left + HighestWidthOnLine; + end + else begin +@@ -5692,12 +5763,16 @@ + + { Note: This doesn't remove the selection from a top-level toolbar item. + Unfortunately, we can't do 'Selected := nil' because it would destroy + child popups and that must'nt happen for the reason stated above. } + end; + ++procedure TTBView.SetState(AState: TTBViewState); ++begin ++ FState := AState; ++end; + + { TTBModalHandler } + + const + LSFW_LOCK = 1; + LSFW_UNLOCK = 2; +@@ -6181,15 +6256,16 @@ + + + { TTBPopupView } + + procedure TTBPopupView.AutoSize(AWidth, AHeight: Integer); + begin +- with FWindow do +- SetBounds(Left, Top, AWidth + (PopupMenuWindowNCSize * 2), +- AHeight + (PopupMenuWindowNCSize * 2)); ++ with TTBPopupWindow(FWindow) do ++ with GetNCSize do ++ SetBounds(Left, Top, AWidth + (X * 2), ++ AHeight + (Y * 2)); + end; + + function TTBPopupView.GetFont: TFont; + begin + Result := (Owner as TTBPopupWindow).Font; + end; +@@ -6260,12 +6336,18 @@ + restored without generating a WM_PAINT message. } + if Assigned(FView) then + FView.CloseChildPopups; + inherited; + end; + ++function TTBPopupWindow.GetNCSize: TPoint; ++begin ++ Result.X := PopupMenuWindowNCSize; ++ Result.Y := PopupMenuWindowNCSize; ++end; ++ + function TTBPopupWindow.GetViewClass: TTBViewClass; + begin + Result := TTBPopupView; + end; + + procedure TTBPopupWindow.CreateParams(var Params: TCreateParams); +@@ -6343,26 +6425,36 @@ + {$IFNDEF TB2K_NO_ANIMATION} + if ((FView.ParentView = nil) or not(vsNoAnimation in FView.FParentView.FState)) and + Showing and (FView.Selected = nil) and not IsWindowVisible(WindowHandle) and + SystemParametersInfo(SPI_GETMENUANIMATION, 0, @Animate, 0) and Animate then begin + Blend := SystemParametersInfo(SPI_GETMENUFADE, 0, @Animate, 0) and Animate; + if Blend or (FAnimationDirection <> []) then begin +- TBStartAnimation(WindowHandle, Blend, FAnimationDirection); +- Exit; ++ if SendMessage(WindowHandle, WM_TB2K_POPUPSHOWING, TPS_ANIMSTART, 0) = 0 then ++ begin ++ { Start animation only if WM_TB2K_POPUPSHOWING returns zero (or not handled) } ++ TBStartAnimation(WindowHandle, Blend, FAnimationDirection); ++ Exit; ++ end; + end; + end; + {$ENDIF} + + { No animation... } + if not Showing then begin + { Call TBEndAnimation to ensure WS_EX_LAYERED style is removed before + hiding, otherwise windows under the popup window aren't repainted + properly. } + TBEndAnimation(WindowHandle); + end; + SetWindowPos(WindowHandle, 0, 0, 0, 0, 0, ShowFlags[Showing]); ++ if Showing then SendNotifyMessage(WindowHandle, WM_TB2K_POPUPSHOWING, TPS_NOANIM, 0); ++end; ++ ++procedure TTBPopupWindow.WMTB2kAnimationEnded(var Message: TMessage); ++begin ++ SendNotifyMessage(WindowHandle, WM_TB2K_POPUPSHOWING, TPS_ANIMFINISHED, 0); + end; + + procedure TTBPopupWindow.WMTB2kStepAnimation(var Message: TMessage); + begin + TBStepAnimation(Message); + end; +@@ -6426,14 +6518,14 @@ + begin + { do nothing -- ignore Alt+F4 keypresses } + end; + + procedure TTBPopupWindow.WMNCCalcSize(var Message: TWMNCCalcSize); + begin +- InflateRect(Message.CalcSize_Params^.rgrc[0], +- -PopupMenuWindowNCSize, -PopupMenuWindowNCSize); ++ with GetNCSize do ++ InflateRect(Message.CalcSize_Params^.rgrc[0], -X, -Y); + inherited; + end; + + procedure PopupWindowNCPaintProc(Wnd: HWND; DC: HDC; AppData: Longint); + var + R: TRect; +--- TB2MRU.pas 2005-01-05 21:56:50.000000000 +-0400 ++++ TB2MRU.pas 2005-08-02 18:38:34.000000000 +-0400 +@@ -50,12 +50,13 @@ + procedure ClickHandler(Sender: TObject); + procedure SetHidePathExtension(Value: Boolean); + procedure SetList(Value: TStrings); + procedure SetMaxItems(Value: Integer); + protected + property Container: TTBCustomItem read FContainer; ++ function GetFirstKey: Integer; virtual; + function GetItemClass: TTBCustomItemClass; virtual; + procedure SetItemCaptions; virtual; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure Add(Filename: String); +@@ -293,37 +294,39 @@ + Ini.DeleteKey(Section, FPrefix + IntToStr(I)); + end; + end; + + procedure TTBMRUList.SetItemCaptions; + var +- I, J: Integer; ++ I, J, N: Integer; + Key: Char; + S: String; + Buf: array[0..MAX_PATH-1] of Char; + begin + while FList.Count > FMaxItems do + FList.Delete(FList.Count-1); ++ N := GetFirstKey; + for I := 0 to FContainer.Count-1 do begin + Key := #0; +- if I < 9 then +- Key := Chr(Ord('1') + I) ++ if N < 9 then ++ Key := Chr(Ord('1') + N) + else begin + { No more numbers; try letters } +- J := I - 9; ++ J := N - 9; + if J < 26 then + Key := Chr(Ord('A') + J); + end; + S := FList[I]; + if HidePathExtension and (GetFileTitle(PChar(S), Buf, SizeOf(Buf)) = 0) then + S := Buf; + S := EscapeAmpersands(S); + if Key <> #0 then + FContainer[I].Caption := Format('&%s %s', [Key, S]) + else + FContainer[I].Caption := S; ++ Inc(N); + end; + end; + + procedure TTBMRUList.ClickHandler(Sender: TObject); + var + I: Integer; +@@ -358,12 +361,17 @@ + + function TTBMRUList.GetItemClass: TTBCustomItemClass; + begin + Result := TTBCustomItem; + end; + ++function TTBMRUList.GetFirstKey: Integer; ++begin ++ Result := 0; ++end; ++ + + { TTBMRUListItem } + + constructor TTBMRUListItem.Create(AOwner: TComponent); + begin + inherited; +--- TB2Reg.pas 2005-01-05 21:56:50.000000000 +-0400 ++++ TB2Reg.pas 2005-06-07 04:59:48.000000000 +-0400 +@@ -33,19 +33,12 @@ + uses + Windows, SysUtils, Classes, Graphics, Controls, Dialogs, ActnList, ImgList, + {$IFDEF JR_D6} DesignIntf, DesignEditors, VCLEditors, {$ELSE} DsgnIntf, {$ENDIF} + TB2Toolbar, TB2ToolWindow, TB2Dock, TB2Item, TB2ExtItems, TB2MRU, TB2MDI, + TB2DsgnItemEditor; + +-procedure Register; +- +-implementation +- +-uses +- ImgEdit; +- + {$IFDEF JR_D5} + + { TTBImageIndexPropertyEditor } + + { Unfortunately TComponentImageIndexPropertyEditor seems to be gone in + Delphi 6, so we have to use our own image index property editor class } +@@ -64,12 +57,31 @@ + procedure ListMeasureWidth(const Value: string; ACanvas: TCanvas; + var AWidth: Integer); {$IFNDEF JR_D6} override; {$ENDIF} + procedure ListDrawValue(const Value: string; ACanvas: TCanvas; + const ARect: TRect; ASelected: Boolean); {$IFNDEF JR_D6} override; {$ENDIF} + end; + ++{ TTBItemImageIndexPropertyEditor } ++ ++type ++ TTBItemImageIndexPropertyEditor = class(TTBImageIndexPropertyEditor) ++ public ++ function GetImageListAt (Index: Integer): TCustomImageList; override; ++ end; ++ ++{$ENDIF} ++ ++procedure Register; ++ ++implementation ++ ++uses ++ ImgEdit; ++ ++{$IFDEF JR_D5} ++ + function TTBImageIndexPropertyEditor.GetAttributes: TPropertyAttributes; + begin + Result := [paMultiSelect, paValueList, paRevertable]; + end; + + function TTBImageIndexPropertyEditor.GetImageListAt(Index: Integer): TCustomImageList; +@@ -125,18 +137,12 @@ + if Assigned(ImgList) then + Inc(AWidth, ImgList.Width); + end; + + { TTBItemImageIndexPropertyEditor } + +-type +- TTBItemImageIndexPropertyEditor = class(TTBImageIndexPropertyEditor) +- protected +- function GetImageListAt(Index: Integer): TCustomImageList; override; +- end; +- + function TTBItemImageIndexPropertyEditor.GetImageListAt(Index: Integer): TCustomImageList; + var + C: TPersistent; + Item: TTBCustomItem; + begin + Result := nil; +--- TB2Toolbar.pas 2005-07-30 13:17:20.000000000 +-0400 ++++ TB2Toolbar.pas 2005-08-01 11:16:18.000000000 +-0400 +@@ -891,12 +891,17 @@ + if Assigned(FView.Selected) then begin + Item := FView.Selected.Item; + if not(tboLongHintInMenuOnly in Item.EffectiveOptions) then + Hint := Item.Hint + else + Hint := ''; ++ ++ with TTBItemViewerAccess(FView.Find(Item)) do ++ begin ++ MouseMove(X - BoundsRect.Left, Y - BoundsRect.Top); ++ end; + end + else + Hint := ''; + end; + { Call TrackMouseEvent to be sure that we are notified when the mouse leaves + the window. We won't get a CM_MOUSELEAVE message if the mouse moves +--- TB2ToolWindow.pas 2005-01-05 21:56:50.000000000 +-0400 ++++ TB2ToolWindow.pas 2005-02-23 04:57:58.000000000 +-0400 +@@ -192,20 +192,30 @@ + end; + + function TTBToolWindow.CalcSize(ADock: TTBDock): TPoint; + begin + Result.X := FBarWidth; + Result.Y := FBarHeight; +- if Assigned(ADock) and (FullSize or Stretch) then begin +- { If docked and stretching, return the minimum size so that the toolbar +- can shrink below FBarWidth/FBarHeight } +- if not(ADock.Position in [dpLeft, dpRight]) then +- Result.X := FMinClientWidth +- else +- Result.Y := FMinClientHeight; +- end; ++ if Assigned(ADock) then ++ if FullSize then ++ begin ++ { If docked and full size, return the size corresponding to docked size } ++ if not(ADock.Position in [dpLeft, dpRight]) then ++ Result.X := ADock.ClientWidth - (Width - ClientWidth) ++ else ++ Result.Y := ADock.ClientHeight - (Height - ClientHeight); ++ end ++ else if Stretch then ++ begin ++ { If docked and stretching, return the minimum size so that the toolbar ++ can shrink below FBarWidth/FBarHeight } ++ if not(ADock.Position in [dpLeft, dpRight]) then ++ Result.X := FMinClientWidth ++ else ++ Result.Y := FMinClientHeight; ++ end; + end; + + procedure TTBToolWindow.GetBaseSize(var ASize: TPoint); + begin + ASize := CalcSize(CurrentDock); + end; diff --git a/official/2.1.6+2.1.beta1/Source/patch.bat b/official/2.1.6+2.1.beta1/Source/patch.bat new file mode 100644 index 0000000..7a5a5af --- /dev/null +++ b/official/2.1.6+2.1.beta1/Source/patch.bat @@ -0,0 +1,3 @@ +@if not %2 == "" %2 +@if not %3 == "" cd %3 +patch -p0 --backup --batch < %1 \ No newline at end of file diff --git a/official/2.1.6+2.1.beta1/Source/patch.exe b/official/2.1.6+2.1.beta1/Source/patch.exe new file mode 100644 index 0000000000000000000000000000000000000000..cc0bdb0c81615163035ad8d9b0a088fd87d84b57 GIT binary patch literal 59904 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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TB2k-LICENSE.txt b/official/2.1.6+2.1.beta1/TB2k-LICENSE.txt new file mode 100644 index 0000000..540e8dc --- /dev/null +++ b/official/2.1.6+2.1.beta1/TB2k-LICENSE.txt @@ -0,0 +1,61 @@ +Toolbar2000 License v3.2 +======================== + +"Author" herein refers to Jordan Russell (the creator of the Toolbar2000 +components). +"Software" refers to all files bearing this notice, as well as any other +files and source code included with Toolbar2000 (typically extracted from a +.zip archive), and all content in them, regardless of whether any +modifications have been made. + +Except where otherwise noted, all of the documentation and Software included +in the Toolbar2000 package is copyrighted by Jordan Russell (the Author). + +Copyright (C) 1998-2005 Jordan Russell. All rights reserved. + +Use and distribution of the software is permitted provided that all of the +following terms are accepted: + +1. The Software is provided "as-is," without any express or implied + warranty. In no event shall the Author be held liable for any damages + arising from the use of the Software. + +2. All redistributions of the Software's files must be in their original, + unmodified form. Distributions of modified versions of the files is not + permitted without express written permission of the Author. + +3. All redistributions of the Software's files must retain all copyright + notices and web site addresses that are currently in place, and must + include this list of conditions without modification. + +4. None of the Software's files may be redistributed for profit or as part + of another software package without express written permission of the + Author. + +5. You are permitted to Compile the Software into any kind of applications. + ("Compile" here refers to the automatic process of translating the + Software's source code into executable machine code by a compiler such + as the one included with Borland's Delphi or C++Builder.) + However, compilation into commercial or shareware applications, or any + applications that you or your organization are profiting from, requires + registration (payment) of the software. Such payment is made to the Author + of the Software (Jordan Russell). + For information on registering, see the Toolbar2000 documentation or this + web page: + http://www.jrsoftware.org/tb2kreg.php + +6. Redistribution of any of the Software's files in object form (including + but not limited to .DCU and .OBJ formats) is strictly prohibited without + express written permission of the Author. + +7. Full backward compatibility in future versions of the Software is not + guaranteed. In no event shall the Author be held liable for any + inconvenience or damages arising from lack of backward compatibility. + +If you do not agree to all of the above terms, you are not permitted to +use the Software in any way, and all copies of it must be deleted from your +system(s). + +Jordan Russell +jr-2005 AT jrsoftware.org +http://www.jrsoftware.org/ diff --git a/official/2.1.6+2.1.beta1/TBX/Converter/Converter.ico b/official/2.1.6+2.1.beta1/TBX/Converter/Converter.ico new file mode 100644 index 0000000000000000000000000000000000000000..05cac5a6f867b3e3bf9c6f3ff9c5be45c8659e3c GIT binary patch literal 19790 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 R&5UD;QhHpQ%_#TJ{|7s7|A7Di literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/Converter/MainUnit.dfm b/official/2.1.6+2.1.beta1/TBX/Converter/MainUnit.dfm new file mode 100644 index 0000000..9923b5d --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Converter/MainUnit.dfm @@ -0,0 +1,501 @@ +object ConverterForm: TConverterForm + Left = 191 + Top = 108 + AutoScroll = False + Caption = 'TBX Converter' + ClientHeight = 474 + ClientWidth = 783 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + OnDestroy = FormDestroy + PixelsPerInch = 96 + TextHeight = 13 + object TBDock1: TTBDock + Left = 0 + Top = 0 + Width = 783 + Height = 26 + object TBXToolbar2: TTBXToolbar + Left = 0 + Top = 0 + Align = alLeft + Caption = 'TBXToolbar' + DockableTo = [dpTop, dpBottom] + FullSize = True + Images = ImageList1 + TabOrder = 0 + object TBXVisibilityToggleItem2: TTBXVisibilityToggleItem + Caption = 'Files' + Control = FilePanel + DisplayMode = nbdmImageAndText + ImageIndex = 0 + OnClick = TBXVisibilityToggleItem2Click + end + object TBXVisibilityToggleItem1: TTBXVisibilityToggleItem + Caption = 'Settings' + Control = Panel1 + DisplayMode = nbdmImageAndText + ImageIndex = 1 + end + object TBXSeparatorItem3: TTBXSeparatorItem + end + object TBXLabelItem1: TTBXLabelItem + Caption = ' Conversion type: ' + end + object ConversionCombo: TTBXComboBoxItem + EditWidth = 220 + OnChange = ConversionComboChange + DropDownList = True + MinListWidth = 220 + Strings.Strings = ( + 'Convert TB2K>TBX & Upgrade TBX') + OnPopup = ConversionComboPopup + end + end + end + object TBDock2: TTBDock + Left = 0 + Top = 465 + Width = 783 + Height = 9 + Position = dpBottom + end + object TBDock3: TTBDock + Left = 0 + Top = 26 + Width = 197 + Height = 439 + Position = dpLeft + object FilePanel: TTBXDockablePanel + Left = 0 + Top = 0 + Caption = 'Files' + DockedWidth = 193 + SupportedDocks = [dkStandardDock, dkMultiDock] + TabOrder = 0 + Visible = False + object ShellTreeView: TShellTreeView + Left = 0 + Top = 0 + Width = 193 + Height = 417 + AutoContextMenus = False + ObjectTypes = [otFolders, otNonFolders] + Root = 'rfDesktop' + UseShellImages = True + OnAddFolder = ShellTreeViewAddFolder + Align = alClient + AutoRefresh = False + DragMode = dmAutomatic + Indent = 19 + ParentColor = False + ParentShowHint = False + RightClickSelect = True + ShowHint = True + ShowRoot = False + TabOrder = 0 + OnDblClick = ShellTreeViewDblClick + OnEditing = ShellTreeViewEditing + end + end + end + object TBDock4: TTBDock + Left = 577 + Top = 26 + Width = 206 + Height = 439 + Position = dpRight + object Panel1: TTBXDockablePanel + Left = 0 + Top = 0 + Caption = 'Settings' + DockedWidth = 202 + SupportedDocks = [dkStandardDock, dkMultiDock] + TabOrder = 0 + object TBXPageScroller1: TTBXPageScroller + Left = 0 + Top = 0 + Width = 202 + Height = 417 + Align = alClient + AutoRange = True + DoubleBuffered = False + TabOrder = 0 + object TBXLabel1: TTBXLabel + Left = 0 + Top = 0 + Width = 202 + Height = 22 + Align = alTop + Caption = 'Convert components:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + Margins.Left = 8 + Margins.Top = 8 + Margins.Right = 8 + ParentFont = False + Underline = True + end + object ConversionsPanel: TTBXAlignmentPanel + Left = 0 + Top = 22 + Width = 202 + Height = 33 + Align = alTop + AutoSize = True + Constraints.MinHeight = 8 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -9 + Font.Name = 'Tahoma' + Font.Style = [] + Margins.Left = 16 + Margins.Top = 8 + Margins.Right = 8 + Margins.Bottom = 8 + ParentFont = False + TabOrder = 1 + end + object TBXLabel2: TTBXLabel + Left = 0 + Top = 82 + Width = 202 + Height = 22 + Align = alTop + Caption = 'File filter:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + Margins.Left = 8 + Margins.Top = 8 + Margins.Right = 8 + ParentFont = False + Underline = True + end + object TBXAlignmentPanel1: TTBXAlignmentPanel + Left = 0 + Top = 104 + Width = 202 + Height = 101 + Align = alTop + AutoSize = True + Margins.Left = 16 + Margins.Top = 8 + Margins.Right = 16 + Margins.Bottom = 8 + TabOrder = 3 + object FilterPas: TTBXCheckBox + Left = 16 + Top = 8 + Width = 170 + Height = 17 + Align = alTop + Caption = 'Pascal source (*.pas)' + State = cbChecked + TabOrder = 0 + Wrapping = twEndEllipsis + OnChange = FilterChange + end + object FilterHpp: TTBXCheckBox + Left = 16 + Top = 25 + Width = 170 + Height = 17 + Align = alTop + Caption = 'C++ header files (*.h; *.hpp)' + State = cbChecked + TabOrder = 1 + Wrapping = twEndEllipsis + OnChange = FilterChange + end + object FilterCPP: TTBXCheckBox + Left = 16 + Top = 42 + Width = 170 + Height = 17 + Align = alTop + Caption = 'C++ source (*.cpp)' + State = cbChecked + TabOrder = 2 + Wrapping = twEndEllipsis + OnChange = FilterChange + end + object FilterDFM: TTBXCheckBox + Left = 16 + Top = 59 + Width = 170 + Height = 17 + Align = alTop + Caption = 'Text form files (*.dfm)' + State = cbChecked + TabOrder = 3 + Wrapping = twEndEllipsis + OnChange = FilterChange + end + object FilterBinaryDFM: TTBXCheckBox + Left = 16 + Top = 76 + Width = 170 + Height = 17 + Align = alTop + Caption = 'Binary form files (*.dfm)' + State = cbChecked + TabOrder = 4 + Wrapping = twEndEllipsis + OnChange = FilterChange + end + end + object TBXAlignmentPanel3: TTBXAlignmentPanel + Left = 0 + Top = 55 + Width = 202 + Height = 27 + Align = alTop + AutoSize = True + Margins.Left = 8 + Margins.Right = 8 + Margins.Bottom = 8 + TabOrder = 4 + object TBXToolbar1: TTBXToolbar + Left = 8 + Top = 0 + Width = 186 + Height = 19 + Align = alTop + Caption = 'TBXToolbar1' + ShrinkMode = tbsmWrap + TabOrder = 0 + object TBXItem1: TTBXItem + Caption = 'Select &All' + OnClick = TBXItem1Click + end + object TBXSeparatorItem1: TTBXSeparatorItem + Blank = True + end + object TBXItem2: TTBXItem + Caption = 'Select &None' + OnClick = TBXItem2Click + end + end + end + end + end + end + object Panel2: TPanel + Left = 197 + Top = 26 + Width = 380 + Height = 439 + Align = alClient + TabOrder = 4 + object Memo: TMemo + Left = 1 + Top = 1 + Width = 378 + Height = 326 + Align = alClient + Ctl3D = True + Lines.Strings = ( + 'Waiting for files to convert') + ParentCtl3D = False + TabOrder = 0 + OnDragDrop = MemoDragDrop + OnDragOver = MemoDragOver + end + object Memo1: TMemo + Left = 1 + Top = 327 + Width = 378 + Height = 111 + Align = alBottom + BorderStyle = bsNone + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -9 + Font.Name = 'Tahoma' + Font.Style = [] + Lines.Strings = ( + 'Usage info:' + ' 1. Choose conversion type, components and file filer' + ' 2. Select files to convert using either of two methods' + + ' 2.1. Drag and drop files with source code and DFM files fr' + + 'om Windows Explorer' + + ' 2.2. Open the Files panel and double click the file to con' + + 'vert' + + ' 3. Original files are automatically saved with extensions ##00' + + '1, ##002, etc.' + ' 4. Manually update '#39'uses'#39' clause in source files') + ParentColor = True + ParentFont = False + TabOrder = 1 + end + end + object TBXSwitcher1: TTBXSwitcher + Theme = 'OfficeXP' + FlatMenuStyle = fmsDisable + Left = 164 + Top = 64 + end + object ImageList1: TImageList + Left = 476 + Top = 8 + Bitmap = { + 494C010102000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000001000000001002000000000000010 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000080808000800000008080800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000080808000C0C0 + C000808080000000000080000000FFFFFF008000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0C0C0000000 + 0000000000000000000080808000800000008080800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FFFFFF0000000000FFFFFF00FFFF + FF00C0C0C000FFFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000808080000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000008080800000000000FFFFFF0000000000FFFF + FF0000000000FFFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0C0C0000000 + 0000000000000000000080808000800000008080800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000C0C0C000FFFFFF008080800000000000FFFFFF000000 + 0000FFFFFF00FFFFFF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000080808000C0C0 + C000808080000000000080000000FFFFFF008000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008080800000000000FFFF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0C0C0000000 + 0000000000000000000080808000800000008080800000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF0000000000FFFFFF00C0C0C000C0C0C000C0C0C00000000000FFFFFF000000 + 0000FFFFFF00C0C0C00000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000808080000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0000000000FFFF + FF00FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0C0C0000000 + 0000000000000000000080808000800000008080800000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF0000000000FFFFFF00C0C0C00000000000FFFFFF0000000000C0C0C000C0C0 + C000FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000080808000C0C0 + C000808080000000000080000000FFFFFF008000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF008080800000000000FFFFFF00FFFFFF00FFFF + FF00FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000C0C0C0000000 + 0000000000000000000080808000800000008080800000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF0000000000FFFFFF00C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 + C000FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000808080000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080808000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF0000000000FFFFFF00C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 + C000FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080808000C0C0C000C0C0 + C000C0C0C000C0C0C000C0C0C000C0C0C0000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080808000C0C0C000C0C0 + C000C0C0C000C0C0C000C0C0C000C0C0C0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000080808000808080008080 + 8000808080008080800080808000808080008080800000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000040000000100000000100010000000000800000000000000000000000 + 000000000000000000000000FFFFFF00FC7FFF8000000000C441FF0000000000 + DC7FFE0100000000DFFFFE0100000000DC7FC00100000000C441C00300000000 + DC7FC00300000000DFFFC00300000000DC7FC00300000000C441C00300000000 + DC7FC00300000000DFFFC00300000000807FC00300000000807FC00300000000 + 807FC00300000000807FFFFF0000000000000000000000000000000000000000 + 000000000000} + end + object XPManifest1: TXPManifest + Left = 520 + Top = 8 + end +end diff --git a/official/2.1.6+2.1.beta1/TBX/Converter/MainUnit.pas b/official/2.1.6+2.1.beta1/TBX/Converter/MainUnit.pas new file mode 100644 index 0000000..4513026 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Converter/MainUnit.pas @@ -0,0 +1,527 @@ +unit MainUnit; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, Contnrs, TBX, TBXDkPanels, TB2Dock, ExtCtrls, TB2Item, + TB2Toolbar, StdCtrls, ComCtrls, TBXOfficeXPTheme, TBXSwitcher, + TB2ToolWindow, TB2ExtItems, TBXExtItems, ShellCtrls, ImgList, XPMan; + + +const + CM_INIT = WM_USER + 229; + CDatFile = 'conversions.ini'; + +type + TConversion = class + OldClassName: string; + NewClassName: string; + CheckBox: TTBXCheckBox; + end; + + { TConverterForm } + TConverterForm = class(TForm) + TBDock1: TTBDock; + TBDock2: TTBDock; + TBDock3: TTBDock; + TBDock4: TTBDock; + Panel1: TTBXDockablePanel; + ConversionsPanel: TTBXAlignmentPanel; + TBXLabel1: TTBXLabel; + TBXLabel2: TTBXLabel; + TBXAlignmentPanel1: TTBXAlignmentPanel; + FilterPas: TTBXCheckBox; + FilterHpp: TTBXCheckBox; + FilterCPP: TTBXCheckBox; + FilterDFM: TTBXCheckBox; + FilterBinaryDFM: TTBXCheckBox; + TBXToolbar1: TTBXToolbar; + TBXItem1: TTBXItem; + TBXItem2: TTBXItem; + TBXSeparatorItem1: TTBXSeparatorItem; + TBXToolbar2: TTBXToolbar; + TBXVisibilityToggleItem1: TTBXVisibilityToggleItem; + Memo: TMemo; + TBXSwitcher1: TTBXSwitcher; + TBXPageScroller1: TTBXPageScroller; + TBXAlignmentPanel3: TTBXAlignmentPanel; + ConversionCombo: TTBXComboBoxItem; + TBXLabelItem1: TTBXLabelItem; + Panel2: TPanel; + Memo1: TMemo; + FilePanel: TTBXDockablePanel; + ShellTreeView: TShellTreeView; + TBXVisibilityToggleItem2: TTBXVisibilityToggleItem; + ImageList1: TImageList; + TBXSeparatorItem3: TTBXSeparatorItem; + XPManifest1: TXPManifest; + procedure FormCreate(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure TBXItem1Click(Sender: TObject); + procedure TBXItem2Click(Sender: TObject); + procedure ConversionComboPopup(Sender: TTBCustomItem; FromLink: Boolean); + procedure ConversionComboChange(Sender: TObject; const Text: String); + procedure ShellTreeViewAddFolder(Sender: TObject; AFolder: TShellFolder; var CanAdd: Boolean); + procedure FilterChange(Sender: TObject); + procedure ShellTreeViewDblClick(Sender: TObject); + procedure TBXVisibilityToggleItem2Click(Sender: TObject); + procedure MemoDragDrop(Sender, Source: TObject; X, Y: Integer); + procedure MemoDragOver(Sender, Source: TObject; X, Y: Integer; + State: TDragState; var Accept: Boolean); + procedure ShellTreeViewEditing(Sender: TObject; Node: TTreeNode; + var AllowEdit: Boolean); + private + FConversions: TObjectList; + procedure CMInit(var Message: TMessage); message CM_INIT; + procedure WMDropFiles(var Message: TWMDropFiles); message WM_DROPFILES; + protected + procedure ShowConversions; + procedure GetConversionTypes(L: TStrings); + procedure GetConversions(const ConvType: string); + public + procedure ProcessFiles(FileNames: TStringList); + end; + +var + ConverterForm: TConverterForm; + +implementation + +uses + ShellApi; + +const + CNameFirst = ['a'..'z', 'A'..'Z', '_']; + CNameChar = ['a'..'z', 'A'..'Z', '_', '0'..'9']; + +type + TTreeViewAccess = class(TCustomTreeView); + +function WordReplace(const Src, OldWord, NewWord: string): string; +var + P, PStart: PChar; + S: string; +begin + Result := ''; + P := PChar(Src); + PStart := P; + while P^ <> #0 do + begin + if P^ in CNameFirst then + begin + SetString(S, PStart, P - PStart); + Result := Result + S; + PStart := P; + Inc(P); + while P^ in CNameChar do Inc(P); + SetString(S, PStart, P - PStart); + if SameText(S, OldWord) then S := NewWord; + Result := Result + S; + PStart := P; + end + else Inc(P); + end; + if P <> PStart then + begin + SetString(S, PStart, P - PStart); + Result := Result + S; + end; +end; + +{$R *.dfm} + +{ TConverterForm } + +procedure TConverterForm.CMInit(var Message: TMessage); +begin + DragAcceptFiles(Handle, True); + ShowConversions; + TTreeViewAccess(ShellTreeView).MultiSelect := True; + TTreeViewAccess(ShellTreeView).MultiSelectStyle := [msControlSelect, msShiftSelect, msSiblingOnly]; +end; + +procedure TConverterForm.FormCreate(Sender: TObject); +begin + FConversions := TObjectList.Create; + GetConversionTypes(ConversionCombo.Strings); + if ConversionCombo.Strings.Count = 0 then raise Exception.Create('Invalid conversion settings'); + ConversionCombo.ItemIndex := 0; + GetConversions(ConversionCombo.Strings[0]); + PostMessage(Handle, CM_INIT, 0, 0); +end; + +procedure TConverterForm.FormDestroy(Sender: TObject); +begin + FConversions.Free; +end; + +procedure TConverterForm.ProcessFiles(FileNames: TStringList); +var + I, J: Integer; + S, E: string; + BinaryStream: TFileStream; + StringStream: TStringStream; + S1, S2: string; + DFM, BinaryDFM: Boolean; + + function IsTextDFM(const FN: string): Boolean; + var + Stream: TFileStream; + Buffer: array [0..7] of Char; + begin + Stream := TFileStream.Create(FN, fmOpenRead); + FillChar(Buffer[0], 8, 0); + Stream.Read(Buffer[0], 7); + Result := SameText(Buffer, 'object '); + Stream.Free; + end; + + function IsBinaryDFM(const FN: string): Boolean; + var + Stream: TFileStream; + TS: TStream; + begin + Result := True; Exit; + Stream := TFileStream.Create(FN, fmOpenRead); + try + TS := TMemoryStream.Create; + try + try + Result := True; + ObjectResourceToText(Stream, TS); + except + Result := False; + end; + finally + TS.Free; + end; + finally + Stream.Free; + end; + end; + + function GetBackupFileName(F: string): string; + var + I: Integer; + begin + I := 0; + repeat + Inc(I); + Result := Format('%s.###%.3d', [F, I]); + until not FileExists(Result); + end; + +begin + { Filter files } + for I := FileNames.Count - 1 downto 0 do + begin + S := FileNames[I]; + E := ExtractFileExt(S); + if (SameText(E, '.pas') and FilterPAS.Checked) or + ((SameText(E, '.h') or SameText(E, '.hpp')) and FilterHPP.Checked) or + (SameText(E, '.cpp') and FilterCPP.Checked) or + (SameText(E, '.dfm') and FilterDFM.Checked and IsTextDFM(S)) or + (SameText(E, '.dfm') and FilterBinaryDFM.Checked and IsBinaryDFM(S)) then + Continue + else + FileNames.Delete(I); + end; + if FileNames.Count = 0 then Memo.Lines.Add('No files to process'); + + { Get each file as string } + for I := FileNames.Count - 1 downto 0 do + begin + DFM := SameText(ExtractFileExt(FileNames[I]), '.dfm'); + if DFM then BinaryDFM := not IsTextDFM(FileNames[I]) else BinaryDFM := False; + if DFM and BinaryDFM then + begin + BinaryStream := TFileStream.Create(FileNames[I], fmOpenRead); + try + StringStream := TStringStream.Create(''); + try + ObjectResourceToText(BinaryStream, StringStream); + S := StringStream.DataString; + finally + StringStream.Free; + end; + finally + BinaryStream.Free; + end; + end + else + begin + with TFileStream.Create(FileNames[I], fmOpenRead) do + try + SetLength(S, Size); + ReadBuffer(S[1], Size); + finally + Free; + end; + end; + + Memo.Lines.Add('Converting ' + FileNames[I]); + { Now S contains text representation of the file } + for J := 0 to FConversions.Count - 1 do + with TConversion(FConversions[J]) do + if CheckBox.Checked then + if DFM then + begin + S1 := ': ' + OldClassName + #13; + S2 := ': ' + NewClassName + #13; + S := StringReplace(S, S1, S2, [rfReplaceAll, rfIgnoreCase]); + end + else + begin + S := WordReplace(S, OldClassName, NewClassName); + end; + + E := GetBackupFileName(FileNames[I]); + Memo.Lines.Add('Saving original file to ' + E); + RenameFile(FileNames[I], E); + + if DFM and BinaryDFM then + begin + BinaryStream := TFileStream.Create(FileNames[I], fmCreate); + try + StringStream := TStringStream.Create(S); + try + ObjectTextToResource(StringStream, BinaryStream); + finally + StringStream.Free; + end; + finally + BinaryStream.Free; + end; + end + else + begin + with TFileStream.Create(FileNames[I], fmCreate) do + try + WriteBuffer(S[1], Length(S)); + finally + Free; + end; + end; + end; +end; + +procedure TConverterForm.ShowConversions; +var + I: Integer; + C: TConversion; + CB: TTBXCheckBox; +begin + ConversionsPanel.DisableAlign; + for I := ConversionsPanel.ControlCount - 1 downto 0 do + ConversionsPanel.Controls[I].Free; + for I := 0 to FConversions.Count - 1 do + begin + C := TConversion(FConversions[I]); + CB := TTBXCheckBox.Create(Self); + CB.Caption := C.OldClassName + ' > ' + C.NewClassName; + CB.Wrapping := twEndEllipsis; + CB.Top := 10000; + CB.Parent := ConversionsPanel; + CB.Align := alTop; + CB.Checked := True; + C.CheckBox := CB; + end; + ConversionsPanel.EnableAlign; + ConversionsPanel.Realign; +end; + +procedure TConverterForm.WMDropFiles(var Message: TWMDropFiles); +var + SL: TStringList; + Buffer: array [0..1024] of Char; + NumFiles, I: Integer; + S: string; +begin + SL := TStringList.Create; + try + NumFiles := DragQueryFile(Message.Drop, $FFFFFFFF, nil, 0); + for I := 0 to NumFiles - 1 do + begin + DragQueryFile(Message.Drop,I, Buffer, SizeOf(Buffer)); + S := StrPas(Buffer); + if FileExists(S) then SL.Add(S); + end; + if SL.Count > 0 then ProcessFiles(SL); + finally + SL.Free; + end; +end; + +procedure TConverterForm.TBXItem1Click(Sender: TObject); +var + I: Integer; +begin + for I := 0 to FConversions.Count - 1 do + TConversion(FConversions[I]).CheckBox.Checked := True; +end; + +procedure TConverterForm.TBXItem2Click(Sender: TObject); +var + I: Integer; +begin + for I := 0 to FConversions.Count - 1 do + TConversion(FConversions[I]).CheckBox.Checked := False; +end; + +procedure TConverterForm.ConversionComboPopup(Sender: TTBCustomItem; FromLink: Boolean); +begin + GetConversionTypes(ConversionCombo.Strings); +end; + +procedure TConverterForm.GetConversionTypes(L: TStrings); +var + SL: TStringList; + S: string; + I, J: Integer; +begin + SL := TStringList.Create; + try + SL.LoadFromFile(CDatFile); + L.Clear; + for I := 0 to SL.Count - 1 do + begin + S := Trim(SL[I]); + if (Length(S) > 3) and (S[1] = '[') and (S[Length(S)] = ']') then + begin + S := Copy(S, 2, Length(S) - 2); + L.Add(S); + end; + end; + finally + SL.Free; + end; +end; + +procedure TConverterForm.ConversionComboChange(Sender: TObject; const Text: String); +begin + GetConversions(Text); + ShowConversions; +end; + +procedure TConverterForm.GetConversions(const ConvType: string); +var + SL: TStringList; + S, S1, S2: string; + P: Integer; + C: TConversion; + I: Integer; +begin + SL := TStringList.Create; + try + SL.LoadFromFile(CDatFile); + I := 0; + while I < SL.Count - 1 do + begin + S := Trim(SL[I]); + if (Length(S) > 3) and (S[1] = '[') and (S[Length(S)] = ']') and + SameText(Copy(S, 2, Length(S) - 2), ConvType) then Break + else Inc(I); + end; + + FConversions.Clear; + Inc(I); + while I < SL.Count do + begin + S := Trim(SL[I]); + Inc(I); + if (Length(S) = 0) or (S[1] in [';', '''', '/', '%']) then Continue; + if S[1] = '[' then Break; + P := Pos('->', S); + if P < 2 then raise Exception.Create('Invalid conversion settings'); + S1 := Trim(Copy(S, 1, P - 1)); + S2 := Trim(Copy(S, P + 2, Length(S))); + if (Length(S1) = 0) or (Length(S2) = 0) then raise Exception.Create('Invalid conversion settings'); + C := TConversion.Create; + FConversions.Add(C); + C.OldClassName := S1; + C.NewClassName := S2; + end; + finally + SL.Free; + end; +end; + +procedure TConverterForm.ShellTreeViewAddFolder(Sender: TObject; + AFolder: TShellFolder; var CanAdd: Boolean); +var + Ext: string; +begin + if not AFolder.IsFolder then + begin + Ext := LowerCase(ExtractFileExt(AFolder.DisplayName)); + CanAdd := + (FilterPas.Checked and (Ext = '.pas')) or + (FilterHpp.Checked and ((Ext = '.h') or (Ext = '.hpp'))) or + (FilterCpp.Checked and (Ext = '.cpp')) or + ((FilterDfm.Checked or FilterBinaryDfm.Checked) and (Ext = '.dfm')); + end; +end; + +procedure TConverterForm.FilterChange(Sender: TObject); +begin + if FilePanel.Visible then + ShellTreeView.Refresh(ShellTreeView.Items[0]); +end; + +procedure TConverterForm.ShellTreeViewDblClick(Sender: TObject); +var + SL: TStringList; +begin + SL := TStringList.Create; + try + SL.Add(ShellTreeView.SelectedFolder.PathName); + if FileExists(SL[0]) then ProcessFiles(SL); + finally + SL.Free; + end; +end; + +procedure TConverterForm.TBXVisibilityToggleItem2Click(Sender: TObject); +begin + if FilePanel.Visible then + ShellTreeView.Refresh(ShellTreeView.Items[0]); +end; + +procedure TConverterForm.MemoDragDrop(Sender, Source: TObject; X, Y: Integer); +var + I: Integer; + SL: TStringList; +begin + if Source <> ShellTreeView then Exit; + SL := TStringList.Create; + try + for I := 0 to ShellTreeView.SelectionCount - 1 do + SL.Add(TShellFolder(ShellTreeView.Selections[I].Data).PathName); + ProcessFiles(SL); + finally + SL.Free; + end; +end; + +procedure TConverterForm.MemoDragOver(Sender, Source: TObject; X, Y: Integer; + State: TDragState; var Accept: Boolean); +var + I: Integer; +begin + if Source <> ShellTreeView then Exit; + for I := 0 to ShellTreeView.SelectionCount - 1 do + if not FileExists(TShellFolder(ShellTreeView.Selections[I].Data).PathName) then + begin + Accept := False; + Break; + end; +end; + +procedure TConverterForm.ShellTreeViewEditing(Sender: TObject; + Node: TTreeNode; var AllowEdit: Boolean); +begin + AllowEdit := False; +end; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/Converter/TBXConverter.dpr b/official/2.1.6+2.1.beta1/TBX/Converter/TBXConverter.dpr new file mode 100644 index 0000000..4099734 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Converter/TBXConverter.dpr @@ -0,0 +1,14 @@ +program TBXConverter; + +uses + Forms, + MainUnit in 'MainUnit.pas' {ConverterForm}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'TBX Converter'; + Application.CreateForm(TConverterForm, ConverterForm); + Application.Run; +end. diff --git a/official/2.1.6+2.1.beta1/TBX/Converter/TBXConverter.exe b/official/2.1.6+2.1.beta1/TBX/Converter/TBXConverter.exe new file mode 100644 index 0000000000000000000000000000000000000000..e8b01b764ea76d68ea4b98bdcdf48f250d4fafde GIT binary patch literal 850432 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 Ep{~4e|I>2|)ip4!?q< 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�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

        vfy|-92Q{)jj#SomS)4e%%IKzH{xG|T7KacE^ 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�RD>Y8Pv*gm%*T=K?JjUk|bJmK}Z!Wp? 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 |$d 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%0Ac7#I& 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 z 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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/Converter/TBXConverter.res b/official/2.1.6+2.1.beta1/TBX/Converter/TBXConverter.res new file mode 100644 index 0000000000000000000000000000000000000000..e9d41d08770183140b1f3b3562c34b9b8b3de1fa GIT binary patch literal 20080 zcmeHPSyxn77T!gHfI*QERJ4Ht4KfJ`C}67;LI8(CS(?NlPMKOWm~LZ?Q-mmrn#pL? zNW?g6qKRhc*qLlr_geV@{R@2Phkojn(sgD+`ES} z?epzhh=}+=N?C-jj+Emu^ltasxvuWA{%(;{)^n8lRX?vt{VG{Z z-FzuWrx&8b1pOi2!+STzST<6Mc8t=>^lryEUGKNdZ8X<8l#-o4uauX*t(DbZ%#fAW zi)G=N44Lt+S7sa)X}UBG*Gptpd$g3E5-I&yr0}rFv^PYi?-yBny+U5QwOH!TPn43A zBE^TilKr|!^IzA?6Xz#L$qAA2{o~NqBhwFvtiDh#o4%=)inb(~*)~RU-V|v#ktus_ zua#XtuafzvCdk}F6D9Xek34ZaP1fF+B~4c!m!iWSnRh5v%J(M8vW`O8`O``%JLQp0 z*XnWa8hPqkfh@T)Me5I`O69>M*?6r^+Wx*#_W$ig@T-xE4-#b2d7r#>`x)?Ajb~;{ zS-VFnPLGngXU51pQ03`ZsXael3J-}?w8u*R+mIRG3-*HciRA4O$=>QP-^0Q~3p~&k z2=qt=DcuQ`WwG69a!MfZ`_YedrHLq)qFm*#LGo9ba$S5>Qc_ao{9rkGp=F|)V0mJS zE|*q2%jK2T*7Jh(QeK&@pKr=i9%GfqN{aP}a$Qas(=cX?bs-Q)Dx)klqpb^2pdw1A zoSdm5J(LX$b{+l~mR=v!vDRTM&PeWc*oSL=klD{#tmPV4+^Ged0j^>1(iuMSwSW5= zZV#FCMx-|(eE7uLk4!o1{*N9zg52LDpN>XJ*&f&`8az$c57$Z&5sRi&({K( zGB$gpyQcnbmL;MoP>hEL2qh{m^Y^T6^)TC8Tet@)ttJAYmQ|6!f>3AX*POg4YFP+tA6 zL0$pTPkH)Uq0By>AjL;S`zVbUr^xmnpOWXknxlPyh6|IV?!rW=JvUw|j*pi7y&}20 z;hTIQ^4yKN^6bso+Na^ZPanegHAU}>ByDc@LTrWUMGL} zrds=E#rtDq!KqBy0A2nF|Eu=wc<~=emD1x;@LS-U?T&$8wnzeyue?1*Dj-MW>1ne0 zMnL;N^x4WkiP1jNx*O&4!q-)@_)-S+TZ`}Wq~YRZsX6x;{GvoD`v|_@36DH?xf=G( zlDQpYw2xHu9(0C(SJDp+X%sLt;>#kSI-p*&iYZL6b zR-XR65O$A}*{9>=nJ-FZ>-SBv^@k?e2tTb3KI6>xD9AQSs?R*)JbIk#VwT%J{hHlx}e3 z!|e2s>FBYK_<;A`PYa#WGd^Jb;deq;r==yl%lhSqdaEyNVtv8%zSZyD*9s>qnD!rN zJDBFUKYiEkz*}8uPjk!L&idD#2bmp{cRK46UbT;eEeYvquKH?Q{Yx*u0-+uJ6KwU* zzwjb%@4bG_+I3HctCy9l3RZ`?U!*>;{K?**4@v8nEq}6C`KU>KpkS%p{&xAbruBiw z6kGr3`r1rgWqs5)EU?#Cip)uwYj05Hx7U|S%FKjWCH4jtw)(=N;u-nr*?Eoztk0dS z$47QXUOtSPotI^M0_z`7{v8{nXJ^yqY1tE|bvI!Bs7aG`16DGnXZX4ru--E^aa_`) zwv_x>%J`s~tUnXwjgA@BeJF^Hjf)@sh;E>(2lrw8i97enkJ$*H#0O<8e;yzUlG~r} z#;1I`-XFq`(G`RIsDFP-Gw==tf22Qz9nng_LKHBZJ`?a6&BxpiyhH)_QSguYMDPV1 z_XCe{+z-4(0dG;jSscV`th?9!z+@D#C`V!a>a(Je(bubDXxQ@i$g&;b19s; z6m(VK>)?+wn!*{aPy0w;_nRK=pcie6b6^ktI4>%k7l)QV_DSxyIFt6^k8`-fxpnCI zAG5}R+y1~Q6mW_W%OB@`h4a3`d0zp)=@S7LP{0NB{s3G+>joS~&x3yHk8uMmLII0V zz)}?Oh`!MeO$wNW0%oCrSqzvza1sTagv)-v6R;HRHvmr=IDd>;U^xBe4U9*RcfFPb zeZ+y-pK}J7SHJipMyG&3X`jo!4h#o>U}6fGm;xqdt)n*ocsTe2uT#M56!1C)Y|k;L zhl4*m3Ncjee{)>{j@Tu`aPg-Mz(e(X<=SfOFr56248U2Hk-^6QL##n1Aie*FTYm>K z{>j@UV+Zm8{%h91qu@PrIQUZzBLi?~1-za6-*wP{^#|_V>-oUw?anC!@NtEA7s#J} zSeO5EPy4rauRp-#wGP1L`z-@7d<6`j{Fj5e{J(qgN31}rL)#%5v<-p)yG z{Y@D$2J)W>>hgcX^2eTu*o8vuLZ8nN*U;-4eMQ7M1|$P`+kJn=O!PiwU#rb`&4)fQ zcp2V~I$TFQreAh&^G6IvAs(a<@9A2r3=i&Kl%dNvwyo!E!|RA0Da3#JEQ6ar;#V5G z;2A%p3@)BsvYG2a-xl$yKFQ$bk2qR0Vq^+2GL2Wz$3l#(Uqt&Mo~Gvp;%R2Mh01rk z`Lj$J@ScxCt`O5xv5&u(&|0%@(`pi3&Jimo&cK{D`0uvZQ>Je)O&+fSJ z<8~Y)7LxSDQ;TtJJ*W%Ez&-Btf81AI=#~h|1WgBV&$=H(-jso|P$tLv-Ag$h*SW_n z0&M{u2Jzf~KZv|317)F1lr5YN@xV)p;b(l7x81986JjUBPFukfl>3I4>-xVzry%z$ zAdZ3FbnwDQm`YzEzr{N5;vGeGKZux9KJX6i&pE)s=&OLP26bRR^cYJxwkjL?Pp;;74D3q56d~tb;%)r?fDd7 zMM*=CCk~)LiGebXmb;@T259tHd^rPt*964EVn@coLBKHCHXTI9WAb$<*gBj=_ObmSQ}k=3KIx-4X9t$A?0G&U2m@SA8)< zz4(n^z5M68fzx;O`rhZio~xF9mZR5k_N(cGNXxJHXW+C$mFA-l?D%J-kv#q>KNEiMspBN{Mcg_(2=Z$kexeTk z;8^PJhX+M|O9zf6ziPD2hX+aiZXL{g7>zyIqj8;xoWF)>|E1jaWafhv!yTmxQpptMZevCWbw@^LroUH}A9>83vob z`QviT=S)Q(5B6>y6#j4z`HA-uca5|Tn-F8GJQYv*9Wm?yj~~eCPJDNW7;q7=rhH&E zIl$f{nU-FeO8Ffz@JPvD*cSBP;R6!`=J|{mc%*eO^1Ac>%wPJu1+Cq-B|far9(Mm7 z{_s%f;FjBz`7Qu{U)U%7jd&{YNG8foIW_K%xnX=pol^(I5*QDOR6iJb-TAW5bJU_s z>F}N69cNF6JO*1ME|0S+ZO*fBNZC!>2={|qZd1np`B3=(7x>M@SpB<;ka8QDXlD}i z(B!teX=m~X>R{w`=fIzS;d}eUq$+>~+Ry)CbulvDE02s0zqsW#<=1X4^l!ek5buMO zswd9loeJQCJVzKTBNBP3eLigKp8x$=V;z{ek)1hzpADa>^Y!nSstq?Qfn#QAJs6Xz zI-977D-D+BeL5D{6#U6!UOn#_Pw7YMMB85Frw+SruacI|b)EG6`2HT>r(A!tLjN9Q z&5fBVBJ|}?X2hb-9zoAxJzF(rx z*?+=WJ2Dhduik3Vwy8Ux3O%BG6a5$3{9bl9vOmn7F{y|42yYKF=>E$WgA$ec4|BX_ z^ec0({=XM^f#^4y!wz?7hrZ^ppSGK^V}?@NuFb~EJ@butJm1q&YODmLS{6tns796` zH_86{G``Ihi(k%;Lmn;suWufd_!+1FcUhG9d{!O*gN_#^tB(IiBs$pAC;T;TOt8); T{7u{_DTWw)Qw;wU3>^LkVdy5H literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/Converter/conversions.ini b/official/2.1.6+2.1.beta1/TBX/Converter/conversions.ini new file mode 100644 index 0000000..cbc975e --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Converter/conversions.ini @@ -0,0 +1,69 @@ +[Upgrade TBX] +'Upgrade TBX components: +TTBXList -> TTBXStringList +TTBXComboItem -> TTBXDropDownItem +TTBXComboList -> TTBXComboBoxItem +TDPDockPosition -> TTBDockPosition +TDPDockableTo -> TTBDockableTo +tdpLeft -> dpLeft +tdpRight -> dpRight + + +[Convert TB2K>TBX + Upgrade TBX] +'Updgrade TBX components: +TTBXList -> TTBXStringList +TTBXComboItem -> TTBXDropDownItem +TTBXComboList -> TTBXComboBoxItem +TDPDockPosition -> TTBDockPosition +TDPDockableTo -> TTBDockableTo +tdpLeft -> dpLeft +tdpRight -> dpRight +'Convert TB2K controls: +TTBDock -> TTBXDock +TTBToolbar -> TTBXToolbar +TTBToolWindow -> TTBXToolWindow +TTBPopupMenu -> TTBXPopupMenu +TTBMRUList -> TTBXMRUList +TTBMDIHandler -> TTBXMDIHandler +'Convert TB2K items: +TTBItem -> TTBXItem +TTBSeparatorItem -> TTBXSeparatorItem +TTBSubmenuItem -> TTBXSubmenuItem +TTBVisibilityToggleItem -> TTBXVisibilityToggleItem +TTBMRUListItem -> TTBXMRUListItem +TTBMDIWindowItem -> TTBXMDIWindowItem + + +[Convert TB2K>TBX] +'Convert TB2K controls: +TTBDock -> TTBXDock +TTBToolbar -> TTBXToolbar +TTBToolWindow -> TTBXToolWindow +TTBPopupMenu -> TTBXPopupMenu +TTBMRUList -> TTBXMRUList +TTBMDIHandler -> TTBXMDIHandler +'Convert TB2K items: +TTBItem -> TTBXItem +TTBSeparatorItem -> TTBXSeparatorItem +TTBSubmenuItem -> TTBXSubmenuItem +TTBVisibilityToggleItem -> TTBXVisibilityToggleItem +TTBMRUListItem -> TTBXMRUListItem +TTBMDIWindowItem -> TTBXMDIWindowItem + + +[Convert TBX>TB2K] +'Convert TBX controls: +TTBXDock -> TTBDock +TTBXToolbar -> TTBToolbar +TTBXToolWindow -> TTBToolWindow +TTBXPopupMenu -> TTBPopupMenu +TTBXMRUList -> TTBMRUList +TTBXMDIHandler -> TTBMDIHandler +'Convert TBX items: +TTBXItem -> TTBItem +TTBXSeparatorItem -> TTBSeparatorItem +TTBXSubmenuItem -> TTBSubmenuItem +TTBXVisibilityToggleItem -> TTBVisibilityToggleItem +TTBXMRUListItem -> TTBMRUListItem +TTBXMDIWindowItem -> TTBMDIWindowItem + diff --git a/official/2.1.6+2.1.beta1/TBX/DTM/Project1.exe b/official/2.1.6+2.1.beta1/TBX/DTM/Project1.exe new file mode 100644 index 0000000000000000000000000000000000000000..c2401539ee7b1c5b9ec807fd7dcbc11bb2351860 GIT binary patch literal 141312 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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXAluminum_d7.tbxt b/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXAluminum_d7.tbxt new file mode 100644 index 0000000000000000000000000000000000000000..723944a49f7fba3bfb087a0aa72241ce848f9aa5 GIT binary patch literal 45568 zcmeIbeSFl_l|O#-00fK>HDFYV(MF3B>11XIc_IuX69ObSl1xB(kU#aK>098^c^K#ttD&9|OBp4P5CvjIkpzZ1n91M!tK; zp|HGn@7TV*u&lf`zPhGrRZa1l_%+sAOZ@WE_!?_vytT5Vv?hK*d8JN!{iuYgS5o`G z$uk)l%L|KQw=A7`uRGsP_VkO_g@xb3ia=SYQtL~AV*u3@H>hD$TqH&Dabp&PN|BLp zhOp;@#FQQ%ff^Yry9tr)jPdUh6|$oU2YmV%b9$76*U5&`G6710qgnT7qvVWjE5sKW zL}m5O2hn)OmSxWMRdY#QQNY);P1EKoHFIZ4*Jp7EA0!jg!kuiY>*m z%qTn400QI;&^NhMl@oQ;2$@*GHh|B^z?f-rjVdR4YbTgw-)?}<#~|cNE2>t=y6gjU zIN&88Ap{LVuC@kZvMpqr>?MNtV}P7Dh7h$mefF!!{cQ-8b2I)AVb@)|o-r_`(RJ5O ziFZi6UE*yLZ;`lOVw=S4B(9U#B5}3E6%v<8Tq5x@i5E+}P~t*~O%mrxoGWp*#0H5o zBt9nbA&C!2yiej+B;G6W9)V4(4ZPLmay2;&s_$!38VmU6peP-i&s&o1(^$2ExvZlO zeT-J)`NU}A%|M$Qt|#Aus= zdGdwq1euv-tdzPRQlJkv@%s?+=)8r$ji_7rIw^cBiEKX?L6Nc~S}{g74`VPWta(@%p`Vek?o7kjXo+Khe-;UryJ#a7{lAU} z(RI%Lb(nPo-vk4CMs7ZD9mby|`&wN~7cDsv&9)yAHiZkD)bQoMlYPir*Jv(#@kRqH zacN2#;$6d{pkLSc(1Q<_G{ltc1*56^1Y~=hOJJ-0K4OP8x$f$fZOA3=lK6te9TK-o z+$QlUiCZN;DX_HTo}0XO#Q55w0i&rq&BqR6lO0Z}r{7o4_k8rk`s%3@dOjcUmWSA+ zC-+%(3}#DgkT^r)6p8f`Ya~vTc%sA!630tCUg9{3V{!0 z5<4aCm$*;jUWwUr)DAQzR&zshy*Re%D=5630m#D{+Fv@e*q!PLw!9;uMK@1ObmPuSKafQU|B(9Tqi^TO3?~r)Az|xKeA3NfG?bt5t_~1*g z9mEc6lIh;`NtfW8u2rOa$tNALJ?XymNjK3q9lM#zz1k-ou|4UMz;^qiMBj8NBAwPJ z9kD&>%6-yleA88nbYD5W+^;~`~8IP9nD2d}Fjulvz^UFAIISsz~vRg#^`{YY($~QskiI-R- zaiYW-5~oOwE{QuOz94aj#O)HdNqkD;R*6qa z+$ixei4RG9K;nH8zasHoiT6mnTjE_3@056l#M>p_Ch-=D>m{~H9Qk9l{g}i9lJ1l^ zM$)4t&X71oV!gx~i4!HBC~<~KHVw=S4B;F?R z7KwLCyhGwW67QDyfW-R*mi_a`w|V<#wr~I34MtP<+x^~gL2T-ujZ)7siBCz~DshLz z?GkrM+$nG$^hS&xC_2xXVo z7B8$Rc<*x)G6;{%ZU`Oo(}ymZNlNEYSp+DHZ&+xjSGxltK=5;cD)<93wyr~iW?I7$sa zhcG3=2TMU$6tGWnwm@SHyE@q|bQLbRtu zdF&@o6``KKa` zry7jyim@%i*fHru?t4x!+E@ePZ4Ks*BfC*B?3xp?a^hqD=5jR{`;XiR<3Wof+Sf3n z!N`xqskBI<{YlWej&L@z9NxhAD4*R+5?DJZ?BA~jkoqa*3!CUk@RuYEu^VPx?SP zOB#2C5cF#F5niPVi+;&vzvODaY%n?%Ypi2E-?Tmo#l3w@eILA)>;5R${n2&|%Jny( z-`?dy2~9j6{ks9Zc!Wt=5E*fH&V0ojHD9?udQyIj(xw=l{AT2%EQp$PZsvStR-{R= zZ;m*tv=Z~HODfYGP26ZV*Bqm=&l7uA6jVn~5+Xu(WW;Gz^)aw@jSa>D#W-N+VKpNx zBXcdIdahTRdZLx)o+!l_(-WZ>qjN1|axGJH$JB3v$=x@jEat=05!9X0HS%;EgFL9l zkATAt(HFmqsNKB?nh)RZ7L8FwH;T9__jepZAT^OhYAF1(N_xRfQU%+I+Wk`y&APWl z#&nK?q~GGpxUP= zDmuJ<{XpcH&Hs*)%3dDB=v>HtvQKqgeWHt4qc=gqb-N|{fd?Kaa+v%00i=I;DGiG# z@^za|E(TwAt6q`juhdZJ?CWDUVJA+#Di>Al%I|mOI|~XN`MVTjZ$z^KU9q3hxZc%Z z+@lzGHyHOi@^@g!Pii5a^HbvOXfVE_7lL#TJ%^ZY2xfhQ@t9)V(qL?KIM%@m(rb){6n}yEn~Bz7JgFFM4aQc7!y-g_BaAU5 zvQCH)tpV;?xCOXWhogd|D5Dq@fforWqLB;UTrC0}4o8WQ>Wer>LPgLu3_m1{9~N1}hZ3lXm-G)F-&0fHv7l1fv+^LwzWh*_|DI`W2Tuy`&6)c6b#W`dFm zO7{WeGe}>&O6jkm)AFct}UG!%^C)oyR%^P6%q%2r{yT_W> zA+ey0Jb*9;MmF(Zcxm}vWF%ViLc@ zkKf0)OFpqNS@T2SE5^91+5MoJtQX0sDW60tX?L$$DK-eW?Utl9AO+d&)?f&*%L!iu z<-J&8h#cbm_)gv-`NXEyWy0>*EB3%<{*pHpRmMA5RC&#&>V69XqWXJhV_3}r0pFLKxsfc9FG_oe8h<;l-qPij#AR+c&9`3D&`4sc%6$MKnej2M$M|-~9NCFO|N6)nP^C zu#|kKV(!OUPt-3_+-uWi^mWTLoWPSuIP+E!30oAlR46eZBP7b%*$4{VW4h)ue zFlx_1rU!ZUQJzlUJju1H=}yaBw^BNvT>ng-QslZFTHLv|gKEMtwL7(HbTiNM$(8I4 zSU+NJmA+c7kH0D%tHV}@Ik2+j-JiHztB03qs~V>=|}w`t<2cX6Kv5&yd7pw9=@&ZU1t_qp7Y0 z$A0V#y8ve-{vB`!;5^_W;17U(VNLj7*GS*$|NJQQ(Y;=gvM>Q{@%g4t=*oN3W%{<> zyy@d`ihV`j)?rF+e9v^{ot|{%gH3;A@nC#S-_~0pMzOEx+dAU#Fid1UBTC|K!LvOj=I#L;j(@zK5}lN7XPabRk`U8qU>Lavd>pe+{G}tPopnu8VZ8>83n=jm>o^Z z*Y-bcR3cwDpf{NKt6eTvZo_cIb4C1l5zmS2ejYgrbGpTxK{>=j%a@|s?%MQm7{$J# zZ);S`aI(8+xQbhHB1QCJVU|H8!nbvfpIK9{Xx7aEW{r?$Vc$-=8-_RJM4~Tw_QbUJ zpykO2N*`7yXqZos06UNuyRdz?r7+8#mefgo*Zm+*)seeZpZqmZ-A-V?4^dn2s8B&VtfVr3rGHLEIFI_YC*>y<&a|BgRO-l zeFt97>P>k5bTyQw3u&R+Q{A1LRdqdLc-o`E9ECP5j$})rKP{90@fTdmZ`MH{j$; zIme>}tF^({r_h;JKW6X4a|i8^TIsKSrLL{_s-U6Sv~Q$MG=Y z)7Pb}$Qa8U+Y{F@Yqsr)TOzCxIAl6p0?v_^mKJvCg%@66-1^_bH8}aHkH{B1eG%Vf zH1H0S3R=!!WwVeLwd=NK-I5V*4cECcBCNxpN_S}i@;{3qi=I7f5_-0BS|(V41cLeN zaAI=2w(~MS!2~VrxmQ@6pjbPL)J3q=by$egHbbndv@lV~kHJR16MJE(RN`C(d7c^+ z_17*3XO}n-_*_&6jUDKY9rngy z=tOVO9=OHWk9nWYV*1UE|iQxQIqa3tQ5(H_{ThFQRAE z-f-Z^o^V~`67i--9p}394NE#3uq35wr)NH2rMj=XVCMIz6di{zpxSh2)NVJ9CI>p9 zzGO%U8&m%pSnvgEcW$LNqKPC*F^#1;#&k=A86&h;99OTq*#JL<6|A`x71qR~p~;os zVf_o%#`!o3O(aGW{~vN`G)E??8^sp>Gf*(bsTMHW0j=1Mym}sD9!eW+V1DW$wbQ1B zq_+5zgqTIp;D=(_nEHRgcvK4$KBj&nM$T#-e*^+pDzsun0kfjTvD^z6C_Bu_w?H${ zSRufdLDascJsg{gW}ZbdINg|&fRgZgaK527YAen|A-6hQyjDREGb9{|N4@bQ@M2IW z2pD%R{tF^35S~n}j9gm9iwP4-&VK+I93Gk5=)?qNT!77nxs|qot>h0S9j7K#dpL3h zi)!@Wg|kG1#fMpLQVSbt8HIvA35EAyP8r)v7rZwrIngx3M`7KP6V1oMWNdDPvWfh< z4#d=h5bP_d)a$$0hDf`yD+Z;)E(7+ZL!Euisqp<_N=_^v2BEUMY%xsKq_LB?y)R1J z$$u*X&HN@vnD}3QkK>%U;u`PA)co84zx5HKS-`C6(N(W5&} zd?b36DvXQ2zQF0r$!F72{x_&;+Y=+1^+quxMw4^24i|Ie{T@wkpiix)Sx@ZvXle5w zut*($$Y?j%%2~{5&3tSErZm+onv2D}=j7j|BO=pQ|=+%q>WX_D0Iy!#0$Iml9PZwyk$D%Xq-bM$ z0V;z*hz=!Gp>q&2iR(c%-b`^({c1wpTa(BD#rK9`=>Aa*;4e@Q>iWfbCx)!Cchh?8vN6ApXfgIuJK@C9 z?hLb5Uovux{HCqOFGe+4#;C1&#>8uWhq7O<&gF=%K-9MWkIZ_nVmyOtGGBym?VXQR zZN6CM%tevRtHZESIO{N;;o?3Bg~Jx`jJj5#B~Nz=dYj!DK4$YG1dwqwG9I<$3!iMi zZuiT!7g5S~%;tNL0t&YpMs6{FjOEZ7$NCeZ)(FQg`Lg&xP)wuSaN!ax9=e~Quu7tP=)TQkZQg(`EGEexwyRQCz~;=tf#3oP1S;@w4?i>#<<>4Zhm9zcjT zZ)7AD?H9!HFB*7MwC@X!U(rN`@U?<5XwhyGtmv)gkGGgGst4;rQ8X1SITx|yqNhoW zAD9ZTbTZ*2%#8ls$Gd2L6Eg0i1&O=~5jl*+eVcopaPLj5QQ{3b_I+o?Ai|{OGhg^D z(o;z|Xxjo; ztrxC(vT)TCrGuoSIIn~3<2$h|@iJBBgOsoU)`I2b$2E%yKs^*b}ycx@YhefT=k6>0ZMEE)^06FbinrYLL-Mt*kLmY!(`o}6MhR2eLPScoOO}34gXs5zw$B`16hPZN? z=AdGTbWfsWpocq@=GsG(5|$+5wClL!li9Xo&?0;@pAH#pU1W;4D214mp>Z2h z^xQ{{CKRj>&S0yr_!7x4@Mv2Ec25ebW7LbC^0Y3NO!P{mlEgSsDXlQclky(WWh+M0 zS=j?(XYE<#d`ww6MK_}b4YOh`fSS*x#f^2Q+Renawwb%e)5g_2AUYg8&qnHO>as*# z23!mf81<3J`aycYA^T5T0gi=fv5y6MjB=LWq?S~~V-dd%aq5Az-RZ{>j*xZo3L(}h zjxD;xv4zkAkrQr_*+K+I5`E&(qn{2vgcel=p7rp%g$NEOoZ|3ffa*xtA{-`v_9tT4#!+HCde(nESUtg+8vnd{7GIAsKo`kp zF#|O7mfL8;M42$bVyV(5rWxD%9%dOU_AKHMP`HDLtnp#SHu#J-T39zLa2X}G^?zm- zJjB5xpRQb(E}CZ;?!bED&_?0b>*X4(7`fnHK}^MFCuY+NGv{Nlwd2YX#qH%^!ehe3 zNQ)MR;2hF33t;ix718LqmBHq6e$*s9UUHg|3D3bU{y||Z4k&1mNTs$+ARQ=Fn^G`d zJaqEfjA5PVS$25pQGw4;?_B6!pqW2{8d97z!1|QAdUU4wd;@{sKzQr90ENoJm(#fe>d@8>&Fm4snd=9))}xh-PpM<619g$ zaHbpi#z+IYQW3c*hp~-Z67K$b=g`F>A1QKgQ|2bZstfSxJ+n|j>Ba%;^eZUBZL3EU zwBX{NH^Lx?St|Mw6v5A?8~ezf{&ZuPu%`SP+284mQnAK3*0(-zcogdIZ$E#~+iV@!5gj~5 ztEV<*DWhuuiw;+IczN*NS6Ka=VGZVfyRk3azQ!4jJH!XTo3AKNsChtno1T+AhMBGB zyYzy@?DQn*vm5)7WFQ=L+7UkBPLkixbCJN~xUhc3p-aTRh$ioui+h}kw|?kfAJV{* zCx+{zXs#FrgE4kzO%&sdKaU9!y${jdSi17>BMNsx(}ML5P))0&9r+((-`va-k+-^5 z{m{gJ^ENDhNcH82?nTsJ`Z5%$z8&lau+?2EmKuGS0^#Y#ySK3)LU$`I>BTJ~q!&S& z=BY9DN$9tiW?`HDjPWz{JS|Me0nOHjqilZ*t3OXqLq3c!_BR;+y9eu?KZszredG8r zOHt7RhxJ3p`gf`L4=;u6So@mah1=GDCdO$$7GGh;_j+!!ulc=7M0z6LWBi?3rgu%e z{Vghia{ok!`CXWJSnOv$gH=DJaWqTa%zr920)HWq7QXczO!Mcl(q?q^02RN03M}wx z$4JqiAc};-fB5Y9cZnT8Rf@XZSLcrcxrU*<@4-ogN?qVXeFIbbR^z9mjDNx6O*JwR zM_8UN?B3sWQ6ENMP|rO-pmWbAewl2+v_RVjIAzM6yp*!OD`I`Gcsx3(PVZjC8+inL z+gN&1I%%fH`=AqUGK!wQO|XnYtj6*!^(8IA=sUp$AXkB~UtY~p`_Um~H|%KLL5R0AQD z$W|v#HP819J4&aT-ed(3rTZm58-lW$qSVVuaX(vs#uA0=aGv>J(1RO6(e2km);=u} z=drjB=HG@(b`7JL(o9Xw?}Tj0_vyfw*-zr#pL(}gP{ePLN?g~Iv{%D}Ss`n@X>}CX_qQTdezfvF|2fJG+v%m7(in35li#8< z*H&uy3p5JUYZhx19lplWb8GQ8mgu$pEl}NoGqCf`G`yU+L&5#lt3*YoFeT8P%1*?@ zg9ascyu*9}{pTP&Ck|BSVRTUR-w;)YHP3*oSaHxm?*v@H0qH8}R);=Oy670S&_lwL z8&ztCKS_w)2byiec#OOG=vKB3So_CAFCIAF(cgYeFFep^+SEj)&lJbY$O07_*-IYp9Fl#N$Mv{w(^BI34^# zIFw7|zb?q9+BoT+6)SFJc#NnFdYFy_L2(G_#H@{*sjePSu>Qk}$cabVScRZ=)Qs@3 zd!(8Xe;506AIGypJ!&-fp+t^IOwa>L{gb<436^tm5esiEJ4xzVh9eGXNO(6Y(c6QHV1j5o=^atAwdnG0?}%s#qMjq-S?UonUge@MeomZObY&a| zEl2O#BKyIu1=K*RQHKfChLgZF@nNJjz5wytD2`KMr6_^F_9j%ATOIiq7V;8NcV@&Bj`C9y$$073Aq)in!4}Dx6jF_Sic<-K2;r4E&SJ{r(=QK0zRzPJGMAK zXrjddnrkdo#1{7+q={G4^f^`b7bo?XaiE|BMQ^oL(bbP+(Gw5;HM#0mT9`NS7icDR zZ<(}Ezj_S64M@Q{T5K*kM%Gs+aK@oV`)H*7S&jG8FcXB|`w%F>TZjugF{2JB``VCe z&$z>lKu2gdt=`B~h#5m|{vz2a$fOk7p8MWz`(14-=O*ETrfHIq^Xp(cx|#P;zHl}% zXy7}j1ZadC2#ZVH?@)-|PTz`$)AcX}Xh20Puqf#65G!7%T(C#<(VZ=(n1UJtp!L);DiX!z!S#vKihLEdRpFy!Q*%poOKe=9!tr z8eHr~qwSrMI6%QLlH24X;%>SduGal9#oieM2^>d5!l`UODJo1#^F|2vWVlsD`3h2J z_o(I1ksw`Osk?DCnWXuEP1@OYX zZH^^+&Y1f3G`c5XrZ;mJW~&FyyqQEL-3sofep9AeQ`-fzCl*=nU|4ufxl{j;1p6f1#6ZGmoa~_tbmyvBBzn zJ5qV-eT6$h^ zb2HjsykW!c1&hD|xJDk0Nm#m$X!qYn;jusNsQZ-<=3?zH{tW8(xapa+l-qkE3ZNs3 zYR(un$s`ZGaLZ}$4(ERm&N0em;8g{IMM1BM1iv}Nfh##aN z(kgbE_F$@0O^e0aiD9Gx>1!x`emk})7y=F?=-v<6dDck#ntmJsVt|;PI4_*9{D{sR zaF)<#e=|~4FL%MucGJ8HkxAx02v35-a_GR^cf>#p*wa9c+NrzLV&t@?J4)L*tlsg~ zrDlYkN7jt%nPf%{{O~e$80=CSDA02s(KfhgRtmU`yk{JdSGmbcDPV`*xz_)XtrjWX zXX7w*Q#w{ew_C<35&W|wVp&9f&BSj+q#*(=qW(>gxaaJ6v5y`VFh1=lR#6l2g|=uB zl}3vv2OVe8inRaG_2ei&f}=ct-@=FSP4LH)D}j*DjpZW2pQt{ZB6o~k8(&FUoDEMTHawv@j2$l%Qwjc9 zDql$J9a(yj0OxyrCP;@Tkc>!;eId!E7Qmvy@_MOPbh1Np~J9&PG_!ildaSMddZYk7ar<(^7 zZ?V(#L+TwObl8L_CAeE8ctwgG)*_&;Ny!Gzz*XAB$sD@h=f_bQ_I(g>h;O>17fSvB zh9V4Uuv0~}*bm{GI)qmt((f1PX@YLCH{u(Qr%@tWNsuUpV1u0|{BJ16jm$PCib4t~SY4t%%RFGyKGOC}0SI>B<->09&;s*an5 z{w|QnIES4=GJlfeU%)%!Y7s#)*&#w|{y!4@_rVuA(YbO~0)GSX2752$-SyK);VgZF zy&r*=EOCY2l2s8!>ar?iLniX4DWj}v(RNuDLWgsZKy8~FAk0fhbyl4tt4=m%B7aaM zT1V1~sLBSrjj|Kf*kG?0VXC|a`xXjkB{tZ%ArPo~q_BEBI4$-a_@=V9*qsQeJ%~cG zlnJ~GUefHyisvtUO>WA8Qa>X@iCmE(4W|Ps;_CUMGL*vC$WR7fAwvfKpbTa6`(-GX z8)Ybur^}FuC&^GD|BehTkayD~!koZl%U)ZO`58R?`*l#EbU=3jrQ)&Zx;r!qp_lm9_R`Y6&a zBh*KEiyFx)MEo{s91l!}dcf8T|_^2@a0fzmL8@K+{g42PX4BO*)$s76Fh#sx& zaa`6$z829l(e^klp-2|j%BpM~$;S9n)`6n@)&9vw=yHr-i~^026hOLjo+io0O$dcfOUX8 zfF;(zDgY&b#ef}vZGd{fI=~*lEiO%K=u*ag@D z*akQNcm)tW&cH4J=K*H}G5~tOo|_>Lh`hzX+T#rD6yPMl0$Mg80}xGoKs)450d@g) z07?LbkWB!L2lPUw3vdCj4e`Z*c7#s>b`T9v55QYuW12e1pU18@?&V}L^N z@&MU@41gYx2uJ{o2b2I717ZQu6ee2$iGTz^JIZ0*(QCkw+Kc0-&8R^)-O|bEu0trqU=d z|MWlT@6vq3-H(EVyQ_bG{`YGD9?BIe*H>;Zu!VqFKs|sy&8&i@;J*rl=z~Quiw8sj z?f{%(E13>JD+T&&VIBC{;CK%X!wxxYn9>+NTxn#HN@G|Aa5%6Jt#2p#6oCFBuM_ak z&;L#h^!}K!jA#7wT8h8!+!H`+2JK`3E$s!yx&mm`p!EmP4uHm<_0MDU&loEVpgjdz zSpe-cXqEulI4p{70kox{Z402i4BE~B+NYrH37{qaoUwfYv?oD37C>tTtu=tQ@ZT`c z2GFARqO8yPmv=H~Q313X&|(8<$3cq^pbh^8V~GK@9MDn%XitNd9Y8w=nkj&m{7d}E zcL42i&?*9G$3d$Lpbh_b#_9uT^FZ4kKzkOnT>-R@LE9TZyZ05w4g}C@Kx+)3HG_64 zfHwL+80!e26@k_jKzkmvz5v=MpbZ4jCcla{+UehJHK4@?(2jr>A3zKL71}6(HV3qn z0NM{h%MPG@0GcU)cIQ6E76;IlgH{$m`z2_W0NMa(wgB3t-{5!9186TFVk{ct-}loG zT3i6_^P`OA1<>@^N-hkbZ2+w#fYuILbpUMwPN3HX&?-RN5pWt^70VRNE0nLEV0eAnDF$3Ts zz{`L>!026!%>-BgF9FT~`T-OE6}O#$YQQT14v2i7v55fsQ~*B?*aG+=;Ca9=0fzwe zIRo4Y_!Mv%5Dgz2510&~Pd2a#uvEq$2i_^e$AK>b1_0XK_-6nBYXLt2oB=oi_r8d7 z05$*)06qcS`V#s9U>#r=;1s|Kpidn9bPAvdPzj*VcHn(7+yU&A;duC91Asndz*}T^ zA8?xtJAvciZ|P$IUM|DifPX2&XMpb zpA_IC8D0ncybQMja~X~y-wU9R3AkE@cLE=h;ZDNvl@kE;F#s=>;dQ zp$0&og}`+(yc_t04EF*@!|%~Y4_qk2>wsU9;Wpqt8IFTbO99Yl8L&-;_X4-da363C z{1<&vfQw{!9q=w0J_+019AX60DlG~?nfN}J_VG#hA{<5IDj$$8Uf+|iE#w50QLj=0I>&Ahk#{(-GH|N zUja1mb;|+U07n4r0Q!W(w<dqu#)H2he9R@Z&Q45^%E&*H|j1Y9=qQu7Hf8;IUf#fUBXrvfNT$Tv7gbG5u(1 z!uP&cv(|^3Q(hU8XRfR%T~!VxHThK~){0U}Tb(pj>MhJGU#`;0B6n`{uQ`PwufS4M zSY^s8E3Tm&>O48jsH`mque@@VZw^8}uT+#|NU}LKRck!jYX;F?y&_0|R)w&onySiE zHp6^trLm@_O0cYy$X#lKsd&XB#j8rql@(RRC8D0{v^rT)k~h0@WmO^lR&IzY4AhnP zk88>;t}Ll26-`|6SYXQ=W|pq3swvGbt+mux@w2mP->6Q~yW98v<*V^?zK{ErbH+;a zhODZ}E2r_TnXHQ9+FFrGl`tVF1HT#;(pfd7_|f5j-j-i#DHhx+AMJ&zjRySSZ*{R{ zMVUzB*Jf^sK?^&mt{l%SkLGjActm29aW8I2U@yo$#(E=(u zps&rY6{Q_q)YFOalgP4K2C0>tno?1VWW2j~xosleY&2tW<%*Cp^GYA}74hk}-drCk zt*I=n&}k=^RFKnQg%$W2XiHIXg|$?T&GL&;wkmx_h4|Nc;2*126jw;P2zxk0gp;W$ zu6c}EYfEdqx!k{UWo@ZtKDsC6IlGoZ#x>QJ$0$~bE?NtMWMkY_pgYMJ%u)L{icnL& zqL$LDw5+O%sv5+yYlMdh{S7|Uwvd8PQ_>ROAc z!OsU5K2}{?8^Q%MgUTJm1+QJ<P9rq2I~Pi zRh1Sp!6PtOF}*b|#0snC&zc#kO1!e}Ud))^=oB9I3ggqwA8cSTgPZH_9`5#b(?z!; z+o&`8<*WYUdtHbD%?xh-Ao=>~L1!$-sv@KwH~(sS;1R8s@`{ii#={R*`;iC|UC&zpOyc+EG3~8Vy>mhN+FrFIVcQTJcC}NmfNwZRt#_#Zp!29vW9up(;ZvNnH z;pP@*;h)p2S~Gi1@hU8Qpbp;9J7ZeK3>8w=Gy7I2rMO)Xrt~${Rh5`c8Cy}cW`)IP zrRK@yVcKbk*bJNu`K~;2@XvgN?qMo-kP`X%gxt~!I4R4@(0aTQSJOp}QdtvPlbe4v zJ^96!vJg#W5WHXoer3wXs=s_qRb@yWZho*Hzxsurue?IHp?N^%Uqz4TtW}}?w}&6B z2R+}zE%bB=gMUAue|IHxt*hKYRQr`x4CPQt43ZnH#IN4Xs?!Tm?abij2dnX)e+wR~ zTv4@rbx3PG{9r|XWy0vfiuX$OF8No{Lu0)dZ5_%WX7EY`tMYFvES|4ulZPLy$ggY# zmXa&#@$j#r2mkg>8C<~H^3q33YeKf1zf`bF|1u))D^-`l!w**ESH^6di&d=(UF&Xs zuo{1ROgN*WO=pPW89e-8MSlGohh0}(uXy;udi=_jg+0jfnvxLa(8^Wi2dnWPCpp+S z*DepC#vr-DO8ji0HN&Ijpn z%U70Hgj|3bJp5oie)R*pODe9=2i^Q&HU9OZF1SK?0a}|{%d7p5 z5(3T%g0`_@9p}jl+iV|IS4(TrX|!N_FRVETJBu1ep2_7BZ9rX;~>f|U6C!kN^w2hGfqr&&L^l zN$3N{z+7aiyz*6L$Z1f+0&4SWqI8y^js=(^3=t>lLB?e1s0sT zU{=Ki7~M#yN4}U#wU2lYjF78#Mb({u{QPoJ6XJ;7HysU)`Bn7q zg_h7MKGjy8wcK-6<-N@f@bD1AO@ENRYq6llrDUkJ2<&xB1RHD#T1k|scXe<-Yf3|? z6h6>TE?BXwc|R#S8IxCmVjGLgU~C7(u$NnFs*0=6beLhqO&xm3mG$GWtq9wx{NkEb z<&~oQl-FpJkW7@W)<6bH=Fsh(i5u)y>fpP&sWk9|x@?tugkIJ9Z_IMk1o?nfc%h(P z=TS|2M&woPn2EhdX>sMXr%hO1;(OC|)fV%d&4oJ0OsK0)(9y!~iZ&0aHEApbo)urI z#~TLe<-wz|xUxLdQxf3=1b;}HEb4|23&1N_rS*{-lGYM9!7J$#{2^(=8nrg$)r0hR zLSjhT%BrfaXqVs*NfXrw4&Or*lKi(@B3NB;dzOcO8YIdn_`!cRYY z@ro5!u$j2Q*#!4sIwlRZsiZkoi6ZCK8FqSG|Vk6!hzKQpBfD6TVn+m80R0Hw=`ek^Z_b}dZ zFU0%I1$cK>h&Ofj<8K4zLJp7%7?^|ia)7qkpwEInK#7sz-+=~wCf>HqfF1+#$N(=5 z?<$k=jvK4;omktKVfmPX2M5_2ysMv#_mcPFy&J#=SPbY*#QS|f)a`gLHvw-`0WkpE zxA1lk&^jKv0e!cre3GljPPh(G0VoLwTT%Y!0Ivi72pHAGSQ20npc?QKz%f84Ao3*g z0GI$4z>fjv0i*tlF(cqtfXU5_l>-g|ZfHS%fPH}5S{Yja_*cMLz>K#T`!yi-ZPYQ~ zTkk+8;B!FvDaO78Y{fOQ8_CAuFIr>SST>5?#BRi20^Ptypa&(h zsVs?U=wGXL|3lgCC8vQVG;J~lCSC%Ge_UQ&d3pY6dL|@vnqUdve|SE$l>47lr+=zl zO3?}^AUD5%Fg~=HTbcOx*`=61Ses8d#X=8HF7PTyefj5k-6#Bq+YD5PVK5Y98urXA`hR~{EZ zO-0N38FCaAiv0^Md+Cl?eFhhDcM&T8D;%i}sZm0#x`$XtR0~6>q#;{El}eQ%HZV0+ zR&@^(y7sR{G3{f&L0gBk?-^n>lH(hKY2QR&GgVbvtJSkidj1ydyh06ebQIdC&aA2_ zDHTt?%4_^j%7@w(q{UO%@*$-XoA7UBQ#+IfQF9Y-UP2B>zhl3Duz!mD}(OyFb zCAFqvyr7@)@a^Dtff+03&$d%d^R!Y|}$n&#jUsHDvX$}s` zhg^R5)@O)S5Ne2BdxqCCl0uer=-HaE^eb3VQ&mxMEp>b?)0YaY@p*R0mmXdc%* zsoAReq2?!=mo&fB?AIL8oY1_jIivYN^Red7n$I;~Y3@wQOInrmy`*(X-%olj=~&Xq zr1z3OO!`yOUy`oZ#%gcX-l@G;`(5pHZK?KqTD$i9+FjaLwFkAwwawbo+H=~A+E28f zYAJYtV_@(>oRpYx&qz9x(eL}-BY@!beuQw=%3O*t$$Yky#8hVtNMfb zv&lb8 z{#Ej^fEUdrj|@yJ9WdglQHre2)-$<)71bxn;R#+l&X|985W$ z(wuTS<$TJYQumrcc)EGOHRv7%SoG;R+P3h zZDm?z+S;@YX-}m+o%U?n^Jy=qy_$9~?RZ*q+Uc}&X&2KzN&7VIQrhLT;pwB($E8n5 zzdL<$dUASZdQSSh^rG~o=_}JK)1OHHm-HR!FQ>nnelY!bdUN{e^mFMK(?3b?O^?jb zWaMR>%=kk_!ZgFQb<=)4?c}tsX}#0>ru9#AP8*oUG9xpiGNUtNGGjC2GRJ4eXC`D$ z%uLMGWa=|hGBYv_nc11SnR%I}%)-otnTs=*WtL=?WmaTXXIe7rGS_9=GV3$9WNypc zp1C7)XXd`lmdtlDKg+yndffDc>2s%>r$0Qsa{9XIPfh>f^j*{UPJeUyJJT_s;_;gU zK;trUGB#(tnz29QV8)S*;~6J1nls+cIGvGzypKZ9D3ZlpL@ZFll%^@s$*YqePWekJ zGvF=&wE0Pgv{9(h$53m(OS>igJL%^1Md^P^e=>8#^mFP0&u% zCTcZWy*5Rgp*3i;wYl0ntw~#`U8r5GU8XJ3mT4=r)wqeT)2`FnwDsC8+HKnH+8x@R z7<;?5d$fDCuW0va4`>f*k7*mVC$+8GQ`$CdyS77nLEEYA(sFIDwoluyb!rE+Oc$w( z(nafHbg{ZP-FRI*#^^*{qE4gJ>r!+XI)g4-m#fRunRJD^g}TMMWx5hw8OCn4&Z4W+ zt<%|b^|~#(ZMyBc9lD*mUAo=6J-WTRS9JSy2Xu#Y$8?Rlle$*jDP5bcUDu(zpzG9i z>A0>}*Qe{(Idua%rjOJ|>7(^A`dEFOe!MvQ#adXv6T zzffPQU!#8vcS!i*G2B@IH1V1Q%|y)(%}&iO&2F^dKR>=T@acmI^k=>JMB?U0baC4# z;9Oj#jRrITj!0k zEr@UTiN_5O6aK?ZN<`ce?v63stYtGJD_~h{KAR1PQHbyR**wrqYzC-v@jVL?vq8%N zXLJDlexEc2xQok&Jju>RTGB&)Djr|}gfSGBK0f)Y1oyX1Z84jTAq2pGM8a2NVN(!emE#cwhpN4@xXtv$=|<5v{)C3HM+IL^Fyb{9p~-># zTI#O&K;Ym?imz0Yj(BbO(WgXwnG{%i^pJ>4fk%%XJ*vi+2?ZlO@s%Pz{E?%I%2(qn zS4w>=g@WppD<4twTe*@HAih$>A9+f|hkN1&{o+qNa>!5qiK9oK@=cHUA&N7ZzV7Iu zqoPEJhrymlm4nJuutyAExh(7^-EVG)durutB##V1s7)IF)UtF`mM~~p*bN}FTKW+j zB!C1-u@UK1CBkCR5R4E4B1>T$NcfCkIpB)SWu1cfs9*(sxf(~fJkWQ$%LSMYn7~H3 zo@QaLW^|KI#y0lhdRoHmh!c!y3<1P*1JaBDL^v5M9>C8@U1nheE?dN9SLYb|NlRBD zo5>cU?^iG@Tf@p(rNHr^l;FQA#N#niirEVG2)QP>8I6LLtVXofDtNbYv>vwDXseZIG5ijbkkP>3YVbyduu=HlJE1KM{;divU5(bPWRJnq z6(c5F6>0AkGH#vO;MAh+DX(heSuT2n+ZGM{W|$}cBFNT2+AEWUHxwEVFuanW{K-y> zkgY`C6#*99EoAb*UnRI?Z8hv93s$i*q*OnuonE;@NED;TmZCJp2tNW#+#gl;eyM}{ zIOXduBgMQmpxS7HY!$RwQFcp!g?K9?%Iz-`So*-S-zv(b);;A$b>OxzTNqj->~>q_ gZB4ut5aCedW!xYqCIp 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 XVHHwU0{gecRNZM3_}|ZevjzSiX^kPJ literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXDream_d7.tbxt b/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXDream_d7.tbxt new file mode 100644 index 0000000000000000000000000000000000000000..6b9cf751fbc40030c85042c94b1e4dc39a0b0c8f GIT binary patch literal 50688 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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXEos_d7.tbxt b/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXEos_d7.tbxt new file mode 100644 index 0000000000000000000000000000000000000000..a01415feb91cda1deeb3d6b37ba2af1e7fe13fad GIT binary patch literal 45056 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 E0SvkkkpKVy literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXMonaiXP_d7.tbxt b/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXMonaiXP_d7.tbxt new file mode 100644 index 0000000000000000000000000000000000000000..77ed1d234f452832c2ffb69021b1438120fea61f GIT binary patch literal 40448 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 VU#m5llOvI^o*iUn!!`W}{RSj-fPVl0 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXNexos3_d7.tbxt b/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXNexos3_d7.tbxt new file mode 100644 index 0000000000000000000000000000000000000000..284e5d96b789492103f24b492c9ecbc1ff550709 GIT binary patch literal 52736 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 N^}=(g*P~Bm`T@ROASD0* literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXNexos4_d7.tbxt b/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXNexos4_d7.tbxt new file mode 100644 index 0000000000000000000000000000000000000000..169894b105aab95ebc022eac13090d6e20edd7e4 GIT binary patch literal 52224 zcmeFa4_wvN`3L?1u6k7xDl{!-tWmSD;?KPo4#h;v%G4Q^HCC)0f;B2;R7`&F=lPt^{Rb%h_I>?czkgSs z&vQP{dCqg5^PF>@^Y>nI7uuCzMNte&n9|p$DEknmk5#!=3tZ|Mq$mf%l`+@v8Ts0` z_XW**?c19-=a-bOj;gGxSW#8DDr%K;wIgb2aa5JFJjz*KR9qD`zqC9d{)$o2iI)=l ze`TEArYN(5jLL+?8Mo;9wknT3Gdd`Ef>I5NU8BZ63LFmDOz&1L48s}d6(1cdu`r5! z304sHe2|#ZL~=m_(UnnlB{X@(MF2l@p_#c>(A#$p*p9}Ne$^wtEctol>htTz8hQiSQWLg@5ZwdpOW~b z#K$E*DsiL42PNJo@g9kHOT0_sof7Ymc)P^gB;G3V7Kt}Yyh-8>64y&yEAd*1t0i_w z+#_+f#9b11N-QL9lem?!eWg_#@9XPpa$7YY*rYb*iO)b$TN>VVSnAT0%~qw)Icnbr zs6>%V5l!M4P(!0LR3j$gts~U_3~}1UFYtDE6Z_MKM#uHyLA*apQDO%|lF3QL(Ct>m zlP`ED%FG;NCD$Bqfj-4&@%8VgE(eU()y z>WeLMMfD9cLViNy!n^J&a)p=dMnqHl5%6~O+yhs}B|a~4x5Ql%D|@we)hpja<-1Yh@e)T! z94&E_#IX`jmN-@7B#Cn*&XTxH;u49ABwix%B8eABoG-Cm;tdklOT0zm%@S{yc$>t# zB;G0UK8g28d{p8_iO);iBJo*?Pf2`I;x@+QOI9i?74;rt9$ZS^opbG?6`lZIz^I@f z=8>2_)pN3My77o;YG3G+j-oy3X85Fw^-X8zbT{~< zqiC{o>Yp?_CrO+mahAmS65AzSBJm=L%Ooz5xLRU|#Pt%_GM4r5sgIr}Up;$R&j-Ko z+LNL^<-2);*DguE>0%Ml)Sls!j-oy33VqV0`lc)4bfbLIQ8d|Qv($T&#M>m^D)CN< zcSyWP;@ym8Ip6ll*Xo;ZE9d+81#dYin(}Rwat=y-QsUzhw@7?e;x>s}CGL{AQ{rBU zdn7jQ)9TwG@hpjRB+io9DsigBNfMhRj+J<_#FHeBmN-h{NQuWw93gSI#3d3JNxVej zMG`wCu9Ub|;8MD^ zxFSEpQBGp=9EFZzmNNo!A`v%oY3b_O6;-PW%SI!VRl2%xX<2a*h4YHbikCTxi$)=A zuPR=>y0~aKf;knAF+QB~RcDs3_KHepC3G$>cLb=koAeozpIcn+^j9bZ3hg3=R(TXc zNLOe$!X(>=M6do93;hoUCtBr7h`gsz^p%u%|gc=Y|tSI;OfmsP1wvMOt*Lf&-bGXrU7BF!ADa_SDNvKulScJR-& zD%%0}N~^MUomJWMZO{QN_oAgMNyE0*Ta~bU|GL_kLX$A-oXK9qQAzXZV^K2*d5S% z--hc!{4TlUQCj#r2uuAiE$X9fAE~C2aN>oaXSz{N@d%inErOJlN(q>h0|H|9hlBSS z1Lg80;?+~n5QkWbFw&jHbX6RKKY6wu)E9<7LrA;_LK7@Jeb!y}9NMMP$k%pZJ;HH-=>f0_`uj(}7wQr8GZ%(K?cbhsQq)DA`5YIxgYTM?r z?NDvoUACR>+%4*KW6Uv%dz9n0xNN&r+g6utw>x(e$RX#zAnxP1O)lFW)wbDX+vm=$ zSLcVuaNHb@t9RKBsX}I2BNrZ zC)I{(4xDnk%ZLY=oKZ)Jj?YO5QCzmOYC|OlTHNj;<}rj2Pc!on#brCMHc%C~Y^`oL z*~e3U<{^s9)}}Tr;ec=#?AULlCSmIpSAwH&y0LG1=)H^YR{u_wj`izTBks5KML$uC ze(*nl?GjV?S-^9EUjudl5*nNEe|M1lk1*07xls32QrM&KA(M@dzXmP{8-9b%XR_bNu=bg6ZumdOC-xIiVd^H7C3yh54eG4^QW{;G?&%=;<7>AKCVG zj8k(WI<8#*fnuc?dOAbYobl@6yE(skcdGH~`+nJtS^p7jEv~;vPlqAl-HzZt1Z{|n zu6@v`IIpUGa8yv(mZrK7AKv&>>Sn9bky`uUwP5?hh>rN$2S-vUq+?R;gQFD(@hV|Y zXuMY94fmyFfuep|_tC?U<&M1D9l2HA^M_4}qSU5FD~{XhPdG=f#|BE@^-#Dny!Ojr z=d~<$#36W*zK$zoH)nCVOeE>M`*Q(Zap7ZqVFBQ@pe;&>kRK*FQaZbgDKH zW9wE=9d0$m9NAC3^(S9^8Di@u=VNP&v32!}>T=myR9kC|t+QWLC)`?H&3UC}L_#A3 zbcC<3Io}77>qa!&I8ay9A|qQUvPF;NKwZsQ8F`i>&+3sJz#tkF))0pddw@DE4<)Lx z?@p^)(4)@9_F+$q-7wQbHff>ozPV8@+bOl?)SG<|gw(yIs9(%(xUlxF?1XpKGum); zJuE^Vo9*yL$4|cK3$}G{u)V64UJ|-C*j~}fED4<(Y$sIP$>nOniRG^FjRmi6um@+( zcK!xpQf%Gpt^(F9s2Pjg{a;n*so61~uU(j}XT1aUpl5xa1lODjww>4WZqX?%dgfrMRAuwcA@hB6 zd$|pFs|7GwE=(30yfOFH4YPvDXc&wyYczYdYC9ie6S@TiTd5_+)}~Y1*h*((Y^^$_ z6;>K7&)@r*>hq4iJ~>VrF-~&-Jjwl2{fxS24Rz0SFp1xN?CCl^pxr{WpLuCrpp7G% z+e;H_vj`^I_q?=j&_2PdDD=`gL3@X2cY0}UTC@KFTD-b0G-jP)PD5YVreRd6%~mup zst0sZHcOv+JUCaVwoY_fG6C9gmtD1W$Jl!0YtKUQW_w?sUEF~uCKYJWb~QURrpfNM zowTd7jp{suI$Y#JSti(e?V=K_#3!ytAhR#`ywly@!0H%d(xJ`ThyG7$GMzO!EPOT5 z^@w>@)1(QO@M!W8SXq-N5YRLUtTQ1ekb)i>X2{FJ!n&qF1_#l|$h*#oC^N#Z1@-g6DwZE|i62H@9IT-9F*(nCW+EHfh44%4ceedM@DvlCH)USsIT@Bh_(g z6Zy?3j6=T<5_ciSpZ9)j8x6pVKB49s)fv66AX@QQdtG(|or!>cXWl$lZm)XeMw%a` z(ZewYZ!|wj<4IBx#lb3R^l(}+{lO9m(;qxBc~L*dtV1>Yu?)3g7eZ z(!W2Fqzps*IheKJ0Hz2E&*?-lN_AIzBi<>GD9Qs5XUh5yf`He5MNj8=*r=JN6lAPs ztARr8G+Ylr@3@}?SxFEc&c%MJr(II@TwPDE>d87O!_YC&SMT3pE_GMO=z@gP35{Yq zy)3@_F0$uLhjFGOZKh*lM}Bh| zlT=J$6&uhS(Af{5X`}Cii+{tPQS7%kb_K`w$lM$&r9#`OpsdjI2&uW9>fxB_h8M|b zKl$Qo^&PmRw>y$lxYRuEkH^I8#P_ONAjC;zkSU{jDW^YpqJEF4x~AZidqdYYNpBTF z>)pDeIQE=R-R2#&M|DP^C1N_*CD*?9E`A{h9!FeFa)$f#q{!NJqZG%u+BDuva9*L# zuU0cd#cxrjj$3QjO$f%4U>z0!p$Vsn{v)D~RnK9f-7Ly!fqII_YeA+>3FpnKEfhYt z6Ama`jQSgy34xIuXcGSfn_aB<5HiLQBOJ*)Ah}_if^cySN=CUvh*coUvV~LG)*q#1 zGP&YUWqDi$y(ndYQN5=#vRia(tVL6CbckV9rT;0dP>eqGu3Px#bp_FRd#Y_F& zywu;JoMtG1T9MkCbeh{Rx8Cq`m|%CW6=w)2PuD`MO9f%DT3s4w-< zz_}t`A2<^lH)f9yX>=Q2UP}(zGlX{Hu#JY$9&sAUxY?m77d~Yw8cHgtJbeBL0lOH6 zcBT)XIK2j?0|I;o%^vX}$fB6yFwaqI&c`$((5gCHVvf-;+9YOhy8DpMGbolrPtxIq z_h?WwypN_L2Ssdx(3yYT(Jrm8b&=ibPdm}9jJ4H$igOtUE-H>x9^-n%$54^l?c8p4 zX1KecOT3BUX{9y-_K1@{u~8KJB4Rrxdg6Bl#y^GldlzFnM*7?>RHwYf#rs{f7VK7? zq4U(w-8FAFUy6sXi&1wl2iK z;5|D+3)E9?+goBUjac>XIw1F28m>YB-qJ@yG~>72HO*XNwcy>5f)6v^{0dItwBjl_!|HFGH*!P4KQ?5KtbaGG z;c4Wuv7m3%Dd+Io8r0S_6wIeQ&7Si72pfzYOKWTT6vrZNX{2tqy5S(J*-WZe63bLL zS?|~tM?#%g!u7xd9U$9?g?|Ot1hi=MkZzHWB_p?U#EYqjD!5?lf{~B7ZO!5-To<`Z zt!WOac|%`w+FlK@oyn1NJ6hM1Lx!C5zH+`mL)EerZ4{(_q*^1y2*`Km?!Y*cp*Giv zVDTIXstq1&muiCt!v^OzigZs87Ai-yXbU&(R9?cKf{V&cVUw=;e`uqc_T$8<+*Z;7V zf<0>U7cF*v@GS1dcd2}swHq25*NucjLp!?J)>Zou4knUo9~z}#aK*S`kD{sBljmXX zE4ba$>!WzpCPqI)$V0Bg3#E6aar&z%{pRhIInw0$i^%ebSm-O_R=ljlKUQ%(RAhZd zX_-wzBvh`eHYn>dsPH^H;?l!|Qt`g{t2RY_{~fJx1zp$yauo>7&y01A;dYOS;C-wf z>$3mny|*vr-kZ(1(K-PhWHjuO3J1Ct{Q@FttH;x%_WF=}jdH?rhkCyuIJ?b&5QR?X1hz>CQc_Hla$fLUnP}aToUOY$q|AxC>f6{rulBRL4EY zKxbamKMQvzNy+S=fu__gmk|G?Ru5c^iN3bM{MTciZ+axWs6_WQBo@iE@@{qxWS z4ey_WUU40)?ZA1=r#!BvRh3VZ^E1wDk7=I8HiO4Bhgv+Q`7H%?)4a}f%{1O-Rl+I^ zXqsG(@-vOzQsOV6_|wS8uUQT2pM_?bPS(gT1Fcz|;fR6lG8J*2nXufOYh~Zqiye+0 zTCnPCrw?fYaqnVwBf~Yf#x9D&bmYLt2^(ymt09-4Q8n9oXnbt8braf{H=*{c5a;l| z+zDYQ>@3aEeP|cApF@Z_Ud=lb7J8^qQh!*qw8 zHn8?j#zY?jPBTsACbd5b7EV5jl84oQC5stW--VE;s9Ap@pN?E^=F0dE^!W)Cgl7Bu zXjWBEqrvv=+c9Q@i!Z?3aie!us_`Jn>zGTbKi&nw#CD2hLg#pr?3k=40Arf3>?HEM zo>V_2;fY+k|FPdU$E6RufIq=n*fty;dq!rmkHTO{@jrk2g(D_RwDO^d+1-ohNa z_Mr(O&MPqZf2h~REKk>P^Eo2DXcL zPE!V*q=J2{tDsG_Pr%5Iy$kGh+tp0$QMJ)hFw+o1?;#d@+)mLs0FRU33jP_Sp9M|ad|MGXPBvmh}%iQh9Wdv7oXtE zqj^5Wm#6c@m}$%r24-EvtPVWo2|eElaJ%z~l4k&?c$XAxAcBjx0@Q{D6t>m6-Lsf0 zlmv=B%tjQKtzK=gb6|tpokcvzP|XV!o0*3wF54!xA%_E--R@N4$qPjR%9(@SUA8T1 zgOvkY-ENb{fimWZnao2Jmu;Kcki>!QZuey32|-2%@m*#i0$smoh~>aew>z3xG*cOv zg$T4rX_&-;-R>vK5b)eksDSO;O@UTEK{X<+Of6Kmau>n@R(_gUH7j>B>k`VSp@&(0 ztn6e)&C0#Z$X0Gp!0s_L*?AT-vYi_Yh?J&oFft?AmTeF!zQc?}a5aQ7Bip+noEh2V znz6omlcccC8zPvI&E7Dc8OhGlWN$Jf5nK(C%*eKHh$6-($P%8dAq%n6{4@fdSH%X8 z-chkPz`O6xNk086)>Ux6HjVEbIYz2kkC?FE({U>{et~ZC;mZl&n?(%6m=E&N&4a`0 ze~a2$nIMYazkm`R0Um0k!EHF)W}BeXV+?`}CBk}1ZLLLv&0ynpj2_Jx=npziuG zIlvS4fWzu`**b!2StO|0v;F7N}mqm-#AuBwkMvw?mGmOummYIZ_#`Mx%Ry zVlrqxMfn@%fE~qJ(g|S0C7FWH+^KWbO^3EXrg}z%Ac0iTiLL%#@!3ffanm6_BReC` z!`yo}tHIK+9v|K3cwF z3WkYAuUK;)rJ^|`?_FRD@FdMKMFn#07|-*uVy!w z8=frBf*HME`EdmMDT)mr8iL~!b?j#N7ZKgu*N0L@*RI2=U?LyqjIUjXLg3&Ax(w&z zo8iqNXjK?(T$u*?4x3T#TeCfV4^>*QTddZE!_{fhj~yfFj$7z33a#J1ak|l7`!L=6 zYD9Q6)&)4bAj^#|5RSOCV_%P0=tSlCL&rD)8m3ys9Z4wqU&p5OYk1uvF z@9o5U9ji|(tP;9qHg6+;uJXAH9h&8~ac5U!`{qr?Y&4{% zlkc>~RGU1zzI3KPfLlV=bt0&0qGJ@cY#d|S_d)@=+U&q$vIlc%MH_j0^i!DosKi}3 z6FeqrDfl|})wL_M?P!K-L8!Ldw5bIzIN^&Br;o#4bS>d#u-nB`Xmlmyr|7(jDeH;i zxt?%LTnVb^MJhYXRjsjlz=Vd>ZJ&>n?@_eqLlc7@`A0pL(!X1U_TGiU)mEcr53jAp zu3{*KoskF!Img|3rbZKru`)ct5O-_rq8USdQo{-(wbRdq6|%rghV98cWec)HQ~P+0267 z2^?8qSFM-!Az2sRKofsL-gJ{zyYohHe;@f%NkEHw{(jogNYay`wJNBHbO*!3NV>EsZw0|9qI z)xEwDDfA(}$* zo!av~#+B2>n@zOX>dYh8&bd>VdvCbSc zcpix5k-PeqC_|Y#CSy>=bpmbdJHV41>hm3#u6L=MX`e?9i|L@MxvkUqtglx*%CBOE ze67SQvNJd)C`{+thg zar>f6t--xFEE6KcHW(4dxNvnZAf$=xvWpssROdwy$Acb@4HUxYDk>0*3o#8hpxMrI z-;eJrw36P7-E?Vgu8iaxd-KB8%y1EggeX03i8_;D$`o7cS_A3;POT@!CLT6e$&EQX zXH!kKWAL}+|MD)Ms&PBJ=-!ayW}lXmZRofX1KVr^x=@qIgv7exA?omyY~xyi z8!$De6vubfY@^=LhBNnZy7VT-5p%X7M9ns&WQVT(hj*OECRxbt5S*6ldt`b)J1E=A zYgD5=_V?w!>9)OwJ2S6gSfo+PXM2<;|1=+%#61@p;u0EWNVtTCC+1}ExFC7IJm9!S zk_^m6&#;COXhyYZ^z9#bv!7EhD=_*v&*`e|FLu@W_Uw5jv=%|JrXSXt$7{kyZr%Bp z+4EG}+c}zgSn)QA8;K+L&1pE;xdANgJ4mW7hD*V07aOIZ4DmHN@c|^gODwr>)*Yrp zqH{D7-0gP0=B{~(?1M=&T+iIdxoYm)Gq`$ofW6N462{<{Qfz-&+d2?$!OJsMoL-4) z<~F>vE7 z&u9wTV0*u|=6(Fsglc;&q}gTrO9$5SZ&K)O)$D+6(KykYcl{Y79Sn`{OH~u`m^cEL zOeXsbF?NxPOyM2($NIATT(Z2uEEAZedw-NK%Ua1o^6lcnOC+U>zd_~6=q}0PVwN+^ z(z(BurL5I-u}GHX%(9zV#Qr6|ELTgGOlEO2OWXb&UzRTTUn)@)v#ewm_!=CnMq+2+ zaIm7x_g2fjWVNvR1!#kHw!??e5t)`D02sQ-q|{ z9ihX}g-mPHl4+#rOrmn2*KDRD(>2+Gm+FofIH&J&JeEO}6A_z41d~`B5Hy7prb&gE z+9Wz*C3rcH24HOxZ!yuUmO)dak;xv-B=t9-)*Umbwi9(CB&92C)7gvYczJABHX!VJ z*kjk5YhIS-hFxFs+BNquJJEYM3zQ`HF#0f5nZ<-|HuPJdf;5FmC zg=xA@I&~dWb+tg%^jN`UO*0R1E{JT`mwoI?b_}b33{Ak>lDYd|*_Zn=d`XDy!Pvb9l9|YF0SKD$OXkAbfBxN zOQDxY5{;b#T=U@Bi8jf^4CHIfRJDo8G_XjyMrF`(>nQR{c-M8$QP(}kX+Y&^pZb+{ zXOQml{rq12E}uFb^Bzp^;OF+?Sg}vc$BQ^kj=lvmM$bI#-o^TY+PMy=!i|l$zKFuE zu7c5;MHA9s#>HQk6MK=CslU^xIExg&0Ih_?W1@(?LL}LMNZtb(uh9$IW>Q?Us6a&f z3CNcGG?SzRq*wdzL1)=_dSz$R$nmwcW&%jsy|prgFaV)s2Vl64YqYOk;j&krC*m2l zD9NSUV(dC}%{~EvHN#AoJc_Q^Ig&-U!qCihrH+8+nR*uNlLg-cDosF9@L$92k{M5W z=H6;{7~Rdu9*w8lh8gQbN|qqPfUxm`ZK1IGCs9l|ppYg^46z7BC!k|4${BWma40}K zuK5s-4Q8@ypH1jHbe>IeQbF4#Zx$}B?>mz9?J%k7@0_7od`jAA#T5U9 zi|or4?LTC#&a+mSG5TqBnE6q+ZQ>BvJzBK|YK8vc)#`IBxjkA@jIPx?ycTaGji}(5 zXkm)dEbgXUv!PQEg{qnlPirQlYIQ6n9_wjc*`iM~Q>I z5Z6-sb-=DL)*yeP3OtEj;db~(7`zY4orD5UV*9jxJ~HD*cv552c7^{;p0ru)lQc>r zo&_!8gqHMfN*alzwO?aX_!qFHZkolc>jZsk80?%Qgq^{3t>YRQK`Q7G2N1z3%+Ruv zd&Vg~`E_7P-cCE3%=c|yRU=Do4i;gPpt8erfX+3x)H7ncZ#M6{$6kc(8{BeZg2XHr4{8`s!Xq2Wkzmb_zp#aw1G%&+i`VXw5a_(v@O83^OFn2J~;Z!y03$s z&-USBZ%t>g^T(u7L610u(_)I1Gj>X{kI!Si1yRq|;=(lR6Iwuv|U zecbf_iFWVGjM^WsYo(FN-@7uSz1-?>LH-^ir5lR^;#Tv*#h*apUt-Yqc*5a~#Z#cE zJ>Ha>o((K;a&u;^ri_UcbZ46O@1cyjC@U#p=44l9k~-X#ncAFbC02K)b$>PSu)5il zp~r%n=v!EHR&!Da~*Y4sB%3HD(ZL! z!%xzTY8WGWAt7N)G*M;J%0b#(QcA{v4H z()|P8&{cO7WH&$e7a_>yM+7H54ub2&lXy1cOM99*_D?`SZ^}DZ#92_>b@bdn5f2ja zBSbXUwcw4boI{#@e?)v@HRAmwEo4dO5$CR>r>2a?oK4K0`bUXxW#(3}QNh}Psl)=f zIdhS$*vuvF%q6l)BSZ*NG-noZeP)&r3arex;mci_W$w%}S&b3mbfD~X#LrvsT~ zR;z3)SLRyGUtM*z$kV5qxQ+dQB-PcEHgy~DUgy#75GBioV%g|&oNrqy@ zL>V%P2pLKeqhu&mC^BRf7rxT+$P%40lp{Wnp;@9uhV0^X8Oj$&WoUsopoO@*iQmbW z&Cp(KmoHoB`x|w)HzEH0c56GA8^in2YcF@bc@`bvIm@8kXX9$~o*-bA=@?{Ub z#K;%w8DgS*q23{`lrN3+VvsLK>E(+rx%hR|6U4{zg*t?IPrjU@ms9eE+jf(Dq1G?< z$`@+W;@9$}m0q^V7izxZ2l9p5u=u|AlDSA!%g_>0E<;74NQO$pLK!L(b{VP^*)rr1 zsWMb8;$>*9n52cc*^2Ar3$;`+M!ryk6+!ZaTBhjk(M&*%Q2ax_P)ii=$QNpm;x+lw zOD~P|f}!*-e8W@wK@$AN>%98Y4kNybBr<*t|AKvJEDetd*YlWAq?KSW!*7d-75mUz zhS3|MW+MuRX5oF0lUC|6eElX&j78$2ACSvb>W+r0$MCIQk}ZZwp-49o>H4l9Azr~% z5Uif5{QyV7;`=*sX8i8D5eWVnK}bO7;xCEv_e1%cqM_PvR`7o4m!z!ES-!UZ!MSb0 zZ!s~U-#VJ)U1xO46-bj9L6c7HUM0Hd$X%FTB;dy}Xx$r)7dnD%67dM}_|C&2m0l6) zFCZaKHN(YOWZ*d^{>N|V#d84PB=*9o@d!z*zXodw4JvAGm&&5AfoP3V(49flCSmZ9 za(i%m0dkY*@+Kr2DfJ#m*pUx$cFS)nsx@69H9h({?^`hiUFxwITc-$xrnv6d(1@=t zHHIAS3C3K94H9;MNL6A}sts4d@D;?fe3XS!H$$uT6_g>Dc8*?LPxdjs*;BdrM8+rkg5Hp~ko^TJ zo^8PF-{q(Qv(KUIssH{^ga0Y8W6xX^NGDXZRL+Ovi&-Jah;TZeF9?sx2>fjr z5JNyD&Cs5}hVT4>E%0|@m<{((z}Cua-OMHeeoltju+ITDoaKerRktZM*wDv!f?f7D z`bKj2`sy}1Qe8*XW-Eu8vDM4iDj8dS7&*+0_@x?M;(5ua{a%eGk;Bx1!|D@)F=0Vx z@crSLd7&}$2L8zzR=NdQsMZ$QS(${+0n*tVoEL6-6~eGH(Ub7*pBw2q1jR^0e9-}J zb>>+*8a_Zts znygrWVw+{QF(ynM9x?*Iy%BOoOh>gd8ONv}K1Yd*DY2GJT#0aIU9$oA5yJQ?u}6WF zjIMRjo;Tl?;9K2VovI5oi(p$OY|~ztmki=g{aJuP@Y^_SkQT2&s72`Q3qSaRXc&az zHG^P}*=rE|L`-0O+d|R2gUU1w&mkJb0wd@KInCD0r^M1A3c`K{Y5$0v7k*tO+koG* zKqHpzVX(TVmL8MQ-M^^aoCWolm<;@q3$R~Nu_;I@P`8W8=^IiaSs|y{P|SJC#ymS=6xz`xVvWy4>1#5NJ~%w64{Fn`qd9!^=sv zb{njLyE8H>+&7A*qxktW85NAE5&OciQ0VxsPNUxi@JMPTcI@S8ayM&o>Hg6Aqh0^; z{O-U$I+Ao1V7$W+8J^<^#Tc54`v&cQ##d@E#@4k$Xjnbp@Z|3x?z4+6zo0@Qiqyj? zDncO$UGMphiS4*(LE+s6`}XtHaI z_}T%4SA$!dTfq?OGd^>xeU#H(m_)X3^wmF0oA-hH9&r0+LtiYXG-Ej%uMNifW-$qg zI>LSRz0fbyw%_R`qThi)G_yzGL;web2Qm#Ux=+yI$La;?@{kL7;?{1`PI$L z0auN+Ul*}$a=UYwk8=JIbI`lXwpneM#epqux0N_JJA7}voSBH^vTaox zvN*8K?M@;ly|6QwiAXNncKOW(+Ya{=RB-tXgyUk@b~J|jabd&TkLF?t;%N}Geohi) zKf*0+*^eR%WKY3Pw$_2Dm4tnPdg-`UkE3qDor~f=zd&{7(~V9;a{JGGn_;oujbaOY z+aPT{l7!!D68t;TCP?X6Sm51P_vW}hFvlgtd)t7r3kH%M3w}>O%6ys(fgTWnZRc#n zpp|M(Q)^@V^EG?KS&Gqq>9e64TgrM1TZ^#X!l*Hb-!h}t!fKhZs1G&OP|u9i!rXZw zV6=+$%t;hi!v^N$=GCx?IjJpajn*pWGbgvMhRw{G&#AUBC$%Z}>LA%>gT>9v%`L5A zD|2&WYuLuz-u8z3loy|-l5l%#pkFwWO|D@Fv+Av`(SR;?hFQ7QHSA>8RMue^vsMy? zx{ML5JDHV8u7=$d(cs|l9z0=GqGK`5%d0nd5Pv~XvGt@$JxW9}H&L~3U8xO|Io!+KQFuz$k>b;BB#cNd{@#_^5Y1r&wJ-O0N`Nn^kyxX6 znR$uk;;&w*4UrrUW!`WfUW51v^AgR)-@Z~CA~+nuyhenj3i$pTvl7Y0-@j5DLOC4C ztcsU4SY$FQkzD)@EVaSF;b>;<`44GJCbNnO%t;g%f6q;A=;iQa=A`+ERuNY5ucycY zL~-$#=G2C64x5PciE7B-e~mWQi&(SDJ!kdwgrxPjJ7{*VE~vZS$uAzVf-B z`go%KNajD>K8k3MZ~6_t4CI@VSZ&G>gBsaL`}yLAwFvw9rZ8q4if{TmWu}dLm+?(6 zGUrfzlbgARyUg?BC`(3H-$25B{!AbY%2$c_pq%>h@$(Zzo9;c=$rO3>k^jK zNHQ+rn>I4<0_Hu=yo)$|63;;2w3vDA9Dj;=^ErH$d2{IL@lEl}OSH@Trs2$MW!_di zFXfxw*-G(A%qy5TmBR!1rstVAmgBpa*Tms&Jp22mTIQa_96iiEsBbD@)+lCG(9kdC zn{H;_@yu&v-obs-e|}7|!kIUmc_TPHfNwg@tVWI=&#Z&`re86u!mLruI+$;&Va}oW zraa~xl5g7mB)p2gU|RMBO32eQ%*oRc<8df=@e3w?^hNMFEB~|dKW-bA3h_u#AX?Z} z=~MBG9wDNGg8Ec^42x*AWA6|*ZVswg9$`Xf1XZp#L*?J}p~L1LS`RMh&LdRWgKhEx zV@!s?1Rmd9p_O8x$2qaC+!%tZu|J|S zg1OkvnTIjFSGZ78zKlE%U-8C;WL$S`UxNg-X|rfi7*>A*?*B!)*`sZT(|Q=YdN;ty z!XWs4IHbq-dVYisX=~#Ps@f%|Cea5c#4NWlOEp+<6di@!b&mIRj!@>9$3o8Y{ZyUh zfX>psh4M*YmR7!>dLTkm<;Ob9F=h#8ma}|6RcCSNEYC8_KOZM;Tljve&T^;DQp+r_ zfQ7ySg#DY@p>^#BSgY=1%nN$O0>tBXg+|A(YU^|>=<|J;M-y`lGvk613DKCDel_TM zObliTOuR@IvYpkKH9E%jUhxsraaGGJgz2v{-A_ZV(!EUg(~#*;gYK*02ommMWB`hy)6YZ_|IY!(|c zOAR$rr~gwz{K&)EH%{VY%7K7QbSD$)5Q;|_>rb`VqAxz%^di!>G9+kJs@x6?g;o=|g!?-D>xi#`7 z+O^XK39#pC{Cy3;4uAvD2{;Hy9cxug zfXRSpz#>3CU=|jrcJ+5n-T z833JtgMi7`AU{APAOcW79@%3 zF7cqRF5u_v!W~tpcUb8<$M6`JZN13wCI-=r8j_92AXlNzb<<~iwL0gf)*7( z%Q~hglLKg*KuZdswSbltK#Ocf*#c;Gd|jeGfVKs+%>lGl(6$B8CcT0`ZyrD^0c}qJ zZ8vC*0kj^_P6p6E!nt-^04)?9tuugD23l_bZ8vDfKl$6V8?=Z3TIy@CX#lMrw8;Uq zlb|I9(8j+Gn+DL9fMyS%?F4O60Ie6ak^oxP8)&-$v`wJZ2GGuewkd!Xc}h{X2GEK? z+Yvz93EJ)eS{G;s187NaD$4NyS}ka218B!VYYm`G0J{K3CG8{N;qZm@xea)>46gxx zQicx!zc0hX;rng^&}TMqxePxEyibNdAPj#K18g+8|d+sW4eHb~n0gj+aTnG9@~;dQ`I0}je}0c?C*C;}e@*T0Ur8L3vg2 zic$!v%B?7JmK9Ul%D6-+H-A>?QjJbJ>AB7Q#wo0`@*Gw9752=M!Yaz4+LOby^3|n? zD=lB)n*;ODD&~?5i8s5dVwFdF)d12fm-UlBt*WZisB%rIU;JEWxvi?Ig5#W& zR4=>LUbyVO!WG2@&&8 z9guUtA`ZxzRlK~=S?18JEE~)~dFK@_FU~A1E3;KEE9SqItQ9T5(3O69SZA!}(hkh( zY0CHm(9$delsUVqn5{^H_12}^BYJ6(gH`s+Rga~VGf>He<;w<@FuVAEUlyNM?bYeN z;;QoEvV{2Cipt0_DfwmibJ&h~g=NlS?QOc>8)d7}rrjTt_rQ-p5D@Oxf4T6kDuPj4jlW$N*YyBuf zRq3+Tls>z(tW1}cRaJOD{dMbU%8H^=PlhNG5i={wDyk?2-ZSp=z7?)1&dMbETy!<+ zar8nG=asH5g+IU>@||6bKl8oXBLr=w%vn^NSyoypGta``5qA`84W6WFy(F)qth6Yj z%DKA4OUo#AtSYRecZ4#^UVzXW<3M^!N#C^c|OhOszKYYF+( z{Ls0*n#fRqwWJ*4E-YW6O&J2D44lGVQTBjtxXS9dc$uxeqO{ym9cW3J3#C~h2dsgT z_|%Y0kz28*IKM)($iRBcLgihWBfF|_6?=*SEHto8-FFO}pud*3GW7S=S{o`Y4Qy-F z%c;@lIUdmL8z1Yf74`uf166z^Go4a#Pa;JIY7qTXP-7*BMkxZ@nMbC#&sN4+e00$r zkdGer;&Rererb_|hv~qYmGPdk#U**=A#Q+@$rK(fFIO(&zf`HRE6N?0HI%nRoNs=` z-02yE8P&_Hd#nIY%p?3Ie6b!skP}s`dMtH0QUMKyTZ~TU9;8JCctIZ{SE$idpTTa?q7I{&I3K<~kjvWrL0;p7{QP{PY3eGMbwXq7co2wD`-&nO9g< zT3GHFR3A_L<>g$mT#%#1Uq;ScM;Yrqm_mxx%h6wy;x}^hy+w&~ zfr(kd(rQOZ@v2L-T`xy}VdSB_@#vHJ84ED-tk6cbywV5R16EbXo4s85;K{G3C|g=s zMJp-xw*j%FkkvDQ4!T10rt&UxNjN2^?lMS1AC2{;?&VSqI4AZi``qGHG%#f>K-0uB zxO_$N>w`=-XifOHJDQ{o*6b9k7CS&o@$26?#bt0Pj^%^P@p4>F78Sa@YH&$<{N?22 z7CK4>^EVvVUw~hkawGghs*gc!xD$M+XQ ztwfK_&vas~vuegFY>LbxtBxp>(%DqgYtSDKxJH#J``dZv8uA7 zyto`~d|Ab+We%S;sYl0qX~%`%reQzSceTSEq+;;#$rC@2QOKt{swj27Co8MJ{M_Pl z=in_-iyc6;pN{Ol1`}eHvHgYkwZ#I>sSnZ=6{{ZKUyT0>Gw*@&WfengFUr5JY}JlS>g0*%JIZsM$Y`w z@)EekHKoP(7gr5hbN*cYMf#T!d0)z0R!@9?L4IY-!tQg$iova}$M+ZGua6x&!L)5N zNb#(m`2K?Y+Bde8FF7Cc#P^ruS1#I>Sz1*zh&nVg*W&w&@$V7fCxq^5p1a$^Skx&k9M} zs}$?CDt)WKSsG9i{q{~A3HrR=Yj4^ivsII7PTFf2u!?B?pr!Eamgz~V{I(SP<;dqc z-qdo}-ILgVL$Y6Le{FfYOIy^Cy8XAj`laWc6Ho3LWyR%ujMtCP5$Dgz>mxc;z=@@U z54idzp?R@KvfSp+#lCgX;5%1=xy+(=s2zOv6YsAN1hZJ)WA4WrC^v6aW+9(Q(cYJz zo_UUnWjMoFg<~~3qtNE=@F4N`dA9*js`zCUs|H`ZP`P!E0sIl$MUT%d<>AMEg2pn||=7FKF&e30CM}Pl0gk2D) z&eLDu0Q!{q|Nru*?E~!|Z8qc*OlpON|AzY=ptscH{tjR(!8+W>z**aF z+*H^GSVT7#06ojWcQ5$w!X35+xIZ!%bb!N-yFPPphvW|26Pt;9PBU=tEe9|i_p+uU zE*1BGl5kHb5&ZDMlX3Lbay#xN-iCWGx8m*>;CKwefO^0ZK-+h4PYbZ)2Hc?iV_VN z4+swk{~NZ6_z?Hl01E(X0nY%A0XhLeZHjU;U7InW7{rX2qstDAN?HGF7=sqT&-NCgezAn!;~;(j1r<;p^Q?36`U3;S@=tw=?W$@vx}=M zR-1G;&KrC22^gTtnT}}!c2VXn)a94chw%6x5GN7vz&$LTsQUPr-RB1m|5iJk~Dl&~`Fk%poTuvxjx8 z1F_KXvnG&F%F!?E3>NRb92Ceg&_yk;E?SLDD|2W|44>RRF>(~|7nM<1MU%GG14OJY z*0y#7^T{Y&T}(4-RGY^dT0Sz9IZg*1*Y=Cfs=zUR(e$d)%6?J(J$9gMs%N=^>X$mN zxNKlm5kbwgl(zK(1){n=yYzBne|5z`T-+RH<6sw6yV|#6v_jK1x7J~p(b```0E1`y zalm7Qeronh?YWk7IabX{3R9ZIM}-Hp1$ zr8<2;%Lp_Q^5Csb?II58HQ>T&u$(WkEF4PlXg0nAHy5=lJVUk$m3s(g8IlHMLfZPy zfQMO8RpHbY6NB4&s6sv0jHp!qow(e>suiW>yi6#?y&3;DAR~vO7J2U>nC-u7P4^3o;vMn*)_fJ0*ILVoH@F7vtbQ5&7fp}zl0(UVo7q4v)>%4$n-B1^nhqt! z%kD!(-S^*WaoJ|1XSb$msJlr2t$nkwcpqA^9PvYJ9wgFUh})dAGpFHx?$D&89Etv( z#Uq9f@h>;VvE{O=Dk`%o?k~s9?4fQf{@vGt=h*#r( z9KR!eZ~US7WAU%YpNoG#{-gL$;xEKsj31sbCShE{#Dtp?ZcDHvq$gx2Je2Tg!j^>R z5}r@ko6wZ-M#A}oPZBO9Tuc~l8er9WB z9y2{@dfN1y>3P#$(;?F_)9a>lruR)BnLaUHFkLhaH;*xoGfy<%WWLR8F{hie&9lw( z%!|#-&E@7b=5^*r%#WF$G(T;A&iuT2ulbPqnE7?{IrIDGkIbK#FPJZyhg-&2##ts> zZnE5Fu~^bA*_PRshb)g;wpgCCJa5@+X|lXwIdA#Ia=~)ZGCXli;<&_#i8m$QmS{;# zPrM^>eqvGLn#8)qA0%!|d_M8T#OB1ai613?p4gWdnlv#fCMhu~D`{TR;-uwC0;98Dc4Mio?@AjIc3h2MN`VBteLWI z$|F-AoATt8r>8tO<@qTuPHCQUcFIRnKACc1%Ec+elgA{FOP-i~Q}S)emgMy0?Bvj++`a^}AE!rlw4tId#s|yQbbdwPfT0+}5~laYy1##0`%h6+b5as`zp7*Tzpo zJH81m`8Kp=OMG&CdVEIw+=O)rn-i?2xu%CrzcsyNvRdX_3N7`PKFh+y>cmGAf0+22 z#D=8O#TQPUYyi@DX@VK!KjEOXKJx-31G$iyEd zzL2;g>GPyJrz}WbntUd?J$X_}M#@i9o=y2r%74<#>3>KkVY49b_4tVi51M{pdcpJ; zQ;+F7^npV2x+#B{lAp3Dr6grd%Eu|6rCdx2P5oi&u(YewCa2lcPNaR7mYhB_eM9=L zbobP@sqIshC0q<;Ol(B##Mnvj9n)g%vENFJNvuTsen0W!#4i%}r@oSUHZ?TuTj|EB z_<k_19j1Ft^`;k1Gp3wLpDy4!E7{#n#0Wz=JDo8bCfySJjp!S9BVe2lgz1Rt2xV@W1eNUoAb>J z%!|xR%thuBbD6o)>@ZiG*P3h1_2v!cP3Fz!E#|G}ZRYLf9p;_pUFO~9J?4GpgXTu_ zQS)*0N%JZ5S#yi|JgnSi7UoWKm$}>AW9~I87K6oT3AKbQG8bGJh=aB}SOCp{=zWLF+krLt)NFP54o!U6#g|kjYZiUO=pqb&r!Ui+@8o;RFF<2}OXeKgJ*ZAu=_9Oo)C z(82QYoTJRfNu?bppP9-Xcuoh$4A8O>GbVsO$0to5PC|3RPrNgbmgJD1hyqvvK?({% zA3Ee5@KdWJAqSLiL_N}U})^sr&Wi!c7(`_2q;iXkgY($p9K@O#COy=ILh;5|;6zGB7lHCE=> zp#C8)_@*^$R;(!E_tA(CzW@FeOV>C&@Auz-f7J~umU9B*h8N@beT@|G;)@C65v|87 z`uj~9zk&?L{~wKA&r8EF6naS}jJ7gDke@1m+wnD5fI(LDRjM#j z+@QWv>dqKIqeB6lDB|X=7>;tW_#*Q?6>+GV!ugOuQ6pndQ3zS7k&4)mQZFH{2U3{w ziKVzkobS&o#Dvp?`VRg)E=BBW%}Cs#PBus<>-3m-RQqHQ6&SM>d_x9m40I<(K@Wyw z-PdnAp1C@HaP<4ZCbDt>+(m5w#K0@?f&MpbB2wTSJ^hs0xF>fhfV>YhF&f)+3luR@ zE~!N~*ml72{EFKd`<~qWGFWMCHQ45P8BNN1ZU?g-`+*bRys-w%f|?l+(Ew9ao>kIs z#a)ja2gA>7><-r83o|%chlnTyo9g5@nkN_ORO%Qn0L?FatM*M`P{IDJ*KGxh1C6U| kt8v&ks({$slwkdhpvv<0U$Zs#$;D#Ucn9`usM9~v5Ahf$WdHyG literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXNexos5_d7.tbxt b/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXNexos5_d7.tbxt new file mode 100644 index 0000000000000000000000000000000000000000..9587af90957f805a277a187a062d6e963505aba8 GIT binary patch literal 51200 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 SC&$L>xObqQ4K`iC=l=jIA0y2G literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXNexosX_d7.tbxt b/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXNexosX_d7.tbxt new file mode 100644 index 0000000000000000000000000000000000000000..32f61b57ef14033b8ee710d70a0c918af68907c9 GIT binary patch literal 51712 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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXOffice11Adaptive_d7.tbxt b/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXOffice11Adaptive_d7.tbxt new file mode 100644 index 0000000000000000000000000000000000000000..1aad83cf3300870c4c0e7461c1b9c70e7cfc2916 GIT binary patch literal 45568 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 =a^ytd2Em=vw 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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXOffice11XP_d7.tbxt b/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXOffice11XP_d7.tbxt new file mode 100644 index 0000000000000000000000000000000000000000..ca0b849a004be521551c88166cba3bddf4f81a60 GIT binary patch literal 44544 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 Ut>CDyj)~ETUW0l(=;ibLFByU?n*aa+ literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXOfficeC_d7.tbxt b/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXOfficeC_d7.tbxt new file mode 100644 index 0000000000000000000000000000000000000000..c467e1e1152a958bf4a8f59ac813ae012dca1bbc GIT binary patch literal 46080 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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXOfficeK_d7.tbxt b/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXOfficeK_d7.tbxt new file mode 100644 index 0000000000000000000000000000000000000000..be19ae9d1a2094a6363f354b09e189c39cca00e4 GIT binary patch literal 44544 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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXSentimoX_d7.tbxt b/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXSentimoX_d7.tbxt new file mode 100644 index 0000000000000000000000000000000000000000..b9666fe9fda1488fb1d2278f6c43537f59738190 GIT binary patch literal 50688 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 U%8mNx@NgaX6x7Q>rxBk256ySsD*ylh literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXStripes_d7.tbxt b/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXStripes_d7.tbxt new file mode 100644 index 0000000000000000000000000000000000000000..8edbdf5f652aecda095f32503b85e1bef3625c0b GIT binary patch literal 39936 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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXXito_d7.tbxt b/official/2.1.6+2.1.beta1/TBX/DTM/Themes/TBXXito_d7.tbxt new file mode 100644 index 0000000000000000000000000000000000000000..bf86278374e388fcc6fadfd3009e1ea4ea393502 GIT binary patch literal 48640 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%0D*NVI=0tQ3j;6n2LU`*nn+{>2FWuT?hD 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�b2Aj&}T*FE^d$|(yC312DkgdDoF1+QTM2Oc` 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 z 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 aLU$-zlYDYE{$I37_$bo+M{fE5WcXjydM%Lv literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMCtrl_d6.dpk b/official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMCtrl_d6.dpk new file mode 100644 index 0000000..461abfe --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMCtrl_d6.dpk @@ -0,0 +1,38 @@ +package TBXDTMCtrl_d6; + +{$R *.res} +{$R 'TBX_DTM.dcr'} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + tbx_d6, + tb2k_d6; + +contains + TBXDTMForm in 'TBXDTMForm.pas' {frmTBXDTM}, + TBX_DTM in 'TBX_DTM.pas'; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMCtrl_d6.res b/official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMCtrl_d6.res new file mode 100644 index 0000000000000000000000000000000000000000..4e695e9e5c27199f3894bd1feafdb24a73988085 GIT binary patch literal 2312 zcmd5-QEOvG6#i}!aFSb2 zXT@T{Pj!4gPj8G`v+^kqb$QD7%Rmg_E+8BtU0x^e!Yxp66bX-9XgJK81LgHZ&^06F zi6Az{I9}IW;eZ5Db626L(wxK7xpUIgZe5jOAD$8MJ{9S zi3^}YR0vn)O0;6`%4u2!no^775-r3!y_!6^Q!d8p`p?6TLp#CAg0)1AcnzWb5rO@c zznWv<`xBs+V1ZmPH~t@p&x0``kv;{s&VbW%1ZTFFKDWnnR_ql3Wy0F4_!#fuCO#qF z$1RTDX8S_AA;98dM!Q0~D8P%-OZiGstl;a;n<}j`;ko`m7A73Rszomc`u)B!kEdJ( z6=c@dlC^;uK1OD}+f5e8EBLU{h`Kja(H{&espW3B(YT{LPk$ohJQc2^HV}eI<`}!>Z;VIoqnh%no%?U_VT7&N)#N@V~NP!9IBS$oA}Sc6^q$4kJZ%W~r-;_>jg>`OX1GoA70H1MoQ#sP@`TYTHy#H5I(c>>fV9 z)Y(z(4s&l`s$g03e?)&ny;5z9b;@ZQ_==IvT%A+h=TvOr4&&}~Y@^9aygBWyWDmJD z$?NMDHoXCNN1sx=%iX@_**lji1n*MLeNl7y^q0^6s-DZ;y=0R+@D;9Up_^K_uWI@> WfhGMVxD)O$YMaX0cX1{2XXamT;NzzN literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMCtrl_d7.cfg b/official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMCtrl_d7.cfg new file mode 100644 index 0000000..4d4b4ea --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMCtrl_d7.cfg @@ -0,0 +1,42 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-LE"c:\archivos de programa\borland\delphi7\Projects\Bpl" +-LN"c:\archivos de programa\borland\delphi7\Projects\Bpl" +-U"..\..\Lib\D7" +-O"..\..\Lib\D7" +-I"..\..\Lib\D7" +-R"..\..\Lib\D7" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMCtrl_d7.dof b/official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMCtrl_d7.dof new file mode 100644 index 0000000..12c6f6d --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMCtrl_d7.dof @@ -0,0 +1,150 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath=..\..\Lib\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;Hydra_Core_D7;Hydra_RO_D7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7;dxComnD7;dxsbD7;dxBarD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;cxEditorsVCLD7;cxLibraryVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxPSCoreD7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\DJclVcl70.bpl=JEDI Code Library VCL package for Delphi 7 +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\DJcl70.bpl=JEDI Code Library RTL package for Delphi 7 +C:\WINDOWS\system32\fqb70.bpl=FastQueryBuilder 1.01 +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxPSCoreD7.bpl=ExpressPrinting System (core 3.1) by Developer Express Inc. +C:\Archivos de programa\Borland\Delphi7\Projects\Bpl\dxComnD7.bpl=ExpressCommonLibrary by Developer Express Inc. +c:\archivos de programa\borland\delphi7\Projects\Bpl\EasyResizeD7.bpl=EasyResize for Delphi 7 +c:\archivos de programa\borland\delphi7\Projects\Bpl\RodaxFrameD7.bpl=Frames Acana (D7) +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=1 +Item0=..\..\Lib\D7 diff --git a/official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMCtrl_d7.dpk b/official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMCtrl_d7.dpk new file mode 100644 index 0000000..58791fe --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMCtrl_d7.dpk @@ -0,0 +1,38 @@ +package TBXDTMCtrl_d7; + +{$R *.res} +{$R 'TBX_DTM.dcr'} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD ON} + +requires + rtl, + vcl, + tbx_d7, + tb2k_d7; + +contains + TBXDTMForm in 'TBXDTMForm.pas' {frmTBXDTM}, + TBX_DTM in 'TBX_DTM.pas'; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMCtrl_d7.res b/official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMCtrl_d7.res new file mode 100644 index 0000000000000000000000000000000000000000..52f9f9554dd0fe9930651faf8ac074989d67992c GIT binary patch literal 1536 zcmZuw&ubGw7=1|=Oo`MKgcdIiOKHV}cG+G;uoYvapjNE(TB>c=(l!k-X7QpaJ-CoV z{}XA+MHqy5^6p8bGOVf^O%BeH2mwd0<>lz<|OFDitJ3 z4z!?@su~>+odR;8EysJuaOMTfb%d%NQmD9}voPdF;j*E{xl)O0OCY5_wRj)2R?3ep zq0$55+S!5aS`;2CF2Cc~P^x5&BJXYV&#k+&!iv*Wxaknh2H z(j|N|3oEFjhHX?3VUgo5HW|5sE$mbH(P(Bd$4+k(bF4us@)<3|UiYzwD%Pog%dXeS zHeGn!Fd7%LOwVh)G`XtGxy`+mo^}>_s-1R~+8Wh;O@N!s?%?uEopqzFF!%0I1=A+~ zBl;ubm1?W3Q@V}tiaV{@I{UikRIFoz`}R22u)|86S?zKfLrzWdy1Iq+Pr#nhQ)>4a z?G1ac4^;@BrSyGXGu-`f@7GLU_Ut8_oPn#bYzkd9b-Swiw+T#{FTr+L;jUdO2k&CU H`|14$;UOr8 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMForm.dfm b/official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMForm.dfm new file mode 100644 index 0000000..b9ce3f3 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMForm.dfm @@ -0,0 +1,116 @@ +object frmTBXDTM: TfrmTBXDTM + Left = 328 + Top = 290 + BorderStyle = bsDialog + Caption = 'TBX Theme Manager' + ClientHeight = 263 + ClientWidth = 351 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnActivate = FormActivate + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 9 + Top = 6 + Width = 75 + Height = 13 + Caption = 'Loaded Themes' + end + object Label2: TLabel + Left = 8 + Top = 239 + Width = 76 + Height = 13 + Caption = 'Current Theme:' + end + object Label3: TLabel + Left = 89 + Top = 239 + Width = 3 + Height = 13 + end + object ListBox1: TListBox + Left = 7 + Top = 21 + Width = 254 + Height = 209 + ItemHeight = 13 + TabOrder = 0 + OnDblClick = ListBox1DblClick + end + object Button1: TButton + Left = 265 + Top = 21 + Width = 82 + Height = 25 + Action = actadd + TabOrder = 1 + end + object Button2: TButton + Left = 265 + Top = 48 + Width = 82 + Height = 25 + Action = actremove + TabOrder = 2 + end + object Button4: TButton + Left = 266 + Top = 233 + Width = 82 + Height = 25 + Caption = 'Close' + ModalResult = 1 + TabOrder = 3 + end + object Button3: TButton + Left = 265 + Top = 91 + Width = 82 + Height = 25 + Action = actActivate + TabOrder = 4 + end + object Button5: TButton + Left = 266 + Top = 118 + Width = 82 + Height = 25 + Caption = 'Default' + TabOrder = 5 + OnClick = Button5Click + end + object ActionList1: TActionList + Left = 170 + Top = 128 + object actadd: TAction + Caption = 'Load' + OnExecute = actaddExecute + end + object actremove: TAction + Caption = 'Unload' + OnExecute = actremoveExecute + OnUpdate = actremoveUpdate + end + object actActivate: TAction + Caption = 'Activate' + OnExecute = actActivateExecute + OnUpdate = actActivateUpdate + end + end + object OpenDialog1: TOpenDialog + DefaultExt = 'tbxt' + Filter = 'TBX Theme Package|*.tbxt|All Files|*.*' + Options = [ofReadOnly, ofHideReadOnly, ofAllowMultiSelect, ofEnableSizing] + Title = 'Load TBX Theme Package' + Left = 94 + Top = 95 + end +end diff --git a/official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMForm.pas b/official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMForm.pas new file mode 100644 index 0000000..c9c7d42 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBXDTMForm.pas @@ -0,0 +1,156 @@ +unit TBXDTMForm; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, ActnList, StdCtrls, TBX, TBXThemes; + +type + TThemeRefreshEvent = Procedure(Sender:TObject; ThemeList:TStrings) of object; + TThemeLoadEvent = Procedure(Sender:TObject; ThemeFiles:TStrings) of object; + TThemeUnloadEvent = Procedure(Sender:TObject; ThemeIndex: Integer) of object; + TThemeActivateEvent = procedure (Sender:TObject; ThemeIndex:integer) of object; + + TfrmTBXDTM = class(TForm) + ListBox1: TListBox; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + Button1: TButton; + Button2: TButton; + Button4: TButton; + ActionList1: TActionList; + actadd: TAction; + actremove: TAction; + actActivate: TAction; + Button3: TButton; + OpenDialog1: TOpenDialog; + Button5: TButton; + procedure actremoveUpdate(Sender: TObject); + procedure actaddExecute(Sender: TObject); + procedure actActivateUpdate(Sender: TObject); + procedure actremoveExecute(Sender: TObject); + procedure Button5Click(Sender: TObject); + procedure actActivateExecute(Sender: TObject); + procedure FormActivate(Sender: TObject); + procedure ListBox1DblClick(Sender: TObject); + private + fOnLoad: TThemeLoadEvent; + fOnRefresh: TThemeRefreshEvent; + fOnUnload: TThemeUnloadEvent; + fOnActivate: TThemeActivateEvent; + { Private declarations } + procedure RefreshThemeList; + procedure LoadNewTheme; + procedure UnloadTheme; + procedure RefreshCurrentTheme; + procedure ActivateTheme; + public + { Public declarations } + property OnRefreshThemes:TThemeRefreshEvent read fOnRefresh write fOnRefresh; + property OnLoadNewTheme:TThemeLoadEvent read fOnLoad write fOnLoad; + property OnUnloadTheme:TThemeUnloadEvent read fOnUnload write fOnUnload; + property OnActivateTheme:TThemeActivateEvent read fOnActivate write fOnActivate; + end; + +var + frmTBXDTM: TfrmTBXDTM; + +implementation + +{$R *.dfm} + +procedure TfrmTBXDTM.actremoveUpdate(Sender: TObject); +begin + actremove.enabled := (listbox1.ItemIndex > -1) and (listbox1.Items[ListBox1.ItemIndex] <> CurrentTheme.Name); +end; + +procedure TfrmTBXDTM.actaddExecute(Sender: TObject); +begin + LoadNewTheme; + RefreshThemeList; + RefreshCurrentTheme; +end; + +procedure TfrmTBXDTM.RefreshThemeList; +begin + ListBox1.Items.BeginUpdate; + try + if assigned(fOnRefresh) then + fOnRefresh(self, ListBox1.Items); + finally + listbox1.items.EndUpdate; + end; +end; + +procedure TfrmTBXDTM.actActivateUpdate(Sender: TObject); +begin + actactivate.enabled := (ListBox1.ItemIndex > -1) and (listbox1.Items[ListBox1.ItemIndex] <> CurrentTheme.Name); +end; + +procedure TfrmTBXDTM.LoadNewTheme; +begin + if OpenDialog1.Execute then + begin + if assigned(fOnLoad) then + begin + fOnLoad(self, opendialog1.Files); + RefreshThemeList; + end; + end; +end; + +procedure TfrmTBXDTM.UnloadTheme; +begin + if assigned(fOnLoad) then + begin + fOnUnload(self, listbox1.itemindex); + RefreshThemeList; + end; +end; + + +procedure TfrmTBXDTM.actremoveExecute(Sender: TObject); +begin + UnloadTheme; +end; + +procedure TfrmTBXDTM.Button5Click(Sender: TObject); +begin + listbox1.ItemIndex := -1; + ActivateTheme; +end; + +procedure TfrmTBXDTM.actActivateExecute(Sender: TObject); +begin + ActivateTheme; +end; + +procedure TfrmTBXDTM.RefreshCurrentTheme; +begin + label3.Caption := CurrentTheme.Name; +end; + +procedure TfrmTBXDTM.FormActivate(Sender: TObject); +begin + RefreshThemeList; + RefreshCurrentTheme; +end; + +procedure TfrmTBXDTM.ListBox1DblClick(Sender: TObject); +begin + if listbox1.ItemIndex <> -1 then + ActivateTheme; +end; + +procedure TfrmTBXDTM.ActivateTheme; +begin + if assigned(fOnActivate) then + begin + fOnActivate(self, ListBox1.ItemIndex); + RefreshCurrentTheme; + end; +end; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBX_DTM.dcr b/official/2.1.6+2.1.beta1/TBX/DTMCtrl/TBX_DTM.dcr new file mode 100644 index 0000000000000000000000000000000000000000..583d7770dff8ea799194db5625bc3ed883d3e6a6 GIT binary patch literal 1748 zcmZwHy>1gh5Ww*?0&iEQEyl z@2wpY$9MjD_GUkB_il9}B8u&Hpm^{2_C(}8neFzGeByj5pXIfDk&p61KFCsDk$Wd^ zD0eTW{9DSWyHQR~o<80W_?*JCotZ4Av_0C_9>x&iClMp?Pf@B$>Q~9t&+km!;GjYi zg(hMG1qE{i5``w>0)>GK4-3E3l?SgCmeAGzr!pqUbAk^fOUt5-Ly_9Dzikjn`&MG&ll@ zLL0Btm1uAT5`{KiH#dneI0A`68(SfjXmA7)g*LWHDbe5vBnoZXLeZ3Ha0C*CCdK+o z6b45i(a$!vmMYQU2qX$^Y&%n;!4XIl+Srn=M1v!cD73L%Lx~1QAW>*zE2k0-jzFT& z#x^e{8XSR?t3O*=(=Hf~FUs`mA0A5JoW4O@nIAc3vm;4TzmMi;v){AB9-H2}ANPB# zPJ6|EoU^lj!LeGMP8Fl|#r5^YE=_*)=+~Ej|6caE>dlwS+ltGptDYZek^eo;&+n$! z7yBOT^_|x1`C`7WxS!tM+*aI 'Default' then + TBXSetTheme('Default'); + while gLoadedThemes.Count > 0 do + begin + wTheme := gLoadedThemes[0]; + P2 := GetProcAddress(wTheme.PackageHandle, 'TBXRegisterTheme'); + P2(False); + gLoadedThemes.Delete(0); + UnloadPackage(wTheme.PackageHandle); + wTheme.free; + end; +end; + +{ TTBXDynamicThemeManager } + +procedure TTBXDynamicThemeManager.ActivateTheme(Sender:TObject; ThemeIndex:integer); +var + wFileName : string; + wThemeName : string; + wTheme : TThemeObj; + wIni : TIniFile; +begin + if fPersistLast then + begin + if ThemeIndex > -1 then + begin + wTheme := gLoadedThemes[ThemeIndex]; + wFileName := wTheme.FileName; + wThemeName := wTheme.ThemeName; + end + else + begin + wThemeName := ''; + wFileName := ''; + end; + + wIni := TIniFile.Create(ThemePath+'Theme.ini'); + try + wIni.WriteString('ActiveTheme','FileName',wFileName); + wIni.WriteString('ActiveTheme','ThemeName',wThemeName); + finally + wIni.free; + end; + end; + + if ThemeIndex > -1 then + TBXSetTheme(wThemeName) + else + TBXSetTheme('Default'); +end; + +procedure TTBXDynamicThemeManager.AutoLoad; +var + wFileList : TStringList; + dirinfo : TSearchRec; + ds : integer; +begin + if fAutoLoad then + begin + wFileList := TStringList.create; + try + ds := findfirst(ThemePath+'*.'+defaultext, $3f, dirinfo); + while ds = 0 do + begin + if dirinfo.Attr and fadirectory = 0 then + wFileList.add(ThemePath+dirinfo.Name); + ds := findnext(dirinfo); + end; + FindClose(dirinfo); + + LoadThemes(self, wFileList); + finally + wFileList.free; + end; + end; +end; + +constructor TTBXDynamicThemeManager.Create(AOwner: TComponent); +begin + inherited; + fFilter := 'TBX Theme Package|*.tbxt|All Files|*.*'; + FFilterIndex := 1; + fTitle := 'TBX Theme Manager'; + fFolderLocation := flRelative; + fThemeFolder := 'Themes'; + fDefaultExt := 'tbxt'; + fPersistLast := true; + fAutoLoad := false; +end; + +procedure TTBXDynamicThemeManager.Execute; +var + wFrm : TfrmTBXDTM; +begin + wFrm := TfrmTBXDTM.create(self); + try + wFrm.OnRefreshThemes := RefreshThemes; + wFrm.OnLoadNewTheme := LoadThemes; + wFrm.OnUnloadTheme := UnloadTheme; + wFrm.OnActivateTheme := ActivateTheme; + wFrm.Caption := fTitle; + wFrm.OpenDialog1.InitialDir := ThemePath; + wFrm.OpenDialog1.Title := fTitle; + wFrm.OpenDialog1.Filter := FFilter; + wFrm.OpenDialog1.FilterIndex := FFilterIndex; + wFrm.ShowModal; + finally + wFrm.free; + end; +end; + +procedure TTBXDynamicThemeManager.Loaded; +begin + inherited; + if not (csdesigning in componentstate) then + begin + AutoLoad; + LoadLastTheme; + end; +end; + +procedure TTBXDynamicThemeManager.LoadLastTheme; +var + wIni : TIniFile; + wFile : TStringList; + wFileName : string; + wThemeName : string; + wFound : boolean; + loop : integer; + wTheme : TThemeObj; +begin + if fPersistLast and fileexists(ThemePath+'Theme.ini') then + begin + wIni := TIniFile.Create(ThemePath+'Theme.ini'); + try + wFileName := trim(wIni.ReadString('ActiveTheme','FileName','')); + wThemeName := trim(wIni.ReadString('ActiveTheme','ThemeName','')); + finally + wIni.free; + end; + + loop := 0; + wFound := false; + + while not wFound and (loop < gLoadedThemes.count) do + begin + wTheme := gLoadedThemes[loop]; + wFound := AnsiCompareText(wTheme.ThemeName, wThemeName) = 0; + if not wFound then + inc(loop); + end; + + if not wFound and fileexists(wfilename) then + begin + wFile := TStringList.create; + try + wFile.add(wFileName); + LoadThemes(self, wFile); + finally + wFile.free; + end; + end; + + if Trim(wThemeName) <> '' then + TBXSetTheme(wThemeName); + end; +end; + +procedure TTBXDynamicThemeManager.LoadThemes(Sender: TObject; ThemeFiles: TStrings); +var + wTheme : TThemeObj; + loop : integer; + wFound : boolean; + wFoundName : string; + P1 : TThemeName; + P2 : TRegisterTheme; +begin + while ThemeFiles.Count > 0 do + begin + wFound := false; + loop := 0; + while not wFound and (loop < gLoadedThemes.Count) do + begin + wTheme := gLoadedThemes[loop]; + wFound := AnsiCompareText(extractfilename(wTheme.FileName), extractfilename(ThemeFiles[0])) = 0; + if not wFound then + inc(loop) + else + wFoundName := wTheme.ThemeName; + end; + + if wFound then + begin + messagedlg(wFoundName+' is already loaded', mtError, [mbok], 0); + end + else + begin + wTheme := TThemeObj.create; + try + wTheme.FileName := ThemeFiles[0]; + wTheme.PackageHandle := LoadPackage(ThemeFiles[0]); + + if wTheme.PackageHandle > 0 then + begin + P2 := GetProcAddress(wTheme.PackageHandle, 'TBXRegisterTheme'); + P1 := GetProcAddress(wTheme.PackageHandle, 'TBXThemeName'); + if Assigned(P1) and Assigned(P2) then + begin + Try + P2(true); + except + messagedlg('An unknown error has occured while trying to register the theme file:'#13#10#13#10+ThemeFiles[0], mterror, [mbok], 0); + abort; + end; + + if IsTBXThemeAvailable(P1) then + begin + wTheme.ThemeName := P1; + gLoadedThemes.Add(wTheme); + end + else + begin + messagedlg('An unknown error has occured while trying to load the theme file:'#13#10#13#10+ThemeFiles[0], mterror, [mbok], 0); + Abort; + end; + end + else + begin + messagedlg('Unable to load the specified TBX Theme file.'#13#10#13#10+ThemeFiles[0], mterror, [mbok], 0); + Abort; + end; + end + else + begin + messagedlg('Unable to load the specified TBX Theme file.'#13#10#13#10+ThemeFiles[0], mterror, [mbok], 0); + Abort; + end; + except + if wTheme.PackageHandle > 0 then + UnloadPackage(wTheme.PackageHandle); + freeandnil(wTheme); + end; + end; + ThemeFiles.delete(0); + end; +end; + +procedure TTBXDynamicThemeManager.RefreshThemes(Sender: TObject; + ThemeList: TStrings); +var + loop : integer; + wTheme : TThemeObj; +begin + ThemeList.Clear; + for loop := 0 to gLoadedThemes.Count-1 do + begin + wTheme := gLoadedThemes[loop]; + ThemeList.Add(wTheme.ThemeName); + end; +end; + +function TTBXDynamicThemeManager.ThemePath: string; +begin + if fFolderLocation = flRelative then + result := extractfilepath(ParamStr(0))+fThemeFolder + else + result := fThemeFolder; + + result := IncludeTrailingBackslash(result); + if not DirectoryExists(result) then + ForceDirectories(result); +end; + +procedure TTBXDynamicThemeManager.UnloadTheme(Sender: TObject; ThemeIndex: Integer); +var + wTheme : TThemeObj; + P2 : TRegisterTheme; +begin + try + wTheme := gLoadedThemes[ThemeIndex]; + P2 := GetProcAddress(wTheme.PackageHandle, 'TBXRegisterTheme'); + P2(False); + UnloadPackage(wTheme.PackageHandle); + gLoadedThemes.Delete(ThemeIndex); + freeandnil(wTheme); + except + messagedlg('Unable to remove the theme at this time.', mtinformation, [mbok], 0); + end +end; + +initialization + gLoadedThemes := TList.create; + +finalization + UnloadThemes; + gLoadedThemes.free; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/DTMCtrl/rmkThemes_Modified.zip b/official/2.1.6+2.1.beta1/TBX/DTMCtrl/rmkThemes_Modified.zip new file mode 100644 index 0000000000000000000000000000000000000000..3edb1c7484bd4a0c2f9cd977017e6da4a49b9ebf GIT binary patch literal 348135 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%0D2$g@N29Kc;i>4Wlte!moZ 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 z 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

        (!&{a&><$xZYrekXye!`|hW3R9#iZ5`3=A42* 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 GsQ(8?MH0yX literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/Demo/Project1.bpr b/official/2.1.6+2.1.beta1/TBX/Demo/Project1.bpr new file mode 100644 index 0000000..5837dfe --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Demo/Project1.bpr @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[CORBA] +AddServerUnit=1 +AddClientUnit=1 +PrecompiledHeaders=1 + + \ No newline at end of file diff --git a/official/2.1.6+2.1.beta1/TBX/Demo/Project1.cfg b/official/2.1.6+2.1.beta1/TBX/Demo/Project1.cfg new file mode 100644 index 0000000..d9ef69f --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Demo/Project1.cfg @@ -0,0 +1,44 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-LE"T:\Bpl_D7" +-LN"T:\Bpl_D7" +-U"T:\Componentes\Tb2k\Lib\D7" +-O"T:\Componentes\Tb2k\Lib\D7" +-I"T:\Componentes\Tb2k\Lib\D7" +-R"T:\Componentes\Tb2k\Lib\D7" +-DEUREKALOG;EUREKALOG_VER5 +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/official/2.1.6+2.1.beta1/TBX/Demo/Project1.cpp b/official/2.1.6+2.1.beta1/TBX/Demo/Project1.cpp new file mode 100644 index 0000000..cce7527 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Demo/Project1.cpp @@ -0,0 +1,23 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +USEFORMNS("Unit1.pas", Unit1, Form1); +USEFORMNS("Unit2.pas", Unit2, Form2); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + try + { + Application->Initialize(); + Application->CreateForm(__classid(TForm1), &Form1); + Application->CreateForm(__classid(TForm2), &Form2); + Application->Run(); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + return 0; +} +//--------------------------------------------------------------------------- diff --git a/official/2.1.6+2.1.beta1/TBX/Demo/Project1.dof b/official/2.1.6+2.1.beta1/TBX/Demo/Project1.dof new file mode 100644 index 0000000..e11661b --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Demo/Project1.dof @@ -0,0 +1,462 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath=T:\Componentes\Tb2k\Lib\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;CEToolsPkgd7;FR7;FRIBX7;Hydra_Core_D7;Hydra_RO_D7;fqb70;frx7;frxADO7;frxBDE7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;DataAbstract_Core_D7;DataAbstract_IDE_D7;dxComnD7;dxsbD7;dxBarD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;cxEditorsVCLD7;cxLibraryVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxPSCoreD7 +Conditionals=EUREKALOG;EUREKALOG_VER5 +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +c:\archivos de programa\borland\delphi7\Bin\designdgm70.bpl=Borland Module Diagram Editview +T:\BPL_D7\dxPSCoreD7.bpl=ExpressPrinting System by Developer Express Inc. +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=1 +Item0=T:\Componentes\Tb2k\Lib\D7 +[Exception Log] +EurekaLog Version=519 +Activate=1 +Activate Handle=1 +Save Log File=1 +Foreground Tab=0 +Freeze Activate=0 +Freeze Timeout=0 +Freeze Message=The application seems to be frozen. +SMTP From=eurekalog@email.com +SMTP Host= +SMTP Port=25 +SMTP UserID= +SMTP Password= +Append to Log=0 +Show TerminateBtn=1 +TerminateBtn Operation=1 +Errors Number=32 +Errors Terminate=3 +Email Address= +Email Object= +Email Send Options=0 +Output Path= +Encrypt Password= +AutoCloseDialogSecs=0 +WebSendMode=0 +SupportULR= +HTMLLayout Count=15 +HTMLLine0="%3Chtml%3E" +HTMLLine1=" %3Chead%3E" +HTMLLine2=" %3C/head%3E" +HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E" +HTMLLine4=" %3Ctable width="100%%" border="0"%3E" +HTMLLine5=" %3Ctr%3E" +HTMLLine6=" %3Ctd nowrap%3E" +HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E" +HTMLLine8=" %3C%%HTML_TAG%%%3E" +HTMLLine9=" %3C/font%3E" +HTMLLine10=" %3C/td%3E" +HTMLLine11=" %3C/tr%3E" +HTMLLine12=" %3C/table%3E" +HTMLLine13=" %3C/body%3E" +HTMLLine14="%3C/html%3E" +AutoCrashOperation=1 +AutoCrashNumber=10 +AutoCrashMinutes=1 +WebURL= +WebUserID= +WebPassword= +WebPort=0 +AttachedFiles= +Count=0 +EMail Message Line Count=0 +loNoDuplicateErrors=0 +loAppendReproduceText=0 +loDeleteLogAtVersionChange=0 +loAddComputerNameInLogFileName=0 +loSaveModulesSection=1 +loSaveCPUSection=1 +soAppStartDate=1 +soAppName=1 +soAppVersionNumber=1 +soAppParameters=1 +soAppCompilationDate=1 +soExcDate=1 +soExcAddress=1 +soExcModule=1 +soExcType=1 +soExcMessage=1 +soActCtlsFormClass=1 +soActCtlsFormText=1 +soActCtlsControlClass=1 +soActCtlsControlText=1 +soCmpName=1 +soCmpUser=1 +soCmpTotalMemory=1 +soCmpFreeMemory=1 +soCmpTotalDisk=1 +soCmpFreeDisk=1 +soCmpSysUpTime=1 +soCmpProcessor=1 +soCmpDisplayMode=1 +soOSType=1 +soOSBuildN=1 +soOSUpdate=1 +soOSLanguage=1 +soNetIP=1 +soNetSubmask=1 +soNetGateway=1 +soNetDNS1=1 +soNetDNS2=1 +soNetDHCP=1 +sndShowSendDialog=1 +sndShowSuccessFailureMsg=0 +sndSendEntireLog=0 +sndSendXMLLogCopy=0 +sndSendScreenshot=0 +sndUseOnlyActiveWindow=0 +sndSendLastHTMLPage=1 +sndSendInSeparatedThread=0 +sndAddDateInFileName=0 +sndCompressAllFiles=0 +edoShowExceptionDialog=1 +edoSendEmailChecked=1 +edoAttachScreenshotChecked=1 +edoShowCopyToClipOption=1 +edoShowDetailsButton=1 +edoShowInDetailedMode=0 +edoShowInTopMostMode=0 +edoUseEurekaLogLookAndFeel=1 +csoShowDLLs=1 +csoShowBPLs=1 +csoShowBorlandThreads=1 +csoShowWindowsThreads=1 +csoShowProcedureOffset=0 +boActivateCrashDetection=0 +boPauseBorlandThreads=0 +boDoNotPauseMainThread=0 +boPauseWindowsThreads=0 +boUseMainModuleOptions=1 +boCopyLogInCaseOfError=1 +boSaveCompressedCopyInCaseOfError=0 +Count mtInformationMsgCaption=1 +mtInformationMsgCaption0="Information." +Count mtQuestionMsgCaption=1 +mtQuestionMsgCaption0="Question." +Count mtDialog_Caption=1 +mtDialog_Caption0="Error." +Count mtDialog_ErrorMsgCaption=2 +mtDialog_ErrorMsgCaption0="An error has occurred during program execution." +mtDialog_ErrorMsgCaption1="Please read the following information for further details." +Count mtDialog_GeneralCaption=1 +mtDialog_GeneralCaption0="General" +Count mtDialog_GeneralHeader=1 +mtDialog_GeneralHeader0="General Information" +Count mtDialog_CallStackCaption=1 +mtDialog_CallStackCaption0="Call Stack" +Count mtDialog_CallStackHeader=1 +mtDialog_CallStackHeader0="Call Stack Information" +Count mtDialog_ModulesCaption=1 +mtDialog_ModulesCaption0="Modules" +Count mtDialog_ModulesHeader=1 +mtDialog_ModulesHeader0="Modules Information" +Count mtDialog_CPUCaption=1 +mtDialog_CPUCaption0="CPU" +Count mtDialog_CPUHeader=1 +mtDialog_CPUHeader0="CPU Information" +Count mtDialog_CustomDataCaption=1 +mtDialog_CustomDataCaption0="Other" +Count mtDialog_CustomDataHeader=1 +mtDialog_CustomDataHeader0="Other Information" +Count mtDialog_OKButtonCaption=1 +mtDialog_OKButtonCaption0="%26OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="%26Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="%26Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="%26Details" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="%26Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="%26Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="%26Copy to Clipboard" +Count mtDialog_SupportMessage=1 +mtDialog_SupportMessage0="Go to the Support Page" +Count mtLog_AppHeader=1 +mtLog_AppHeader0="Application" +Count mtLog_AppStartDate=1 +mtLog_AppStartDate0="Start Date" +Count mtLog_AppName=1 +mtLog_AppName0="Name/Description" +Count mtLog_AppVersionNumber=1 +mtLog_AppVersionNumber0="Version Number" +Count mtLog_AppParameters=1 +mtLog_AppParameters0="Parameters" +Count mtLog_AppCompilationDate=1 +mtLog_AppCompilationDate0="Compilation Date" +Count mtLog_ExcHeader=1 +mtLog_ExcHeader0="Exception" +Count mtLog_ExcDate=1 +mtLog_ExcDate0="Date" +Count mtLog_ExcAddress=1 +mtLog_ExcAddress0="Address" +Count mtLog_ExcModule=1 +mtLog_ExcModule0="Module" +Count mtLog_ExcType=1 +mtLog_ExcType0="Type" +Count mtLog_ExcMessage=1 +mtLog_ExcMessage0="Message" +Count mtLog_ActCtrlsHeader=1 +mtLog_ActCtrlsHeader0="Active Controls" +Count mtLog_ActCtrlsFormClass=1 +mtLog_ActCtrlsFormClass0="Form Class" +Count mtLog_ActCtrlsFormText=1 +mtLog_ActCtrlsFormText0="Form Text" +Count mtLog_ActCtrlsControlClass=1 +mtLog_ActCtrlsControlClass0="Control Class" +Count mtLog_ActCtrlsControlText=1 +mtLog_ActCtrlsControlText0="Control Text" +Count mtLog_CmpHeader=1 +mtLog_CmpHeader0="Computer" +Count mtLog_CmpName=1 +mtLog_CmpName0="Name" +Count mtLog_CmpUser=1 +mtLog_CmpUser0="User" +Count mtLog_CmpTotalMemory=1 +mtLog_CmpTotalMemory0="Total Memory" +Count mtLog_CmpFreeMemory=1 +mtLog_CmpFreeMemory0="Free Memory" +Count mtLog_CmpTotalDisk=1 +mtLog_CmpTotalDisk0="Total Disk" +Count mtLog_CmpFreeDisk=1 +mtLog_CmpFreeDisk0="Free Disk" +Count mtLog_CmpSystemUpTime=1 +mtLog_CmpSystemUpTime0="System Up Time" +Count mtLog_CmpProcessor=1 +mtLog_CmpProcessor0="Processor" +Count mtLog_CmpDisplayMode=1 +mtLog_CmpDisplayMode0="Display Mode" +Count mtLog_OSHeader=1 +mtLog_OSHeader0="Operating System" +Count mtLog_OSType=1 +mtLog_OSType0="Type" +Count mtLog_OSBuildN=1 +mtLog_OSBuildN0="Build #" +Count mtLog_OSUpdate=1 +mtLog_OSUpdate0="Update" +Count mtLog_OSLanguage=1 +mtLog_OSLanguage0="Language" +Count mtLog_NetHeader=1 +mtLog_NetHeader0="Network" +Count mtLog_NetIP=1 +mtLog_NetIP0="IP Address" +Count mtLog_NetSubmask=1 +mtLog_NetSubmask0="Submask" +Count mtLog_NetGateway=1 +mtLog_NetGateway0="Gateway" +Count mtLog_NetDNS1=1 +mtLog_NetDNS10="DNS 1" +Count mtLog_NetDNS2=1 +mtLog_NetDNS20="DNS 2" +Count mtLog_NetDHCP=1 +mtLog_NetDHCP0="DHCP" +Count mtLog_CustInfoHeader=1 +mtLog_CustInfoHeader0="Custom Information" +Count mtCallStack_Address=1 +mtCallStack_Address0="Address" +Count mtCallStack_Name=1 +mtCallStack_Name0="Module" +Count mtCallStack_Unit=1 +mtCallStack_Unit0="Unit" +Count mtCallStack_Class=1 +mtCallStack_Class0="Class" +Count mtCallStack_Procedure=1 +mtCallStack_Procedure0="Procedure/Method" +Count mtCallStack_Line=1 +mtCallStack_Line0="Line" +Count mtCallStack_MainThread=1 +mtCallStack_MainThread0="Main" +Count mtCallStack_ExceptionThread=1 +mtCallStack_ExceptionThread0="Exception Thread" +Count mtCallStack_RunningThread=1 +mtCallStack_RunningThread0="Running Thread" +Count mtCallStack_CallingThread=1 +mtCallStack_CallingThread0="Calling Thread" +Count mtCallStack_ThreadID=1 +mtCallStack_ThreadID0="ID" +Count mtCallStack_ThreadPriority=1 +mtCallStack_ThreadPriority0="Priority" +Count mtCallStack_ThreadClass=1 +mtCallStack_ThreadClass0="Class" +Count mtSendDialog_Caption=1 +mtSendDialog_Caption0="Send." +Count mtSendDialog_Message=1 +mtSendDialog_Message0="Message" +Count mtSendDialog_Resolving=1 +mtSendDialog_Resolving0="Resolving DNS..." +Count mtSendDialog_Connecting=1 +mtSendDialog_Connecting0="Connecting with server..." +Count mtSendDialog_Connected=1 +mtSendDialog_Connected0="Connected with server." +Count mtSendDialog_Sending=1 +mtSendDialog_Sending0="Sending message..." +Count mtReproduceDialog_Caption=1 +mtReproduceDialog_Caption0="Request" +Count mtReproduceDialog_Request=1 +mtReproduceDialog_Request0="Please describe the steps to reproduce the error:" +Count mtReproduceDialog_OKButtonCaption=1 +mtReproduceDialog_OKButtonCaption0="%26OK" +Count mtModules_Handle=1 +mtModules_Handle0="Handle" +Count mtModules_Name=1 +mtModules_Name0="Name" +Count mtModules_Description=1 +mtModules_Description0="Description" +Count mtModules_Version=1 +mtModules_Version0="Version" +Count mtModules_Size=1 +mtModules_Size0="Size" +Count mtModules_LastModified=1 +mtModules_LastModified0="Modified" +Count mtModules_Path=1 +mtModules_Path0="Path" +Count mtCPU_Registers=1 +mtCPU_Registers0="Registers" +Count mtCPU_Stack=1 +mtCPU_Stack0="Stack" +Count mtCPU_MemoryDump=1 +mtCPU_MemoryDump0="Memory Dump" +Count mtSend_SuccessMsg=1 +mtSend_SuccessMsg0="The message was sent successfully." +Count mtSend_FailureMsg=1 +mtSend_FailureMsg0="Sorry, sending the message didn't work." + + diff --git a/official/2.1.6+2.1.beta1/TBX/Demo/Project1.dpr b/official/2.1.6+2.1.beta1/TBX/Demo/Project1.dpr new file mode 100644 index 0000000..d165631 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Demo/Project1.dpr @@ -0,0 +1,16 @@ +program Project1; + +uses + ExceptionLog, + Forms, + Unit1 in 'Unit1.pas' {Form1}, + Unit2 in 'Unit2.pas' {Form2}; + +{$R *.RES} + +begin + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.CreateForm(TForm2, Form2); + Application.Run; +end. diff --git a/official/2.1.6+2.1.beta1/TBX/Demo/Project1.drc b/official/2.1.6+2.1.beta1/TBX/Demo/Project1.drc new file mode 100644 index 0000000..6eda834 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Demo/Project1.drc @@ -0,0 +1,552 @@ +/* VER150 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +#define ExtCtrls_clName3DDkShadow 65264 +#define ExtCtrls_clName3DLight 65265 +#define ExtCtrls_clNameWindow 65266 +#define ExtCtrls_clNameWindowFrame 65267 +#define ExtCtrls_clNameWindowText 65268 +#define WinHelpViewer_hNoKeyword 65269 +#define TB2Consts_STBToolbarIndexOutOfBounds 65270 +#define TB2Consts_STBToolbarItemReinserted 65271 +#define TB2Consts_STBViewerNotFound 65272 +#define TB2Consts_STBChevronItemMoreButtonsHint 65273 +#define TB2Consts_STBMDIWindowItemDefCaption 65274 +#define TB2Consts_STBDockParentNotAllowed 65275 +#define TB2Consts_STBDockCannotChangePosition 65276 +#define ExtCtrls_clNameBtnShadow 65280 +#define ExtCtrls_clNameBtnText 65281 +#define ExtCtrls_clNameCaptionText 65282 +#define ExtCtrls_clNameDefault 65283 +#define ExtCtrls_clNameGrayText 65284 +#define ExtCtrls_clNameHighlight 65285 +#define ExtCtrls_clNameHighlightText 65286 +#define ExtCtrls_clNameInactiveBorder 65287 +#define ExtCtrls_clNameInactiveCaption 65288 +#define ExtCtrls_clNameInactiveCaptionText 65289 +#define ExtCtrls_clNameInfoBk 65290 +#define ExtCtrls_clNameInfoText 65291 +#define ExtCtrls_clNameMenu 65292 +#define ExtCtrls_clNameMenuText 65293 +#define ExtCtrls_clNameNone 65294 +#define ExtCtrls_clNameScrollBar 65295 +#define ExtCtrls_clNameLime 65296 +#define ExtCtrls_clNameYellow 65297 +#define ExtCtrls_clNameBlue 65298 +#define ExtCtrls_clNameFuchsia 65299 +#define ExtCtrls_clNameAqua 65300 +#define ExtCtrls_clNameWhite 65301 +#define ExtCtrls_clNameMoneyGreen 65302 +#define ExtCtrls_clNameSkyBlue 65303 +#define ExtCtrls_clNameCream 65304 +#define ExtCtrls_clNameMedGray 65305 +#define ExtCtrls_clNameActiveBorder 65306 +#define ExtCtrls_clNameActiveCaption 65307 +#define ExtCtrls_clNameAppWorkSpace 65308 +#define ExtCtrls_clNameBackground 65309 +#define ExtCtrls_clNameBtnFace 65310 +#define ExtCtrls_clNameBtnHighlight 65311 +#define Consts_SErrorSettingCount 65312 +#define Consts_SListBoxMustBeVirtual 65313 +#define HelpIntfs_hNoTableOfContents 65314 +#define HelpIntfs_hNothingFound 65315 +#define HelpIntfs_hNoContext 65316 +#define HelpIntfs_hNoTopics 65317 +#define ExtCtrls_clNameBlack 65318 +#define ExtCtrls_clNameMaroon 65319 +#define ExtCtrls_clNameGreen 65320 +#define ExtCtrls_clNameOlive 65321 +#define ExtCtrls_clNameNavy 65322 +#define ExtCtrls_clNamePurple 65323 +#define ExtCtrls_clNameTeal 65324 +#define ExtCtrls_clNameGray 65325 +#define ExtCtrls_clNameSilver 65326 +#define ExtCtrls_clNameRed 65327 +#define Consts_SmkcUp 65328 +#define Consts_SmkcRight 65329 +#define Consts_SmkcDown 65330 +#define Consts_SmkcIns 65331 +#define Consts_SmkcDel 65332 +#define Consts_SmkcShift 65333 +#define Consts_SmkcCtrl 65334 +#define Consts_SmkcAlt 65335 +#define Consts_SInsertLineError 65336 +#define Consts_SIconToClipboard 65337 +#define Consts_SInvalidMemoSize 65338 +#define Consts_SDuplicateMenus 65339 +#define Consts_SDockedCtlNeedsName 65340 +#define Consts_SDockTreeRemoveError 65341 +#define Consts_SDockZoneNotFound 65342 +#define Consts_SDockZoneHasNoCtl 65343 +#define Consts_SMsgDlgAbort 65344 +#define Consts_SMsgDlgRetry 65345 +#define Consts_SMsgDlgIgnore 65346 +#define Consts_SMsgDlgAll 65347 +#define Consts_SMsgDlgNoToAll 65348 +#define Consts_SMsgDlgYesToAll 65349 +#define Consts_SmkcBkSp 65350 +#define Consts_SmkcTab 65351 +#define Consts_SmkcEsc 65352 +#define Consts_SmkcEnter 65353 +#define Consts_SmkcSpace 65354 +#define Consts_SmkcPgUp 65355 +#define Consts_SmkcPgDn 65356 +#define Consts_SmkcEnd 65357 +#define Consts_SmkcHome 65358 +#define Consts_SmkcLeft 65359 +#define Consts_SHelpButton 65360 +#define Consts_SCloseButton 65361 +#define Consts_SIgnoreButton 65362 +#define Consts_SRetryButton 65363 +#define Consts_SAbortButton 65364 +#define Consts_SAllButton 65365 +#define Consts_SCannotDragForm 65366 +#define Consts_SMsgDlgWarning 65367 +#define Consts_SMsgDlgError 65368 +#define Consts_SMsgDlgInformation 65369 +#define Consts_SMsgDlgConfirm 65370 +#define Consts_SMsgDlgYes 65371 +#define Consts_SMsgDlgNo 65372 +#define Consts_SMsgDlgOK 65373 +#define Consts_SMsgDlgCancel 65374 +#define Consts_SMsgDlgHelp 65375 +#define Consts_SCannotFocus 65376 +#define Consts_SParentRequired 65377 +#define Consts_SMDIChildNotVisible 65378 +#define Consts_SVisibleChanged 65379 +#define Consts_SCannotShowModal 65380 +#define Consts_SMenuIndexError 65381 +#define Consts_SMenuReinserted 65382 +#define Consts_SMenuNotFound 65383 +#define Consts_SNoTimers 65384 +#define Consts_SGroupIndexTooLow 65385 +#define Consts_SNoMDIForm 65386 +#define Consts_SControlParentSetToSelf 65387 +#define Consts_SOKButton 65388 +#define Consts_SCancelButton 65389 +#define Consts_SYesButton 65390 +#define Consts_SNoButton 65391 +#define RTLConsts_SThreadError 65392 +#define Consts_SInvalidBitmap 65393 +#define Consts_SInvalidIcon 65394 +#define Consts_SInvalidPixelFormat 65395 +#define Consts_SScanLine 65396 +#define Consts_SChangeIconSize 65397 +#define Consts_SUnknownClipboardFormat 65398 +#define Consts_SOutOfResources 65399 +#define Consts_SNoCanvasHandle 65400 +#define Consts_SInvalidImageSize 65401 +#define Consts_SInvalidImageList 65402 +#define Consts_SImageIndexError 65403 +#define Consts_SImageReadFail 65404 +#define Consts_SImageWriteFail 65405 +#define Consts_SWindowDCError 65406 +#define Consts_SWindowClass 65407 +#define RTLConsts_SInvalidPropertyPath 65408 +#define RTLConsts_SInvalidPropertyValue 65409 +#define RTLConsts_SListCapacityError 65410 +#define RTLConsts_SListCountError 65411 +#define RTLConsts_SListIndexError 65412 +#define RTLConsts_SMemoryStreamError 65413 +#define RTLConsts_SPropertyException 65414 +#define RTLConsts_SReadError 65415 +#define RTLConsts_SReadOnlyProperty 65416 +#define RTLConsts_SResNotFound 65417 +#define RTLConsts_SSeekNotImplemented 65418 +#define RTLConsts_SSortedListError 65419 +#define RTLConsts_SUnknownGroup 65420 +#define RTLConsts_SUnknownProperty 65421 +#define RTLConsts_SWriteError 65422 +#define RTLConsts_SThreadCreateError 65423 +#define SysConst_SLongDayNameSat 65424 +#define RTLConsts_SAncestorNotFound 65425 +#define RTLConsts_SAssignError 65426 +#define RTLConsts_SBitsIndexError 65427 +#define RTLConsts_SCantWriteResourceStreamError 65428 +#define RTLConsts_SCheckSynchronizeError 65429 +#define RTLConsts_SClassNotFound 65430 +#define RTLConsts_SDuplicateClass 65431 +#define RTLConsts_SDuplicateItem 65432 +#define RTLConsts_SDuplicateName 65433 +#define RTLConsts_SDuplicateString 65434 +#define RTLConsts_SFCreateErrorEx 65435 +#define RTLConsts_SFOpenErrorEx 65436 +#define RTLConsts_SInvalidImage 65437 +#define RTLConsts_SInvalidName 65438 +#define RTLConsts_SInvalidProperty 65439 +#define SysConst_SLongMonthNameOct 65440 +#define SysConst_SLongMonthNameNov 65441 +#define SysConst_SLongMonthNameDec 65442 +#define SysConst_SShortDayNameSun 65443 +#define SysConst_SShortDayNameMon 65444 +#define SysConst_SShortDayNameTue 65445 +#define SysConst_SShortDayNameWed 65446 +#define SysConst_SShortDayNameThu 65447 +#define SysConst_SShortDayNameFri 65448 +#define SysConst_SShortDayNameSat 65449 +#define SysConst_SLongDayNameSun 65450 +#define SysConst_SLongDayNameMon 65451 +#define SysConst_SLongDayNameTue 65452 +#define SysConst_SLongDayNameWed 65453 +#define SysConst_SLongDayNameThu 65454 +#define SysConst_SLongDayNameFri 65455 +#define SysConst_SShortMonthNameJun 65456 +#define SysConst_SShortMonthNameJul 65457 +#define SysConst_SShortMonthNameAug 65458 +#define SysConst_SShortMonthNameSep 65459 +#define SysConst_SShortMonthNameOct 65460 +#define SysConst_SShortMonthNameNov 65461 +#define SysConst_SShortMonthNameDec 65462 +#define SysConst_SLongMonthNameJan 65463 +#define SysConst_SLongMonthNameFeb 65464 +#define SysConst_SLongMonthNameMar 65465 +#define SysConst_SLongMonthNameApr 65466 +#define SysConst_SLongMonthNameMay 65467 +#define SysConst_SLongMonthNameJun 65468 +#define SysConst_SLongMonthNameJul 65469 +#define SysConst_SLongMonthNameAug 65470 +#define SysConst_SLongMonthNameSep 65471 +#define SysConst_SVarNotImplemented 65472 +#define SysConst_SVarUnexpected 65473 +#define SysConst_SExternalException 65474 +#define SysConst_SAssertionFailed 65475 +#define SysConst_SIntfCastError 65476 +#define SysConst_SSafecallException 65477 +#define SysConst_SAssertError 65478 +#define SysConst_SAbstractError 65479 +#define SysConst_SModuleAccessViolation 65480 +#define SysConst_SOSError 65481 +#define SysConst_SUnkOSError 65482 +#define SysConst_SShortMonthNameJan 65483 +#define SysConst_SShortMonthNameFeb 65484 +#define SysConst_SShortMonthNameMar 65485 +#define SysConst_SShortMonthNameApr 65486 +#define SysConst_SShortMonthNameMay 65487 +#define SysConst_SDispatchError 65488 +#define SysConst_SReadAccess 65489 +#define SysConst_SWriteAccess 65490 +#define SysConst_SFormatTooLong 65491 +#define SysConst_SVarArrayCreate 65492 +#define SysConst_SVarArrayBounds 65493 +#define SysConst_SVarArrayLocked 65494 +#define SysConst_SInvalidVarCast 65495 +#define SysConst_SInvalidVarOp 65496 +#define SysConst_SInvalidVarNullOp 65497 +#define SysConst_SInvalidVarOpWithHResultWithPrefix 65498 +#define SysConst_SVarTypeCouldNotConvert 65499 +#define SysConst_SVarTypeConvertOverflow 65500 +#define SysConst_SVarOverflow 65501 +#define SysConst_SVarInvalid 65502 +#define SysConst_SVarBadType 65503 +#define SysConst_SInvalidOp 65504 +#define SysConst_SZeroDivide 65505 +#define SysConst_SOverflow 65506 +#define SysConst_SUnderflow 65507 +#define SysConst_SInvalidPointer 65508 +#define SysConst_SInvalidCast 65509 +#define SysConst_SAccessViolationArg3 65510 +#define SysConst_SAccessViolationNoArg 65511 +#define SysConst_SStackOverflow 65512 +#define SysConst_SControlC 65513 +#define SysConst_SPrivilege 65514 +#define SysConst_SOperationAborted 65515 +#define SysConst_SException 65516 +#define SysConst_SExceptTitle 65517 +#define SysConst_SInvalidFormat 65518 +#define SysConst_SArgumentMissing 65519 +#define SysConst_SInvalidInteger 65520 +#define SysConst_SInvalidDateTime 65521 +#define SysConst_STimeEncodeError 65522 +#define SysConst_SDateEncodeError 65523 +#define SysConst_SOutOfMemory 65524 +#define SysConst_SInOutError 65525 +#define SysConst_SFileNotFound 65526 +#define SysConst_SInvalidFilename 65527 +#define SysConst_STooManyOpenFiles 65528 +#define SysConst_SAccessDenied 65529 +#define SysConst_SEndOfFile 65530 +#define SysConst_SDiskFull 65531 +#define SysConst_SInvalidInput 65532 +#define SysConst_SDivByZero 65533 +#define SysConst_SRangeError 65534 +#define SysConst_SIntOverflow 65535 +STRINGTABLE +BEGIN + ExtCtrls_clName3DDkShadow, "3D Dark Shadow" + ExtCtrls_clName3DLight, "3D Light" + ExtCtrls_clNameWindow, "Window Background" + ExtCtrls_clNameWindowFrame, "Window Frame" + ExtCtrls_clNameWindowText, "Window Text" + WinHelpViewer_hNoKeyword, "No help keyword specified." + TB2Consts_STBToolbarIndexOutOfBounds, "Toolbar item index out of range" + TB2Consts_STBToolbarItemReinserted, "Toolbar item already inserted" + TB2Consts_STBViewerNotFound, "An item viewer associated the specified item could not be found" + TB2Consts_STBChevronItemMoreButtonsHint, "More Buttons|" + TB2Consts_STBMDIWindowItemDefCaption, "(Window List)" + TB2Consts_STBDockParentNotAllowed, "A TTBDock control cannot be placed inside a tool window or another TTBDock" + TB2Consts_STBDockCannotChangePosition, "Cannot change Position of a TTBDock if it already contains controls" + ExtCtrls_clNameBtnShadow, "Button Shadow" + ExtCtrls_clNameBtnText, "Button Text" + ExtCtrls_clNameCaptionText, "Caption Text" + ExtCtrls_clNameDefault, "Default" + ExtCtrls_clNameGrayText, "Gray Text" + ExtCtrls_clNameHighlight, "Highlight Background" + ExtCtrls_clNameHighlightText, "Highlight Text" + ExtCtrls_clNameInactiveBorder, "Inactive Border" + ExtCtrls_clNameInactiveCaption, "Inactive Caption" + ExtCtrls_clNameInactiveCaptionText, "Inactive Caption Text" + ExtCtrls_clNameInfoBk, "Info Background" + ExtCtrls_clNameInfoText, "Info Text" + ExtCtrls_clNameMenu, "Menu Background" + ExtCtrls_clNameMenuText, "Menu Text" + ExtCtrls_clNameNone, "None" + ExtCtrls_clNameScrollBar, "Scroll Bar" + ExtCtrls_clNameLime, "Lime" + ExtCtrls_clNameYellow, "Yellow" + ExtCtrls_clNameBlue, "Blue" + ExtCtrls_clNameFuchsia, "Fuchsia" + ExtCtrls_clNameAqua, "Aqua" + ExtCtrls_clNameWhite, "White" + ExtCtrls_clNameMoneyGreen, "Money Green" + ExtCtrls_clNameSkyBlue, "Sky Blue" + ExtCtrls_clNameCream, "Cream" + ExtCtrls_clNameMedGray, "Medium Gray" + ExtCtrls_clNameActiveBorder, "Active Border" + ExtCtrls_clNameActiveCaption, "Active Caption" + ExtCtrls_clNameAppWorkSpace, "Application Workspace" + ExtCtrls_clNameBackground, "Background" + ExtCtrls_clNameBtnFace, "Button Face" + ExtCtrls_clNameBtnHighlight, "Button Highlight" + Consts_SErrorSettingCount, "Error setting %s.Count" + Consts_SListBoxMustBeVirtual, "Listbox (%s) style must be virtual in order to set Count" + HelpIntfs_hNoTableOfContents, "Unable to find a Table of Contents" + HelpIntfs_hNothingFound, "No help found for %s" + HelpIntfs_hNoContext, "No context-sensitive help installed" + HelpIntfs_hNoTopics, "No topic-based help system installed" + ExtCtrls_clNameBlack, "Black" + ExtCtrls_clNameMaroon, "Maroon" + ExtCtrls_clNameGreen, "Green" + ExtCtrls_clNameOlive, "Olive" + ExtCtrls_clNameNavy, "Navy" + ExtCtrls_clNamePurple, "Purple" + ExtCtrls_clNameTeal, "Teal" + ExtCtrls_clNameGray, "Gray" + ExtCtrls_clNameSilver, "Silver" + ExtCtrls_clNameRed, "Red" + Consts_SmkcUp, "Up" + Consts_SmkcRight, "Right" + Consts_SmkcDown, "Down" + Consts_SmkcIns, "Ins" + Consts_SmkcDel, "Del" + Consts_SmkcShift, "Shift+" + Consts_SmkcCtrl, "Ctrl+" + Consts_SmkcAlt, "Alt+" + Consts_SInsertLineError, "Unable to insert a line" + Consts_SIconToClipboard, "Clipboard does not support Icons" + Consts_SInvalidMemoSize, "Text exceeds memo capacity" + Consts_SDuplicateMenus, "Menu '%s' is already being used by another form" + Consts_SDockedCtlNeedsName, "Docked control must have a name" + Consts_SDockTreeRemoveError, "Error removing control from dock tree" + Consts_SDockZoneNotFound, " - Dock zone not found" + Consts_SDockZoneHasNoCtl, " - Dock zone has no control" + Consts_SMsgDlgAbort, "&Abort" + Consts_SMsgDlgRetry, "&Retry" + Consts_SMsgDlgIgnore, "&Ignore" + Consts_SMsgDlgAll, "&All" + Consts_SMsgDlgNoToAll, "N&o to All" + Consts_SMsgDlgYesToAll, "Yes to &All" + Consts_SmkcBkSp, "BkSp" + Consts_SmkcTab, "Tab" + Consts_SmkcEsc, "Esc" + Consts_SmkcEnter, "Enter" + Consts_SmkcSpace, "Space" + Consts_SmkcPgUp, "PgUp" + Consts_SmkcPgDn, "PgDn" + Consts_SmkcEnd, "End" + Consts_SmkcHome, "Home" + Consts_SmkcLeft, "Left" + Consts_SHelpButton, "&Help" + Consts_SCloseButton, "&Close" + Consts_SIgnoreButton, "&Ignore" + Consts_SRetryButton, "&Retry" + Consts_SAbortButton, "Abort" + Consts_SAllButton, "&All" + Consts_SCannotDragForm, "Cannot drag a form" + Consts_SMsgDlgWarning, "Warning" + Consts_SMsgDlgError, "Error" + Consts_SMsgDlgInformation, "Information" + Consts_SMsgDlgConfirm, "Confirm" + Consts_SMsgDlgYes, "&Yes" + Consts_SMsgDlgNo, "&No" + Consts_SMsgDlgOK, "OK" + Consts_SMsgDlgCancel, "Cancel" + Consts_SMsgDlgHelp, "&Help" + Consts_SCannotFocus, "Cannot focus a disabled or invisible window" + Consts_SParentRequired, "Control '%s' has no parent window" + Consts_SMDIChildNotVisible, "Cannot hide an MDI Child Form" + Consts_SVisibleChanged, "Cannot change Visible in OnShow or OnHide" + Consts_SCannotShowModal, "Cannot make a visible window modal" + Consts_SMenuIndexError, "Menu index out of range" + Consts_SMenuReinserted, "Menu inserted twice" + Consts_SMenuNotFound, "Sub-menu is not in menu" + Consts_SNoTimers, "Not enough timers available" + Consts_SGroupIndexTooLow, "GroupIndex cannot be less than a previous menu item's GroupIndex" + Consts_SNoMDIForm, "Cannot create form. No MDI forms are currently active" + Consts_SControlParentSetToSelf, "A control cannot have itself as its parent" + Consts_SOKButton, "OK" + Consts_SCancelButton, "Cancel" + Consts_SYesButton, "&Yes" + Consts_SNoButton, "&No" + RTLConsts_SThreadError, "Thread Error: %s (%d)" + Consts_SInvalidBitmap, "Bitmap image is not valid" + Consts_SInvalidIcon, "Icon image is not valid" + Consts_SInvalidPixelFormat, "Invalid pixel format" + Consts_SScanLine, "Scan line index out of range" + Consts_SChangeIconSize, "Cannot change the size of an icon" + Consts_SUnknownClipboardFormat, "Unsupported clipboard format" + Consts_SOutOfResources, "Out of system resources" + Consts_SNoCanvasHandle, "Canvas does not allow drawing" + Consts_SInvalidImageSize, "Invalid image size" + Consts_SInvalidImageList, "Invalid ImageList" + Consts_SImageIndexError, "Invalid ImageList Index" + Consts_SImageReadFail, "Failed to read ImageList data from stream" + Consts_SImageWriteFail, "Failed to write ImageList data to stream" + Consts_SWindowDCError, "Error creating window device context" + Consts_SWindowClass, "Error creating window class" + RTLConsts_SInvalidPropertyPath, "Invalid property path" + RTLConsts_SInvalidPropertyValue, "Invalid property value" + RTLConsts_SListCapacityError, "List capacity out of bounds (%d)" + RTLConsts_SListCountError, "List count out of bounds (%d)" + RTLConsts_SListIndexError, "List index out of bounds (%d)" + RTLConsts_SMemoryStreamError, "Out of memory while expanding memory stream" + RTLConsts_SPropertyException, "Error reading %s%s%s: %s" + RTLConsts_SReadError, "Stream read error" + RTLConsts_SReadOnlyProperty, "Property is read-only" + RTLConsts_SResNotFound, "Resource %s not found" + RTLConsts_SSeekNotImplemented, "%s.Seek not implemented" + RTLConsts_SSortedListError, "Operation not allowed on sorted list" + RTLConsts_SUnknownGroup, "%s not in a class registration group" + RTLConsts_SUnknownProperty, "Property %s does not exist" + RTLConsts_SWriteError, "Stream write error" + RTLConsts_SThreadCreateError, "Thread creation error: %s" + SysConst_SLongDayNameSat, "Saturday" + RTLConsts_SAncestorNotFound, "Ancestor for '%s' not found" + RTLConsts_SAssignError, "Cannot assign a %s to a %s" + RTLConsts_SBitsIndexError, "Bits index out of range" + RTLConsts_SCantWriteResourceStreamError, "Can't write to a read-only resource stream" + RTLConsts_SCheckSynchronizeError, "CheckSynchronize called from thread $%x, which is NOT the main thread" + RTLConsts_SClassNotFound, "Class %s not found" + RTLConsts_SDuplicateClass, "A class named %s already exists" + RTLConsts_SDuplicateItem, "List does not allow duplicates ($0%x)" + RTLConsts_SDuplicateName, "A component named %s already exists" + RTLConsts_SDuplicateString, "String list does not allow duplicates" + RTLConsts_SFCreateErrorEx, "Cannot create file \"%s\". %s" + RTLConsts_SFOpenErrorEx, "Cannot open file \"%s\". %s" + RTLConsts_SInvalidImage, "Invalid stream format" + RTLConsts_SInvalidName, "''%s'' is not a valid component name" + RTLConsts_SInvalidProperty, "Invalid property value" + SysConst_SLongMonthNameOct, "October" + SysConst_SLongMonthNameNov, "November" + SysConst_SLongMonthNameDec, "December" + SysConst_SShortDayNameSun, "Sun" + SysConst_SShortDayNameMon, "Mon" + SysConst_SShortDayNameTue, "Tue" + SysConst_SShortDayNameWed, "Wed" + SysConst_SShortDayNameThu, "Thu" + SysConst_SShortDayNameFri, "Fri" + SysConst_SShortDayNameSat, "Sat" + SysConst_SLongDayNameSun, "Sunday" + SysConst_SLongDayNameMon, "Monday" + SysConst_SLongDayNameTue, "Tuesday" + SysConst_SLongDayNameWed, "Wednesday" + SysConst_SLongDayNameThu, "Thursday" + SysConst_SLongDayNameFri, "Friday" + SysConst_SShortMonthNameJun, "Jun" + SysConst_SShortMonthNameJul, "Jul" + SysConst_SShortMonthNameAug, "Aug" + SysConst_SShortMonthNameSep, "Sep" + SysConst_SShortMonthNameOct, "Oct" + SysConst_SShortMonthNameNov, "Nov" + SysConst_SShortMonthNameDec, "Dec" + SysConst_SLongMonthNameJan, "January" + SysConst_SLongMonthNameFeb, "February" + SysConst_SLongMonthNameMar, "March" + SysConst_SLongMonthNameApr, "April" + SysConst_SLongMonthNameMay, "May" + SysConst_SLongMonthNameJun, "June" + SysConst_SLongMonthNameJul, "July" + SysConst_SLongMonthNameAug, "August" + SysConst_SLongMonthNameSep, "September" + SysConst_SVarNotImplemented, "Operation not supported" + SysConst_SVarUnexpected, "Unexpected variant error" + SysConst_SExternalException, "External exception %x" + SysConst_SAssertionFailed, "Assertion failed" + SysConst_SIntfCastError, "Interface not supported" + SysConst_SSafecallException, "Exception in safecall method" + SysConst_SAssertError, "%s (%s, line %d)" + SysConst_SAbstractError, "Abstract Error" + SysConst_SModuleAccessViolation, "Access violation at address %p in module '%s'. %s of address %p" + SysConst_SOSError, "System Error. Code: %d.\r\n%s" + SysConst_SUnkOSError, "A call to an OS function failed" + SysConst_SShortMonthNameJan, "Jan" + SysConst_SShortMonthNameFeb, "Feb" + SysConst_SShortMonthNameMar, "Mar" + SysConst_SShortMonthNameApr, "Apr" + SysConst_SShortMonthNameMay, "May" + SysConst_SDispatchError, "Variant method calls not supported" + SysConst_SReadAccess, "Read" + SysConst_SWriteAccess, "Write" + SysConst_SFormatTooLong, "Format string too long" + SysConst_SVarArrayCreate, "Error creating variant or safe array" + SysConst_SVarArrayBounds, "Variant or safe array index out of bounds" + SysConst_SVarArrayLocked, "Variant or safe array is locked" + SysConst_SInvalidVarCast, "Invalid variant type conversion" + SysConst_SInvalidVarOp, "Invalid variant operation" + SysConst_SInvalidVarNullOp, "Invalid NULL variant operation" + SysConst_SInvalidVarOpWithHResultWithPrefix, "Invalid variant operation (%s%.8x)\n%s" + SysConst_SVarTypeCouldNotConvert, "Could not convert variant of type (%s) into type (%s)" + SysConst_SVarTypeConvertOverflow, "Overflow while converting variant of type (%s) into type (%s)" + SysConst_SVarOverflow, "Variant overflow" + SysConst_SVarInvalid, "Invalid argument" + SysConst_SVarBadType, "Invalid variant type" + SysConst_SInvalidOp, "Invalid floating point operation" + SysConst_SZeroDivide, "Floating point division by zero" + SysConst_SOverflow, "Floating point overflow" + SysConst_SUnderflow, "Floating point underflow" + SysConst_SInvalidPointer, "Invalid pointer operation" + SysConst_SInvalidCast, "Invalid class typecast" + SysConst_SAccessViolationArg3, "Access violation at address %p. %s of address %p" + SysConst_SAccessViolationNoArg, "Access violation" + SysConst_SStackOverflow, "Stack overflow" + SysConst_SControlC, "Control-C hit" + SysConst_SPrivilege, "Privileged instruction" + SysConst_SOperationAborted, "Operation aborted" + SysConst_SException, "Exception %s in module %s at %p.\r\n%s%s\r\n" + SysConst_SExceptTitle, "Application Error" + SysConst_SInvalidFormat, "Format '%s' invalid or incompatible with argument" + SysConst_SArgumentMissing, "No argument for format '%s'" + SysConst_SInvalidInteger, "'%s' is not a valid integer value" + SysConst_SInvalidDateTime, "'%s' is not a valid date and time" + SysConst_STimeEncodeError, "Invalid argument to time encode" + SysConst_SDateEncodeError, "Invalid argument to date encode" + SysConst_SOutOfMemory, "Out of memory" + SysConst_SInOutError, "I/O error %d" + SysConst_SFileNotFound, "File not found" + SysConst_SInvalidFilename, "Invalid filename" + SysConst_STooManyOpenFiles, "Too many open files" + SysConst_SAccessDenied, "File access denied" + SysConst_SEndOfFile, "Read beyond end of file" + SysConst_SDiskFull, "Disk full" + SysConst_SInvalidInput, "Invalid numeric input" + SysConst_SDivByZero, "Division by zero" + SysConst_SRangeError, "Range check error" + SysConst_SIntOverflow, "Integer overflow" +END + diff --git a/official/2.1.6+2.1.beta1/TBX/Demo/Project1.exe b/official/2.1.6+2.1.beta1/TBX/Demo/Project1.exe new file mode 100644 index 0000000000000000000000000000000000000000..b0f97280eb5f9e29979a7333e37d503b2d852950 GIT binary patch literal 1199616 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

        kzFmw9s{za(zz^{(Pi2r zILS*4To$|1w+>K|yp6kaG}iYnV}oq;ZPG2xm6rMnDeXZsjPRa~T0eBgKu(p9=?=MG zJcr9A&1mr`4R(cin$=nORyN$x2mP?mWWHLLl)N+@e-=IQwFA1T^>y*`%!}uaz$>_! zcnH^o;q+hy5sr;FBK;;wLtHcQC-Pc7w<@7?%h@?u6$r;F@FkpQQDKdz-VIpV{_vzg z1`Zc-K&X)b#6bylKJtA%u;81b_TL=W2+2SY0o?G*S)oTSMTK}Urng8mPs1CAJX?$u zHT@a?YCKi_kWYj!6LM^0F{oys?E(O(CqR76DP(oa%{(7Q9a`^WljUb!V3izCFs}dx z;e#!Be|3T7iTWl32*cI8cNQGwOYu`yj30GAR(K#y)d?zPlCIgeRY0R&0oePP1+R{8 zCTLWB4(%=hW&3f8DM-#3-E3|;(Sq!acK`s=Fb=j&BxN>|zY7xB@3xR&0R|*IfCPJV zcA15VI^%$iOsNinOaa+36WKu<*=#{}Ochwj6mBw=v9s0ND_DklBs*#*J8UPrOp+Z{ z=OfwnRAeYcP$+^E>OedRjjo2J)}I#(apBP<1|#d3KsO6?%W9kvwYG#nv09;(%7KGW zPck*0gsHBC;UX&lIs@jyZ!Ag%veNg^&%?xD*>Ky%ARn;|AoNRG9yas}adTgIDy{G1 zOFGy4F1V%!)2;q_`dw(UT>FmNfCY;en6Sh%^vdCqj{7>fV!U7D;SilLZ@#>HW{sc8 zOO^^O$J|s{_g`|yay~tRogo=ZaW)#7(k&tkWj4P8p~zi)2tc7swr_&FhVonl1EFU0Ln-rDX5MD3SuO{-Yg4VtrpPc(qqKe;3qy1 zn*e!jpy>kCRN6$KDgkOTfo9o2Lj~wqDGRC|79dcXU|MJcxdCMN*9p{>YjO63S_ATo>7)M-`Xy9#7^gQip2M2I9Jcw(x@q8HGmmhh5{d=O`SXp~qA~eO{%I#3 zfj%aXu%=9?(-?JyP5EjBkX#&FgMD`TW-`5f7QYj`71Um^GhDDMT(BoxP!TTJ7cM9Z z7gU7{4$2!&N43)H$Cp?HgW0Sj_GLJNP#)qdD5C(O3PFa`3(82eqJs&y%p;R@co`^P z-rq*}HgIfpwGLm0T_y!1*0Je@nnMBWeJDMi2TOvIjO-}tGo3)2wOHjOJ0N$s+E+KW z4ZRY}c>AIQsFzimHPg8uIlB97JrnX>>SEZbDlVi72gFOx~ z?8mFK2AGT6LaoGwf_z`VRUZ2RS$NguScy?@3~w@#{BR`zrB0UZKC1{-l41-BLO2OE zS(Q_U2v{5zJ!rjL@*HO_W-SQnCYMq#+=k;1XoaoDx@mgDk7!qvyWDjt3cVbZ3w=D* z`6&7NL3I;2k1WMoOPecszsIgOyXQ*WzQQ(UMY!cyQ?>G|WIx9jI zxCg*9SJ_WG=Uk?%r%arAF?*g8GbT8-8CQ1RK?cVnlolL72+r!dliMr*uucxfraI+eA3=N;40)E zf*pRVgzuTmodtCTK9UIqh(4AFdMWDCHDZ%bH9}`mU5Z27c8JY2>YUIPQK5=y&N_3y z{9E9|MyDq^JPoyIofyqo-JT!yw4X7$DLz7Bh0NVfX5 z0Ax}})_FkA8Gg?+596iY`&jRn!+HPlE$_>)EMT>tKv^xNN+{p%Bd4kOaM8ZHE6P}l zJCa+VhfF^5#v;;f6%3SBG2*>T;=1!mgb?N-E|2Y3yF=j4uz%JA^=W;zJD6kjW%~GA zby=%^v8>;=B3g|GVp;F(YnQc}mq_kGcGB!axCS?E)h3Lk1>3JdLnG?eB!yy$t3Jg~ zfV`0QLGi4#$gcy?J*-ak-i^Sj+Q(NXh!9ripS|L%vquES0jE`mbs@Tyy50Bkn95v= zqf+Mj`+{J?h z>SA~CCz2bo{T7afD-qnf>)Zi8joWFveju0|-oo3asK`V#;6Y43S-0R^==d<$7dQkl z5SzPl)(FlBARmCd>PIiyF)zCNEIq+A_TcOtRpZg-npMo7qOK9hT0q8aCnNk42`@vq z?=aetOP;;;aFjRUr_41FefQit&achtAGc$jbCnI*Ss;(9 zwuJ0W$PEHnZ$fUdAscWDk<%4zLvHUwNL}|MCgfu_!J|&QB9z9epHGyk)Ptm}a32?0d z^PZ8>fi0xB9e(_phk)ERo~nU=I+tZQB*4=Jn2n@Gi`PuxgS)3`;93DbD8T&$nC+x@ zH?|QNWv<#iT?20y;3@%*jb|~~0D9H1+yt)JeWM0mA;1*^Ox9wH>i1OBtZw;|j>hk*qbY%7!5@&O+TFV9t3Kz9=;%M~fu zs)A4)fqGNe^OzNRvqVAz6*87q_@00e>{qEEL}SCVCG3Grreg+6%qCSXrxe)bf=s7l zx*;aE^zzu!3~WQGWgju+#xPz2GvlLQ66XfBr-(5dFpuCJEjf8BB~ws+u8hSfl%=4R z8(ssy)4{*#2*&>Yi&bbCoH_W;Guv$Nb!_`8^navaom$A#7SB4gKoD1~+o~D#=LI94 z;_@<#1LaL;e6b!HGR~)~iW1~EHgvLW;4h7{g#b()2Y-HPKb%!z!@5!L4_e_PxI#+x zs%yrwU&R@M(}wP$9QAx35YNu&vInx{^n+XI_Wb_5aHwGUS*W4fgNd9%H21pHU*M^1 z_$Cc=;Rg^A>{AfLp-E&vclbc<=002Yl7)B*eW1ksZ}uN3ZCrKbnRo^X9?DFEhUqGT~&=+ww&V!^Ke6*yOn zJxvc}E6o%hJfD5*3j(bus3dTUCkx%7DzGB(sz;#qs+G&n=VQK6uWu!WX{3aOfnwz+ z(8ZskW&$WXbkgN62_R>?>z|P#F+0r%pXtutZ&B;jt;!{mY6Wk6KMqbAWM~=ZCi4fw3NxuFVH&`c*<2Xn* zHZxAO1Ho}?)J0r-$Fj=!4@U&8a!J}Xc9W8d|C?NL1v*#c5+`_&$R(Y{0lDONh-w%P zB5jpRf(X*G!wS0G#Y-eP@Tm69?pySp+|V#%YyHdLu~V z?rytM3HCI=$hg1rpyIY%a?|C%D3{a%$g6J61$Q5aR*013qRqT}N5Wk`0Y7E4@S|=G zf|4Xk<>LTC%N8pI9@m>=UV++MY$Z~I1)fprBEpM=u}R>$@nFJlv*8m3o>A&Jj$5^y zq2Wii!tb)--(17;FiKStUZjl*!9Tne{*Vp-h`=*S{f_V=a~u(P+(@#@qipzP0?#Nl zhwvhKfXG2O_PqG}9JX8^u*Ngz#Z?m1QTS)vyf{ySPmJNvi$rjS9NT@3o{~Q~8?1r<+I_8te@fsPBJe2!-zugA%_M!8Bugg=N)m=hl6SM2MXRuq zXC~>*B%^eaJW0Y3N%E*9X%$(zn@Q4{WVBAwU6L?Fk}Q`bt%A$vpNU8m>B%J7I?3m$ ztUE&_NtPrLi3H*`<_;!Fj}s#<0DxCL39^-~AU@Yw?fD|1bTVa%mC4ta#M~RQ!Qsb> zOual&Ukfx*{{T6H}d*Y8@awz>kf4QG^TF>T?9~E8^V2_1l&b11E(P{INXV4 z0%ia!Fk2v#uptvTKUnmI1D703@V?A0>#VCijqc*3sDl-LHqr33Fkj&FWNQQzg?f~@ zP=9`t&2NhNMdL^~pC@H}H+&!& z31&Yg#v;OH3dx^`w&qpf1AH2HY~-A-z;8SiGrwCMW5OaPbA zue%;+Si0}6Tt5AnweJ`%At6|SwG!AVTtcd_0-uw>bHXJg5w!Jxppjh}tx48N5*n7V zkgPxmNEUC`Vk|kbuXmSJKxT+U@XSwacUwJhuIa#m$`JKOw79)qy&qzLSEY{zTWeK+ z!g_UugeN1s;UbqM=RWSFoEtCVUN2xDLA5cmnFrnKUaEzZ(CLkAR``HimoY3tPo(4+ ze#?7;0Mx85grr|jC^BJ9SFha#kvDX*O<+sI6Hc&@8~z1RdmCIP!I_sV?q`T80ynJv zS@aTwn3C|&k+vj!C!BVo2>`LB;3ZesQgFi%M5y-;qv$i!LU$*h3e4hsJntIp#5et>$Ta2yjf=a&isLlJf-{cpo8sKmJz+R;qkc9_Z!?^D`6&SH=nmh^M*&=PQAka67Y~FVN~iAPOX)DxeS5&&VBjZ- zV?lOkli|bqhuWdCFB=64s`^fCn1i59DhL<#?tdlR5VIr>tDYt}`oD}Hckw~|HVj8} z>jLO$1nC9PUu{<@!B|$zMV4yqZCDH9KErU*-JPUFC4+6?j0q6!~fgxbuHc3x~L)vgBFRFfrL2b^1l1E7L=z=`rr$UMHNz{*5gD?Z? zMVK0DTpT|g`DYpDaV~0{X68K{@FP5F{(j~hwCf6c4*Cwx)6(`f)AlS(l;_2XS$)f}E_!%9{lBjRdyP$(- z5B-mHFc9$Zbnw^^n-0E&^S{yobvex)y!~*VK?nKhS(^^dK8tj4Q^L>bK)At`o?oVd zz8Goo+yGV%G&kU}j>QdJa5wnz)5;CL;ed4)e}Rv1gO9{PZZH9Gr*nft5(jR;_Y+NS z@FbiK7ZRm?Ip9wS(%fK^?OIPTo?ZWp8@xM|RB-z+v|tO(IK7-=^`IX5dnJB6;_;@= z?hd-UM<%knThvw?c)pD74FY^VfPdEAzmg~?qR`z3vGn{OhW#kO$9MN$oXMJ9$onJz zwYwv&uy4Y7Mt5hT3%L#FY|EbhRqP}W{xRY?;4PiO!@r=&^CC(_Q9|njhN^G}1$u*1 zPCGd_KwVz-5Fz95UvB{OnS!NzAE?Qk27i;le~IYO0B3BX3yar@DaI5R@32fvHrmJ) zmeQqIyF+h<%nW!_GRC+?w_dbO+&btd ziChRhDx=Ge)GUXZ47SZVZpK)Ps#X7&A+}6_*aDLdW&H;8d!%d=PCubZQZ^YJ6S7a) z42&2ko=_ocDUvEL#0)I`%Gc48EuQA`9rRo&o@jXmJ$=Q~Qhu18p722MyDW4vVf6sB zJNJW-Qv(TDvm~zW9v7A#NXc%*Yf)l?mUraYA`X9htG?{yoQLYXr?qVipy1C>GaPV$@$qRNKxcqX{{uuo~H^A_l^ zv*W@F@+V)Pr=M}r7 ze%rSVxButhI9<~3FmL~Fvu^+Iux|fv)3^VxvLLtFxBqvXdHa7JaG!Sj|1qyhU^?se z{~jE6nEGoXXKD4c&^U_ql}d$2%pmsBB^E$gFX?4w$u z4CnUfAn@OTExd(P;q_5RQ6jzt9eC9Q{5FIosf6axe<%F70|fa8CPgH;KZ9>Yuw^76 zN!^1zjBT`-Ff`#2ez;{Ru-_oZ0*O(J-=@CbWs**a(p`L>;FcTEard83Ny@*VlsZso z&RShC^*Nueu@wV@phx z-8jJ_t-|EeGSIlUbRU1Up~)`0;Kmh%y`9mj)oL|%wrpyC200RaAT=IyMn95uUKC{g zvB{6kO`~j-N;2Pq#xj};)LhzuG0k$cC#EwEbG)bxb8OItIo4^z94~6a92>M@j&<5F zN0~QLlFHhtSD`wFJ#n}*O49HvoY}O{@i}@vTrvxxu+H@;8dDq5kaMy3^>6<|a?;+=~BoYyp@JJW1OF?Q}08DMm( z@?DBA%y#G+PEk#$Vn`~N82TG)iaUjq0TYX`YVMK?SV7MQ%>QOW?0-yAuOO90oiyR` z7{Z=G7@P;;{41O^;jzbz`Xl@?&z^ks<0Z%)C+F%TIv^5wj?#ojJ*GjJ@Hhe!9(6F` zaZvp@k|sPPc#6s+Vk&G{fO+*W;h}+5Z9L>f8Zr(iL5UMvM32Tp{?J!&o&hOHYt^cF z$kz#}Mxnfg2~*UQXa#NN0QyF7M?9Onk;oC0e|MthOq}DZCvaH63Y;^ia8jb zstnJ*49^x*<~wF%5JYGA+! zu)m85>`$o?W%6FAN+YajFkKqlsQLD3a7znx$AF4!-*lFj^N+6uoXxz^S`EF$?PTq~ zJ@_f?R!X;5{pF(5k_P=}`wrJ0bg0jJ0bI6NIu*KADG1H0-m=1k7F89!+$%vD)WdsY z=(rZ(`@Xrd%yi2CapiT)^w`k!7JjV~xs zolcLU0<>4nlc*DD`9ctt+-LUdnrqdgM2lQQ^=rI7ZV|LfIDIAUbCULF;!lc1{t1z1 zh(E`BvvPU(wTQSM65C?aVTqo?vN~F2rWYhM3!xSbpA#SbutZ-diL6(Z<7?sic`a;l zY>uS;4jo4RqN~U|B+@)%B(e^X*7#z+cJ!qZO&fNR$R2i+$@l;A4T**!%GF}_t>C*K zm}*Lz5dms+)RZKX+u>g%vWv-Gx|e;DoFVEZi1FbPuG%7!3}oVK8@F`#s_htCkh@rZ z`>4-ae0o)h#CAn&B(jrPw9#24Nfr!IxBe`Pgfp_p5+rY;M}H}cUJ|-hcU; zm1T%>{VZ?S8F_zvAuH?u4|!Kf>=eW{whf+i;a!aHP4@GI#H>OL3@)CiQ;&QFsW)^g zVf95)2(upo33&E0akXYTIxHPwus`8TIgO5P5_DgpGtD)`W!M>;jxmuSx3j#e5IKQ} z)ud-B1tzQa@NKA}UK4L`dDQ{562otfi`nA2=E+nIec3IPhJ2ck;V9B6FAg9f1W> z^!8*Xu$J^&w2%7f7#C*0L8SXxPg=NSE=IQDNmK8lF79WcOu|_&_O$+Gq-+nUQ^-FQ zP3TdP^$3@9=1zmVIG07yFwzHKpMH%%Bwm`)x796=Eb)3%7rV~J3Eh+9)mn(DA zn{rrQ^FC47v(dU(x6!Lc^Z?J66~$I^7E>I_Yh>pzL_Kl*WGo9yiY;-`0}vf4VMuxE z9PDh~4;VxI>hA9_5kW5+_H$S-&!!QQ|LQhj`Rc4T5tk{TeEbEoVu-rd%xYs?bS0uA zB@EG7T_jo2uTt%-K0s@?W(C{Vo8oiZKy;>L@+*9qW; z(@^M`ff92MPzV$A1Tm^>q2($$cb3S_OqN!dYRn9V8k65R36qp>Ir5FCS<+B-uPMR_ zY@zQ%P^4E~7@t+EM0h|V(~w&vvWlH#UJxA()gx4$o$@gHM+E5BR2wAK`50DlGrFDO zVu^Jy7KMZbFHexi7cPod_AJA3f}6AivIcQ$WIu^qjmkzuGu*nLy7P0EY9&i`mR%|v z<@cZ&-2X*g;!0)5)=6w3V;$-#c)$_3OZ)0A7FW|7&@zg9bhY?{pN(Sf68D$v8KTyI zjYf$?md3@pC6*y-;WyT(x%!+q{`V%bG6}dGb%Xu0qhNVoqJ40wV+h3-C@fN4@uOY0kMwPk?! zv7ZqUnkhdI1yy0p`jriDeT0l~uYPOm?U*G?=Pd@nY4&e%7ANoCGaSt*>%8mX-pgJ6 zQof?OJ6S!u8vDob0k^J!(QSP;%J(aA76U^-O)n6H3}D$@ivjq8aH_VcG?(xbGv|W`(J0C7SW61kMGpS~4 zJ^Rkb7)8(#9`+?!il<3^u$^LSle&ZfU{>cKr{FcvLQ_k#aA=!G*<-hXM@`PRu&0#o zK(@OQROf49z6wSZ=Ad!xCZC8nvz*k|RX2Aa@0nGvn;b?cA3_E;^qqj_886On@J7q$ z?42tJ+NjT%9h1go=X!F63?7g(0jHsIo|&^?_QEB%!HryF7vh^ed-38W{`BR(C3mFz zee=>a!006_)9(;VCj$VJKjj4<29;3_&BQM7t50C{-y|t+>LvJZ6yGmz30|Yp^2Jiu z6;CGMB5JplxQIIcVKii2_~xYQYYe?ZtX69366#u{Is6G8SwQF z{*TZob4)yh4;2Tw)v=C?$8i%7wYBKK}(Sl#p%4C^j0?UV% z1-}K4{3i>3ccBsN^Ug0mB>@cmfCOOBf}d8Hie&M8+9WEr+&}G>!x+e&CqtnQVdhZC zKRb@X{)KQeX=TH^{|0IrSCCmZ8OfJ5&{wi%BgQig>+eou_5J=f`!PpVoVR zSm!yl-V^1suAUaY%)z&5rV@TaZ&x_2w-F6y`qyK97Pw-__vO2U#-78KCC6iUvgQqS zMS7_0%f`ev)cC+x;lwea1Fp5Fc)cp{ZgmoqB^WuqUAeG%+B<8=_eNT8_cLjOhrF}) zW1bEfX`6{}|JTVw-Z6e0lNv-5NAt@PHvmt=ocRN~>Cx zimOJnjA`O7%Y4>scx-AaxI0WniSBUu1|LKX34B`z!@e%P<%dv30l`Zzs!DK05eKNK zdK%tPQ%n`v0cVP`ns)i?lke^ZUV0Gf!d0 z1vi)3j=kS zhT1Y=C9*{e&hKKrSE_~J<;l{M2M&Oz}zD~D8ruj%?Kw#T4H$16UEQ@Q#ZVF z;fAS^Ni@g$jU!T3fjP3u>)&Z_{bT2yE>j%dQ8sX#p%S`y*WsY5DY ztzyDG-LgW_k?rMRHA8B0~w!Xxc(F#ofb~}lW{;^MB;qT@wP7S6bD=# z4$DI$_?$*wvQdzN(Z=SaNx>6gLixt$2 zYUAMg-`8T4^eTwyQUBH#`#(-xf4_v~oict{`?>IfgKvH9jJ1Eqib#u(X#b9Jz$oZ8 zX?;Q3q%l)aph?nPog+E-bX%Wy3Zq?(WS6tO;`PxWpG?Kzeh!ld-bfk`y{R^#kqcKtN+S&0%i}9ATjGM4?dB(l^nf{Qk2WZ;*LvAsRKd*HRhKomym} z(<#8h-5d4*Qx>lM)OecV(nvRyRIEM=-I3vG&TYh+yBTWv1r_L^rb&gon*b&n#0PRw z|70)~_?NE3#r;*cjKMtvjU^g!;iS7M;!0$=2+e_cga+=lQlSfNoXXN1$Dho#J0!Z z#(epu9p6jho77kPI8Se2WRn)uFh0yTS7?ts$QFb23TnZ{3W!|ksEJxygUcYeKVLYR z`x|OzTkKEEJFHNZ)7vHm*cL!}Xr!q{1*rNFDr#}y!6s@}_N8Bx<+MDowrVLtpne$f zYz5AIl>&q)`AX8!qygv2{7Q2L+ ztjk#-iSdM2f$u51oKT2>HL7-i@TEHrNwy3@$?&%g*_$|;TyY{!Ig(4dLZGZ{Xg-X7 zX??D@PGXVo1c`lHVo_wvR$Qp+5cq&^(^3ffcRGc_+3N0M3YaWiF=Djk9^W=NSzEO< zk$}yZ8|e7tQRJ*LKjJqO?Cj;Y5BZmSP{%!xDeM+=lS!NEMDMWvTWSq`AbGQOwX8Q zOBQJ}hsaOnGukP_5f4^jjzC+rU>A4a;^hBy|HW!33cJ1Rb%@L8=u$dx|M)DnGqh6q zbF8tSI)Sb^6UYgm0`;Vx!|^N|mX=ua9Wzn9MzmGHR>~jHJ=%EtK{(0oV92bX+4vUE z+Vl1iH((^9CF8*M!*GQ%>Bm#5HA!@Uh7iOE38I5RrHsSt;n=GW)z|M=&h3;lN*V1f zrPFI>O?|@chY(!KA8#p3;Z<8fOJH#9>MxdCU0t2D2a)Li?Yrn*J3`OYcfjzaOeLXPUxX)W!A%(0I3~= zT+sn3STq^6xDPCnyh;MKmu>)6sY=*o|M}v8k~`j(=2T{_7Z?=EWE#hcu11$laOh~G z0|Q0ax1OWsO5s6495rK2_^1jYm@9_yI{Ft@3>HsYTNMP?HN_j!x-kULnbyGEOxOv* z&7V9)jd5Vrnixj7)eM_RIwkiYA;|eklJ^S`BWp@FB7}TPhElj>6TCuv;gT(IVu~P# zm$~9ka3oV)DA@*=aRtYo`yW?uAcmjbfgq^stEZvuv7HNxAukvBZoGp7ZqVHDg`8QK zled&{UQOQM_IB|)pulAb*cMdRJ`D_PL}Iww#vp89J6AE1c>7kks*|?iH@P~g6dz|z zQZYW{8KSybz7%P}&ZYfplGqi{k#&?x|3qIPCUE5)AOfd)r%43dY?peCu53IBn}Ro! zi-AGCPQjy;s3ECrCmKP4+282G(CbRxT-JYdq@*0xTc2#qjIL`BA!L0nPFXGIDa(mx zP_GNTS5UTzh*t<=wxSxp2X)>Fmmy0tS&ONA+JF=#x*ww-YmKH;%|Ud;Q|5)Lk<+mo zM^-JW3Wbjp;NE46`so`uJ!NWd-%}XBQtX1V9n3a{@lKglwE@=n{Jww6_Dcqz!EX=G zQAjHFR<9$tvSHC{7*DN6@@F$zx>mgkH4W&$GX6_*yg}*#cHODEFZ)}v z?#<1a6z}&=nCyx7kMm5-q2FAi$Xt6DwyESb_uF2g2n<=Qz}Ii3#oSr_w^2!kI$A?T z?0RtWPj;Oe&uKW0jbPOsTMEj9pT=IQBR+PWhafSL4MHxJ4R;>`MC%)}!AzM#aG^rj zyE@#0EjO8X)XQ{g?)nU!GBcXac00_C?VP zhmBW%qwYO?G6q0Ea8Jaj-Q`qkaM9J=AKAMCjY5ej&R+e@RP4W%e7~}-G4iR2Q}6sC zJTEnz*Q_@HSdmoZ03l5!%ePrM_{~ch1$A-rcFQ9lvi=3WNo%auto9stSk_Ua+;#C( zamA4!09OEu01Oq?IRc|1B`f36U<);<$^;F=Z8Q&@iADf_4L~4Qzk}4m3(1#aRgU|c zxUX$qLk@KC9c3xzw+6Y3{|S2ZHL*B+1oL)u1Ox|PixqIA1RU}u2Th1^5^#|3gTulg z5{HTo!G#?dxDLYgE4Xmmoin)k^k%G}7Hg?Zp5wuy;{eD3fYrEvJiz?+S>6reEn{0B zSk2C0TT@P}upkNrVh_7(`6{csgaB5h;W^<{qcff{q_x`Np-R`pKvSqF+2J3`smV4x zyXs;ZosIa>qFk0Fi``iqp3rZm&7K&5sjWS&Y1|unp-&~NJ$U~&`|@~QGHO8 z$mU#T1WxsL%oDI31)rJ&gyE86iD*^@;#()aW8sn=;?VVnd;(vnsKT+LW2A&c5H8t? zU$HbGE)YVvDacm^+^ey?M^Oqcy*yf_Kp=Cgphp})S4`%>2-Si2HKSkWUXia z7}wkPqo=H%SWwG;gjBB{+!@zDtv#piL3m|DI#%qBuh<0BC@A)+z1ZLZQL88MC8y`= zxE>2m?3IE)eS%Z_%7#xdH#NRlHjU+Y7ZPCOIc3FkzeabvvR!oVhucP;EbOdG%>Yuo z|G?x;cI0$K!ipDKro1CNV;E*}`<=1N#M4~Pvs-l@Je)Q-d+1w#m(~$s0TJ$7?>TNf zKN4sRzKa(#9?Ib_?5L$6E&ip->zdkq#xKVu&#>~ZA2WICs7am~*$WrUTkKyxBM)}n z5YBkqqxt1{(+(WB{BWe^osHKA7R_F|z*tp@|{v$BYlW&b_789d$Az zuUQR8wB7X2BLU^BzhIF8`?; zkMIEmJYabQ?MK|lQGNDBMab%lP^J$H4IGaED{gom**!s@vi_=)EsJ#Z)t;m6OMe9* zYztL;jyXyL;%=(O9x>iH(X~Acglf^noJFu<+Jb`)^~tMj#uoK!i|1Z`@!YG^c`lA) zJ~<=C23>d1&jqdd<*QDT)s7Poo&cp5B}=co7*LDGCE?u%v?X_W~l<>a9a`LXX! zNauJD7jb-(Ty_-7DgLNYAPdO!e+R)*wtp0ag#ES;&~Q%m0I3SItlEj5GS54$wm!$) zI_R>9E$JOulQn$!Z*v@SZl$C6O3QG>%#^bM>x~^0-yBPIC074&pQ2K|ioI^xxa3&+ z6HdL&u`~=D)(y|1tlVj+R0k(xCI-<~D(WwRocTmfSDXoejLVyVQw>0;1@Q1yOS$7- zcz=!bjUDJsqc;ezZ#Z1BK#R|huP?}-4H6Rd?XW|3*{&nDEBQXAi-%%j%?p4R?<*)l zhX=Hvr0h^#(X2Loe2BvFIj%O0DZx|<{Z~wGww6WfT5|x_p8%4va2CD`7J+eJzI5?z zW*8;K*-Mu$Trg)gneXLG=J@CN`!Dw|n>TwAq9h%Kln(9s_s_g#<($G5i&x%$t8c~p z+gIM@n?Lu~6?ZM1Tj-m=qC-18P3*_4)qnDxOXraiby`XrBTTn77D=}q5teTLTReNw zyv$y$@Ni1L7vgJUT{e61^7-?Y_4h2Evjh+7+;(;Pt+SWUyK<-rn;r+7vtaqsCCeAE zK3AvD_WNhg@hw8hSPa373v71Y^A{|fXXOuGZPJ$BXd-JEw9XVGCxqIL100k+jz!0#85Gwz6RbAsS7tD(9y15(0U_|IIp_SsCD5*g{t!`SwjH0GSjzQwgO*?;hHzn(Vu8cHl?d?_^G93+;5g+@kSf494HfmqEd`om z2^FQo^%uDKtmgH)?CqrNwQ3^7SDsHDR9jIC+_a_juAM-pwnEs1u{4}xR{e;SvIU_| z{sa!^$E;!pm+u2GDd3Qf8w$pK2tl#HQD40j%6y}xLhx1C37KY#q_OU0LGo{)c^ba| zVit4GJ~r__^%v~uu$X()cPOxtw+GvA<;Pge??5_6LD^|&M+sW}0^=_g^+GfLL9~gE zpGdQPw2r4+acE!>|!PY$+92$QQ88RV+aAg`ghOX ze~fsxsZ;IA(6rGvA_`xG?`hS`V2!w?1^qvQ`&(S;C;Y_h|nOUNKP%q#D{?n%L8}^0YuH+8UGZF zm5qpr1$vrfvO%)~jsc@!16pL=kEF8oC()Mc*xq{V>^I?ao0;+T$>dr z7f1$gGa|3rnT|Xg&$}ACH*^I{7`(C&Xbk^ASZ^k2So;p_#A<(sa4#3I7*^iZ zIIewDA++_gJDrmOgX`bu#9L&-WA8uxT7}#bYXEAaG~FTISCi)gPMa2b$}fe_1K;` zF7yCe2gOjYV!>P4&;{$~#wPW9)W*W%I|c|o2gjkKc3=ri>&@c%13ag*rczAdHfvfb z%jE;Rf$~MNrXr}e9WiFsTYQOh^gr!IajaQ1r}7V5=P$SKpZmaxqGa_F&e^D9s&(Q) zk0i(D@XTmv%{9?PXI~J9iJevPF3i z+&GOI$EJwkkcg=2$B1jG?{3bupFhPE&8jmZ!U2#T_9Q-BbPNN6PW9oUqaXZG*C8GG ztLBGr%GDKccC&UxFk4c@+dNDRl?{J*5=~`kr?YVmj>b9w8d)UcVyVW!x#9HZ$Skn( z^Om}JtMz42lTn-T)@b8Z9neiSE?dgCGUF2vnW2WrjULkqlpz_nh<*k1Uzlf;Sd*&+ zTJja5Cv)xqMrE%rj3Sm{b@fk1d5tH4Uh4LW7=}UJ|bl)+4d&RKG;`Z!2UUfh!pFGqw+ZH1~r(L6flF zZ)~<29CmyXft6Kxo5v|o9A3RlUJgUh`kZdDe*OL3TtD?|x2%)vhko6crMP~?ZyVRi ze!=BE&|A=ZTtB&cO#PXM71(sBQGWoM#*El7pF$?GAZ&3z14MdszviI8)@;=1#_5Hs z;WX-ZcDvRwkww58o?+9yjUyAg>7?##q>J$fIx=0_%L!7=){u;QIy5D#CX41S18-icew30>vaO*%tW>QCNF{g*TP^kcbTTl5H&M z1}FnT!w{VhH6#b_J@Y?KD96z^2v?uHimP#PpNZ;0lhePxzwFlK-fg^CAtDf&HySWt5(IBTR2%zeo=S8Q`xW|6LaJH zMx}Y{MvsZ^h?low{7Ysm_sv_la0a*4XFxVtG<)&fpN|`4ATkl3m+>#TT4;+h%eAIZ zlnFOs*xZ+lUNZMi1klfU>f%ArNqG_m7gS_0R^$N&+2IFC0X|1f7T9dgEx8@g{ohl5emO zaeVP2v~7V6M5Mjwa}897Nd3Kpu=?Ye{OY}n=WJfV3I=s! zD|@$Q4BuKo8z!seEqwm+R_52$iWb+XGR1zhtg=qN9_%Amk-6$mv6@lXWQA(B+Jg}# zQvVG`HdssKinn!6n3w1|HohI)%Io&Qtqcfm-GN^`)mglY-yY6@)1j7`J$gU%JNn40 zHDF%!OMAfl$CGW5ETsLHpNhVm4h}+MC!~Bdkd1d$UodJ&h_+^edm{&;*!rmS^*6Te zWtw^@&D0#IuO!m@nd$9-uALB+jX+E1jgu@7ER{BN<`UsZF6fEP0Iun^>gv`O0_I?5 zi!B{(UBH7XG7Sy<8EIg3?+v@6n~@jbs{B%xT?K~Un2Npv88J-|hz4{cM%^=tt22r# zQeQ-@_s-l$VH=-!#USr(>tgg1%Kxi;wfO)WHb;r$zp#pO*oV~};=(J?@v0o$wZom0 zQY)yLK}Q&LE`rohtR6s>8B0~KmD<>H zN2!AbMKC6+|AU53eH}}uZfxzfsCp~IpJBtX--DGqW_*8K^mPpVE#?gyic3B6#QOX4DXaeQ)?m>i zsPw?;sIM@57=<0%vl3{Oz(-5HU#}ZS+VB{yT7AN~J^5h^8zG!}{#|%YTJbKQl)`j!j%Qz%9~ctMa^Z;GALU z2umNBZfaEL&87^%+jt?XfMrzji|`9haNo+@rxhTwX!J>VkCa zP+(Evk|mcE#?09{J3;o$>GC%_tbz_FD%?Izcbj(Q{NYbPw;c{lVMz`X-*YjQ?8ur; zDMe9qMXnmoK~M(Im70a2>bp4ZH8-TN4Ka|{U7m>D{@oAusrK#O&T9M@hAm8y3vp!~zEmvbIreiT(AE}o{c(_)Fk^;$x><*8JM`nD>y7uRghSpr zLhH!WWoZ?eDPE@F&5yH0U}G2C+f* za4IAJ4J85i^rz7OcleDCoBeD{69%*^?2@YrFteIt)HQUjkTh7edDL)#dh8d4u*%WVNEw1J=GLE?t`LI6%4_)UOXLb0 zxzvwkKJ|ZS3=H3DhpPwBAu;GSJLvg1JlCzwe0qDqWC1n5wh+|q0*tV8F0Nx3D<9XE z+M@Z?x4DMU5o+r^6Ia6lcNlw@1Ns|kiWJMGfOqQne}~C4HhyuI`ZZS1{_fr zF+e@>XC&N{=Yy{jz&fJ`rBMyxI;*QzoiCxaJc;^y$Qo|EsD~M3Cz664NVP_29#XUZ z9kbN43U$Ms%H>xx!5TFZk&$}mQ%De(tjykMJAl-HWYOM0s!H`1=qi;Y(A^3Bu?_v2 zkgQaX3@6D-^+hvD{sV(s49U+lkX~H47vp@S{!K!dYk82{>1MNFmHEAwim3{Vuj=HZE4EQ`T;k7q#t|V}{N|VHa?l#zg{AhmDlMtO@Z^uS8s!51C zva(51`q1w{N_8Vr!O-8{|M=)r1t}7~+24Xh)Duw8?PBZ-81zuexr;rOsTa+HCsJRE zVYT5inN)#e$G#l>h~UVrtk|7=iVtV*VIKtS!*YnE07I#9P;6BJ+OVvjc~TLpKCaQ4 zm~bD-ctE5Ui-R+XvU<1hq@kuHR7o|hT*pG+_8Y(xfh_Qnrr??VG< z#;h$3!opFvT6Lz1j8k?M^FUv8LbvF87cFW&#bm>P4?4EYmV zGU+Hu$j!Y~t;jnTEf2a{9jFw}Q$ocIbE_ddkP!)OrLUZk>Rco$^&tAWUXPRmg1vrg zXE~xaAYHY;7|49G?0Q)Tr9H_cBT_LKfXWFn(P5s^aMQL!wfYvoTtZ_AfMj0q4uHnp zvEp;Pyksnv<5oa%Re;h6ES{iR#|4w8&CF446Yo6dZSpwuZA23p@ftrL9@1E*cK_ky@aRIegD zQa|ts@b(YQ6!%V~5OMF@nAW1c0)+L}1;epR#d)YI1!*gs!!P3496Ii?7{^Jr(qm7d zzd>JKE5|&IH@WVTf#J$#r5nKQ4q&D*vtt{WG2fs7QQN*y3LcnqKP~hI*2}uO<-Y_M z9ULl62UZG`rIkA6n?ENc^MuPgn8r>w-p4IEx^TP10nx+b)9_54=2ozpD-D4Daz?2u zAbZjPOnj(m(3kX)-s)nmhnqCS?VdSZpMj~Fi26Vzmek$Ik*TeaM%(#77S(T`wTcSO z5n|-9v)b{%Jd{gA!h!8lJXAgvszY^x=wLNiE=OwZZWQ`VV{#+aq$-e8=YeI8^=nWV zxUN1~PjQV%^j*0qeFZlm5OpU`b96VPLF*}C1+6cjmvWDbzefi6!9 zi8lE>hQmnxsmEAFXe%NzugA;$lR3!1AIe{-sl|ZBsg0w^gIXK`KM|t`lTlA0;^qkJ zDWdRxns!G=tia$D9pT{+6;Vs;AzmEo2*xQqUMrNf3Fk2$Au-<3&#x{}AO%Y~5%q73 zux;`PEEe%Yzqg85r1qFkkOldG z{IJanH-_`5y5rN+Tsgg1w>=?$6r%oV2nk5D2Ty-QVWJa{R5XLG`ZYO}h@Ku*Q`p;JvlDv?l9S}3i!gi}A4`9Xhi=rN z0FTck7jcRMKh^^8PK6y3lwRq)U!oQ_?MLRi(z|U3ym!HCWT&AsUEUi9gkcsZ$*opY z;nv)SMr`ZiMA=eEh$jI*q2l+zF=pRK-D=(I?8uUfCL(+$aDrk0ySg|Gh=fq_9(+Pu z30_W2bq_?xFhiMbwdfxVkP;}~kAP~iy50qK8!V<3pz7ip{KDT7l(z?}i_sU6@;-d< zEbVT5N{5#s17WN%YFpFtoatOOz6Al}<1tZr4fU8@%v;<)z#{7)mc=71Vp$Fi$-1w) z9|dWy&Ti!bu=;%?A?OVLPdsyGp?QuMp6NGve&kzJ%AA>@t(2J3U96a+*e25!Sy?Br zeu0>3F;ki#rBoz-8b#Hmv_FL#)H@f_q+60Yfev&I_9)ScNK;zT zT41Y%@bO-CZ=Bu!2r8O!u77>I=pZkf*){^yBGBe@8A8a{dl=y&^)B)y4H{L6)+~2d z>^3M1WNjBn7!Q$?Gcm{m*C%;M|A_8cQl7VRa?o`&9bnu+Unq`u>S;K#a4(kRzS zn)FRq_QK2dS!FfsL(h76)RqHC6g$@5*`6)%&r}8jT7nyzVXz?w3w~O8`|conX@!&U z>T`7TSZT#TSH7DR27ym*jdDR8mt-*HvEFeXt66W4+Ih$aG>0!)MQDDU8M&?m1>3e@ zgvz@;uV7W)3hQQ)*!sXx?c2u{#?1q~$U~#ZL!*|5^cSo=LSmO8 z87xF|Nf~`BMSH-E7_y~W@WcqkhKF;8;5~TDRAozO&1Dna;Serj+z=r@7!(Sa4 zinIAs^u7quwD~)T5b}2y=;8jy1OGLD7)GNbGNB7ZM+~Rp5m9&ImZpsNde7S&zYAZq zxQ@{#Kl`I-lQ^q`;rrchPP04kosa!KOWk~3063q@!5X5??K%*{j7dwvam*)i|C221 z9lRL*%uIaQOLpQ|_bd0qTd^HKe3;v>%J1W<3KRMEL+O!{i#MV4A)xN^!)Jm%AfQ+> z#QSW3MTxn~o6ZEeT|lq_iFIX?6I(=3n1GTGPDOd^#cr=Brc&`?o;Y2{rLL2?vZ=o1BO#=y)wkwHMgF0qn7KCPhI<6=g4K(0TyS;46kK|k?k&Jg29c?& z5I1kam}xn30WilkJ$u?j_l$`*O_?|Su0n6#%6Zwi!BDVpg^fQ?zk|%96*F-;5B74F z0AktFWnuzRX!6WsY^dG04NRB#a}aO!%lQ^x41+#6Q`-x~>}Do%^AT>%m90eqoPe<% zH2phM8rsR+)5DUef?&eV-0M8$&NSGc7iv0zsv>E>`+~V8!Q3J|fgQ{Z2XhYxbLDhY zu4i|JRs9gp#~;Bg_qqx$sY9_0x{iFjvaW8#K7f2Qzvan~(9j2h2}ELmK-7_yEp=VP z65E8>CY5|`|fo4r0yhIqsZ;?D1f~n`xHYcvwG!Er4oQ zO$uh#kPR6A3fCY7^(VA%-mrBYs&>_4_o}L#We`5hxTR2id9ypBwnJjbrsoHe+K;4~ z)RZ4gsyXU|Sck*MNN#~775>4bPJYRx_9LkwNDAljK~$;l?zHkP{6AXl+6Mj`aSA+? zTM}+2(au7&1kVgsyLNQ>2>Jcrdo z_(tlZK{TItM3eWwxoeWcQ8~up$RBIT@REghiLCL=%Oy+FFDV?LWtx4pXSI)JKqa30 z)+?8-@_F;x{DpaoS6k;@k`Qm=%ZGR}?i@q^gcaMGS6FyrZsTcWOn2_n5%Ft`rFyp# zmJZYt;%lsSHQ{C-$4hmMh;ef@jJ{zPL+@tpW6{inE^QacGYBC#2!0MNB2u5oZ2v<~ zV3^lr&EHz=CJw+~I*wUu{#x{;1ses{>9tFwL&9yw{T83>;C$!cFj*afR0sodeJSW+ z$~+KmXlxZtjEG0GLmwCx&oDG*Q5qI-FUI)GM6rGe9@PkusaE4J+8*Xoc)4(S0P3Dm z2P=T>@4@<73pU&s;FnNU``E-{x6HN41goH4}}Fn(SM# z@^TP3_QJ(4FfwEOyPw@Ev|ie7)pg1;!pnezV*c!Y$U1Ay_Ba@SsM|C4GPGXt_^Wo2 zy}S#calSM?f2-Jo81)$>Qu`b9WyQpb8iv1Vhlc`tfCfR4F=f2~w?+r^Y+G(CjKr3+ zpH`O%ylk~*qQ&tZ#xc;*(0Z5|%+jFN-a_mnf}N_d>rrP|(Z?lIg}W%gKH7$DZnFOi z34{VXRe>3z3}@E~v1SrGj01=^E8B(G;ZSa!dRB{ zYsp%?-IbPjV>;K31=1AwvK`t#?&(UWjbVP4$YyKB62PjfkriJzXv-vr$aNwLrmiy! z5S;DR8)SS|5wj*nRZ(2BCycWcx{o??#>vuhz_Y`6PQK0RH}XwUrSeTuPsle>J%q2P z_BF8aav8;m?aDIy|^eu1BwpVQ*`GQm_ZUEeW1KcZrVx4 zZ2}xMT&2yIVn-}Xf09LE>pFTR-@&n;^_K|#>2oh;Cfnc z?cX)JY)%@oX;KO|8IGap8(8dYiQ{$u_&_8+I=R{R3^9&jJ`hW}RlRM8#HYZ7WUG43 z4#-J~>x{$$j`n(`1NJoZ(av`ItY^oIuy(@324!YI83L>`qwO`!XBS#9X21g)M$USg zLD}hmi48c80P~zUhgwL*#wttl%-wEvA?8zhb1Ynmt`L?@!&R?CaHkEx0#qC#iS}K@ zLQ}uRRS@$vO5YMeG&b=lGZLm{C&NH3=l2h6 z!lk_|=G@^;JCg|w{YM;_uq3jfPyGojMpQhCEbMKk)?q0~=fR=6-G}Qc`qbGORL(Vt z<7`9{a-cTC^0s|80_7J~CCJSgD4oNKxt{?@D`8JDQe4hnaoF(GpDcp#mXth88=5w9$Sa%pijWaQO0L+4S3GM z4lOTshK)cRKH76Rwz2mC{V z4zGiP^pUdj0Je=_=;L@a;1CXG7?ZIP&^lN3ewaAlAw9uqr*RIKr2%J&;LxOIt=cO% zwSuE0of8&Lyv8|Hc0OzZcd&pZAa4OYN zo?Mz-DL8(?X|-@tG|v9AUcjjloc+KFD>sjeO%4mrB*8faoY3TbWn9*LijcYc5UXCo zI;>=q52qsey=8p>ut7-e1*tviwa-avkC2KJQm3utof>C%*@eKFC^)+@WUwZ8sZ!w0 zF(&U4#2O@XutU^B^lQW&WfuW4MG$wGh}+e6jksM99~4B#OS&=!niaUMEFFmNZDb*B zGZ7zEFKNU_1#zYz##xAFEtZt^1>#eJSYje>Q5E&V>J~xlBZyrty`9&5%Pt1^YJ&4B zMyuNNpf0X~@!oUQ)Bj|H^K~vw#PU9^rJHZ)q8N+H`T_B3Nv8@uK!yB_)7N-vAPD?liz1GUtJZY5ZMfYlOAo;gRc%tNSp>@|Rf z=oI2N3h@pW=UVtevx$E>@Jj@rUf|Cl{?Lzs8KP70y9jBJw*{I6sF=>>jo;$O|4IYg(e7}qaN9;3+F0Ra+(Ns4Zvm!7`<}WpjCYW$b%iuwU{v_ zrIGNNfWK7W>6Ob0t?D^}PqpAp$xwv97VzJ!B^&he!VEaMSKxbC@TMdjBm79fR|`D7 zII=+asRG~Af;TG{8ep_+6yP5dczR*|knnv4{yYS3%}C z4e+6@bqq$>Z`e!G3!`iVLUXX_I4K`B$xeq|fJkn1Ih;m)s(&}|=9&F&#Y558} zVHcX7pX~)s>=B3c2SJr<`^1R8F zm~~e0SRK~A)Oa(nC;T`i#kESkc-KPKvGk^o0nNra6T?+&UfKaQL$VgiJ*49^CH@fh zZE%|h#~hk9c8!j`Kw@jozTuOPEU2;Xaz&sK%&vuG1Y9lg2gpQpm{>S!PJYp$uOj>& z2b`k5D$gb$SsQbwfdNzgQ+$6#2qV;R(pcG?A~e9pX2;?kX*)9P{;SJ4~Q$Jlp* z{qH*&7)+JT^z4U^2T*J9#kxN? zW~3e2Mfo%$$W$qaMe37qr;8 zk;8~tSb*0raAQ@LhA?6B8sTO0buK66BbV~BH&#Sp8}ZVa|PSd5;CObsj*& zy}79NkR3mp=$&;u-Qje`-(knkV0?j&r#qa%_^EchoAD2PAoS@D_h4>}J~u?Xoo(DfRtlVD9C)=~?rCKSpcVW$T9 zd=<-rAu8JfsS4?t&=?I85fCRq(k+n6kj#b3#%hoq0y3H)ry$kB-u{rD4`pkR4FZx$ zkPj@7a3G791F)#x2R)Zu8Zhz`@xE2^7GBGO@gAHXCWM-v?Qm?ybwDn4sneIi8kYY= z$2A=SpWc(avo<;KE*gmi+8>~X^8y(y^xW&ISHRNN;YgY#R=H30@Jjs}&V3c>jgXkF z$d-?f4Kec8LiA_TB&Bcs@n9pxn}eum{yxtD09(ntHkQd;sFNAYY+Zw7qA$?t$t0kV z(>>L0=Ge^2CLnTUW3UylMkvJ@&iK&Q0VFh*W1BdI#$J_2mM{c@zrCumz+`@}mc!h{ zQDbX1o`YD!xmRtZXi++9Eb?hWzMER2V@8dw!t-AyFRf#kiEe6wg;iz6d@3>B)gTM2 zvJI=+jO%V;Ra#hkB&MfoVF8n|{cTt!X50}S7aY4^Sl*}Jw1C5AF7~Og1rw%4q;JtY zbw^pKJIX-i9#xLo{SUuY@>?mtB;P(i9H{OHD=XY+1y)54t9uctyAr4P zj%%u3_T+l<+)+zd?d?eNh5oEcH!wW&bbUti_lQ%^sokNFOvB73x*a%1F+)NjnZNNY z{vq}EotV26Gay*Z*l z1!o8@LqZ{$cM-QrtrT1a1ZA#UEmLLS9!5}^*|gPi^30HsOs`O9#ajM{^X`ZWyYjy_tg3FLlsK&y@TPuRg zfS{~8RLc@Xmyk@G%c&%VJ*>cmhuG3GKsTmlq=swt(bh~f7+tqM)UDmi_(1|-h7)_j ziS5xu_>28r{8q~Ee)$atD)}Z~aO`fOxl2u6ZOYp2z?bp1H0{#Tl&ae!q)B&R?nGcE z|G`aU!?}Zc^kn$Q><-2I+t&)kBWf|4j%M&qEz*Ybh;bmnQ=xMxU|{h4xcA^h1Sg!ADdG%kU=9?tqFv3mIFoay#c;;r2lUgI)jqV>N;dKBAzuaBvzuSQwb9UQye%FGc2 z>N?&u_DL)7pg@`f>^|g9WxWVV-AX5t<`}wfg>Ep`06QFIY!9%}+yAQp_Et&89ANh{ znRj1cv#0ZW1MGN|g3i;1UTq@W2PDoIYLkSf9%}cHFDSS5wnnL5ngvoGr z7G+}VT0rPY?g(VqD5hUu0T9}IgK`nTLcLZ{yWwFECSuadkihQ2;!QDu$r9KzSiFUS z%*wuCaS7abR#S)YIZ)loE;}k9=wi%9eGdwNWASfL1;lmN-C%-lL*2p|&980ijE_iM zZ3X99>UXx(`$0s5%C8(MKSm8-E{6D)?P3oWcI zp^%3lGd0Ll0>Th=5>g|CH(}$2AhR^c-2%c8RcC<|VP-;**&1ZFfG|Y8V1fAY$PPi~ zYLF2E!VvYa33A_hjD&b$hfsRyMwH8n?OJge72T`;#MBvceYnc>3sGl>4 z5GkkBiF2^V9W{2##{SqG@2DQPAl-y~LLkN2!D4rdz^xXzMD@?*QWm4eZrXUBM9efJ z-qjJov703LdI?TauUha$Cj6yl#4{Frk-#TQaEjKxCy|$OoY66g#ktNR;@>zxpg*~W z`7@y>5ZVxEaZa)*`vvv|z=pQw5NH*zG8BvRGLxhfwOJO1KspJTBaq@eg+n^5eSs8; zivbtSzbcx4CH9gCU2z2}LOb8m(4+2Sg+~1A zrAQe~GoJ$8J|A1J_}wJGMe^(C?_LUvI7lK;ooMSbrgogeBt$#LFIu(yT6*trBnQ10 z7SHV_wd+aihK%N-_o!P=IQr8MD z1E9MKZkonDOkA^#?h{;wKxeja{p!@?%r66=y9#c)#yvz_vstbcT!uhrHgO+jJ*WeM z&ahx{hM@P?=v72F+y1qJ&Jd{07CP%w-6QA>3lE428s4VxUVDVndU4#pWmfIgJ z4x4U2d4m#Vd09}@FF_bV7}=z%B=v)pM*Tl>buj zQA{Tk3=66~ph8>MGJgN-6hb63%1w=gD=tCBW zXoKxfil1$vg6CtEA^tt|3-P-(JpD^WBHzz(|_V$*Uqjnv(3eRSI$Jb5H!{fnr;PUw*|RPs2n?Jq8Ze+^Cg8p zk|s72eu9nv-zX+z<{Qme&d4**bl)5kK0n57t;rJx8mg38JA7%on7HS{z5bHIv;UVk zzGHTFga(zhe0_J{yc)LUAJ+Q48u+Fh>+37>e>j|iHCN+J_2421lLyE7)F1hSh&O zlYZBr+gA4?uqlI$M{lw-D3&U68n5mwrqpaHp$EbvH|pA!w3uj9n@nG*N>c6@&=js ze+EAW1XY%EDtcso3oVq0T`l#=0K6fuPnst3(CBOWj)_q@>}}hK`G|%Q>e(7$HomM~ zL;to@Z)I@}m|z>PN6rZ9C_!cI5N=ck)(&uZ2O1OlPc+;E+W%>)F(Gj(_O0UZA4~;r z?z;D%IgY8upJY{H*xTw89IuUBL^19$8>Rq^?xRv*e+P8XJh)aNMdj-pxI0A*(%+0? zu%hd7_$egutcmL#8n*H#lhBm0FqW^sTt2xH|!CdTO zAH^#NG|thZ=uRAa{S6czZtp#K+U_2@L7NBtEBsmeG2A%3eFIth=7pdZW8QVf~|}20Qgjwn{h0k+U<0gcpo=)R^B6#3KrC58@Qn4b zfJ(r=xEh6#Zqx|Ri&F^Khu;Q##k@-|;vL3uVsc4?%IKYT*5S+bvnAkCXr<}3k30$u z=so=s4hZYmR|w<4{eA6Sdzr&GUIQ;BaJBlwix#X7z74?v6DuVK>m0l**A-QIj}5OQ z4R=4Oc3PK9iV=Vm?{r|?q=AC6hX?F2Hnx>UEN9*HUY};Y;oKicK=bGUkLvh%d4Q&m zq`A4rZb-$qZ(m%(en*1T#AVcSn190^uY<~#o-&t-IBpI5(7z$EU2@T{;FfrQ_!ZW+ zHh`L|Zv88E`+~BusndM}k%3oMfMV2J7z%BI!XbEuGZT6d6QWhGz$=V!cyH2n;zC96 z!L*lbi1nRLo*1Gw&c}`VP{{woM4(|3XbypJNpRx*C!^1sYsg%xDf%$ExUv(kw=_C@ ziRw$}h`0yC%PzidD$MP9KMzu1*Hvz);9V<(1;V`%=J0k?kHHu6(}x|~ibMGFW=rPv zEKy$qZ_6mknS#9PoOAFpa*qXGPbf`eD@kZ&!%HsSiE=a-?O`xaHUPhzpodVaf7`JK zH3QR~jq--TF?HgcXjCkX;kK6H+MyO*0WPGFt)e~GEKEfD5UKW`pvJia>+`UUoxJ52 z;Kdm%o{jQ8D0uKY+EB&<#bCqt=CuV5Bpn4h=q;v{vdO9`2x3E>{%@;Yw}GF&95kHq zZuS1g7&Ub+AT{oVz>U<;xCz7fmr>y%Do1LQWh0$bzx~Fh+Q#|UKh60jrb^C}i(Wb- zOREu~t`P2%i+B>Mjnf&33d(MKNLCABb)VI#4qcB0Q3>gY(>^-RZ3v)bER1t6FkU|` z@JbHK(czsKc!jzJS!f@Ne4?!ZfGXH}-0|AkCTg%9b9>d_ni-Ep?y%<{Mp0k$f1 z8iit5#j$?TPgLTD{$^2l2eswZgFw{}NuUzXYYU!ASXR~%p5=+D4c{Lk^?NaQZ7{SD zb3UY7d@*LwHY3SfUPQ!CFw=AypwrYVXf&hhyzAOhevc7ni`wf5RIjweirQxgqEH<8 z))orgUAT6rM@WO*uLAdWN&OL!TGXCLe5Ag9()UH}W+_@2$+SlrolUL|R40^SjEIv? zM;}m0@g}H`D{x{{j>L2XjMU!FV}KK|oeC};djPFES3PkA-Cy_!Ld`i_&J1gj{Z#;z zQrp^j)JCdA*ujKWG%d0FfB(l;TCX8OHU7@>zE1BD%=lI6D>8Zyz`+#ubsIjDDKVVd zGLBmRIReB;PIwnvY}ItA{WKYhXPD{VM}O@n70V_om`ZU@l3~YVr*SsTkzY{IRC==Q|Z6$ zi)=?Z^qE?=X+za|@939Q?M=c|&3Ux>mt7H-t1_Cw9@=AqdK>%C=GC#}qVw%^p>sJl zyHeC20EjC{_uUV__x#f}uxSogt~RoI;ww<8e-;63CjUNRHIq>B5-BvUBfyq|dJGbX zOA!bw4Z{STnu(29H82Z5{vo{0#(P(`eei}`>raofLLC)h3_~y+yXH4AMce&GG^a64 zEAyn4mO2OLl+Gs6r~c&_5;dB{aFTfI2CLM&f$eY(OLKZN35M-${Pc5Q4!w@y~uZYSGIlAt*05yHq{Dea1hh}pN;$R0}>+^PJc?UW`yEk8d z_fPcXmtHJA`PW|Q$+O#f@~(`Ko;+r}Y3Yk%{#sX4%y{z&f~Ch^fwMwqj5m)(>Yd|Z zY+*IZOJ|LyR(?1$3F=;CMniE?ivyFl_m9CY1FW6jMx9?(gfU*diA_B{7r`*`I)t_1 zm<8ByN&Ts8D0*AD?^DW?kZS7VXh6mEtK+|b6n8@1Ti~9@ASxk=tf0)Pj443YmH%%H zqvk2W<8E|>ktcpCzT)glU}JyY;>%3*CfbThR$nhre&Y=Rg>4Uc5w9PGVSXwKGqBQ0qlboV1UDAUP!m>ltL*+63-$Dw|W)HL0f&`J}^yNrHs=Fo{t1Wa>7VmN6y6= z+R7BvLnW*qI%&`72j`=gH>n#X1s77-o$kF7YaK&Dk``j`yii+N zs8(yILM-sS)D_t``I;nqL!m<0RXq$8H4nO~u0SUvR&7V`9?D*5f7;DTcO zK`NRs^@VFCrf8?}?#NWrp3G-<3E&1ypmMSspUuuZehjBa`&P(j0!pFPa8Hn!998)x zq$Rg?(^!mLron;ZpoQ3KrxUHeYAks93b&cDelzTiVQ<4`#S;k-s@*G4^lt}C*ud12 zriYV1n0%(bMtHkULmQ6qCB|IO)9tK^YH%8B;*IKr1(4Q&>Qs;xsQhg}wJ%7Sz~9aZ z9dvkMNAF(a7S&H&GOFfSBQ!oe9`JV2WL&&PnEcLs!6lLFUtZX!#Q$GU* zhjqbfXVjs*C{uG~zC^D>EyA@TjFo-0MMKm}2=_4&kYY@a54V6( zZ=SwzX+$KC+6YfXCx3&l2ULXu!yBl8{Q{qG8 z;wvPS?F7AqZW}+9j+ARH4GG|}#Mjq_*C z*5_^SX@?6N6W|{92JdmigTLW%cvV0f)1CvFCh`aySyf;I+#goRyCb>yLSU=i2&win z1iDeKr@IYHf={Ba;Y|K5^n2<8Y?t`MX+VPZOl1S_V&W(`+a+w$xL|+uXdvq_LNX_T=Ys_MUqf>v(EBMjKupe_DcSd4*y)g0wlp z4!@Er9p%s3!vuVt{8`URO0aWZhbKq$qKGzY!TI;x$or?lb}*gwZ4!{P0itNz{!eJzmHBwGD6 z;)ZNo`qtaNXb%Ee672~f0?mtIk@_nk+znq@ad1d4HA@rKdJFB^$Q}UbqYn`Ys zE+Q?bR}_p#a61m}&CW5%riJb~2GR&s#n*sHDj1B^|LHm;&;S)84%S;xsTZO|c;V&S zHir73*40xUOA^4`z|qyF@e(E$b8CdD;w!jC2V zN1I*W+Wj6RKUYQZd=VCw&UyJ-h}3~WkgivE-C4)r(!0xEN7Z^X|>(pdjye>;8H zhk>lH$k3oteqlklC=-{WMt4M699Y;2dC-QNlF_XSgj%r(Zw{enprH!XMKl#`**yoW zR^mnEyC&nA9|Y_BfV24YDU56O;leXT;x8b+B+9o#MXufI{0!7$?Q`v*VmyUoRp_>^ z3}mekwz?UA!QRBdXb*ZDQnAp-)fl73m>CZn(mmD-Nwcf}KhT9lF_}pH`w*apuaH$( zXJ%fxgnkwulM>J3mGO2yJ?p8+-U>-(Y5%^Hl}q}HZJ&A``*p^)qrg|S_hTy5q@D$1 zqv{IcM}3WvYB$Td?#i!&BesLwy;=Nql*Bpi?0hi6a;rCy$j(O*gTgSJtvk1Ar+@89 zn2JQ0Jbl%*l)+fZ*U>$85C{*Il8Ty-y0;oGM!8jxK9r(FJ%B>AqC78vah~+oBH2EYo(K_`fY}JSS$C=T0kSX@%e}jjw@z!)^ z;qWzHH33;Mn$SZyyqyAB^EkHnx^A9)5`vFm@aLy67x*eogmZ&BjExp$Xy0nY9>qmp zNbQnbwGI_LN9+)VTqoR{Cnsw3m%fnpovp3|FM+Tq^1hyGFnmUsEl6DgXHX)v4uJRD zxXpoXon%ZdYO!cGQ(cDwu*>Bw67u5?==M{w}@tL z%ul-a^xsbWqg!(E7eIhrHV7tn@?jROV{-93a2a>U8|`sNQauR5(Y?Z85u9^P6=^Np z82^JMvXZ)7e2Kx5N}#HFf`YQaTuP(V(Cs47xxtbudNKtgDOj?fzAMC+5-bVR*IRt4 z!IE0~y1{2M&>l`OaFoH{a?kqQ!107&$zl4xfd8N@*K;vfDzV#g2Tm?y1^u9^M`!QP zszpO`c!zm1lF-QX%K&cm@KO+h;ol}0{!N>%o+e#C^NaO(zENvbM{{YFhgPK$+wM{? zpu#jhZ&e-)k4{^-tPs7O*~ffm;Mq$xi*#^~sDz~WWH!z?zlAY5qE_TR!BBijDMF8L(JE|T5yXRg7CIl z!@eKt3`*S0B-Ggm4BJ+nWq4}3#?;y0*lOy6y)&?V)(P%igv6c!A}FPCqkX+N=J&(UEvhG4o!#WU3zGbm;H$GK9n1?R`zv6tyJPi z-3S)kDi^;y8EMtZZASYnOl>L)Zpj)M=crsWD{yywJKt1nM7Q(ZNbBb~aDh>aAx;EH7Ab}fF?e6&2b zx(&ZO87V7^qtbkRmG>Fx_tK1aW&PQBOZ^Q?jis{ooc-FBoo89z+Z#+=6n4nM6QN0m`M-i~(I0Q%K ziKUhyC{UT|Rt{{9&JDJ+!lx3nDYW6ua;|ZI{i|K}=+OmqHSS8l;QiZS9907wK6H3D zP+hpHEnQb@H1{(Lv0*`d6V{Vi@|7u0hZA5yynE6su=dN^m)76u=VqMYormv@2FBe^4*UK)f1gi1FF|a;{9|(#zJTH0=m;Yx>Tr$H` zkhhSsE^U+LiaYrzIy9D`>kG5!l8gL+(3#qTwRL7=e0Qt()cN4RsMXP(5Pen=UWy@&yP3AnP8*9e(cCYj;cJbxVQ&3z2e*~t z&j1-yiVFt(SSjW%II|SrPqRz$7N`~~7qy5k!z{yCIgBZ zkhPbM)R&;H$J)2fj1QT?qQA7mfpCLsP{f)@i`D3K+;`ZzVi7-;Y8A2FqMr)3wsrfz zLcGR!2N;q1P7oB)chR$OY=ZDp)6fh;f#a@`Iy#3d8})EHe0N#w=4GvVwWcEV=2 z@k=x>U9Fc|J;p@9Qz8_iK00g2I?Pz? zzL9#Vv7xsyKh^N11hSf~f%ZHMJyrNopU&gZ(}>@ljBG3UKQ>W6FqeS-jE+cC{}Oqz zs^J;9#pp*%aCU~#qc^7=)vD+N_PWVM)K84|Mh{k{S}lRzHNp8faRGC;=--25d(-KR z7dP$<+U}H!Ow10jihz3<ZK>6WrqJbPI9o(^=TE_f!iso%{Eu51msTH^y*EvE1tKA*ZbepKFE3g2q{?qsCh)*eQ+ zD(_6YttA)xZ2>&Lqb|P+5U|QGQD=W7&s1>4PA+O@=FR5!Jc6OAxz$Fr-k4GQNrv-a zv zDBY%5QP$MgF)gpqxAMQ1k29emA5*8}xPmDaTP}c9Y{QSbX*Q)|4t{qs((30%TK(J* z%~}(B1}nQ4dUgZT&S@XuvbD6LwX~07k}16biD6LJ4f^&Aw_ zdw

        S-wcpTKPN5EeZk7D`Aazx=t+--5zG4Db%G9vNHvKqlf%HTm$>75Fx~ zGC24UgVAfn!$U5iSD=M98Mh?fSp4DouG!eDs#ee<9XI;;f@FN4m1=m&^qH7Oaj25% z?@W@$ZX+fn@xgfX$`cB*9Y%bH8p0hiPLPk?*NWMR*1@OGR1+^j_y?R{(#CC~@s9sf zKH@kHP(>eZ@K z)a91*G8__1P#4hKBhk#v67JP7Gv`^EArERp#t-J@XZPB9$p*w(c^Qs!jLnPmTg@0Z zt-Zxp`(XkH0>Smr=@y$vof6pT%2 z@L^O_H(@h_J^tc8c8`UzPOet2zh>O9XqY{I}TX-K^q(fpNRZIBDrN3vR*e z3<-beZ;g(h;yYwF)#V^clyA^MM(T4eLqlx>pnn4v2$R)3upYA+XsfI!tEq^JsdxWI zJpPtwj7w2_FG7SV1(T4RDFvMX{~zl*AMoF=>!IK+Mkf7yXYK-2vw!ViJ`#cYMvur^ zAD})?!s57$ToBo};gMP%0@&3Dr_KRUt}t%Bkfkasj89DmJo>U$Re}-?v_!p~ zwRfdVVa!$R?LZ*R5x_+1yF-;|Xrj(XO$jEa*xVZ8*y6g$gxCkLQETIU|3C(>*jMB_Pg^<#;s6GX6D6>h{P#6iiY^wVacZ_IN&78;GNrv2AdpaO9VFdz zW*z8$9g7#(8o*MdF|D5O)1m`(XUm`nz0e!7fQz&f5>_8#IEdiPz)c#j~a?0 zTIT%fR_rxERsy3l049;;uUfFG3&5nQ^_$D}EhHQrjc@kId1DF|dzRg~x-fl7UOJv+ zx~*X0%7ydnu`qqayqvrh`JQFh%(Is}Ve)cN{=!0Lg>)Xrw`=F@g{xMr_NMy^^U^QN z_7xQ1Whk4-P4Wb0;brMdeXADBYnW@6dGTb9H+>}k52wo#H*IKWdiuGL2VD73c#=#_3X<|RCN}*6q zV9Xc@ku&*GSKCZ8888}azHCuGjiIdJ%gru4Jj}hb9g~2DZ_FMO-e_Zs#TArRqebtA z{%f*MaCC;1pr!j{dfW)Jb)UXCEkG@=8CqT+y$Xc&HxN3AxAQi+PO6%VaXzdJl~wIJ z8K*X)<~Uos4*_aEa-~uw#OuWx@iN_pyOlPgnAFYU^WKbz8CYdUqRuA<&Mo=n}95=saYR$BmJb+2t3)ylFs<$$WNsH zcC<&9*-11BZWV|QXTGUAdEu&sx9PXX(04!)GS|NPb)+77s>8|XbM59T?CpbPj0jL0 zqCFl(%F@1L;J*f>Tm9LD_niU1O~a$j>mLtN_h`4cc6%IZ!t?LdZcu+FP zy2#2EmsnM&c_;!+JHtZ|iG4Z3N9s3V2yXa_TdP_JMAvO4*e{Sp7!06hF0+uPX+!39 zbh45~EaXOeY|<=aT#LzLvhZ1-p!s~rLXa}qZkGwtQ+YaWgqko3LJ`F>AV^n+3H$n`W_%CZ=;B-l6F!vh>>>wUOCZf%k; zI3IdI{AK9ao*0X6*W4t(9KxcvZ^vh2d}<0*$IA);2CUObGMnnSxx+8_$Iv;Cbkay? zY7Cu=@NlwCDt;VD!31C>(9~zpbsLh!UD2OtZzG_TQ5Bi=K7Ki7myaY=5%$SXVs;V! zg$&`krupsW;p%NTGgO+`W@xS0N4`Jq zkNIFchL(2Ex2-NcgBTvU`#Hv5y#HnLY@Iv6;*NtiGOzM@SFV6t>hPGnsdp@xi#Jf^ zX|irtSiIz_x!@Qlv6G8VLN|jpTyx(ToU`x2b2yk==6XK6+=9ipPaR>yFIcyYjH|Ze z*hj>~(>WW87iK5j`7ShjL1hP_bL)YQ$Vc?NbI@J+W z8IC~~_XAUW+M=9ii?rAP=K~ZBF055#ARnq6>T~j=2^1jnK3{Ut$AGr-l7|^Kc5TV; zBR0Rhw>11xbRA?NKypw)o9FN%R*KF`v)Z@4HEIz_7b0>B=*~7GxzO61)vnr8u-3%< zHz_}GcnpV`#6cycZbnAT07>gSGp!~`E6MIkHh?M#e1V0ZNc|A(%*0r>{<%apt3OF( zszmBpY_3v&$IxJt`LjSaK7m5lwe`;@TS4y=>?kyRVM84ks1~(O=v6TiIcbgd@S_lI zs2(U?l)XN-a}!dD)IUK`^VunpbymwohR7LoCgUqPTL4n(APSd7{-!NzR%h7L>I}Q8 zo^h;Y>j?g)OHTS{>gKk@oTml9#=m@+uxm<+iK~+?aqE@S$-$$ia z^M@R7ojm^{?&f@O6+U z#oinCA$lhF@}bu8M@X7m^@T2iQ-!c(2~R5qet2+8wxQkLIB=X0hz!N8;txS^Gzj92 zGEFfda5BMn9JV%1e~Mc6?`U+HGhJadW>nq!$J!#?u@P+*lU(#2D!Q}|Wr1|ZBL~J< z9Mh*& zFeYT6-3{>K^xgX3vhhm0d&f?q^a%Mt6Ly<+8m(g?vQds_oY9V6#(uRe2Oj{Hftyn( z2ZyoG5!1Lj41^-4bM`jt=D9Ie&M>HRPo&`!vwV_^Zi9{>TX3jTOO@-cdV%L}{JbiZ zl3ZMjBB@T84E0b7W*?~QZeQhhm3xw@=21vr7xn4aSgv1t5oADpf!(V45oCMt8f2Se z{LaJ3WhsBEoyiUu)1XuRv#vF&U9Wr)voZ2AlF_Mx>8~+2Z1_s_5Oq?9SlR87=)&`04n->5*~cMYwHy+FRv{3V0>WxrY)|U1*f|n9w_Jo9d?b>r ziKO@s$njFp!TvDmaKGN7bNmX6j-|86DcvV8J!N;`3%XH|Wb~VVl~pBFrbD?W<@Ht6 zu`xJ0Ge!Cx-bzlbn1MmEiWxPJ-EyMh^=X_OT7jxYN(dd70t_>QrV<)Abe#T?Q z!Cv-dJ4=?#RozekNL;4AocBJCBlJ+sxsDP;tK(p+cx+ld>(ek& zU?`S-?KA+WjxlsEIE(J}XVAsGh^?7tX+OZ)kf~NYWT%4HpV5|E+^PthSL$1wPDSq~ zRb{UIYy&72h(o}}`*#?LWwhc>cuBO!t!y9(d+_Th-Hl%y$;NLmB~ntIz=ObX(H=|i zfvj4x5%RUF?f0Pr?toXn(#&H3|dCOxrpdAvk~;_K8x z$e>&G$_B4QW6%@??IZ)?9ptwMo!CNXOCd=>1MBOc_x)4cMowKk(zt3T89Xx$#Hdzu z0&evpI@<7llI&?rix1{}5U=%9$q&^IJyoC-TsqXMIVgw~qv2CY&=nxj;R*EIpAHYS zl2#FTbr=&C&kRK1foq<@T8slWczD%=5E^3l;%iiE%k^(S&9tP!Gmt2jS)6O25k%_m zg{U<&n2IwRro7X34K!l9DK~@gM>qA;iF}!QP2QpfW*FlwHwApqqI{~ZlyBybIXuAW z2D2DH+{&V-3bW1f-tbr4iXU8BSb^ihJ2^k|WMW<>q2*pg;r8BCMr}frYQW75o^?z@ zsufE>VsCGP0xkHHoYTk?g>A z*h>$bT)h4TPbGDJ9NLShM1gJ|_Qu{swVt4UveF-Vj?Qn|)u7TzEo2l`C(jW?mCr_K z#dbz@R^u2&r6!QYU#x~F@Cc4wyIqhY`$6_O7?p7T1;Zw5H|Fd~CUWQ;2ZJz$&KYC! z^I>5|tiL!XEL^o@MV`IdlyS!$1^GjU>o>`rGprM5ZL%;kd(t(72aR=40zJwH?F0P~ z-RYjyYtEvY393HtvK56+J3`aAmNcd={hyg5AIYFGbK>;eF_W?<%{Dn?_^2PF{a-Rj z8Ypy!bK;u9yn;LP3h=bFw_x>(6?p}V78d3?XH1+mUBYpJ%?uyQ@Qg)^y#=~7GqYDL zEG*1J!E<5?YdfoOhL3dFhCp{=Om%=d8J zNX9(D^JbuN(U@XZcf@9<7nbZb0t=#Z}i&kyvrd`!Ryh8>a%t^v8 z|BA@!1TIX+VL6r8Rk)ULV3{5zQmE@}#Q>`ZRDj4;8mN1z(nZKk3i$Sd3OXB+OqsG5;vYA^58sQ7O&(z?Nd8b{X*x*nx#HeLV1sHqa#iK=~(O2k}F>$xXh zl?qDIxp&mxhoJ^~N$*1FC1c~UZOtm@1OkEEsDnS-=~Q&5lOzM*z?vd8IvF=BwxMn` z&BvypFQw*J%GhclcyujrziJPH{SgLYb@yOFwxks z1H7aw>)sBv=^ol18V-)0Y%Bap@P>29We{U9!c*YJhZ7nZJ#X;PsV>Uo)cJDxJy(7w zL(`JniV32ZVKaK?U_gRFe$+{K;vIaK1oU{4LW7J9^b zx-N#x%HWsn!2S|l1d^YR7{JwbaL4;i+HTT2I5=TSVs!!+)gg48JR#S~`~bKS?BH`u zfA;B57@ulc^kLj#`1H#2)5x3Z;LwA-3zHFl7G>U%T$Bk*p!Ug zY|+7^8BF&nACV^xi zi@&hDP|<=D59O)X0fZrH>u|JwLyGU!b7Ec zM0}OsZ*2>XRtSPd3mScvUYh%_#nmYqvI3`6*_H?3Z7ZSz-pZ zL>fNR+84)pt}k12MEbkIfA*aQhI4cH>~k^&!u@dU;< zu^FS9IMPXP`V1)P-gG-%lKF?}l5uboT)KZg01WWXzFJJ`sAqM6Xf85rZAXCWwT(}A z%ZX5~8E~$}Tfv7mJK>T!7N=DOV=Q$e3Zb6jNG_(4-tY=Ep^75JsY4f?iiURsv7Eaf zFr-6$Y8E<_@LC44ip{{W45YOk)q*1n;n^(KFX@^=*D<=>bbUaVJcd+Dmpq$PO_w~d zw4W|{im8mQ6-Y$wrc1Plr|61;H=_n6;X&F@0&F?JpJKOxu zF~4)o@6G0Sp81_`es3|q3(PNU8c4Z}F~4KYZ?^f(F~2VJJI?%$H@_3i??m%^gZaJD z{7y2zlg;lG^Lvx|9c+GwnBSr1cbNGdZhl9Y->c2K^oi87?fa{=`4Vvs1e@;B@S`-s#wbzrFa|hriwUYaZ=%q+~fAlkk`9nz#xE zcb6?0U$78|Z5I3g18v6tx3tsFqJ2|7E?4pt4)U-AblP{GF%ByQ?q%M^|Btk{fseAd z8ooEl1{R29#h_79qedGQTNJ9?Mr=s3A;{NCKEMwYgv5Y>#AFwt0>&<>NtU&_TWz(q zEeKZH(uzuzDB9@K1Qlyks;H<~sZLzfv{Hzgy6^wYT-UV=Sbg5-;m78h?>RGb=FFKh zXU^0JZFj-sy6z=nNOgU2RrS1JZD441edWA{h4Zejtr}ciU$Ssn)dG(NX=D37k`5iB z%a}fIaaH>P{3#jQUsN-%p|L8UOJxLH?cNfnzA`ZgtYbJqa%B)PsJgMRu6BW^x^Z%V zzL-C(y0HQy!VR?xmsH^v>B5awGlBu9>Tu^=$u>;arORtfk%GdV%cPzm<^HNAiE4!B z2@pQGzOk&1t{zn1SUj(>CY?`RV2JVH%5YqGNLy4}HLu~A`o_udF$=0nP>-r|0BGMU z^?0NnxtXt9BVwODx|+p>we#lRIJkcCtQv0RrPnW>URSUG1_sqHE~=|vK16~7;yR{& z@wBRj8>%RXkPLkD8gDcnJBn}utSIB5Xq{`QE=M~lS+bgv#YKg)>l!>dg*fbC3wPc- z3D}2~7d8YNYZARAYxCX248Gp<5?|c|8P_+K)-^2rKA1AEcIfquXfFhi*wqfZzOkfu z;k+B_mS}gO?UsBEb&ZY0OOSRumAB6=J$&x8B>8J`2l&ZFgo0Zpe(l^T{>?;J`2!PO z*YK;yox-l|&Z~T`%yPS(MqVi84?Z$bfY?F>SQfTZ!-8~fAviO0GPt|shAKLGVfDhQ zhH=Nj_?&*`qo+Mk+;i-&e&Wh`aKaDXaI&Sa0Je{toM=-4?gdHynYgdwmrG??l>c?~ zV8a}r(Rk$_=AH+|;g?)Os%ucGw)nl5D#j5x^@s#%F1L^b zAts}!J@;@3Ty9soraDsoMzU__XZ-^@S5vynU51hHYnV;@i0V6{^g*t4jknOT&6hhl zbpbn$@NdH}f~0Ti`%WOV@k!x!%haZPDQ~d$NKMkk?nD>6UDAP`1wNOTUs4BAq3J-O z2hzbkN%69jq`2HdH-swfBWizAv@|2tYM}H_RuwJaXBRKuG*|j8F})t{+&txo_8;Nj zhF|8>H?_Zo8tnFO#y!Z8hxQ%hA8dJ~F6n{PL=U9u9#GYc5kDJ5)=8=~Js>2-T>}d7 zv*U@x?TleS4lI-Y-F<|A4gT50e-lk`FHE#SXu{fhpKA@j&N|vqj-Kk$d5u!`VA~@V z3mrIYNVn6GIrWpQg(jNY}TT9=!lQh%oue@4ydzu6};v zUUs|r?%})Fa`*AwO1=TothU1Jyz&)#?*=mtrW*-XdKG$5n0m|6L zZ(yU$LDLq2nK@`Y(x7@hD9)lP_}D_4ulu)#c%f_G)Q_%*e6BJ4hL%s}v`qJ6`@SQ} zF2CaNx=Qhn`#!p0B@)KMy zCBNN=`yXMx5x$1sT7Kyo_Hd`b$$BphktQ6~Yp4SZ&rjdO-X$=|ukJgObF)VonhCh+(0+C(v}mh&%8o%weuAsIRDb_ zL+B1c%CFghifkNI;r_P&zkC@d<9N~~+i4Wi;Q*$K)GBGI}ja3i+m@dLC<(P{6; zW)F`#;H%EB&j|LCBJ;7*9FF0L>h!9ym+33Z#3bQ%Zvlc`OJ!vW&=IFj2ij=w{C~17 z1^RxYAffe8_G3DOCJG3dtM6m;nSv-pSl9$ zr1k=LzOP>t0%qgrtiLBJX`mFjE zRya*H*f&^?h|db27H;IZJ+bkTnTJUJAj&g zwD&SywbfXsZn5Dpux?xrLc`xq7rkq(lRdK1u0D3EU@8N2=H=+1ifPKB$HSHYR8(y^ zQDYTjneQ98^|f`Qr4(LPM}RD@Q)DLDu#BR_@SFj;L3e!7*n`}4pv)I155(0)km!;r z!H*0OEdUYi{V~%x)?<$g#C}- zt^whS3C~OlFPf*XYbB?zub)-daAR5hy!lpJ3|xhXH*RRC3u-e-Np%(mmXzqENo5dL z%HvSA@<5cS6I&j@LO86`0=iAwZ(t^@oC^pR%ou+mods1=xJheCsI0Un=(IF=!9sLe zOgod?13FWd9Y1-AzJG?1R?}hwm*|D)G|Nq80+)d`(EtfEeddJe#1d}um(~TQCfW+0 zPnmXocF&voRP zW?^tEF@Masn=mbQv+|pAO}Nz+uIA2_!_Jc3re7_DUPc#7|ZRU*SyOEGJmEO~NP6oLD$H(L5)-aN^YRBg17L&8#RZ zn>=y4Q;?J|<6K@k@uQ|u4Bs>-aM7_H8`ppb8z)$JVEJcT zez=g(_O+rnUK#%4soio8DMRz={ns`h%v{|n5G=a1QvDkYfSFmr4O;Y9Zd;M--G-2S zg}Z6Wkd&qsxmhVeai-!NX`F7H#~Y`otvL6DmZG7N;@nFk<+-Ceawt`mz4>_@-=&eF zVGo_AT45SVc5-g!mpcMOzudvYVMU&l*iinW=EYxE>)6otxklG3!B?O99t;VvbA~IR zKQ4dP<;lX_&vk;<5^r}&HZu!d0yYD!C8I2s`+HwPCcOcs2>q#W8GPk{>M;dz+bzFn6!sdUs*n=|bK$=n zm&1@mC`ovbv6?wL{e9ufoX9`v$N_b{j&$oti=BL8(g0U8#_OZx!Or7s?2SSqG zlSs-wK_~je?!By5U#GB!+vU#=`Lh$q4i=o45*X6$>k$Nx4aR|noq$Y4DpoIAe7lUt ztv!D;9*_3G@C~#ToYdlb4W%2}AA06w^$Xd>`L;d28%WeesA6#2=%k2m>*Mdqar{b& zt=Jmz?NOH%a+Z8z#J9!Dc)gC=B2i}&)#ZDGd&|4|y^e`nwH=_CDueiWVi{e&H&dA` zzBg0E^7NZ1!E|Cr1|3AoYAxgnzQrxC1qjnYJ9#Z6+Bx!n-jZaH^gmcHVG4T&ROJyx(q|* zF$cKRlwHu4;@r{US36`$R5y|vS~FVGKx{_6LZ?fO7nAR{?W5^RXKojb@-HeSYAS8? ztGAE+B7SJM)^pW&iHRaXrRpL)+;iv+5}rpw$z9-W^Pk9*leD!gw7sVVv!T1Gllz-$ zD>JOko!e5JdyEyL>Bsgl+-sA31=)7LK*|8DOJNQx-f~T@M|=JkPjWwkVMnH~H0g)x z^w`!;q)*Vwf4yaB<>TWc5J|m{dF2yLB)dwod163cy*umeqbQ@cFLMgvLTH6H>Z~hJ z;j(CBF9qxVv-Y(~^lt$YUiD8Xz0ki9LjkI(yHE&}xq171XBr#&XN50Hgd6&&D=Y$G z+YJ3%!GJl~dK0OI#?2siw0FY0htarubmV}#P)FwINQ=h3#;xe1Xx#n$vj`mHcsPxF z8v-m~|0e;Srg0j&bLb8SBsZrR($H<>i1z*tT4rcm@*L>1=1WxDA#mnEE7%m;?lp5p z_a|b6BpMf7X1YHGttkQKDXOvvuAy(i@zk98Xu+t=$K1YBM%u_j!Ufsr>&ZmN)=&=w znN2V{n0|E)*Ak8(5`UpgQ_BM%NdtP{v57>1N8cB!yhLbqi$$w{fC%SWjsFFs3|{tW zOc6Z3kC_S{XK1|q10JVsx-Tre*L~4^aK-T?i>f6gqdx@qqiT6_o&+wR4N6HRkIxod z);saRz{-Me;qe?29I?V{Jg%@Z3LfihTgYbN@#)07t;R) z)lUCw9PY5f&rF0H9M+ZHsz=SD#pjYl5cj8KiT18$f+a1^Gj-&ETCO8+(2*A6o?2ib zZhK;Fw(%C+E%dNDYdKHS`h123R!0IXjk_AE#dLv#yPa0WE?x1*Ol@m@hE42yO1e8d zAhorY%Lu8v48Bt35i~x5-<2d0{DvXSNC~EQ73XHS^w^3#(!mFf>%6>>gzK5jPe3uu zFdfTt6C%$0=MB=|mc&xl^WZHSsk32DPwn=JWi*tp<>q0n2^Z#U0mvS^NEUdJKeb^b zpr`4>lm>TTNX#pteX$eC3Q=*zyf{SrBeeI{kV-WfWXk*!enP9b_W9LIVw~ylb+sR` z44{DzWi%h%bNG~DFC}#TsQGaT=pBx-Fl1bs67+O)j76VF?{ukr2lK@~lPyR-f44^b zevEN-s~%bACXM&2Pf&nEWn6Qc?=WzP3UAJ6U6s*Y;#qSOi}|GSttDclOOxXdMMakc zUXx(cVF?7!g+G-9Sth|wCqeh5968`y>*9Q|Ws)cSnh|Hca0ybgZoPbn>^EuJX){Xn zCja2CUnf#ihF49#3-Y;pE0*2XvN;czWT-K;N9=Ir>2H?Gk@l6)zSmI1vrQF!dZ}Zo zsGb6uu=c&n)@cKpsIK&An+Y?$Z6o&rDOBVqRM0kZpLm$N`T@$aoSETS8RyM%^YNT_ z0)KJw(IV@a7z#hHl7LE2c+h!0eBIarD02JNcg0qjSY())aUG&NZH~ny8z$M)8+y%X z2_&DhvkoH1GzMmjjk!^1Ki}*C*S<&tcQBpSa~D8(0`*SG)!6w1vlQ&;T>r&3h>?Pjhumagco1A_$zmDvl8G!yv2NsJ_WV-E8P@2YP*4D z5wKM1h6WN1rHh^R8KJe9+_Q6L+^AbIMp_{cSzvo$mMP)_urg7(Saaf^?6HriyVR8M zF`!95{0sikZ%U{;90=*-Bl4~`c^|g&KAOl|^i_F9;+_orHj}-P>=w}190qjMz>Do8 zuWTxB!1znN$ZtGtAZ4To?7V_d%eH}4e%nZIt?reRD0q=w^sy8T(nPKPKN6NwljQ?Q z*dz;>I2ZpDJs358cVxaMlkdT#d@mlI58OO@>~@%}0kR%3cK07vLeki&pFkeX`f_x6 zIg53xbCb#wyO8Gn0F732jwn||J{C^MBPvW9nEJCFLKV9d%`DoUrn? zja+Lo+(!l|`yhTL?n)*_1lG^bx0#KMnO|idYcxcQMDWVCCAm}EP1A3bxO27Xv?Jrz zK%_7K~) zOuyOqQRL3=3w#fL12k35f(pW@ZjhB+gk#x)8LdU5K)oV&(|pgDa+K9H#go$7=#H>| ziK<_c)WWMPWSiL6cCF{oD`$+#UE5Ocb6pY*lpTzw1ab{w&kC(_yMiZ#kICR7CQEqF za&EQVa03@5rvL5p_`zsuKn#^m2g-v{w{|blZjW~V828X?JuTOI#9ApHm&koDbmYF{ z;$>_?CG1=$Y;?RV&)nrK%23PUSWRy|0j62&QG2f)IGjGS(t6c2>{pnyKhkNvY(uhT z8&U(;Xd<4{=qh6gp&!Eb$ge)tX|vQ9Y)VWbp{El6Eb%Oux#C_&tjc!ky^JJ_QuQe2 z>mnu1N=b7-#p8#1OhMU_Dn+LnsZ+tDQuje*ih<)8n*St?{vK{G>V3YBckB2s4C3el zwjCDl(ea0pkm=q;eE50BX`ByE>d#e-({GSAm_Cy5-Nl4IAmMlD@O3-6DW~2BjiT-A zc8mLE?PlI^j}khvs==ls+=E}|mK5qU_@rqAlok+d_$Bw-Q~{+qG^Lq5a`ov6b}Z4} zb6yrE9vK^D-nL!d!sK>rYqL0{g4{;C0`+TDzoEcy2Fez39gaC2X%?ZfzXr`Pmkxto zV}s;#kp+JzqKk;!B}vTdnoqEU3P+@18@3dIZG!-iuFfHy1LAqqY6?&zHI$*3Nc52w zFfm5WZ*omcWH88_%z61vp*sJHtULfsdL5x3?{&@QW?rjL;hL^p`=mK{1nlN;ThG5p z1g3s<5i}D9HJi(vJg3gCi!}-3KXI2fj1#+_BFexJ_R67^`^EbHOIGLn$LSn969@Z# z^{UAjTG=OwW$rr-b5p;hp~x0!8TkKd@a}|(8dtEQmG4C)pe0vzZ&p~r_ z6U!bOL_w@_G8<7#C0!5rFG&In@F&1$b13y`oLndRM*u;>79B>JTuC({O9{~yo3iA= zK?x-5Jd=#4=;C%}LZ_HeogxmH8c75Ky9d1fN~Wf^oaR?|k-8=?t=J_g68(~tqLCD^ zq^eApyN`Fb2kH`tck*p?$QgSjuKZj3GI51PLx3+!MR!LLy8Xj_Tp;6 zr7cvUX`@V=t8^qIFu*;#!^TN>Po~{xbVQ*}isM<5MtjR%V6fguJa?GqYDezckNsC! zhFOCj7tyaQ#u0aWBx7cHRBj|=SlgAUEwfYGu1sl}ozga>#nV-g=DNK3<=|_QP&`*+ z@)WGri+!T3@MSZaUU3m9`7C`k-}3sXGgn?=#(qSes#;|bQ>GG zY5kLzjU|LNIwy@6h1_kKJDygaR(IRv<^PJESa!ji1hsUxy!W*7KK-7jCE7ZQm|i`z zS?@H>?}uY7tL|==uPY75=QzBs$Xx?`I|^u&8uO>mK?^laV}-Wxw0yaZ?~7_Q5q*6? zR)^3R-pn;^WQjCOZvP^Wj1e^UUqs*bWH!6l&dyF(aB8Gk-13rGG^7NdNb^_HWIm>= zkF0LqtMd;I#Rh|{#BL@w(mcxKS~OUP-Ah>P)I^>=rp{2zWAdyZ-ocwDK$cuIBm+tq z?fv%im}-c2~=C+tq1PKi#IB#`|&O$*@QeV)v{vbpcHd_j8uvW?=?}u1JKK9%@mi7(^+I3*uf-8wZlHT;YmJ3Revs=E9Ul7&{}rea=9f4!Kg-mX4@28&VK z%*V=eX+*ADErzUxxBJyuQYjYlZ`9umVCoFfL9 zvC26qCEuO9GL00KGG}OXnfjBI*CiW@VNwHD^sO?%)6jNRR>^W=pDMmoBTpP=J~oqQ zRYgb7oEz7P_^M*y&?1R!EzBaWI$SVZU981g^ivz;0g`R4&0An1g?hib!p3GY@I*!U z)u;cSn)VDU59k{lVEJUpMmtbk(3oRju~dLl1B8B({nJ~V>=hm!`@&*nwZx`5xc50J zG*fXQS);vMcF_HwXuz{lv`S(%&x2RD&X&exKK6=^v6^(R*kC-oN!%1Lf-)y^z*AuZ6?m6!&H+`S^=tY*dPx|K30z0-)6jH-a-!t}^^Pa(MdzW_P z_uqPU^Ruhm`TtyTYB*}*b}*+*J*uSyuz5eC_~RT zaicZL!sbEIRi4I1pOv2a5BSa_&Y_jNg;D&Lh~X)J@hZFgMWDlO_>V&rw|fx);kgM< zb>@SJ*s4SQo~4{c?~_iAWjIV(s}EM!Iz|XkmSm%{Y`rjE(j~*9xfoC(^Ra?dHDB{s zd&4Ua$TBwdDToGE$&)IkDdHHkpt~k5Gij8DF1A9WkX?+p* z)9PC!!^~}9P-}2c>zutMGlCr^x`Jrt(l!pdGap5TmX6U*J(P3|9!6jNg2Sd(-!7R@ z)w+wdo-1*FTE0Kc=RL2dnl)Cs8ym7r?QP*wrnwxrO8|*H{>Zc)k&2yg$?93CWW={d z^Y}abYUV*!58npu-RW0Fc*Aq<&U|protcmM?v?%wZq9r#xC!5u%m)GZR5P1Yx`wJp zpejm&st5G|81b|y8UkU?)0tS*a_7G(*0&u2CA$mtL+!&cK|6>aXT?j7Hs7QCwy^Yp z`)>Vl`7QGx_sWP{uP2Flq;z$yR#~t{^>P5gjxY7AuHVUITd>`XsujOj;-%v}(i7`- zl8KV!LkBS;x`_SYfC}mO({&Nd2ayAF2GgneoK2z$3`Hr=%`RV5?pMQT026tzx}F2q z*!M#H1uL>yF|zX-jzvQ#5pRyx)z~ zm{vwAcJr*FN@q4zhkfts*>$Xe`k+sxv2dkj#Bv!G7{cS6$@cW#RH3|Sv7zB-Y&Y22 zI>@Gc?Myv62QzgU`}O)gjaTFm$1Zgjvqq+4Kk4qrQjnI7r8?b@Hb&LYa3Z8QNb%Sz2FTGtAcR_E@s(40ls$wD*i>Ko1yZ zkF}*)mP5Tts}YGUTF6sosBB=G!K` zBE(g%Y40|~Z2!Z|Q?d>SsoS{PA$6${sEFvR?@-lr$s#YO6k?DMqdJ&F(p{vapP+4Q zMKl4E5^i%!fXb`coPg+g+oz^!=RTUK3bk{uknxMPbC2vjkPuB{v6KqM)}(B-7J0+d z_DaxBZEI4CWKX4pQ0MV!LV@~PeLazio(`BD#G~4lX?3@6H!F9y?~N4f2fo@NjkluM z*0lNEEft&E{GOJIKU71`umhr&GX#Qh=skTn^A=Z6%IqZ~V_Bdtal6;q&Zc$48$ao#@%gaov?$@fdZHgM=rY z_lc!u;SakCa#Gl@jBsR%S%9zSBFHSSp0by51ui!3@a!BKI8rWZsjd!v#E#I0=a_VK zzeujLS#xALAF(+_9$l9r#02`xQRBpK>-l3gTOZhh{-_&`f!-QdvA;sy20C6D-tqVb zt|(cniAVDVgvVvDi{}OA@iAw3dJY=}BaYA1o=0gg{D*o4M}EI;2d>3uNvh>oZ$22loNh#-R|2a(pvRh zUN8`@kcJj>-WdxOhorexzSg|kGO;R=YaA%^E85h^5W5;%yvL|)dJ;?KS@XI-X9vIrYaUUw6w)1XyyD19O0jfe*v+1Q+;214-(XN?jD|%ha~)${Av8C8!<|yc;KKt2j610!>4vY3>+9MP&#U&6or^ISQI$0)f*_vKP`_)% zm7-_K7(s&ngT^QrD2S1YeLK*6taKoTk)3P@)EIb7r~5_{CCR@-a_rwjG-7@6Y24cy zhzEb?q?$k~1I!Ho6Yaf8(tVuRuVbefAjsqj)R=T{o`mK>pS-Gp`7$b(S2g4ntI!v& z74j%km%0L2!~WT*wR^)e^Vo9aR}8SY$+-xr;=#nDOiwtq_fjhMzaN*{<&0nCK{g@$ z1Gp%x1iN$5z_|Wxc33yhwzMAK{sSX231)n#FV*gY9U)gbS`=vwaK`T{g#lb<%#S5%*kzGZ%@F)I<$oSgM0TNmjKvudg-e(us+Y@OnU!T~ zvcBKO9{(D-l*s#Yt^RA0l6gsX!lF0{^X!Ck%hVp4!$t`!;Q#)byM|_w{sCuY@Q<9I6gkb&135>?gt88AHjlf`$KZ1gIB@2k>F5pfyZX+eNs*@ui8x!&<&ccLW!bgJ%@a96v z(Q$=X>widDM%DCOO zy^q}z6No9?CrT;5V&tkr%g^>?-u@Guk-H>bYs*THoy4)9Zv6Kdp#K4Xtc6wm;{(0= z7)Ep>ZM1~r--*}*A8D47{4kZwc)!}D`@!0^Ttq4nPw1FMGVYS(Gs=Xn$PTs=o#$xp zGFHOaYlaOuSdf<%C=4wta0M@gzdE}*^tm^9LU%!dtKa47E-2oMB64>@>1nhfb~2GU z!I2W_ic2JaB~k>zLZ@{8p3?O`FA1rogS+*;1l6H&&v(JLf)1DkW*|sNJp6`>i z+#p?@YKNkFzWU!<|7Adx(|9SeUDK&ik>+L8=U-G#ulm)4v^3P8y)s>;gOarOZLn1x z!+bPbQNL<_pMU`(g$;)Jef1}a880B_HC{{o2)wu$kWoFXa0Hu}l;GLO;q|!|>OvxE z;lzs!UL7N8)>vusNwak{+>kosUK!av0>R$)BnY|-vh^Mh z5RgmBPMuSuWoPrkuE;JZ?@yG6AOooeo{f04AcIt`v(J|5EA~X{v$;!PwvZa2QM5#h z2!J|AyP55}Sa7qOp|gA`!93lkJngZ@6&wZ2D-m|*-n@~&C&Z#?XwEJUy|y>DN1jm^wtg7W*I6| zsE39cU#PP{n*>yM{Zh7pm^#-|9;sIM?)6X-^%8^&{I%puC*#w7#9or#9F^a^f<6gO z*1nv4UsLchoHAmbrQ=KsM08}Lk7~oaQo)@NIQ1j`^d5(rj6*m-04sn*o%3^9!yxYL*a)gdDt zm93uKq4N@+uSZT7IGO_0dMD;t`orqJl;B)kp=DXF09|btvW%qcA9X;M`gj+)t8~z= zh#cth2ApozJ(Ls6skt8NWI?MxA|SU?#L-fcam-x(FWo%mQtjXA%lBAj_13te=3J*A zgtEx_nmSR&tCJ)=4<>i_PmCOz|JCz^Ko6c#}&9R0r^wiy7|OjsvD`Bf4($e zgA?-{`SjtV0dp?}({&Cxae)6hs#d!Gj74#_dz9HiPF4(DOL3`FG_znW2^Y`~9rY>M zc>j&1FiGZoHL)5k;AdpRs{2pwX>tB1Dc^Gta-}XuPJJ>LmqGp;h?hAAh2AbCTh8t?X|AT@Tez`|#WmUpr8isbXDQ=IWOTgJXG8B+sPd z=DW3GPr+D;;qqnO71U`KW)_YgoKgRIhk$?%=woE{;&L~gd#7JLN0h~fXRf|Xiq{B8 zx7+{FOt)e-Ezr~kunCg!Xwph=(zW&RZpW~7H@P3gels4jg%wYvO&7!y~(ji zd7Yg}0UTWSq;Yh04w8cd(-E$$`;DMd>&`X^N`^Ded`m2HqbV8l!=Fm6bEQ_GMJk%?@RwI|%0JDiAcx2^~#d z`=|F`X%t;S<=?|W>e*{eP3}ZtddSSm{O`({bTFM)>nXZRt%s;EJLQBUT!e-T=cKQ) z1I=R~=~WY)*H%zZt0WGU2xdBSY@61N}2O-G7GtDn#QB3@2HX;-Bls;GJ& z9I=G^hNlm0-zR{Fv|rOb zFv{&$KgTO-Ov2Hcki8&*UwB&MeF<;4XZE2FIi0&TGxM>^b2A^Co|pOHOZm^Nu!LyH zM8-#apD@c!mTI!-(`8-54r(y5pOPYxY8m0NlL7b=4G`c5y9JvR zn#2GG*U<&sQwq`Ds5VM$Q9seHp2{=0r@wrjrL|rReLQ;%JT-44wd2|^gK5FDXYE(re?$S zHr;ZQOACF|*j}Ty!>4g;aIi)`E&R zj&8knbT~~eOqJxdUOTS4WXx7*2c*I92xjhHE_0W+ljQRXj&rrZAP=@pWDFv0@q3Vs zrRV#zf+q+&8yp^zr|I3BQ({99xThPam}fM3BKgct$C6J()z78iBEt3kcWGB=Hroqt zN^mfr5h-@FY+CZ1ogT3SVf6JQ(vOWW3|xScS6Xj?z(@SqkwP?wONWO(^WJ)F;9HXe z*`eOFzzLyVci{L~ai}*tFgDcd30xQ(|42$~+#{*6F^{ChM$;J~mC`U+jvNQYPI<%~ zJMp&fYY9Qn`$&2$rz55T#CsgE#YtbVGTRiW?dNcUiQT*wlQ2rEcab9_a5{z}h^ zq3d$ju_T?oOH-2{$P&{08Z@8;`OK>H^SVpJ{ZN77`YbYB;#NBu@k5`a`LbH0;piOD z%a-Sin?T;2;ApDqK@KJ}7g8K|#ZEKxG^bQ%*Jtbk$G&`}x~qo+*mQNqHe;D0)w)Mb zZ|i$x;n`p*Y<% z!zP}y)#~u&Ubg9%kEm`f9j^1b!kBy#ZmYv8`Ph;@1RvauF ziSvN#NiKmEeXV}P9|uSr?VWl*Q@Gb;(vxbCl+T$O3$VXkIuTW)7z;jU$%mv-HHkq2@hiOywfZ5f2I;zrE==hvx*&xP zVb!VNT&OOu>DDn=A6U!ahE{rU{ZzZM*uSm8#r2nbp9iV)cq*+9PrJ-gtqt!G)&o8G zH>jnrHHbhncpa4ZS?>6$e$>Fj*b=+R75vtsj7oJ4aEf51Qq9DLHUnx5tUDEXhd$)- zQR{uR408DnKOBfI+- zdcl?@?9Z54v{pk*zs*K+)Zbd~MZZ@L&iW$X&$d_#!rLmivRscNv~091z~U}v8zgHL z9WqaNq&|dOh^$42)!Iu)?1bKNYYBvJYNuWmU(cWEa5jcPEJtTp#AK)4CxAGn^zzi7 z1;d0rq=Gyp_-2<_b2e#B?vj^e8EUx?92WMntKdS>u|r?U*3Y=YToX6v(Ou#3@mU!t zkqS$tmayP!?KvagEeC6b4dV4+v56;RgGvj!NAd@inZ2eAS}mG1p_O|xxRdlw)5>>T z0gPPiHDbNJq0WqSQTA6kEz-w|b(t}i2CjU-ZlL)5j!%~`HBzxP^o+X$eiL*zRfOkk z4?FrH9Y3ZEqu}c{^rHAYCB^{56`j?s9GQnJp5Z$@^l?V-3sS(ey%2h|UntQo?7ZM! zv~GmJ_orp9et=YP;o72#&1^>R5rB7yR4DkJNOL9K0lz<-l%JROoU?AxJF+7rEH{D(tig>{X68D7@tGh7b#hF?AOMm0}tTZMpBJA|vG z7kqnLVdPXAU*Ep!&@CA$yn2)NS7E~U<^|8M4x{BFQbBa@5ec3Wy2YEujh~8rTKp%7 zcgvXr@sMv{20bKJXM%KD(QxHseQ3q}%#@tWM_0ZxwzKW_J2}Zi`$e<{$mJtfxF~1r z%WXfCh(jNq*Y_2=GpA7sH106n8E(_$_bp8o`U83}srIS0&?BhH`AmLw4WP>rGCpF{jj_ z7o?ItBYGfkK7sIf?3yoN(r7I*EgJ+Wa+*7ro=Y1lU~SbCtkR&q$i8|^`XM^~PM!Bj z?mkHMgPrOnp<*2O&s+o>DditaO}5V7NEO~`=|j!jsh8vLlq6j!7)~*vl{=9R+43p! z-$Nbd76+cyc>L;Aij4NIW#1WNQd$i0!#XpfC9~oG*Iy;ue)Z~VNgI%~@5%xymwYWC zrE_j1nFU<{Q8>3%Myd}`bJjXre|%oU81|Vvh(Fh@)Jk@CCyzNjar}iy>`F+QRytfk zvFglU^QVD74va5Tf{Y16|2RX>``-}A*hdUD{M~TRQVfS~7iEs6Cx%w`xX_wnl42xO zkHiJ9=#hvtFEDdauOyrAU?tHZT9}5qRIBf9?Z|2M-K!nBt-iH3 zOc3PtNS&EpDt;I6E}^H?ll-w0)U1X$F{o-yNFY8}Anvp3Z1cUtAn#zs>ItI_#_sB8 zqBjgz@!xm$W`Cg9Ebax|>+Ie?IvD5bP4H|4b;E7Z!b=gFhhJ}4tPSgTsUdc5c$XnD z-Rcjg4aBQ&yEM0O8f0ML**H7gzlM5;W9c)hF5qpg(Dns}XVmK-a+6t_L2b;-U*)mP zoJLhWl_!ZbuB2Yn$TGB8qkNX~y}%;9%ALZYWr>(nUv%%e)- z=5(5hnpZa3>!~du;i8#_tgb(?f-wX+kXz}#_KgUMWA`!ym&noy7p(DV`NF{-Or!Z zZw70^ljMMPNd6?cV7HL!F0~lZ2cM<%1fLk}S?E?;d@f0mQ_RW=*NNrXS>DL3?3rz| z>Sr>EUO+{oOKpHn>D5;lCT07>GrVEaa)%N|H+C~yU7=z5ld^&V0*9D7Mo>rPtjNtG zt?*bZ#dStpku8;G-Wi4QN~cC-HIuyRpe+8XT-P|u3qY!g!*of~I>{3oQGOUWBZX_S z`6DD7nnz>QrQ5`cfDC+2U_96nrj3Mm9S%k-F!9SN4^Q`s#e%2`$sW-jiiE7hDih^} z@XdLVk}*tSEON+BZFq{U)O5-2z;wh)r+;Nl3{P=xHY-h3WY$`6eYUtz)I?>|uD@HQ zN&T-Gp`tfY|Ka#tl$XEEo4NWC8O*-scyOe~*Gw@0k^dXPHNn_hXiYOn!{-h@rtvE` zIzwQv)NttG7u8Anut}>H{rdOGnA}#P1!LMoLR771RBdVj5iI|y#$~^{`C0JzREUdO zEEJ|FFH)M#$x`?=)xnuXSJ4?MPOn-BZg|wSGDmG&XlJ80D>yz;a6CFXrD4$M!GU9A zry^xFJDS?wvx!=_L#}fE<1e7%33wyE^)?NOv}$nJO^bMJ<$A4g`04#3yaJyq9_#i! zp}Dn+2U;us9Ip6%Yef|8#O@Sg+g{0h^v6GAu}1^(S&!Ah)U>l(B;^uZr}4rKwRCv_w<3g?*o0{?u*HR zyD;GA{2|fJ>mjY0kS<`FA%lcGe1Of>RQ(rG1mR$Z89f}r4#VtX(qxD_5{YKlntcr{Ntv5jAj+G) zmx<`3OBG|wBfKOJ?B=4H51NK{fgnnSe`bWM_FUA-P^B!KO)KkNfitMsBUT_$SH2A9 z&~vlbQA_4JSqiZn8F@mT!&BV3$xvT@djje%wUO!AHnMy((xcX=sos}`ObuxX!p?ut z?P|?-=sz}SDB)b^z}rf&s|%#ySc-a(30i>II@dad_o_}f6iHnjT6vjg>2Qj5qf`y}x-t6Z-UzErBs=Nw4*os5J92!M zxmq;IBff0))?470R2kqT9e@IZ1R!J-{B8C5buVh8YtlA#Ca1AFXhy_0hQ2-3^sV1r zjr#i;sFz@%yd1hl6jM~L6$xR>qXAxf@y-JT{HGe;yjx}CkL4$)7$hkw#&qa8+N}JMy5fAT5v?shDkNev>$;sjr?JGA(O0^KNk9T(IdWBEuDGrOz1Q`v+>)wQf=tR0oITsRa{)+}T7aGQ`$eUh-si*1e9 zM8xst914x?nV-pPa9f8(=i|0ipY9_GyM9T}qNjDA(3jc*{sD6l0?TAO zNN1Vyj22!w^QCLj=_zalFZF}uTf(!fLcQZWlZmG`;^Mx#L9Dyf=zX(stQ%@oIh7zd9miC56aq9rBnyZn7oV&c3#3h{2`)zhE65K{r>ND_Om5NZqH-OrmwM@~^37F9zx1sx10=n;SNkAuy zh@6JiA3G4g>bxF`65bh^hb*EaSUqr{rQM}&IZjAQ0^A$%vn2G>$*B$LYC9MLn+|$K zm7MrG^Yet><)9|TsK2p{sbT^8Co*Gg-taKE(XX{|&z?wiS_q`sseK8!X>mO=fq~X# z8A&x|S~cA$HNDZ!pK}atP!GKdctyy-8NUAf9QZD=Od+gq2&xQ zcj(4M*R2&k>3)RZQJEh}aigucR*6HNs0}-*ZYZLl_-rJ)RyVQ;cd0rM)!@{+jlZPC zGIEI^(u|o2`(7eUIG}icqD~nsgfIA%fPpcnUPAhtW&n>fz0ws^%e!6`EvXU#xy2oyPg>=%(PgPqjblbNyKi%8F?|C+`q- zY9epTDSs!Po{zdRe^C2_hMXVNg~~#eq3c7__mlhU{z-fe3BK`dl*i=VIsd#spsHbs z^)yPtW@Ce}wUAEp{>e5x<_^ijgeQ?@`wmH^`mL3L!PA;8@@~ot9nN|o<AyS1f*T8Cs-=p>dZrC*;hS%;$?#6&-MgAlrJx!{9X9i;6+>Y zZKsq*%`1oXix!f7FfuHC{+~}rwN7%kUgyCEA2o_J+0U`CCG^RmUV)<=IIw@r@)zr) z0+|s^3G00hWv%6JFcGz$#PM&-4!vIhAJ$<5{1C~1-fMCjguf^%#CSoP^ z0bz`KzYQlK{d*u>FQ%cyRMPVZg#>`Qo8*h(V>$fzsi_=XGIS&~VLbNUV8F?6-&)a) zT_pO8RldUD`zBv5*RRBNG3>K=+(FT+B>o!_UWwI6&D zUoZC>?0~B!K)SUfaFsm9&7XDhVxjuoTVKRGR$N2a8vd-4ha%Na3Daj!txw)v&9|7xPE|JS@-`V{Y^;oik>Sh;zt zbn3#!K+`wWvxaz~f8Vqw?V)^mpDyRmK39hP%4f)hL zFK{t8g;&$Uil$ZUv@@E%NDU5#0)MoMN}gvo*QKuCXEqh^^iX@ZC_U^lxI6CmT&^yDhYK>o49K3ut@gZa(pq?X6J2fNZ9y{LE+Zn^ zdl3gsHVu>LlxX~{Jws-o(-uE#xAom+eS56$PV2kF`fk_XnJ9`WmN4n__*tD++&1gG z)%tF+zMHM@ChNP=`fjkkYpw6S*7t7fd#C;iP0)Kh?qth_#w%v}6^o8s%=QS4iJ#SO zrC(!xTdePDJHO27NN1vNij({1P9mbcC$aL{eIwB+`i`c>afrN`)pI)hyA*ZZ({@p? z0*HN^w$_uw64QOc_)u&Za-YFn=~65jz-`g4CaE`JN2i*4q_8*IL~2;d zYRD?zB}~*DtQ=CWew%1gRe*=176$4XDVehxVqS8F-d#fmdM)A;Y!m)I}}>aDLjV5sOkRcaeKl`cs9jaU*oM7z3_$ zzgV48(onZ}X4U+F*|Y9~^T8rYknXujLv(saZd4$eDiEcp*Wh^8i@U5cuES!NuwfBs zP-2pbV&_(>UvYDbZ4JjzyD$Whhc7lX!kKEN%EetKPW2^CGg=@*zXc|F|0xM3=Mf|s zFX<<5(}YG1QeMY44N|#)l%|RWByrD*2Q%V9Pkf|!&<(!`w$sTbTD_)XiWI-B&7SA8Z*~OE58I z#uLROduTZpsf?`3iUj*)vv+NG3HPwTzssgJ46nHt03s!Me)aDMKaW3x@nr>;+0%_A=b*{8Y+*;O;S;bjQTJ7K6`wTrMm#t7# zTm7iGkq8@|UJdEj!OhU}L%U@g$=`@vzPV(J z=!)&q9vv``+hL@1b3T31ED6z}Q*>xBm+L(#!3$91JfHaE6Y=MncsDU<6=dm5l{GSV z;uT)u7cA6flFD2?j+XeA1Q!=CY^<-H$LrIY?l-z>_RuftAXgXG%UaW&E~LE$y5F5H z#B41@w>w=3tXI2)fQ*O6bf?SA?a?m5^9@X_?sUP9WuRksy7c8#1~FPu=9@Y8!fzK( zovP`AESkscuoumEdJX9uo;r(&Xz$NgB-USvPH9Y6m9!w*9zSbe@;Y9TRL+Xza<0+k z%uFgrqEn)^gl8TzxwNXbzO1Si%3jwn?pU6Pp8b=7&BL#I<=FKdym-C*50?y)6qA<( zsvA@3yKv_Q$v4d8(`%K^RrX(V4I^Gm@TQB#&wES+OFPj;o7o|Td;(m?aJN!Q2_X)p4{5Vu~9XWQVkzNkpFe#U`KLp0B6mhd2HN7ZwaU5^}qNi8Uar-eT3@93vU^`KPKiCLbbJD*j{ z-f&hSKQ(qVB9q+VSJgCfS;utu5tXzT)>brRziVebSF+ms=ojkrUUetZ3iZDnt-~DA z9oqW??UiRww6{@vvm+(BY6Bb7?vhc$Hd!0nZy#Q#C4*)xWIKilF6T)P8G??#+Cvb2 zk<#-(L;Xgz>|IB}vvEm;9c=io%1@P|kkc*4I=Rx>(?x4)$KyLFfzA3(UM7cq&P7+k zF6VWa<3u@GrW_CDL@=M?JuLSfPVNJC?q3|1JKN-bjz_-YMWeu@@GJI62>>dc;+(aq zlMtz6)7`Rq_p1$jk^dmgiYc?wMvt0k!iDUPjR?PXIpT&HRKrGHcJZU-`oJnrbNtqQ z(ieJPUzBBiv-OuE^*M(~sJ%QsCvPU7C~qd?dsU?+%F5%}RliM-MIT! zgdWQlJBNwEMESG?TR6>~D~bzXg1UX8r6y%Ez0^!8l*4V^e6d!Q9RWhT3_L~;`b5E1 zn~=OT&Ku{`4g|Z!Pse1HuKKod{V3O4zWd>u!-sUSQ(LTi+tO7hNbbU-XO-P4ofm(vK9sqQ7G=WvR=F5UKuOrMFP8 zDF6>AnC#u$MYOW_qlb``z0b)$OlOx-ak4w@+eP`bk9{xgN1YqV_ZFl{0!};SMSI_9 zpviAJ{3n~(BNrfzr#;M$v2V7{>A_GY2J0=Q{EC`?zvA=-jCbEyvE|N<;DJzQF6T3I zzAp{qKuVAe<)Ax$CWyORrpLErdYGtJ)w`%{%0Pl4f-H2PyEWK1iOI4DRl4)!faB*- zIn<AEr%7HGb8hkkw9S2jB6K3nftBe zX4wC~m*_ zm^=sK)Aj`S5UbJvh2}N`i&k~;Ng{9DOe5(gX3~B$|5(aaTrQ_`+Mmr4*K>j_S% z);arI=k!@ie4k8_L%VFWFqghrr-ZOfqbTeNX=DgycZ^CJ!Ryl)!O5Ir#TFX`sV=g* zQ2MVVOFbz{s4|iI)W>KlphpfR>hS!H`7`t_I*)BCa@8Z~29sp~ zF*%*`1+W?^FOy`bbjd3!|K`JbBsZx?{Mh_f7fZKaXL@9I(OA(#r7s>*4psO&Y6%uC z$#|8%_!7U+5-J4;#?TR`$oz-Y=;(KJG=3dDF6N#zCHQ-%4^k;XQ;S3&{192UP>buy z813D(x@wqx^)!nNG>KJrMzZ=_h$a9N!Ko(NhpBZ%V*AnG)o%)VEvK^Rc~LS`H7 zy;SPcFX~!v06MIT2&-5e8lf;!#W66gRuy7VZCIoTgd0$Ms>OkASb31Z(iQ&{jrT_q(%LMl5^3#d%4Yw|>dLw# z`*%*FJjmp^!C~uf@ZM{#noT;JKloghRm~xYQMc2Ww&(}H_kKK{zs$ok722E8{Y6|` zb9+~&3RKBSnx(cTC(Tmtb|sQ#AC@#*MUsw{J8xOBs?>ml2w<6{j|yg<`3G@5`*%@sSdNE*blXSnB4KgS$`ew9Xzw z6SnC*oK|}L@sZ*=GM(HJthx6MX6Sg~dm-YPt4mpnYBmv8rp6MuUh>s+YX6zy?-c(o z?LSWZTg1O#`_sfP@YJ~9l>DE<;G!h>-FAXFbr`y}78_&h#aA;*CwSRPaHpN%&J`pO zU(Gn3;2|r)-FAYV%Sj-Gr?f{k{9(UL%XH5+t-3@gDVJHe%rKztxI%kBKS#q$HTNU#>v*2?lb z8MzsPm4)B0Dyf|pC@Yk(iX{t=3N^9U$??YghPv8Xe?wipq_x7!{!6%T$-L`pt4x-{ zc@2s5HFY;9g*xF*`7`G&xuGgiz7sAdJ4y9A;r_bDqha}qup{z2aNG4kpJi^nOJ~~W zjhpE_XGSU_qP<;AY5Pn~qD7{68I&^GUb@F8;QiNse&R(s^M4}K*+JT!{Dzm8EnhOf zrlHOpm$z^FhB~$oKZ-gAfc5Lnu)S|_hRts(KW}+a1DG&>UTqnI#D#TB*ni0$%$(QS zd+}e*XA;?a@riR;phO>auCUiex$AEvNZQPs^IT}@3sy#*zF)Wzi%yQB5Q|R!FKIwh zXiX=D#z)Ky};{BeT zvW)huckB{E6V?#nS~Vzsj5tCQTEv^Vx&}gI#bq{Mjc1)iVE+y%A=={MvqRUuey92L zn9nZr*=;_1%xACp>@y!_KKsq5&wLJ;PrvyLn2*a;O`HVK7G3GPQe8!v4rRGy$KE>u!YCcoV$8SF6<}=%Tt}&mv=Ci5s+fT+6VSff|aSBiid{O^to5b;hnJd!mJ;CUze)PloZh_v~Ser>`M4 zl#f2ve6F+96Q=~#TvgA@+S$A0j*hJ zg{+ql8QYqG74p9lBE#&2+$te5;x%_#X%8oMB_V<+HST?;6~{@4;7m=H6_O$$f<865R>&vtk?RGMYQ|e3Z%K%YzN(pP zg*-1If?qZDR!E10cqF9B3VA?6G9;wk3b{){1OaQ-S|K3`5nQa&Xe;DX z*yZ(t<29FBA@53vpnHwq3VBgN1oLYaSRqeJNP&c`utI(>Au=Co)>t9;NJy!K+-rs0 zE+JDTWRn#Vln|LPHJw(-dWe_nNc)F%y=kMq**kYL}Nc%v;h}Kd*uIB*9%&S6c^5<-ly< zP58^uKv{A_!e3Zdr+GfRJsb%-dF3p%a$apvV724nsbC3AJMFL%dX*$j8moI9|Fn4x zH!NJz==iBaH18b0@Qqasf#owA7LtxLgQ|eh|Ipo$D7R!`ZPk)_iw_$oPSEToJLTD7 zg$=>Rnk2Xg*Uh!z#;=Dx$*-G|*fa+ z6EjZ+&+c%_a&Qp5B07O*#3kU?C}VRzOHW4cgXztY)KIiqv`cUA(lK5oHvcUiY}^Nl zrFS){xaDneQo~i`Ae(37yY*j&CR|jRwAIWfZ?v~@j$zZ_??UHG5h;yw(lr-eR^7t= z-SzE+IrZI^RNtLMIQ)5wF6?ZpFxj_Cw6pi^NXmD2a=uQT@8fF{yrM)q`Tm)d@80Bm z{W{;HN%n@xhLEfZa9y@jq#oWC9zQmD^jM}O>d9k|q-#rAw;-bvV)QRtF)5}J-F zbWO$G&bMWFp=&F7*W$jLUnlMs(r+feo8JIG(G^bTSlOHM1J@_*1&5`-#uB zkKZxnMRki8*DWyynpfsnnb)svKYp_WrPt0>5%yDvDe(V_JUz2=OUFk(^ z!HWw56J6tplb;p6*P!E$uCFmgDhhYj5}*99^9cVY{49sATsrmZ#{Sa2 z|9@lO&sZjpz3X41AD+}Lz%H;1J}gk6-3uf`l7?0;6M&s@`6YEZ!=J8;`=+69=h$&B zdA9;VQvRmFt_-7Lqf2RYQS~(>lV4IY6yXP(5o|=?9J>*H;Xdw|J;cSDb!#x{#U&Yk zF-O1WuN%YtF?k%P7W$nT9w}b+SG0gQKFcvlpHWX4zt>94`Jm@PNwH|89PT0Tt@=IQ zejEij&ch%?8rS1H*g?7OIrLdt|14sL+exlSO7c=auLt+INP$6KRRpIP+U^zEDr<%u zB_p4n;~5*j?Mp9h3zkyMci4}wQ^+D)XJ4wn;erDHqJc7X@D3yfBXvw6x1EgGv9iob zqyEMv7B=9LA}ksNB6g&2Y`MkzGn3>N5zIJtm5fQLtXUuvefVgeHz_Hw1Q=OmM+q<} zM;$}3mIap-(3R=xCNkL~j8@9CL>Pai9vTQ9anW%^{>ZJ+y5NbSW#e6e`T#+#8l#0aLE{ zJT4tb`ShXO-?Z+)-a$i*2t7fAds-<9f8D`)AFP@kqO$*>=J zit~;QBJb*_K8dTJ`Du=v+lSw%e(K}6x*b0%B1LjpmwbuzqPu$OwH93ZT~AT=;3A6J z!obL}XQ%rA*n1cFs)}>rd+lT=*^od21Pu~2YEYD*QK%vp4dlvwYr;)Y2_!LrK+GRiqlp1q+M-g8ik7ytT`|%}QSw*fD^ zdQU)-QUTSMi)pgS_>b`dZ4?0gd-jOzeQtStXmapvtEpyw9{U6M-4XOFF!Q~#XW-Pg z`(adYoveoC31>sK&on8|`F3UdDPX6pmQmLl?8th~d_&-!dM0@6dR78RupW$j>vs8Z zP6A%_`rKiu>>hjS=5X(y`+AYEtBoTJyuUW`t)>)!j2oLI&nMVtKcc@^`^E&L7@>)$ z$k^W6kuCsF-h-R745IIz{nhz%jW6~cH*@?gZvV-IniqoHOaK@pJJjC!JVtui`$@-c z>3D{!*ZC)ljr3vsWVji6-A&7}lsgLB>N3??C@U{kR^B^9R*qVv?m&*=2{pFeb{r8> zKNZqvcGs~VmMPE6Vo+!Fo=Bm}$<#B!Ons~} z)wM(DH6FWDGV?Z#yR*~IjKm73UEI<|r($TE{?<+Tw9T2uF#PB4$=)RX>M2MxTS*(u zm}A^hDwjOB)Mf8N<@uiMt#T}WWb=+L>BB^^L+$aHWikFgJskhs+- zR11rlT?(A=Wx|4rDw!xc?mM^+@qq0X_(}IIt&mxfgi9I|*p85I&KZ(ML51VyxP_!| zdGIYTQYIpbV4)d$f9d`&DA?m%U3*UY+tNegJR;6rI2XArwr8cLwxQcYGZx4>iLBH# zT^#j_-Lk9uMD} z?Qb{V^>$o)PS^jRPFG?^ZIgkFC#1&3DJmZHFz)djAMP<*FXpypglB_@ zfkq=CGQPY3y71qTFn2rOhcHdCL-Uvan(SB!yo(t^dN;CdK|$G);;MQ{ zJH~bhT`~cP(mX6BW%{bhtEtv-BZE5I{Z&ZJlTIQ+i?QeZ8|*oP2egiaXAm(`^RV<# zTy=k8xrq0pL6Q^(0uE~epa=<#J0~a6yE*$a&!YjMEhoc;s%SwutF)Uu7$2b}GJw8( zYrkgbGKeY z9;~JPDis`}Q-U<*^qF-!urrtpuh5J5B=@WJ>U7SaWz;^zf$K47;~b;;Mk0{f5F5E2 z$4>O+bv%uhCgSl!9DbwwWx)15z}dj`-%~-~WfTsM4F4bz8R4c=bz3@iO@&Af#0f29 zycs^vI&X$?ADtBP)L3u2&x1}2W47gnR?(;9<&A>4fOnjcfw!E95Lp7MdUGaZzn(dc zuKKPPIWK&beNOml+a6}y*Vy*8wmsao(`<#T$Jn;VwtLxj zZ`+Qw?Ks=+W7~agJKnatPFm@IZrlH`?JsQmDE9T#^uynsu5CM(tsTVPihTfk3-&(j zr?6YGH)8L?-hjOgdkywh>=oEsuzlE1VV7fX#4f_#fISa;4R!(c3hb%aKI|;)a_n)~ zMcAXT=V7N|7htDiPsL8g&caT_9)}%=Jqp{6orZmaULqCyD0VXT5$r_l!`N}y2eIAQ z2e41jZ|}oCirtER1bY|uVeD<#2eG$eAHd#%y$|~->{jfJ*t@VdU~j`-gS{1d1@;zf zANEt&<=7jsi?BCf&%<7WU4Xp;dn&dMI}6($cYMd4&ccjpmT_lbQza1FrD$w52K|x$ zf(`N^;9ELI(g(>1!x-ToA<9?jmt%Jy)%9k1ye*-gva{ubIKDl$JmKMct1ZX4 z`F_Fn*ZAIK!=IqO#o4k*H{XYB|D${_w`G?uzT0hCvO~EfPlHG2RH2(e!evYIYqLEMyNEhVo0?|CPz?AsOM z_i{pIFTt#v@{<9Z#XTjH%C{)$vhj^R8KO6i2-M+3IHFEX+EUW=xnb4gHsD)2D(qxb z9hPY4O=ojhItf-f$)}|AmpNhS{8XhA6P}Jlv(k}ro;JZdY2+#Q+ssg25+#jG{o{v` z2!{w8#O9sDD!7}}olI|G9o{Ek~0%$Az5PSqJP> zm{`^om)>7oRm~PmBJRHZ!aQ;+s+JV`;y@|YMr39|UoUkEK~1ajm8d!;-#&IX{o_YL zr&bf+v>Z&vKR;n=BR&oChmJww2{Ps-JUxlJ@uY`367r#X_vWj zg6C+4fw?BnKR!(orkus*J*-MPhVkjPpV(gGW&D~(Q}&z-7V3txwbPUqat{vQ>bZ&} z(0`w4)d>FxNygQ(0^f7})(|d}z4P(EH8Mx@x^uMU*nJBMWJft45xQ()akb*@)! zYaw4tfT&PLEoErMtXP);FTY}KIrIvA72j1r74jF^16Lt%;wQgyVpJ37e(Yjxneto0 z*HY4!UnS7@;kLf3z;~a*SWPVX33dl}HB<>iIsZa_m0-5$mvn>*pTfG7m`v9BS^hp! zv~UX40{q3UCbxoXsalQi=_ff5?nsJGdXC#is#0D)(koOvb08eQ2f$fDc$rqB$*O?m zUkp{@yjZ5FF9Ooyjeq<&sd_c>2kXAJ*NkO@(IeWi)JLjMO!Ae;{kON5J%~ zM?JEvTf00;RJ$xEdUP#M&eqtE1j+nhQE+}xZswP&w@5fM|B;0nJgfyJcpDBfvI=I_ zWAV$ZJ)Tq}=kbL%a)sKsiKQ1yO`iDC7x-J1zQxb$RvtyUfLe)`bKU9+P6D>9w6lCD zH^A3(%b>+bqOb8bxEZx29dL`f0oK~jgR2LQ1I+im4b3*KHV%)C1O08zJqgYh*P^aJ?vQtXDXEHYa6it2sl?9CMt1pqw#QE5VT7P->H^6s}pio7!BF`Wx<( zX)!3QOhD!F1h;g*PRoU;?L^{eOIT`2LB3+dVC9u8S$MH~ihD z@sE|#L9eep7L}u!scRQRODE=XxgsJWA|oT+Zg*5vRCIK7OpM3Vt5@&dv9WP+efag| z7tb$&Uq62R`3>Ng$ZsIOi}+p4FNxnEewXkY%rBYWkV`L1x%`SNQ->Dx%F(_i!PuA_ zEg3Tcb1P;BWC-Z9jvyChYV{?vaZ*0o#i2eUz4mK zbqujQ1iGoOc*I#AR9me{)<-*zQ&ixPWx}RJ@%Ys85PVG+iN^<)hm>Dal6dU3JVd%_ zxNDX}BN^5`!fqr~HS%VU6eu)?EtTxxkpzM95~M<2^W-Vtod5RVi5A^Vci zrY!O3v^*{rk38}C(DIO+H%%3fw=9oA;^7sKCd)%u(NrKFKeapti^m-CkmVjy5#BV- z6OXl)#}M(D&!5g^1PiB{3dL21>oRdI5Z7I}QpB}TT+?t}F0LYR-G=K5aTSZ}23%K) zt3+H^;u79A-6t+-h(pCyDz4KTq9wcgTX#vXYh58)Bp20;2hm^XH8vuaeAyady+8p9L;N7;GV z<>l_yaBiw~4d0_r>oWSTK5mlCE+?5q@x~Lx1=3JGnlX**K3uIs4=nCOmUYnIEUtFT zLbrM|SLN!a?RzPLelh_KE|Pt;&P>}U*9Y4SHW5R@^e@St-B%j&!nfCW1L|5j4l}@Y z{>AE>WuCgQ z!)L@d0^ZWGLef!pTO^9BB?I5cJ_XrDWxmYP!m7-|>SEe}ESYNBIKn)|3#W_pTpnAz zaAqY($pnJ$sTF9WkZ(`EuShMw>dgm$@A2ysa_@@E(LTeZfH>vRoYT%3q>jl6t`$%H zTaLE>mRxOIM6Nnxvj49++QFSUTGwa5wC0?4#w71Xddg9`nl>g^n@T+I4tnA1bG25? z!L(d$({|RLgW4bXOX0!>7mo)Zm?Dty##)q_*&3SO*DNNE>xPaY_Dd2kpM&p~A zj#3IDMW#1v@Hi&iOA6sYfJC%l$xxsP8QK;Ubfn*qtENDdQmqtotQJ#HxFFwGQCS~W zR#Jv*`i9C*+{Of^8J@93Ep}psXp_wMJy2dOz0m-m^1`45+d$3Z^jvaGh;+=Yq_fvfD+>2T znsrPlX;}`FAdLrgLJ0{i7i+Ps9#s3P3d@%IRAD?%w#KFBYV$DyAtnhda*iy$B1d}= zEMgpTdCtWgr1j>+=Y1R#t*)rrSCgat2mmn-kYKt*^9YczFAI>n37#KTo&qx10ujzg zkt0K#WGp|KPA|w$wcF(2hSvN^ymbc>jqE0bv3H2(R_AR&&`;`27}JEDOSL|EWkpQa zMU4?lCV6XeG-NJQj6<$e(aW@$NlS`_ly)H25h})k5OPu!gq(*RM_L}zstijD2<>vM z*R;arQ;V10=PQ*A^#^A2DKJ-Py=P=kvzBmt0yLjIF=Osg(XZ6{+9zr4iX(t`0=S=y zhtb5LfLIGKcsT55P+d-0I#6N{4MIt&3a+`}8Xbm9psvz-Teuu{{t%$rQ-H2^C{w5Q zs6@lS)`xti((OBGf(*Smao)n}>Sa`GskHN7VUz%0DH}zq)^*SwPR#|l!7ZYV~HHo~4 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

        0kP{{>r&-(31@`VN z^m%AcJyM^YDi;qc?g0t(QG@1MJ;Njbbp1BU8`@;=6Wk1=k=`tCCm0w+9s*+W=)4D| zjvWppAS05O7P?sIcBsh{9B`-!0iLdGl69!b>%4oYxX@1MQg_qB%xFIdU55GaL{pn} zJV{WO(1AYQee&+J=$S(khe*ECeV4`D5`B$tFUzI!!}OMpN@`zg(&_phvZnWSZ=ogQ z9t(|g&w@^d6plheAmJ?NyX``-f9+?LJ^{`*en#{!9sU!-g?;c>?$eu@c zaVd$AmM#1de}tH|Fr2*ooaO)z1=Cn2*I%P|w3Qxf%Ubq#PLT zO3tfAH!U-;*}54K*lUdzWvQ#VmszW~=*5-3YuH=#{+*oeEhlaPIunM6oXPFU+DMQv zTgL>tq83TR1}^9;rR)D>&Frq*b^}rRy0vAAiQLJT7hG9FYv2>t?3m0NYFNd3d6n&2 zY2}5BTwc-PdHmHb8|JUxKvH-4VwvymY^p+M);}OQYzT;H`aPmHu5)x5!aL@}5T3pd z<*x~o#jj0LZNUMJ3!Jjp6Hvcb_5_rxTkQ$`kWAVW2Eb<86SRk+37N2`^#%LEUS%e2 zcT0EWL~m)Vi1;&Xw-cWcJ;(m4{-pr5dEqo_`}N~%9xvk~hN@!y0}>2sZeg|X#+G>If9a(){{rX^ir|FRa*-cVNXnb67Eb2BY=5GJ>ZY{tt;#pz_oosM#gdOuHit z-Y>!&)4yh~A!irvet2T!(ryU$6P&9wsVgN@HLN=wUYO49!h}dO7^wBx8m1l28yMlk zL>5wynu_Mh=wG?diDOrZm;HS5i|y?s$;=|oDYJT5RWUG;34;gH0v13c2rs} z*rU(g^m$E{bn7>0!zG;8JaZ#`Iu+#9>I{YL44vfixgyrMM0g-n-~JF&AOAJsSm)a(p5luw|FfQoF9zOX_mwLjOL5|O_gJo(qQ5gfhH)&cCQrBw4FE42=- z*nE-{{g9jKb8nOB*Cexbri{))4h`_db~3sitiR7iFX9d<_v#PZtFv=7Oz7*{=XANv zYKX4npaxas=68eS_n748)++R}Nbst%*(sea%1>h2Snc1fyQ8NZJd1ARJ-a2zEdYs# zr89u8M`{BhP3lgh2zF#8Ed-T)<#?@^K1Dd2Xf>b6I0><(Kcsj1OV1qMTX9;TM83u8 zPs?e08Sfuz{HjM`XBc)K9JerRMVHRXq>nn$)>33Vj#= zeV}5e@?p2BF)1Q?a1M^oGIict?w)&^v)vjqBkpusks%GJdt>u(X~Gl0GU+akY?X4Y z(8+oWG+=>efxa$5UmakVrnkh8qRy>_GFJ<-n&bXf^_i?o0tQDkUEn-*I!N?Ng|x<; z8b?8{RB#~m{~P|3Kxr>tU*{D87H4Kc#ikprKcBz)r&3N&y`5Si+o?O_-}dGCkr!k` zX9a@>B4>PlaK0nML!6>h0Tq5hR`sOdm3T&#oo|+NbQV0xu95WN6AX^_EGmO+Vc7x*la8i?`F9 zZ-d&2Vkzyd*ev~+k(wwA+J^$&ebNPumUPRb;G!b3rH%j#9KB^n?&dXiUk!haPCy*q zBk+q2{I9y;H){Cx4m|oJ+Jg;lU$yqhi#oPZ$JXaswwB?k(s5csm!=V*iVGQ(aUDK= z@Xbsz+NC!h>SW}XR(>9G7Z{mkIu4RH<%o%WBQe&!5}KhQ0~9SHm|@X$nIv1Ej;T$r zB`gzq~l--$rnpBIo91msh#31;Mb9E#MGp!ea;LYEL- zj9D%4ZR~0yE3O3ln^J4_=COL^QjE0o7k8ooGQA+W0(| zg%8F_v~+Sj9WjCUdXr=x;w!Qvmr2I3k^@R9UyBP}dD=wxktr?J<$uRDDHIOE4hS3ojXR$f{3^&SV4TA82q|_&(hr+`M^7z+kLau|HN$p?z z0#Gn*=H&EKt`!E<+tikxaNs1jSiZK=Qf9r=;*|1CWU&k7cuF!6Pp<4)p4ePCy3+d7JSfl=PsQ_ zl1z+sLYsI|)~Ad^qdO8xEmfR`8~tp9!^moHQYaMO@^g^j2`$vUTET$$=#PSjh2Vh> zDP52n-$Tfv_o|LOg`w#3pq0N8R3m@WF`tplCHO-b3UXXz?+Jh9iM%FDQz6?QVYP%c zy?$Q8S_JW7u7ss z+eGhRghzqTEl$@9^vUiT-rrrR)6Gy1-#W_*o`E6^i$N{b^l#!Ed%Cyr#0F3_XOMQY zEbg+QYKG5uXh@;=^fvbI<7B#p255SgQ(3;~lZQAWs*(H~^@ z;VpszgdBR{e8fRg99Z%UrjE;Go`+7nK0EV|nDl3?cfJ(?R&vf z-6erNi8t8S{rZDPuYO;@qFc;>!iHEHoB4pML@v<8UG+)c$TyyoUPJjov$*PhC~?p!YdXw4VvJLOmi|OLV9>cjV5HLvJ}+2yb!HH79YGRFc+uqP?+% zCMDh{iPUhojYJ(mY#it#IN4k3>*p`vL&KcG31jWA7H`o)zH@z%Mo6HW~IgFv<3*z7MuqSkeJ*8C~TRMgl$6ZdNrgUtUV*)d)h7%GUreXakx0t{m z7ZKQ3ZnR?!fI~!m_oiiH0>#<}w&XZ03?XW2`5a0kO8xpYjIlaZba&gpV^XLzyj9K} ztl(r(+U1bDFjzlnfL+$F`n_9{Y6se78N4Ld&h*w#%CyVU-B6z!Iw3PqKOrknKWT9N zgaNX<(TZx4mzfD-snF1KXX+*=zcRe};gQ=hgd$2=ojG?Lr2JLh;a}E{Owg~Q|BZ@h zX=ivd7R`lAso}3^GcIRk!aM~`=L*P}EZuK@Ku?yos()j@0s~r|YMTz&uMQGmPuX8z z=);w;x`hs(spHo>@jG<CIV)lblB zcrBszVqehQSUhj5p2J44mMM#z(1`>X6h?bEF!76x8iw^9tAIPX(uh^Sl`AVCl-O?S z9_$g>c2I0PEg2QP5i5XCH~`nM%gj&@nJ@n@UNIXW2J#BXA5waml~TOkKtc#dEkNOP zI$0h$GnmHTVQ9#_7EOW}1hVhdG&3O)WJImtN|3HU{F9OS$mEpEys~#$ggY8DHNlBq ze9n;Ec(|zf{;wA@Zuc_RjAndOicaZ#jZ_I^u(5nU#4t#sXsXviZhjx zbyjko;YE-q*~)v0zj~*PG*=N0jXmf7uDiV*?GkI%F;4G93Oa|E6}|Z_hj4GjC9Ep* zQq5fqpD>xjwhK9)i)I_SMII*-!Zar)(x;IpOGIg>Ng)S%)$d_Z=sgTWa%>_ZmT5)P z^v~pJ+<}r2$ZWfBty5Xl!~JWGZegeTHHuCxb%sV7O=9@U?MK3&Cix?OA%ST@RerqH zsod8Pa_V*V+(}#Xo?C1>*;N=J2oAHaE#jlAp~=_g+J%#ksc&*&zT3!aWoG?QBQKGN z|8I@_gK4qa{vnNgoR6{H{MBMVO1H)=y|7bFWzrNF2pW_@%j z-~K;^B@5V=5t?lQqEJH|AO-PuZV~mir%it4ql_NgWn0@#av7>ilCvUpBR3f(=ysMr z*~V0k`hoI)#eL5fF&y^8MZWcc5SQhjWjn>HWd~`G1vE=IV4f&6~{30k2 z*_`HP`IUV$EMR!`Oem`o1MBBSJRR?zU-(E0F1bNNbW}k(A@;*O|o0Hl|4pVID*W@R=Oyp;eRG_G{s0lX{dGhxgHE@$kSxmy$x~ zN_ixm_Ks{u#oPK|ZEKhyTY|c3JQO3tpGdusU;a!Qh0Jj`ScyEsN9?|b_{%A?KHfEY zYjR)ALB6lfMZTQNfarvL`-;rG9-CkyE~K?JbO9oC?p2G8R)3UzfWAvCxQuG{N{)5i zo{J7`iEh$#Lhc(2OnmC@WCy5@Fqxe}3s1xz^Iwcn8NV7o`}h#NT_*ZS@qNBIW7{6D zvm+7-U80T1I(oDLj##=*)1E?wIpH*I&SZFrWT7MI1EWgq*0%CBGL^0SGWJtVE&qb> zMBC)zyYOo;SwiJbW#db-fg5EWU&9S5R}b)ju`PVS!Rhn$E>6|#EJz0vnI$)*4IUx5 zp?<*u1Uf_r;ar@7ka{23uu<%De0@ObeZb{`p2Q@!x?(do^%s1m_o%%!)jCC8!)HKU zNNtqGA2a$kpFuys7(J+K;xI;rVe+X{Nx^xrF#=y;PO0po&pjZMvo{mN z8CZS=cHCTrs2lpT2PWJEMDkh2#(`pOhO)ELRO<*CU~C-z|8N+Guo&*qx@U z*M24VT*`HGzTB~5+HnL89Q_tr0E_pV!yv0~fxDRtXEp(fo zQ=mc_6?W<8IzU~HI*FDKX;v+VFS%87CfG3v%2q~h^I5AAN8Jaz z80vI-AmK!Ed1Tc=1S59A!GOB{b3s&_Hrh}1%o=gHspSGH*fO6jN4x>Qlsf7y-#b|d ziCQwG30FXwAy4ZAPKisGefr@$YI3G2!JH%V?5j6H!d(R8Gf~C8uKMRSLkFYgkiDwEU z7=cg1JZ{C-uVZSyZlY*gi?mHjGj!|wc$_VGOcI=FJYE^c;~%&r>R80)&_-j*mbwc? zi=*e3H|f~?Qf&~x?cb5?U%M5-~OBaSK9x~|L^Um=P|$>ZiDbZWJZgC zqRc0DyU*#m9HwItV{h%n9M{*%)Rsf~h~2#?_KvwIX4Yiv)0>-Oh>(QraDKR5)3yHf zQx3~*C2Xrib`TP~ZySHLOh@0Fc}Rp!G9Dwhac94efHEGxh^c@4PVf}sGS)<=Yn`E4 zQ*gMh;Bb7Niz>*f44ZXmw$Htr+Z&q#`c`fLo3I(QF>S{5V)b9Ep-Sv9Wh!k?wFBW3@5xp8C$9?A#b6W*oagU)&+p;aZcxfGLJ@5V1%@Fd) zxaZLgVTUTGNDRei9u=hd*NQbPeShiUM`XQt4*hNT%q<55NgOC|QSuVJMw}cV_Bmk< zn^&JTU8lHFr+5~rg2-$o1)HDIY<@=Wt-DXs_3%EBD|?~3h*(Gp*xEjl(5Z7IWvsu{ zC^}-z$D-V1vh1g`yp}90s}VKG8Uy%IPS^sfjH|msE5@voqJlkY^snkqFEou=CnZRj z{3?%x<*aMfVYT{Kea3PLoYYI;sDq#2z;L76_D0k8)HRck2l}*LgL~d^ zj?2Plp@XouZrugs=HJw>w20#vv3GZO$`6F~ajHH23C zG(925@@?SYuWUEO%EyBT=nZ*SX}?2>p&KvNuyk6R;rTnUFqKTm;y<%m8?&j8kV%3i zsb+?lYqxzmme*#tixkNf@t*R4%V3eo8P!K)MWIDPQj;%$eC!&}r3sjrUpC4**{<$@ zY2s#KyIR5C0l{NI=S=nK`2Z4BK^#_7&NNomOWW&82F1dkrUko&KTT$pcxw__sXxp9 z%9~fjRU9tZHmjLZ$`tI$p~<59u~5)D3P0maeftG|UpMkZEPBRQ;xnkQWHpEtxT&QE zLg`9bWxv*>-oJw^o76SfA7DQzN?kPw=FPrE>?pKps6C&N)vI&u`QhteO z`>JIU`PR&et-E9DgWnvE6d-gXupvSVs<*M2`0v-Y zp5nG1WNM2{@6R?3ljE75oW^-Vsfhd-4I(EL-dLZr=rhk%&Y5R0sG%2;^z(;gJ}l>6 zHO-n$zzSX1>S@Ove>Q8lOm6cXfBgBhj`^G%+~dzv^oBNH7U|u+t(IrBnn$^GwVC^<<&ZhOWC^Qh9?o=&j5w_djiN6_* z&3m5Y_|2Fn)cadGZfdauWB~nx!NEZ7RD0NbFi`WnGu3zjBHNoUy0J-HT=b_&9`U zQk&KQrkCvj?sl}1pt|B2DjPKj7?7yU-C{Fn8KY_@s6~AP6hadd!pBQEdLYA5_|=gK zai^QO?}f_=2x)x7yhn)U&y53|3Tclz(-kJkKa!&K!CsoNhD&>s8PWH zMnR~)>bIkVt>@)rELT+(O`m>YOFV` zSgF!>Vo;+-h=T0@duE7dTG4 zX*{P$c(TG%;eCZ@sPiy;CM&8C5IuuOXz~*osp-^$bVq9ssl+E`xTgLO!_^{ZWnzjY z$#QjsToT;%x6w8YcPwK2Hl04;U93hc;g{?J{H`w>m8=O%PI8hf6x=HWizI#pS>sL<)Eys7RWX{_q3NH zDM5>bQtA;2g+xg0hQ#R*In8lHK7UctR1iWVYP<2HGgMDcY|Kg6wwbntBzd%75=Z%6 z(}kJ8>9pWz(}e~mxC+pFNci&Q}FPj+Uo)G1}F3Npv zhuhG1)`8sVsx3}iy4qm-rnBp*`dcuutm7Spdajv8)&ogDLG5wV=S<-AHFB4ZIG@@c ziSwB_C{34g3`vW6u6{ zJrBgdeWQdb)>73pdKKYIvH|Z-q6{PY#-(~Wi_W)=5i!YRY)rBpBm;JRtay$N3e^fK zAaBz?yFw$zg}-sm!0enUDw#^8U&QUBB-2OO_)>mrm7aqSzAxgK*}Ff66?|?2Y+2~o zXUn^Ujf-}PFmsK;HZZM6^Bc{8gq+$DvfXc#BI`f<9rP&S$yc3ieE zKB&Zf8NpKhu6J2pmviR>L8-iAmp7AVqHv(~7hfG~0E$yP*GpxQwcXsIuN7!jDN%OO zOeVE>70$oDIUr?x!jo-sMoxo^?kwjW_L;fCB}+;d26()h z*P#~_l?G-y&Y3(tJa^HYB_-(-=G?g`7$~24;m{GwEFMl5UwQyDfDUiULh&W_Km>|L zs83i(9X>#|uJd+XvD3`$oJ-KCf3kv_gO`Rzi_i?+CmmH$E0o^~q`DekFJG)tMGMxR z#T`|iP>d;R-wAVHl{v3z+oWMHhrS78>#|^Gbz%mR^27|gJFbwN9EdM_Qhe}Z@ddls z1+!ba+L-MqNU&d+A+${R|8@;*cKNtK`Mm1#ar4lcpD{(PeFv?qKt{ZLD#ThV)|Ucf z%B*SXkK6&WmAZrR$yULk_8xU9Qx`Px3yGShy2zZT`IcBp@R8Lwtt@?-`jolY(%196 z@X~qEBcDnpVK}$odSik>^G{~(0Yd+(aIlX{8s4DB>fG5a=U3l7yJY~}IRY{%<|B02 zfvTrt04#^gz%o7c+(ZHtW&_mV4YTVvecoI5`ML_}^R-@34hte%UA%V_MU?NZM$XOk zcyGP0Y*g8~>SBOpeNB}BHJ%FqaM7ASP=(JO54R+j^-{y%hzcD>Xk*nPpb*s}3es+w zOoP;WbOmJ%uc^95cf>K~loVG1VCtJ^k3$eVI^shoLh}dzB!ZU>bSkZ!qn@M=>V3w6 zMyJ|MDklwR++p?EZt+Xhu5RN00DokvET;Kx!+WhOcGjYCaLCv{*}`~z=<1cs3s!bHtni7y1bXwO@MZ92 zwv4nVkIVLr^E~`Q%cb`CadG1(*uHUbz6sf{cpiG8CC#3klkLlq*gp37oVf7?wl62n zSD<6<7erWSinJu& zDV;*wD2@ZH-h8QiL-~fwTW7lZ;?@{ne9I3azCrT9l>-=ATh2AUm@GN|lJG%`ofa|I zsRx5mSjn2$rsZ%V2$2cr!rDDE2q0~PxO)%6rfuyaMVHovmbFokL+Kw^uolLOXA?PAuOH-1@PuGiTe1cE{TQPHn?Rm$a36XI zY)~RL#agQ;9)fz7pPY>$8TXP*KPikP)ER{A z^Zvmv0GWNARORqDG&KyZx5kyun-g3RutIfN>Y)P6jA>q4mU~3{=ZAJzkVe>o8?suG zU}5eTzq**cHfw0rdx#_()JyDYG!N1OLoMc~z@DE=wm>VM1VJuLzhG~Kz7p|=v(k=| zL3ugS5rz%=DnocpbJ?e*fAb}qXrnf-VWN9;UZ%z{0HAq94k0vSx8{braT8~2B4@%a zgM`D+u;W6@W?O+YVN})MQQQ@!mAPFUA!nS5V-YJW*^)#K-V5dK*63Iks6f4za>NV& z4!kzk>}MrFRug?iTatCs52WkcIc`aD8zZ(AGzc5yxYay(n`qIOlXP%J?IY45!MUN) zQi2uiuWo46{7`Md@5D$`oO+UFe5*u;MhiSxJP^5${HM|zh?2n2=u{nb_7n;CAExvC z^4Jh*(j<+IcR8=87_m`fZeUM$c^*T! zEq+89Fs32&l>AVre$}Hg-n_yg5(mHfJdWK-DPzd=5B0l4A?y4G5jx} zg5Hx=NhkOsIZ7D28WZOHs2G_DI_Qa+YUT*;l^Y##lpBiM$C?y4ud8>^(X$;goN9x*(mj!&0ZSZ;g*Lm0gN$keW*~bJLCG8hTIu^H_+~1NxP+Q zHsfGPoOG`KxqOiPz-O@_shImumXtX(Y~q;0YYTI)W3sSclY4FI-}li!B6Dw0;em+V z*qDH=dVpow?n$U{gSzSrBJzYR4z74^n`A>co1$%5jHGo;WMiZP zd+0({^0Is?hu#dWoWS0!CU1gTC+A3cITX-E-E}KF*)@W0s{BU;uMu2Se(e-&QL}J5 zulK$96Mbx8_Bx?GZ;BA2_)Vk1^!QG9{i)ckVZta2W3wfJ`~M7A+%ap zhKY*YoZ16uUT)one5l5|-?wFt99J4M7iu=}a=tQBd$;Z+#=n_AYX4ufTDT|`y}2b7 z6jr}_2B0Ut38Dw?M9@)$QF3*J#XU+w=-B(grbmR6js!t-~N8Ki=gcZf#G`f zvX_lx2c66cSg{N-Sx?TWHloam#!|A0uMjlk2sS^6Oo&}$LCLf9K8D*tCFpWtq42=H=;`{>y5fZplz)l zo>6vqsv2V8?8YpI>^SK~ye+J5roS(OEQ2!)8*kuYzsMA+wts@0OATes*BtI!;gCS1 zC43u-Fkpr!R4adDg8gAGKg185n5Av6DrtsR1w5;o-{g{YI+QYcR_bZ*2 zeedT$Sr5O~EWgNmJ31vW!|9NflfrgX|6oF2cY@offt?z~GrDez-lp??Y9@H8TZ9^} z9u?U^33rwiC;W6$jn}Q&$$1wigjB#bG&b9YP(NPp@J^HS! zT3ZM6;JJdEp(|%__sgg>ZN&zpnudzY&HCk1=bJ%y7D`|*gto~t&4KI>7V!$2C?{Dzx@6kf2e)HssWzL+oWdI z-&1+DcEoxrS2BXl>$UGHPo<1%NcHtpu41+}2MHc6S3Fl;=c$|rq@zVobJZYEYu$ z86*9l>Qr4kmB|0C=C38X9)<;=yb=`8{+u`o?;b{O>Og56M-5lLiNgx_|$*I7Pak$gI}+LG%WOq#cH|E zvq<=lvi=E>&2Q0hl478n!clP5 zDV~=UPwEt=FfqBTdXZG%sn|gSXl0VRf2j@u|2Ifju^O)dl*8d-b+rKy{aT5W7e91c z)bH*f6MO1=Bv{J*JLe{>5Q)ic|_oCL(!6%yl9%})yvL8VCUde-P70az}%a%W0|9xiTc4iKSMN>V+n z``2wC12656VW_Q~9w3G^k(W^{H_$2!?tp-!g$UI`Aqdu#UinF8Zkpb-&zW+fTkS zon(qoP8k?KK%0Nf-2&LeNhxWo4+ z@mJd@GU0*=_1ROFr|K9rvG@F+pxiZv zj^OpFjkK`&pE#YaE^ePE_5;AaYv2!?8zn~1C3*BzH#59AKAa^9{w{>zHzonikA$DY zU^M?Ik})QTcoH08(mFG_C16U@$S%PxHw%7Dj^AeAki#iy-Da||9 z=w6XVY-Fudd)H~fi{5>~Y=skn>5iKh1WL;T!-keDSb*1>TzboVPR^E$2?iG3HYYHD z(L$P|A7E3>Sdd|xkm#P+3<5(m52P9DHy8pL581}Rb~hbimJ6f(C84q+71?bqlh z75r{DJVUQtjD~Qb+yl^dc>04D&hdX5&hY)I{DpxLo=ul^fq}PDSUVjs-UW0-XFvxD z45b2t>Sh4#Coo_^paX`B3=9YcGz_0HbkZ39JKZkmG#eug!EBjwxlG~!HWiHg7NIUT zKRj@rVYwOxBxj4xBX1YNl9}rOi%YmO*^8O@!tDa%{{SPr*!dmp&(Q6cxzo{p>d5qQ zZbXG*r{dh~@~lArscI;yibC0^sx;&3I#tc3Kr(8%;_5x}P?|^=oqcB@-AFBjv)641 z$PRHYdTh;9cq{LOqk7%H09$+ zFwz)1hz(xmTHak?VIfSv1!zxRP_fJ0$Lu@JUNZ%Xh#dnU?Q*hkIg@g!Td3@BDzrQ;MDGo#-z z7ShSk%oj^0VRwxkz%H_S`HIzkT17#ZVZ&fZ**C>%1i7=jh*pN!6FepPqb9jFZs6Kj zEvB;+aR0H=bXGsd{LW7f;D;oL_Rd!xnRy+09N4t~n8Q(Sfq@Tlky17_`%v}_4aO6` ze;|M5@)^gwcgqIx0``R~IL!2^a{&;5&me8?IDIwludB2!xT^pjpCK2*bX6KJumP(# z8)Ae^{+p%(rikE^F`-rQX9VUMFrNE6P#7@YvDXOf;h*m3uQo4~0&1aeK32mtN(X%d zlSI&^+QSWK@tm(c&zP8$X=)waHBB8r!4Y#CYaXIBj6!I&67&HNG268cp((q&_5_%x zp*?A?jt3{m4mJn-gTpjDr=~bzvP^PN)2Gg&DcBnc2_vtPK4=fuCWvcj892bR0!emp zqP#7@*{)78_kA9+)B9#*nsRsJl;Y>>;;|>Bi{AytwV*98nQe1iRA8RcFy%e>50UW6 z`2?aZZ$j{5aplBkdlQ3c`iNNQ`|I-ohMlB_U@#D1`~SM&Zf22I#|8Jd>_cc4Lc_m@ zJwTlH+2J?Leoo&nnRr~w-Ri@fuW2?YRknA(d%@k_*{`C`in<~1FAk0@F=sXxR#2~I zZIV<H>qscG#7_1Yk@rxU<*lPW+TS&<&_aZyIBb;3uxqQoVUQ*I$p#;Ur9pr{$z{$ zOomv9^&aLzTVQsh_nCpzY|gt5cPQ1?cz3WR*V)w7TpBCWmxJwz`|RR9nXkP5HMR|2 zx8h!zWEbzXy>*#QuYW_x-z+SS!yP#JuB2yRd~PZem8@2EE7#Vl~kWs#HAFcfJdlUpXE7r>GqSz0eplDP_13Ovok>!u``^6L2QRf|4xTq1KJBPBevdX-B_$7DV zX<>NDQ+_k!HnzGi72%9|Ay=}Ch4!?Bt=T|Aiwp^3DTN>nKS>G zp`aN5z$ptSa{S1&(D;q33_cifRSU;RK5P#Dt85d7`an z-@Ak0@XxmM7wb9~%?myE1+;fBomONa$0AOP*qsIKNADc>?>JVSj6giLnRhTeRhV;p6Bs z)3qs+7}3}4HM&QCs(ZAlWsp5UWVp}@)30YuG66biNO$V}x>K9%7r|7AKFj&6d8edZ zukzq$_q{HD(nWK?FtBlAcwTL6jJg?QV8xT8pG&aidl6kXiX9aFdKUIs@cjxMeA$J) zBmE|7?Wm@{7a^cYlq{#bS*#=V&A(a>rnPF(qi97Knc!*Qxi10_VA$`>tBtV~ZxNpi z$dgD;Isi#I36P{tfc)G6pJiAXO)b!$qSlBy z=N?wUG5_W~vRz&Inw(r_-(3*6CUkcJX1Bnp?tEuvmlp(CoKS5@7JSStQ0IDB$nP%r zu4H|kWbM6~KaJOGehiw&A)kXwT*zv5)M?c#5p06S+^7)9W@h=xnhWTLc;gU zW}srlG3OTeQc%amNcPbsOX(%E`cH&>stVRzb;EB7Oqq^QK0B5TTAjM*D*X_2yx2j| zMRifWJ_*zBfl}@+#SiHc`@o-!Xtvn8Q!dO21f?O~v_7B(>g#h~Q=`0pCcLe+yL`(9V z+ojXiEfbocuYDVOAXnf-C(5uCw*t7?^o{JYms8B(@R0-LHvrqZuHN(Kc<(-ZTJCT5 zDp7eqpcmHa)UK{n2X86|UjbtUT;2MbJ2xjs&CM|qx?d}lT@~8BL1P;Cc+?Q4Bm0(A z4s;0f5z=q2%-Elx6^=Zmr|4E)K_6e=(u*1Tcrmzik$4$dL-Xi!4szr~IoL~1lt*x~ zf-TeI=8)Mnf@knY+hm6*52xS#n@}*}@(k?eCo-JX_pT#!?ZeglWepaOoa;9#xj)o_ zNAv8EL}3stknH($ov0yQ1gP^Gb+8i_|PZ9i{)oUBfdW6g$0* zr$xtQBtc*P`A-B^54|THglLu9wpzi6E5i-yYASDjiVCxDoE^+^i`vn-s9qF>nsTyy zHF+gIHQ03Cs&#qO*RoEss3Y_4X|JiEplaUf>1yXKIlq64S*g5IRsMo7hJT0CnDwU%32DBRmU(ZW|x*y4PDkbeSWLNf7lT1`O z_NtlKCd)Y-?$9StKK8c9aXq!=dEu&CC1q74B_uk|iv>5i-GJ-GgsO(nXBe9~& z>GDE)Jw-D_7SozpT5a>)*IjZd_rs1?>#H-jwUlt11_fkp$*B9}9g{daZk_Nd34?p+ zS9AVj_snEe(Jf|0-OL&n4Uk=tAk1!YtBQSy@ovpNu_D$!VaHXB=oO4*ba3==9aeB- zq}vVxi`a*peV267t4oA-YyG;8K3ctJF{5MHf|`H~RE-4iI>?H)M;?)8c{kfBn+CI) zxtbNHW|p@4wB#+fk#<}|&U6b1%tZ@N<$nZHtvcwbd=Ixe`$pLmdMaPV!;Ko~(WLjG zM~UxHOW*9VvprQ$=`426>}u-rq8Ym#l&<#fQ2RN>it+9+tMZq71<`hLyC`R7wfCu- z;tFxjR!2X9&;=`MR@BPfPwYeLV9^K7VJ>)NoYgaATj(s&7b;oL$-+7D1SBbx7qjb7@Vh>rg69S+LU`+(z0&ja3%Dpq`?H8)|lE(d7ty-4Dki67Mz@3)89YlagT z{%IC}b;<-YP_ESvyYJeu(;3QT)7he(OQO(<{kT$aVNP?KdQ=}ON(0vM&}*EzF()0l z*!CWvH#P`ZdIs4O_p^UzgJA@WTIjG{r%-!;18zIX<~_HU`xA)r==8o+v0wd0stDC} z8RXqC$h*ny*IM0N1jBSvoV`)^tgpo0sC(AucaznbWH)w7w!lrc*sawreoDQ_ts((B z5;k#vP4NZ+_)Q@IAsHWU6PLDoLBX1sw7ljUZW)B_Otiq_6wd{PTd<@Uo#GgGZFun@ zPJN7YD>4P|WTw>Ukv6>N*LQ#}ktwxXbD~!)Vq*T?Aze&GS=BYp+tdBpHpp(XCHC;v z$Nl0|A5jVy?HcW=KJ^Z6mw#~X8@;PH|E7p#3)o=yDWVy&$!}DLP!}&?i?ncD_P2qQ zs!uxNUQ&B?oGWK`SN0(L96QCoI^R-nAg^Mq&aSw-3`V{});-U>(A{G#tYNd%C1ayl zmTKq15%2mM$#dMt%YT{7%)bE3wTGcK5wE-5XUHh*EsqNQU3fhF_j203$c zHJkK_`$Sno?39BX3|5bgZ;VwGTE9iSoEpo`U7`0(0!x;W>2@A2nGuJDd%pV}mlB4% z#J>T@JJ{7~?xOxU6&}SXB%@Aj6s7NE39Nl6i&o^O(`M zsF?DBwW)-wmtnn?2zvar;(c{1t(7O+O*zlMh~hby=jW8)I(N>J+$E)R0;MIcEJ%q+ z3sy{Zr;9{?*oOVGzqIp`@FX<9O+)O)Ov3S+CmuZO5#EWuS7LTvf~Q75_KnAGdf{L~ z=8Hc+x-!95aSJjMsy^|o-$KgO-wH3_sS(Y6;WvHivCRw*uI#)K!R|Pcv-3s;F6dw& z(|xK1t#`QZ5=mB_H$oCs=Z(rV-*VF)-RbbrD@fqQ2am!Nb|q6c}2_S^NDjiL4)OPcLtA_n(V%B6(HyaN8p{oCkLUIzk%NufQd znuQepT|J62WzD8m8d7mLW{1zl{7iZLRMmCMQ6A(D!;*>8+(4>tK`&9ZYCuzn*Pm|f z!!IGJ9K;RRhjGTA>{C|>wi2P9(~dNsdR9Bor;`Gb07TOIr%D4QPlFk!4|Zhyc4n()-kMdPThv6>#jQ1iVOq zs6$8^)rDN{o+7m8z*=rM{#~qNs0t!LopBkWVGMJwY_f$ba+n9I0%uKybQDXFPl{P{ z0|n2Q;93b*H{!H);_7bIOXE>M?;aYR4$fNcVzV|sk?FrSKc^;tgiqb|E3)RN`_Rww zsabf+V#Q0BN1D(Q!`HB+^#rCxbz0nSw?6S#}^JJu{GzTD^4mR69S5 zJPg9$g!9Z#)9zPsBNbYjYUii_y(2ymDQU5nH`g!^wA>yj@?t5f`%6sj3T z95XDwvUpwl(|aKp+VXjy#ZsVZAW8KmJ@UJ8I*1kQroLt2ZNb(wfiCv^>1QO^lM%JH zV1-jv>J)+oV(z}`8o`IfgqevW5-CsBAOiIi8cD0-Gh`7^6G*eJLdYn+6RUfN`wvcg zbvwX)(8090W4k@`?%^#1NtVDlxK7sm69L{ND<3{p z{Z*2k$ZVJE_oRz;i+dp|orqf=k#wz@AFZQv**7o;3OJQs>FDbttUr>k-&m}6aM zZF%DTjUOMio!Rfh+7T>vK{w@AM`oP>l>6iWB2P1}%@{07icczbD zw4`Lt!t}|(^77IJ3(|+UFr4>6N1F#n!!VGD`sOvIrn{xh5*<_CV@nfat*!E>Uaew^ zvTc_)qG?mK?y5*VgJMM{uDJbm-kg^mrRHFLXSI9Q&%xs`pzt~d?&^tcM(37oEV@_7^;RYpV-p7?yg>3Axv5TTu6iXj zdck9s+F6NZC=Cjo&CZSYRQ-rKT-G{OJxjo&xRU~_!h8gBUeeJD=By}LGGF9HtZA5`)h4+k?12i2{D1*Me65fG%KqiKDr;`Ik}WdRX*h~ za3XK{<%fbWj-^&|#-h$4Niw9WR`~B8_C%g0z?4w<9Zo@s`9_vX_8c9Yrb!A&B) zk#-fS;~K;RgG6kDsHD{l!1j2QDCs^Bh}#9Dbvd$@qi?9;jYXzmI*cQn6$s^78)W3@ z+2kVCL_KVVrw39=BWr}jxy!=lvjgr?;Jo-TFg}a`p=Jk&EtdJs_O2HEvV0teL`r@-YMwC$%-ZH z

        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

        HeU6-vaKbmEq)13Y=}LwJ~HTETE@fc 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 z z{`6<@ojsPu)Lim@T+Tg@F9SZC-1ps#XQ%F@uUVX1>^J_~53Y5bvpy>$X?w>n?j2k7 z@rcy)c~!j@r#(2cN8;0-d-1$` zs-{Z|x1Q>^rAxzt{^uuzk9fFpS<)>$yl_I$?2|p_#s|(Ey*&DKXwBq#lM~{n#kcL;n0 zp4j16`Ec(Z|KuKO{6U)M!c(&bwLT(Enw$3Lf_CFGqEFnJ-)8ccm-RiqfBbA^;ZVhb zWmTsx^*LDc<&Es8E^Bm|Tm6o#>)G|>#HK^eXyT_&{!srcRQ_dd%?+z_D@Lqeb*INi z>*t?Xog6Tt>xS_g5_{*5`DyZr0|mdjHXbB$i`lSrV|sp{+t(&smTnqVqe@ec-2Gi; z<8q%Z{-Dk5`hD*#cdRt}@ZP!0kL3Se820glRr`OM^>AEF;qTSO4TdFub2@(Y%a%oj z15RgkiIGk`?|fWz@Q)sAvi@4Vre<*GoplvoK3#FGd+pJKD$NwQUMP6j?c(x;@H5U| zcB=FF(!LAa2R`zfaQMAeiyAknQ>E_QGu=mhd?sYpua5nnPkQ+*XnpssQ&YMId&kvN z2GCC#z;=9o}@k<($xZ*Bh^Du`je`194=VMiXyV(*1bur@`HyUthVfQsR&ETmJQQ ziEEATq{aOr4z5mZt8?C4v*GjGwe#b8Uurqv&Y)|~ivzM&CuQ#aVnLf7FQ_G6Z96|* z-1laqDPMipG^v_?Wxtu#w_eKJ=TsrC!u8mvF{x*lX!fnz;D5Uyzt8a2D<*w0c0}RI zhtESgYQ{9ET4BX!%b)A&jZduCv_^+@VScTS^pZ7LG<#WYPeI5Ph0f)wRW!2yBf8dQtJDrT_`Ngh2M~AlY|8ddtt8TNNiN}q(;O#%P-4~A= zzYN;n?Rw*L$NgVE6<&8t+qt~Qu;X6O-<@)%-Jui9igTU6zB=kf^hdjn2Hk(0P(1N& zz@?^lp2$Zx-t||AFk^1-c9p7pqi>qlH-pM}wA8b}v;UB^=64(}^q-qeZJT#nU;V

        Zi@$_`nH`pAPd9HSS@x3X1K|kYx31d%a;R{0^U=xo>-1jV ztIeNdyi?-dZ*qEQ{d?)FHa&YG|7DD##z*h?um9COC+Osq;}08G8ob+WpRZToy{W?& z&WjYKjh=aSefGw=6$Z|1quQ!Zy)WK2s6n$UXO$mzST}8wN1f!@4bw(_u;8~`Vb+AB zv)T#f9olofu*rtM2MiqK)O&l#Zh4b$$LE}K-x9n#R~a$lAK|Je6)wG8<?^do});e`n zwd%g%FWUX(*k@=%)#2~{8D7&tcxA9)?$KV8_H_yIbQrhHwO~)3O)VM>TiC5n^8EKR zdbjdf>2d6`Q&$J)6SX{!T#DMM&K%Gruj7HVZxW|J{jq*`)mXoS^Fp*EV|HH&tukLX z^5@m(_61dK__+3t#yeX)t+T@QOi#_spDup2diu^&mj@I%H9Hg2wZW7A9S2sg@ubPg zYa{=u@3;E*sS}@^TJh5L^6}hiJ2uGEswS^UJ+a}maD}eY(wvPy<%zvltJ@qMRH@3Q z{SUs9_PQkA+~FxxbR@($Y~e9_Zt_V8@1c>r|NrG{C#xk9DVVMl&7D#&AC>1^~@(94xO<%BY)4@ zxD54g-z6X2lM|4=UL@=Be(2-Fmw(a9_V?{_%SRp1;K=tAuFM)86ss9EDdL|lLAk%2 zObcy4_TaJ=%ZD^?lNKpMciPN$4vDOH;VY+_rcYWO9cYb^4 z=@C(W*1}K5Y#6xeov905HS_#3z8PF;`;pe0M3oYJZ^vHfl5*1d-5SS6^_{jPBC_)I zgP-?y&R8G~80;yyEA8p|d7E9INM|&>{mzQu^&%JHj+$S`bUs{X_TWxmxZb_mr)}%g zaDGj>D}S;7ByQ1 z_3b76WKNsRn1yFH9X{r;$2C#8MLGD3rmb=p?3uf8=O^f8=i-=J`y&>GbsjLH`pKTE zZHK;kwtHEN{_d*}ZKUi;rsPB zj^ESFVe-zYfBGM|d$(<@vU$553&uw+==6@~jR$`{5+?f{OB^?1t;=6ej))dGpgq8r zLCrh(+hw4)j81V%%UoLHudum zoqI0vnR0DP@{12s$Ln`Zk}cikzaprqvgd+)>B`h;iZ4ek9##9uw(Z?~7jA0vPve6* z{y#*_So(9d*qc*FbX}2Ar@TEf{#fbe z;oIM}=oR+826wYPYu6T3^bh_T^V-G-1WC z@jXWW@xko;t?S!}MQ1-~x7xSshyQ%DHYBCR=@*{_jB@U^U`3tDKW({mdCAkie>-vE z$AD=kJ0;bBH~hlSIajjWPE`HUS^vDj6zP>ne^t%h5p5@T?D=(lXWvC1Y|rYGyiho1 zV#b^g{M*JQG^&1~V~v|LM^~wHZ1ax4mIV|~TYOpYTlJXiyDvVPKFw`L^t~G^_WgV* zKK$^+2`@&e4o>xoY2Ra6*7k<;-G>gGU9rvYDJN(7esyi%ly=uYeKO`R-&@{63;lM! zS8LDr)AQ^7@a%l{(n}Kcy4%^G%-Z}(lLpblKDsdH`(}?6@;%p+KOb}Q<~REX4jtNM z;7Omf>My!|SY^?o>ffbK^ZYi*@56b?jn3t@`o4kkdd;*}FRGrt_hmrUMa`Xh3>zPS)1NeEe+7qoQgd z$68&wG~nX>zxM6gvE}K_P;rM#NvqXIDt-Gn|CzFJ?zAOCT0i@2(UnC$qi=k(F!_VfCG7^R*7eR`TdAVD_m}6-Hjv(# zx=-7(O@%&bkG-*t>b!8U2tdwI8@$NRQh$gapW|1#M3c|7EGdac2+DI*-pk_^DgZtrzcWHxIwFdiAg|N29ji@@U;? z_@jM4&TV>iW>4W?GS%3==j8c4tISu-?(%%G|Kwe{9_P0;Q_Y*Nx)ky<{OGfd)i?j3 z|9kx6gQKVVRP8<}^U2m<l!5{iyrPua-4^)M4qf8jALh$k&`aRhF$a~++hEWk;Wd*4s9ySaJk=Flp!=grCSFhABwT5^58ea2~ zYS%0NYyR4f-c_a^8a%R9{D=BOzl8U#9NX+_RO1GR{5$(+)r_n-EqKA7*`f-OMGq;8 z5>V7pM5qxEZxyRi50}ey0hIT)_^^I`Qxu5_@~rq2d8(Z9jz>AYbqb}H@-B=I3k+AM zrm9tx_h=OFBiCpZC_$lrQ%b9or&8276p2h^M}dQfpFCM%5UpE`{>m6su9FbVzNgc3-4eT$);~ zq`aGU)=1M*6f%@s8SsVcG$?m^lv1jT3!}U*$LSJLBPt|jTewn@mY_+by!*%L47${A z5|<)ZDnnzVDep+&>#oou1B{H3tI|=Gmb4vFM1@3yWE5S4qNqNKxuc`DLAHO4G)+Ny zC!*F2Y|A4QQl&Z>vCTwmOlIxq2qns?9R!M^C{?>rT#B-1!f>kgkG-nUsbr`P)b6}q3Ry~IB6RU5@yL3pDP$oKV}LOcdO-!))}XR3a%EZ{g*-#9p}c!R zB3h+OLSpixQ&SN~OuAC1pcOoa{3#lIsCMU=7=t@`yU-5DI0`sls7ywAr$9udK-CL1 zsUxs;pCC8I@nzt$jP6K{K`7NTDG4om{bCJxenMFh@+2v0-H@{z^K}@gSl=poUF<1!=0;=|s zez7r9WU$(Zm(eNE-#^HpLm{ zgE2uvdoMCxs_8sHkp@)05m_q52q@&r%=wfaM3m{cndZh>@-?5<8mn9#UI?Z1fZ z7t=i~U7<{blz(KTN~Xz5L%xy|38n#0ps1qWXod)+sK0>*P*iecrc9ouLo*2yh32F9 z*eHLeco?_=j`UxL?(!s^=re&RUY#boLAi#e>(p^FG}4vM;&3Tl)5#ejmqf@@)$VAB z%2m29az%2APUI?dW72&UiMkZgKA~f{TB+8EJ!Q(!w6wlz&4{=(sZ8!3g`CzeJO!Cs zt`mDjL`H@7?jAohyh~`WxX5@{rj)MeE(4cGof$9B)Va|GOjE)~E_AAgG*#~86faFt zr%IWMak?y}+>JuT8Z_!rToA0s?*ZbVCoQiAVkJg zfOD)`s{k8`J<|ZZT&@a7Fj1ABDn@`9wWdjB;vTVzOynN1a!s^KmLeSH3fda<^q`z! zP6rnj$AIu+Zf;<;lUagfg(~Ywj z8bTO^)W2bC=csh0GEOl{?&1`k3QLOEm8Rf?0b)=P>F44aE7c$yLbo}4qcu>5)}Oc( zwMG}7uG6}>#-*UeVnmEOQ7(4YC1_LoqE*5zG9L?8H&GrBNFvU%KZgssfEro+i~ub!rW$TmdkW8EE{{?nL4WG)i*x zjgyX)iz8Li1f@LDnN+8dNu4+@b%KmS+(3rJH&pBA=VzBrXl}94DcC5^GZs07Bu=jL zO;4jG8hO!jL-$L7$rPUShCvdmk^7EBlNSk~9!D#!jIB8N(lyBn@0bwBBE)tWH;AK& z*2X3rBYiW`I&A5PPN^zbp-qgw^nz`}Urh#g^zDsiIFAU8It@*9uy09FyO2nlxpzk+ z1G&BexrA2ima2jZ-~w6`#sQt&VWJ3AXVSBni>02d0b?2tj=sI*77B2BQ3ImAVeIzo zuy6|w3%4;E&cPSW1SD`*Q*-@Dr!{(xzp<_(+K#4Wk(FIcmBTqJn?^749x2*Ub3&GI zxlTokaft?|jSeTAHC!q8MY|k}kq~6Eg|ja#FH*Ekuw-j#8Za*OE*#COCQlHeQOi-s zG$P&Nkc9dwmG*&a#U;>$2kDB|Xf(J<^Lv@hAH`+(}Sd>u@qqA0o1r^P&I)y4(>&NW3Tx80qbXkg4 zA>|TpntH0T#k0T~8zE8G;&K{`l`5E`JYYSe6@t0SHNhA)j@sJc=^EG*Na&)rXh%t( z5}2f6@8~2`_E4+jHpiFA!98KRl<3rq7_Is2=}I?6PqKF5K)&w|IABf(816*e)K3+l zSOVn|!xq^M^%!#MEP6xZtx8BtrME<(szlfvI=~+%2c2B2t7O)H(K;#Gdx)KM+IUSm z0!?2C#HA_dB?jbs!_-5hO*(i%woYQy#0_G2!|oE9XoyyWY_-O$)iAX(5x410Z_z`O z&}J8{!%2!v=ZbVrm^=xcZP1=l2YCj~Xgi`c2Wv*AP4lY<&ZaG7rWfiCwA@J)2$>f; zP18PXpaLgH$o6MQ07C*9f|hEV4q>v4*f5z|j@AH^*T9U6P9^5ESOu=}W19I~(ZZpT zCc}LO7o%w^aP|#DTV!(6YlhrJz~R*79ju^TfV}4Y|eK8)%x@ z5J0I`CQX!+rt=fyt-U82Mc}i6LG)IiOLdcHAS<8)1u3YdrJ!JgAbU)O=0=(gok|%f zpbE^OW*KNpL7ANe-4KW2Fc?UlA*&hZQRE>4+t;bcGfsj}ftt zOhyy%9+U7kt%b><94wAW9Hwt!@)`&J1C4!NNghs&`k36r(el{9rI2Z_>|s2ia2!zV z>3cMDS@>-WlXHvMTVO7BlWRIy?0UKQO%s+Qz0tM4Hj$1laq2G3Qm5<09=e1~WoKnp zS_<3_*=KvS+h^~I$+Js^P-TWROUvv=qZAsg&c*1+4mOWOW``Z*i}a~S>`k1F=p1J8 z25E2^;cSe=C{*;ti!jr2*>R_pk)Rt^bOGe#5hs_aRf#z19-pGn7*ifm>U51R1sA$S zDNG6XI7Ox@kl-YcQE;P_g02STVo$6clQwLix=Rz}N|+#A=we72 z&Ex@Dk^tO%j8v1XPzfDu&!(nT#=-8hpY8LW<)YBi(go-ZjOiLDz%<1;3{b06N$;yC z?nz%aYTdkb32J;m4%KMTaH zrxl7h1o)$U<1&V8yu=Y<1Xk#;0#A(I_6?p?9s(Ad8%$3r z^}WSDDA)wm0gj~h?^Do{XDQ9JjdWs;)uap50q-p8@-l3QEb%Q?bUO>2K& z*5_aKz0fwmZ~~%V?Xh z87@@O9T~R_lL<`{3?@V)g_cje2RFOJ=*7GT7rGc;gNsH8Oz+^G64RJdCtC!wXA-p$ z((lp@GDK4-LP(S%GZbx{RW2rR;>5IGu$89hLjz0^%qUX-xRqD z@W~Thyb)})1q(&r8Zc|W=q82y3g#9ENsL;Tgi zB#cy8!;wZQc9bg7X9aFdZRYa_rvxp0TV?D@H%J+#B67`Y$}ugX-2@ydwSHiKp@SPv z!lw%k=;DVdq^&7*aE(iqYS2bZmacUs@HoSpd~`LPjBc1SAkKrZC5f(CcE5(24la)Et0>uV3v3avP-fGG_l_f zwb0uJNq;$d)n{oB`h7DTZ|DP*i@oNdN(9^!dq|iXeFc}w=ORK57qOf#$PpmgE3o)* z#^0G^tUD*BF>RY2yG&ozn4P*P;~1&bLpoBCEQJdoH0d$lIT{D+zw%9ur5gs4AJ7ov z%VG;6N|2j2(ynnjd76i7m{c~x`o4qp0YZf+1l#ypkzP3lkmH2HgTmc-Gl+(T7`?lZ zqp#y!EVs>prb|?(06$4jc%^4ta`4q`py?*mDbP<6pP}Yp3Nl?8IR_!86!du($4(5H z!E^%fV9bEdkr`5rje`Zt62>!@Et3drn8XAZsb;!^_LRiw)M*kASA+yj%+`C!mJUMe zIv7`IXQY8)X*PBO(#q6Fm3qmOG;(cu5tU`apVEjB7-u@dC#5yf{Xj+f#|Kd_CQ=&rynwVj(^)r0` zY3svQOS=a;F`p-U3S8(-AY25aZz!eA7pulK4bJRns(}xk;d{}xVsyI&^SWp*#heT> zMe)*PA=(wg<*g=NC8O6r^y()gQk58~MBn0T6MtIvn%&uKKi1~g!C~%M#eqcZ@QX<@p=%4{( zEZld&3WeU|!H~=nCUUpzsmq8(KVmS!Hr{7C!VP|aQBXje z$}t|GG5Bcb7NyW%feVF((^)M3NV&3OxK0@q;q1mJ!z74333K9SB;i3s|M~#VM{v7o zOqd;=M(3b)92sHAWRW=+UUCfSupW{Oj=NXbdDVyC$o8M0pgIY*=q3d4e)Mgl* zoji>>%sZS|qenW@zbkNK4uH%7Z>8ygM|se1YS1Fe6fLJbafac5*hygj#PRB%#hZCg zTzXm>`uQc5;E=6!e0Zo-Upd>U4C!9+sYzB-fymvlDY<5W12IxWI{+elY+OI~_6e8+;x% zwkfP>c1kjKQVqkL(Jxja8L7~wOO+BW{6;|A_Fpi*Q<4^LwXGhZoY{wJ%Oeyq{^6Cd zT%%N|8L z%KrzfQW1umaVtSD5O5!Coj2(~O~wNHZc5z+dg8Qn0uw>PY6u5h<)$n)S^;*7gS z53Gb?6UyaOW_K4?ERBVyD>Oqg*A>PY%d01SlO;1;LcI0f1s}OEQx<*0EJmOAhM^A{ zD9SFUGqYnb?rGDsU)R*rj2)fnU$4PWlgi5dT*PQ)gcG}q*_9IUp5BHxR^eWnNCCEf z3}sS*ed1$(U1K``pqC`*OIz062G?2J^3_j(;oXMuEd~-~_~_T{O*OpxWxgw*Uyvde zI4|M2*@|7$Vq&epZ5Aiyt9e%Mv8M}1IM<+G`pFUuuVziV2Z3p2G~7R%zWV^EM)mN! z6xyV{q=^bObBhj}9U^H4Bhp?N4&aBzB%B@%gMB|6Z(0E7X5tJO{VE0RVBu%(R#_AV2$dcU$@dy z?cYed%9LHyy6*5Qu0%H=~W>ztlraZb;n+~U&E zcX5XOq0ZCZQ#6Mg8D8}{)B9FuW-=3wz?Uo)xmQGQ0}S-d8d~%eYL)#X?v?Ki@X@u@ zK4D{VHSF&ggBbP*CWGLKlX=N)oO#eYKAFaBeKiehV)Zwl4~^UR%E*I=b+v_I7jHw+ zmh^R;fVuc!)HR%=ZK~@@t4n|T-bJk$Wzv;+4O*tU2GhCpm!4C_idhWpt$h6P+lyH=!K?H$ADbDDImToNWv zLGPK>nzv~L^KN?#JF}9FUG&X}8hxvQzC}y6Zx3%iGEBQPaw~6pi)J>@*gJ458g!*U z@#!VkqEn?6oq0zyx6Uo_w$h#fLT-XZM@^qCpoJ}ndr%;*5{?Sdbjr?QA!I%bBrk;F z7)qwiS7pQGGa4^+S*G2Rt@~l(EWz{njM?Pj%Wlg2J1OH5V*1W1;Pre7W12b9u88xq zAF@w{A#AUUSGk|i?cUmMb*h)R-yz8sTC(J31J zs|X62RH-!k*B-21s#|PrO4XlVNQ2z5FATM)P^ zWR5QoV@!izvJG+yQ|MBqX|BFS6cycFAZSaqqZ}x2^q(GrH~km=35!8LAf*G)M(F8; zp8Mz#P!jYP1xS=}_~@gLsM0)TtWK%KeS~V4Tf1)P2=9%er1^FqEclS>phC zTzyZr!!D=m{15p*#)@&`G)b+Mk$i7^oDU~EAEz-TapOETC3*hqxE?9Mey~n#y~#A@ z0Se<7%D4h9qwAJpuH=$kmU-9)Y?&A{&S$4><{NCoXCGYuO`!JJfEPcH4`BW`ZLa6D zH?{$r8gZbCe0|C0A=7;Ay@~l4JJt=SZQ;RV9oIARzro`k>&m7WGvt$TjET*U(_}dr z$K`Jm#keuGM|bQ482j5Y?)k7`>_F`eM(p-hc*FUy4eV9Z=mT%zxVIOhEk5vp@=$Jp zH{Al{TvgII##YjLuWM|;yn`;n%pR2BO@scR3%iazX%a(8Wsr5T4aI6zbtnQW<1jETgoPZ3B>J<_9PZ?P6WQA0Xhgy|^(SiJ_!2 z$hx!=W%LKz0OJA*dC;Em;TZqMGLp}ZIAWm#)W>$QhXViW3fKnF28|uo0u-ko0z2pl z0rIiVMm|Hntu)k!V2h8doT*v1f1w=+#y&@QA(*XubdKo{mu~jvVJW~5Hng`M@V$-z zasfL8+y=%DL9e*Hh%K*9HOmr!{I%quZo|q-*Ntbjo<2;iIfA}C3#3ZfRWwjIQ=U4 zp)LeW$+o!STzd2J8Dx{?P#^1w<6JVyJhDEnYmJipWgRE=g1EK7RStPrceX6PG}#8! z#r@4iq5O3QQb$|u053a09>&i{x$0p#e09it%=B%m~_3Wiwy4zdVmR?-4 z?agD$rgh>O=j5CMe9%WErR$=6F3P137aw1qsXlPL-awB-)P$KXESo?X#&5>Qu4hOi zQbytR$(bBe4UjOZ}03H+ns>ZM`vDPNCeYhiphYoB$p1QpJq+nK@90xEjyh@FO9So3dr|q;1-O11l|xBOm*LMN?KV z@Z!Njtkk7h*tl^T*SCXOvjN7$rhH<#{0#dhiIppEh6gub3qOkww}rFqrMxz<($8$0 z;Iu`XRxprupzE>w&q`h3hx%sq*!7uGyZ&<70Anf%pzz?EJZ38a- zN`jxOKCKvN#`HI7Gu;1}zN-Jz!VQ0zmWZ4Zi~*vSDOv*jMjWQvZ$^x51EdvuO#CZ~ zTCpXx|GMqR#!RRG72xHKlw07t9Ao6; zw^hzpkIa8v{ZHGKY>0?sy-7+G(@|W;&S$6X5}4ydU$ML8C(?fvKFx3n6i2K z@?VvYT@R=2@qZF8-mBU2e_QyWeT z?0T4oFCUjn^&c~Ep{yNguutV9usS9okC_8}7$-qvNWhIT{zGhR9gLNvY%va&Z zZDINNfE2gCz)o;u{Os6K70OS z%Y^%Q5<8tnOr#!Mag3j|F&Re!KnVTde2ccNv;(}L7p{x3W6G9gn-?1L%O; zWmC`-Ke!C@le%-+7RsS6t_NnsvdFq*9P@$?;5bQfK3Rv3m!SUvKemH~96K|xPMDn! zKjy;}+XL5QQzKsq@q=7sT-v^vVw`Nrs0#XX1-^V-hr~_Bxn%L>m8So(ZLthCg*Is(@C7S@ z)SWBNRh5g6E03!#nTK`8^E^&tiu1`jbR3T>jE(F=LmXqrcCwH`WPt8m!CF2SUOs*< z*^tM^iPJz!8~_6k4qLMLu;6@leVorlf!ALBp?~@QD~TMoey=;tg&XIUq;1^a*w1m= zUi+1#t#aOS3%n5)Kyws~6_~3qeIxWLg%a%jru7wjMxA#`$2qMy5Ks57_%tU0a-vxVgs(W*m-6R;RI?2w?$`J!;Z@g zbuktT>|hJT!)_naxDIZfq;$CfJFNTkeiiFSGIGSZ+G6K%R5M}+Ua)sb0>)An_^o0G zyMgVk1U6Q#G-q{eUn`We9?C2${PtkS`$0ZkxbU*`xatBA^t)BcRj~~5gLr7)!sk&Q z^gG55lrONca-})z64*J*tz?!}|C=>I=wmN-sLzEL@?K|nE%+HQ7X41oF;>7>!~eSM zz>D9YCzP}G!gZ`bp^Ml)kLv;D3hZ`pnv1tA^GLmLoRp9ANJ^HMBwiLWO48n&$ct_8 zChAtMQ@I7oEl_TOatqjR0eW8p=fx5{_DlcoI0276f#yT|RC;f32entOJ#D`Zo|5Wk z{*3x7>9Jj{*DrKa;T=nU4j(*1T0bPeEXUi)Ky~{!d z8yj0sb~#Q1AG`lCc1%edaLEPzOA|_4-&WgPI^#NY8R7dFGn>-YMTm0O_P0_7Gcy#-)RvhxhX)fl`1r2i|03@*916iR@fl#Owd6xuC~4UGM7WiA1AnLgmBuLD1pX@(c{g#IA@ zD~%28!~Yuk--Zv6{!e0sIIJD)|F8|P%}PSC4fyJmdH+L0j8LoVAYi1&o&{RQ2e|xz z4}-0IYy+z_@|pzPATEh&ST= zH}ONm7%xd#IshAAVB4UixJkL#1~|`}|6`svfwFB-8lA8W%xDSvqcm-orY`RH(#R;U zTecPeA9|C6nU5nyZKX?!1FixDt6zgFPi?uS4W2+pu#iqu#K?dt#^Oi-L-3FO1sr*;P%x(wk zfb-dDoL?3cbO!l2;I{0+f_X4C%HWtYaGAXn>jC^^oKADdXX{{ZJ8b#vw(ONt()KYw zrd;h{T`I|t1G_CbuU3wCCARw3 zvfNgCW_WPIPKs?{Cp*n%O&|U;d+=LgFNt1Uyrxzy_r@4I)|s8=l85tf9h}CLFP|wl zX=BO9lv(C8HTm+P)LI!xg>pFWkd&56_&#Tv&gB2YZkL_ruE}Ks>)1h#HQCn6Kr+S- z9>DNo9caNu*>oAQ$*TlwI#|lX?VG5r`qs*=l|c(o&YX9d-^qg=Og6F9uB18E+UJ*L zKX!f@wo9NDj2-tsP6LJVvIr%!feAaFmF%g{$HSKoxS%B{Coz+4mIgoBE*ZCOPZM@i z9Xu|r*L;;yXbrGq8?foC;y3ATt`%QCwmGJje2iTz^UdX#G-a|jZrPHSRHiK*Ez8Zd zuq?+K*tP**UA}yf2s1jS5GT`+Z*SmhgR8zduWei=871L0)#8gW(k%O&%;&3Ho?mW( zvbF&ByRw%1Z_C3ttWma3z>5PrPNp%BH45{KwRO#W{y~!99fiG*wT2C4pf9w+_i*7M z^Kcwf5KG1l&F~UtKf_yW*zXYK_F@M~1iY2mb!bmmzEk*xxVFX>d^n%tPpAU;c z8)G@Pg*AQ>D{d1g&d2z18dKaBO-qU2OcqLD{GbQdV+{|;!sVE<<&$ZU&%FNuZl(st zh$)v1NExN^e?EMWj{~ivK|7O{xU_T>Fk*bTO`sS%rkKZ+CffZM`X6v(I}k0GI!eo= z=OvS6O&D>WiDKK}hVi>YoVG>T{2-70V60?5*1(qhl9mHj+_%sk1fbXke3WJ+{*by7 z*}PG}0|B>5#xYhlr7M*2A84OF{@LwvrAw;@$b>-J4ch`!hU4}AW%n<%#)X%i_bOUp z%$R}`!m21+e}=OA|_4 zzcg)^rfyl_FD-WVevHIpt&HS*)p%*~m$p9E8}-r(D<}55nvAfzsHvEczeg z&b3qzzt&FTAS0ucICtJ5FO8ypA?sMJDclpk*B}W;QL$zAp>?Uk7$0j!A4-0Wt>NUe3%|6tucRD*x&QO|IbZ(U=jHqwm-~OY|MU4dUp~J#y?rI+ z{%_y=a&P)P=J)q5$W{|&GRx(QzD$s zqxtf@at! zMR{H{739zqwMymrP$5WXit<6m7UfZtH=>=dQd9**d;UXFX+;8R=rf8Mi71$MjDe0V zLb{lTA|w}bfEJ(_nJx;^-^@e#4}9_qffg>?^PHgvo+CS;^pWQjO)nH8>QT7trI_;4 zzbIUW`Y%L(`wEhW=uME1=rsccLI)(v=c&FZBu7B`+}9U)Au29FsDb8X=ZFv$d=kRY z6Mz_{^~((Ogn`~<=(;@&UB4ap^8}ynWa#=`An(55>A^KpT z_q`rf1$ynk}C6NQ)cl*8p;QF<5h%yu`| zW+2}x$i6u-V^U6Q5?%j!BpLyv3%}l55px0kM04WH?RGye}&qE%RBch!1M5t>K zLIV{M6owR}frF+w2AW49OQHM%0p&$gWPhOdX__OxFQR<%#6{UfA}S=0MoVSq`Ou9U z|A@iQe2PMz0`;N<#o368DM3*Pq9RIg-v?2oR{`UHf;=%wBhSkbF%)S;rwdU2^arS( z2(|Q7ASf1~meMCocqz#X(N9Os-8VG(6gT}+{}M-Ox;uM!wqBn{`)EOSj$k*nn<~=h z&}pET#FxayD1WK=I8DWRvHoQUN>j%vpqHpil-`Hoe~G*a>N8`HX@=dNUjH)tCBmH} zDh??^o|yfjIHbU<@IWWWm)SXDEuzICl&GPerUEgOrYN8Yzu;yk$A3^Oq6eKEuZZ&m zPX35aETBAFcXBKc->2%f&VF&W^b2Zd7y4Z7@Z%xp?5833 z$L3yf&Mrc9!UHP1IJ>Cm%+nk_qA$+q4Ys}9iv`Hv z^+5L&?kN=K=Lq)P+;dZa`u@s+D+j;_?oYozU5MtKBA+53M8(A+#b|s|A&|}&Qz7@4 z-CqVY|3LnMYtyNa3D+iE13LY|^aqG$>n%c|z6g1LvEc49165N@nx>TCfq}m8fqd{z zhQ36j4W&hfwD<+e&wojIJq@9#YcDDN^Id4(eeis@g_kF61eis#pARU6{6o#*eras8xP=A;H zCGy+qqShikqLAhfusT2hJjjM3voy*xOP8XYX$4t;C%DE(r%IFM-4$A$t1%Yn&|RLS z6U`Qg;?-$FrBj$fmnuzj^$nz`=+Olv|+O0_7Gcw?MfC$}LcCfpQC!TcF$m2rBfkXv2q%0*0r+X`C||Ef zHh{-q15kD`g?#}fi2i5W0PtfQSoi@5dJ_VHAN(FcCGf+)mtwF1fuF{NbvNKgxA3&D zW6U%U$}>yj`2c+3O$i7y9`o4Ojs6e%(+{!%8VmThD0<^ufItxak8J>bZGjtO$Mg-s z4_KH!X2v;f1A`9$USe9Qu^C23WI! znZ5`=%mF2S%!IrF3APPjUW7d$dT5_F_&%qmJU+n5`zB{18^9iz+zZibgTV&$IN{Tu z%Ln*)-}HQg9q@U;D(*KOOSyh;p#{)ngH~C~haU>;RgND&Zui44>Axxgys$6kdq{g& z>PYX^4Et4BgJCa1pGVL@19q7novbV$bDLm0m?OaWNvy_wy}=gPCT}Eu z9_*w&Om+YpmW5n1=ifv;HzaG~9G7kJ}$YQj0Lc2;k@H4wl@LfwE!1ysnpcp&Y zM24!s5)Jv*@B{YOf*<6VL~%!cWctWZy#^V+U#tKkk1R?@$lV0T??_KK!5?wt=OdubxB8U+S!haY1Hih15F z+@vTyE%3vK8`s9zu-|i0;CVX&V+Y31$vD6EfX$wVErI)Yh0L!848JR62)iP) zx>)4?yBT`)%O+^C$e*DF@M8xQ^3X45faajzuaFd_7&JC0yI!6+hi<39E1zjEglP|X znZC%!@cSt-L-Ry=f){%It{g$00I9bODEb-9bkM2*ez}Dx;t`P)=VLxx56gjepbpRi z^s6tRs9i6>#ueP-!_`W)CPE=qs*~M_IP=qz0_LYB4ix1XA0O5)CL+3vRF$ZdYdpeeq0q@vQEp7SuOd;GBI+-2q`O1xB2$Lx zR8dly+&xOI()op_NHtoyPV5yC85P>Qd;HMwE}^~RBI8||Qs_>xyG+?vp-NO|#LF{v zZgc_Ditv#Oo$4V)c6W-Grl?b;OvN}|mQwCUp<+!c9T&SMX;FuVrzn((o;{U`;TpMA zC-13Alxv)wW7S#(*jDV4rZ)7RxQ{}sNKndMJYp4@a-}v_u8CI3QiQ`?K?y_i9+YEz zj67BC2!9xB3Mtx{lq1INWHg9ls8W%v5<5$kjAh)y)X+Smo>PLhhgv1~=&n%7wSI9r zjY5^I6*z%^Nn)k45$NYqmD`~X3RkCPX~4pgK!5*$t2w!dw2*`<<(ZODKS_jKrO>KJ z`k@S^gl5x9G;*z6Gg6-D=j02RbP^DWEG3tuA)ykfuB{|Rr%P+wym@j^pr2ZkjND3^ zKwAcRI~{~*`jDVsUc>a!0?i~anXvPKmz{?OyG0%veHM9+9C=P0d1w-$b&yCL5Otvb zM2!ll_92<6O36sMMvJ9UAIrT2RS5)XS1< z>xFdmaP@F)FV$-0sR_y~2@;{wcBq%GQMJ{gft@PVHcM3?Ki8_0bj@Vy)V5M>s^7?f zdXiMbIO;>ThlEKaMq$y3XdEbXS&-?X%SuB{W++raf%PCmB2gi4?NBd5u1rf&gr=n_ z6*4I}pP`h*;pY!nXfbITwM?$nsx_e+S&Bj@m+8_qNJ^7>&6&0n31si|sJvv4$!(Tt!qAb=W16v2Q2p6|Wv4NBtGtvQ5i`;1&TbTF7Kc0f|Wjt5T{;PDf4(I0*sPO@Z(==f-Zz zr>)e!IqrRA8RS{?5{Kx27s}UlZrhiy>*ecu`MO@du9vUtY5Pj=~TM#ihw6HQ)T1G4^EK~%+LM{9QXR}S3Kp+uPc-1ul|4bkrY;%>r z!_v~yLR{a@-sJ;7hP<75GjDb$%Pjz;gmVE5*X(VhsYlc(sdYM=TaD;|K}wtv3N5ZQ z_WW)+z#sBFIIawd9931Z;D_+e1;;ha<&(jZq|=1r|L4(NIarl1xt8>jPkO)@o`(iK zL)5z@A0Z?tm>bVcXw|dW7Q(YyFtVlaS}?ZO2A;`TdclqGxNoPS9=I{}envJJ7}F2u z8RIt~H^Tdc@OZ)JYkbl#*Yp!>i`9Pe(sR`P54N=OkH{708BgcaW0rMnGPQH`oa_~5 z=Jh;~iQ!>fWGB2V87NZ;(-=O71}eM?`ov#}Ow3&wMk0_SWjLm28kelf;q{#|IhN9o z#Z}rZ@ZNQfI3@O>-4m31;aBqtJiY^`HM-;;?dlKsS_AfIBKiRCKY@=gs85$iU+%T- kyzK($5zcMn8t1se4RL{6`o>n@g?|kSY1)!k;a`!$HvwhEPyhe` literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/Demo/Unit1.dcu b/official/2.1.6+2.1.beta1/TBX/Demo/Unit1.dcu new file mode 100644 index 0000000000000000000000000000000000000000..6cd9685dae208efe895acdc84f24add15a759e90 GIT binary patch literal 24839 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 a2XAszkdhS+r?SGaZrBSHw&e87y#EWSwH{Rf literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/Demo/Unit1.ddp b/official/2.1.6+2.1.beta1/TBX/Demo/Unit1.ddp new file mode 100644 index 0000000000000000000000000000000000000000..4370276c196a7fa73d6f8917622cba1c4e033dee GIT binary patch literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/Demo/Unit1.dfm b/official/2.1.6+2.1.beta1/TBX/Demo/Unit1.dfm new file mode 100644 index 0000000000000000000000000000000000000000..2f4229b63e6388c336e71d58a53f1f40f33032c1 GIT binary patch literal 95591 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 Z!i7SmblGk+hrOs%Yd$G{agznc{}0nPlFI-9 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/Demo/Unit1.pas b/official/2.1.6+2.1.beta1/TBX/Demo/Unit1.pas new file mode 100644 index 0000000..ca09a7d --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Demo/Unit1.pas @@ -0,0 +1,487 @@ +unit Unit1; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Menus, + Dialogs, ImgList, StdCtrls, ExtCtrls, ComCtrls, TBX, TB2Dock, TB2Toolbar, + TB2Item, TB2Common, TB2ExtItems, TBXMDI, TBXExtItems, TBXSwitcher, + TBXLists, TBXDkPanels, TBXToolPals, TBXStatusBars, TB2MDI, + TBXOffice2003Theme, TB2ToolWindow, + Buttons, XPMan, TBXOfficeXPTheme, TBXWhidbeyTheme; + +type + TForm1 = class(TForm) + TBDock1: TTBXDock; + TBToolbar1: TTBXToolbar; + TBXSubmenuItem1: TTBXSubmenuItem; + TBXItem1: TTBXItem; + TBXItem2: TTBXItem; + TBXItem3: TTBXItem; + TBXItem4: TTBXItem; + mnEdit: TTBXSubmenuItem; + TBXItem5: TTBXItem; + TBXSeparatorItem1: TTBXSeparatorItem; + TBXSeparatorItem2: TTBXSeparatorItem; + TBXItem6: TTBXItem; + ImageList1: TImageList; + TBXItem7: TTBXItem; + TBXSeparatorItem3: TTBXSeparatorItem; + TBXItem8: TTBXItem; + TBXSubmenuItem3: TTBXSubmenuItem; + TBXSubmenuItem4: TTBXSubmenuItem; + TBXSeparatorItem4: TTBXSeparatorItem; + TBXItem9: TTBXItem; + TBXItem10: TTBXItem; + TBXItem11: TTBXItem; + TBXItem15: TTBXItem; + TBDock2: TTBXDock; + TBDock3: TTBXDock; + TBDock4: TTBXDock; + ImageList2: TImageList; + TBXSeparatorItem11: TTBXSeparatorItem; + TBXItem29: TTBXItem; + TBXItem28: TTBXItem; + TBXItem38: TTBXItem; + TBXToolbar2: TTBXToolbar; + TBXItem40: TTBXItem; + TBXItem41: TTBXItem; + TBXItem42: TTBXItem; + TBXSeparatorItem12: TTBXSeparatorItem; + TBXItem43: TTBXItem; + TBXItem44: TTBXItem; + TBXSeparatorItem13: TTBXSeparatorItem; + TBXItem45: TTBXItem; + TBXItem46: TTBXItem; + TBXItem47: TTBXItem; + TBXSeparatorItem14: TTBXSeparatorItem; + mnUndoItems: TTBXSubmenuItem; + TBXSubmenuItem9: TTBXSubmenuItem; + TBXItem12: TTBXItem; + TBXItem13: TTBXItem; + TBXSeparatorItem6: TTBXSeparatorItem; + bColorItem: TTBXColorItem; + TBXSubmenuItem6: TTBXSubmenuItem; + ColorDialog: TColorDialog; + TBXSubmenuItem2: TTBXSubmenuItem; + TBXItem16: TTBXItem; + TBXItem17: TTBXItem; + TBXItem18: TTBXItem; + TBXItem19: TTBXItem; + TBXSeparatorItem9: TTBXSeparatorItem; + TBXItem20: TTBXItem; + TBXItem21: TTBXItem; + TBXSeparatorItem10: TTBXSeparatorItem; + TBXItem22: TTBXItem; + TBXMDIHandler1: TTBXMDIHandler; + TBXSubmenuItem5: TTBXSubmenuItem; + TBXMDIWindowItem1: TTBXMDIWindowItem; + TBXItem23: TTBXItem; + TBXItem26: TTBXItem; + TBXSeparatorItem16: TTBXSeparatorItem; + TBXSwitcher: TTBXSwitcher; + TBXPopupMenu1: TTBXPopupMenu; + TBXItem36: TTBXItem; + TBXItem37: TTBXItem; + TBXSubmenuItem7: TTBXSubmenuItem; + TBXItem39: TTBXItem; + TBXItem55: TTBXItem; + TBXSeparatorItem17: TTBXSeparatorItem; + TBXItem56: TTBXItem; + TBXItem57: TTBXItem; + TBXItem58: TTBXItem; + TBXItem59: TTBXItem; + TBXToolbar3: TTBXToolbar; + TBXSeparatorItem18: TTBXSeparatorItem; + TBXItem61: TTBXItem; + TBXItem62: TTBXItem; + TBXItem64: TTBXItem; + TBXItem65: TTBXItem; + TBXItem66: TTBXItem; + TBXSeparatorItem19: TTBXSeparatorItem; + TBXSubmenuItem8: TTBXSubmenuItem; + TBXSeparatorItem20: TTBXSeparatorItem; + MoreColors: TTBXItem; + TBXSeparatorItem5: TTBXSeparatorItem; + TBXLabelItem1: TTBXLabelItem; + TBToolbar3: TTBXToolbar; + be1: TTBXSubmenuItem; + TBXItem24: TTBXItem; + TBXItem25: TTBXItem; + TBXItem30: TTBXItem; + be2: TTBXSubmenuItem; + be3: TTBXItem; + be4: TTBXItem; + TBXSeparatorItem8: TTBXSeparatorItem; + be5: TTBXItem; + be6: TTBXItem; + be7: TTBXSubmenuItem; + TBXItem27: TTBXItem; + TBXItem31: TTBXItem; + TBXEditItem2: TTBXEditItem; + TBXSeparatorItem7: TTBXSeparatorItem; + UndoList: TTBXUndoList; + UndoLabel: TTBXLabelItem; + lstFonts: TTBXComboBoxItem; + TBXComboList1: TTBXComboBoxItem; + ColorCombo: TTBXDropDownItem; + TBXSubmenuItem10: TTBXSubmenuItem; + TBXList1: TTBXStringList; + TBXSeparatorItem15: TTBXSeparatorItem; + DockablePanel: TTBXDockablePanel; + TBXPageScroller: TTBXPageScroller; + TBXLabel1: TTBXLabel; + TBXLabel2: TTBXLabel; + TBXLabel3: TTBXLabel; + TBXAlignmentPanel2: TTBXAlignmentPanel; + ListBox1: TListBox; + TBXLabel4: TTBXLabel; + TBXAlignmentPanel4: TTBXAlignmentPanel; + TBXToolbar1: TTBXToolbar; + TBXSubmenuItem11: TTBXSubmenuItem; + TBXSeparatorItem21: TTBXSeparatorItem; + TBXComboList2: TTBXComboBoxItem; + ClrDefault: TTBXColorItem; + ColorPalette: TTBXColorPalette; + TBXSeparatorItem26: TTBXSeparatorItem; + ToolPalette: TTBXToolPalette; + TBXCheckBox1: TTBXCheckBox; + TBXRadioButton1: TTBXRadioButton; + TBXRadioButton2: TTBXRadioButton; + TBXRadioButton3: TTBXRadioButton; + TBXCheckBox2: TTBXCheckBox; + TBXLink1: TTBXLink; + TBXLabel5: TTBXLabel; + TBXStatusBar: TTBXStatusBar; + Edit1: TEdit; + bColorButton: TTBXSubmenuItem; + TBXSeparatorItem22: TTBXSeparatorItem; + TBXVisibilityToggleItem1: TTBXVisibilityToggleItem; + TBXSpinEditItem1: TTBXSpinEditItem; + TBXSeparatorItem23: TTBXSeparatorItem; + TBXComboList3: TTBXComboBoxItem; + TBXMultiDock1: TTBXMultiDock; + TBXMultiDock2: TTBXMultiDock; + TBXMultiDock3: TTBXMultiDock; + TBXMultiDock4: TTBXMultiDock; + TBXDockablePanel1: TTBXDockablePanel; + TBXDockablePanel2: TTBXDockablePanel; + TBXDockablePanel3: TTBXDockablePanel; + TBXLabel6: TTBXLabel; + TBXRadioButton4: TTBXRadioButton; + TBXRadioButton5: TTBXRadioButton; + TBXRadioButton6: TTBXRadioButton; + TBXLabel7: TTBXLabel; + TBXCheckBox3: TTBXCheckBox; + TBXCheckBox4: TTBXCheckBox; + TBXToolWindow1: TTBXToolWindow; + TBXSpinEditItem2: TTBXSpinEditItem; + TBXComboBoxItem1: TTBXComboBoxItem; + XPManifest1: TXPManifest; + TBXButton1: TTBXButton; + TBXButton2: TTBXButton; + TBXButton3: TTBXButton; + TBXPageScroller1: TTBXPageScroller; + TBXButton4: TTBXButton; + TBXButton5: TTBXButton; + TBXButton6: TTBXButton; + pruebaedit: TTBXEditItem; + procedure TBXItem31Click(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure ListBox1Click(Sender: TObject); + procedure MakeNewWindow(Sender: TObject); + procedure TBXItem23Click(Sender: TObject); + procedure TBXItem26Click(Sender: TObject); + procedure TBXItem27Click(Sender: TObject); + procedure mnUndoItemsPopup(Sender: TTBCustomItem; FromLink: Boolean); + procedure UndoListChange(Sender: TObject); + procedure lstFontsMeasureHeight(Sender: TTBXCustomList; + ACanvas: TCanvas; var AHeight: Integer); + procedure lstFontsDrawItem(Sender: TTBXCustomList; ACanvas: TCanvas; + ARect: TRect; AIndex, AHoverIndex: Integer; var DrawDefault: Boolean); + procedure TBXItem60Click(Sender: TObject); + procedure MoreColorsClick(Sender: TObject); + procedure ColorPaletteChange(Sender: TObject); + procedure ClrDefaultClick(Sender: TObject); + procedure TBXRadioButton1Change(Sender: TObject); + procedure TBXRadioButton2Change(Sender: TObject); + procedure TBXRadioButton3Change(Sender: TObject); + procedure TBXCheckBox1Change(Sender: TObject); + procedure TBXStatusBarPanelClick(Sender: TTBXCustomStatusBar; + Panel: TTBXStatusPanel); + procedure bColorButtonDrawImage(Item: TTBCustomItem; + Viewer: TTBItemViewer; Canvas: TCanvas; ImageRect: TRect; + ImageOffset: TPoint; StateFlags: Integer); + procedure TBXSpinEditItem1TextToValue(Sender: TTBXCustomSpinEditItem; + const AText: String; out AValue: Extended; var CanConvert: Boolean); + procedure TBXSpinEditItem1ValueToText(Sender: TTBXCustomSpinEditItem; + const AValue: Extended; var Text: String); + procedure TBXSpinEditItem1Convert(Sender: TTBXCustomSpinEditItem; + const APrefix, APostfix: String; var AValue: Extended; + var CanConvert: Boolean); + procedure TBXComboList3Change(Sender: TObject; const Text: String); + procedure TBXRadioButton4Click(Sender: TObject); + procedure TBXCheckBox3Change(Sender: TObject); + procedure TBXCheckBox4Change(Sender: TObject); + procedure TBXColorSet1GetColorInfo(Sender: TTBXCustomColorSet; Col, + Row: Integer; var Color: TColor; var Name: String); + procedure be3Click(Sender: TObject); + end; + +var + Form1: TForm1; + +implementation + +uses Unit2, TBXUtils, TBXThemes; + +{$R *.DFM} + +procedure TForm1.TBXItem31Click(Sender: TObject); +begin + TTBXItem(Sender).Checked := True; +end; + +procedure TForm1.FormCreate(Sender: TObject); +var + C: HCURSOR; +begin + if not IsWindowsXP then + begin + TBXLabel1.Enabled := False; + TBXCheckBox1.Enabled := False; + end; + GetAvailableTBXThemes(ListBox1.Items); + lstFonts.Strings := Screen.Fonts; + + { Replace Borland's hand cursor with windows default one, if available } + C := LoadCursor(0, IDC_HAND); + if C <> 0 then Screen.Cursors[crHandPoint] := C; +end; + +procedure TForm1.ListBox1Click(Sender: TObject); +begin + TBXSetTheme(ListBox1.Items[ListBox1.ItemIndex]); +end; + +procedure TForm1.MakeNewWindow(Sender: TObject); +begin + TForm2.Create(Self); +end; + +procedure TForm1.TBXItem23Click(Sender: TObject); +begin + Cascade; +end; + +procedure TForm1.TBXItem26Click(Sender: TObject); +begin + Tile; +end; + +procedure TForm1.TBXItem27Click(Sender: TObject); +begin + TTBXItem(Sender).Checked := True; +end; + +type + TTBViewAccess = class(TTBView); + +procedure TForm1.mnUndoItemsPopup(Sender: TTBCustomItem; FromLink: Boolean); +begin + UndoList.ItemIndex := 0; +end; + +procedure TForm1.UndoListChange(Sender: TObject); +const + Actns: array [Boolean] of string = (' Action', ' Actions'); +begin + with UndoList do + UndoLabel.UpdateCaption('Undo ' + IntToStr(ItemIndex + 1) + Actns[ItemIndex <> 0]); +end; + +procedure TForm1.lstFontsMeasureHeight(Sender: TTBXCustomList; + ACanvas: TCanvas; var AHeight: Integer); +begin + AHeight := AHeight * 3 div 2; +end; + +procedure TForm1.lstFontsDrawItem(Sender: TTBXCustomList; ACanvas: TCanvas; + ARect: TRect; AIndex, AHoverIndex: Integer; var DrawDefault: Boolean); +var + S: string; +begin + S := lstFonts.Strings[AIndex]; + ACanvas.Font.Size := 12; + ACanvas.Font.Name := S; +end; + +procedure TForm1.TBXItem60Click(Sender: TObject); +begin + DockablePanel.Visible := True; +end; + +procedure TForm1.MoreColorsClick(Sender: TObject); +begin + with ColorDialog do + begin + Color := ColorPalette.Color; + if Execute then ColorPalette.Color := Color; + end; +end; + +procedure TForm1.ColorPaletteChange(Sender: TObject); +begin + ClrDefault.Checked := ColorPalette.Color = clNone; + ColorCombo.Text := ColorPalette.ColorToString(ColorPalette.Color); + bColorItem.Color := ColorPalette.Color; + bColorItem.Caption := 'Current Color: ' + ColorPalette.ColorToString(ColorPalette.Color); + bColorButton.Invalidate; +end; + +procedure TForm1.ClrDefaultClick(Sender: TObject); +begin + ColorPalette.Color := clNone; + ClrDefault.Checked := True; +end; + +procedure TForm1.TBXRadioButton1Change(Sender: TObject); +begin + TBXSwitcher.FlatMenuStyle := fmsAuto; +end; + +procedure TForm1.TBXRadioButton2Change(Sender: TObject); +begin + TBXSwitcher.FlatMenuStyle := fmsEnable; +end; + +procedure TForm1.TBXRadioButton3Change(Sender: TObject); +begin + TBXSwitcher.FlatMenuStyle := fmsDisable; +end; + +procedure TForm1.TBXCheckBox1Change(Sender: TObject); +begin + TBXSwitcher.EnableXPStyles := TBXCheckBox1.Checked; +end; + +procedure TForm1.TBXStatusBarPanelClick(Sender: TTBXCustomStatusBar; Panel: TTBXStatusPanel); +begin + if Panel.Index in [2, 4] then Panel.Enabled := not Panel.Enabled; +end; + +procedure TForm1.bColorButtonDrawImage(Item: TTBCustomItem; + Viewer: TTBItemViewer; Canvas: TCanvas; ImageRect: TRect; + ImageOffset: TPoint; StateFlags: Integer); +var + DC: HDC; + Color: TColor; +begin + DC := Canvas.Handle; + if not Boolean(StateFlags and ISF_DISABLED) then + begin + Color := ColorPalette.Color; + OffsetRect(ImageRect, ImageOffset.X, ImageOffset.Y); + ImageRect.Top := ImageRect.Bottom - 4; + if Color <> clNone then + begin + Canvas.Brush.Color := Color; + Canvas.FillRect(ImageRect); + end + else + begin + FrameRectEx(DC, ImageRect, clBtnShadow, True); + DitherRect(DC, ImageRect, clBtnFace, clBtnShadow); + end; + end; +end; + +procedure TForm1.TBXSpinEditItem1TextToValue( + Sender: TTBXCustomSpinEditItem; const AText: String; + out AValue: Extended; var CanConvert: Boolean); +begin + if CompareText(AText, 'Auto') = 0 then + begin + AValue := 0; + CanConvert := True; + end + else if CompareText(AText, 'pi') = 0 then + begin + AValue := 3.14; + CanConvert := True; + end; +end; + +procedure TForm1.TBXSpinEditItem1ValueToText( + Sender: TTBXCustomSpinEditItem; const AValue: Extended; + var Text: String); +begin + if AValue <= 0 then Text := 'Auto'; +end; + +procedure TForm1.TBXSpinEditItem1Convert(Sender: TTBXCustomSpinEditItem; + const APrefix, APostfix: String; var AValue: Extended; + var CanConvert: Boolean); +var + S: string; +begin + S := APostfix; + + { use current units if user did not type in units explicitly } + if Length(S) = 0 then S := Sender.Postfix; + + { convert everything to mm } + if CompareText(S, 'in') = 0 then AValue := AValue * 25.4 + else if CompareText(S, 'cm') = 0 then AValue := AValue * 10; + + { convert mm to current units } + if CompareText(Sender.Postfix, 'in') = 0 then AValue := AValue / 25.4 + else if CompareText(Sender.Postfix, 'cm') = 0 then AValue := AValue * 0.1; +end; + +procedure TForm1.TBXComboList3Change(Sender: TObject; const Text: String); +begin + TBXSpinEditItem1.Postfix := Text; +end; + +procedure TForm1.TBXRadioButton4Click(Sender: TObject); +begin + TBXDockablePanel1.CaptionRotation := TDPCaptionRotation((Sender as TComponent).Tag); +end; + +procedure TForm1.TBXCheckBox3Change(Sender: TObject); +var + B: Boolean; +begin + B := (Sender as TTBXCheckBox).Checked; + DockablePanel.SmoothDrag := B; + TBXDockablePanel1.SmoothDrag := B; + TBXDockablePanel2.SmoothDrag := B; + TBXDockablePanel3.SmoothDrag := B; +end; + +procedure TForm1.TBXCheckBox4Change(Sender: TObject); +var + B: Boolean; +begin + B := (Sender as TTBXCheckBox).Checked; + DockablePanel.SmoothDockedResize := B; + TBXDockablePanel1.SmoothDockedResize := B; + TBXDockablePanel2.SmoothDockedResize := B; + TBXDockablePanel3.SmoothDockedResize := B; +end; + +procedure TForm1.TBXColorSet1GetColorInfo(Sender: TTBXCustomColorSet; Col, + Row: Integer; var Color: TColor; var Name: String); +begin + Color := clRed; + Name := 'Red'; +end; + +procedure TForm1.be3Click(Sender: TObject); +begin + TBXToolbar3.View.Select(TBXToolbar3.View.Find(pruebaedit), True); + TBXToolbar3.View.ExecuteSelected(True); +end; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/Demo/Unit2.dcu b/official/2.1.6+2.1.beta1/TBX/Demo/Unit2.dcu new file mode 100644 index 0000000000000000000000000000000000000000..596219f5e09c4d150ad8a8eed960ece00381f2c6 GIT binary patch literal 4227 zcmeHJ`)?H26~1S@Uf-Anj9Ip>>%f|T>qKM=hSHal+TOK^8+&p5z=0-|Vdn07U_G+M2Lz zVl448EZo>&zJ)#_1wACg-DUqQ+c6`CT2a9OK_0)?2|Jq7gl@MB#r`6}AIjH>a8t^V zZB0*pnZVL~u*Hy7q3$BNCs=XA))Jb6s|?7#G{G}bj#{8fs4O&cVHB_;G*6JMPAVHoubfs0)TCdQatr3Df z``RFf65U8JV|L6mNtaZJ4%Sh6*pON(SLE4woJAz5#aH$ zK7oIa_^w7NtQX3{yB7T*@0n3FU7#nldcmMEZAxc^t)Bl>1V)TgB$@3HSJe zA#5^~KI`f%!&yYAnPc=OQ9Lep^cek^89DV9L7tlFmUTPYqovd*#o%8FUEbND;8{#z z?66oeDkJskHaxTUD)!ZC|3k^D_ow#RhO44cm$#;bdX~5!pf<;C);DOP|CdDd)ViCk z*KlXpgR*@h+pRD}`Fpf1>?NJXk?WD4;AzT3qOx93mb4*pjKD?rfljfA;{-kEft-xv zxe=;MIYE>%55;LvZrZ*<=tCaVX>?AHYt}97GH#WeBI1${AhsEnMyKK1L<;4TGUbUi z|9!$fl8@#3$$C>uYWmNK;PHhBZkxqUj;Gc71yL&Q(-9LpHAN6n4A^Ig;n`;HAUDX$ z_M~a_>FOVd4F=GEzGyyF4EMaI02p%q1gtqWz8X|G=GiT zKjymfjMWJG>UNa1&u@8{&Yn; zKT2%Tn-yRn*Kgg1cXuSFS!vl;dd{u;+8(T@j1=z|Jn^=yE8;f<1hYVsDMS_-MI=!~ z*KSgnXHLH~H{nM=u=DQv)6Aa}#r3+S-J2&1nstTVXvsjGlNz@*79834&*TGjEl7;Y z_UguW<=x4-&a~b%<-usm9NKvDmE^oSw?{Q;ItF{tp_SIny4SA$dU=^N?(UaB|<@736W5_ztUg7zF!w+i2Ic4g_%X& zt&OH^iH7Y-T^$~yr6oMKkS#6B6jZ2KQmO+^NVOsN*+qe6&s2uXlv7f5CXSReR#I7l zvb*aTXTfh3Hr4WRAA`Wy(2wr^s*0^Bq*wQT?-8YvmMI&yRMxvrkQ zI96v?st3ZWuZ&!9p{BMug{M(|psDRp*VK23?gFh-hZ?8PzLJ}FO=p(O6cTCmxlJ24 zss~DXMsRYdaq2AX-B~&MHsLpJj9l3Jraj*gsYjeOd(H<&E^Pk%#*NR8)**#1iUs(; zHP#$I?)*OMD~RM8oO*V2&!aeHFxvYU<{x7)7KU*S zV6?)p5X8*hqD~&I6T9lg2Rg(syRHuVI_yJa5%-`lN`RoA;Mvj z!xj#kIc(+d9ETK#WgOBRhB@r!P{m;{hvzx$=Wvk28V)ra4s-Z4hoc;Jav0z+#NkUE z+BpO{s2oBZ$~csBNO0)ku$aR(4myVw983;2htF~7t2D3(r#V6s@c5R^^?V4@r* z%cY9}>Gg8yw<-Uf694o(m@b3swzNaXz=mnekm@MN@e(cj<-nje4E+4 zuS(L>>;(zSGgN%6Vwr?pKpMwSa9omD=nnJyD#}~Neb^f&aU5P;JMNd*;%msLn!wMR zoA_b3@l!iRqxbOBGL4@N$HSAuC2VEs%{adu_uY#7Z*RGK^MG{s7XIC-qs$`ry?J-1 M!#FIF=*#5)0mHFU9RL6T literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/Demo/Unit2.dfm b/official/2.1.6+2.1.beta1/TBX/Demo/Unit2.dfm new file mode 100644 index 0000000000000000000000000000000000000000..93c495c45db73044de9af71beb240997bec04e2c GIT binary patch literal 547 zcmX|<&2rN)5XTi8f5c9JneqTS_2{O7Q#mOL3N8z&4YCrzFztNunk#uvto}=08BMTvtr8AeLQq^;(w=Y((H}?0DO=M&L zMnQaQ>17R+Jm6fr7pm6YSSYayr^Tt=2L=`E*SPntXbrAQXeDbp z6mHD}hY+=4Rrhx<*z5K3GN~9ZUT%1iD4+&5ssQEtnbfS?#2Ytq3440WjrWmhw&O6K zX6yi5XP_=cURhs*Zir|3DRRgfYUy<5v`1y3j+BL*e|x+CfjBW|rSN>p2QuM8cJjk` z?oMAx0n-%|prfr(Oq6=$hGg*xXEgstOL+4hA(Y7GL3M=jd^S7%`S{cx?{LiFfa3@+ zK`<@vqV|E~K22i<8q^&Wk$c?jWN_EAB?Y)?n__CtaAiz$c5+g_okvoY$R~8ylW9K$ GLVp2dH>;cg literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/Demo/Unit2.pas b/official/2.1.6+2.1.beta1/TBX/Demo/Unit2.pas new file mode 100644 index 0000000..fafde92 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Demo/Unit2.pas @@ -0,0 +1,44 @@ +unit Unit2; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + ExtCtrls, StdCtrls; + +type + TForm2 = class(TForm) + Memo1: TMemo; + private + procedure WMEraseBkgnd(var Message: TMessage); message WM_ERASEBKGND; + public + constructor Create(AOwner: TComponent); override; + end; + +var + Form2: TForm2; + +implementation + +{$R *.DFM} + +var + N: Integer = 1; + +{ TForm2 } + +constructor TForm2.Create(AOwner: TComponent); +begin + inherited; + ControlStyle := ControlStyle + [csOpaque]; + Caption := 'MDI Child Window ' + IntToStr(N); + Inc(N); +end; + +procedure TForm2.WMEraseBkgnd(var Message: TMessage); +begin + Message.Result := 1; +end; + +end. + \ No newline at end of file diff --git a/official/2.1.6+2.1.beta1/TBX/Diffs/Readme.txt b/official/2.1.6+2.1.beta1/TBX/Diffs/Readme.txt new file mode 100644 index 0000000..489d9b0 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Diffs/Readme.txt @@ -0,0 +1,2 @@ +This directory contains files required for patching Toolbar 2000 +sources to make them compatible with TBX. \ No newline at end of file diff --git a/official/2.1.6+2.1.beta1/TBX/Diffs/_cvs_patch-2_1_4.bat b/official/2.1.6+2.1.beta1/TBX/Diffs/_cvs_patch-2_1_4.bat new file mode 100644 index 0000000..ff38eca --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Diffs/_cvs_patch-2_1_4.bat @@ -0,0 +1 @@ +patch -p0 --backup < _cvs_patch-2_1_4.diff diff --git a/official/2.1.6+2.1.beta1/TBX/Diffs/_cvs_patch-2_1_4.diff b/official/2.1.6+2.1.beta1/TBX/Diffs/_cvs_patch-2_1_4.diff new file mode 100644 index 0000000..49460d7 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Diffs/_cvs_patch-2_1_4.diff @@ -0,0 +1,1441 @@ +Index: TB2Common.pas +=================================================================== +RCS file: /data/cvs/tb2k/Source/TB2Common.pas,v +retrieving revision 1.28 +diff -u -r1.28 TB2Common.pas +--- TB2Common.pas 26 Feb 2004 07:05:57 -0000 1.28 ++++ TB2Common.pas 29 May 2004 22:19:14 -0000 +@@ -868,40 +868,82 @@ + procedure DrawRotatedText(const DC: HDC; AText: String; const ARect: TRect; + const AFormat: Cardinal); + { Like DrawText, but draws the text at a 270 degree angle. +- The only format flag this function respects is DT_HIDEPREFIX. Text is always +- drawn centered. } ++ The format flag this function respects are ++ DT_NOPREFIX, DT_HIDEPREFIX, DT_CENTER, DT_END_ELLIPSIS, DT_NOCLIP } + var + RotatedFont, SaveFont: HFONT; + TextMetrics: TTextMetric; +- X, Y, P, I, SU, FU: Integer; ++ X, Y, P, I, SU, FU, W: Integer; + SaveAlign: UINT; + SavePen, Pen: HPEN; ++ Clip: Boolean; ++ ++ function GetSize(DC: HDC; const S: string): Integer; ++ var ++ Size: TSize; ++ begin ++ GetTextExtentPoint32(DC, PChar(S), Length(S), Size); ++ Result := Size.cx; ++ end; ++ + begin ++ if Length(AText) = 0 then Exit; ++ + RotatedFont := CreateRotatedFont(DC); + SaveFont := SelectObject(DC, RotatedFont); + + GetTextMetrics(DC, TextMetrics); + X := ARect.Left + ((ARect.Right - ARect.Left) - TextMetrics.tmHeight) div 2; +- Y := ARect.Top + ((ARect.Bottom - ARect.Top) - GetTextWidth(DC, AText, True)) div 2; ++ ++ Clip := (AFormat and DT_NOCLIP) <> DT_NOCLIP; + + { Find the index of the character that should be underlined. Delete '&' + characters from the string. Like DrawText, only the last prefixed character + will be underlined. } + P := 0; + I := 1; +- while I <= Length(AText) do begin +- if AText[I] in LeadBytes then +- Inc(I) +- else if AText[I] = '&' then begin +- Delete(AText, I, 1); +- { Note: PChar cast is so that if Delete deleted the last character in +- the string, we don't step past the end of the string (which would cause +- an AV if AText is now empty), but rather look at the null character +- and treat it as an accelerator key like DrawText. } +- if PChar(AText)[I-1] <> '&' then +- P := I; ++ if (AFormat and DT_NOPREFIX) <> DT_NOPREFIX then ++ while I <= Length(AText) do begin ++ if AText[I] in LeadBytes then ++ Inc(I) ++ else if AText[I] = '&' then begin ++ Delete(AText, I, 1); ++ { Note: PChar cast is so that if Delete deleted the last character in ++ the string, we don't step past the end of the string (which would cause ++ an AV if AText is now empty), but rather look at the null character ++ and treat it as an accelerator key like DrawText. } ++ if PChar(AText)[I-1] <> '&' then ++ P := I; ++ end; ++ Inc(I); ++ end; ++ ++ if (AFormat and DT_END_ELLIPSIS) = DT_END_ELLIPSIS then ++ begin ++ if (Length(AText) > 1) and (GetSize(DC, AText) > ARect.Bottom - ARect.Top) then ++ begin ++ W := ARect.Bottom - ARect.Top; ++ if W > 2 then ++ begin ++ Delete(AText, Length(AText), 1); ++ while (Length(AText) > 1) and (GetSize(DC, AText + '...') > W) do ++ Delete(AText, Length(AText), 1); ++ end ++ else AText := AText[1]; ++ if P > Length(AText) then P := 0; ++ AText := AText + '...'; + end; +- Inc(I); ++ end; ++ ++ if (AFormat and DT_CENTER) = DT_CENTER then ++ Y := ARect.Top + ((ARect.Bottom - ARect.Top) - GetSize(DC, AText)) div 2 ++ else ++ Y := ARect.Top; ++ ++ if Clip then ++ begin ++ SaveDC(DC); ++ with ARect do IntersectClipRect(DC, Left, Top, Right, Bottom); + end; + + SaveAlign := SetTextAlign(DC, TA_BOTTOM); +@@ -920,6 +962,8 @@ + DeleteObject(Pen); + end; + ++ if Clip then RestoreDC(DC, -1); ++ + SelectObject(DC, SaveFont); + DeleteObject(RotatedFont); + end; +Index: TB2Dock.pas +=================================================================== +RCS file: /data/cvs/tb2k/Source/TB2Dock.pas,v +retrieving revision 1.88 +diff -u -r1.88 TB2Dock.pas +--- TB2Dock.pas 26 Feb 2004 07:05:57 -0000 1.88 ++++ TB2Dock.pas 29 May 2004 22:19:14 -0000 +@@ -82,9 +82,6 @@ + FDisableArrangeToolbars: Integer; { Increment to disable ArrangeToolbars } + FArrangeToolbarsNeeded: Boolean; + FNonClientWidth, FNonClientHeight: Integer; +- DockList: TList; { List of the toolbars docked, and those floating and have LastDock +- pointing to the dock. Items are casted in TTBCustomDockableWindow's. } +- DockVisibleList: TList; { Similar to DockList, but lists only docked and visible toolbars } + + { Property access methods } + //function GetVersion: TToolbar97Version; +@@ -102,14 +99,11 @@ + { Internal } + procedure BackgroundChanged(Sender: TObject); + procedure ChangeDockList(const Insert: Boolean; const Bar: TTBCustomDockableWindow); +- procedure ChangeWidthHeight(const NewWidth, NewHeight: Integer); + procedure CommitPositions; + procedure DrawNCArea(const DrawToDC: Boolean; const ADC: HDC; + const Clip: HRGN); + function GetDesignModeRowOf(const XY: Integer): Integer; +- function HasVisibleToolbars: Boolean; + procedure RelayMsgToFloatingBars(var Message: TMessage); +- function ToolbarVisibleOnDock(const AToolbar: TTBCustomDockableWindow): Boolean; + procedure ToolbarVisibilityChanged(const Bar: TTBCustomDockableWindow; + const ForceRemove: Boolean); + +@@ -128,21 +122,30 @@ + procedure WMPrintClient(var Message: TMessage); message WM_PRINTCLIENT; + procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND; + protected ++ DockList: TList; { List of the toolbars docked, and those floating and have LastDock ++ pointing to the dock. Items are casted in TTBCustomDockableWindow's. } ++ DockVisibleList: TList; { Similar to DockList, but lists only docked and visible toolbars } ++ function Accepts(ADockableWindow: TTBCustomDockableWindow): Boolean; virtual; + procedure AlignControls(AControl: TControl; var Rect: TRect); override; ++ procedure ChangeWidthHeight(const NewWidth, NewHeight: Integer); + procedure DrawBackground(DC: HDC; const DrawRect: TRect); virtual; + function GetPalette: HPALETTE; override; ++ function HasVisibleToolbars: Boolean; + procedure InvalidateBackgrounds; + procedure Loaded; override; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure SetParent(AParent: TWinControl); override; ++ function ToolbarVisibleOnDock(const AToolbar: TTBCustomDockableWindow): Boolean; + procedure Paint; override; + function UsingBackground: Boolean; virtual; ++ property ArrangeToolbarsNeeded: Boolean read FArrangeToolbarsNeeded write FArrangeToolbarsNeeded; ++ property DisableArrangeToolbars: Integer read FDisableArrangeToolbars write FDisableArrangeToolbars; + public + constructor Create(AOwner: TComponent); override; + procedure CreateParams(var Params: TCreateParams); override; + destructor Destroy; override; + +- procedure ArrangeToolbars; ++ procedure ArrangeToolbars; virtual; + procedure BeginUpdate; + procedure EndUpdate; + function GetCurrentRowSize(const Row: Integer; var AFullSize: Boolean): Integer; +@@ -266,6 +269,7 @@ + private + { Property variables } + FAutoResize: Boolean; ++ FDblClickUndock: Boolean; + FDockPos, FDockRow, FEffectiveDockPos, FEffectiveDockRow: Integer; + FDocked: Boolean; + FCurrentDock, FDefaultDock, FLastDock: TTBDock; +@@ -427,6 +431,7 @@ + { Methods accessible to descendants } + procedure Arrange; + function CalcNCSizes: TPoint; virtual; ++ function CanDockTo(ADock: TTBDock): Boolean; virtual; + procedure ChangeSize(AWidth, AHeight: Integer); + function ChildControlTransparent(Ctl: TControl): Boolean; dynamic; + procedure Close; +@@ -451,7 +456,10 @@ + procedure ResizeTrack(var Rect: TRect; const OrigRect: TRect); dynamic; + procedure ResizeTrackAccept; dynamic; + procedure SizeChanging(const AWidth, AHeight: Integer); virtual; ++ property EffectiveDockPosAccess: Integer read FEffectiveDockPos write FEffectiveDockPos; ++ property EffectiveDockRowAccess: Integer read FEffectiveDockRow write FEffectiveDockRow; + public ++ property DblClickUndock: Boolean read FDblClickUndock write FDblClickUndock default True; + property Docked: Boolean read FDocked; + property CurrentDock: TTBDock read FCurrentDock write SetCurrentDock stored False; + property CurrentSize: Integer read FCurrentSize write FCurrentSize; +@@ -1000,6 +1008,11 @@ + end; + end; + ++function TTBDock.Accepts(ADockableWindow: TTBCustomDockableWindow): Boolean; ++begin ++ Result := AllowDrag; ++end; ++ + procedure TTBDock.AlignControls(AControl: TControl; var Rect: TRect); + begin + ArrangeToolbars; +@@ -2494,6 +2507,7 @@ + FActivateParent := True; + FBorderStyle := bsSingle; + FCloseButton := True; ++ FDblClickUndock := True; + FDockableTo := [dpTop, dpBottom, dpLeft, dpRight]; + FDockableWindowStyles := [tbdsResizeEightCorner, tbdsResizeClipCursor]; + FDockPos := -1; +@@ -2911,6 +2925,11 @@ + RemoveFromList(FDockForms, Form); + end; + ++function TTBCustomDockableWindow.CanDockTo(ADock: TTBDock): Boolean; ++begin ++ Result := ADock.Position in DockableTo; ++end; ++ + function TTBCustomDockableWindow.IsAutoResized: Boolean; + begin + Result := AutoResize or Assigned(CurrentDock) or Floating; +@@ -3879,11 +3898,6 @@ + + procedure BuildDockList; + +- function AcceptableDock(const D: TTBDock): Boolean; +- begin +- Result := D.FAllowDrag and (D.Position in DockableTo); +- end; +- + procedure Recurse(const ParentCtl: TWinControl); + var + D: TTBDockPosition; +@@ -3900,7 +3914,7 @@ + if (Controls[I] is TWinControl) and not(Controls[I] is TTBDock) then + Recurse(TWinControl(Controls[I])); + end; +- if (ParentCtl is TTBDock) and AcceptableDock(TTBDock(ParentCtl)) and ++ if (ParentCtl is TTBDock) and TTBDock(ParentCtl).Accepts(Self) and CanDockTo(TTBDock(ParentCtl)) and + (DockList.IndexOf(ParentCtl) = -1) then + DockList.Add(ParentCtl); + end; +@@ -3912,7 +3926,7 @@ + begin + { Manually add CurrentDock to the DockList first so that it gets priority + over other docks } +- if Assigned(CurrentDock) and AcceptableDock(CurrentDock) then ++ if Assigned(CurrentDock) and CurrentDock.Accepts(Self) and CanDockTo(CurrentDock) then + DockList.Add(CurrentDock); + ParentForm := TBGetToolWindowParentForm(Self); + DockFormsList := TList.Create; +@@ -4201,19 +4215,20 @@ + procedure TTBCustomDockableWindow.DoubleClick; + begin + if Docked then begin +- if DockMode = dmCanFloat then begin ++ if DblClickUndock and (DockMode = dmCanFloat) then begin + Floating := True; + MoveOnScreen(True); + end; + end +- else +- if Assigned(LastDock) then +- Parent := LastDock +- else +- if Assigned(DefaultDock) then begin +- FDockRow := ForceDockAtTopRow; +- FDockPos := ForceDockAtLeftPos; +- Parent := DefaultDock; ++ else if Floating then begin ++ if Assigned(LastDock) then ++ Parent := LastDock ++ else ++ if Assigned(DefaultDock) then begin ++ FDockRow := ForceDockAtTopRow; ++ FDockPos := ForceDockAtLeftPos; ++ Parent := DefaultDock; ++ end; + end; + end; + +Index: TB2DsgnItemEditor.pas +=================================================================== +RCS file: /data/cvs/tb2k/Source/TB2DsgnItemEditor.pas,v +retrieving revision 1.52 +diff -u -r1.52 TB2DsgnItemEditor.pas +--- TB2DsgnItemEditor.pas 26 Feb 2004 07:05:57 -0000 1.52 ++++ TB2DsgnItemEditor.pas 29 May 2004 22:19:14 -0000 +@@ -152,6 +152,12 @@ + procedure TBRegisterItemClass(AClass: TTBCustomItemClass; + const ACaption: String; ResInstance: HINST); + ++type ++ TTBDsgnEditorHook = procedure(Sender: TTBItemEditForm) of object; ++ ++procedure TBRegisterDsgnEditorHook(Hook: TTBDsgnEditorHook); ++procedure TBUnregisterDsgnEditorHook(Hook: TTBDsgnEditorHook); ++ + implementation + + {$R *.DFM} +@@ -179,6 +185,7 @@ + var + ItemClasses: TList; + ItemImageList: TImageList; ++ EditFormHooks: TList; + + {$IFNDEF JR_D6} + function CreateSelectionList: TDesignerSelectionList; +@@ -240,7 +247,18 @@ + const ACaption: String; ResInstance: HINST); + var + Info: PItemClassInfo; ++ I: Integer; + begin ++ if ItemClasses <> nil then ++ for I := ItemClasses.Count - 1 downto 0 do ++ begin ++ Info := ItemClasses[I]; ++ if Info.ItemClass = AClass then ++ begin ++ Dispose(Info); ++ ItemClasses.Delete(I); ++ end; ++ end; + New(Info); + Info.ItemClass := AClass; + Info.Caption := ACaption; +@@ -357,6 +375,11 @@ + Item.OnClick := MoreItemClick; + MoreMenu.Add(Item); + end; ++ { Run the hooks } ++ ++ if EditFormHooks <> nil then ++ for I := 0 to EditFormHooks.Count - 1 do ++ TTBDsgnEditorHook(EditFormHooks[I]^)(Self); + end; + + destructor TTBItemEditForm.Destroy; +@@ -1332,14 +1355,44 @@ + Result := '(TB2000 Items)'; + end; + ++ ++procedure TBRegisterDsgnEditorHook(Hook: TTBDsgnEditorHook); ++var ++ H: ^TTBDsgnEditorHook; ++begin ++ New(H); ++ H^ := Hook; ++ EditFormHooks.Add(H); ++end; ++ ++procedure TBUnregisterDsgnEditorHook(Hook: TTBDsgnEditorHook); ++var ++ H: ^TTBDsgnEditorHook; ++ I: Integer; ++begin ++ for I := EditFormHooks.Count - 1 downto 0 do ++ begin ++ H := EditFormHooks[I]; ++ if (TMethod(H^).Code = TMethod(Hook).Code) and ++ (TMethod(H^).Data = TMethod(Hook).Data) then ++ begin ++ Dispose(H); ++ EditFormHooks.Delete(I); ++// Break; ++ end; ++ end; ++end; ++ + initialization + ItemImageList := TImageList.Create(nil); + ItemImageList.Handle := ImageList_LoadImage(HInstance, 'TB2_DSGNEDITORIMAGES', + 16, 0, clFuchsia, IMAGE_BITMAP, 0); + ItemClasses := TList.Create; ++ EditFormHooks := TList.Create; + AddModuleUnloadProc(UnregisterModuleItemClasses); + finalization + RemoveModuleUnloadProc(UnregisterModuleItemClasses); + FreeItemClasses; + FreeAndNil(ItemImageList); ++ FreeAndNil(EditFormHooks); + end. +Index: TB2ExtItems.pas +=================================================================== +RCS file: /data/cvs/tb2k/Source/TB2ExtItems.pas,v +retrieving revision 1.56 +diff -u -r1.56 TB2ExtItems.pas +--- TB2ExtItems.pas 26 Feb 2004 07:05:57 -0000 1.56 ++++ TB2ExtItems.pas 29 May 2004 22:19:14 -0000 +@@ -43,6 +43,11 @@ + EditItemDefaultEditOptions = []; + EditItemDefaultEditWidth = 64; + ++{ Change reasons for TTBEditItem.Text property } ++ tcrSetProperty = 0; // direct assignment to TTBEditItem.Text property ++ tcrActionLink = 1; // change comes from an action link ++ tcrEditControl = 2; // change is caused by typing in edit area ++ + type + TTBEditItem = class; + TTBEditItemViewer = class; +@@ -96,6 +101,7 @@ + FEditCaption: String; + FEditOptions: TTBEditItemOptions; + FEditWidth: Integer; ++ FExtendedAccept: Boolean; + FMaxLength: Integer; + FOnAcceptText: TTBAcceptTextEvent; + FOnBeginEdit: TTBBeginEditEvent; +@@ -112,10 +118,15 @@ + procedure SetText(Value: String); + protected + procedure ActionChange(Sender: TObject; CheckDefaults: Boolean); override; ++ function DoAcceptText(var NewText: string): Boolean; virtual; + procedure DoBeginEdit(Viewer: TTBEditItemViewer); virtual; ++ procedure DoTextChanging(const OldText: String; var NewText: String; Reason: Integer); virtual; ++ procedure DoTextChanged(Reason: Integer); virtual; + function GetActionLinkClass: TTBCustomItemActionLinkClass; override; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + function NeedToRecreateViewer(AViewer: TTBItemViewer): Boolean; override; ++ property ExtendedAccept: Boolean read FExtendedAccept write FExtendedAccept default False; ++ procedure SetTextEx(Value: String; Reason: Integer); + public + constructor Create(AOwner: TComponent); override; + procedure Clear; +@@ -146,6 +157,8 @@ + property OnSelect; + end; + ++ TEditClass = class of TEdit; ++ + TTBEditItemViewer = class(TTBItemViewer) + private + FEditControl: TEdit; +@@ -162,6 +175,7 @@ + function GetAccValue(var Value: WideString): Boolean; override; + function GetCaptionText: String; override; + procedure GetCursor(const Pt: TPoint; var ACursor: HCURSOR); override; ++ function GetEditControlClass: TEditClass; virtual; + procedure GetEditRect(var R: TRect); virtual; + procedure MouseDown(Shift: TShiftState; X, Y: Integer; + var MouseDownOnMenu: Boolean); override; +@@ -365,7 +379,7 @@ + + procedure TTBEditItemActionLink.SetText(const Value: String); + begin +- if IsTextLinked then TTBEditItem(FClient).Text := Value; ++ if IsTextLinked then TTBEditItem(FClient).SetTextEx(Value , tcrActionLink); + end; + + +@@ -389,7 +403,7 @@ + if not CheckDefaults or (Self.EditOptions = []) then + Self.EditOptions := EditOptions; + if not CheckDefaults or (Self.Text = '') then +- Self.Text := Text; ++ Self.SetTextEx(Text, tcrActionLink); + if not CheckDefaults or not Assigned(Self.OnAcceptText) then + Self.OnAcceptText := OnAcceptText; + end; +@@ -496,15 +510,41 @@ + end; + end; + +-procedure TTBEditItem.SetText(Value: String); ++function TTBEditItem.DoAcceptText(var NewText: string): Boolean; ++begin ++ Result := True; ++ if Assigned(FOnAcceptText) then FOnAcceptText(Self, NewText, Result); ++end; ++ ++procedure TTBEditItem.DoTextChanging(const OldText: String; var NewText: String; Reason: Integer); + begin + case FCharCase of +- ecUpperCase: Value := AnsiUpperCase(Value); +- ecLowerCase: Value := AnsiLowerCase(Value); ++ ecUpperCase: NewText := AnsiUpperCase(NewText); ++ ecLowerCase: NewText := AnsiLowerCase(NewText); ++ end; ++end; ++ ++procedure TTBEditItem.DoTextChanged(Reason: Integer); ++begin ++end; ++ ++procedure TTBEditItem.SetText(Value: String); ++begin ++ DoTextChanging(FText, Value, tcrSetProperty); ++ if FText <> Value then begin ++ FText := Value; ++ Change(False); ++ DoTextChanged(tcrSetProperty); + end; ++end; ++ ++procedure TTBEditItem.SetTextEx(Value: String; Reason: Integer); ++begin ++ DoTextChanging(FText, Value, Reason); + if FText <> Value then begin + FText := Value; + Change(False); ++ DoTextChanged(Reason); + end; + end; + +@@ -518,14 +558,9 @@ + procedure AcceptText; + var + S: String; +- Accept: Boolean; + begin + S := FEditControl.Text; +- Accept := True; +- if Assigned(Item.FOnAcceptText) then +- Item.FOnAcceptText(Self, S, Accept); +- if Accept then +- Item.Text := S; ++ if Item.DoAcceptText(S) then Item.SetTextEx(S, tcrEditControl); + end; + + begin +@@ -552,6 +587,11 @@ + TEditAccess(FEditControl).WndProc(Message); + end; + ++function TTBEditItemViewer.GetEditControlClass: TEditClass; ++begin ++ Result := TEdit; ++end; ++ + procedure TTBEditItemViewer.GetEditRect(var R: TRect); + var + Item: TTBEditItem; +@@ -771,6 +811,7 @@ + Item: TTBEditItem; + R: TRect; + ActiveWnd, FocusWnd: HWND; ++ S: string; + begin + Item := TTBEditItem(Self.Item); + GetEditRect(R); +@@ -784,8 +825,8 @@ + + { Create the edit control } + InflateRect(R, -3, -3); +- //View.FreeNotification(Self); +- FEditControl := TEdit.Create(nil); ++ //View.FreeNotification (Self); ++ FEditControl := GetEditControlClass.Create(nil); + try + FEditControl.Name := Format('%s_edit_control_%p', [ClassName, + Pointer(FEditControl)]); +@@ -812,9 +853,14 @@ + FEditControlStatus := [ecsContinueLoop]; + ControlMessageLoop; + finally ++ S := FEditControl.Text; + FreeAndNil(FEditControl); + end; + ++ with TTBEditItem(Item) do ++ if (FEditControlStatus = [ecsContinueLoop]) and ExtendedAccept then ++ if DoAcceptText(S) then SetTextEx(S, tcrEditControl); ++ + { ensure the area underneath the edit control is repainted immediately } + View.Window.Update; + { If app is still active, set focus to previous control and restore capture +Index: TB2Item.pas +=================================================================== +RCS file: /data/cvs/tb2k/Source/TB2Item.pas,v +retrieving revision 1.258 +diff -u -r1.258 TB2Item.pas +--- TB2Item.pas 26 Feb 2004 07:05:57 -0000 1.258 ++++ TB2Item.pas 29 May 2004 22:19:15 -0000 +@@ -1,5 +1,5 @@ + unit TB2Item; +- ++ + { + Toolbar2000 + Copyright (C) 1998-2004 by Jordan Russell +@@ -23,7 +23,7 @@ + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + +- $jrsoftware: tb2k/Source/TB2Item.pas,v 1.258 2004/02/26 07:05:57 jr Exp $ ++ $jrsoftware: tb2k/Source/TB2Item.pas,v 1.259 2004/05/05 08:43:18 jr Exp $ + } + + interface +@@ -41,6 +41,14 @@ + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + StdCtrls, CommCtrl, Menus, ActnList, ImgList, TB2Anim; + ++const ++ WM_TB2K_POPUPSHOWING = WM_USER + 554; ++ ++ { Parameter in LParam of WM_TB2K_POPUPSHOWING } ++ TPS_ANIMSTART = 1; // animation query: if Result <> 0, do not animate! ++ TPS_ANIMFINISHED = 2; // only fired when animation thread is done ++ TPS_NOANIM = 3; // fired when animation is done, or if showing with no animation ++ + type + TTBCustomItem = class; + TTBCustomItemClass = class of TTBCustomItem; +@@ -82,7 +90,7 @@ + TTBItemStyle = set of (tbisSubmenu, tbisSelectable, tbisSeparator, + tbisEmbeddedGroup, tbisClicksTransparent, tbisCombo, tbisNoAutoOpen, + tbisSubitemsEditable, tbisNoLineBreak, tbisRightAlign, tbisDontSelectFirst, +- tbisRedrawOnSelChange, tbisRedrawOnMouseOverChange); ++ tbisRedrawOnSelChange, tbisRedrawOnMouseOverChange, tbisStretch); + TTBPopupAlignment = (tbpaLeft, tbpaRight, tbpaCenter); + TTBPopupEvent = procedure(Sender: TTBCustomItem; FromLink: Boolean) of object; + TTBSelectEvent = procedure(Sender: TTBCustomItem; Viewer: TTBItemViewer; +@@ -97,6 +105,18 @@ + {$IFNDEF JR_D5} + TImageIndex = type Integer; + {$ENDIF} ++ TTBPopupPositionRec = record ++ PositionAsSubmenu: Boolean; ++ Alignment: TTBPopupAlignment; ++ Opposite: Boolean; ++ MonitorRect: TRect; ++ ParentItemRect: TRect; ++ NCSizeX: Integer; ++ NCSizeY: Integer; ++ X, Y, W, H: Integer; ++ AnimDir: TTBAnimationDirection; ++ PlaySound: Boolean; ++ end; + + TTBCustomItem = class(TComponent) + private +@@ -186,6 +206,8 @@ + function GetChevronParentView: TTBView; virtual; + procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; virtual; ++ procedure GetPopupPosition(ParentView: TTBView; ++ PopupWindow: TTBPopupWindow; var PopupPositionRec: TTBPopupPositionRec); virtual; + function GetPopupWindowClass: TTBPopupWindowClass; virtual; + procedure IndexError; + procedure Loaded; override; +@@ -315,7 +337,7 @@ + function DoExecute: Boolean; virtual; + procedure DrawItemCaption(const Canvas: TCanvas; ARect: TRect; + const ACaption: String; ADrawDisabledShadow: Boolean; AFormat: UINT); virtual; +- procedure Entering; virtual; ++ procedure Entering(OldSelected: TTBItemViewer); virtual; + function GetAccRole: Integer; virtual; + function GetAccValue(var Value: WideString): Boolean; virtual; + function GetCaptionText: String; virtual; +@@ -323,7 +345,7 @@ + function GetImageList: TCustomImageList; + function ImageShown: Boolean; + function IsRotated: Boolean; +- function IsToolbarSize: Boolean; ++ function IsToolbarSize: Boolean; virtual; + function IsPtInButtonPart(X, Y: Integer): Boolean; virtual; + procedure KeyDown(var Key: Word; Shift: TShiftState); virtual; + procedure Leaving; virtual; +@@ -352,7 +374,7 @@ + function GetAccObject: IDispatch; + function GetHintText: String; + function IsAccessible: Boolean; +- function IsToolbarStyle: Boolean; ++ function IsToolbarStyle: Boolean; virtual; + function ScreenToClient(const P: TPoint): TPoint; + end; + PTBItemViewerArray = ^TTBItemViewerArray; +@@ -450,6 +472,8 @@ + procedure KeyDown(var Key: Word; Shift: TShiftState); virtual; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure SetAccelsVisibility(AShowAccels: Boolean); ++ procedure SetState(AState: TTBViewState); ++ property DoneActionData: TTBDoneActionData read FDoneActionData write FDoneActionData; + public + constructor CreateView(AOwner: TComponent; AParentView: TTBView; + AParentItem: TTBCustomItem; AWindow: TWinControl; +@@ -653,10 +677,12 @@ + procedure WMPrint(var Message: TMessage); message WM_PRINT; + procedure WMPrintClient(var Message: TMessage); message WM_PRINTCLIENT; + procedure WMTB2kStepAnimation(var Message: TMessage); message WM_TB2K_STEPANIMATION; ++ procedure WMTB2kAnimationEnded (var Message: TMessage); message WM_TB2K_ANIMATIONENDED; + protected + procedure CreateParams(var Params: TCreateParams); override; + procedure CreateWnd; override; + procedure DestroyWindowHandle; override; ++ function GetNCSize: TPoint; dynamic; + function GetViewClass: TTBViewClass; dynamic; + procedure Paint; override; + procedure PaintScrollArrows; virtual; +@@ -800,6 +826,21 @@ + var + ToolbarFont: TFont; + ++type ++ TTBModalHandler = class ++ private ++ FCreatedWnd: Boolean; ++ FInited: Boolean; ++ FWnd: HWND; ++ public ++ constructor Create(AExistingWnd: HWND); ++ destructor Destroy; override; ++ procedure Loop(const RootView: TTBView; const AMouseDown, AExecuteSelected, ++ AFromMSAA, TrackRightButton: Boolean); ++ property Wnd: HWND read FWnd; ++ end; ++ ++procedure ProcessDoneAction(const DoneActionData: TTBDoneActionData); + + implementation + +@@ -815,19 +856,6 @@ + ClickList: TList; + + type +- TTBModalHandler = class +- private +- FCreatedWnd: Boolean; +- FInited: Boolean; +- FWnd: HWND; +- public +- constructor Create(AExistingWnd: HWND); +- destructor Destroy; override; +- procedure Loop(const RootView: TTBView; const AMouseDown, AExecuteSelected, +- AFromMSAA, TrackRightButton: Boolean); +- property Wnd: HWND read FWnd; +- end; +- + PItemChangedNotificationData = ^TItemChangedNotificationData; + TItemChangedNotificationData = record + Proc: TTBItemChangedProc; +@@ -1645,10 +1673,11 @@ + var + PlayedSound: Boolean = False; + +-function TTBCustomItem.CreatePopup(const ParentView: TTBView; +- const ParentViewer: TTBItemViewer; const PositionAsSubmenu, SelectFirstItem, +- Customizing: Boolean; const APopupPoint: TPoint; +- const Alignment: TTBPopupAlignment): TTBPopupWindow; ++procedure TTBCustomItem.GetPopupPosition(ParentView: TTBView; ++ PopupWindow: TTBPopupWindow; var PopupPositionRec: TTBPopupPositionRec); ++var ++ X2, Y2: Integer; ++ RepeatCalcX: Boolean; + + function CountObscured(X, Y, W, H: Integer): Integer; + var +@@ -1672,114 +1701,9 @@ + end; + end; + +-var +- EventItem, ParentItem: TTBCustomItem; +- Opposite: Boolean; +- ChevronParentView: TTBView; +- X, X2, Y, Y2, W, H: Integer; +- P: TPoint; +- RepeatCalcX: Boolean; +- ParentItemRect: TRect; +- MonitorRect: TRect; +- AnimDir: TTBAnimationDirection; + begin +- EventItem := ItemContainingItems(Self); +- if EventItem <> Self then +- EventItem.DoPopup(Self, True); +- DoPopup(Self, False); +- +- ChevronParentView := GetChevronParentView; +- if ChevronParentView = nil then +- ParentItem := Self +- else +- ParentItem := ChevronParentView.FParentItem; +- +- Opposite := Assigned(ParentView) and (vsOppositePopup in ParentView.FState); +- Result := GetPopupWindowClass.CreatePopupWindow(nil, ParentView, ParentItem, +- Customizing); +- try +- if Assigned(ChevronParentView) then begin +- ChevronParentView.FreeNotification(Result.View); +- Result.View.FChevronParentView := ChevronParentView; +- Result.View.FIsToolbar := True; +- Result.View.Style := Result.View.Style + +- (ChevronParentView.Style * [vsAlwaysShowHints]); +- Result.Color := clBtnFace; +- end; +- +- { Calculate ParentItemRect, and MonitorRect (the rectangle of the monitor +- that the popup window will be confined to) } +- if Assigned(ParentView) then begin +- ParentView.ValidatePositions; +- ParentItemRect := ParentViewer.BoundsRect; +- P := ParentView.FWindow.ClientToScreen(Point(0, 0)); +- OffsetRect(ParentItemRect, P.X, P.Y); +- if not IsRectEmpty(ParentView.FMonitorRect) then +- MonitorRect := ParentView.FMonitorRect +- else +- MonitorRect := GetRectOfMonitorContainingRect(ParentItemRect, False); +- end +- else begin +- ParentItemRect.TopLeft := APopupPoint; +- ParentItemRect.BottomRight := APopupPoint; +- MonitorRect := GetRectOfMonitorContainingPoint(APopupPoint, False); +- end; +- Result.View.FMonitorRect := MonitorRect; +- +- { Initialize item positions and size of the popup window } +- if ChevronParentView = nil then +- Result.View.FMaxHeight := (MonitorRect.Bottom - MonitorRect.Top) - +- (PopupMenuWindowNCSize * 2) +- else +- Result.View.WrapOffset := (MonitorRect.Right - MonitorRect.Left) - +- (PopupMenuWindowNCSize * 2); +- if SelectFirstItem then +- Result.View.Selected := Result.View.FirstSelectable; +- Result.View.UpdatePositions; +- W := Result.Width; +- H := Result.Height; +- +- { Calculate initial X,Y position of the popup window } +- if Assigned(ParentView) then begin +- if not PositionAsSubmenu then begin +- if ChevronParentView = nil then begin +- if (ParentView = nil) or (ParentView.FOrientation <> tbvoVertical) then begin +- if GetSystemMetrics(SM_MENUDROPALIGNMENT) = 0 then +- X := ParentItemRect.Left +- else +- X := ParentItemRect.Right - W; +- Y := ParentItemRect.Bottom; +- end +- else begin +- X := ParentItemRect.Left - W; +- Y := ParentItemRect.Top; +- end; +- end +- else begin +- if ChevronParentView.FOrientation <> tbvoVertical then begin +- X := ParentItemRect.Right - W; +- Y := ParentItemRect.Bottom; +- end +- else begin +- X := ParentItemRect.Left - W; +- Y := ParentItemRect.Top; +- end; +- end; +- end +- else begin +- X := ParentItemRect.Right - PopupMenuWindowNCSize; +- Y := ParentItemRect.Top - PopupMenuWindowNCSize; +- end; +- end +- else begin +- X := APopupPoint.X; +- Y := APopupPoint.Y; +- case Alignment of +- tbpaRight: Dec(X, W); +- tbpaCenter: Dec(X, W div 2); +- end; +- end; +- ++ with PopupPositionRec do ++ begin + { Adjust the Y position of the popup window } + { If the window is going off the bottom of the monitor, try placing it + above the parent item } +@@ -1788,7 +1712,7 @@ + if not PositionAsSubmenu then + Y2 := ParentItemRect.Top + else +- Y2 := ParentItemRect.Bottom + PopupMenuWindowNCSize; ++ Y2 := ParentItemRect.Bottom + NCSizeY; + Dec(Y2, H); + { Only place it above the parent item if it isn't going to go off the + top of the monitor } +@@ -1864,17 +1788,17 @@ + X2 := X; + if Opposite or (X2 + W > MonitorRect.Right) then begin + if Assigned(ParentView) then +- X2 := ParentItemRect.Left + PopupMenuWindowNCSize; ++ X2 := ParentItemRect.Left + NCSizeX; + Dec(X2, W); + if not Opposite then +- Include(Result.View.FState, vsOppositePopup) ++ Include(PopupWindow.View.FState, vsOppositePopup) + else begin + if X2 < MonitorRect.Left then begin + Opposite := False; + RepeatCalcX := True; + end + else +- Include(Result.View.FState, vsOppositePopup); ++ Include(PopupWindow.View.FState, vsOppositePopup); + end; + end; + until not RepeatCalcX; +@@ -1901,8 +1825,141 @@ + else + Include(AnimDir, tbadLeft); + end; +- Result.FAnimationDirection := AnimDir; ++ end; ++end; ++ ++function TTBCustomItem.CreatePopup(const ParentView: TTBView; ++ const ParentViewer: TTBItemViewer; const PositionAsSubmenu, SelectFirstItem, ++ Customizing: Boolean; const APopupPoint: TPoint; ++ const Alignment: TTBPopupAlignment): TTBPopupWindow; ++var ++ EventItem, ParentItem: TTBCustomItem; ++ Opposite: Boolean; ++ ChevronParentView: TTBView; ++ X, Y, W, H: Integer; ++ P: TPoint; ++ ParentItemRect: TRect; ++ MonitorRect: TRect; ++ PopupRec: TTBPopupPositionRec; ++ NCSize: TPoint; ++begin ++ EventItem := ItemContainingItems(Self); ++ if EventItem <> Self then ++ EventItem.DoPopup(Self, True); ++ DoPopup(Self, False); ++ ++ ChevronParentView := GetChevronParentView; ++ if ChevronParentView = nil then ++ ParentItem := Self ++ else ++ ParentItem := ChevronParentView.FParentItem; + ++ Opposite := Assigned(ParentView) and (vsOppositePopup in ParentView.FState); ++ Result := GetPopupWindowClass.CreatePopupWindow(nil, ParentView, ParentItem, ++ Customizing); ++ try ++ if Assigned(ChevronParentView) then begin ++ ChevronParentView.FreeNotification(Result.View); ++ Result.View.FChevronParentView := ChevronParentView; ++ Result.View.FIsToolbar := True; ++ Result.View.Style := Result.View.Style + ++ (ChevronParentView.Style * [vsAlwaysShowHints]); ++ Result.Color := clBtnFace; ++ end; ++ ++ { Calculate ParentItemRect, and MonitorRect (the rectangle of the monitor ++ that the popup window will be confined to) } ++ if Assigned(ParentView) then begin ++ ParentView.ValidatePositions; ++ ParentItemRect := ParentViewer.BoundsRect; ++ P := ParentView.FWindow.ClientToScreen(Point(0, 0)); ++ OffsetRect(ParentItemRect, P.X, P.Y); ++ if not IsRectEmpty(ParentView.FMonitorRect) then ++ MonitorRect := ParentView.FMonitorRect ++ else ++ MonitorRect := GetRectOfMonitorContainingRect(ParentItemRect, False); ++ end ++ else begin ++ ParentItemRect.TopLeft := APopupPoint; ++ ParentItemRect.BottomRight := APopupPoint; ++ MonitorRect := GetRectOfMonitorContainingPoint(APopupPoint, False); ++ end; ++ Result.View.FMonitorRect := MonitorRect; ++ ++ { Initialize item positions and size of the popup window } ++ NCSize := Result.GetNCSize; ++ if ChevronParentView = nil then ++ Result.View.FMaxHeight := (MonitorRect.Bottom - MonitorRect.Top) - ++ (NCSize.Y * 2) ++ else ++ Result.View.WrapOffset := (MonitorRect.Right - MonitorRect.Left) - ++ (NCSize.X * 2); ++ if SelectFirstItem then ++ Result.View.Selected := Result.View.FirstSelectable; ++ Result.View.UpdatePositions; ++ W := Result.Width; ++ H := Result.Height; ++ ++ { Calculate initial X,Y position of the popup window } ++ if Assigned(ParentView) then begin ++ if not PositionAsSubmenu then begin ++ if ChevronParentView = nil then begin ++ if (ParentView = nil) or (ParentView.FOrientation <> tbvoVertical) then begin ++ if GetSystemMetrics(SM_MENUDROPALIGNMENT) = 0 then ++ X := ParentItemRect.Left ++ else ++ X := ParentItemRect.Right - W; ++ Y := ParentItemRect.Bottom; ++ end ++ else begin ++ X := ParentItemRect.Left - W; ++ Y := ParentItemRect.Top; ++ end; ++ end ++ else begin ++ if ChevronParentView.FOrientation <> tbvoVertical then begin ++ X := ParentItemRect.Right - W; ++ Y := ParentItemRect.Bottom; ++ end ++ else begin ++ X := ParentItemRect.Left - W; ++ Y := ParentItemRect.Top; ++ end; ++ end; ++ end ++ else begin ++ X := ParentItemRect.Right - NCSize.X; ++ Y := ParentItemRect.Top - NCSize.Y; ++ end; ++ end ++ else begin ++ X := APopupPoint.X; ++ Y := APopupPoint.Y; ++ case Alignment of ++ tbpaRight: Dec(X, W); ++ tbpaCenter: Dec(X, W div 2); ++ end; ++ end; ++ ++ PopupRec.PositionAsSubmenu := PositionAsSubmenu; ++ PopupRec.Alignment := Alignment; ++ PopupRec.Opposite := Opposite; ++ PopupRec.MonitorRect := MonitorRect; ++ PopupRec.ParentItemRect := ParentItemRect; ++ PopupRec.NCSizeX := NCSize.X; ++ PopupRec.NCSizeY := NCSize.Y; ++ PopupRec.X := X; ++ PopupRec.Y := Y; ++ PopupRec.W := W; ++ PopupRec.H := H; ++ PopupRec.AnimDir := []; ++ PopupRec.PlaySound := True; ++ GetPopupPosition(ParentView, Result, PopupRec); ++ X := PopupRec.X; ++ Y := PopupRec.Y; ++ W := PopupRec.W; ++ H := PopupRec.H; ++ Result.FAnimationDirection := PopupRec.AnimDir; + Result.SetBounds(X, Y, W, H); + if Assigned(ParentView) then begin + Result.FreeNotification(ParentView); +@@ -1916,7 +1973,7 @@ + end; + end; + Include(Result.View.FState, vsDrawInOrder); +- if not NeedToPlaySound('MenuPopup') then begin ++ if not PopupRec.PlaySound or not NeedToPlaySound('MenuPopup') then begin + { Don't call PlaySound if we don't have to } + Result.Visible := True; + end +@@ -3224,7 +3281,7 @@ + View.Invalidate(Self); + end; + +-procedure TTBItemViewer.Entering; ++procedure TTBItemViewer.Entering(OldSelected: TTBItemViewer); + begin + if Assigned(Item.FOnSelect) then + Item.FOnSelect(Item, Self, True); +@@ -4015,7 +4072,7 @@ + if Assigned(Value) then begin + if tbisRedrawOnSelChange in Value.Item.ItemStyle then + Invalidate(Value); +- Value.Entering; ++ Value.Entering(OldSelected); + end; + NotifyFocusEvent; + +@@ -4308,7 +4365,7 @@ + HighestHeightOnLine := TotalSize.Y; + end; + { Make separators on toolbars as tall/wide as the tallest/widest item } +- if tbisSeparator in Item.ItemStyle then begin ++ if [tbisSeparator, tbisStretch] * Item.ItemStyle <> [] then begin + if AOrientation <> tbvoVertical then + Pos.BoundsRect.Bottom := Pos.BoundsRect.Top + HighestHeightOnLine + else +@@ -5576,12 +5633,30 @@ + Result := GetRootView.FCaptureWnd; + end; + ++procedure TTBView.SetState(AState: TTBViewState); ++begin ++ FState := AState; ++end; ++ + + { TTBModalHandler } + ++const ++ LSFW_LOCK = 1; ++ LSFW_UNLOCK = 2; ++ ++var ++ LockSetForegroundWindowInited: BOOL; ++ LockSetForegroundWindow: function(uLockCode: UINT): BOOL; stdcall; ++ + constructor TTBModalHandler.Create(AExistingWnd: HWND); + begin + inherited Create; ++ if not LockSetForegroundWindowInited then begin ++ LockSetForegroundWindow := GetProcAddress(GetModuleHandle(user32), ++ 'LockSetForegroundWindow'); ++ LockSetForegroundWindowInited := True; ++ end; + LastPos := SmallPointToPoint(TSmallPoint(GetMessagePos())); + if AExistingWnd <> 0 then + FWnd := AExistingWnd +@@ -5589,6 +5664,13 @@ + FWnd := {$IFDEF JR_D6}Classes.{$ENDIF} AllocateHWnd(nil); + FCreatedWnd := True; + end; ++ if Assigned(LockSetForegroundWindow) then begin ++ { Like standard menus, don't allow other apps to steal the focus during ++ our modal loop. This also prevents us from losing activation when ++ "active window tracking" is enabled and the user moves the mouse over ++ another application's window. } ++ LockSetForegroundWindow(LSFW_LOCK); ++ end; + SetCapture(FWnd); + SetCursor(LoadCursor(0, IDC_ARROW)); + CallNotifyWinEvent(EVENT_SYSTEM_MENUSTART, FWnd, OBJID_CLIENT, CHILDID_SELF); +@@ -5597,6 +5679,8 @@ + + destructor TTBModalHandler.Destroy; + begin ++ if Assigned(LockSetForegroundWindow) then ++ LockSetForegroundWindow(LSFW_UNLOCK); + if FWnd <> 0 then begin + if GetCapture = FWnd then + ReleaseCapture; +@@ -6021,9 +6105,10 @@ + + procedure TTBPopupView.AutoSize(AWidth, AHeight: Integer); + begin +- with FWindow do +- SetBounds(Left, Top, AWidth + (PopupMenuWindowNCSize * 2), +- AHeight + (PopupMenuWindowNCSize * 2)); ++ with TTBPopupWindow(FWindow) do ++ with GetNCSize do ++ SetBounds(Left, Top, AWidth + (X * 2), ++ AHeight + (Y * 2)); + end; + + function TTBPopupView.GetFont: TFont; +@@ -6100,6 +6185,12 @@ + inherited; + end; + ++function TTBPopupWindow.GetNCSize: TPoint; ++begin ++ Result.X := PopupMenuWindowNCSize; ++ Result.Y := PopupMenuWindowNCSize; ++end; ++ + function TTBPopupWindow.GetViewClass: TTBViewClass; + begin + Result := TTBPopupView; +@@ -6183,8 +6274,12 @@ + SystemParametersInfo(SPI_GETMENUANIMATION, 0, @Animate, 0) and Animate then begin + Blend := SystemParametersInfo(SPI_GETMENUFADE, 0, @Animate, 0) and Animate; + if Blend or (FAnimationDirection <> []) then begin +- TBStartAnimation(WindowHandle, 150, Blend, FAnimationDirection); +- Exit; ++ if SendMessage(WindowHandle, WM_TB2K_POPUPSHOWING, TPS_ANIMSTART, 0) = 0 then ++ begin ++ { Start animation only if WM_TB2K_POPUPSHOWING returns zero (or not handled) } ++ TBStartAnimation(WindowHandle, 150, Blend, FAnimationDirection); ++ Exit; ++ end; + end; + end; + {$ENDIF} +@@ -6197,6 +6292,12 @@ + TBEndAnimation(WindowHandle); + end; + SetWindowPos(WindowHandle, 0, 0, 0, 0, 0, ShowFlags[Showing]); ++ if Showing then SendNotifyMessage(WindowHandle, WM_TB2K_POPUPSHOWING, TPS_NOANIM, 0); ++end; ++ ++procedure TTBPopupWindow.WMTB2kAnimationEnded(var Message: TMessage); ++begin ++ SendNotifyMessage(WindowHandle, WM_TB2K_POPUPSHOWING, TPS_ANIMFINISHED, 0); + end; + + procedure TTBPopupWindow.WMTB2kStepAnimation(var Message: TMessage); +@@ -6266,8 +6367,8 @@ + + procedure TTBPopupWindow.WMNCCalcSize(var Message: TWMNCCalcSize); + begin +- InflateRect(Message.CalcSize_Params^.rgrc[0], +- -PopupMenuWindowNCSize, -PopupMenuWindowNCSize); ++ with GetNCSize do ++ InflateRect(Message.CalcSize_Params^.rgrc[0], -X, -Y); + inherited; + end; + +Index: TB2MRU.pas +=================================================================== +RCS file: /data/cvs/tb2k/Source/TB2MRU.pas,v +retrieving revision 1.22 +diff -u -r1.22 TB2MRU.pas +--- TB2MRU.pas 26 Feb 2004 07:05:58 -0000 1.22 ++++ TB2MRU.pas 29 May 2004 22:19:15 -0000 +@@ -53,6 +53,7 @@ + procedure SetMaxItems(Value: Integer); + protected + property Container: TTBCustomItem read FContainer; ++ function GetFirstKey: Integer; virtual; + function GetItemClass: TTBCustomItemClass; virtual; + procedure SetItemCaptions; virtual; + public +@@ -107,7 +108,7 @@ + procedure Delete(Index: Integer); override; + function Get(Index: Integer): String; override; + function GetCount: Integer; override; +- function IndexOf(const S: String): Integer; override; ++ function IndexOf(const S: String): Integer; override; + procedure Insert(Index: Integer; const S: String); override; + procedure Move(CurIndex, NewIndex: Integer); override; + procedure Put(Index: Integer; const S: String); override; +@@ -296,20 +297,21 @@ + + procedure TTBMRUList.SetItemCaptions; + var +- I, J: Integer; ++ I, J, N: Integer; + Key: Char; + S: String; + Buf: array[0..MAX_PATH-1] of Char; + begin + while FList.Count > FMaxItems do + FList.Delete(FList.Count-1); ++ N := GetFirstKey; + for I := 0 to FContainer.Count-1 do begin + Key := #0; +- if I < 9 then +- Key := Chr(Ord('1') + I) ++ if N < 9 then ++ Key := Chr(Ord('1') + N) + else begin + { No more numbers; try letters } +- J := I - 9; ++ J := N - 9; + if J < 26 then + Key := Chr(Ord('A') + J); + end; +@@ -321,6 +323,7 @@ + FContainer[I].Caption := Format('&%s %s', [Key, S]) + else + FContainer[I].Caption := S; ++ Inc(N); + end; + end; + +@@ -361,6 +364,11 @@ + Result := TTBCustomItem; + end; + ++function TTBMRUList.GetFirstKey: Integer; ++begin ++ Result := 0; ++end; ++ + + { TTBMRUListItem } + +Index: TB2Reg.pas +=================================================================== +RCS file: /data/cvs/tb2k/Source/TB2Reg.pas,v +retrieving revision 1.27 +diff -u -r1.27 TB2Reg.pas +--- TB2Reg.pas 26 Feb 2004 07:05:58 -0000 1.27 ++++ TB2Reg.pas 29 May 2004 22:19:15 -0000 +@@ -36,13 +36,6 @@ + TB2Toolbar, TB2ToolWindow, TB2Dock, TB2Item, TB2ExtItems, TB2MRU, TB2MDI, + TB2DsgnItemEditor; + +-procedure Register; +- +-implementation +- +-uses +- ImgEdit; +- + {$IFDEF JR_D5} + + { TTBImageIndexPropertyEditor } +@@ -67,6 +60,25 @@ + const ARect: TRect; ASelected: Boolean); {$IFNDEF JR_D6} override; {$ENDIF} + end; + ++{ TTBItemImageIndexPropertyEditor } ++ ++type ++ TTBItemImageIndexPropertyEditor = class(TTBImageIndexPropertyEditor) ++ public ++ function GetImageListAt (Index: Integer): TCustomImageList; override; ++ end; ++ ++{$ENDIF} ++ ++procedure Register; ++ ++implementation ++ ++uses ++ ImgEdit; ++ ++{$IFDEF JR_D5} ++ + function TTBImageIndexPropertyEditor.GetAttributes: TPropertyAttributes; + begin + Result := [paMultiSelect, paValueList, paRevertable]; +@@ -128,12 +140,6 @@ + + { TTBItemImageIndexPropertyEditor } + +-type +- TTBItemImageIndexPropertyEditor = class(TTBImageIndexPropertyEditor) +- protected +- function GetImageListAt(Index: Integer): TCustomImageList; override; +- end; +- + function TTBItemImageIndexPropertyEditor.GetImageListAt(Index: Integer): TCustomImageList; + var + C: TPersistent; +Index: TB2ToolWindow.pas +=================================================================== +RCS file: /data/cvs/tb2k/Source/TB2ToolWindow.pas,v +retrieving revision 1.17 +diff -u -r1.17 TB2ToolWindow.pas +--- TB2ToolWindow.pas 26 Feb 2004 07:05:58 -0000 1.17 ++++ TB2ToolWindow.pas 29 May 2004 22:19:15 -0000 +@@ -195,14 +195,24 @@ + begin + Result.X := FBarWidth; + Result.Y := FBarHeight; +- if Assigned(ADock) and (FullSize or Stretch) then begin +- { If docked and stretching, return the minimum size so that the toolbar +- can shrink below FBarWidth/FBarHeight } +- if not(ADock.Position in [dpLeft, dpRight]) then +- Result.X := FMinClientWidth +- else +- Result.Y := FMinClientHeight; +- end; ++ if Assigned(ADock) then ++ if FullSize then ++ begin ++ { If docked and full size, return the size corresponding to docked size } ++ if not(ADock.Position in [dpLeft, dpRight]) then ++ Result.X := ADock.ClientWidth - (Width - ClientWidth) ++ else ++ Result.Y := ADock.ClientHeight - (Height - ClientHeight); ++ end ++ else if Stretch then ++ begin ++ { If docked and stretching, return the minimum size so that the toolbar ++ can shrink below FBarWidth/FBarHeight } ++ if not(ADock.Position in [dpLeft, dpRight]) then ++ Result.X := FMinClientWidth ++ else ++ Result.Y := FMinClientHeight; ++ end; + end; + + procedure TTBToolWindow.GetBaseSize(var ASize: TPoint); +Index: TB2Toolbar.pas +=================================================================== +RCS file: /data/cvs/tb2k/Source/TB2Toolbar.pas,v +retrieving revision 1.99 +diff -u -r1.99 TB2Toolbar.pas +--- TB2Toolbar.pas 26 Feb 2004 07:05:58 -0000 1.99 ++++ TB2Toolbar.pas 29 May 2004 22:19:15 -0000 +@@ -23,7 +23,7 @@ + GPL. If you do not delete the provisions above, a recipient may use your + version of this file under either the "Toolbar2000 License" or the GPL. + +- $jrsoftware: tb2k/Source/TB2Toolbar.pas,v 1.99 2004/02/26 07:05:58 jr Exp $ ++ $jrsoftware: tb2k/Source/TB2Toolbar.pas,v 1.100 2004/04/30 21:06:18 jr Exp $ + } + + interface +@@ -327,7 +327,9 @@ + SetWindowsHookExW, Msg.wParam may either be an ANSI character or a + Unicode character, due to an apparent bug on these platforms. It is + an ANSI character when the message passes through a separate +- SetWindowsHookExA-installed WH_GETMESSAGE hook first. ++ SetWindowsHookExA-installed WH_GETMESSAGE hook first, and that hook ++ calls us via CallNextHookEx. Windows apparently "forgets" to convert ++ the character from ANSI back to Unicode in this case. + We can't convert the character code because there seems to be no way + to detect whether it is ANSI or Unicode. So we can't really do much + with Msg.wParam, apart from comparing it against character codes that +@@ -340,9 +342,12 @@ + { Redirect the message to the main form. + Note: Unfortunately, due to a bug in Windows NT 4.0 (and not + 2000/XP/9x/Me), modifications to the message don't take effect if +- another WH_GETMESSAGE hook has been installed above this one. I +- don't know of any clean workaround, other than to ensure other +- WH_GETMESSAGE hooks are installed *before* Toolbar2000's. } ++ another WH_GETMESSAGE hook has been installed above this one. ++ (The bug is that CallNextHookEx copies lParam^ to a local buffer, but ++ does not propogate the changes made by the hook back to lParam^ when ++ it returns.) I don't know of any clean workaround, other than to ++ ensure other WH_GETMESSAGE hooks are installed *before* ++ Toolbar2000's. } + Msg.hwnd := MainForm.Handle; + end; + end; +@@ -891,6 +896,11 @@ + Hint := Item.Hint + else + Hint := ''; ++ ++ with TTBItemViewerAccess(FView.Find(Item)) do ++ begin ++ MouseMove(X - BoundsRect.Left, Y - BoundsRect.Top); ++ end; + end + else + Hint := ''; + diff --git a/official/2.1.6+2.1.beta1/TBX/Documentation/TBX Reference A4 Print.pdf b/official/2.1.6+2.1.beta1/TBX/Documentation/TBX Reference A4 Print.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5dbf145cb478310b993441076b64ebcb55d38fec GIT binary patch literal 667661 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 z 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 j_40<( zoZu2O_T?=MI=bGRyZ*+2=nXWzJ_PQ}JDi&q19^yX;Qb8!Wfb!yrWL|;voAY?b1upb zIvZA8+OoOA%lj!yYAMv>Plln!??l3^Um2a|qsLbn)5r`CP3p!W+~Rn3;oPAFpGR34 zC!#FO+kH6#W3b{9_tIQcuJ|x=?RI?Xe^3;~^&ve}W22d^=0xH0379aR`o5|l-F0%? z(T(#i9BmIIYKQnqm`UB6f?3<1m*^Ln_!{AS27<1flroU3FSbqph1Tx#nb8rFVWqc( zx0NJTF@E>aP5s_>O2T z#VgSLraqg5s@aO6ENBHCYnz+=82-YSls)FiFv%+86w<+!3rtlzc2CG(k$ExY%qc_b zazX1&W_VsIXc$tL>L$3}Pf2F7rGs6&u0%%1j~}qbXo+>4Dl;8%ocy?yvRJc25E zAbWb*O{#x10x=#BINx6V<1l!2)tf~Or_DSvd;>%8?&Y>twKW;OoV~Rg$G!wKlVh3f z3g?c00@^00N{+g!a(zDJ&!0b27VirGSox9o zs70a4T4_OU@Ho# z_FHG;7cR%LWC8i-}hR+O4tbcI!+ ze>Wi$69*G)*G|;f%ue41wu&*+w$m5Z*R|Bshc)$!e{2(q1?>GC3?lBr>$=raf!*-f zh2lAVkGALKd@PQ}%jt{cW&MC~9qA?bfDE*qPCI%784^L(#k>kdTIMI6Y^Q$fm_dNR z+b+d)g&Q6ddnPq_HZc~WT(moxcW}+ii`~G(qt05CyO^bUdeOFl--HY!!aldU&D&VB zX)}X{MiYjNt-i^k+OM7~?;BYRy%jQ`9XUjFH3(jW61z3FyjetIxkApkjW*c~OYc-+vea=qW# ziXh=+X}Up$gKO3v-dSz1j9cwp048!gTrRqK<@Y@v*RNZ3A}Rcu73ufzQB3L$sZ%Xz zbiOOj0M6UjkHa2{JYOyV7*n@KS@nFETB~c%FkB-=1QD+>1rPj)mZMWZ|OUM zO5%Po-}kr+(v+jP@Sa5VVWO!|qVMOe$%B7@EC!l^WH@>6?cZC0m$`$KSEFD!(D_u0 z2T|1BtQq`@pxcP{d9~!Ys*~Vfu9N3MC;KmUQ#PE{nq0Q3O%{g((z<4$L%kCDrH)c} zEW0ZsRTXr#l_Xm^s_ee!3OCI+BD=DrbQdyxQIEvUK)OcPlkBcLg*xA4Lu+WC`3=oB zV1Md7=bTEriY)NiDeoE3Q+z8}K;iWmlm-7X&gs&>vCU~D-pchPz$cR(TV1gs-fHM# z6c7`%9%t(u$dp-J00!%8~p8A6L0-<1-S

        &= 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∾f3~_Nw~^#+qk5Y9oOFw#4!<+?oMwZ|K^< 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 G| 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

        `2UBA|4+&Ke{)t~!2g%qgnyQ}{~MjaA024_ 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 xkQC@(D)>$(`c&fqTVdlO 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ȃP@`b?yeHOe>tDi^g%6|G3FNbsfjLssSv6$dx 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 z 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

        r!kL9fZ^W7=m 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 d%DSRCUZJH;Ny&QJj&s~N8r9Pu7u`G?z1 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 F?7vHll_UTF literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/Documentation/TBX Reference LTR.pdf b/official/2.1.6+2.1.beta1/TBX/Documentation/TBX Reference LTR.pdf new file mode 100644 index 0000000..eecc007 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Documentation/TBX Reference LTR.pdf @@ -0,0 +1,23199 @@ +%PDF-1.4 +5 0 obj +<< /S /GoTo /D (chapter.1) >> +endobj +8 0 obj +(Introduction) +endobj +9 0 obj +<< /S /GoTo /D (section*.2) >> +endobj +12 0 obj +(Features) +endobj +13 0 obj +<< /S /GoTo /D (section*.3) >> +endobj +16 0 obj +(License) +endobj +17 0 obj +<< /S /GoTo /D (section*.4) >> +endobj +20 0 obj +(Registration and Donations) +endobj +21 0 obj +<< /S /GoTo /D (section*.5) >> +endobj +24 0 obj +(Contacts) +endobj +25 0 obj +<< /S /GoTo /D (chapter.2) >> +endobj +28 0 obj +(Usage) +endobj +29 0 obj +<< /S /GoTo /D (section*.6) >> +endobj +32 0 obj +(Installing TBX Package) +endobj +33 0 obj +<< /S /GoTo /D (section*.7) >> +endobj +36 0 obj +(Getting Started) +endobj +37 0 obj +<< /S /GoTo /D (section*.8) >> +endobj +40 0 obj +(TBX Themes) +endobj +41 0 obj +<< /S /GoTo /D (subsection*.9) >> +endobj +44 0 obj +(Default Theme) +endobj +45 0 obj +<< /S /GoTo /D (subsection*.10) >> +endobj +48 0 obj +(Office XP Theme) +endobj +49 0 obj +<< /S /GoTo /D (subsection*.11) >> +endobj +52 0 obj +(Stripes Theme) +endobj +53 0 obj +<< /S /GoTo /D (subsection*.12) >> +endobj +56 0 obj +(Aluminum Theme) +endobj +57 0 obj +<< /S /GoTo /D (section*.13) >> +endobj +60 0 obj +(Converterting and Upgrading Existing Projects) +endobj +61 0 obj +<< /S /GoTo /D (subsection*.14) >> +endobj +64 0 obj +(Conversion Rules) +endobj +65 0 obj +<< /S /GoTo /D (subsection*.15) >> +endobj +68 0 obj +(Using TBX Converter) +endobj +69 0 obj +<< /S /GoTo /D (section*.16) >> +endobj +72 0 obj +(Known Issues) +endobj +73 0 obj +<< /S /GoTo /D (section*.17) >> +endobj +76 0 obj +(Frequently Asked Questions) +endobj +77 0 obj +<< /S /GoTo /D (chapter.3) >> +endobj +80 0 obj +(Reference) +endobj +81 0 obj +<< /S /GoTo /D (section*.18) >> +endobj +84 0 obj +(Unit TBX.pas) +endobj +85 0 obj +<< /S /GoTo /D (subsection*.19) >> +endobj +88 0 obj +(Class TFontSettings) +endobj +89 0 obj +<< /S /GoTo /D (subsection*.20) >> +endobj +92 0 obj +(Class TTBXCustomItem) +endobj +93 0 obj +<< /S /GoTo /D (subsection*.21) >> +endobj +96 0 obj +(Class TTBXDock) +endobj +97 0 obj +<< /S /GoTo /D (subsection*.22) >> +endobj +100 0 obj +(Class TTBXItem) +endobj +101 0 obj +<< /S /GoTo /D (subsection*.23) >> +endobj +104 0 obj +(Class TTBXPopupMenu) +endobj +105 0 obj +<< /S /GoTo /D (subsection*.24) >> +endobj +108 0 obj +(Class TTBXSeparatorItem) +endobj +109 0 obj +<< /S /GoTo /D (subsection*.25) >> +endobj +112 0 obj +(Class TTBXSubmenuItem) +endobj +113 0 obj +<< /S /GoTo /D (subsection*.26) >> +endobj +116 0 obj +(Class TTBXToolbar) +endobj +117 0 obj +<< /S /GoTo /D (subsection*.27) >> +endobj +120 0 obj +(Class TTBXToolWindow) +endobj +121 0 obj +<< /S /GoTo /D (subsection*.28) >> +endobj +124 0 obj +(Class TTBXVisibilityToggleItem) +endobj +125 0 obj +<< /S /GoTo /D (subsection*.29) >> +endobj +128 0 obj +(Routines) +endobj +129 0 obj +<< /S /GoTo /D (subsection*.35) >> +endobj +132 0 obj +(Types) +endobj +133 0 obj +<< /S /GoTo /D (subsection*.38) >> +endobj +136 0 obj +(Variables) +endobj +137 0 obj +<< /S /GoTo /D (section*.40) >> +endobj +140 0 obj +(Unit TBXDkPanels.pas) +endobj +141 0 obj +<< /S /GoTo /D (subsection*.41) >> +endobj +144 0 obj +(Class TTBXAlignmentPanel) +endobj +145 0 obj +<< /S /GoTo /D (subsection*.42) >> +endobj +148 0 obj +(Class TTBXButton) +endobj +149 0 obj +<< /S /GoTo /D (subsection*.43) >> +endobj +152 0 obj +(Class TTBXCheckBox) +endobj +153 0 obj +<< /S /GoTo /D (subsection*.44) >> +endobj +156 0 obj +(Class TTBXControlMargins) +endobj +157 0 obj +<< /S /GoTo /D (subsection*.45) >> +endobj +160 0 obj +(Class TTBXCustomButton) +endobj +161 0 obj +<< /S /GoTo /D (subsection*.46) >> +endobj +164 0 obj +(Class TTBXCustomCheckBox) +endobj +165 0 obj +<< /S /GoTo /D (subsection*.47) >> +endobj +168 0 obj +(Class TTBXCustomLabel) +endobj +169 0 obj +<< /S /GoTo /D (subsection*.48) >> +endobj +172 0 obj +(Class TTBXCustomLink) +endobj +173 0 obj +<< /S /GoTo /D (subsection*.49) >> +endobj +176 0 obj +(Class TTBXCustomPageScroller) +endobj +177 0 obj +<< /S /GoTo /D (subsection*.50) >> +endobj +180 0 obj +(Class TTBXCustomRadioButton) +endobj +181 0 obj +<< /S /GoTo /D (subsection*.51) >> +endobj +184 0 obj +(Class TTBXDockablePanel) +endobj +185 0 obj +<< /S /GoTo /D (subsection*.52) >> +endobj +188 0 obj +(Class TTBXLabel) +endobj +189 0 obj +<< /S /GoTo /D (subsection*.53) >> +endobj +192 0 obj +(Class TTBXLink) +endobj +193 0 obj +<< /S /GoTo /D (subsection*.54) >> +endobj +196 0 obj +(Class TTBXMultiDock) +endobj +197 0 obj +<< /S /GoTo /D (subsection*.55) >> +endobj +200 0 obj +(Class TTBXPageScroller) +endobj +201 0 obj +<< /S /GoTo /D (subsection*.56) >> +endobj +204 0 obj +(Class TTBXPanelObject) +endobj +205 0 obj +<< /S /GoTo /D (subsection*.57) >> +endobj +208 0 obj +(Class TTBXRadioButton) +endobj +209 0 obj +<< /S /GoTo /D (subsection*.58) >> +endobj +212 0 obj +(Class TTBXTextObject) +endobj +213 0 obj +<< /S /GoTo /D (subsection*.59) >> +endobj +216 0 obj +(Types) +endobj +217 0 obj +<< /S /GoTo /D (section*.61) >> +endobj +220 0 obj +(Unit TBXExtItems.pas) +endobj +221 0 obj +<< /S /GoTo /D (subsection*.62) >> +endobj +224 0 obj +(Class TTBXColorItem) +endobj +225 0 obj +<< /S /GoTo /D (subsection*.63) >> +endobj +228 0 obj +(Class TTBXComboBoxItem) +endobj +229 0 obj +<< /S /GoTo /D (subsection*.64) >> +endobj +232 0 obj +(Class TTBXCustomDropDownItem) +endobj +233 0 obj +<< /S /GoTo /D (subsection*.65) >> +endobj +236 0 obj +(Class TTBXCustomSpinEditItem) +endobj +237 0 obj +<< /S /GoTo /D (subsection*.66) >> +endobj +240 0 obj +(Class TTBXDropDownItem) +endobj +241 0 obj +<< /S /GoTo /D (subsection*.67) >> +endobj +244 0 obj +(Class TTBXEditItem) +endobj +245 0 obj +<< /S /GoTo /D (subsection*.68) >> +endobj +248 0 obj +(Class TTBXLabelItem) +endobj +249 0 obj +<< /S /GoTo /D (subsection*.69) >> +endobj +252 0 obj +(Class TTBXMRUList) +endobj +253 0 obj +<< /S /GoTo /D (subsection*.70) >> +endobj +256 0 obj +(Class TTBXMRUListItem) +endobj +257 0 obj +<< /S /GoTo /D (subsection*.71) >> +endobj +260 0 obj +(Class TTBXSpinEditItem) +endobj +261 0 obj +<< /S /GoTo /D (section*.72) >> +endobj +264 0 obj +(Unit TBXLists.pas) +endobj +265 0 obj +<< /S /GoTo /D (subsection*.73) >> +endobj +268 0 obj +(Class TTBXCustomList) +endobj +269 0 obj +<< /S /GoTo /D (subsection*.74) >> +endobj +272 0 obj +(Class TTBXStringList) +endobj +273 0 obj +<< /S /GoTo /D (subsection*.75) >> +endobj +276 0 obj +(Class TTBXUndoList) +endobj +277 0 obj +<< /S /GoTo /D (section*.76) >> +endobj +280 0 obj +(Unit TBXMDI.pas) +endobj +281 0 obj +<< /S /GoTo /D (subsection*.77) >> +endobj +284 0 obj +(Class TTBXMDIHandler) +endobj +285 0 obj +<< /S /GoTo /D (subsection*.78) >> +endobj +288 0 obj +(Class TTBXMDIWindowItem) +endobj +289 0 obj +<< /S /GoTo /D (section*.79) >> +endobj +292 0 obj +(Unit TBXStatusBars.pas) +endobj +293 0 obj +<< /S /GoTo /D (subsection*.80) >> +endobj +296 0 obj +(Class TTBXCustomStatusBar) +endobj +297 0 obj +<< /S /GoTo /D (subsection*.81) >> +endobj +300 0 obj +(Class TTBXStatusBar) +endobj +301 0 obj +<< /S /GoTo /D (subsection*.82) >> +endobj +304 0 obj +(Class TTBXStatusPanel) +endobj +305 0 obj +<< /S /GoTo /D (subsection*.83) >> +endobj +308 0 obj +(Class TTBXStatusPanels) +endobj +309 0 obj +<< /S /GoTo /D (section*.84) >> +endobj +312 0 obj +(Unit TBXSwitcher.pas) +endobj +313 0 obj +<< /S /GoTo /D (subsection*.85) >> +endobj +316 0 obj +(Class TTBXSwitcher) +endobj +317 0 obj +<< /S /GoTo /D (section*.86) >> +endobj +320 0 obj +(Unit TBXThemes.pas) +endobj +321 0 obj +<< /S /GoTo /D (subsection*.87) >> +endobj +324 0 obj +(Types) +endobj +325 0 obj +<< /S /GoTo /D (section*.89) >> +endobj +328 0 obj +(Unit TBXToolPals.pas) +endobj +329 0 obj +<< /S /GoTo /D (subsection*.90) >> +endobj +332 0 obj +(Class TTBXColorPalette) +endobj +333 0 obj +<< /S /GoTo /D (subsection*.91) >> +endobj +336 0 obj +(Class TTBXColorSet) +endobj +337 0 obj +<< /S /GoTo /D (subsection*.92) >> +endobj +340 0 obj +(Class TTBXCustomColorSet) +endobj +341 0 obj +<< /S /GoTo /D (subsection*.93) >> +endobj +344 0 obj +(Class TTBXCustomToolPalette) +endobj +345 0 obj +<< /S /GoTo /D (subsection*.94) >> +endobj +348 0 obj +(Class TTBXToolPalette) +endobj +349 0 obj +<< /S /GoTo /D (appendix.A) >> +endobj +352 0 obj +(Changes) +endobj +353 0 obj +<< /S /GoTo /D (appendix.A) >> +endobj +355 0 obj +(Index) +endobj +356 0 obj +<< /S /GoTo /D [357 0 R /Fit ] >> +endobj +359 0 obj << +/Length 502 +/Filter /FlateDecode +>> +stream +xÚSMoÛ0 ½ûWèh'R’%Óè0ìˇ]iâfÁÒdKŠnÃþüHÉi$‡Á€MJOä{O4*Ë*´RH*R„Õ족jÁ;W ŽÏ;Ž·ì©M㼯 ¦ò!äŠÙq« Lð QÀg}óú ‘rÂU¯0'H®S{P?¿iû³/ÚPLí}Û_×)9HS>ébp¨Xã,3ì^¬aÒœïD*1ý@Qqo°ÉUÁkmuíd>7Ú`û^c[–"›Å¯)ç3 ¾ëàK¶ê‰{oxa[ó^'ÉÙ粺º›n‰¿ÖÊ«úžT†Ü9á8¦`˜¯O¡PyÒ”Úa»[n„€s-Öà®T¤áã´.¡Tär>Èd d-EÞM¥ÊŸ±@~5Öúñê 1de + ò4ßR1d5ü-êÃŰ^î6RöéH†áÁ S ʀ쭔8ßü($¶¬|¹ø&ñc¡ëøŽ«÷³ZýA=‚Ø1£=ä«ÅpÔ”'–¥áߢ¯(éKõ{Q|[ —]½²½’“£Í¿cÎÿýÿèÜÜendstream +endobj +357 0 obj << +/Type /Page +/Contents 359 0 R +/Resources 358 0 R +/MediaBox [0 0 612 792] +/Parent 373 0 R +>> endobj +360 0 obj << +/D [357 0 R /XYZ 109.858 727.97 null] +>> endobj +361 0 obj << +/D [357 0 R /XYZ 109.858 703.064 null] +>> endobj +358 0 obj << +/Font << /F22 363 0 R /F21 366 0 R /F8 369 0 R /F14 372 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +376 0 obj << +/Length 2314 +/Filter /FlateDecode +>> +stream +xÚí\Û’·}çWà‘| ‚ûåѲl×:IEÞ¥*ªrü@ïRòF\Ò&‡Qò÷03ô*«Q•”eIÚÛv6 4V÷‡"J,6Ò Í4¶Ý>Ìzçžü0£!Üî‘ÒÃezºä[ X‡‡‡Œ_^g/àƒ– k<üÙÏ¿tç,ÿ8køÁ}M0=Ì„´˜i¿ßÎnf?Mµ–Ê´ÒÛZ*£±”Ø‹ÕìOß3ƒ˜ÀÚh´z‹´Ï)I1E«»ŸçßîwÍf׿¬~œ}·:ÛKæ”ó)øRÞ&qñ·X‹Hˆ£öŸnIuß^—"# Å\d‘!È ¡â>0 ”0>6t±´Lίv ÎæÍa¿XºÏw§ß.–tÞÜïw£°¹à[Õ™)ŽTÄ€|¤;Ó>Con` aH*QÿKLâ+—ÙK“…d`ÝSø~aÄ|ãßýºñ8lÆÊQ޹ä=R£D è^)§<ÛsKIˆÿ$¬Í¾ëú"ž}yã$9s3P€ã”0Ð8 í•*¹ÆLJЙ  / +ª°åúIj eA5Gˆ§ù—ûÛ åSòѱ‰Y:ºl“‹9b@ïIÌ™÷‹˜?ƒ˜qêÄ\§¡?N¬*fÀY_ÌOKÍœ`É9(æñ4¯ƒ”ß9)ß-7‡…ÏÒ~‘ZrÎçk¯ò»öë—û]z8ÊßLHL„B™ûÑ»Kˆ#s5†a¢Çñ¹Éº¦R ´Jë¡ÚU +8›"åRŽ¥… ˆ‰õæ‚™y³¾-ÔœŠcîÓ™,T-ô›’mæ÷’l?C²Æ©“q}œ†vü8ñªŒgç-SØXû”½0 +«v;XÝ$L;ÝÂÞàõÑçÑw…ºA`å¶M™ÙBÝÐb@ßiûµ}€[Œ°Vô)Ó8{im'ˆ§pµ;6ëíÖ/6»wíš²záW7í7¯ü$_ßúïR•BĘÁŠËéÑ:1=ƕ˪GïkhÓ«LW(Ðçé +zh§(Å4]!g¬:B²P\@rOó‡MÓÜû’'jõ¦Yšmw²w£éd]ªáeNÆ“7b@&V»uˆ÷˜}­Æ¢o},†vüXȪxgö‚KlŒÅ!žf/±®~Û<ÕŽ«'ñReÖ GO-¤`ÜjÇeÂE™ŸTïCCÒ‰·>$C;~HTU¼€3îÆVrû”Ìëöºš*¯ƒ­, +“ žæËÍÛµ?(Ü6Q¿^»¿¥Ôû0® +\™G½Š;7㪠b .Œ7…mËW¤âÏ®ðšR°wJ­‡}hLJ]W• +8ë+U=I©„aB%¨Ôñ4ÿöB•?ä\Ìß¼êÒmñ`1Ž‘(sR¨^[ ÄÄW¸R›“K¶ +Ä»h=ÞC;>Þ¦*PÀÙ©”‰‰6@ÄÓ¼ñëáþ÷Å’éy¬>2§RL5G™¿BNm1©”SsR—œúhN…Â~–,ö¡v[“,äl‚œÊ•Á4kY–$!žæ7[¿ö‡ z¿ð}f槇GS«ÂF ”ù*¤ÖJ9¡ËÁ@I @ ;Ö=´ p6ÁÁ—3"¡½U‚dÇÑÿò6‡ÆýÍ Ö»Ø/yý»ÿáa}TŸ~÷ï®×’ÿü•o¼ì]ÌÕüŸ))N»9§X ‹2Æã1ÐÛâ.°DšÞÛú +·JÌÉÃr0 Ech't£IUŒPì'È–\`Vi§l!c1Ï»ëÓ6éhÜ­c [‹2O…\ ›T…æl.U( R ÜJëñÚyD¥€·)ÊPª1çðš!žçëcùÈ”JÇeîŒi”ù+4–[ D*5–sRϽ±œô„¶Óe=´C;A—ÕË<· ŽI9qáÎr‚xžÞ…e×í>ļyu ‹³/A ×ÔŒÀÔ¢ÌIá´4@@"ñ°4'rIœŸ¦a`D: ׇdh'h¸z;ò6A9Ê w&À i r¾^y+ýNµ§M{YbûŸVÐß߇ìÚv­ÜØü§Ó¦­@}-Z¼Í㸣ŒF!åzÄ4%Üœé%á‘A=‹íÐ,VÈÛw ˜¿È¨À+ÒÞÔ7 ®7oÃ.þ°Ù¥‹ÑãÛZ`¢%êŒsm„@$$“XÛ Z½ Á¸ÅЉ'MÚî¥ÕI!¡ ÚùÝ_Þßxñû 㺰è(¬‰í‘¯:-¤—œÆeÙù´™ I7“ëC2´SVçy&Þ&(éý–O •ô 6žÛõñØ6>Vn âóxIÏiøæ|sb¼´p7…F™³ñâ1#&bvÈ=S1×´ D¸Óf=ÂC;A›ÕÛ· Eq’€È 2ÔfL®^›ßžŽÍþáªi[#iú‚p”ùK3b BLº·«YгéxÔÄÄ´c=¦C;AŒÕÛ · %5* 1&HEŒ/÷¡wë7žïǧsÇ,sS8žk1—t>—s¹¬÷uBñ>kˆ÷ÐNÐhµM y› aRí¶_p›8A*uiò¡xp¬ʬ—OŽ¢p–fFá"M@š@¼;iÖã=´¤Yí¶AÞ¦HŸR`+ÀµF”§—w{Ÿ4?ŒËJƒ)1¨óX¨*[À*%ȌճÍ@$Ï:¬Gr`%¨°úÁ€«îÿhâXÕºûçÿˆca»î³È8>*Ü­sù×2ÿ;ôâùÜß×Ñ>ÙI¾þ µÑªŽendstream +endobj +375 0 obj << +/Type /Page +/Contents 376 0 R +/Resources 374 0 R +/MediaBox [0 0 612 792] +/Parent 373 0 R +/Annots [ 382 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 ] +>> endobj +382 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 580.346 188.964 589.257] +/Subtype /Link +/A << /S /GoTo /D (chapter.1) >> +>> endobj +386 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.806 563.41 162.549 572.21] +/Subtype /Link +/A << /S /GoTo /D (section*.2) >> +>> endobj +387 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.806 546.473 157.54 555.273] +/Subtype /Link +/A << /S /GoTo /D (section*.3) >> +>> endobj +388 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.806 527.599 246.042 538.448] +/Subtype /Link +/A << /S /GoTo /D (section*.4) >> +>> endobj +389 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.806 512.6 164.321 521.4] +/Subtype /Link +/A << /S /GoTo /D (section*.5) >> +>> endobj +390 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 483.764 155.68 494.529] +/Subtype /Link +/A << /S /GoTo /D (chapter.2) >> +>> endobj +391 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.806 466.827 229.631 477.676] +/Subtype /Link +/A << /S /GoTo /D (section*.6) >> +>> endobj +392 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.806 449.891 194.527 460.739] +/Subtype /Link +/A << /S /GoTo /D (section*.7) >> +>> endobj +393 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.806 434.892 184.661 443.803] +/Subtype /Link +/A << /S /GoTo /D (section*.8) >> +>> endobj +394 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 417.955 214.162 426.866] +/Subtype /Link +/A << /S /GoTo /D (subsection*.9) >> +>> endobj +395 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 401.019 224.401 409.93] +/Subtype /Link +/A << /S /GoTo /D (subsection*.10) >> +>> endobj +396 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 382.145 212.169 392.993] +/Subtype /Link +/A << /S /GoTo /D (subsection*.11) >> +>> endobj +397 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 367.146 227.86 376.057] +/Subtype /Link +/A << /S /GoTo /D (subsection*.12) >> +>> endobj +398 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.806 348.272 332.745 359.12] +/Subtype /Link +/A << /S /GoTo /D (section*.13) >> +>> endobj +399 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 333.273 223.986 342.184] +/Subtype /Link +/A << /S /GoTo /D (subsection*.14) >> +>> endobj +400 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 314.399 244.714 325.136] +/Subtype /Link +/A << /S /GoTo /D (subsection*.15) >> +>> endobj +401 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.806 299.4 185.187 308.2] +/Subtype /Link +/A << /S /GoTo /D (section*.16) >> +>> endobj +402 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.806 280.526 247.896 291.374] +/Subtype /Link +/A << /S /GoTo /D (section*.17) >> +>> endobj +403 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 255.564 175.072 264.475] +/Subtype /Link +/A << /S /GoTo /D (chapter.3) >> +>> endobj +404 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.806 236.69 187.705 247.428] +/Subtype /Link +/A << /S /GoTo /D (section*.18) >> +>> endobj +405 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 219.754 236.744 230.602] +/Subtype /Link +/A << /S /GoTo /D (subsection*.19) >> +>> endobj +406 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 204.755 257.499 213.666] +/Subtype /Link +/A << /S /GoTo /D (subsection*.20) >> +>> endobj +407 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 187.818 226.034 196.729] +/Subtype /Link +/A << /S /GoTo /D (subsection*.21) >> +>> endobj +408 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 170.882 223.958 179.793] +/Subtype /Link +/A << /S /GoTo /D (subsection*.22) >> +>> endobj +409 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 152.008 256.198 162.856] +/Subtype /Link +/A << /S /GoTo /D (subsection*.23) >> +>> endobj +410 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 135.071 266.078 145.92] +/Subtype /Link +/A << /S /GoTo /D (subsection*.24) >> +>> endobj +411 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 120.072 264.086 128.983] +/Subtype /Link +/A << /S /GoTo /D (subsection*.25) >> +>> endobj +412 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 103.136 237.546 112.047] +/Subtype /Link +/A << /S /GoTo /D (subsection*.26) >> +>> endobj +413 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 86.199 259.104 95.11] +/Subtype /Link +/A << /S /GoTo /D (subsection*.27) >> +>> endobj +377 0 obj << +/D [375 0 R /XYZ 109.858 727.97 null] +>> endobj +381 0 obj << +/D [375 0 R /XYZ 109.858 603.205 null] +>> endobj +374 0 obj << +/Font << /F28 380 0 R /F20 385 0 R /F8 369 0 R /F29 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +419 0 obj << +/Length 2526 +/Filter /FlateDecode +>> +stream +xÚíœ]o¹†ïó+x)]˜’Ã!ç²NÒb‹,ºH¼‹E/Çõª‘-ÖÑôß—ä EŠÃó* Hc ‹…?ôúœWgž?F‚5î?ÁDÓs«-3ÒðÞ°ë»W »u¯üù•­{E¹—šÚ‹Êö\«Þ}ÓrÛõAÃþ7ìñ–å?¾ÏþR´†ѱ‹®W\4ÂÿéåÕ«?üɲž÷bWÿdQ%WŸþ¾x½Y==-/”jWWË ±¸üÛoë§õÇ¥X¬7ëÝRÚÅÜ÷WK«ÛÛÛÍÍO^´s¿ºñßÜ-ÿqõ—Wo¯öFd/xÓk–Ù˜¼Ë¨A^eo¹úÀ+_^è¦ñ_Ú¾Ï~:üòÿþZQ0퀽‚‹T°2Ž/˜l'Ù”Si|yöŠŽ÷Ê|„¦ã¢k!„£Äû|¿}öD­ïožJÃÂ:ËâMì +˜Ò½!«ôAʈ¥ïj‚¢\D+}IÊ8VMÒ +²ÒÚ}­ºçRZHë(ñ>¯BS|X^¸/`MË›N²,èÙQ3[É{˜ùe4ÀïÞiÁ•IìÒW¦ŒØíHvA¶9:m+<Üïó7?ޝ}³]}ÜÄQ¼Òu ï4Ë‚WÚn@½áÚª?@Ëû¾)hÁ¥HÐÒ×¢ŒsZ­’·Z}KÕñmOj®\š3£&J¼Ï_ï×KÏéîRÕb¼I}óù—¥ì«û›ÍXM–îý™âTïCG ò#UÇ•ìüœ6à Ð PºÐeœ#€‚lstÕÆòVà;‚QBL¢þ¸ñÌÞÞß…{ïYÝýâo<±Xä*…¬²:H3i´»«èœ½`T)A‡tË8CCr²ÍpgªÝL¹µq%‡—Ï;?µÚÞO˜SŠwÙßW¡5ÈGl¹sƒ¬€‰ +½ºŒƒÁDÙfhÚÍ`t«!˜£„Ó÷Â׿ß\/¥Y|¾Üú¿Lm;Þ–%›":H!©·²=0tj3"ŠIPÙÄ$]Ú2N`Ò’L‚ls4Kíf$M™%ˆI×*Ý—ÝãÖO~^=Þúü~zƒiÞɲ¬•A{Ð kqÔέިª˜@¤«XÆ ö$ˆ Ûͱ.;q” ŸŸvÛ»Kÿ‹g?ýÙUÆðÎp¡ ËN5ÈÕžÁÌÕ 2ª˜¤«XÆ9 È6G3”Š›áOIGÉQ_û_ü‹®ý äˆmzn­aYúJW4È£´’[w_{|‰wŽŠ | Eº|e_>%IA¶9Pl:§Ò^`úþ8ˆïV‡U÷é ºk¸ÎBÕ;á ¹ÈDî\·TRX:Ý (f¢.f'P¨H +A¶(lý& ó8Œ’ã®ï?OÔn"b-ËòL 5ÈŒÔî­ºq!7s2û>ˆ¨¦{AMË8Droe›D#y/ q”qXQ¼ ãò7@_»YËææq¦sÝ7še©§lŽä/ÊÈý½èC¨` <º`eœ¹Í²Í0-iµæ=œŠ£Ø½_}Zo/Ùڬ¤—Üè}´ú  A<íYKž^6jtµidµŠ(3r󤚣¿©ž7žý‰´7[w—gÃÒàRw‹ÕÇÍ͸yg!•;ÀŽ·‚eÙ+7€A‚Æ™pîðôf¨ˆ FºŠeœ€#¹T²ÍÑö¤äBàñv”<ÓC'5£Y–§²Ó¨èõNtÒõ.ã¡d›¡w*k¹láX%?;6Ÿ7;¿‡†u‡õÉV_ïþ™µ,ËXÙë4ÈVÜìËm7ûQ¨´{2AiË8LrQe›¡o*#¸jà²b”dƹó‡ëa«o†÷ÇÚºŽêZ–%¬®ëx r×urW§¾®ƒjšˆ¤kZÆ9B$È6G¯Ô-w) ‘£™MqÄâ¯îÎSëÅ¿n®‡Çn*pj›Spz 2¸‡33xòp‚š&8éš–qœäê7Ê6G»tiZÏëD çûÕ'jÜ/ûÔÖ|ü)w¡Y–§â AfâþKnæd':¨˜‰@º˜eœ@ ¹úˆ²ÍÑeÃÛØ£„ 0<ƒxóe{â~CºÒýñõ°Nã AÆöm13vòmÔ4AI×´ŒsJm޶Ø(®;xR'J¾þɯ,(ýäÊ<>ù•g>?ù5Ç;º2‰]úÊ”q»ä2;Êvøù–‡h¤íx'áC4QB=DóÖýæËî§Ýð(7ñMÇ3še«®nz ²W7sKçÕÍ +£¨Ð{FA¡Ë8˜Q”m†þ*»žwî9F <’»Ù>:Jïjçõ,KS= î5ÈK\4ʽœŒ@iŽtiË8Gr+e›áÔßó ‡û(8Þù%ÌaOhëBšÅ×Ic­7,Ë]='n ½¸/™Û;½}ITÃ#]Å2ÎA¶9z£ÒÜ +xB7JŽÈxó¸}VØÝ¯þ=PLö_²œõ{endstream +endobj +418 0 obj << +/Type /Page +/Contents 419 0 R +/Resources 417 0 R +/MediaBox [0 0 612 792] +/Parent 373 0 R +/Annots [ 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 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 ] +>> endobj +421 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 690.167 292.092 701.016] +/Subtype /Link +/A << /S /GoTo /D (subsection*.28) >> +>> endobj +422 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 675.168 187.096 683.968] +/Subtype /Link +/A << /S /GoTo /D (subsection*.29) >> +>> endobj +423 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 656.294 175.058 667.032] +/Subtype /Link +/A << /S /GoTo /D (subsection*.35) >> +>> endobj +424 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 641.295 188.646 650.206] +/Subtype /Link +/A << /S /GoTo /D (subsection*.38) >> +>> endobj +425 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.806 622.421 228.718 633.27] +/Subtype /Link +/A << /S /GoTo /D (section*.40) >> +>> endobj +426 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 605.485 273.356 616.333] +/Subtype /Link +/A << /S /GoTo /D (subsection*.41) >> +>> endobj +427 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 590.486 234.613 599.397] +/Subtype /Link +/A << /S /GoTo /D (subsection*.42) >> +>> endobj +428 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 573.549 247.066 582.46] +/Subtype /Link +/A << /S /GoTo /D (subsection*.43) >> +>> endobj +429 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 554.676 271.668 565.524] +/Subtype /Link +/A << /S /GoTo /D (subsection*.44) >> +>> endobj +430 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 539.676 268.154 548.587] +/Subtype /Link +/A << /S /GoTo /D (subsection*.45) >> +>> endobj +431 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 522.74 280.884 531.651] +/Subtype /Link +/A << /S /GoTo /D (subsection*.46) >> +>> endobj +432 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 505.803 261.512 514.714] +/Subtype /Link +/A << /S /GoTo /D (subsection*.47) >> +>> endobj +433 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 488.867 257.084 497.778] +/Subtype /Link +/A << /S /GoTo /D (subsection*.48) >> +>> endobj +434 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 469.993 290.902 480.841] +/Subtype /Link +/A << /S /GoTo /D (subsection*.49) >> +>> endobj +435 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 454.994 293.752 463.905] +/Subtype /Link +/A << /S /GoTo /D (subsection*.50) >> +>> endobj +436 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 438.057 267.406 446.968] +/Subtype /Link +/A << /S /GoTo /D (subsection*.51) >> +>> endobj +437 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 421.121 227.971 430.032] +/Subtype /Link +/A << /S /GoTo /D (subsection*.52) >> +>> endobj +438 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 404.184 223.543 413.095] +/Subtype /Link +/A << /S /GoTo /D (subsection*.53) >> +>> endobj +439 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 387.248 250.11 396.159] +/Subtype /Link +/A << /S /GoTo /D (subsection*.54) >> +>> endobj +440 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 368.374 257.361 379.222] +/Subtype /Link +/A << /S /GoTo /D (subsection*.55) >> +>> endobj +441 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 351.438 257.582 362.286] +/Subtype /Link +/A << /S /GoTo /D (subsection*.56) >> +>> endobj +442 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 336.438 260.211 345.349] +/Subtype /Link +/A << /S /GoTo /D (subsection*.57) >> +>> endobj +443 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 317.565 253.293 328.413] +/Subtype /Link +/A << /S /GoTo /D (subsection*.58) >> +>> endobj +444 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 300.628 175.058 311.366] +/Subtype /Link +/A << /S /GoTo /D (subsection*.59) >> +>> endobj +445 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.806 283.692 227.75 294.429] +/Subtype /Link +/A << /S /GoTo /D (section*.61) >> +>> endobj +446 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 268.692 247.509 277.603] +/Subtype /Link +/A << /S /GoTo /D (subsection*.62) >> +>> endobj +447 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 251.756 271.696 260.667] +/Subtype /Link +/A << /S /GoTo /D (subsection*.63) >> +>> endobj +448 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 232.882 304.573 243.73] +/Subtype /Link +/A << /S /GoTo /D (subsection*.64) >> +>> endobj +449 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 215.946 295.828 226.794] +/Subtype /Link +/A << /S /GoTo /D (subsection*.65) >> +>> endobj +450 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 199.009 271.032 209.857] +/Subtype /Link +/A << /S /GoTo /D (subsection*.66) >> +>> endobj +451 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 184.01 242.915 192.921] +/Subtype /Link +/A << /S /GoTo /D (subsection*.67) >> +>> endobj +452 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 167.073 248.173 175.984] +/Subtype /Link +/A << /S /GoTo /D (subsection*.68) >> +>> endobj +453 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 150.137 244.216 159.048] +/Subtype /Link +/A << /S /GoTo /D (subsection*.69) >> +>> endobj +454 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 133.2 264.418 142.112] +/Subtype /Link +/A << /S /GoTo /D (subsection*.70) >> +>> endobj +455 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 114.327 262.287 125.175] +/Subtype /Link +/A << /S /GoTo /D (subsection*.71) >> +>> endobj +456 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.806 97.39 208.433 108.128] +/Subtype /Link +/A << /S /GoTo /D (section*.72) >> +>> endobj +457 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 82.391 254.095 91.302] +/Subtype /Link +/A << /S /GoTo /D (subsection*.73) >> +>> endobj +420 0 obj << +/D [418 0 R /XYZ 109.858 727.97 null] +>> endobj +417 0 obj << +/Font << /F8 369 0 R /F29 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +460 0 obj << +/Length 1597 +/Filter /FlateDecode +>> +stream +xÚí›YoÛFÇßý)öQzÐvïã±vz¤h€¢VE„Xu ø$¥i¿}gI.¹»Ñ ´èP‘.mÖP¥ÆI¥uzä¦Ae-éÖ)Ú?‰H,8CÙH"_'¯¦aÔ\É +“ k •I c‘É3Œ5DDi;ñÒã‘p3Rq“ºJ£{ Œ +ªP§\©0 c£É’”çëû›Ô ŽzÑÐøê¼õ2=çðäýf?bRx.Ld…טÉFC%¤dÃv‘Щ1ù Ç0l‰êwØâÕÆ©°5(¶„Û=Ô(H†^Õ ÒC_«/^~¿¹¿‚'·Ûôæn®…PŠfcnk •r°ÅQ²—Ð ÛÏ€4F!QËŽB¼˜Ã8G($Üúº'Q¨,×`CQØHH +ßÜÔ úR…ÅǪ“àuÅä݈I¿X>²Â{ e£¡TAñ C/Á/‘JŒC¢|‡xù†qŽpH¸õqÿ¤E\n$½ˆ7l¿LÄmöçéõf¯öÔ’™Îc + •ž2† o{é}ù½ñQË6QáT¼ÂÃ8¨•p›¡aÚ(¹ Šj˜Y‚4ÌÔ"/>ìw—À5cz¾ÙM5ÊèYa9Ù'AB¥•Ûd™Ö µIªz-}Dù†qhú(·6Ön ¹\g u)¨ê’¼ÇЬp™¼ ”4T*yò.Syž¼kŠˆÒv4â¥Æ©h („Û½&'"Ic#9FãO©+nîóžñv<Çî…a…åÄ Sk¨¼ u¦2¯ÿQ3ügHcL5í˜Äk:Œs„IÂmŽiwž^ŸÉc™o!màNVxN@Yk¨Äòx]&v²ã5UÌŽF¼˜Ã8©˜^¢4n3\›´Js_k²k>Vï½]*¿x·ÝaÓ DѱÂpŒb£¡²R*@ ½¬Ntšù´ÞIÔ»£¯÷0NE«Bi%ÜæXÏ…ãìœ ð‘\Í?¦§±¹{Nl6‡¸mÌéÍf­Y"lþ.s{ž¿{ŒîÅ+<Œs„QÂm†Žjóy5K°Žº~·½«˜ÜóÉN*8œ1+Œ&:i­¡²É´Ì湓â”Rõn)%ê=ŒSQŠÞ“¤Üfè¤Æ+•§zi–¤<×i§ù×ûå +¶#"%LqÂ)Våœ5¤sP\„¾óÉÌ>ŸµÃR?™Ž]ü'3Œs„]Âm†KñÆZ>½´ ¶V ýuôâ¡‚ùáŽÖsÔ-Òm W½3ܶ& ‘XÛk»Äžá%pÅ‹ÝÑŠ{¥b½mDXÍÑfuäÂ’ßCÊêbüÃíà é6ߺUÌŽE¼˜Ã8Gh$Üf¸öd”âRÒ«~#9†ãež›ØÜT˜ás‘Qž›ÊŒžç¦›D…;6ñ +ãTl¢wŽ(·9Z¥°\òëFYrô¾åEz£ZÚÔí˜P¯!´e…åÄ}ËZCå•o\–yÐKª|~xù†q*üŠá6CkÔ!pè8~Yr¿Þþ²Ù\¶í²þÚÑÈà`^¬ÈbLd£¡RUæ~XÞËT¿¨¾ˆ HÕ­E‘¨Û0N…¢ÇP¤Üfè„ÚËêK=ŠA±ÐwnS;FÔB`…ãÄŽ±ÖPiå›–eZ§~Ó’ªi‡$^Óaœ +Ɉ"I¸å¿ÿY)@ò1@6Y´Ò°3E–JD6¢¬Ii~½\9-ÐéÞmî¯'.9ÇlíŠÀã F†t·ÊrûîAŒìrŽÒs+žV‚î£x MJâåýÕöÏQú†–½òú<ÑKendstream +endobj +459 0 obj << +/Type /Page +/Contents 460 0 R +/Resources 458 0 R +/MediaBox [0 0 612 792] +/Parent 373 0 R +/Annots [ 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 ] +>> endobj +462 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 690.167 247.149 701.016] +/Subtype /Link +/A << /S /GoTo /D (subsection*.74) >> +>> endobj +463 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 675.168 244.077 684.079] +/Subtype /Link +/A << /S /GoTo /D (subsection*.75) >> +>> endobj +464 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.806 656.294 208.046 667.032] +/Subtype /Link +/A << /S /GoTo /D (section*.76) >> +>> endobj +465 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 641.295 258.717 650.206] +/Subtype /Link +/A << /S /GoTo /D (subsection*.77) >> +>> endobj +466 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 624.359 280.275 633.27] +/Subtype /Link +/A << /S /GoTo /D (subsection*.78) >> +>> endobj +467 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.806 605.485 235.305 616.222] +/Subtype /Link +/A << /S /GoTo /D (section*.79) >> +>> endobj +468 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 590.486 280.967 599.397] +/Subtype /Link +/A << /S /GoTo /D (subsection*.80) >> +>> endobj +469 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 573.549 247.426 582.46] +/Subtype /Link +/A << /S /GoTo /D (subsection*.81) >> +>> endobj +470 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 556.613 255.7 565.524] +/Subtype /Link +/A << /S /GoTo /D (subsection*.82) >> +>> endobj +471 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 539.676 259.63 548.587] +/Subtype /Link +/A << /S /GoTo /D (subsection*.83) >> +>> endobj +472 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.806 520.803 225.093 531.651] +/Subtype /Link +/A << /S /GoTo /D (section*.84) >> +>> endobj +473 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 505.803 241.144 514.714] +/Subtype /Link +/A << /S /GoTo /D (subsection*.85) >> +>> endobj +474 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.806 486.93 221.523 497.778] +/Subtype /Link +/A << /S /GoTo /D (section*.86) >> +>> endobj +475 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 469.993 175.058 480.731] +/Subtype /Link +/A << /S /GoTo /D (subsection*.87) >> +>> endobj +476 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [123.806 453.057 225.259 463.905] +/Subtype /Link +/A << /S /GoTo /D (section*.89) >> +>> endobj +477 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 438.057 258.163 446.968] +/Subtype /Link +/A << /S /GoTo /D (subsection*.90) >> +>> endobj +478 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 421.121 241.144 430.032] +/Subtype /Link +/A << /S /GoTo /D (subsection*.91) >> +>> endobj +479 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 404.184 274.961 413.095] +/Subtype /Link +/A << /S /GoTo /D (subsection*.92) >> +>> endobj +480 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 387.248 287.525 396.159] +/Subtype /Link +/A << /S /GoTo /D (subsection*.93) >> +>> endobj +481 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.72 370.311 253.984 379.222] +/Subtype /Link +/A << /S /GoTo /D (subsection*.94) >> +>> endobj +482 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 341.475 167.871 352.323] +/Subtype /Link +/A << /S /GoTo /D (appendix.A) >> +>> endobj +483 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 316.513 139.227 325.424] +/Subtype /Link +/A << /S /GoTo /D (appendix.A) >> +>> endobj +461 0 obj << +/D [459 0 R /XYZ 109.858 727.97 null] +>> endobj +458 0 obj << +/Font << /F8 369 0 R /F20 385 0 R /F29 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +486 0 obj << +/Length 1293 +/Filter /FlateDecode +>> +stream +xÚ͘]oÛ6†ïý+t)ÃI${—fí¶ÚÔØ +´½Pl%ñ"KžÍÔM÷çwI}XÑÇv3 A™|Í—çá9ÇŒY@ᇌj¢H.‰–Áz· Á=Ìü´`^ÃŒ€):4iE¸"©´Uiç ô7},4¡< ¢4„)†oy½Z\¼å*จ VwA­ªE«Í§ðêçËw«77Ë/«kPó ÑDÊÕ)lP¥A”p"âØŠÊoVq"$á ¬H)Qb0ШŽ4J‘Œÿƒh#J%±¶Áÿ¹øô…Xúzƒ*8Á3%<ÖÁnÖ¹Tþu±ø°xß,åVf\ŸQ”ERž3“x€*H('L: +¿”æ°dIXmžÖf[•}(õ±â$Mô¿ XýãÆXz–$ Α%€c!ˆ†“ŀ߿™y:äÇÑ@ñ„Õÿ0Nž‚Š7qª@ +Œ5˜]1…pµ;×ÕëeÄÂËHpnø—‡Yé^g›Í’…**?´ÏÖK®ÂÇe’†Ù}Žƒ"¼Uup‚ÕR‰°ZF ªŠ[˜ÈœRê^W»½›*a&Ç…Ë%ס9º…>Ó„ÂÄ•uÜãÌóa{ÿ`%x‡&!!m)ÔÕòÚU1‹Û8#Nd*y-úLYât]ÐRäi«\kõl4v½¶mj7OÇ£ÝmQÀì’ý`· +ûE"ÆšÌÉà=B„GÔ?XùiÉ%üu1 w0&€±Ïpô«ÝÂh‘ÝIÓOFž@ÍÒ8:%Tøªû•.#ۗݬ¬ßuÞÚÏ—þêÜnИ=ìêÕÅÅét"`X6Ø +óÀ à,^’ +ï/Ì-„âÙõ£‰YLhÇÝh^4V¯™ÚwÜ7©Ï+&i +a³”h‘öJN-ÿ¶Ï077G÷z> endobj +489 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [253.708 392.552 415.518 404.507] +/Subtype/Link/A<> +>> endobj +487 0 obj << +/D [485 0 R /XYZ 109.858 703.064 null] +>> endobj +6 0 obj << +/D [485 0 R /XYZ 109.858 703.064 null] +>> endobj +488 0 obj << +/D [485 0 R /XYZ 109.858 454.279 null] +>> endobj +10 0 obj << +/D [485 0 R /XYZ 109.858 454.279 null] +>> endobj +490 0 obj << +/D [485 0 R /XYZ 109.858 186.824 null] +>> endobj +484 0 obj << +/Font << /F28 380 0 R /F22 363 0 R /F8 369 0 R /F14 372 0 R /F29 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +493 0 obj << +/Length 3069 +/Filter /FlateDecode +>> +stream +xÚÍkÛÆñûý +¡ +ˆhîrùr?´vÓ&е/@ƒ8@y¥#L‰2IùbôÏw^»\Š’Îi¿£årvfvÞ3<µˆà?µPQæI¾ÈtÙb½¿‹;xó݈U¬Â<‡%¾ 3ÚíD–oGÈh±Òa‘ùñîç_¢Å°ý§L‘/ž`…Ú‹ýIŠPg¹<7wïîþá°ð»láPͲ_ÀÒ*Ãkåðëî÷úþîÅ_t± çûíB à~ósðæ0tíæ´êö°üåþ‡»?ß;„JéPáéëò² 7h*‡…I}¢ïµN—+­óà¯õº:ôR¦CyX¤)ž2 +î­‘Ðç¬%qê$¹Åš™±–/¼Q‰'4Ï ¨!-¥‰0ÄxÒ\… +®ó¼:Ø–Vlÿ“™øV9Ó€ðµJó(LMîî™/ +fL*°¼§:Œ•¡kþ©=.AŸ»¥ +êÝ#®¼óÂa’à#&¸5ëN9t`ùYšáÍä}¤†òiÆ¡Îc«¿(Rÿ†ÿ™å*ŽãàUSý*«Mð-pQ-W*8 ;=®Zdé¼7ÆÀ ØoÖç¸g4]EGªîîV›n²J£0ɨ4,b¶¼ûGDgEph‡­élåQ€Ï=/ÛCó™áÊ#ì‘|M°år"'†–î_ÿ“7¸\/u|X&iPîªßâ˜p ³YâåVȨP^&Ä„´Ã¾Ìc9Ñ"#e²Œøåœ"rù ¼,¢àé±êÈ’1^)à(†á‘åâdÉKk9Èf3Ê}öjö±cÕ ÈÆÊ:šŠù5™$‘k¸¬A¤Å‡Š¥Ú0`)P[ØìèÕR*» +ÌbHðÓ27A{p„ÁŶ³ÖS1‚%ŒË“%(°õ ¿Ar /à‡ÈÓA¸i· ¹u‚"nêuI1Òãä‹r¯šÆíÎEÝUW.ÍBh¢=ukY¯Yß›ŠeŽìâoÛ!²]}(Þ@YµÝþ«º90õ )mP²¸ïSÙ’ 5¤Ã'ä +1v H*oÑ 75Jn,Z'iãù=I_¾¼#“¬SmnÇ+ˆâ•a”6ai‡H¢L6#¨‹0ƒ(s“ ÀÌN‚•–Lè½Bµ]Õ`MrêH±µÀ/êÐ +¸eU¹t;{Ô³ÌÉÏ3–‰ ·uüÒ…d†ìØjÂâb<¹%ñ‘"/÷£ÓÕb¢d¡Æà\‡Žõü[6 ŸO\GY4EHÊTS@Ñ“yªÁ[Ȫ_.uõ=[Á9Ì0HuCvsdWïöuﬦ•¿íZ挳ƒÄÿòD‰"ÂÇ÷QQqð­WA¹$ êºíEP›GÏÙÞtÝöæYÛ»EÐÙÞÁK¶çÑû‰Ê£ºuÂiJC©Àw›ëÐY7¼I‘ (0”–yiG §&Ù)#iŸ"(Æ {’lc9GA‚B”(‚C{²*+¢UŠ¥ã”œKe®W óì'w +”™ÇÉ…`ÉÆ2Zí¬¦Àƒ‡s²¥¹n>)6¯š—Étéì¶yy@WÍËÂ?)Õíh›“Í’cñ,xu!žö£µaã4¥,¨‚’R¡’&²`ã4­d}Ü’Dö«œ9BíÒU´î°¥X%F·]µ«{[yÒ;’¼5ÐõÂ['LÌœ7©¯‚ßJgš#ÉS‡¥ô£OdpZYÙ\÷‡ªÐÏøÀtÝæY¸EÐùÀÁK>àÑ»'¥*3Æ +|Œ)!ã6‰ŒúC% e»%µ[Ñ—Ò¢Å÷¸{ê†&ÑÊúìSH‘½×}W]{×[Û.‚ÁéìXGÎÛäì5리÷¼œú'l”dªm×ÓuŽ2EùQæ~]L€`8…q#4GS7 ’Î[Ùj$Ò¶ÛyVz^òIÁ°ÑÛHÐsiÒb™(`¸¶"…£`îƒWÒv ù¶M&Ná™G%ð01\ìù’ë…8»öíÙø€7ÿUZVuÿ5^Í䜢@'¼‹1Ö’hP!ŽÓ'b Q«qÓ6ô8eU-RÇh-…—ê–©V êý±©)*™,ÞØBÞ@àÇÊjÍ ÃØ<:µ“t­º­Ññ«Ñàcã h¬©Ç vó^U8^­±Üƒ¢DƒeW÷ÔPíÆS]»÷t-è¦và¨Ôñm—jÀÙF*½ôÔªWhl¢0ápÆ þ—ñÌu||{)ªŽ'¯ DY,Å?îb’@w3nÒ4LÕ„›ÙÀ9…¸é®ýßð«ã0ÉÍM†9æžu@Ë}ùâ²Nuœu(f²(]xèç‰A`f<\š–ë\…i¦¥ñÛaã'³1éSwŒ‹oÛm÷×4«³$ŒŠÿÃQºÎL˜WGé¦(´­SãeÇÔ/ááÒ`ëœÚÖ(ü³…ì0M‘#s<*À'ÕÕ] `=¨¼x<}8¯‰¤Ð’Ó.^0&‰ððšgÁKn(§³Oaü‘<~ÖC¤i’… + µ1a¿ÅQääÊ;:ÓÏvûEÇF‘É9OI¹]MxšY‡ÀܤŽX vò©¯Ûõrc›bÔ6$%≻3ZNçQW&ÏÏ\-6bJ€ÀÅÞ8~©;?ɘë,¶Þòæh:ð°!Ö¾ø‰ÍÑå.izéð89DJ›ñXöSµ”è0Ájɳë*8Ì‹h¿CÅ‹ ø“í„Ôx5¹»-ÅID¶lÇþøLâ€3?¾ƒ_)úB’ð˜”%ÿ@&Ü5#¯{0òÐÑï¾Ò‰_Gñ[žÜ cÚ#ÞÿVr݆CÅr¸øí¥{t›1X«/~›GðÉ•wtîSì^êÀM=䎶یE\EV®[RÏ‹?|÷öûs®5hºÈÌ„ësŸ±0·ø£HZLù³e)5}cá+¹2ihâlR}¾’Ú„&xökF)›“ùŠ Ç†c'»e¯~Ów©_[,§þÂ'þPx±¦ö*3Û/Øê‹àKÙY8)2íÐL|ni¢½}խ픑G<©a§X•:óêu™Æ~´ï$¾o]eOg˜Ž$Ác‘-÷„’B%ß?òŠ5›JÕUwϧåHgéÓ[ËܺöÆq*^§—>Uˆ£Õ{j%3,Ùcw•¹«M *åi˜Jgÿ|Ÿ¦=òW1¼—*®~p5µ²"E2uä€Ñv˜z„o˜1Û2âqÒ'ª£ŒLF¬6w«’?Ô"ã¹½åyî5¬©oª©±ZIý`ŠK7-¸tHÎúd!®Þ·—8Y•®«Û1w8 ñÊ\º‡rïêxª‡Y6ŽsM̦)Tž_íÉ•wô<Þœc?+¥I„/q²5 ‹Ø|QXLT •ô”ùY§ 0·Ø<ǃl†,³ûÑâño ÂÜLóíCI¡'ÓA¹oO<.ágþãÅ™ —«@>ÙÐ>™òÌ$“°ÐžlšaP°sDʦ œ)Êö¾í*!±­¤‹%¸1ĹÃ: ÖeC)8ó>6C}´Ý.@­Á/©§ÅÛgfwïUlÜ"¸ÍÁúÊïÆ¿fà©èz¸<Ö ‚ûÃ…P¿µ÷ÔCì·Ài¸ñýŠ vb –‹lÚ­ü¢?Áendstream +endobj +492 0 obj << +/Type /Page +/Contents 493 0 R +/Resources 491 0 R +/MediaBox [0 0 612 792] +/Parent 373 0 R +/Annots [ 494 0 R 495 0 R 497 0 R 498 0 R 499 0 R ] +>> endobj +494 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [108.862 337.587 167.614 348.435] +/Subtype/Link/A<> +>> endobj +495 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [108.862 320.097 173.702 332.052] +/Subtype/Link/A<> +>> endobj +497 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.163 241.375 159.898 252.224] +/Subtype /Link +/A << /S /GoTo /D (license) >> +>> endobj +498 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [121.038 216.912 253.971 228.867] +/Subtype/Link/A<> +>> endobj +499 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [381.769 159.128 514.701 171.083] +/Subtype/Link/A<> +>> endobj +14 0 obj << +/D [492 0 R /XYZ 109.858 703.064 null] +>> endobj +496 0 obj << +/D [492 0 R /XYZ 109.858 321.093 null] +>> endobj +18 0 obj << +/D [492 0 R /XYZ 109.858 306.08 null] +>> endobj +500 0 obj << +/D [492 0 R /XYZ 109.858 119.831 null] +>> endobj +491 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F8 369 0 R /F14 372 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +503 0 obj << +/Length 933 +/Filter /FlateDecode +>> +stream +xÚ¥V]“›6}÷¯à­0´H}ìSfÓ¦Ó}jS2“æØ¬—Ää8ý÷½W0×ÍNgÇ‹¤û¡sÏ=ð ?ðÄ2“™@ ͬÖûUlÁòëŠ÷qÊ™10DÓ~µ—~øîì™±`ÖXôüºúð1 6í¢¤5Á Æ Òû•Ì,ÚôóÝêÏÕc²é`Lµ4xü¤XcYžc}ùêî­°ŸçOAïÑ;ä›áoµk›Íqíª¦Ž>æ«_ò1!ç‚qŒþw¾—{rž2+ÕtÓ¿„PQ,„ ß4µ+֮í}”aV) “ +¸F¤slYª™È²[Ø—6p°ðlˆ2šiØ ÷šbº £—2œq(è¿BjŠIÿK(S].zÐ㊕I˜’f,ÔØL}ÀGZ(Å™V¾Ìü!Šyø>ŠÓ4 Ÿ#6{\(iáPlýH†˜:îèš ×…+7äV¸û9MBf,áãVž¥4 Ÿ&¦ÎÓ)[C`|Žœ—1Ëeá–ÓøÑ¹)ü½€çÌfÄú»cײŸzyÖå©‘ ÿ5´hÒ ˜…`à‚H4zg”y‰búÈxºÌ,;¢ÿÜíiž`ä# àÐàÑ2‡'ÂË…qÑ"¡Ì³^µØêƒ÷vÄØ\m™fRf5-äÖûÜB?σè´GŠð÷]YøÊWDz±ATmIºÃ5n}1õP.vdúzV;ùmt 9À|óálj–Ýk ó8¨ÝpÔ0ksÄÈF©(fS’ÊÏÕHêÚÑ­á'ñ¾¨v4_ûVÔn^ø‰ëî¯ÊDÀNà}¢õKe"ð\ŸC¯Êd’‘»òûk¼Q°¾vq£e™6êмǃÏÍ­gy¨Çžv¯ ï+â“Lo##1WÕOܾð=ôkÃ3÷Ž O)ßèʨËÚ_£Ý+²~«ºjqNS`‚CSA,‘/àŒÏ‘ _æ^^ì§Ó‰ýȱ½~ùK/b +}ñ¡Õ»Ü9Ë2öéÚGB–ú÷í•$|¤V_¾Ìÿþ®Yendstream +endobj +502 0 obj << +/Type /Page +/Contents 503 0 R +/Resources 501 0 R +/MediaBox [0 0 612 792] +/Parent 509 0 R +/Annots [ 504 0 R 505 0 R 506 0 R 507 0 R ] +>> endobj +504 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [244.023 658.273 308.863 670.228] +/Subtype/Link/A<> +>> endobj +505 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [212.073 629.935 358.441 640.783] +/Subtype/Link/A<> +>> endobj +506 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [212.031 601.043 270.783 611.892] +/Subtype/Link/A<> +>> endobj +507 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [331.14 583.553 448.118 595.509] +/Subtype/Link/A<> +>> endobj +22 0 obj << +/D [502 0 R /XYZ 109.858 703.064 null] +>> endobj +508 0 obj << +/D [502 0 R /XYZ 109.858 584.55 null] +>> endobj +501 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F8 369 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +512 0 obj << +/Length 2429 +/Filter /FlateDecode +>> +stream +xÚÍYÝoãÆ÷_¡‡>PÅqûÅ]æ¡@}ö圦…›¸íIh‰¶Ó¢BÑÑù¿ïÌì.Eš"Ï-Œ¢8œ¹ägfóMñEÿø‚'³Ú.Œ0,3‹ÕãY²¸‡oϸ§P°#a+9µg– ¹ˆbRfDÁ í5@è—?ôè•ÌX"ô"Nµd©äøÊùÍÙûÂ.„bÆšÅÍÝ"P¢›õOчO¾¾¹üaùËÍw@-:cƤH‚‚6]ÄZ0© $;»¼éki˜ÐÀ1áLØ“ÃIã”3ÃÅ+N#9³v'LetøßÎ~ú%Y¬õwgøÐ.°N˜PÙâñLÊÂX_ýxö÷Ž•ãtã`£X#,p擘4 ]èD°T8þ±Ï—&º_Æ6*^˜*+¬ÿ³ÃÚÿÁa•…ƒðƒp°!×½Ã*©€XÓa¯¶û6¯ªr çÂF7çŸÝâz)T”¯–\G¯ÀC€GÛÿC8À9v‘±,•Ò *¸¦F7ç˘Gˆ@–Få¯&Ê·î>_¯ãÚ¯w€ €ô°Ôðü¾À·Þ-c™¨èŸ×OŽl“ãÝïø§pÌÚÚ3w¸û›Öm–Û¥È<‰‰®..ÝöaS’´×§Zò¨)òõsâ½YZáË @u Dy#’$éil:÷hIÀUê àâ,óþ*ðhçiINEg[Ê-c¥dô©FUþHÜ®ÁÓƒîu”å=q÷ᙪÏoƒZ¸¹r( p,vÜÙÖm yÜUE[TÏÝ= +Þ¡ˆ¶¼õJ⫇²ÝàÊ ‰/ä¨ÍÚ­÷}¥ACBÁ#Ó™o&x+‰ö°(ÈA&<‹nAgãôM¢Ç|íW-ÔnÙÙ )rD%œ¸ÕOø`…š8C¼ÿȳ£g +ŽÙV‚^¨ÏíRÙã †_jáâpàÍr\bü+##Nõ6Ø´Ûî U¹oݪ¾sWwzB¬;}®ðp»ªž¼±S„/ +âsäF€pDª¨Ýx Úr .hПZä&¥ŒÐ§‘$w·PÜ?‚˜`—È‘{yK¶ŠuùsÂ¥[ÃJU댛²L:ãÒÉ…Íœþù¾¤+‚€xx +Ùg÷€B®#@ý6qËÀŽ^Œj¨#@D7é ønލBʾ™ƒzöi‹Ž]”Œ†Q¨ L,“èêÎÑÓ‘…@¨\Úè;½³×0QÉ„{u£ìP"®¸jŠßÐÄeã'SΧ»o¦º(a!ñk9ßÒôˆF-,‘ºãƒ(q6’µÂ@y™•æif¥AiÒ¡´Ò›õ"œµB,6¥{Š^æBnîCe¨ýp’YgÐ]‹P?Ô!Õì°E”æ PaÙâÓØWP~|F ­{ÿOcþЪ°}Õy øÇ5r߃¿ËTuÒIk¥09ñk‰&­åIh›¶Öœ´ÎZ3Ò‚µzÒ0†Þˆ‚à¸n +ŸÜûeë±/+Hq.þ2!á>È“`* Ýø×À<M‚éIðxrÌ9i˜3Ò˜=i«ª¦zâ³Ä…s@k‡­Oéàóyö$0”¦ük‰&ð$¨“šF`NZ‡ÀŒ´€@OF´–éɈ8l¥>äþ€ýÃÅå÷€Ëõ§+j\«ã ڲ̆†v;f¨`›ûíkL¶­¿«v?f¥83R½ŽÕùõ÷ãÞfÛ$¤ rs-u´.¨Ä¸iÁ¸ Ôí­xø#[¯v#¦*c0²x²wc6–Æø>—Û]5æb˜â¯æ‚iíË„:FÑ1Š5t +xÔÇXÃì‹v¿c}RGð,$sjÍCq˜Ì +€1f>zDS±HP²žŒ…Yi!æ¤ùXèKk +¨*MrAuLPñìX!/ÃüÄ2˜Ý ܘ宷ù›k*°Tꯀ–W•³0¬'§~"¤¤ŒT”U:NÈðÔÏ»~ÝM·Teé¥ÞÈíú:¸>»­®«yÔŠc÷®²A.,Ýký‰o ¬qú´s5å€ °olÝ{m˜7¯Qµij÷=€Ô}Ñ5šQ×8;ª“èt»þ¢kœlê8ϾÞÔõˆ&}Ù“Ì7u³Ò:_ž‘|¹'í[8¿‚æÈó/§)KR1ÌäÂý7î3àñ¶ÿ)0¼9«Î î4«Òü‚Êì¾yÿþp8°_›`ÇúŽœÃ}¡‚á¬óNFƒÌýKí±wM”™…-ÐÌé)¬f6µ=É;¸ÏÚ3:[Uçk¦i\ÃLTøY”îÃ#rÀ) 7&¼ÆW›¥Ñ_ó}”U¸æŒ'rNû'Ñ tÎÿ‰AÙ ÚÈnFÚÒ“!ä4ûÀzŸ?úUvÞŽa˜~y(¶ÇÂ}ÀóŸÛà p'ìWÅ sðÕætß áÔô]øÅþ‚¾íÇÆŠ!€«S}¤ñ±qÇ ¬¾ þ½¼H»ˆî€ˆ 1pAó¾&¿…ªä´È`X1ž‚%¸ƒ­¢­ËÎÉWmÝ<;zzÉê'̱øhU»É?/=O÷™lT„èk À¡™Trü‘^véy†é¡†ÜêèãÀ*>òr¿Jô Âaë ŽZéßÇJ]ÓôMtrœfU’š%™í«´CO¯Ûģɔºò7ÑͳšUΤL •KF*YÁ FŨäYͪdS馯TÜÛ¼E«e¯•~YM|ù±’I÷{ã­x`yç[{ÄMø׊i(o¡”g5«”6£T_©ïãºQöM”ó¬f•Ë2ȯº¯ÜÈûD¢Yšð·P)°šS f3hl_%ð¾u‰~9aºɒMµmZ†Ÿ§ç~Y4N© æ­,M Í4ÔOBÃøÔ¯ëcQÿ»dUbendstream +endobj +511 0 obj << +/Type /Page +/Contents 512 0 R +/Resources 510 0 R +/MediaBox [0 0 612 792] +/Parent 509 0 R +/Annots [ 526 0 R ] +>> endobj +526 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [165.065 115.766 282.044 127.721] +/Subtype/Link/A<> +>> endobj +26 0 obj << +/D [511 0 R /XYZ 109.858 703.064 null] +>> endobj +513 0 obj << +/D [511 0 R /XYZ 109.858 455.179 null] +>> endobj +30 0 obj << +/D [511 0 R /XYZ 109.858 455.179 null] +>> endobj +517 0 obj << +/D [511 0 R /XYZ 109.858 294.733 null] +>> endobj +521 0 obj << +/D [511 0 R /XYZ 109.858 275.853 null] +>> endobj +522 0 obj << +/D [511 0 R /XYZ 109.858 256.973 null] +>> endobj +523 0 obj << +/D [511 0 R /XYZ 109.858 238.093 null] +>> endobj +524 0 obj << +/D [511 0 R /XYZ 109.858 207.257 null] +>> endobj +525 0 obj << +/D [511 0 R /XYZ 109.858 134.67 null] +>> endobj +510 0 obj << +/Font << /F28 380 0 R /F22 363 0 R /F8 369 0 R /F19 516 0 R /F20 385 0 R /F11 520 0 R /F14 372 0 R /F29 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +531 0 obj << +/Length 3150 +/Filter /FlateDecode +>> +stream +xÚÕZYÛF~Ÿ_¡‡B%Ã>x½,ÛÙ`#—'Y/âæH 1©PœØóïSW7É¡¨q¿,ô >ŠUÕÕU_W5©üÔBEy˜ÅÙ"Õi˜§‹õþ"Zlaæ› %+£Â,ƒ&Î…)¶@"ÍŸzÊh±ÒažåHùûů¿E‹ pûž²y¶xí(Ô6_ì/lœ‡:ͤ¿»x}ñ£çÂs鳚(ä(>B¥UŠËÊà߯ïùÕÅ—ÿÑù‚úW7 ¡‚«Í¯ÁÏÇb[.»úöâë+Ï)OÂ,IÏÙI(Έʳ0ÉìPÔ[­“åJë,¸¬]±ÛUõ–ûWÏßp㇥ÑA±^ª8¸½ˆiæI‚\­±¡Í (ãÇŠÇ& uŸÓÜ”¹pÊ’ÓFw޲JrªHùõe‹41¨‰Ò:ŒL¼p$¨+¤t¦ ï€ÑTšÐœ•Ú¦ÉXÚ«Œ–ë¢+—+«àm¤ìR;èªà(Æ‹z&±3“ŠíØÔÝÿnC|¢ü ȵYh£Lyöxuڂセǂñ± rŒZT€zãHX9^+ W mÆfXÿqœè•h°è§Q‹Y×*IB­Ò‘VgÚÕçdÜ뢛7N ÁöÐE½y¼csÐ8þ$Ëq¼Î®Ç£è§¬l’,3Àš­ƒÍa Pðë2FÖu¤˜ÆÛ#Ñû]3USi¤íxÙúnfÍ€³&ù¸5¿nî[¾ž¢‹1aì=…NáöNë'pÚÓÌÂ4S $3ÒgDyžå0ºõÓ=ºšI®6’›Âi¦‡rÿv9Võí0ÿY2ÔïDT«Ü†:Š?‰NÂê¬Ny + h†J} t&Qq$®ƒÞ½[гçAÍ›YPèöÜÉےÛ$B>§Á÷mµÅ°«‹ï1åxÉ‚k:iË›¦ub²`ºñ¼ÑJblÃE‡¼šš)ßW;aŠ|Röt)€Ù\BûX,àÔ¬Ü J%Aq¬ºfßóe;·2 y#8~F­ï¦ʼnígØÙº²>V šBðˆ• þ‡@ÒÜ3=󮹃’=Œ0×¾›ŽQú]#ÕÙ‚^“4À £§&h†h´þC»tF]sCçÁAA6—ÅO CO4 B‚:Øy|8'ÍÄi!Ò¾B[ÁVçy\-3#«op{¯‹VGQ„“‰‡QÙ¤§ƒNêÈ7xâ$¾cFž8P¾ZKÜ" ¢Ž+Ax5Àfuå¨ÿ=e—†©Ï]¾®—pìüQ¡´5ykYcwÐT6 ¾?tD@®wJ¢R›d'ñUu‚Šöá#È& ìüȱføe~…ÐÀ&@vŒÞz;žR=ûÔ™gqGö¼[ˆæÜÒ‘P±3ë–g¥9·<'MÜr(íE³?TXI›QRJªvˆÐ1þàp>›H©( MêÒÌ&6GÄ¢z’°g)Ôz¸’¿Ÿ± ¯ÉŠÇ)$;&-ùóÉfCé¹8t^Ü-’·%/œ"¯ed<À7€TÞ¢Õáÿ)^ÂÌ×Üg˜§ éÙæQpy#vg)ĬØ5ÂŽ£þ ' ze:vxÑä BùÓÃâxGû¸å™dDð©£;;-E½Ž”5òái¶ˆÑÏxÔC» XŸ€šàÝwÍgóÑ›0ÑOEKO4-B‚ËOæ£åœ4-g¤¹hHs nUÈ +ËÆ ìT|ÓAGn1 Ò~>†mœ8 Û1àTt¶¹Ì—RázëóXš}$zÛ4¾G÷é(Ëhê™JA©¬ÿ€3àžàdhÿWùH½„¡ë%¹ê˜‚¹6a™'Á\+hžpÏžhÖ=……¥óîyNšwÏ3Òœ{¤õ`žå˜Ü‘¯bûžg9ú 0Oé–Ò9Uijx®á±‘éþž3¯É¢Gxž%úãUŸÂó$²³xÀ»nZÉðÁ,†12•[±NÃÿ—/dzŽ;sz8O”b8GËóßΡË5Aƒàéáj!kÿ_áÜfðŸ</¢¹xq$¸ül6^ÎJsñrNšÄËPÚO¥ÄîgÇÖÂÝ–B/+8RÿÏü÷Ö9O‘á-Ú¶§²A‘Oòñ!δ qõüÍ3¦—äŠÚÃòˆ¶™ß·2ÛÜð³k.©ô-;™¼¯I>Ž˜ŒÊ<~–YJÏÕ¨Ôß:°«QEž(Ù^Ü¢°>G¬¦#ÈËKnòEÇ + ÄØÂR")î<\p÷胪bΊֈ%*žD¸—Z‘™BG¯Ñ8Ó“³ãà$î=y¯•7‹ÍÊÍl¹zpä ëŽŽ"ØaLåR¬ÚX7ŒÄŠÏÕ#n¬…آ͖f±n®LŒƒßv§°±6¨›ŽÄ£iï¸G>Qr›SOÙý»š%Öjï…àÞã3ëäϘ›_9L›ûvÍwwÀåÈå*è2ïo0ùL>«Þv’ý5$¾ž ’²Õ§\á¦s<ÊMjzŸHá¨|ŽoxÂç#E½%­àvœÔ¤ƒÓ‹ +zP.+<¾VqbƒŸë]É÷ŠÏø¶‡ÜšD`9mùè‘yÒ©O€RŸ¡G²àà¦a6ŒËÐß-Û›~‘žÅûŠ+’Å +Òá8™¥_8 ÍþÑ%óšKIÁ‘P2õl¡ÒP«˜/ÀT™0ä=ÀRqNóMÙuþ…ûkLmVXq–›¹4Ψ8ÌlòßðG+þôá}1üüb6uDÅkN&sB`–ò0¬³¨‡aìP‚‚ ñ{l^`ÃWðØùŽ+r¾>gЙ +n$ÿ<ê_Á·ÇŽû|ì;_Ò¹ÂÔŸØJ€ÉÖÒXmç.Žp@ÂJ܈Çã> endobj +527 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (ss_compbar.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 541 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 397.00000000 72.00000000] +/Resources << +/ProcSet [ /PDF /ImageC /ImageI ] +/XObject << +/Im1 542 0 R +>>/ExtGState << +/GS1 543 0 R +>>/ColorSpace << +/Cs6 544 0 R +/Cs9 545 0 R +>>>> +/Length 92 +/Filter /FlateDecode +>> +stream +H‰*ä2TÈTà2Ð30V0±Ô372Q0¶4Õ³43QÐ5²Ð3ò‹R¹Âò¸ô݃ Ò‹¹ +¹À +,- €¢ÊØÈ„êOÎåÒ÷Ì5TpÉç +B€ÞÐ= +endstream +endobj +541 0 obj +<< +/CreationDate (D:20030406193450-04'00') +/ModDate (D:20030406193450-04'00') +/Producer (Acrobat Distiller 5.0.5 \(Windows\)) +/Creator (Corel PHOTO-PAINT 10) +/Title (ss_compbar.ep$) +>> +endobj +542 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 726 +/Height 52 +/BitsPerComponent 8 +/ColorSpace 545 0 R +/Length 2044 +/Filter /FlateDecode +>> +stream +H‰ì—‹šê* …GÝ—Ùïÿ´§.! ”ÖúMÇ“åLÕbi?«Á•êÝôaUª7“R­z?EªÝ@ß JµY‘jc]ï¥T«~ž€ê.ÔV©êr9¶Íûãûü¶Ð«ÃÌþ]#ÚØ°v®óÎùÙ>wÇBõâû}GÛ^m:Zk#Š3[úôLOD3ŸË\—Ëõ.áma|[á¶š7äŽÚ<}‰×%Ͷ℻zÝ0¿½±¼¬Môjïû^ݧe´&GšYDõ'Õ4ÕÖÐïORÍs¸]ÖÚ8Õ¸­hY¯!õÚÆ3¯ÛØf\¿-F!ß¶±±;"–—µI^·ëÕŸRí[¨9Õ·Y·6Æš„vüpªë“Ï¥ôWÇ™R->õ½ó»ÐVnýüºP‡Ñàë<?ïîaÃë>‘Â()T“J5N4‘ºv±Y†ëa1Õýó´ù­Ä£«Ÿ~ýúu“FS ºf8ŒW*× zÚŽÑDø>Õ)éœÉ#þ$ªñFÑ¥à)¯ÞJu.Žé€6^ýºãÕœj>š=ªáK +Æ<Ó—iªwyuÙ,‰uõ0xXÓsjŠê%ÌÕDÈ«ã½/ÿÆç5ê›ð«èÏá•5{çÒ¼sÖy/¶Uì"Ö^Üúxª¡ü Hšw6³Á«—«Öó^ù>­W§—Ïpª—s&ì.ÂÜÀ—SíJîm +B^ªÜ@µ¥uu?…v€5Z4|™¤zÁ:gؾuXÀÂ4…jäÔ)׈q¡ºBˆÈKZ¦ÚwŠÕÊ!`½îÕ¸é÷FO<åÕP³™]¼ÚºßëéºG˜ëëÒTà^ £¹œÚNuO+Tg¯æN}]äl¤úzÍ'VS(^qÞFuJ >¢­Ü¨©%Lõ’lCõ'î"\‡Ü9ª»È êêînQ¦úž¨ö„ꇳ¿ŸB^ýØâÕÖæ‡°i©Ns0 ¼:¾IT¶[L©ß=I= ÷¯ŽDO¥ðDâþüAT£AV ᡬ¨6¸!^ý™kr¥‡ô‚îÎ +ÄÚ^Òz5vê'¨Æƒ+X›¤¹Ã ú;óêåG¸²önc]íÔF¤šW ©€q€7™jžßNª@w¶.á~e·ˆ{¥ag›LosT?? ¤0¦5Ìa’6Œ°eŒOżBK].ÄŸ‹Ï‰T—V¡©áP®@¯n ÞIu6ž^,«MëA·‹>¼šŸ¬{5q]-ˆéa"¿Þõ3^MS/T‡VX·ø~›S˜¡:xH¤ÚÅ•—’¯—*ebãgú¸±Ù]>Ë¡CµëP› šŒ·X`¯nšSí(ÕŽS]»·MÛZ]Íà4êàÕNðj¹®®M¼ZЪ;ùõ½šÝŒ×ÕºL^±vm[S˜¤zÁz™ƒ¿%ª‰¯¶Ùª»÷í…å%js܈CN¥·¤¯&PŠhŠj¬†ê,B5×´W›ZQ·ÁšlÜU‹±Eu¨‚ªåÔ Õ¹®žMa”ØêË××WÄÚ‘ +Ä·±†S½"L„ÈZDvBC¯¦NÍÇ@´8°mq,S›< ¶Çlje·¢qv!Û©µüúW’¼àÕ2Õù~w^¸ìÕjÀ¨nšxã磱G«®ZèµõjöêjY·etUÛEϰd·^é­•ó0¸®Þ©õüâc±ùK±ìôê©[oÔ˜ê%æˆu"¥Fô*ª_#âÕ‹¨¿Lž£Z®«¡¹õLb!*S¶qF(6j~3uõêÅw®$:c cúgR½Á«û zµÅ0º^-ºõLbû.{I~†¡d&¼zmÌöifX„ÓÒp>; ¯Óf¯~Qç©'4¢žÚ¼ÕRut W«T'ÑI¼Z¥:P@u_Jµêç)R­R½•”jÕûI©V½ŸÌ‡kt\ÇÿœJõ=2ä»R­z?)Õª÷“R­z?)Õª÷SÅÒÃÑû|ôá-}ó¡ÙÃwô“tTªU§¡:’ZŽí·Ì}{2UªUçѪ¥Ÿ(Õªói‚êRØB±R­:³f¨.çl®C”jÕ™5¹[ „·R­:³(ÕŸ`§”jÕOЪ9ÏJµêŒ*ĦjcèÕ¨ iŽJµêTâ5ÆN)ÕªÓH©V½>ÃúßÇwç¢RE}|Æâq=©T[õŸñAhþ +endstream +endobj +543 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/TR2 /Default +>> +endobj +544 0 obj +[/ICCBased 546 0 R] +endobj +545 0 obj +[/Indexed 544 0 R 16 547 0 R] +endobj +546 0 obj +<< +/N 3 +/Alternate /DeviceRGB +/Length 2575 +/Filter /FlateDecode +>> +stream +H‰œ–yTSwÇoÉž•°Ãc [€°5la‘QIBHØADED„ª•2ÖmtFOE.®c­Ö}êÒõ0êè8´׎8GNg¦Óïï÷9÷wïïÝß½÷ó '¥ªµÕ0 Ö ÏJŒÅb¤  + 2y­.-;!à’ÆK°ZÜ ü‹ž^i½"LÊÀ0ðÿ‰-×é @8(”µrœ;q®ª7èLöœy¥•&†Qëñq¶4±jž½ç|æ9ÚÄ +V³)gB£0ñiœWו8#©8wÕ©•õ8_Å٥ʨQãüÜ«QÊj@é&»A)/ÇÙgº>'K‚óÈtÕ;\ú” Ó¥$ÕºF½ZUnÀÜå˜(4TŒ%)ë«”ƒ0C&¯”阤Z£“i˜¿óœ8¦Úbx‘ƒE¡ÁÁBÑ;…ú¯›¿P¦ÞÎӓ̹žAü om?çW= +€x¯Íú·¶Ò-Œ¯Àòæ[›Ëû0ñ¾¾øÎ}ø¦y)7ta¾¾õõõ>j¥ÜÇTÐ7úŸ¿@ï¼ÏÇtÜ›ò`qÊ2™±Ê€™ê&¯®ª6ê±ZL®Ä„?â_øóyxg)Ë”z¥ÈçL­UáíÖ*ÔuµSkÿSeØO4?׸¸c¯¯Ø°.òò· åÒR´ ßÞô-•’2ð5ßáÞüÜÏ ú÷Sá>Ó£V­š‹“då`r£¾n~ÏôY &à+`œ;ÂA4ˆÉ 䀰ÈA9Ð=¨- t°lÃ`;»Á~pŒƒÁ ðGp| ®[`Lƒ‡`<¯ "A ˆ YA+äùCb(ЇR¡,¨*T2B-Ð +¨ꇆ¡Ðnè÷ÐQètº}MA ï —0Óal»Á¾°ŽSàx ¬‚kà&¸^Á£ð>ø0|>_ƒ'á‡ð,ÂG!"F$H:Rˆ”!z¤éF‘Qd?r 9‹\A&‘GÈ ”ˆrQ ¢áhš‹ÊÑ´íE‡Ñ]èaô4zBgÐ×Á–àE#H ‹*B=¡‹0HØIøˆp†p0MxJ$ùD1„˜D, V›‰½Ä­ÄÄãÄKÄ»ÄY‰dEò"EÒI2’ÔEÚBÚGúŒt™4MzN¦‘Èþär!YKî ’÷?%_&ß#¿¢°(®”0J:EAi¤ôQÆ(Ç()Ó”WT6U@ æP+¨íÔ!ê~êêmêæD ¥eÒÔ´å´!ÚïhŸÓ¦h/èº']B/¢éëèÒÓ¿¢?a0nŒhF!ÃÀXÇØÍ8ÅøšñÜŒkæc&5S˜µ™˜6»lö˜Iaº2c˜K™MÌAæ!æEæ#…寒°d¬VÖë(ëk–Íe‹Øél »—½‡}Ž}ŸCâ¸qâ9 +N'çÎ)Î].ÂuæJ¸rî +î÷ wšGä xR^¯‡÷[ÞoÆœchžgÞ`>bþ‰ù$á»ñ¥ü*~ÿ ÿ:ÿ¥…EŒ…ÒbÅ~‹ËÏ,m,£-•–Ý–,¯Y¾´Â¬â­*­6X[ݱF­=­3­ë­·YŸ±~dó ·‘ÛtÛ´¹i ÛzÚfÙ6Û~`{ÁvÖÎÞ.ÑNg·Åî”Ý#{¾}´}…ý€ý§ö¸‘j‡‡ÏþŠ™c1X6„Æfm“Ž;'_9 œr:œ8Ýq¦:‹ËœœO:ϸ8¸¤¹´¸ìu¹éJq»–»nv=ëúÌMà–ï¶ÊmÜí¾ÀR 4 ö +n»3Ü£ÜkÜGݯz=Ä•[=¾ô„=ƒ<Ë=GTB(É/ÙSòƒ,]6*›-•–¾W:#—È7Ë*¢ŠÊe¿ò^YDYÙ}U„j£êAyTù`ù#µD=¬þ¶"©b{ųÊôÊ+¬Ê¯: !kJ4Gµm¥ötµ}uCõ%—®K7YV³©fFŸ¢ßY Õ.©=bàá?SŒîƕƩºÈº‘ºçõyõ‡Ø Ú† žkï5%4ý¦m–7Ÿlqlio™Z³lG+ÔZÚz²Í¹­³mzyâò]íÔöÊö?uøuôw|¿"űN»ÎåwW&®ÜÛe֥ﺱ*|ÕöÕèjõê‰5k¶¬yÝ­èþ¢Ç¯g°ç‡^yïkEk‡Öþ¸®lÝD_pß¶õÄõÚõ×7DmØÕÏîoê¿»1mãál {àûMśΠnßLÝlÜ<9”úO¤[þ˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ +¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿ ÷„óû +endstream +endobj +547 0 obj +<< +/Length 52 +>> +stream +€€€ÿûðÔÐÈÿÿÿ€ÿÿ€€ÿÿÿÿÿ€€€€ÿÿ@@@ +endstream +endobj +532 0 obj << +/D [530 0 R /XYZ 109.858 727.97 null] +>> endobj +533 0 obj << +/D [530 0 R /XYZ 109.858 703.064 null] +>> endobj +534 0 obj << +/D [530 0 R /XYZ 109.858 674.67 null] +>> endobj +535 0 obj << +/D [530 0 R /XYZ 109.858 631.388 null] +>> endobj +536 0 obj << +/D [530 0 R /XYZ 109.858 599.507 null] +>> endobj +537 0 obj << +/D [530 0 R /XYZ 109.858 567.627 null] +>> endobj +538 0 obj << +/D [530 0 R /XYZ 109.858 537.684 null] +>> endobj +539 0 obj << +/D [530 0 R /XYZ 109.858 503.866 null] +>> endobj +540 0 obj << +/D [530 0 R /XYZ 109.858 364.334 null] +>> endobj +34 0 obj << +/D [530 0 R /XYZ 109.858 349.321 null] +>> endobj +529 0 obj << +/Font << /F29 416 0 R /F8 369 0 R /F20 385 0 R /F14 372 0 R /F11 520 0 R /F28 380 0 R >> +/XObject << /Im1 527 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +550 0 obj << +/Length 2709 +/Filter /FlateDecode +>> +stream +xÚ¥ZmoœHþî_1Ò}£ ššì§M²yuºäÎ^]N›•Bfð ¼ÀÄçõÖ¼ŽGvN‘tWW×[W=]“`åÿ`ø©g"³JTâ¥Éjs¸ðW;˜yw…ž1ðŠs^B£ Èë¿Jå*/5)Rþuñûþj Ü~…U:5«{x÷=¥ÓÕáBG©§#ßåÅõÅ?{.<—¬zV ,ÅDrTËÀ³×ïõÍÅå/*]Ñ÷ÍíJ(„àfû»ó[›íòõ7¿^ü|ÓsJcÏÄÉ9; Å™­RãÅF·ú¤T¼v•2λ¼ëŠjÇ×]Ö¬Ý0tº|‹‚ã¥qŒlt¨=mBØYÄsI£0ñTUÃTsn…^êÇH´úk58ÒgÎ.¯jõ¶g­¹6„Ü(Ñžë^s³JAäE¶4Q”xbÝÿ½_N¾v§]q6Mž± ð+»»ƒù²ØÀX]Ák‹ã©s+ +øîöLxƒ¯?ò쇵Jl³V‰óuÅz¦_®]í+§>°Øîm™K}ËÏnŸ3§º’bGK²’ÇnÖ&tjðQâÔå— )”ïû<¹)Áw]S—ƒ´YEij^ +nAÕ‹.?´"W˜hçÖGøˆc§ÝÃh¾åÏ£9ço°høõ†´†—¬ÊÊzw´:µÞÚtèÜìeM]•ü–ÿwC$hÛ‘]ãÄÉ!¾aƒ¾Cíê#’”‘“ÁkµµD¯¯&v<¸'ô|#&ÉÈŠD‡¢+Å^Ä(ÈW{mòù¤¨ø›Ÿ¡(ª4‰Ý€¢Èù3ߨ¬ÖóŸµÑlCX@S™pa?·Ù@á¡*K~»ßç¤5¼nÑ­ÆÉ[Þ(>õ­E.¯rVg2'ëoÉ\4òê”Ç1¼Ò”ÃKû>Kˆ’‘s[­²ƒÌs”Rˆu48÷Z{Ïóà@ ¶õa!0Î}¡ÁÜn\W;Ùµ«…§ oƒá²5Þ?Â,ä¢M™µ" Ö¾]Š‹GxiÞ@a¨­ôèU༌ÇQ.|Ê ÷z®±—†6WsÂHÈ"W>»üïEÛñhÑò³ªe ±‘(þ;äÓ2„/xv ¼8ä€þØRL$ªœx¯Ñ®÷•ìQaÖé$¾Á<”/d¯úØa¶ª,R +æp¯¢½+3äô Œ`ÌªÐžŠ¢ +“ýëæ•à~•ÆtêN>2œÝ2á¶°Ù#C–¢%͵]Öå6 ©4 jòÛZ ¤LÂa…´VȘÞò»ŽÇ1kâó®›^>ù&½ív6]dp/’[v8‚8MÃñ{ÊŽÍWï„E~ksŽ(ÎÛ,‰dŠÇ­Ñ<8`9¦íl!@ç/Cìõe/¿Í(1“¡uâô1Œ³dœRHÛãœ@{~•Bk’mfåZÅ€B¸'ð"2¦âN ãšásŒmìJw´t^xçÜQ¡Ïo{M^°¼]_Š ùBÀ +~Nä[@D¡9'ÉœJ‚©Û7CÞQ2 +0.R­®äkp„BUÒù°÷¶mfzèÄ÷Rý=v¶+Ïi7çŽÚÙ$w½¦Ü-…®WäØvÎΖæœ$jé0õ¢Ø$–±0–$Û;£FsFœ#è½H÷ÞÙ^ǬÚ»„ŽüÞ¾âì%1´éænSv“¨Wçn“•îhéÂm3îä6ˆ­¥‘öBX3cy/aš³N=Ù’g}Çɯél=ùæó{Ȧñ†!–ê<Oò`þñà ÎsuÃÏÏv]S°Ó9Ñ¿ðä6áÙdŸÔ]þЉÆg¢ÍDráøI‚]ŸíÛbWqV슃…Ü* …X Imà{“ïŠv¨—}UÒTr}QÀƒmË‘F\?ä(ž¶¢÷=!ÃãnoÙØeÆyÿe™àªjÅâ[˜ÐrHOhuË%^LÎ`‹ÇC-Öʹzû³-SÆ!Ü›íf •™n©sȾ®C‚¥ø5Q81¤$(ˆwüR +YÖñ³ÁÄ]áúŽŒÀ ØŽ!þEª}†_߯ÛÈæEµ)q!²ÙÊܦnÈÊhdRmù&ÚKÇ6`}ÆQw¬Š®]D œ)cQœ+ª+cãP»Âl(çm^bŠÙ¨H“yÐ/<ÛZa ¨¡ÄQ½¼5Üp©6ÖŠ8Æ·™@‘¾¬ëÖpü”³`€¼Û1‡ Ó8nM91†|r!ºbçÏVv¢Dâ¿QCÐ x,QÌ®èäßòÓ^ +ùÎÓTüjž¢°­ Äñ´ž\ü©ÊÒº#bîV¨¾[a ‰%!AÛ\ü­ƒžPAöMRèœßß~ò}µœÄ¹4ˆ(@pãìuúÀPq—·4ÿã"‚\aé°ˆÙ‡ XáÍ?ðËëcQ’c›—bŸ-¦£ÇíâžoÌí2“]Fêövîo >€ËCÆŠ–Eõ•ß>)¥—6ÁQ©§ãè4Š^>¦qBëzwYûDŽ Áî˜3ÒOmÁk.Üå/A:-=è`†K×…ø¦c¼Œ +nˆ ^¬#LOx@¢„¯t0ʙХà™ ÒÕ€è›ã†n]5µ—<äj3´YÁž*ˆ(θ·éj8ЇÝû°Gò·‹`ç+?öT¢ŸÐ”-° úvFÇØEàÚ&œò#/Dó2D!“À,Øi¨LFœ2ñ…kiN_ñ$ß¶L0É©8Ðw&ðƒ-/|Ã¥êJ½4¬×Gi:-Ni…ž`d…{:γ+ÝÑÒÅåcÆUnA YLäÅÑT–Å•GhÎî:・¾\l–B«æw(.+ÏŠ0ãŽ"0˜¤bõñÃ膾¤ÑYÝ-͹ç|Xw4nP,6à‹4ø;Ø•gÅ™q§„ƒAÛd.ýs¡Œö¸>Ÿµ†ÐœÝ~ÆÇ^~!=þD7W:@p4²RÀV¢=5[t,‹FÚwÔž. áô/8«b#’¬l¥ŸF-§okÀÄ&É2#”I3‹³ @ò4R4#O›ø9í Y鎖.Ú3î¨çžðÚãîÕååýý½×¾–ù7…'wÙË…«|íù~<tá*¡9'ÒœÏĦàElÌP¬2fŠÖý~”…í™ÙŸ1¨Ù–0²í*“.’-þ‚ ΊÁYeßÅ£:~Ê•­6º{Á}cÈÓLØ ¸?u¶ü%¸¸¶¤¶ ˜:Ÿ1o 6~ÁÓ›’PñÉZðšU£È$ù,¼åÆ‚²ë±íÒZ\ÞÇwÚAÆqÀcpŸFâ<'È2?ÕÝzÞ»®Nh–]ÎCÒÕ“Ó54MC⟣ò†IÇ¿ØÐRF2óƒ•@õ!ôU +Eâ9 »Ò-]¬÷ç÷£Â0ö’8È·(‚BsN’;XF’œîG‰EéŽN©Ä~Üd_Ð(ý=ç•Qòç-Fmß±îëzÏ +ÿ9]Áq–>Ö‹³$ 0¹k ¢¾¡tшú'ûNPB¡Lå[`?¡9+ þöì§IN×a…Üßa»òœssRŸÍ¢v ÏZ@HÎn<åÒgõSÁ€`1=ùìçþ?·f¼endstream +endobj +549 0 obj << +/Type /Page +/Contents 550 0 R +/Resources 548 0 R +/MediaBox [0 0 612 792] +/Parent 509 0 R +/Annots [ 552 0 R 553 0 R 554 0 R 558 0 R 559 0 R 560 0 R 561 0 R 562 0 R 563 0 R 564 0 R ] +>> endobj +528 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (ss_dsgn.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 566 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 228.00000000 129.00000000] +/Resources << +/ProcSet [ /PDF /ImageC ] +/XObject << +/Im1 567 0 R +>>/ExtGState << +/GS1 568 0 R +>>/ColorSpace << +/Cs6 569 0 R +>>>> +/Length 85 +/Filter /FlateDecode +>> +stream +H‰*ä2TÈTà2P04²Ð³°P022׳4±PÐóMŠR¹Âò¸ô݃ Ò‹¹ +¹  +Ì €¢ÊÜÂHn@r.—¾g®¡‚K>W » â +endstream +endobj +566 0 obj +<< +/CreationDate (D:20030406193455-04'00') +/ModDate (D:20030406193455-04'00') +/Producer (Acrobat Distiller 5.0.5 \(Windows\)) +/Creator (Corel PHOTO-PAINT 10) +/Title (ss_dsgn.ep$) +>> +endobj +567 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 380 +/Height 215 +/BitsPerComponent 8 +/ColorSpace 569 0 R +/Length 5155 +/Filter /FlateDecode +>> +stream +H‰ì—W»äF@õLr"˜àö®½Ù`m’ü Â:€ ¬cXgÿ¥ûÈ#ú?vtÕۣЪ–4R©æœ¯¾ùæêÎÔtWw•®^˜üÿÝÌBéç\ñJ±×À9AÌMç8X¿:K`JºœS\YÜ„‡.pkA˜‰¸sŠ+Ëúð`ÉÎa-À8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ‚sÀ$8G-8L‚sÔ2¡s²,ã•W%¯8G-ô9`B;8G-“÷9À9j¡Ï{Ðçh†>L‚sÔBŸö ÏÑ }˜稅>ìAŸ£ú0 ÎQ }؃>G3ô9`œ£ú°}ŽfèsÀ$8G-ô9`úÍÐç€IpŽZèsÀô9š™¼Ïá•W ¯8G-ô9`œ£œ&Á9jÁ9`‰sü¶ß_,]´:gû§(ûÒC0‹Ã9ŠiuΘ"gY6ÃR®=ü¹–´VUŠ,©­Kq΄% S-z¸•’ãœ%"É9ÍÂRdImØ9“×Ó'\ôp+%OqNÐu±ë3áBÔ>p€§©×9Í:DjÞZÕƒ1Ήô“’‚7ó,z¸•’‹Óº±4¯È¿b>†9'bé¬aomÝtÎIÚç9Ή’u΀µÀ9a]Šs’jxàs”“sNÞölÕµ8'¬³›Ú9­\8G9ùhçÈ×"~^„¿b#öÚçH {kë9§UÝ8gBòéúœæª…WZW¶¶d‡sXÆ;§õ\T {kë¦ësZËÛµÏsœ%Ÿ®Ïé +NA3RC ¨­›Ô9½AŸ#$êùrp|šsf¨­Ã9*ÉÅÎÉ;Zúa‹ràqN¶ËâC]] pNÞöÐ:Ic¿èáVJžâbªèísˆñµu)ÎÙS,z¸•’ãœ%çÌP[‡sT’ãœ%çÌP[‡sT’ãœ%çÌP[×çX„¼Í9k§×9° 5çØ â‚ ˆýÎ!bÎÀ9AÌ#³É²"ÆŽ$$!ÉÁ$é7ÅhI¢$I±²ëÎà$Í" «‰’$ÅÑ>ª(–¸yE˜Ä¹¬ ŸäæÏ»ãAÈW§×9›.¶?QþP¯â&IÒ™|#Q8›Ûo»ËוÖd|’›g¹ƒ¤‘tå™9Éη*],’Äo³¸sB%†xÃ9l'IÒ™|ö‘ø»Ì˜‘è™N¸¼p¶·5Q’Ž;ð1«K’WÇ|d’<â®Ù“L²Ù¦J2Ø9~oKÆÙy4ªê ›lmâcF’4r'”¶oÙ!+œŽß .èsŽ_ŠÝ²©rj’â_átŠ7Ã’” àñíxû9|FâÇ"·ë.?ù>Ÿ¤Ö7¯øšÄ’ÿb;°Me’,šÄgYç,xH}ÍÒÖM[^”ÒÚ{Å¿IšNëÓÕ€éÔúœ£ªÛ‘8'|ïœð|•¯]DFRþék"qNÖA’sQ³&©íùæ/óx—Gé·ÓjUÎéÐHm³qŽŸ…|ÖMç”Õ“ñáGª&4d:~3Ô>\ÎEòÅÚûšsš +ŠOg»m\©Ó)?¿=‰íÛ;>ð\÷5Ò¥–öhÛÞTƒìIÒ•-\ñ^ç ˜E3O3SYO¿ùgHâúœã¯Ä“Äs|e=Αh'¾ J’FâÛÂêÏ,É9å¾­!ùz«sB_-â·í%ºˆO§ë¤ËO«Ä9½º8§W\>OsqÃü’ªÆ[”£î‡Äi“àœÁΉœÉÑð#)w]%WÓŽÜ9ùn«J£÷[­¯]övª>Çí>UÉžs´ûü8Ø9á­¡×9fÑš§UYG#úïa’ð»Þ0­W¤I²z’,%ñ›Mƒs$C$\u”ªýà*ídYbŸ“W­Ž#ü®·SøÆÿ«ùgïtÆ8ÇÜ5„#?]']~Zkß­P7]Ÿ#I"D^™®ÁÈ3²YRœã*ÙÎnçÙêIÓ©m‰Mõ%ÿJí}mÏìœê ¶olÉt\ÐHLâœ0Ux¸$ÎiÉqÅ­•T™7ºÏq.­Ïi> t]‰%© ÊØ~% C’ÄgYçøSÓ›d’˜d:µ–{i¶)4§³iCîœÒù]ôŽ¡×3ÜӔϲIüͱ¬íÈ>'©Y꺓¸]ÙF®Ä“„OÇWª›\éœòBuÎà“>8ö1’¤&GÛtÊäVIm[ú“¸ŽæÄ_Ö§™Ê;ç(Úk5&USÖ­>G’dΉ#tÎø$“Ää#)÷Ò"MÎ$Ó)ûœ¦v$ÇÁdÔOxEíºÜ9]©äâêês„IÜÚœCØŽí²}K/>¶Ebd›”šj†$Í{P×i’[ÎñI2I’¼Úr8çcÓÍâc#LÎ!bÎÀ9AÌ8‡ ˆ9çÌYjмê*iÛŠçÌYjмê*iÛŠçÌYjмê*iÛŠçÌYêÞ"»-‹Uy•ÛªçÌYêx‘7[µ£ ×0C–m"1²]ÃÐ|®5mEÑ뜀Åg‘Y3”:²cýÃ75%ýV‘l’lº¬%qN|²ÃªTË?@¤©C•mþµÒèuNqý(Êꜳ`©åÎi*hØoÕf$ÛMÅÜäÖkéœf‡#qNùC‘M5¬JáÇ„"ÖJø£ô9ããÓ¼ù+µ;Tí“#ï_½Î)«=Ì9­ni¶£}ÎÙÑÎà>'®‚ø†™Ù9a†Þ$’êÝ3­{ì Z£ù³xa»œSÛ­WÆL¡wdžûߟIy7mLÞçÔzáDj?')ÂlÎi&?¶øž‰_iþi2qβ…m¶1©Î\jyïBRæ}÷9«¼C;’õVÉO°© I¯Ò¡\;ûvÎâGcžXÊ9jÛÕç§î·ÁÎ éMÞZê¤;xÒ"¶C_´<8ª©}NÍ9áÔ&ZB8—Þœ]¤Ž-I;ûsŽäD˜ÑÑ‚ÎI­aï~ޤ¶Öyt?4•w¯~|^’~2é–ésj¥‹”¥Ùç´Eª XÞ*\}ÉF<¶È>éuNoZ3]Ðf=}ÎT±MmlñÿvÍ«ë3BçøŸêœÚÁ ¿î?/K(œ®×Áw +¡E%#œHÉï&9§uÏ´î±ÖO6¿bC;K9gÁ)·îyJ-?tòCš7úœ<è”äÏ5¾ÏÉ:ØTÒIšrÒ¡NªÒHá Þçô†‡ (ûüÎYvÊšãOüæ»}N>´ ­Ò\eß kö]~y`Å1U +k5X8ÍBtΰndñã0ÌÔ]êœÚŸîá”sÇg§|S^ßÈúœ.×ù£™—|Öyå±1+’¤å¤±ÉË>mBý!qNœ#/õ^“ô$Õµ;uaoùí;~Š{µ³s=ç +’2ÆCLXj‰sZß÷~+õ–ÝÂÁ þ€æs­yl+ +œ3g©)òª«¤yl+ +œ3g©)òª«¤yl+ +œ3g©)òª«¤yl+ +œ3g©)òª«¤yl+ +œCÄœÑtÎWüÃàøêCEüñk'ŠøÓ×Oñço<\ĵÛ¹vÛ©k·ŸzõöÓ¯Þqúµ;μvç™×ï<ûú]g߸ëÜß<_Ä_¾u¡ˆ¿~ûÑ"ÞüÎÅ7ï¾øÖÝ—Þúîå"þö½+Eüýû?.â?øI×ïùéõ{»~ïcoßûøÛ÷=þÎ}O¼sÿïÞÿä»<ùÞ?{ï‡?/âŸ?úE›¯nºúþCO½â©N<ýÁɧ?<ùËþUÿzä×EüûÔoŠøÏéßqãÌ37Î<{ãì³}î£sÏ}|îùÏ?ÿÉù>¹ð§~÷é£/~zñÅÏ.¾ôÙ¥—>¿ôòç—_þâò+_\yåË+¿ÿòÿì×÷Sgp~ÏŒcâ¤:Îà$q0!ÆŠ +„ÄA”¢pØ)"ˆ àJéåŽÞ–j/4],ØMQ±ä4¶$æ? ÏòÀº³{‡w‡‡yžùóÜ;‹ë0sŸù¾6K ™ÓÝ!Y3< Ù3—BT¶ËT¶ž*;Oµ—z–WÎ,ï{ï\{ŸÜï|òf/ç£X‘¯ðÍwð-pð+pô+tTÎQÍñ/rò/vZYì¼ +RòýjHék es×BØyëØyëÙùëËço(_°¡âÇÊ…*—MU.U®Õ®AÕ‹‚j׸ïu Ù»8dßâÍû–„Bö»oðƒ\9´l+ψÃ^Û G¼#!G}¢ Ç–oç³bGíŠèZßè:ߘ:¿˜z¿õÊ J¦ÁŸiôßÕ¸2r|UäÄêxHÓš„¦µ Íkw7¯K„œ\¿rjCäôÆdHK@JK@j˦Ô3›ÒΦ L?”ÎepÁ­Á™­!¬s›³!çCU¶-ê¶0u{XN{8$÷ÂÖ<Èň|È¥mË‘…ލ¢Ž¨âŽíÅW¶—\ÙQruGéÕèÒkÑe×bʮǰ×w–Cn07vUÜÜUy3¶òVlÕ­¸ªÛqÕ·ãk ?%ì…ü¼{ä—Äý_÷à“tðNÒ¡;ɇî&¾›rø^Ê‘{©G:Sv¦íL?v?½ö~F탌º™u3ëfÕ?Êjx” iüMu¢QŸ€üžÓù#·Ò•w²+ïTWþ©Çù§œ~RÐò¤°åÏ¢3§ÅgŸsOK¸g%­ÏJ[Ÿ—ž{^vîEÙùìù—lÛËrHû_ W^„üSu òªúò«šŽÍ<ú˜£áŒÒB2‡Ì!sÈ™£Ñ0Žá«Tôü$sÈ2Ç|ÍQ˜xŒ{‹þæô²Ã1–Ò8ƒ`N·hÈ2‡Ì‘›_ FïᄀÏ÷ƒÍᫎBþ¾XYZ2˜wÕs2‡Ì!säæàùÌNºuð¼qo1Èœ¾ªÃ7¸^Áó@ÃGÉr°ÃOJþŸhŽäÌÁÍÎÁ\À\ÐÜå=G«9x.˜#yÍÁÍÁ]0?ŠÍÿº`ŽøÍÁÌ‘¼Q0GræàBæ9¦3ÇB6ý˜ÓOQé~Gæ@ÏsÐÆ‚QìHÌ÷<Ážƒ»Ø\„žƒu™ƒKÿ=Ï%æ`ÏÁÝ sð#öÜÁ\°çô²#3{N/;ž*\°ç9dŽÙš£U’7š#ÿ—Å'ƙóÓs½‚ªÔô€ÃXö-bv†„9p·êønEæ9ÃɃîVF›#AFBñæ@ÏvX `GÉqžžÓçÏP3ÇÊ©—ñÎ ƒ`Ý­ÈœámޤS ünõÚ¾ê(,{´EjŽ0fbŽ0ãcß•9v^j­=‡Ì!s†º9Z/Y1G|½âXFl€Ãqœ®ž3Â*PòÅ—›ƒ#7G˜Ï¦E€9£m¶IÎM}·š° Iüä$—0g²kªøpš[†Üal—©ä=ÇÞ'WÜsºÉ2gè›óÖ{NoÕˆ®WFx¿GsFXIzÎûÖ!Xo–÷œ'†}4 þñäðO&oÅžóéÔÁœÑ6‘ØsÆÌˆ33Ê8sp±rŠïßÇŽNs¾]Œ=gâÂÁœ)®iØs¦º¥k5{ÎÌ¥*Á¡çØ{ç¢9³—ó¡»™cVæÈGsÄÔH؈9BÕa•} ‡Q G×ÝJ«9¸ôs·2ÂùßJ×ÝJ«9ò_'sÈœÿ›9º¦säÝF|òVÌáþ†¥õ÷¾„èßsF}:jBè[ì9cgÅŒµzÎç³™/ öœq±hÜ­¬œâМñΠ⻕õÜDëy‰ÔsÈ2G> +endobj +569 0 obj +[/ICCBased 570 0 R] +endobj +570 0 obj +<< +/N 3 +/Alternate /DeviceRGB +/Length 2575 +/Filter /FlateDecode +>> +stream +H‰œ–yTSwÇoÉž•°Ãc [€°5la‘QIBHØADED„ª•2ÖmtFOE.®c­Ö}êÒõ0êè8´׎8GNg¦Óïï÷9÷wïïÝß½÷ó '¥ªµÕ0 Ö ÏJŒÅb¤  + 2y­.-;!à’ÆK°ZÜ ü‹ž^i½"LÊÀ0ðÿ‰-×é @8(”µrœ;q®ª7èLöœy¥•&†Qëñq¶4±jž½ç|æ9ÚÄ +V³)gB£0ñiœWו8#©8wÕ©•õ8_Å٥ʨQãüÜ«QÊj@é&»A)/ÇÙgº>'K‚óÈtÕ;\ú” Ó¥$ÕºF½ZUnÀÜå˜(4TŒ%)ë«”ƒ0C&¯”阤Z£“i˜¿óœ8¦Úbx‘ƒE¡ÁÁBÑ;…ú¯›¿P¦ÞÎӓ̹žAü om?çW= +€x¯Íú·¶Ò-Œ¯Àòæ[›Ëû0ñ¾¾øÎ}ø¦y)7ta¾¾õõõ>j¥ÜÇTÐ7úŸ¿@ï¼ÏÇtÜ›ò`qÊ2™±Ê€™ê&¯®ª6ê±ZL®Ä„?â_øóyxg)Ë”z¥ÈçL­UáíÖ*ÔuµSkÿSeØO4?׸¸c¯¯Ø°.òò· åÒR´ ßÞô-•’2ð5ßáÞüÜÏ ú÷Sá>Ó£V­š‹“då`r£¾n~ÏôY &à+`œ;ÂA4ˆÉ 䀰ÈA9Ð=¨- t°lÃ`;»Á~pŒƒÁ ðGp| ®[`Lƒ‡`<¯ "A ˆ YA+äùCb(ЇR¡,¨*T2B-Ð +¨ꇆ¡Ðnè÷ÐQètº}MA ï —0Óal»Á¾°ŽSàx ¬‚kà&¸^Á£ð>ø0|>_ƒ'á‡ð,ÂG!"F$H:Rˆ”!z¤éF‘Qd?r 9‹\A&‘GÈ ”ˆrQ ¢áhš‹ÊÑ´íE‡Ñ]èaô4zBgÐ×Á–àE#H ‹*B=¡‹0HØIøˆp†p0MxJ$ùD1„˜D, V›‰½Ä­ÄÄãÄKÄ»ÄY‰dEò"EÒI2’ÔEÚBÚGúŒt™4MzN¦‘Èþär!YKî ’÷?%_&ß#¿¢°(®”0J:EAi¤ôQÆ(Ç()Ó”WT6U@ æP+¨íÔ!ê~êêmêæD ¥eÒÔ´å´!ÚïhŸÓ¦h/èº']B/¢éëèÒÓ¿¢?a0nŒhF!ÃÀXÇØÍ8ÅøšñÜŒkæc&5S˜µ™˜6»lö˜Iaº2c˜K™MÌAæ!æEæ#…寒°d¬VÖë(ëk–Íe‹Øél »—½‡}Ž}ŸCâ¸qâ9 +N'çÎ)Î].ÂuæJ¸rî +î÷ wšGä xR^¯‡÷[ÞoÆœchžgÞ`>bþ‰ù$á»ñ¥ü*~ÿ ÿ:ÿ¥…EŒ…ÒbÅ~‹ËÏ,m,£-•–Ý–,¯Y¾´Â¬â­*­6X[ݱF­=­3­ë­·YŸ±~dó ·‘ÛtÛ´¹i ÛzÚfÙ6Û~`{ÁvÖÎÞ.ÑNg·Åî”Ý#{¾}´}…ý€ý§ö¸‘j‡‡ÏþŠ™c1X6„Æfm“Ž;'_9 œr:œ8Ýq¦:‹ËœœO:ϸ8¸¤¹´¸ìu¹éJq»–»nv=ëúÌMà–ï¶ÊmÜí¾ÀR 4 ö +n»3Ü£ÜkÜGݯz=Ä•[=¾ô„=ƒ<Ë=GTB(É/ÙSòƒ,]6*›-•–¾W:#—È7Ë*¢ŠÊe¿ò^YDYÙ}U„j£êAyTù`ù#µD=¬þ¶"©b{ųÊôÊ+¬Ê¯: !kJ4Gµm¥ötµ}uCõ%—®K7YV³©fFŸ¢ßY Õ.©=bàá?SŒîƕƩºÈº‘ºçõyõ‡Ø Ú† žkï5%4ý¦m–7Ÿlqlio™Z³lG+ÔZÚz²Í¹­³mzyâò]íÔöÊö?uøuôw|¿"űN»ÎåwW&®ÜÛe֥ﺱ*|ÕöÕèjõê‰5k¶¬yÝ­èþ¢Ç¯g°ç‡^yïkEk‡Öþ¸®lÝD_pß¶õÄõÚõ×7DmØÕÏîoê¿»1mãál {àûMśΠnßLÝlÜ<9”úO¤[þ˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ +¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿ ÷„óû +endstream +endobj +552 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [259.442 448.59 328.029 459.438] +/Subtype /Link +/A << /S /GoTo /D (defaulttheme) >> +>> endobj +553 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [469.952 448.59 538.252 459.438] +/Subtype /Link +/A << /S /GoTo /D (ttbxswitcher) >> +>> endobj +554 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [423.479 436.635 455.359 447.483] +/Subtype /Link +/A << /S /GoTo /D (ttbxswitcher.theme) >> +>> endobj +558 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [352.418 184.508 386.65 195.356] +/Subtype /Link +/A << /S /GoTo /D (defaulttheme) >> +>> endobj +559 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.04 184.508 431.192 195.356] +/Subtype /Link +/A << /S /GoTo /D (officexptheme) >> +>> endobj +560 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [452.894 184.508 485.135 195.356] +/Subtype /Link +/A << /S /GoTo /D (stripestheme) >> +>> endobj +561 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [283.955 171.999 405.002 183.955] +/Subtype/Link/A<> +>> endobj +562 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [269.466 126.725 337.766 137.573] +/Subtype /Link +/A << /S /GoTo /D (ttbxswitcher) >> +>> endobj +563 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 116.707 196.284 125.618] +/Subtype /Link +/A << /S /GoTo /D (tbxcurrenttheme) >> +>> endobj +564 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [216.984 116.707 284.426 125.618] +/Subtype /Link +/A << /S /GoTo /D (tbxsettheme) >> +>> endobj +551 0 obj << +/D [549 0 R /XYZ 109.858 727.97 null] +>> endobj +557 0 obj << +/D [549 0 R /XYZ 109.858 252.824 null] +>> endobj +38 0 obj << +/D [549 0 R /XYZ 109.858 237.811 null] +>> endobj +565 0 obj << +/D [549 0 R /XYZ 109.858 117.703 null] +>> endobj +548 0 obj << +/Font << /F29 416 0 R /F8 369 0 R /F20 385 0 R /F22 363 0 R /F41 556 0 R /F19 516 0 R /F28 380 0 R >> +/XObject << /Im2 528 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +581 0 obj << +/Length 710 +/Filter /FlateDecode +>> +stream +xÚUÛnÛ0 }÷WèQfUÛ’öXtZ`Ø¥V íƒšKc ‰[Ûm±¿)Êi®ÁKâ!yÈC)ŠIø)¦¤®rÌj+¼e³M&Ù=X¾d*! +£„s°D›°ñ´HZþ|EJVháGäcv}+Ù¢]€Wé{µºôl“••Úº´_g—Ù]²Y¶ õ†Ð„øJ…Ų|wõ6ÙÉgíYÜ7K– Ð̯ù¯!Ü/òÛæ"ûÔì"ùZ¸ÚëSBIå¨]¹ŸêFë:/´v¼9½J‹Õb³0}ôuÂ×5:—¦¥3 í!¿ÊX¡«êÁ ò†¡cª¦¬÷ÚQ{)*¥b®³Å2<­Ç=zÄÎ1ä zÁŒTRh-*¤ ^ÌA*Eî¹â¡¬$!B^(žÌ}—Š? ¦…ª‹æ#LAÂÃä·|ú°…óÙ^„x0§õ¡V!®Ïm×SÎn™rw`w¼[ƒÇ]è‡Ã’µ-º#é„h·dýÚÎúnè–#vÎTžJ mÅ¢¿ÝHUÏ€—1%×RJq¨Ótá Œ‹TE`ìõ +Iº='çÃÎ:¸&ìõ¦S¬b/XTtO™]>ë…´6IÓb]ºJ-ÞÉ'ËIŽ0býý"!ScѲ‚sè¯åϰ ë’‡õ¦Ð<Ò¾SÇv’+¬É‚"Ää1ÐH›¨‡‘ÔýœšÜÞÅìÝ4#6–¼f݆F'š·wJLò).òÂ*ÇÏ·$ZŒ¦4ÌçXD$Ùm? p¶ô]…½ÐS›F9·ôi°]iJ»>°›Ø \ÿncar{(âÕw²=·YŒ‚Ú…ÿg=•6||o¢”4BKûÿU™¨½`ïM”«á¦â2]Î(3–× œQ‰í0<-b%ï2¯ üCüó­/á¥2~zê“ñ/Rü„Tendstream +endobj +580 0 obj << +/Type /Page +/Contents 581 0 R +/Resources 579 0 R +/MediaBox [0 0 612 792] +/Parent 509 0 R +>> endobj +577 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (ss_default1.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 583 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 318.00000000 254.00000000] +/Resources << +/ProcSet [ /PDF /ImageC ] +/XObject << +/Im1 584 0 R +>>/ExtGState << +/GS1 585 0 R +>>/ColorSpace << +/Cs6 586 0 R +>>>> +/Length 84 +/Filter /FlateDecode +>> +stream +H‰*ä2TÈTà2P025Ö37²P064×367TÐ…˜(¥r…+äqé»*¤srAU*!L™‘ˆä\.}Ï\C—|®@ 0ì£M +endstream +endobj +583 0 obj +<< +/CreationDate (D:20030406193452-04'00') +/ModDate (D:20030406193452-04'00') +/Producer (Acrobat Distiller 5.0.5 \(Windows\)) +/Creator (Corel PHOTO-PAINT 10) +/Title (ss_default1.ep$) +>> +endobj +584 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 529 +/Height 423 +/BitsPerComponent 8 +/ColorSpace 586 0 R +/Length 15200 +/Filter /FlateDecode +>> +stream +H‰ì—Ñ‘ë,F•ÒÍàæ2‰Ìà ÃñüµOSû@ [»hu­1Ó¦¡Õdû|õKƒ€õß¿B!—¿ÿõ‰BmiEÆ<ÏË/Æc\2ÈÀcì´Fƌ֨83¿h·ÖÅ3½™FÅyH£»‘±” Ù {Tœ™_¼Û³@Fçl6PË`ßä#]Úý¼Ê¸Ž=pUèv{­áAÃc=ƒŒ¾qg75@Fÿ©çl»þüùÚÈÀ3Èèç!Ix6©«Œþó2$ÎÙvdܾËúûë2Åë寧bÑ™±ý̶~ªÐÑ=Σ’ð\¦F¬2úOÊ8gÛ½!ã‡Wdü”€Œ!;UèÈØ +N”þ7©ãŒóÀ$<¨}2䚟„²w““ʱÐx[é®~Õf+òÙÒˆ*gĈs¶QÝŸÒØmWž2V^Dož2ìi5fY_CËN®ýÚì¤'ëÁîjvadïÚÙ³C0*ov¬ÿ†žAFÁŸBó-Á&›sYâŒóØ}ûlR£2’ëÒÝìKö½ÊÈ Î÷Øo¨™#Î¥DçéáŽvK§Œéò1}|§ŒÍÂÍ€ûƒoL´½ì\º¹Z~É…s²J}®Q[Ï÷ÈHð¬,IÊ“:=2~µ6‘±bB^Û%þ8EFÈQCŽº?2‚o‘·BF²7s¾ç ÐŽs 2ìgÛ•§Œõ7ž/®ÈÈŸ2<‘)õ6›ik2¤"'2JÁ´Xö%Î:Æt? 2tvM®=5O.2ÖàÌ74¼ 2‚¢†õdÇ +7¾åÍ/:ÞµÓE¸ÿ¢Kon;Fœ!㲞)ÖkYòŒÈГþ2’Ç5†²‹ÄÉ…RÇìFw”´õ 2 +þš_ ážrÈ!¿²l¤\V6ªé†Œ»Ù&Œdb|Å•³`ÄyR2Fjg'O»ñ”±ž)ä)cý}ž¹ÈfÚÊ i¼-Û™ÒêÊ>î\`¥: ²Ù(Èè/2‚8e„&’’XgÞbÇ|2d„5F2üIOã¥K é/×S³”ê§Àˆs¶Ÿñ×…ÝÏl»ò”1]þRcA†¤F=2<)WÍ3^û®é_ -¿ldŒF³ãÝ H©¤4/õž2¢bv•™v~dÄ#Fòo’cõ^ÝŽóynÔÃéŒÒ]ýo¶Ä÷Ñîõ‰¿çÍhlÞ-=’m7ž2Öó…´qÊx¨cžkÿdípå\·Z`vI÷DF6ÁJŽ$p‘ÕÌòMåAFâõ”QçS!Cv,€Œé^II¬#ëoÈVH*WvrTð=eØ•7‡“mW ã[ /JȰcèG†'þ ‘aw»mëºã+hâ±È™6{=ßRŸÌûd”ÆxÄ)—<*ÎÙv³ÈXyQCÕ¶¹«-2Îã§F†”δɯ¾ûÚ‡Œ&q>s=*ÎÙv52V^,¿ë­Óæ[ÜÓó=263mü=P;Ñ*ÎgN £³GÅ9ÛnßZnÁ ¼z~/#‘5ÈèìQqζûÇÔðXá“x}ã|æ$ 2:{Tœ™_¼Û3Èèç3¤Yd ã4*ÎÌ/Ú­Y ã­4*ÎÛuª„ Œ1Æ8k1ÆØiŒÁ‡„Pw ODøYü©Áqã·2ÈÀ~ÈX.Øàz/Kˆ}È™Í7Žý¶‘XN¸Ú ãäæÇ~ƒ Ĥï~ÜxÈ8¹ùÆ±ß ¯S¼;«^e¼d4ñ4M½™oûý¤ÈȦ ¹×•ŒëøH©üY<ß«¨ÒuVOêȳKÅà‚ ùÒ—Jä#rtO7‰¶A>ƒw#cÒ…òß V{“eŸMAr¯++¬×q,²|•®ËÛ†: ”¾HB÷P@¤d¹œPY! ®)ëÈ(%…žˆ9o•f°ôÝ9:ç$fãœ]غ‚1•ú=ú›³?®ØþÜtgìÖAö»ɵ^¥¥ +õ}.å“ÖB™‘‚HMÙ4ØFèöD‡"¢s•¦ªžˆyn3hOºüMNžL¨Cmd݇殣ʥâl7Û ëÝAm«d…V¼*û…B‘ù$$»7Nê‡îÈ0B·/ !—Ò³CÎÖ< 2äS¥I—ûy²p¦AÏ)c72²ïÙÑ¥Œ(õ¶4 ­7üήAFé´Ûá”K‚8>Ä[öñ![?ˆÓGÛPÛȨ ”Hˆ ê`%‡œ UTVÈnFló–Ý=cÒ“]AÒÕ:¥I±—±ž].+l’å¡ubt`ß¿¥Yxh½áwv 2’‹ NzÛ܄٤ ¢K’ ]?ˆÔt42J±ÒaÜÍŽÍéÂ,—³lJJ<ó¥Ÿ-͈=ÆO±HFêÉ„Æ)#;k¥ +r©—ª9§Õ@FöåžæìÖAö»-2JnB +Ùçù^G„¥Ï)£I¸Ú$ÙÆË[ûÞ¼ïâcýy°íÊlõBÏRiØsý®A†3ÜR…¥!2¦{=K@’ ì~³Œp]i›ÑÖcLN­¦¦æU­"êN%;&¨aÏñk{72ró½\‡°úþ§H« ØY½s¤»zCìwdœÐ ØvÛ#nîWýÆñî¨O›ÄN«Žv½O;_ÓUÎÊ ûýbȘ…darwMbIµ3¸m¬ì „ܤë +ve=È(Mœ,Év&–×ôð’LœîIÒs}Üx ddßöÐ)CÿË)·r 2’uØ! z†³*þ«·©º|ŸÊKýc%³®{6±$[!ÉÒ;z²+=q²'1à(²Ze7ç.û«ÿmØ\©0¹»ãБ ~Ûˆáöndèå—¤ÄìvhÓ5_ŸNMIJ®k¾¹{ß1¨&±òG#Ù«'Aé·¥šˆm"#[!iNEã£rNíé3À‘âÊæta²0ìe£·(FAö»-2*;S™0åžó  glh•“GÄÊÓI;žÍÿ¾Ê>«'îˆVvÛÈÕYÃèÐAö{72‚ÈðMÖót¯ÝÃ9n·©›ð·Ò6VMB!µçmÇ!£ÉĽ2Bî˜p\[ û]ƒ üìö§èšep\2oÕÃódà“d¼­gŸê:­:ùÎæÇ~ƒŒ!ž”:wàÓ§ó # ²ØI¨Q9AÃû€ŸÅ £³W@\”;ƒã‰±<«{•¾02ôî¢ù~ƒoûýVÈžX4|å,Áѧ'1Í®ósoR2N´(OÆ>ô¨¸¼v62pO7GFÏ­ò£#]?±QXy1LóôK:GŸ®ÑHx±–È üXd çÅâe¾æËü5E]î~_._—c‘±")^D ÜÙm‘qÜ^«ÉHÇRã’ãEŽÎÈ…´©1N^=›‹ÿ¦jE NøÜËÒýui°€›XY2Éô§Æ•2Vjt;h|–OÍòÑÈ8t6¿‘q£Æ +‹ø+©Á)¿ƒ[!cåÅŠŒ¬:jlžÑþFÆåˆï âÝuσƧ8eHR$%£áäEÃN–üsÊÔX½þ©Á)¿ƒ› ã›_óJ í³!ãè<£"#’B²ãvÐèyÊÈ’¢m”Z!Cw¯2æùó8:œ2²¤¸¿› ã×Çߪäs"£sœ3ÈHÎ#)Öëó!#K^§Œyà)ãº(&É‹þù'Þ²÷Dû¸âsdA¿'Ž9ñÙÑ?Î?ÈXRÐùNÆu«¶ÚÎ`od¬¼˜¿I!ûœ2F¬×ëït[0ÓôgqòìäXN ûÝ +áFÎtxh¤£x®Èø’Ȥ×CNY¤>2 Tzʘï`}424)âïªëª¹CÆt/;ڇƿ’"#\©qrd ì@æ ¡üÕ…!—Æ5/"#¸©qè#üœ2¶}2¤²¼¸Q#=eøC}h ñ+¹-2Âu…Ti¤c;ðsÐX©‘GŸ#F(##ÜçêƒÚr>5üˆ®ÈpºÏÄ•x2p7G6üM8º1Bá–¨—[ ç}÷Y`8/VëƒÆØ}QÈÀ 2:{I7?à¸y…EÏD´¦ñ¬šgãÝÈ&5zÎZr èÙtÖ“Òµdàà 2†x‡tçôÜ½× #ÛÛáÓ÷b&¤Øov=2ð¡æÇ~ƒ |´AÆÉÍ7Žý¶‘±ˆå„+ 2Nn¾qì· Œñ;d`¿³È@½@ö[#¿›Gg,„ÐÙÓE£{‡úi]ñ…1>­g2~£7PDÆèŽ „N*'2Ö[è…õûÌ8B(ÑCÈ%øÅü™C3Ž1Ž8d`Œmƒ ÃÓ4 ïCOÛȘBo,™%ÈPžnÞ“n¶‘±” ï!ÆxˆAÖÞDÆz!ôVÒy € 2B9é<AzU „V 2ðkd „é<|Èøßÿƒ_Þ3È@ lx!! Ï !$2°ád „„º!cB'È@yÔcGŠJ!§@!§@!§@!§@!§@!§@!§@!§@!§@!§@!§@!§@!§@!§@!§@!§@!§@!§@èÿì×O,UÀáþRà§`Áš½ 1.$‘q#²…÷‚½nL܈ Q@F爰0ü¹ÎöÂqB‡Ê;çT~û_UõÌóä é®>]]ÝÜœß$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$-•ŒÍwâ‘þãê-íÓê-"•$@Ò"ɘ*BgA[œÎÉØ‹dIó'£Ýɧöü©WGOÒ®”Œ$É’.7ÑÔÛ´$HºÜdü˜ŠdI«JÆpGP=–Å[†©[ŒÑ’ŒÉ’æOF™ØÌÜáû7&’Ñ!@Ò"É(Ó÷ýÇ£Éh?…–dIK%cTÜÞmõ³‘ iUÉ`’$I’$­?Zsn’$I’$ÍŸŒM0\Æð´:Ø_ßžóÌ¿Öý$@Ò²wS™è¿:µ¾}J†dI—žŒêl’qÉ’.4Q‹ãH´H2ân_š(Tǹï C2€¤ù“ÑnïÕýBûß*1¥‰Îè’$HZI2fýÎÜ%@ÒüÉ(ÍÃT2¤d’$-’ VE2€$É@2€$É@2€$É@2€$É@2€¤ù“± â•T§^:Ouül?Ø=$@Ò"É>½sptYçÕö8I’$-›Œ2½ÕKÆl$HZO2¢ÑeS¯JÆ‘$HZO2:Gòë%ã’$­$%ÜG$ŸVg¨îVÎôsÝK’$-›ŒÎÞ¾ï¶ï.ã`’$-’ŒÌ½€dÌF2€¤ù“‘·3+Õâ}ÏÏ–dIkNó I2 iÎd°Z’dÌ– s‰S$$Ãt¦HH†éL‘ Ó™"@ ¦3E2€à$ɸâ‘ `Š» Ó™"@ ¦3E2€à„ÉØ|«z:h×Të«wu·gÎ|Dÿ]F2€ÎŒêq?ûž¡¿r¯w™Ñ)’3'ãæî_ûœá„É0;§HÌŸŒÎžOFÕd2:µ2£S$ÎŒÑ-úøddîõ.3:E2€`þ»ŒÎŸúÕKSÑi¶+óïZ|[^óÉ‚™“Ñß±;g0‹L‘ 8I26ö`\Ù>="‹O‘ 8á]ÆÉG2Ÿ"@°æd˜Å§HH†éL‘ Ó™"@ ¦3E2€@2LgŠdd˜ÎÉÉ0)’’a:S$$Ãt¦HH†éL‘ Ó™"@ ¦3E2€@2LgŠdd˜ÎÉ‚¥’qdÖo‚x0¾4µ¸}o|P½×Ä)’ó'c›‰x ™p´¥¨Þ„‚$ŒžÓÄ)’‹$£½Œ½’q3±ç“ 3:E2€`ædŒöb«_N2†XÄW7ÝdT+M5E2€à~$£ÿ®Ì]†dŒN‘ ¸ɸ ÷ ý§ñÈèJSM‘ ¸Ädì»Ã·ë5"9E2€`ædÜLT£ß‹›±;…›ôÎ/O‘ X$U5¶GηïIÆÁS$æOÆv®‚Å7F35E2€`©d˜‹˜"@ ¦3E2€@2LgŠdd˜ÎÉÉ0)’’a:S$$Ãt¦H,•Œ« ³~s×öH|µ]Ö>]¹ø¶¼æ)’ó'c›‰x ™p´{{›Œü‘ÑܘvŠdÁ"Éh/c‘düïñ—·óø«/nç«/?7íô“}öé'ŸþçߦÇ¿ÿî;/¿üòsÏ=wÛŽo¾ùF2à!» dÄL%c¯»Œ/>ÿïí®xûøã>üûï}ð¾©çúúúøÝK/½ôì³ÏþãÿH>• `m$ãÈj 뇓ǓăիíúxÂÅ{!@k©dÄ}5³~³ÙŒ>ÝñHõêÉÈT#îíCâ E,EûÒõÝ»ö©d«22ân¼• Çh2âÁ©#ññ¾ÉèW£ÝÞG»PšdTß½Hp!IF{™dTN’Œ¡Ûk¸üï¬ÆaɨÎ,À™9±Ûxš¿Ñh“Œƒ«ÑOÆð¥ª—¶×P}V\ÿ×H°*K%#Þ/l,˜Œd5Ú·´¿Uõ®xòøxxZi_• `=î_2¶†ƒñi';«1úÆö®ázìîcøÑ2»tf™d‹X*å»j Ow&cH@&+£³sßîTcê£w íâäÃJî/$5s2ªj 2½˜!U5¶ÿí'cåÛ¾d'´H2ªjl|Âüd’qn¢Å7pÉ72b8f‹Å^É0’ŒZ*‹ŒdHp É0’$I†‘ I2ŒdI’a$H’ #@’dÉ’N’Œ« ±W2ýßr^’æ$ɸ”Ù+ËÖí¬$8ŒdÉ’N’ŒÍ·¦Žlîªöß•9[~¥dœ/·¿ðÿ|y;£ûy»>™ŒÑ7î\)’œ„dÉ’ÎŒáñàødtÎ&’œÏ “±3 +§JÆÁ%C2€cœ0™»Œ©#ýôÄeý³õ‹#’c†dôï&æÉ à'LF{w =’TN’ŒõDaþdÜ~Íêé },^Éöu¦d¬sÎŒöñÔ«íÓŽdÉX$q£!@E2N˜Œ¡CF#²þXH0J2N›Œ6#+É*’qÚdÄ[Œëæ¦ctÍjg¯dÜWÉÿOÏ}=;/#ùjµòÜ׿’߇ãIÆi“±×«+É(ûß=-»+œŒäާ—N2މÅèMÄCNF»)U^Æ£»Gu†©·—±¿“ÛÇOï¯ì\ÃÔ…MýŽ£‹G¿Wÿ«U§®¶sžäõoî=aç[Œ^—H2Î:›ŸŒêiü﨩3´o=q»¡ö´ÇŸ°}º×ù÷*EgÁ΋<à SߎË"æTɘږËÝ?ƒKwßHîo‡í«™dsÚãOxð5ô÷ôß5uãpür‰$Ü5C,F×´N¸hçõT‹G?hê„ý·ZI2:—*‡d˜s'£³¦Um/;·ñ©7öt.2“ŒüM]íÔâΧdοW2 úÓ¿Âd’¸,’aN’Œþþ\ýE=õç÷èyªÇSÑíKu¤º’ÎʽN;º¬ÿ;+3×Ð~‘êñΟ±}Üùv™úí¾— "æLÉèè,èïoO¹Ü½è€Ÿk¯_û€÷îõËó Ì™Œ«]$cUsª»ŒvYÿÏÔÎßÌ’Ñ9G2J÷Nj¯ãž™9+é'£ÚO¶Gâ«í²ö©dœ/‹»Ç[Ùi¿šûޱT2Ú«;“Ñ92‘êˆdÜãd3X$£w¸’±¶‘  226w Wr|2¶’±Âd´w—SÛ5íŸàÆÌ–JFiþ_ïLFlÁT2ÜeÜ×d¶˜‡Ã?Œy,’ŒáÓc5¸Ë¨"òöËü=ªêŒã÷çŠEÅR‹- +‚ 0ˆìâ,QQW”„$’È ;„$&„-adUT¢à¾pAp)ÚF«V¥­UK«¥ÿÁôM޹ÏvÏ]æÎÌû}¾ðœûæ¬wy?óÒAaŸT ƒ^‚‰˜—žÂô%¡' 22è3òXØÁŒ«ÛÌ@EÙ~d[ÒŒ(NêÉÌ¢¸êü¥pEÙ³P¯eþ¯s4õ¥úàŠ±üá‡0}d;.dë±Úß¶p’`Êd02oš]dè˜å92 .¢„¯ˆë C±\ ¡þp_´eÛnÄó-y5³b~ÍÌÉdÍ ¬¹a§°<šú˜êÙc½}1lm^g »ï³lŸTÚ‘‘l¹W–È dxêAXdX~˜úÙÏÃÌÀǽB†›™eà çQÌ ˜Gÿ:Ù‰è?YÙ64îÕ‹Áßç.<©pˆâ}Ö_.° +2ˆÔÈpf£U ƒ¼«~¢5!C¶¨zK|[˜‡Íláï ¿´âÈŠd¥Ø€l-Ù¹›‘=Y˨º1˜=Ëfæï€e~6ú,–·4ƒä32ÔòŒ3þóÂ7d#ŠÔ¡QìDg*ʼn¼šY}»,/ü“zKŠnêµdùÜr'êÓ¹1dÛàgVoƒï`ë5@ddŠ}@FcKQ ³ÓŸ™Ÿ3S‘¤~b1—–Ÿóq1…óЗÂ(–“mFGÎ2ƒ""l¨ošzŶ…£4™úèßLÙÁ…;tùbßÙœtË“*ºbBõ  © †Ý>Á´-d$ýý½¤È“² ì‹V|ãšПÙ2‹ò‰E±õö,Çz²WÜÁ®4_Œà(àÛã…ÈpO SYŽŒd +~;ÉæÑÏ –¿…Å„.gVߟ‘áìa¥"ËÙE†û# +øöx!2Rí¬B†oʸÍ™²ä˜¼<¬2®ŒÛ0"‰È@¡Pi"È@¡PšBd [12Œ¥{#(T+‘'ȈgˆÙ† SH Êy‚ŒL1"#ÕÈ 3³AIøWÙ@õ æ%?›¢¿p +eWˆ têÁ´m!C=œ¾TD(JG"ƒüxãÛô¥¬ñKñAËUdÃé6"#½ÈHJ’¿eD ffYÙº(Ê–‚€ ý zËiGFR’·iâË‚<2„a3"\…BiÊ+d˜Ÿ¡âÒ=2 ‰Ô…†AdøŒ aræj>½óΣ˜ŸS½ + +…²”çÈP$s¯¡hУøJÄ2ÒúXR+ßÁ·ey^Ö™!aæT÷WôA¡Púò© ƒ-d0»rƒŒxëUº!û«úO2aÚG¡ü—'ȦwËZ€Îð¸,¢&‹"b h[È`ž`Rò Ÿî/®ùêê÷D¡P^ÉdèÛÁ©H‘‘:dø/D +å¿üA†>ÁqÀ‘B¡ü—'ÈðÐ"ƒ7"‘B¡Ü(hÈH©ˆ  +åFˆ ´cd P¨lS6#Ã0VÓž™k52P(Tv*k‘a‚#íÉÙ¥ù† 4ÎBdм0äJû£Ñ´·[U ãWç:öE]À¹m®ÍmÓ5ïâ®y¿î6Üöºü¶Ýó/é^pI‚K{^v}áe=mî5ÿòÞà¢ß„‹Ú‡‹Û÷)þí ¯è»àwà~ ;ô/ºòÆEWXüû‹ÿpÓpÇ%•\5héUƒ—†—vRÚi貫ÁÃb× Ç;Gâ]"Ë»ŒX~íÈணVv^uÝÍàÕÝoYÝ}ÌšcÖ\?v-¸ç¸u=ǯë5~}¯œõ½sÊ·–…oÛÐ<¡ü†‰å}'VôTÑoRe¿É•ýo|㔪à;ªoš +Þ8ðÎ§Õ šV3ø®Mà!wo2}óÐé[†ÎØ2lÆÖá÷l>s[<«vÄìÚ‘³ëFFëFE·ºwûèûv€o¾ç-àvyœûPbìœÝãæìÿðàœGöäÌÝsëܽ·å‚÷MÈÛ7aÞþ‰àü“òL.88¹ðàí…OÞþè“Sæ?¾£è©©E‡¦ºó±§ÁÓ<¾ká³w/ž¾øðô%õ3–ÔßSòxæÒçg–>?«ôȬeGf/;Æ_¸¼üÅûV€_ºåK¬|ùU/?¸úðCk^ÏYûÚÃëÀ¯?²þõGÊÞ˜[öFî†7ÁyåÇò*ŽÍ«h˜WÙ_y¼àñãU' +ÁÕo=ºüöüš·‹jÞ)ÚôNñæwÁm9¹¼õ½…ÛÀ§ÕžZTwzqÝé%Ûß—ìø dçKw~¸tׇ¥»>Z–øhÙî?ÆÀOœ‰ï¼|ïÇ+ö~²bß'+÷ÿ ¼êÀŸWƒ6®yüéÚ§>]{è³u‡>[ÿô_ÀeÏ|^öìçžýbÃá/ÊYQÿeÅs­?ÿÕãG¾ª:òuÕѯ«~SýÂ7_< ®yéo›À/ÿ}ó+àlyüíÖ×¾Ýöú?Áµo|Wûæwuo~_wìûíÇ~ØÑðÃŽãÿÚ >qn׉s‰·Î%Þþ÷nð;ÿyâ]ð{Nþ¸÷äO{ßûiß©ÿ‚÷Ÿ>àýÿÜÙ‰ à±ûüL“…a §B$1æOˆl*ÿ‘aî!Þìˆa 2ˆ DF«A†K ‘¡Hò<2,qà,’Fd„BF$ª/GCÐDd 2ΑI±œ­’ÍÈðªÊ S·WÈR)hÈ,08ˆD söl +yÈ@d 24‘É*®-øâìöw¶J6#ƒPÃqFM2h±X$3šÙaD£#¹€ŒhSÁ3‘È@dè#ÃÖ§j·¿³U²5 ¹ÈЯlU4D‹ “F(Ôp6®ªº€Œx܈Ç!<5àðÈH6 ‘ü¥LdÐAÌ@id6 ƒ4¤AÁŒå‘Aâ¤m"ƒ\2Hƒ ƒ´ 2˜É 2舉 rIAÚ<2舌lC†:)1ȰLeiAF&Š9ÀÂ}•¡_;ðàŸ>¡çdfŽòàD"šh€×Õ8>Ì ƒPÃ2H•AÚf•A.™*ƒ™*ƒ-‘A¤Ê m‘A¤Ê m“¤Ê m}d@•Aþ„U"Ê”¥@?³ 4v‘ÏL5Šª 7Èpó ßÛôž +Ç5§(@‰!CF“ Ã2Ú] Fz‘lŒ&jxŠŒ¤Dˆ D†­OÕ=2E?k™UWiOhÎœäª Ç…†ÏÈð1:È…B„ @pU•L¡a"ƒ$ÀŒ@£T #2«–4FF눌t!£ñ— ¿J6#£ùæ8ä…{·Ž*#Ô‰ t ‘kˆÔ6ÅEÈ 3pÀ‘ÑsÜ:Ò蕳‘ÈhõÈhä~ó£èHcÖ ƒ)1 ¹Ò¾í´Ø 2"Pwœ?†ÒƒG†©‹»æÑ—Þ"ÃT§!¥Bdt±œéI#ƒD®»–FFïœ2Òæ‘aêÆ)U€ŒwT3q@†I ¢a3¶"2AC†U39}É·éͨ{ÊF¹1·ó´UÁ·2B!!2êë “IIѦk Ã,1’2HûòÞóÝT¡Á¥Wƒ‡Åd@‰!«2,‘ÑgBù Ë}'Uô›TIª °‰Œ›¦V3UxÈÝ›I•1tÆ‚Œá3·EÀ³jGÌ®9»1*º}Ô½Ûd˜w ‘È~ªž C–‡}G†0á["ÃóùúO­‹Œh´‰ÑhÄ0à_<:sfŒlHD ê Á‰DˆGF›ksMd˜Ô0‘aª]¯ùtFF‡þ ™!2d ‡È ßU"Cý©ÒȉîϯÂç[Ù(:ÒˆÈ@7[MÔh*-â„@(”ˆ5¡$\Ue„B€ŒXì5.êÎeÑöºü¶Ýó—ô(¸´G!©2Ú[UFûpqû>ÅL•ÈèÐQ*ªŒcÖ/2zŽ_×küz‚Œð­ea(1|¯2cLŒ}(È@d?U÷ÈÐYÅgd0›×DdÇFdè[ “Íàø¹îC bÀ€ #‹ø†ŒŽK:*‘!ãšáñΑ8ƒŒnàÑ«R„ŒÓjM«Ad 2üA†fÿŒ@†NP§ƒc“Ç]ˆI˜­ÕúÈø™@G´‘¦JžÝ‘È@dØB†¾2lõw¶JêÁ×|PVw¨G¹GFÒi­È"Ä‚ù¤` lfD"‘¡ƒŒ ;uUFÐŒÈH24È@d 2²'DFë°h4í¸Ê`œ)È0ŒUĶnQ#"F£½CF­@_1Ñ¥“y7þÏ~¹ôØqTq¼×¼“ð~ˆ8 oÂ#1Øáåoà1€M‚qƒ¹ñÆâÊ+VHxÁÈ’AlXL3Œ¥`é/2û‘Šž[žrÝzœ>Õ]ÝUÕý?úëªnݺ]UçT_ŸzÞÈ0 ¶²™#ƒ#ºëT¦5:õOýWc¼ó§ ‘ñàþ~òB”øÈ(Ñêudt =ó=ô¯†œ9 ãìÙ³çÎ;ƒÁ`šqQ®2A†mÉya#ccccssskkkƒÁÖFFêÕu7Uµ ºÙã3…Œ .0¬Õ|È(ºÜ Qù͇ =ÿU¾ž|¤WË›7îÞ¹}°·ûàþ~òB”¡8Èh:\D z_ « 2œ¯@Fj¼TôKT苸æbª cd½ž“»}ªžÑȰe£Äþ5OÕ@ûHL>Ûè{,âš÷Ù ÔÙ‡ªÁGFσT2”ù/1yÍ!ÛÈÈÿš÷Ù ÔÙ‡ªÑ§Ê¨ªE«êÞ™œ/}"}Aná'^9K…~¹\îììÔu}xxxtt$r2#²IæC¶A•q|¨S­2 dT~3Ü’<ŸÏ­¡Ô¿&™wÙfžU‘ìÌ Te8û *áGß-Éó9aŸ–TóÎÚ ¢L^eÈ-F ƒƒ¦%w߇ªÑ¿Ê0xQkÔ¨Ç}ýèyhŒˆi™c­¡Ô¿&™w†È±«Œˆ9³Û£dÈ?ª†2A"c†ŠUeÔ~j89¢ÇË^•z}ŒÝ©7Ô¿ì‰:¸%y>2ì ¦š—FF‡4èæ;ùA©5h¾=ò« #Áö¿}Ã)z•a„ÉD_XC£“‰zV³u †jÏë‡í±Ê„Ýc7Œçèsu°"£q DFÓÈ0R~³ZoY¨GTx¡¯M¸^ãÎÛZeØiNœsNœÿVÉÙ‹EP62D¼*ƒÅ›¶üÙÿ!U¾ÑaíÓ¥ÊÐy!4jØmýÓç.ŽÏíFåBÄ‘•»'¢ËdDYÞâÑÀ¢5 Û'AhȨ]gÊÉŽ¬4B•Š _Œ²åHÏ*£fPcœ*£^¿¤×l•2húw™øwÞâ¡ÖÀ/4†«2 Ÿ8-èÐv{T2*­€m]L·°úžÜÍ'ã(J•!4j¬k¡dw†ÞçáŠ$…½/úvCºœÈ7E™ öeldtX^>2˜iÐF䣟©ÐB£[•aœ“ÚuÍ3 µ~uö÷÷ÕOôc}ò…Ïî÷Œ pæCÕèSeb ‹Ð*£¶îoe¡¹²Pbü”áqÍV>dy¸ÎË"Bº6þ¼#T·Ø+ +®ü ³Ð®Ê¨ØÆñpç‡ÐÈÐ!ÛòS=S¥2"”Îз†5(¦i±ÊëÔ åg{¤ÓÛ±Dßîñt6F>B2ôËåR®ðððШ2T*6z"?”ú¿|+á¯?ï8Èh= ¡g#¨ÐèVe’Y‰@†°H¡>¥­öÊBF«rf„}†mªFÿ*ChÔÐ+ãS¬#C·XÏð¸ªýFQ +²ÊPÈÓø¡T1àåkÇšwda¥óÙSp +᪠{˶uØTè£|ÈÐÍÉ‹j˜Èè¶…‘/x·c·•U#J•!Ö©AŒT§pÆ×8'Æûwþ^OŠ a¡A9mˆyid„æ®Îg/ô™AëéVeè& +¬2l9yáDF¬°æ&;wé>TXU†Ð¨áüu„³q +úÚÚàük|•‹Œ1çåd›Ò5\•Á‡±¼þaÑË*22Á‹z°*ƒó9¨"NdŒ`üP¦šw†È¨³¿æ}6Hˉ¡9 ƒæE=d•A|Žp–"Ná|{±ÎREü…F@èx #ɼ3D†Èþš÷Ù ÔÙ‡ª*Ã):]«”îÌäBÇkè©A›Ù$óÎ!۠ʀ8>T TN9ÓµQw‰Y•Okí‰{šÐ_½ryyóÆÝ;·övÜß:@ÅiÙUÄñ¡jÈhLÙÓ&€Œ‘5è¼@ÓK“Ï62ò¿æbª†%*.2†{Ãç¯a¸‡1E#£P« ç­±\.wvvêº><<<::JC –£Èè_™¦²é!cPm¯BáÂ…‹/nlllnnnmm¥Ž! ËÔ|È(:ë½ø‘%CõÊååÍwïÜ>ØÛ}p?ùª ÊPdÈbD,B@_ÓFF³» †T»›¶W!BLdè#‹Î3_@F¹2 ‘d@@F¹2 ‘51dˆ•Õ@Fˆ€Œr•2Œ´Ò}¥‡^5JGÆö‰Õ@F ßâ"£ª„ÆßÝ„ƒswÃô‘QæM˜Í’[«»D ¾b®¿?2˜‡Ó§ž×7dt“ŽŒªºTUתêzPª·‚¶ðK c„Ý5 “ƒ¼V¡WŒž7Vâ*ÑZÝ%JðsýQA,ƒ‰ŒÅÂ+æ‘2:Ë@ÆáááÑÑ‘Goª_…o± +ÖÃO‰ :ôs†ÛÝ„C2Ö .¯V'^8ç홯Š6ÛÿF(ÁWD¸EfÈg¹'5€ŒÎ²‘aÔ ¢kÔàWÎÈ5¦ý2¬m}Uέ·²sììÇ:¯¤ÄÄþÊiÑß@†nÎÓk8'_ѧW½j¤C†èO ú»®³ÓøiV’¡?9éñ« ±^qÿµŸæûU„3Xß}œ’»ˆèaûúð/líb"CçEóÛâí}v$R§Aý•Fõп=Æ¿Œ†¯ß6ÝóÆ 3|±ækÌã—2"P£µÊp&Ù)s±Bg§ñ®koà{øÈ’¡_.—;;;U +­¾%E#ƒØï:Ð/ ô©Z€}w¶×¾°r€s ûšI|pî&ß«½²U¸9Ialœ ‰sXdø$€ ò|êÆC†Ð©A}1 dÔ')BïQȺ8vÖ¢{œZoåh¨Ê0þî|‚3²F§ý«s¤Ï“LdøÐƒ>“ô˜ÈÐÇØÃ‚Ñôò‘êÕ°ôÔÛ´Ž2ZwaÄ]d‡Œ5jèŸüŒÊA†]h´–¶÷êNÈÈY¾*Cœ¤zšª•«ÊpÉ]¬µú¹'|9ÈðoÚ5çM†^@+2Œb„ùp'2޳ºW2Nwd„ší«l‘aÇ]d‡ á£F\dÔë/–­C­è™ 2NŽÉZ•!ë…Ö—m£Êp~ò‘aŸX½Çøµ5i·"£ö£¡õl0Ýk\Ézu>åAm­28·½ê¼‰²¸Èèy> ÝZÝ%ÊA†ómAd‡ŒG5…mü3ÌA†^hpJ §'‰ ½ÊБÁAªä‚;~Ò¥ÊðMº;ßaзfŸÎÙ`.@QCšQ2ønVçÝ)4ôZñçí•­Â-.2¤©6Ýo[«»„=çkÌõ„Œ ÃÙ:’ó(&2êõwKÎk¤/×éK²÷ënŽ …ŒÕz/UÕµªºÎ,ÁêGUÆ1ö-;ùÕíŠI,Ô¥üwxù:¡…j †E|²½»Ö$3dÉ–ƒ˜Îæ<Ϻ“ER_1·"ÆÉ4bÁ¼•vŒt陓ºí¢X(×)dÔuÝ|>¸¿´SYeH.¨÷Ùý¾*cœÝÑסhͶÊëoã¾Aã;›á|ÛÃ"µ¯8F„[ŒUeô9“úße;2ê“ú‚ó +]ûßøëÏ\2ô·nÝ’<ØÛ B†í¢&þëù)BŽê³;ú0­PdȺoˆyÊcE˜í£G”à+"Ü"62œÖÿX=*²Ðà”s ½tõ_ÿü§{{o…"õL  d(‹ C·Vw‰|Å\dä)ÚõªÐH¾ÈL$Cÿ»ßþæøýîßþòöÁßû #7ÍýÈùæM—êÒ[«»D ¾b®¶È€”dè›ú¢áÅÁÞîßþçÿþó¯ä«Š¸» †T»2B­t_é¡W cž’¡¿·÷Ö¿ïý£áESb¥(d@3S• +ý$5íäd@#‹ƒŒUôâGÖ´‘APDÑÈ(Ôj #ð 4¡O4 V€ÈØ.ÖŠæÝø¶½ +}ê Á`°2Œ¨2’¿CãH†‚ ˆòETÌ_IßÙZr'@EúÈü•|©@A“1„€ ‚&) cÅBFubÉ] +ATÏάk$d}ŒÝ©7ì?Ï^e€å þȰ³™ì±s,g=ÕºÙö“‰Mµ.Ò¹àÚ ú_J62ˆMùÖãüÇöH¯x,A³ÒÐÈM5üÜN<-Od„ÎÞ-K‡"#ÔA‹ hbeŽŒÚ_òèJ… Û?AÈ£{ú„‚ ihd9–ÖpÈ R½¾TcRçk¶½C@A“Td8³q·¼gó%2ˆ¹œ×·c¬Áø—MÃI"ÃÙ€ hVºÊ¨=IÕ':·û²ºoSôc£ÈùäVdØë·Yéë䬄à,gû«¯AЬ42è~Zô¿˜/ÞNd¥ßž æ #ºhdôw>APdøª€ë¡s;óù¾¥Ž¦ ‘Z§@Ùê Ÿ†È?ÌgfˆŒ"d@Dk8dä°©T*A´€Œ!d@4ICÈ€ h’2†AÐ$ÅDFcÉópЦÒAÐ$µÍ@AÕmÈ€Á`0L ‚ rÊFÆ;žÚè£wžjôÃFï:ÝèGÞýôJÏüø=Rg.½WêÙËïkôܱ{î'=¬ÇŸåñϽòı^}â󯾿Ñýô¾ØèÊ}©ÑÏ>ôå‡úðW®J}䫯ë…×>úÂÏ}ìkR›ÿºÔ/>ñ•¾ùú'¥^|ýS/¾q¬—Þxò¥kOž=Ö§}k«Ñg}û—Ÿ•:·ýT£óÇ:uþW§^>Öé—¯Ÿþαžþžù^£E£3ßoô晼ùì±þÏ~}?GQ‡qßßQGtÆQgöÇPs*Í®¢Ò!ôK'”ÜJh᎞ +Jzr !t8’ÐÛÑ;b§jl€`‰ÿAü<ûËy%Ù»eäyæ óð]–Ÿöų¬e'¯u^νÞ%•êšúF×4ª[Z•×=݆zd 7QÏLôê…²ÞFñY­âW´êMµF}V¢6¨¯µí‡²Q»þܪw \ý.7hÍ{FïFkQû!(§ýМTn‡a¹pÃó44åˆF¢‚NuÔ ;Ž*ü.BŸ 1ÅèS4•tÇy:÷×eB)5±´ëÄ2*¡¬[Â:Ô}WÞc²Ñ”õ=¹©½¸ÄŠøÄ ñvª·}coÕDZ©Ï4ª/JÚŒúMG[ú£hë4“8k7(y;7xöjÎŽ!”wÈ\ïPjçÐy;‡Q•Ãç¥TŽH©¢T\PM9«uäÚ…F¡…»Ñh´hƒ£½c—Pã–ì·”¿tÿøeÔ„å蚘Š¢„4t(!ýÐ$.ãðd.óÈ£©Y>j…/‘:š¸ò¨:fws ìãhZ…N$¡Õèät´†š±öš‰rN£Y(÷ JÎãÎÎÎçÎÍ)0*3|$#è‘@2‚þdðÉà3“Ág&#ð!CÈ2„ŒGŸ %dê!#ôrÐSÿÈãÑ=>ü«”ÚZ[¬†u2xËà³E2xËà3“Áç -£A2øÀ[Ÿ… !CÈ2þgd„ýæ7HFèß šÉÀS@+F$2(E‰ S ¿-‘Èhw_ !CÈ2„ŒÇ† +ÿÿo<AF ªª² PÃæv‡%#tѰNÆS-üû¨È!CÈ2„ !£1dm4¡o±J!ñ@‡@2œ>ÍîuÐÏ-“aN3ö¢dð–!dB†!d4 ¡ûE’áóiØ;jkmX=¬“ºe:b‘Œçl3‚V “ s^hlž_l3d¼ÔvNà…—Ù !CÈ2„ !£ · U K†×먫S@Rc%ƒO·°cÅð« ¿qÓ™Œç‘±e°û‡-ƒjÌ[†á…Ÿ #Ú2(!CÈ2„ !#Ü~¤FÔdè:y¡ëš¢à—KW/_ŽÇ>n÷:Ç£zQ2&æ4 X1ê'ÜæðBÈ2„ !CȈLF¤©ŸŒÐÍ"ÒS ’AjÐjáb5 ˆŽµCÃψ›Û­¨*Èp:Õ -ã‰W&#sËxòU#cË  2(xažié$ãY*‰·ŒæqIB†!dBÆÃ ÃÊ[¢ cªaÀáß;v¿ ÅéÔ„ !CÈ2„ŒÿŠŒ¨>þ ¿Ðpè÷áÐhÓ€w„ !CÈ2„ŒÆ“a}˜Œ¨îÇö–¨È0Q0×Ü{GÈ2„ !CÈh rQ‘a=!CÈ2„ !ãñ!C’$I’Â&dH’$I $CFFFFF¦ž1É$I’¤ 0En`/ +endstream +endobj +585 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/TR2 /Default +>> +endobj +586 0 obj +[/ICCBased 587 0 R] +endobj +587 0 obj +<< +/N 3 +/Alternate /DeviceRGB +/Length 2575 +/Filter /FlateDecode +>> +stream +H‰œ–yTSwÇoÉž•°Ãc [€°5la‘QIBHØADED„ª•2ÖmtFOE.®c­Ö}êÒõ0êè8´׎8GNg¦Óïï÷9÷wïïÝß½÷ó '¥ªµÕ0 Ö ÏJŒÅb¤  + 2y­.-;!à’ÆK°ZÜ ü‹ž^i½"LÊÀ0ðÿ‰-×é @8(”µrœ;q®ª7èLöœy¥•&†Qëñq¶4±jž½ç|æ9ÚÄ +V³)gB£0ñiœWו8#©8wÕ©•õ8_Å٥ʨQãüÜ«QÊj@é&»A)/ÇÙgº>'K‚óÈtÕ;\ú” Ó¥$ÕºF½ZUnÀÜå˜(4TŒ%)ë«”ƒ0C&¯”阤Z£“i˜¿óœ8¦Úbx‘ƒE¡ÁÁBÑ;…ú¯›¿P¦ÞÎӓ̹žAü om?çW= +€x¯Íú·¶Ò-Œ¯Àòæ[›Ëû0ñ¾¾øÎ}ø¦y)7ta¾¾õõõ>j¥ÜÇTÐ7úŸ¿@ï¼ÏÇtÜ›ò`qÊ2™±Ê€™ê&¯®ª6ê±ZL®Ä„?â_øóyxg)Ë”z¥ÈçL­UáíÖ*ÔuµSkÿSeØO4?׸¸c¯¯Ø°.òò· åÒR´ ßÞô-•’2ð5ßáÞüÜÏ ú÷Sá>Ó£V­š‹“då`r£¾n~ÏôY &à+`œ;ÂA4ˆÉ 䀰ÈA9Ð=¨- t°lÃ`;»Á~pŒƒÁ ðGp| ®[`Lƒ‡`<¯ "A ˆ YA+äùCb(ЇR¡,¨*T2B-Ð +¨ꇆ¡Ðnè÷ÐQètº}MA ï —0Óal»Á¾°ŽSàx ¬‚kà&¸^Á£ð>ø0|>_ƒ'á‡ð,ÂG!"F$H:Rˆ”!z¤éF‘Qd?r 9‹\A&‘GÈ ”ˆrQ ¢áhš‹ÊÑ´íE‡Ñ]èaô4zBgÐ×Á–àE#H ‹*B=¡‹0HØIøˆp†p0MxJ$ùD1„˜D, V›‰½Ä­ÄÄãÄKÄ»ÄY‰dEò"EÒI2’ÔEÚBÚGúŒt™4MzN¦‘Èþär!YKî ’÷?%_&ß#¿¢°(®”0J:EAi¤ôQÆ(Ç()Ó”WT6U@ æP+¨íÔ!ê~êêmêæD ¥eÒÔ´å´!ÚïhŸÓ¦h/èº']B/¢éëèÒÓ¿¢?a0nŒhF!ÃÀXÇØÍ8ÅøšñÜŒkæc&5S˜µ™˜6»lö˜Iaº2c˜K™MÌAæ!æEæ#…寒°d¬VÖë(ëk–Íe‹Øél »—½‡}Ž}ŸCâ¸qâ9 +N'çÎ)Î].ÂuæJ¸rî +î÷ wšGä xR^¯‡÷[ÞoÆœchžgÞ`>bþ‰ù$á»ñ¥ü*~ÿ ÿ:ÿ¥…EŒ…ÒbÅ~‹ËÏ,m,£-•–Ý–,¯Y¾´Â¬â­*­6X[ݱF­=­3­ë­·YŸ±~dó ·‘ÛtÛ´¹i ÛzÚfÙ6Û~`{ÁvÖÎÞ.ÑNg·Åî”Ý#{¾}´}…ý€ý§ö¸‘j‡‡ÏþŠ™c1X6„Æfm“Ž;'_9 œr:œ8Ýq¦:‹ËœœO:ϸ8¸¤¹´¸ìu¹éJq»–»nv=ëúÌMà–ï¶ÊmÜí¾ÀR 4 ö +n»3Ü£ÜkÜGݯz=Ä•[=¾ô„=ƒ<Ë=GTB(É/ÙSòƒ,]6*›-•–¾W:#—È7Ë*¢ŠÊe¿ò^YDYÙ}U„j£êAyTù`ù#µD=¬þ¶"©b{ųÊôÊ+¬Ê¯: !kJ4Gµm¥ötµ}uCõ%—®K7YV³©fFŸ¢ßY Õ.©=bàá?SŒîƕƩºÈº‘ºçõyõ‡Ø Ú† žkï5%4ý¦m–7Ÿlqlio™Z³lG+ÔZÚz²Í¹­³mzyâò]íÔöÊö?uøuôw|¿"űN»ÎåwW&®ÜÛe֥ﺱ*|ÕöÕèjõê‰5k¶¬yÝ­èþ¢Ç¯g°ç‡^yïkEk‡Öþ¸®lÝD_pß¶õÄõÚõ×7DmØÕÏîoê¿»1mãál {àûMśΠnßLÝlÜ<9”úO¤[þ˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ +¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿ ÷„óû +endstream +endobj +578 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (ss_default2.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 588 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 315.00000000 256.00000000] +/Resources << +/ProcSet [ /PDF /ImageC ] +/XObject << +/Im1 589 0 R +>>/ExtGState << +/GS1 590 0 R +>>/ColorSpace << +/Cs6 591 0 R +>>>> +/Length 84 +/Filter /FlateDecode +>> +stream +H‰*ä2TÈTà2P025Õ3S064ѳ42VÐqM-ÍŠR¹Âò¸ô݃ Ò‹¹ +¹ *Œ €¦ ăœË¥ï™k¨à’Ï„¡4Ž +endstream +endobj +588 0 obj +<< +/CreationDate (D:20030406193454-04'00') +/ModDate (D:20030406193454-04'00') +/Producer (Acrobat Distiller 5.0.5 \(Windows\)) +/Creator (Corel PHOTO-PAINT 10) +/Title (ss_default2.ep$) +>> +endobj +589 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 525 +/Height 426 +/BitsPerComponent 8 +/ColorSpace 591 0 R +/Length 27292 +/Filter /FlateDecode +>> +stream +H‰ì—MoI€û€´´BÉ/€C¸pJ$NÀ Á/ÈŸs@ÑŠˆÃ*,Ù ËhµRV‰wÇŽÌ*ëÄÇv;ö|Úcí»ç£mÃ9‡¡ºkº§¦¾gººkìy[­êêš®ê·Þ®§ËùÑç‡>>q®= +˜ ™ÐÆh¿Wb¼_͘˜½ÛO1¡…ùЉ‰i ÇÄ8VÞG³Zì×(£ü^$’x“~á'ŸùšøñÆ•ëåïýjçû¿¯~÷7åïü²¤ƒssO‹;ÜÔãÆžÆG¨×¯æSØš ³ýš +ÍÉí«„·Ó©ö‹fø)ŒÇÄtÂÿbÓùés_¡&~ð»ãÿxvå{ü¶¥ƒóëÿ—dŠŸÍ9WEšÀލîmT÷6ößìo…¼cAmCö6hößòé6x-£²NQ­¬`gÌë·Á«.»«k{»+ûåì^y¹k +F»å5¥U.;¥¬”åÅ%šÂ ²LPöY }ÐÊÙ›=¬õ€'ÊNa1â§Æ—zå|XÎω4?ûÑžb¿ >èÖï½Q¢%2ì¯Hg=¯­ì]"V–3h +¬÷«ùqe=\€-pÂŒ›&lÅ9µîöw—1³Ó“³3A×KüòÎK‘&ŽkŸz1$ïS#)DÔr Ûµ£-ŠúÑ;Dí0àȧ~¸°¨tÁ§½šÃ7—‰Õì4šëýÞ¹sç­ê@oõp¶À 3nš°çtúªÔÖ¾¦'êÕu.õ«Ýru!ÒD³YA´šûˆn¹±‹¡Ê>îN?% ·Àç8psÛ4õw—‰µì Ê +ëý"M„/ÇCüÿúC'*£?¬‰áúú‡I ŒÝqr{Ðá„7MØŠsjÝ5ê[ÁÿÍðt3`£Gím„HíÖQö Á§íV•`¦YéÑÚõiî”)°>ZnÑnXM7ÏÒ:Ù¾4¬eŸ¡¬°Þo¨‰ž#Môj°&†ëkè&d0vÇÉí}tB‡fÜ4a+Ζ§ûxG å¾ë•7Ešð¼ÅiûÈóEœzU¯½â—Q´ýš@q`q…2Ö‡_&ÜÑ׸Qðš>áiÑß WýJµŒ`oÂý-õê&C³¾â

        }ƒ°=;=9;3áÃÝŠÊH"MœzÇ"úõÁ(ƒØw8ýšè+·*Nà TËe¯µƒ ôÑSþL·Á$ö•Ù¶,?ÝG~‡8<ÿæó +8—¸jŽpÐ~E» çá-çÖ­h7¡ä@Á4ò’Y–ô(j¦3Ze¿ìUª 9S¢1Ç‘)pÂ`MP¦‹U²†ª§Ú¤´ÐÇ;”a Vþ¾²¼F?ÎÆ§OIÓÍcGt51=A–ým…XggS¯Ë™Ï †«Œ¾rû(EÛ߃ô”Aï2H_ø¦0­‰ð£‹ÿ†¦ùÞa狲"Ž&”¦ú%wø´4ÑájB',¢¡rW×8«¢$>ššERž]Ü›h¶‘Ìõ¨i' ¥rE¥Ê:-Gü°¢ É‚4¡)rm7 ÐÚP äš8?oD e ‚²{~v,âì´Np„@Ñ +÷O½*ÂׇW%•Ñ%ØYD{ +Äi+ÐDøßk–0ä >%/Qå¨÷W’;›eyñ)Ê +î%ªSr$ܧ“üVÙo´›À{\&k°&ä#T>ûdÀ•Ï%¯áþ× ‹h ÔÏ©²(CØ‚$Ü1(Óx Sà„7M(Â,OÉKT~œOŸ‚|²ކ×ÜNSÑe!×D¯q«ÌjBù¾è¼;Ôû.º³äÃÊ˯DYá0‡äIå‹’²ßh7÷änÿH:Á]]c®Š’»qCN«2¤šÙ%º¡¦5”ÚÒNЄSš, Ã×ÄìôäìÌD'uM°» 숞)BMø5án"Òõj‹NEï ûÂê´-Þ¾å¯EYÁgô_ +å8©~ÉÝ„óÐ7ÒiŠøšÐYfÙçÒyXyAÞR? Ê=nd$rŸWQdÞ‡'Œ.þÑ­¨äêÚM[ Ù\pÛèÄÙøôi ÖÄôr„]M8Ä>¢[–j‚»›ˆóvpׇÔT=»ä'Mtð>‚D²›hT:eý™‚˜m*»ä5FHAÜE•t%²Y¢k»Ácˆ0ºwÅÙøôiÀ×D»‘C$ª §ÿÀšˆŽH"M`SDGrš`?ÏRce9#Ê +®&Dƒ¤åãPýšè”#DšP_:Á7¨ ù°ÍöÎöBÕ\Md:RM«+·Ü ­ad Oá°¤ á‚0Úš¸–Èn"ÄßM ­D´›ÀDŽèAh‚ÚM`lÄ0)V³ÓV²‚ê—« ìˆ85»^™ÕÄèp!4Æéß#p—}§7Á½z!+š°µ €&F™µìŒ•¬ úe5þãK#»Æé€Fg‘¿@"VrÞÖ‚šeֲϬdÕ/OÝ]G8a.tKš°³ ÄÒÄÛ}œ·Hq¸4]kÔ(HeâÀœµ+ýì„”/ë+þǃõ~ïHëQ¬ƒfÜ4a+ÎéôE~„H¼VÎ'P†Hm¯Ñj»æq—F½Ñ AåF-äà€ °GPñqNv}Ü÷¤ŒhœùçCr¤Ï¸iÂzÀ“ío÷³qRÃlœÔ71ný]ãxK¤‰Z½º_ÝÙ­”1åb©\È•J¹bi»66ºoúyQ,¬òë¥üšO! ÿ +Q̯Ðä²ÅÜ2¶pÆì°ð¤)l/s/IJyTóQÊ¿,—0•òòAå•HÛù­õ׫ٕ%ÌÒÒâ‹—ó‹/æ ‹Ï1ó > ßüÇg~vaþ™Œ¹iÌ|ÀÜ\f~îk>ßN±yJ2÷ü fþÛ'‹óO—^|…YÍÎl¾}.ÒÄçÿ¾ÿÏÏî}úÉG˜OîßýÛǾÿñŸ€Ë +ZçÑjÿéß?ÂüëE.iâË/0¶xÍ`Dšèt:ÖÇ€@ h +Ð@Bi⃟ƒ&€ÄYË>µ>@h ñ5q³â\iÂu]Tî¼kÆMŒ8  €D©‰ÌÔä½»·as1VÄ\%ÐÏåwMÁqœ„î šH”š(ld3SÏÛ®õ¡i¡Ü4aÐJM(~Nl%yêYm0½¹ùL~Í’ $åè'¢úD‚ß4¶@…q °ˆÂ%zpÑ)Un¥NÜ$š`ã/šhQ wúSÉ37ÉÙ’©dïÃÞS90ù‹uľzì`佃&¥&\×EåÎ{¾5ä)*o`Éê!Zö=Áú#Yô’ +¾X’0ɲ§ÊPH4¡7MHæQta‘L +wjDs¤œ;‘€t&TùE1Ü0@€JMd¦&ïݽ-Ú\ˆ²—ÝADõfǯ¯ v }vrï“Hðµw iB²’‡âBh‚ÚAhΣÎnbhMpï3Ćð‚h´òYOC…lfêñyÛåÿœÉ|ò’Ç[ ï&D«µqP®ÿÊöæƒ/ÕDœ ±añT‹?ÃQÓ;_Ü©—JgRä)ÍN +[O6PÚd <‘ `¸Sù,€§¡ ÅÏ;Yîé Q:ˆ>›•k U-5ìêd2øL”Daä®Z……õ…2Pl¥hYf%›\Twì¼ÈŸQôtšS)ÙMpgMÔ€L{Q3Íi•h‚{sî佃&¥&\×EåÎ{¾5Zù Ú!"…|Ny7a$tfÇl|c¥³›úcÒx–¹¡Nª$ýõŒ-JMd¦&ïݽ-Ú\èy‰i‚$‰%q[§ÿ0œ„ÂBÝjè;›ÒõŒìŽÃÈÔĹ•©È{ñvƒšH”š(ld3SÏÛ®¾ÐD +¤óÊ\ˆà¤°›ðÂõßú Lj!@¢ÔG® À:  €„ÒÄ•ë´&\×EåÎû¸ÖÙ¯å#F6nq¸ÄšÙùr‚C³ñˆ¿@Êøš¸Qq®=i"35yïîíø›‹‘}}FüÙ¸ÅákÂí)ÓÛˆ¿@Ê(5QØÈf¦Ÿ·]þωƒ¬¤®Rå@yAVRW©rza׈Ãø1Q†‚Û’+ncM”šMYÃLTs„Êé“Ô$”äT&p äë&¹Êž²ñO†ŠRÜJŸÔiúßZòE#¹Å$fÜäñ:…‚“4!éŽ;B‘à†¡Î”éÌšñÙ.âœÊc¥&\×EåÎÿÙ/›ß(’3÷!(R¤(Šr‰à/Hä’H9E‘,EŠò'äL”«ÿ.VäCùXËH‰øØŒ3ڬ̆ >bÖËÚfw0kÌÁƒW€a&¯]ž¦¦?Þn÷tW3Ï£ŸZ5==Ýå®r=õn%[#‰š¨VÆGŽ +ÅE¸˜l¸×DÊõ­,M¸o‰k~`V.èò½¥ÑDâð:–oÇ.òþ˜ããâN¾ÍP\D¾ü|ßy¯“¨‰ÚÜTµrj}­ýóÐ4 ,}‘[ ÏóðFÔn»w„û÷·„êu–²ÏüÞ5yÛÀã +£ ‘Ó„=L9Nõ8M&†>mÂÛ¥‡h‚ØIÔDÂÏ£–»|:ÖÝ}"5QÜkœž¾Øå_ç@ ‘šÈüŠºyŸÙ4ÑÍß›o”õ¹¸'Ú…>M;‰š¨×ëÒnmÅZóȭWyÜ0°7..â“l£Ë +K!½£‰4½-´‡zÜk¢U÷,4Aì$j¢Z96œ²¸È§K”þŠôøŽÈ`ŠLúe¹hMäò·”þ>‹ š Î’¨‰ÚÜTµrj}­^zWIßÄ&Hæ  b'QÄM†B8îÀ_þôû4ÉåYÅi"ÇNrб“¨‰z½.íÖÖ(*F +“¡8–Åå Õ¥ÅOõôŽ&"å5>ö‡ ç'äØß¦ï(rßc  b' ‰}‡š¨VÆGŽ S\ÑÁRTlY¸é‰hâQ½&¹wgÆÏ~|Òo˱G4a¼pþÜ?ª'ü£œ;\¿váÃÓ-ZiVéBKB¹mSM|ÓÖÄXœ&jsSÕÊ©õµúžnërœ!=²Û4ŽhŽ5‡ŽÚ ÈÂÍË4š°!±Ïô‚&¤K•3cß~Ü8B2*ãÕœl. ùYšì8J&'G—&‹Õ„ÑßðA$÷$j"CŠÛGå³°”ÞÉ(GdáX¶#üôH5!=¹:}VbzõÏʸôùóÏ>‘œûäŒ)( kX’íå9d +ª ÒIÔD½^—vk+­5dŠÌa¢YL®\þW¹¦ØqĨ¢ c +gE\5qáüÄÇý­ª éÏÂüE‰˜Â8âÎÒÕ[7®H|S¸ÓDÛFþÑ6Õé$j¢Z96œ²¸0Ž0šˆÄýh–Žp¾˜=_®)v51Ù–ÂîF°£í² °« ߦ-š(½šØîÌòŒqDuâ„hBñðÁÂ×÷ç%ÆÒ½Ó'?(zLßU–)LÌGßT¤?’¨‰ÚÜTµrj}­žx«]G,5)Â)Eâ1Bddm)ÑAMøv°}Ñ.(\V¦v°}Ñ Õ„¯ iÌ}~ÎhBºgLákB âHÍf‡ š²pPMDÚM"’¨‰ô9:ºýÏ—5!+IdÌòÒCšÔeh¯ìjÂKׄ‰ ™D4áwX†R”!¥{¼oUÍ«‰I1d;¢V«ù_)?÷rY!† Šr÷E1ŽB$—4±ÿÐÍ€&ª•ñ‘cÃ]D‰,1ïdÑŽ„ËÅ'¬ ?òU¾+pfM4vL!SزG8®…ƒËGGf(ÄÎI4Arȶ&Ž,{ŽÇi¢67U­œZ_«—ÞÕþŽ‘…Ç(É÷YÝhÂÄÈÂı !h‚ØIÔ!¹§{MBƒ&ˆ4A M;h‚š vÐ!$4Aì(š€ÁM;qš(½cÄqÊ^™ i¨š(»wànÙ@>[_!„?­šxõòÅÇˋ‹3³³—HŸeaazuõ¦ ±¯‰ßýö7Þ÷ÿ¸=!Ÿ”šXY¹±pýÓ’ù)òžä¿iRûâò—×.Ï_»,CÜ¡‰|è<¾“±vc¯‹ÏÞïv`ïÉv·¸>gø‰Ö±ØdyŸq}Δ,}βgTÎwË0¥3ÌLÓ ãèŒo7~øçôš˜Ÿ¿²º²¸úUmåîÂý{_¦‰\LJLÊaúêÎüòÍ™[7>“!îÐÄÎøÎÏo}÷×w¿ý‹›ßúÙb\¶§MdßÎ3Gâsx9&Ùžs7¥ù¾ wËÒ¸—¦$×÷™a¬s»åüçäøµ?½æýèßÛ²H­‰ÙÙKOžËææs\âšx2kâÕË./.ÎÌÎ^"}©#Ä2Ä-40ðt£‰=Åó¼’ÿTˆA†&nÔZh`àA€&@¡CÑÄ ‚&@Mš4hР P@€&@M@zMìû š8ÞiâÈmïÀXH»î@} š4hР P@€&@Mš4hФ×ÄþCh`àx§‰Ã»F@ƒš4hР P@€&@Mš…M^F}š4é5±ïÐ"š4:51†&4 +hÐ(  @ €&M€š4 +hÐ(  H¯‰ýí9€&‡wš8²ì8Ž&4 +eiÂkcŸÑÛŸ„?~‚˜R‚&@¡MÄY@¹ lå4±'Ð(¸×DxõŽ[çã¾¼IøJ4‘4 +Éš8Уš°‰ûaøƒ&@áýÕDæ6H¯‰}h`ðèÐÄÁ±r5áïümÿ2»4ˆ+%"„&Ð(¸×D+fïrU× 4¡€&@¡M´âk½­©‰ðS š…²4‰½¤³¼;M€BOiJM€š4 +½¯ üR4h,MÜöGš÷šð,ünø'õëÃ÷,úuõ%hÊ­&âÔ w}ø#¤M€B’&ääX/k"p74‘4 +ï©&lZ¢;Ð(”¢ {…o…D8ßM}i@ à^á%=P„­´B¢‰<)A ðN‡—KÔ„Û?:@ à^­P§ ôá4 +¥hz +4 +hÐ(  @ €&M€š4 +š8àBž…Ý“Àɸoãî8_Üë?Ð(¤×Äþü4á?]9y™òmø<¤M€B¹šhÅ/ïhÂhzG6‘—Å}‹&ºM€BïhB9“þz4‘4 +=¢‰–U/¤ü¸C *)ê}õ#h,MìÁ¥&”õ|¯K=ÕDfÐ(”¢‰4{~4á 4 +î5‘žD•.ÞëýÁ€&@¡—5n@ €&M€‚KM@Ï‚& gš ïcZšØ&àÿì—_l“ׇ}—“vÓ^0-[Ôi»j‘&í¦­´ÝMÚÅTEÑ”ªC먶1¦]t«v“4¥¥lP¦ª04U˜v(´™¨h†µJÌ(Pþ,a$ ÿ<¥6àáÇ6†Dgïð0ßù¾“Ïÿ>;œçÑOÖç÷¼çÔqÊyò‚}  bˆBÖƒ&ˆ! +MXÏ2šxêBd š°7 +MXš †(4`=MÑ„\ä¡ š'LÄ…&¬MCš°žûš¸g„º5¹‹ëm½ÇÕïÚehÖOòŸ0ï"hö4Å¡£§eUz ¾çøÐˆ&þ“½.Žøä“þ:r`ßÐ_†bïW†‡‡‡ÞݵùåòãDùûªµLÖš&$£gz^Ú­›âàøÉ¾þ¨¬Öqf#šÈ\OË!ŽØ¹óÍ?üþõ­¯¿F\Ù¶mÛöm/ÿöÅŸ¯{®'òÈQ4`!aj¢TÌ‹ djX¿9:4:>;7;ŸØ°%&©ËjÓ5áŠ\n¤Ö¼<ð›_ÿê§Ï=ûÌÿ4ñÄ94`aj¢’d*‹'d|èî”Wy–J«QÕD›¿î•š€ð5ÑÆ ‰ZA€&Àš4\šXýø4š° 4Є¯‰d*‹'úú£Ý½ƒò*ÏRA š€05Q*æG'Îtõ l|ã½øñsùBqlrfÓŽ©H]VVM¬\=¡ Sâ‚gû÷~xìl©T,—oݾ]^\¼³´´4vbfÝ+1Y5ìD"žo#œתŸ&¦¦¦ökH±éßó +5š€Ð4‘L¥ejøàÈ©|>W(äuSȪôÔ¤ gѯâ|Öïj‘Â5Š,~rf%zÅU\¶ßù¶Ößc‹@š&bñÄ [‡²ÙL.—Mßø|÷‰]Ýouï:¾óFþßSlÚ1"=M¸h©&*SƲߞŸüŠú’ë#uŽ *  M}ýÑ÷?Jd2WÅ{ξý}_ûÊÞ/ñ_Ø•ØY™)Æ&g¤ÇpBõÚ×êÖDEžšXÖúi~.ð\ò<¤Ã5±ê‰shÀ6š¸ÐRMt÷^ºréÚµÏÅßûø»ß>òô·³+ÚõØ[_-—o‰)ò…¢ô„¬ uo çkSÔ§ gôCÐt¡iB&…áø±Tê_bŠýs±žéïçÈÓ_ß÷Øî»J¥¢˜"~ü\S¦‰ +Õ¢ó­ß%\Ÿ)œ&ЬBÓD,žxþÕwæç¯ˆ)’é‹b +™)öœ};}ãóB!/¦ØøÆ{Òc>Äyç›UâÃ%l6… o1hÂ9/T+Îg—/œÃ…kµ½  MÉTº«g`ÿá#SÈL‘É\Íf3¹\6ŸÏ}x쬬JO»4¡Œ¦2P¸‡úèAT@š&$£gz÷gÝ9õlÿ^Y­ãÌš²ì%ìi +ƒ&”ÏtàÙä×& ÓS¥b^\ SÃó¯¾3?véÊ¥÷?J¼°uH*R—Õ¶kBy™B0hB§Ó®úFpibõãhÀ:š˜kµ&*I¦Ò±x¢¯?ÚÝ;(¯ò,•V "¸&Ô½ñ¡ÊÔ]Zú[èXЄ¯‰6æaú;?Р 0€& MœG¶&M€4h   @`@ÓÄ4š°4±¦NMÈ¥±RÒæ¯{¥& )šX)Aµ‚&M€4MÑDä.~•ȃ¸Šæ]AN ÞY“&¤ùaMM_š°œVkÂó×ûjÂsã²õiš4FдZÕç*kÂpšh..M¬BöáÐÄ…ŠêÖIJ"hî4&BM@pM¬Z;Óø4áW1ëÆÙf>Íl4Q+h–ÑÄ“¢‰= jÂ<5„4Q+hš¨ } +@+4MÑDçˆM44!ÿl«ÐêϳìǸêêlõçïïê£EšèÌ ‰ZAµÞlí½ ëÖDÀS¬DÐDƒøýUV©»Þª•ög•K«—Ó„~é?~õÁóKpà·]y}óú³á¿nî4|¿üí×ìùs™4׳ߧ5œðóGÄó@ÃOáùÁ`¥p_OÍEÖ ‰šñû§Wýg빪¿íLׄë­þµ<¡¦ïÓ¯Y¿Äš{lãêok:¿&;–ýuœà÷ÓAçƒ&þË~ÙÆFqœq|ÎÄoDFCÄXÁÔ¢)Ø&08Á† òæðbœ&P +¢UQEÕ/•ª~h*µŠ¢Tª*E¡!A´!*mBIˆhU’˜б9¿Æ`Îwç³ÁöuÖs^λ3ÏÎÞî­wÍó×_§Ù¹yyvvçùíXTbiÍ+ŸU¦0!JÅÑ¡Ÿ»Q0WHæ´Är© &¬ k}À„c€Ëp¸—è€`=B”W„˜°(ý§ ª¨`ûxh§XÇ„æ~­cBÔÝ"&4žWò)s„»såL¡"&F¶oœ>]%[0´ÑK³b†©[Ô®‚”Á„üD¢hEYdÆ7E™p0p„’B¹_ˆ ‹ÒïqÍÑ':ÑG¦ % 8'k¾œÌiÜôe¸ÔšHdŠäÔ7ƒïh)ƒþF4eÃeÔ—0¬Ý…>`n_”Ë…˜°(øµ÷ú¦Ð`"Ý & àœÌâÝ¥N`¹L­v}M­r@ 0 Å‘áõáfË$ó~XÉx¹7LdýÅp‰\ÓLL0‘^tÉ:&D¤”&3I2&àw2þU¶€!&€é’-³˜pLžØ\Öõܦ^†˜€;zHžØõ¶c …í˜ÐØ^LpŸoò01, +×b…B9&'1!cÄ·åp}r &P(”c˜pƒ½‹ Ã6%¯c‚ j¸A¡<,ÄDÂ%Mj‚Ïúó‰“hLÇäuL¨BR P 1aE2ÉÇÓ Ê,&¸hÓŸ›¢ºeÍô#ijUÓhÏ…BÉ1aQÜMÛ'uLLdÎþ¯)Lhʦ0w¿¨! +… 1‘ly:Ù‹‰¨ áÖ˜Ž*†# P(!&P€lÇDT«¹‡2M¥Ün{µÆðô‡B¡4²4ixÅüÜ^“ELp²@™Óü—¨…B +O(@¶Ÿ&D¹]ÔXt¾Ð ·Ú P(Xˆ  {1|Ì'ð©…rFò˜È(4ÀûHÓ—ã/EmÈPé+ gu/#&ÌJƒ‰t1&4O0*ø’o/ê.b…rF01ÿ2É=¢ÃÄ0!_ Ïb8b¬ä1á¼(”3² Ü/y+D*õ‚j b¬܌  +åŒlÇÀíÂPˆï¥?q &Ì +1B¡ìÅD2ˆ` +š¨…˜@¡P¶`‚›Ò ¿ùã³:·^TÓ¨AL˜Œ 4ý0ØLÈ;.2C±²)LÐÆ#Õ¶`F?]ÛD*[|‹ln'ÕwÈÖÎQÛ1ïÅùžo§Öd[ŸïÕjR¹-ö°?·zóÀ›C_ê&ä2H6t‘ʈbZX"«C±_VP½ú.©èP~Ù¿AÅK;´FL tâc¢òÙÔÉ~GU¿Üň¶³'æÝ½Ì£vÝ×;eg?5m™’íu§n¿¿ý°ÙM×r»ö¢}­òv0õåcGjUdûiïÝþÛ@ê‹1d,iCL ôÒa¢AÅ„¯:Lé²­‡:ˆÝ½é{ûï9m_¿êQû£1Á©þѺÎ_ä¯?“µè“±eŸ+ÿÇøò“ãÊNf—š½ä³ÇÊOe•Ÿ]þyFÙ™´çNZtÚ·è ™*gåÉšºÛ´¯õA(_ÖT÷n;|çâùeùï}7ëhÁØ +Ç)¤`ÜѢ싲?*|ìxAÖ_fŽþø{Çg¤Ïõñw|M#Gä´}[CI;_àiÅ“” ìÓW ˆý‹HyØSÚº[îôåW5d¿Ø0i]CîFÞækÓ·4NÛ|í©*n•ÿÉ*ÿ¤­-Wµdoi³©%³²õ‘µ­¾•~RþMÎÊ¿ÑÝgË ôpñÕ²üss³Ï-œTS–[³4¯féôš%ÓÎ/}ê’ܯ˟¬-ŸTûüãK³kKÆ\,ά}ö‘ ¾/fä(ƒ˜ÀDÝÃDEÅûÔÎç^ À;J(˜Øu?mï=Ê2¨Ã.%Äþ‘Ñèä™î 1«nOÞÔ‘ÿÊÝY;îÎÞxfw pwgák3÷vÎx½3ïõ`ÎÞàÄ×BÙ;CYÛCéÕÁ”wÉ +?™w2:ˆ ‹ƒPFPÓBÝœ1ÿ[<¹¾"ÿêf5¬›Ý¸á™Æu…ë ¯­Ÿé_7£yM^óªœ–Š‰-ßÏnYœÕ¼0½qnÊ…YäÏOeʈxLLxK‹‰)#L#€j~¶}ä!˜˜rVÅÙÚII¡bB!Åî^ÀÔ©¤têÔc{ ª§Ò"¡' Æ\ðíî§fïÿè'~AM ©¯iþÆW²ufñ‰ôµWãwŸÚFc:BƲ¯b½JÛrKß^T¦3 ÞO¯lb—™ågÙÔ¢¹¨3V|£„½-¢L½-BË´F§¨,š‹ ®Œ¹ú’Ú2­ºC](¶h´HS@ðž¶ò…ìÓ4~}0Â]¡â}¡’á’]ó.>žs(\ôF×ÓoDòErF&îŒÝÓýèŽHju(eM«¯äT”¬B1±¹‡êŒo\žwmmaÓ¦âæª’æ­%ÍUó[ªŠ[ªæ´n)º¾ééòn®Í¹¹jâÍÆÞ({´¹$õâì”cÓ}Q† ʈ%m +& +Ï>l˜ˆgD…X¶§ß$ÉvR ÁDîȼz²ü:©¼Å0AQ !Ei)9\ZÚÐP]ZZJϪՃƒoç=jöòSÑ$öæ±û´ðó_þ3cE-«ÌxîK5€»]ý§jïeÎz/³äSß«=ÔjGv©úgv_n °oúßý¤-cÙyM{Qù/z»{zOüýÊSù7îÍE}Þ¯ü»çà‰´õM?þ“r _{#sÎ_Õ2óŠæºp5Â.ÿ}‰Ñ§–Vþúd¯ºPlÑ~óû±{äÞëf_Èî7]ÿ'^ +ÎÜš·/ôü¡0w‹Íx³{ÚO»§êžðöË(ªëŒãwŒ +›LLg¨Ž”,F0"¤– +FqÁ ,²<ìŠA^ +"T| »hÓ4ÒÇ´LêŒSfl ÑÄIš nÁiF "ˆeû¼ (òØû”ÛïìËåîÝéX8ó÷Îw÷ûÇ=ßï~Eì‚}¬lmÞ6rÎz'(ëDØÄNÒˆTŒï‹ôª·ŒiëLÔå‹0bÉÜ`É ·¼Ff¼mUv¤ùu¦.ƒqæ«ÓQ Ì +Ysð¼Ï–ÏAN€ p+„ÝŒÂ0ë±'/Ù„9Yø1Ošp™È-½+BrÄ™«)i˜€/ +ÂH£Qh4*µZAÈc˜P£z°„P’=+Aø¦ëï sö$VÛŠ2äõo² ÏÁ0˜zÜ×`AäÜ;8ÜÑól7å]B=–ýÀæ•}zˆxÔÛÇæý¥º-äp½þž®wfCÞ†Ád8‹…ÕK¡WÎV7ºGÖWÕ¡» ÑaåÜ}+ x¾psôdþ ¾Ó?ä»x €IQ$›ŸÕôÎß+½?8ßqˆŠ>&áŽ3>GY¯ö‡Eìö3/ïµ½”JÎÿ‡0!ídKUFoÒÐáZ:DCiÞ ÌŠ¤ôÉ60Ú6yR‚æ¬h>º%{™N¾bÍêÜÀCAaÙørsÈKçWÎç0&àâ&B Dàå…‰I6IL¸H쎘p¶r’#SØÆaâG×ì˜0ÉDÚ=!)¹\×&_UQ1† ­–Ðj@ +/즱 ÑßC‰’þ†'ØœnÊf} «©Ïo¢ô¨»Ò& ùºÂ)^8ßBjb ×OÄæ‘á,(çôHþî?ý² ó8:‡‹‹„ö‰Ç•Œ5Ƭhe‡ÀÎþx$"Э‹èÝ +Å;”œÕ4Îß'£?¬ÈuŒŠÓÒ’W, ”ñ=ÂÊK˜ÅEŒG³0ÇöjºõÅ:˜ræ$®œŽÑÒ‘:BC‡jè`ÀĨ˜;IîÑãcÜfΊ²ì‹³ìç7@fG™¡ÖŒ`~¤#~±5ÖùðÎúWϼˆœ 0#Þj%ü¾œQ˜˜ªjB˜®§ +¢W&øÖ3ÇDh‹f"¥ “ò[e¥ºR§€à¬a“‚§þñ×4ÿò_éàyö+#<µjâì8p‹¾££·³¯ô,úFêì²á®pŠW5ì8ˆ%\?[¨ªkƒœh˜nð›ÃÅņO2®ã Ìÿ >®†;Ý¢§®Ž„YÇ¿ÚÅæÿ_ÈσàüWîµm+Ç·ž-&_ ‚ê E+)ÎB¤Z‰´9ĘÐèÕÐ8`b<#àÝS_Øpíá.”Vtøjp‚ÇÙ⮸æ8…ÕcÏÛÀ·M7¯*4ƒ©ž° ñƒœà& +}ê»âÅ’±²?ìÃ!^)´ó]œÝìè¿Å<„ X†÷à"V}Ûî‚ÝŽ4‹ßÂ%´aVô'C,؆äæg5‚ó=hK}Nÿ5“þ>Jò‰åtdø£Tøaj]1µú å_@-ßG½‘KËsè¥Ù”ONŸO†eqÌ8L@×…˜;QA`ÓC­Å©Ö’të¡tò`ª¥ Ñœ'ºï&ÕrÓÖ7Œ±r£r©~«Ïí->Õk#'oßAŒn@˜€jbÁñ™ƒ‰I6Ç\ý¤¯OáfžQ“ÆÄ–V{Aa†lï :ê‹VA‰1ˆ/  gOþnµÈU²§J{Z3ãèØþèk”–îÜÇË„S¼j[`PWg‘ùýuîÖVq»„=K®Ç’]¹X#9^u]FÝ•¶ù1M5·X‘ ßöîŠ+"ÿ‘‹}>©À;øh +Îê©ÿ#6¡Ô§˜Œß°ê˜ï1I'˜¸R:ò0^L­+¤VçÛò¨7s¨eYÔÒ½”Oµ"»oÅÓ’˜aB t]8Y±“#Ó†9s³õ¨ÚZšžÅ;Éü$þšÓÖñ¶A¹Ì³Ô ôi_Ñ»âÓµK8Àyª&f&p5ñÔÅ4câ‚§˜H2¢ß0`B.—ÄDuõØ2`(™“Þ„u·à¬NŒ¦z÷µÿ$9¾Š{ûØG«ÇIe?øVi?nRÜm½w½¡{ž²…_ƒ¢õ=;ï³BL8®‘¯o„ÁOÎܘ«jûð›Ènh´ÊVý]ä‚)ErO¡Súõ]CÎjVÓ&Ξá³ÏæþÍü-»ë}fûI&¾ŒÞr„Þðs*¬ +ηý8Z™C½™E-ßKùeSþ9}~&ÏX1&x'½³b'Ê1Lt”gwžÌí(Ë´–ìâ×›vo0¥‡S‚ùCÜrC¼_»Êÿ–ÒïÜZOc—3œ=ögÔžËj"ø:Ò€0‘¨G¿á$„Z¡V+þiÕò›7ãºJuAõPe¥1b9";#àuHe¥U½üFø«dþÿ²_îAQ]g?˜QûÇ©Ó3­c5ejFGÅh|„À"EP𭵟h4$Œibœ1SÑjbªÅ¤é•â É‚ŠŠû~/»{ïî²€ô;œårÙ—ç.îùæ7wÎ={îÙû:ßï~––^G× +rFÂxøR4¤JÒ sB§ë`xã¶ŸT=™¥hÃÖ© ¿ºÎ/OçÐoˆv}ž*‡„å#¸ÿ‘{,9%¶Ÿá$¿ú¸må‡ÖöZ#wYo³„å±³rÙÐ LðzfZ35‹–ž“ešš&›ñ~vî&éuÍ:OÒ¥ ùºHÍ¡ÍÑ` +n°,3Rºf±49L²r–8.”ëGOkˆ~§&rêÅYð$à`j%ÖÄÛç¼hb¬gMïj·»®m.zéé¨Á­&x»CpZ}Ý¢‡&~õ +¾…æ&êPT#.( ç'ª&âb/1X#Ê‹0èÃú.*B'‚& + +&ºj‚By½½ß²ã Ûî3¶MŸÙÖÛRŽYãZcöYÀ‹¶±óóÁÌ»9Lh63=› YÏg§®–:2¼»Iz]³Î“tiB‘­-Þ¡ýx·æè&ëýŸpO^¼bCL§)I“çƒ)$ñïB¿ùû‹â؆˜àš?»Ó„›jâúÍ™AÑ„Û$ß«&®¿­&FDÒgŠNY8ê j Ð*(£š °‚V|h9r¾¥ðbKÁYœä¡XsštÔeÅ~Ëò½–ðÝì²ÝìÂíì¼-ì¬<ð…iJªdü’ï;xšÐ$]šPn^¡ÿüˆáL¡îT˜j +Õ_Ö(·')òã¹È7,—e†Ë2—IÓJSæIg5Æ…Š"¦\øÓøŽ€× ïᬉÿ¢9÷Ñâ'(æJh@ R”¤@I¦#€,Rºd†+ +üð’T<€¯ j +)žˆiÀ +J/²–|×RzÍy~ç—¶¼RÛ†S¶Ì¿ÙÒ?²®>aM-´®‚lÈýWKÄË‚mìÌÓädɸEåpìàL_tšP¤7ÿ£Äx¡d¡-Þ©9–§>¸Aµ/S¹']µ{µjWªrÛ*åæxyn´l]„4mASüLѲÉçgŒÃ“̼‡!šxûÜPk‚Â5átÕİ…[MŒz¿k‚gŠ T5ZÝ)‚® #x šHT9Áׄϳ e„âëü/\[OÛŠ.µœü¶åà×¶-§m9%Þ­E8½'·&³Æ¶Ä´Dí·,ÝkéëM“%Á‰·eÚÖÁ™4…5¡-Üj8[Ô|ô ¦p‹úPŽz_¦ª ¡Ü‘¬Ü‘¤Ü¯È‹“çDÉ2—BAÑ;½zѤ«áÁ2µ;"¤kâ­òaЄN!¨&†'zhâ­Ï±&æß ŠpÖè!]ã„£Ÿ˜× +gYøü£Ýoñy*ög|ÿ’ñ±ª^Öž_jK9n=`‰ÜcY²“}o+»p;;73{fF6¯c&¯aÞ\e]Û(zn‚cg’(1h"£Xaoª×ËWíJQlŠ•¯‹”e,‘¦¾'M[(Mž Hg⸘˜àÆÈÉõï¿Yj¨ejÀަßtM¸~ÿ»vzª/¼5pM@[©|QW÷ ªê¦@jkïH¥Oɵ‡¬»ýÚãF¼êN n5Öê88etù‚W\p•…òÚ1:A–ñ‰F¦kíëçÇt’“šÑqVŽÆ¦€â¢Ï“j=û¾£šML¹†~wûrp« ¿‚Ó„Xü¤¶¦ò ªÀíÇ?ßzT}KT} ìdM,}ŠÂ8áNÝvÈ2uÓS(Eï QKñŒŠBéäŒè†Ô§¤Ì‰j‚"ë´Œ£®›ÅO0 j0óDhÎ} 0ÐGM —š‰þ'×I›‹j% áÐôRôâéƒgO†úû(¬k‚Øç"ˆQÙFÂ9¬'ð¯™L7éF +…2„¤i1©š Tõ¨U*À!âÂ==âб4À`ŠñeKûQM8áÿš¨ªº©×ËtZ) ×2/ÀºQ.}&n¨]Qb¨#À üÚÁ¡†\ûØÍ¯P~ûyiÖë$ Ò9fÓ«±yŽ‘JŸÊ~Eq ¹9d¹‘µFZg•ÞB>Ì‚RX”lB Û•&Øuô¤è@1 [è‰U£ ©pÁ#`Š9õƒ¢ ¿…¯ £QƒÐ‚ѨöN³A©Q5É$O\*ù£ ˆjø ³–5@¶ÿåÎà×û1¿=‚ù}aÇŠº 9é€ßI¡P†X}þ M)tòwÉBæ «›Û f4[Dri€hÂdÒò4¡é´†ÇhnVi5¹ä9ÕÜF0¦€r€sy CŽc#Ì*ÆÌ9…™Wâ2€â/÷âó§ãϸÞ+²¹­'ðâí ‘ ¬ñ1Ùmhž…Tp¹4@4a6wkÂdÒx + +V¢öÐD/œ²+×Éßòuïö'¿Õ…? ¾@‹Ÿ`–Õ9ˆjD1M(AŠ’d”ªFI*” @‰*ÜHì‚Ô³÷è)‰WRÜãü +õ|©–dx®èlÈ:°ÛÙ.A‹¤hà]î_¤G8åRš‰Á×Ãè…ÀzT)«wÒ?©zéñþ«k~ö¹#Üjb}VòÆœ´M¹k(J€ãI¿àib„ÒSzÀlÖ ÁdÒêu2¥ìÅ`i“ÈéùÜ®šøèxÁÙ/ŠÏŸ+ +…BéÖÄÜz4ÁY>?½^ÑËê:@ •…  0èe*ù@5Á×ñ~"'M¤$ÅRMP(·xÒ‘ÈHäBMxšÀ•òPPôr•ü¥“&ø9¿OÕ„§ÿ_Müýtñ­Ÿ¾k¨¿¯’?òùC¤P(~Bÿ4qïÑãO/ý¸óÓK}åÄ×å7ª~†‹â4a±4sšex$ÒlP¨ ©&øf²K5AñOü|™S†~hâúªs×ï¾”k:ú*½ Ž…†ú¢xš0²,Ð,†14”jE£wM¸M¶½þêŸPMänÅ%ŸŸÃp^£ÿ/sú‡ !šxü°âÊå2ƒFAvõ¯fÆÒ—‡ 3 õEñ4aêÄ(0…±Y¥Q:k‚ /É–jâõ&2 ÿý™Ó‡8lô£š€¢Òõ­@è@¯pƒa†¡¾(N6Ë€ÍÆxÇj5›ZZÊׄÀdëç:èU'Nœ(++«­­5mmmýÎCü‡ë«ÿ „ ÿF·Ë¼O1ÔË|€HŽM( +üÔ[»þÿþð5a·[8M´´°ò` +Ƭ7hå}ÕÄÈ…Ü(jâ¹Äv­Âøï;¦ò;fW*Ùo+™o*Ì—o›žJð-ÿáúê!æ&"„ÏÏÜ·ÑÄ•Ëg ïäv…Tnû‡íýák¢­­…;ÖV[¯Øí,cÖQM 0E²̵{-åU­?TÙò‡­W´~sÏ~ñNË?+­±;†F}ýß@Ö„—/+Owxiâ•×ð¢ ïw¦Oáó›ã!šxü°âÊå2ƒFáúþ8…“À!ÆD›H”Äùc‡‚LŒR„%ÛØO’(0&Þ¾}úâ…öùóúÁACRÛÛ›p Üh)LDP®¡J×µØÔè‚™Ÿ3¡\ß.ïß)nY¡aÂU¿bLx(}Ì$/ó]m;=W`on‚ r†ÛÁMPËÄ\DÞ²¦ÂG É`B×õæªGOçÏ)ŸüÚ.^þØgÉLm0&àøÝ»•¥¥JµúHRà#€õÃr{ 0p€0A}þd  +‚Ÿx¼…zRkêÑbãÒå+P®aW(ïç‹ÛTiÔ«@úutTMv,Ñ2y.ÈG¡Þ3™Œ|5ÏMˆ7ÿ’DóÿÜoÄËêaMã’ &ò¹þÞžnüמ?$#ŽÏœ !FL¨ ;&ìP w‹;“‹&Ôj¤ÁªºWÙ¿WÚ´ønÂÏ+¹í7u˜@8^JÞÜo†ÛÓM¸ÅÏP$ŠvLü† m¦Ïe××ôº-ˆDâ’"Là ‡P˜p1bbhj»¨ \«O*vÅ)ËbÂí[¹í7u˜¨»7á¹ jNÜúÁlå&˜t<@Ô‰RæjNÂÓ&~¿Üñ›ð0A‰—?ˆ§õ5/¨ oVÅt°Êg†·[Ø1aÞCZ¡ab¸¼SZ:ÙÏÕNêöHÅÞ²¤1áêÅÜö+ ÉÒG¥½¸ž0«£Ü +on‚Êérh¢HFhš†/‰ëމ‘RÈ`B×õæªGÛ ÒSP¤àås˜Ÿ‰ ;>ÈK +nƒ‰ ac‚¬Õ ØÏã3n1!ÿnnûÀMð2¿ÎbФ\ŠðÜ„xó/ Vÿc‚ä:F¿ø™0‘ ñRÚQfY]­iô’ÁD>×ßÛÓÿŠó“‚8p ÿƒò™ás»%höûP3Ö×ׇÞpccƒrø­\B2~¬îVž7wõ°·ý·Ú€ÍüPÅD»úûÓ›–KLÎûé7LÚxû^\ +on‚7Ãérv:à_ˆ·2˜pTÒ¸@!Ìþz2˜Ðf +ù\v}M¯Ûò‡ó‘žÈ1¨” dÔ Ä™ +&›À˜ˆ&~šýyvŬ®4¦ž6ŠšB{´b‚˜ jï8¨~ÃÀ„cÚûÇDÝ¡ÏMPsâÖGf;7A“Ǥ 1á­|% u'RÈ`‚’LþÈc" ‹ fÍ¡vSTû^ËU{æíâ÷ñ1bb¢¶»ðÚœ{Õ€½=ìê‹‹ÆƒÙæÞt¿ºïÊM8îoýô+ÆD ¥ùñ:žËÕûxsötE‘7aŸ1&#˜˜jY“ )d0¡ëzsÕ£¿’یƄ½hóÊ8ïjP탊11µ´÷lõ`é9÷¢¹±‡Š=¹hŽ×L(ÚP®G§·,>&¢ìW¦Â¤]á¹ ñæ_dþ"¹ˆF\ + ”€u9Läsý½=Ýøon4X)L¸1ûù× bÃÞ~vŬ>oíI­Y±¡\”Dn"Ê~&ÜFJÝ=­Š 1#êr˜Ðf +ù\v}MG“Ÿ?cï$UºWý·o1L¬~4¡bÃÞ~¢¶ûcu¶ñÃå{ÅÝüãíÛ“[Ë«{V8˜pۯ„ÛH5&”HÉ`‚Rß#ï?~öœ

        }úd†|y?\¾Ìábý"LØA£0ýHyŸç)¨£ÏÌ#˜½ÇÔñÄ¿íŒTŒ³æÃyãᜠ—._š7ïÎU‘b`rÓj9Lˆå(g}’BaÂOP˜èêê"ˈ&N‘BÞMtttØØAù—j@5–/_­*yL 4h‡q´`îúzî='ÀJ”–LÐÔRã±ÖdÒ`Õ UL€ÈhyËj9LèºÞ¿ÁW˜8ðO +1&È=-ó$u©ÝfìÌ™3çÎ ÃMP΂¼×^Þ)Ø/ñðHá hÁ~k™›ßMŒåƒ}¦ãHíŸ'ɸ–9F{à½GŸÆxÏ@ž_¥ÎPwQ¼ód Mm5ôX30#HR VŒ‘rêÝÄ/û”ÂD>×ßÛÓÍW nÂ?)0&@L7>|æITç¹ÇÃlÀ{x,†› ng>¡ƒÞIûUfKnBÀÜÀñ ’AUý¼óò˜(•ÆW]aκńx¤ÉÄ„d›00nâÑ‚1V3C3Æ‘•h]Lˆ ›°ÿÊor&àwi±ÀÄÝP8Z f&xÀDƒé&pyÒ:ÇM°ÄXJ±5°ÛÁ-~0!h Î:1¡H ( ‰ `¯<&š‹tø!L 5ó9R… ÃåÝÒ’9µÔÁÁøÂ)L UÌ‘Š1ZÞ²Zº®7Ço°Ç¬› ~ƒÅ„uÌJ¼Æ¼LhIL0ÝòâjiwÌ_yLü…ýª‡òE¼ù#¼¹ /ƒ%põcRnÇŒB˜ØMÈ3•k‹8‡‚ ÒMŒ×ÚÈMäsý½=ݼqè&˜!9IL†BÆJ L ƒ™`-€ ÒM˜pÜQc7Á^¿#ˆxqLI6Ãc‚<† ®Rgühb,O€:ãè&¼”÷yzøÄÜöq‹ òc'¡À ÍØkð0!¹'oqõ 0A m!°dâü öù®0!¿‘óÜ{Ä9ìˆ ê{”ÁЇ ݦà #‰‰º)d0!f`ý˜‚ò˜ «£•ðœBi +Œ‰Z­ÖÙÙù~uÑÕÒ 7X€÷è繉$‰´«ÍÝ„%±7¸† ‚ÄÄxÍ ‘TLÔ…¤Á„®ëÍñìq Ü„Ÿw&oGÇAaÂ:ö2VÂ:íä3*u˜¸zõê¡›¸ðryÚ&ê„ÝÀ8]‡«E¤0ÁÃòzáõwRÇSK{ÏVž¼i̽lT—SOÀˆÉEs¢fŽÍ›?Í™÷«{£Ó[VÂ0áßMäsý½=ݼqÑå ¸²àêQ,GL C!c%Ú$`ÆÎž={þüùRaøÕJ僮ù_µÑ@JaBà&Bí='f_˜¯?)^›@ +ø‹`Q|bLj&ø ÀÄH)YnB̈º&´™B>—]_Ócޤ1aŠÐ3&=3öÃ?¿ü×üÌÃ7¯fý`"iR˜o#'î='V?š€ðó»gw‘w.ï Mmß+îæ‹Û¹ÉÍåÿíYI„£d0‘:É`B0cà#€/—§õ· kïžÄ¾ˆA©Í1cïq'uÒ#ö„‘—„ +ë¯V*o_Ï#ÀJ´&”””|JaB…uˆ‰ØWMII)™²câW¿{¦0Ñn¡0¡¤¤Ä“) … ·¡fL… +¼`.¥WqÏkÊ"öõRRRJ²n"v³ãÙ")¹U쫦¤¤”Lµ$&þÏ~ÙEqžü=/õÔJMF1 *ÆÄÓC8@*Š牊QâGÅ›#É?ÎdœIÓN;™ÎÔéØqêG"†˜Æ&ŠÖ©I;vNL hQŽ»ãKîn÷øÒ>Ëë¹{w,¹x<ïüfç}ß}ßg÷–åùíYð/—ãò‡€ 2* &P‚ N£‰ò²Ó'O”¼BÖp¹#P‚¸ b4Q­¹U^v¾£Íàò»‰Ë1Zš ƒÍåAq‹M¼r¸Ü£^M )qb4a0 ÿ¬×¾5„Œáæ‡õIL^lÂIada^Ɔ{¦ñgƒM¸F8iÛn´ßÉï²ûXlˆ£.ò:鋼Šð¢Žú‚¸=b4Q^vúä‰GÅ…sM 7½8Šæ<2!5!”‚M8ß5¤&Äü(ç3b®&Ä«ä%nA7@Œ&ª5·ÊËÎw´ìF¯ 1 &œÌˆ|zvŸÒH4á$,‚ nP>M8gHMض—Žf7²£ c¤ ¶Ã5Ô‚ ã«&bî“೎4a0˜´ØkßB8Ê'"5ÁsʨhÂIzçfœÛÁ®hÆ•&ìvq{Äh¢¼ìôÉ%ŽŠ çÕD»Mæs?v—9Ò£°CV¶î¦}žPxNáíâ-© áýÛ­¹ìNŠytNÜ*æ*ŽLš@qˆMTkn•—ïh3Øà(c¼\&q¾Kä¶MŒ +/]MŒÎ51ò‡ ÈøDŒ&œC^lí‚jbX£ñΊ‰ï¨ppôå?41ÜzA„EŒ& “^{EYƒc,rŽÈ˜cT; —ÿeÇîñ"2®£‰ò²Ó'O”ˆ,.~ +¸Ü¯¨&A„ˆÑDµæVyÙùŽ6ƒËïV$.wjA·AŒ&^9\îÔ‚ nj5 âÔjAÄ n© Ad´p® lذaÃ6Î_?×-C²–Äi ðP8„]ÀÀ­·Ùˆ¸ì[¸Ľ÷¤^K¢n½  ÙmæEY_Ã"I©e!iZ’ÒHÒ¬lªÞg³‚üdIÐ"î$ídÓ¸Z"@6ÈêûÖ¡|vŽ+ï1¬¨aŽKk˜A ++ZMH?°j"¹y…67’Lým$»¨“]ž{:­ä›lè‘ð!{ú%»»¢B܉>Äpù넌ÙÝÌߎÛ,d»™dÉVŠdÒ ÐÉ0‘t“õÈv8ÒŸ Ì‘=»ÁÈØÁG¨‰ÌÇ$«‹=zª:vR¬¼ º­ö±xîëâQð€õˆ;öGdH¼òzóþd~6̦{Ô»`ïHƒ|lôÚI³îðRÒy0;H{_Þï:½Þì²*#¡õEM4pš¨Ì`=Ý€'+ˆÂ>Ÿ¢~†CV¼>åð<ôÌÊ+¬,AÆ{ÿLݹߺå¦ÿš/¦Æ_¦øjºâÊ´ø+RÅ×Ò„«S×ü×'*nøÆßôŽ½î¹æºdÍMs-0õЦæìyð ãU_ÞÇæÇÕw.LJžYà!bêùÈig£¦Ÿ˜v!JúI”ôÓÈ)—"ü? Ÿøù"ßKaÞ—B=?]òé_aØkØÓœ»´U¹ˆ›‡‚BïÿC̤K ¼­š#€&bHÔ Fw4ÑD2ZIv»­)HPPE]Pć>×Di))-o€)8Axî¤X áàròëՌ@Ï}e8÷…–Éù·ÙÆ®/×ô±jð‹ù¨·Åv±Ý>·‹„b„»1DÙŽ ÈÐ@2 É5Ê›’Þ6§–Rö5qœžÿkKP1p˜žYDKiš’Ó<1¾‚I΂¤¾K%—R‰jj­šZ¥¦–&ƒÀY~ŒN:ÚäF¥L·7I_˜ªßŸÆÝ€!­aϪæÜeÏ‘мafS¢´fÍ”K‹&2A@¬#ÂkIØß­šÕhBG2ÛXS@r8uJuªB;::"xš`MÁÙ„õYeu±<ÿŒw<ô•ßb‡-L-麵Í4akÄn´ãç‡ÂJζÍoá_mÛí 'a—ð¢â†À×&26@&YgŠ?fNUSߣ6½O¥¿G¥¼K'©©85%{‡ZzœZTBÏ/¦ƒÐ³Ò³г +L3ÿÏ~¹Eu^üšjbÿifÒÑ1•Ä‘`ŠHDQ⢠+\Ü «<ØÙå%/‘‡© F­ÆD3iÍĪ´NmÆDeÚ™ZÛØHÑ(Z&ÀîÞ}°ÈcÝ{ï‚{¾½ËÝu©£:ö»óãÎù^g³œß=)†W#G1I`ø„$°êž4!„ gã[ºôp}N¬A-1¨¥z•ØiŠŒP.ø2ÆyEs ä]Ôœ[kfŸ]òªCÂÔ>ðš\!–w MˆG5!ï' “ +¡•˜H‚ø‰|ˆcôØÏã,Åh ¾ÓÙ÷rÌnUqÔÊmPŸ{9ö{×ä8;ŠKaw]¯“-7~xš[m¾Èr“ŸœùžŸœ4ìlë¾Á¹ËýŸüæ[þÕiåW¿hí¯>|ƒ‹+Û_ÝÜ Áн‘éÍß7pÉ̺òeì+bœÀ¯ƒÁL“`•U\Ãlªee{Y¸Kj²’‰ÜÉ„•1+Kè "Ú¿€ñQ3^¹Ì›9̼lÆ3ûžgš~ö†KöF`œ$H'U÷$HZY°!Wl,Ød,”ò7éU}6IeEò˜ÚäOI}(‘E¾I‘ó4±ž77x¶¼3% í$Bn#M,j#|N!Müⱬv" ±YOÈŒD¢I€Äà4‚«&ªZ…ê–<4špsœå°XGaýìüðâõaT±-6~uÈú†èn}€Zƒuׯ~ÿnÙ`ÿLáeˆÛºîs«ð«ðƒôCzÌÎÒp‡f*>·r{ÆžÂ`0˜gêɪ«¬ŽIÚÏ&íCE^ZÃÄB…/§ÃJé":¨€öWÓ ·Óó³’ñRÐÞJ‹wšþõèÇ4ᚆOH«îIH-€4‘´ÊX$3–$‹“ 2½ZJåĺ=«ëÄ uçkcZÒ«g£÷wQÞ-Á¯£$Ð8€#À   è&~¶Ë©‰¨N{CAAŸH­­Bè/ Åx\&‡ @4@<åRØ©‰†3Wœ‡øR;ú°ÿAÛ|Á +AëÕ>Ø6]ÜÅí{üèWˆÛ;îºnÀ`0˜©êRD-o`Ómòzvk·›­`"K™°":$ŸRYçоJzAí•I{gÑ‹–E麹Ñíš' ŸVÝ“Dk‰ènÔ,dDËåÆŠ4t/ÚjPÅñvÐ&†ð±†\ ‰öÒÞÝ¢E7bY1ש p„à +ê&Ü4§Eo4!Œ«‰––<Èš@%/%™gaws€/ìc‡ç¾ºÞžÑ¯¥h@±npy†=fô¯*>ÇÄõûçŽÃÒнaÛðÃ)ÿI`0Œ+\…W|hË>hËøÀ–¼Ý´‡U2QeÌÚth>½Leýeý–’öÍ¢fÒ~ +Ú_iñKÓyĸk‚Oòh²Ë= éÔ„©FÑ»'ÛT™a,Ivv©kuI¡ÚÍËœ¦ˆ]¨ùu‹ý¯“~§Wx84Áµ®šþ†XÙŽ4!íAou‹iB.GŽË…ÕrÁµk"Eë1¹º%8vL€±ÅàÀîˆI?\ƒôö®î;á¼Ðpö7„†09öûç.ÛÈüY óÔˆ1?P ÈJFuÄ–÷*òi ¶­{Ù¸j–ÜÉD–0Â:DMåZr¬‹•V%½XI¿­´ø§SoÄ\@Åy¼$“–S÷$£šÐg“æ:•y˜‚ßL)HݶH]ŠP»5D“ä4…dq—äíë¤ÿé7PpàibÁ ¤‰9¿#–\&Vƒ&:Q7j( æ'š¨…¨æLÖC{!„9¤€¦&B MTU Ü41õÿ 3@•ìfÊŽÙ*>µådË:`“׳²ZVZÀ)"Jè°B0…u¹Ê´Ý¸Ýº$Ç òOÓ9*üxI&Õ„{’QMÔ’¾e}+ÌûóÙ«A32C®ÔnŠ]J˜B+[ó÷¾>­‰_Ò% ¸;ž&¸nb"MÀÅ›Â. G@¯AÀ 4ATU ±&0  +ìæ½Ì¾“燫>CEÚmï³ÉûY´»q5]AGUÐá¥ôêtHøÂâ—ª³þkWMWL)¢)E”.=\'_­M éNjñ;µl΄šü3z•ˆ¼EHï[ºˆ-:"Ù@$ÛMFYÈGe!D8V9ÐWM`S¼xÀ“æ…AÚƒù‘€›ÑÄùãpó—#PçËÛ +šm¹‡mŠm°iﳩlTû:F²‡‰©dÖ–ÐÁ*‹oŠvVÄyTœŸKxÔ·kÂT•1øÅ‘¡SÍ ‹¾åæú‚ÞÚ\SÂX™aªH3íL5–$‹dzµ„ÊŽÑ¥¯í‘·Gùž\: % þÁibÁ WM¼´® iÂÅÓR{‰4»F/¡PÈM¢;h"Ñäp„«&¦üƒÁLÄT×Ò(°ÅGmM-ÇÎ×~nÛqÔ¦:åÍlBå=¥M®ge¿bjÑnfCês,󵉥úî?Ÿ$  ÒD_cñÀgMƒ'õ7ךwôÖ©zk¦ªLp„±,ÅX–lÜ!3$èU"J±ŠîøÀ¶ˆùŠ zG#–\Fšð:ïÐÜAaÿ˜ã® Ð2B†Ù ÇŸ†Maõ8—sžï|½¦Œà€°Å+̾S„>ݪuÅ*B!†m£D¢E-Z°­å‘ +ζ”VzsDŧ˜˜£×|Р˜ð¿à9sÁ|vPÑh8÷[°×´'uÄ5®F“ n:v[ΤºSñ×hñ–° ~ <‡y3m»a‹½ó?v-R‡õ*Ûëj·ª)+¡­ØY.@ H°ƒ0G0)ÜzçÒæï0w›5Œœö#:;$ãÇdòTŸ:ër](æ¦Bˆ¡Á±ÌÌÛ‰#kžÞlš·<á <ö‘3ÑDxƒ™”Þ{aR L +<Áßå:¡D˜>'îK⹈o–ñͳÿίÿœÄÏúú|yJë 4Õ{q¸àðwÄ?À“×>àß-çÌÞ“¹Åÿ‹ÏÌ@8Ç«-@8Á„òT„:øØ"¬£,¬cåUXGÿ{Úûæ.°,­¾\»È¶ ܶ;¾4x3 Úæ¨ï-`Fôå§%"– +endstream +endobj +590 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/TR2 /Default +>> +endobj +591 0 obj +[/ICCBased 592 0 R] +endobj +592 0 obj +<< +/N 3 +/Alternate /DeviceRGB +/Length 2575 +/Filter /FlateDecode +>> +stream +H‰œ–yTSwÇoÉž•°Ãc [€°5la‘QIBHØADED„ª•2ÖmtFOE.®c­Ö}êÒõ0êè8´׎8GNg¦Óïï÷9÷wïïÝß½÷ó '¥ªµÕ0 Ö ÏJŒÅb¤  + 2y­.-;!à’ÆK°ZÜ ü‹ž^i½"LÊÀ0ðÿ‰-×é @8(”µrœ;q®ª7èLöœy¥•&†Qëñq¶4±jž½ç|æ9ÚÄ +V³)gB£0ñiœWו8#©8wÕ©•õ8_Å٥ʨQãüÜ«QÊj@é&»A)/ÇÙgº>'K‚óÈtÕ;\ú” Ó¥$ÕºF½ZUnÀÜå˜(4TŒ%)ë«”ƒ0C&¯”阤Z£“i˜¿óœ8¦Úbx‘ƒE¡ÁÁBÑ;…ú¯›¿P¦ÞÎӓ̹žAü om?çW= +€x¯Íú·¶Ò-Œ¯Àòæ[›Ëû0ñ¾¾øÎ}ø¦y)7ta¾¾õõõ>j¥ÜÇTÐ7úŸ¿@ï¼ÏÇtÜ›ò`qÊ2™±Ê€™ê&¯®ª6ê±ZL®Ä„?â_øóyxg)Ë”z¥ÈçL­UáíÖ*ÔuµSkÿSeØO4?׸¸c¯¯Ø°.òò· åÒR´ ßÞô-•’2ð5ßáÞüÜÏ ú÷Sá>Ó£V­š‹“då`r£¾n~ÏôY &à+`œ;ÂA4ˆÉ 䀰ÈA9Ð=¨- t°lÃ`;»Á~pŒƒÁ ðGp| ®[`Lƒ‡`<¯ "A ˆ YA+äùCb(ЇR¡,¨*T2B-Ð +¨ꇆ¡Ðnè÷ÐQètº}MA ï —0Óal»Á¾°ŽSàx ¬‚kà&¸^Á£ð>ø0|>_ƒ'á‡ð,ÂG!"F$H:Rˆ”!z¤éF‘Qd?r 9‹\A&‘GÈ ”ˆrQ ¢áhš‹ÊÑ´íE‡Ñ]èaô4zBgÐ×Á–àE#H ‹*B=¡‹0HØIøˆp†p0MxJ$ùD1„˜D, V›‰½Ä­ÄÄãÄKÄ»ÄY‰dEò"EÒI2’ÔEÚBÚGúŒt™4MzN¦‘Èþär!YKî ’÷?%_&ß#¿¢°(®”0J:EAi¤ôQÆ(Ç()Ó”WT6U@ æP+¨íÔ!ê~êêmêæD ¥eÒÔ´å´!ÚïhŸÓ¦h/èº']B/¢éëèÒÓ¿¢?a0nŒhF!ÃÀXÇØÍ8ÅøšñÜŒkæc&5S˜µ™˜6»lö˜Iaº2c˜K™MÌAæ!æEæ#…寒°d¬VÖë(ëk–Íe‹Øél »—½‡}Ž}ŸCâ¸qâ9 +N'çÎ)Î].ÂuæJ¸rî +î÷ wšGä xR^¯‡÷[ÞoÆœchžgÞ`>bþ‰ù$á»ñ¥ü*~ÿ ÿ:ÿ¥…EŒ…ÒbÅ~‹ËÏ,m,£-•–Ý–,¯Y¾´Â¬â­*­6X[ݱF­=­3­ë­·YŸ±~dó ·‘ÛtÛ´¹i ÛzÚfÙ6Û~`{ÁvÖÎÞ.ÑNg·Åî”Ý#{¾}´}…ý€ý§ö¸‘j‡‡ÏþŠ™c1X6„Æfm“Ž;'_9 œr:œ8Ýq¦:‹ËœœO:ϸ8¸¤¹´¸ìu¹éJq»–»nv=ëúÌMà–ï¶ÊmÜí¾ÀR 4 ö +n»3Ü£ÜkÜGݯz=Ä•[=¾ô„=ƒ<Ë=GTB(É/ÙSòƒ,]6*›-•–¾W:#—È7Ë*¢ŠÊe¿ò^YDYÙ}U„j£êAyTù`ù#µD=¬þ¶"©b{ųÊôÊ+¬Ê¯: !kJ4Gµm¥ötµ}uCõ%—®K7YV³©fFŸ¢ßY Õ.©=bàá?SŒîƕƩºÈº‘ºçõyõ‡Ø Ú† žkï5%4ý¦m–7Ÿlqlio™Z³lG+ÔZÚz²Í¹­³mzyâò]íÔöÊö?uøuôw|¿"űN»ÎåwW&®ÜÛe֥ﺱ*|ÕöÕèjõê‰5k¶¬yÝ­èþ¢Ç¯g°ç‡^yïkEk‡Öþ¸®lÝD_pß¶õÄõÚõ×7DmØÕÏîoê¿»1mãál {àûMśΠnßLÝlÜ<9”úO¤[þ˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ +¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿ ÷„óû +endstream +endobj +582 0 obj << +/D [580 0 R /XYZ 109.858 727.97 null] +>> endobj +42 0 obj << +/D [580 0 R /XYZ 109.858 703.064 null] +>> endobj +579 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F8 369 0 R >> +/XObject << /Im3 577 0 R /Im4 578 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +597 0 obj << +/Length 1354 +/Filter /FlateDecode +>> +stream +xÚWÛŽÛ8 }ÏWøÑj×–|‘·oEÛÅXt»Í¢Ú>(Ž“cG©íì`þ¾¼HŽ'×Åc‰:")êTb/‚¿Ø‹£"T©òr‘‡Eî•í,ò6°òç,¶ˆ@Æ¡R0ĵ0'i;ü爌¼@„…*ùköýgä­@ÛGØ•Ê{‚qФðÚY’¡È•7³/³Ï£^˽QÕ™Cñ?\ +r<–‚ïx¾·‹Ùë¢ðh¾X{a‹Õwÿß^oªùÏÅÇÙûŨ©ÈB•å·âd7L*ÌT25õCˆl¡üÅÛov°­ÚªGó´W…E–áæD&a¢$ØÂêÔ¿Tæ¡HÓ[&°$a-M*»[LJ +dGñxŒ8ñ +pE¢+±‘ð†NÅù©O±(Â\žè:7h1gÕÄ8œgé {ïê^/›yìWó öWó@ŠÈ¯a> íQûºcŽ·0¬7ÛQ›íb=Tv£Ù¡ªgž<¡‚­S½a\ø‡žfCx2š/kn·µVW "=¢Áêy ·œûFwÖry@{Übp΃$‰ü¯ÛjÇ«B‹ Ça·Œh ù$eâo *ÿ,t=˦"”HU;Kz £fŒœ~mÃöŠ¡õ`¿=wÆ +¶¼¦ÞÌ1FÉm×;†·†ìÙÍO (yöd‘z¢}S—z¨ÍÎ9øæŒJ–—Y‡BܡÎ\†Ü%î k#o_Z»DÛ£±/<íž9ÐAXD*ü5\< $º’ºxÚZþ d‹0®øýŠTÞ­à?ý·¿y £í&jiâㆬHËå‘â@aT=ãÖ èLË*ˆ€Î'çÀb®b7 ²Iw"Š"^Üë½zœ§™¥4@ZsAS^œ„2¡Š¤„ë‘ 3ÉñÓúG‰²âZH'r5‘5Lâ )pB„)ÖHØ@ UžûŸà”¥f…JP„Jè<¥7¦¯šgtUù"*zÀpÈ\YMcwh-uÇ[5ñšÇã­)ÿ€½pÖŠúõ®´êjoRŒWt(Çœ…˜q;þU—éÍzàrÊ´xQèÔ¼N 7^Ë# Á‹TŠ´õ~yÇqó>¼~hSï.í}¾peg9àìÁµÇÐë) l8(Üx:ð:)máèûCE¤ýãšëBAûOîÔ€ èjp˜{Uà¦AWN ^¨S{DT44 ¥?ðĬù µ¸åEÇ+A¼rœBL©÷Çz‰Ëµýî¨&а¡õë[´Í0ß„¦iª‹—(|æ]ÈEçÜÊrKQBî;coªmR’z–Hý‹q®@È©qÿÏ›˜Æ‚8˜–®v…HczQbBÛpÞáx çAk»¦$ã0ìºë@¤ÎP:Ý»Nä¨GÝ÷Ú’µé z¥õûRxDe÷Øw]gŸÅÜeß-ƒ#ûN ^bßÄÞ'‰”{Áÿ€jå„Ú5nÄ­\Mì¼ÿ$ʹ³PÐ\]í_!r.—HÜjï)‰ +¿Õö"Q΅ϾO†‰JãàœDpœÖ;`ÔæÇc¢LÙÆí¡n¡õ/YÃï2:ÀÞR§µM«¿B¡kÔ)¼Ðã;Ô8‚®SÃbîRã–Á‘'/Qcb;¨‚®ÕlLÇ)Ò²„Þ)R¥6± ¿bèÒèa·aØ…Œ¥xi†^¨*?ò×—®EâJßÔöîÊ V¶UHº«®re‰\sœ [mÅTÀᓾy¹g") k^¹ÜT¯؋¿™ÜϪhºø‡úendstream +endobj +596 0 obj << +/Type /Page +/Contents 597 0 R +/Resources 595 0 R +/MediaBox [0 0 612 792] +/Parent 509 0 R +>> endobj +593 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (ss_oxp.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 599 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 320.00000000 256.00000000] +/Resources << +/ProcSet [ /PDF /ImageC ] +/XObject << +/Im1 600 0 R +>>/ExtGState << +/GS1 601 0 R +>>/ColorSpace << +/Cs6 602 0 R +>>>> +/Length 89 +/Filter /FlateDecode +>> +stream +H‰*ä2TÈTà2Ð30V025Õ3S06´Ô30³TÐqM-ÍŠR¹Âò¸ô݃ Ò‹¹ +¹À*,- €¦ ăœË¥ï™k¨à’Ï„Û{. +endstream +endobj +599 0 obj +<< +/CreationDate (D:20030406193456-04'00') +/ModDate (D:20030406193456-04'00') +/Producer (Acrobat Distiller 5.0.5 \(Windows\)) +/Creator (Corel PHOTO-PAINT 10) +/Title (ss_oxp.ep$) +>> +endobj +600 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 532 +/Height 426 +/BitsPerComponent 8 +/ColorSpace 602 0 R +/Length 22821 +/Filter /FlateDecode +>> +stream +H‰ì—Ï‹ÇÇû`Xa0Ç‚Ùý ìƒ|ñI >9†ƒqþù”ƒBþsÙ£ðvÐEcøá@ ×Ä'!y¥>ÄL2ø’˜™ôLÏôÖÔW¯ë׫îù>>½==]5¯ªß§_óöÃæ¿pû«æärÃlw–Ôã§&í¸Ü´ÌÒßûCf,Òï~f’2`k1o˜œ©<›bã¦&ñÖʱg’ïÀGëƒw¾X»ã—½uçÅ}÷ægß¿þñ‹×>|Ρ9}ÅåîKNyÜ}Å&í Ùã2ˆÔŠ$7ýá/qÝ;!íΰùÓþÞêÇK`ò˜açðmóîÓµAvîxëÓnÿæ_·~ýêè“94¿ú ÀaÑêã½ošãËÞ8þ÷߃¬Ìÿñ¼åpÆS¢ÛEÍ…TžË»Z­¾|ü°¥Ýu¼Õ‡ÍÝ´AÔ]qã‚)¡ºcu0ѹC$Ï"Oëʧ¸C„ªÜÁ|éO¨¸£pž¥ªñŠÔÜ!BUîxðàÁ_|w€¸£pž«ñÊ­¸C„Úܱ{>.ºÿï\4ýqû/ÆUI‡˜Œì<­£W•:¸£pže«ñÊ¡¸C„*Ýq#Ž;nÎÀ"«*u*pGá<‹Wã•MYÝ¡nþF ë§Úµ‹û“ÄÝ\Ÿš·òŽ¢~×õ‹òí +ë æ|\¿}è¸jßщ£ÇÛwÐËJ¬²yLü4ëâÒ·µ.º¶è©Z7†õSúÀúEëO .öNÌ•ÿÀ.¾~ò¨ÇüS»†ŸgqwÌmú(éíØõ©õ&a·"Šó>ô‚IèŽASÔw4÷š{÷ˆ¾Ã{Ò›p~ò‰…¦7]T½›pÐöÓ˜‹åšs|Š2¡¹Cb_iÕ3Úyíš‚¯;4AxÏðó\ƒ;æ†>Ý1çíöTîÐÞÖ˜÷Éô$æs=aoßÑýßwwØûNf\³µ–ܘRI¤ˆéW2é f½ ób¹Gç³ÌjÇœ++¸c¾¯YwÌ[x¨½vÿ)]7æû¶ëÎ ©Ò]—Ñ«gÆèsѹCûºé#ë&a +Â51zЀ3™€;\´jè™OÑsE%Ý¡>nÖk´óêÅÄeæ@ħÖ!ˆªB<Î1xÝá*Pœ_GL’î;º.Cí;ºÿ¹ƒ³Ö’Y*‰»Y'ãÚ]Ö¯37˜ë†L•x…;ƒãŽž »c¾Ó‡lßÁ¯~æÃîúÓ5ùs®t‡Hbú:ô<½}Gs±ÖGëUñîàÔ^ó§q~/}@_Éß ƒ¶Ÿ53Ä ÖßëMˆëŒk]bº£¾Ìª%wu0îP›Ž¹Ñ†X¯áä¹6wÌ7út‡ëSóOëþ§C§W€w úí®¯Ð}G×q¨}Ç ‰qŽù‹@äZ§Ú`ô™$ˆ¸ÃZiU¡h–Q/Ë]óSǃº "Ϻc½úyÜÑì‡v¦¿F½ž¸ƒõíâÈIN{pßA_ìý9>wlC‡Ëtùîàä?¡;èi§Ý…x +’P‰;Ô’k=^íT’¬¸g¸Cßi;N²ôÀ…Ԯ໣GŒ^Ó±´î¨‡i¸C ³äjÿ›ŸŽ"à}§ÁTîŽNíÿÝGÕ^ ‚æoÉM]Åe"À©ò\g5†;D¨ÞÛh?‚8€Æ wL&à ¸C„ÚÜA„x®@mÀ…ó\g5†;D¨Ê î(œç:ŸV +ý®8qÁ”èÝqP!•gñå¶âr‡¸ÔT Ü`(p€¡ÐîXüóo€A¼A¸C|'ƒIòç?ýA|À…xEcAsÇÑûpÈ ÜQ3â Œ…µ;N_6Ç3¸”î¨ñŠÆÜT¾~ò(òëÞ;Àñ4M“éÎâ Œ¯;þøôI‡øóÊ©ïàŽxà NdßÑ(ažTÿT7|ªo­QꫯzqÜÅu>ë³o¦ÅLà œ¨¸råúÕ®?µ”ZO2“ær‡™|×*»ÎX§Á_Gkž­ÛÛ¼€XJó>æ=½£±~ ó¡3'C.^‘ÀXˆì;èÝK_QU\.X8êQ SÍ–Î'a9!~ù§7„;˜IóºƒXD×ý­³ò¦…XëÒ¸ÖÈ»v.+qÔûš6 ¸DßwX7¶Ùkôç9·eÂw‡Y[\ï¨Öû$‡ßwdrÑmÑy…;´^ƒ¹ˆœ¾#ØÖûL)@®ÙZ¯H`,Ä÷ÚCáÚäÖ3‘UBk1¼Rð^ŸÚ1é2s²ðÁL`mî0˺îô¬8‹BofsQÌóê^Å Ú'ÄÂþ´"^‘ÀXHÕwý…ù +J®wlomÔ\%ȬZ©0óãJ µ” ʉ)o–Ì“®Zm~Ë›4ÂÚpæ¢Ð¿Ñõë˜ëHôÖUs] nx×eÌe%Üa½9g8ztñŠÆB|ßA´;\k§ž±N¦??Czùˆ3™¶·¶¬êƒF|jþ©!^‘ÀXHØw¸¶®k×.&ùŠLLÆèL'aP¬ )àb8ë ]Ö‹™¡wÉ8«–|Dsˆ˜?]ˆW$0"ûs“›¯7É+á Ì +“ð:IY(æ뛼+æû?Ó/^ÜÁé;&éëÝõæŸè;@âûm+¨„˜uOÄå3æV–‰ â“æu‡wí´‰%Ÿ!½vÖÿÍ?ç:©}І˜ˆW$0"ûsjUÑújüÔ01+†ùÖªGV˜A_Ï—1æ é<¨u˜xÕIíëmµáL³˜‰_VbùƒX—8r8ó¤¶1èmc¾«3¯H`,DöÖJ˜ä‘‰)›Vw¤zœÍ;*S™2ÆOˆ«8Ǥwîˆù½i!Šv¾µã¬#ŠW$0"ûŽ…RçSméf?Ân¢½HgBe>Òf,>õ¸#ÉÚMÉ [ão,ñŠÆBdß&¿VçvG’ß"žÏ|À âûQÀ ñŠÆúqÎŒ(<®ãð’j¸LîH;ɃE¼"±€¾CÎW… Â)¹õ¸Ãj´Ž«ó5#ù‹‡xEcAsÇÑçè;ÊÐ:âÚ†j231ë-çL0Áî {¢îà”î¬Íc{Û%p(ÆÎ3—;ÂúŽ’¯ÍC©áÕ´Çòülyv_E3H™4j ±V`qwˆ‹£å¼]¯åÕòú¬çújïÿ–««ó뫼îèÜÔôw€’xݶÃ+w‡¸>®lâÐ "â³,›×DàBÖÙfÂtG˺fú@ß&Oò¾£Ý½÷¯ìá|+5.6â8'ÜÑé£Xëáê;Ô,Õæ×ɬlݱÓGgþUè;ÀäIÛwtâèÜaÜO·†ø›ª•­;®v¦Ø¾2î—l=Ì<˜Êt‡i +b‰³&ê¦ïPôÑÑýÙë}˜< ûŽ­8®—>L*t‡ˆ>twôÊP%²k=Jºƒ#‘xFïŽårÏË=ƒè;¬Ê€;@aö÷Ï×Ï• )wПÖâ­ûv!‘xÜA_¢ïX +ö›Mq¦ŠãÙ³gýGÄ×›¦ñ!^‘ÀXHØw,}¬{ó¥F=}ÇBN Õm-ª¬ïp%G¼ï0W“8™ µïØêmÒÿ_¦ïÐdÑwÿŸí6ÌÙÙãõ»Í.è!Ä+ ûŽŽNå5Á§L!hK˵êUÊqyw,Ü¥XÜ®×wô}ÇrÏ=¹Ýa*£ÿ¿‹Í®ÙsG³Äâ Œ…´}G‡H‹ÁGV–ÖÃຈ86/TÕw,êÇâ¦ïð“ÏjXűӇÞw0¯H`,$ï;úMžûAF\ µõèôa3H™¦ÃšþLŽÊæŽà ¹ÕºƒI™…s‰îÈÑw[}8 R¬éX2í‹vÂáܱ`è£L®ÌÖCö5É!Ž3¸äFsÇ­;/’ô€C[wn ²£³FÉŠD»#yYsÇ¢qth-FÉ¡­œ±9 w€¼¬Ýqúª9¾t¹}Gn:ƒ¨žQ“s”å`wXg+¾|C¼"±àui‰tÈŠxEcî…;jF¼"±w€ÂÀ5#^‘ÀX Ü1‡>8$ÄË´;¸t¬‚sÒ?ÿüp ´Ëýåã‡?-þ4w´õLžÞ¿ûíçÍÛ×;lðÝÑ€ £»ãöWÍÉå†Ùî €™ƒ »p7ç´gßrÎaæ$$«$ÄXs ¾@ÚÝvÃäÓ Øá÷Cà2=Z¼óÜztwlöÀ}÷ægß¿þñ‹×>|îb½m\Ü}™’S7w_¹ Ë}7bióv·o©+•ÕÊ=pÇßBsøVè¢ðmóîÓµAà7Mӈϡ$Vw¼õéÝ68úäGë8Z}¼÷M§ —;ŽÛÍ.ÄgR «;º=°B ˆÕj««;NfpG³âó)áŽöL»O‡ ÜAÓØB|V ÝÑž~ãA rwppÜ\ÀÂ1î“î@ ÖvÇPš¦‘þ­{´KC,Ü@ Ì€;p{î8;1à14àÜ@ †Ü€;ÄЀ;ppî@ Cî@ðÝqô>Ü@ ÖqãŽÓ—ÍñÌpÇV(pÇ„î@ Cî@ÀbhÀ¸@ ¸w þÏ~½„JrÕî3³ãc5Ù¹—Â7nt¡â |DBP$èʈà&ˆ.D!ˆ0c@²Äø€€Œ˜@6ÑD‘,Æ0。„ÀlÚv:ÓS÷œ:§Ï©®®ªîú>þ\º««ëv× çwÔÒ´¨¥hPK;(oÇ…KÚüßýv\~;Ú17ÚÔÒ´¨¥hPK;Р–v @­í¸|S;Nžvµ´ƒòvœ¿t];€UØŽ«Ú1CÚÔÒ´¨¥hPK;Р–v @-í@;€ZC¶ãÒc/¾òÓø9µŸåí¸pïÿ€vÀÌÝoÇC7¯´›ÅÊLm´¨5d;šëÕö4äo‰Ÿoi1©±ï:eß±J¤!ÓŽÕÙäOh}‹Ivµ†ßw¬¢%}•Xü Û‘:³õŒ}ÐÁîv\ìyß±ê©M©7Æ'˜x´¨5d;âå}Ÿvt~lšSµï8¯À]gÚñàÕq÷ñãíiÛƒñÓ¸2ñK¦u´¨5d;ZWòUOK}üö=/8“±ï:~ß±]Ì72‹Õ²¿¥ù5G_¢§<ÚÔeß‘YÿWmÈÊšø±ï:kßa¦3ÚÔx߱ɇŸ“ú©@­!ÛÑív~#…´¨ÕhÇŃW´c†´¨5|; Û±}ÌŸ_óà÷ëiPkÜ}GªùWSçÇO)¡@­]íX¼:åvWÓŽ´¨u¤íhZ©Æ~´¨5J;šËþ*ªCp|Ÿ%´¨5|;âu>ØAÄ?ƒÖ¬¢ú´¡vµî·ãòÍÛ1ð·¦I;€Z÷cm%RíДahPk”v0)ÚÔÒ´¨¥hPK;Р–v @­3í¸8D; ÍOL½šºNpü€·ìähP«¼úkÇö·g¶ž–y5>N!íjÛŽUzÍ׎ÁhPk:íhj=-õªvìI;€ZÓiGæHùùÚÑvµ&ÒŽUcgQø4¸B°9Ø ;AÚÔj´ãíL ÙŽÌ"_»þÛwt¦@­QÚQ²;ÐŽÁhPkøv”ÛÙ—àäÚ볡@­)·ƒahPK;РÖí`²´¨2X;Ì‘N³´¸K;L~´ˆi‡Év±íxèæâ¢vÌz´ˆi‡Év±^Ú±^IÌÉŒv;Ùw˜ühÓ“íb÷Ûq/Û±¸+xºŸœ¼+sr|å’_‘—Ñ Ü¡Û<η£ö +ù3«ÞeR£@làv,Ïþýßá +=¶Ã”Œv±áÛ‘YÉËÛ¨°™l™Ôh;t;Z×êýÛQr°ê]&5ÚĆßwdþøoÝMÄ'Çã3Ëß5úâ<ñÑ 6p;òKwæ +f¬Ñ ÖhÇŃq;Þ>˜oÇ"lž?n=¢Síb½´ã@£SíbSn‡™ÂhÓ“íbÚaò£@L;L~´ˆi‡Év1í0ùÑ ¦&?ÚÄ´ÃäG;€˜v˜ühÓ“íbÚaò£@L;L~´ˆi‡Év±±Ú±^|63úÚhò£@løvÉ(,È¢¡y°ùRêäø½ÍÁ{M0ÚÄnG*;ó'#8¸l¤¤ðHë5M0ÚÄŽ±ËÄâ¿O;Lj´ˆ ÙŽ| ò¯fÚ±­FóÕ­e¶Á™&íb§ÑŽü»JöÚ‘íb'ÐŽec‘Ú<Òz¦‰G;€ØíX¦‘Çr¿=B|¾X”v±#jG¼G(L€vì3ÚÄnÇòn&š¥žb´cŸÑ 6|;6³IÆ¡«aöíbcµÃËhÓ“íbÚaò£@L;L~´ˆi‡Év1í0ùÑ 6V;Ö‹ÏfF_M~ζãºv«1Ú$£° ‹³6G𝯧ÅO[Ï}qžøh¸©LìÌG¼ÈÇí(?ÒÚÓ:ÚÄ´ÃäG;€ØíÈ"ÿjI;6¶ZÏÙþ Î4©Ñ vDí–úÖvGJöÚ‘íbGÔŽøH¼qˆû’*ŽMGáh²Ët òáXvݤö#Ûyë­ÿ¾ùæ¿Mfn¾öÒÕ_üø±o<¼xß ç?ôç÷ò­o>2ö^`4÷Ûqy‰+SnGëFcŸv¬Æ×_ÿׯ™Ì¼ò—k?ûÉã>ò…Å{îƒ|à+;ÿñç×G¾þµ/ݾ}{äÿ¾ÀHnÇ&ÍROûL;Ö;Žu8^}õï/¿ü’ÉÌŸ®=ó£|÷Ë_üôâÝOûÀ¯ßõùçÏ}ì·ë#_}ø³o¼ñÆ;wÆþ/ Œ`øv4“q¸jìœõ¦cýGõzm¼ví&3Ï>óËïïÛŸûÌ'üüïòŸü͹þj}d]“[·nÙzÀ<ÕŽQæ‡Çô2Ú37·vŒþN`´˜[;nÿ矽ÌèßeÜÛ¨0sÚ¡n£vÀÌi‡vt¸Ú3§ÚÑá6jÌÜXíxú©'63𢧽ÜF퀙¾A2 + ²X,ZŸ.šG‚W·‹ÞtÚñâ Ï^n£ÀÀíHebg>ZÛÑ<˜:Ò|·ãwÏ>Ù:Ãì;Ž4ڌՎ`GPÒŽ@_툻P’QØL|$8¸óüæÓÑ«¡ÀÆíˆÃQ›ÔƒC´#Ÿ|8Zë:¿db:ÕÐ`£ÑŽ›ólG܈m;2ù( G>©Rh0}§×Žæ5ƒ§q;vn=Rùè·ÍÑ`ú†lGk> +ÃÑ|WI_R‹^k:ä£ßvdNÖ`‚ÆjGáñ8 ‡hG‡|¤~E¦ÍÅöHóq‘æ6$xU;€q ÜŽM&š¥žzÑKµcg> +Û±Ìn1ºÍtª±½Ú37|;6³IÆ`ÕØ.z™väóQÞŽebÑ9 +ÚLM£7†lÇX‹^¾™|Tµcúëÿž·Q;`æ´#µÑfÏvœÒh Ýfôï2îmÔ˜¹šv\×íXj ]gôï2îmÔ˜9íÐŽ·Q;`æ´C;:ÜF퀙;ÓŽ‹ÛñôSOÅh‡v½è¥Ç2‡nÇ‹/<7‡Ñ@;ì;:ÜF퀙륋»RGgóï*¹Zù™Ú¡@/ÝŽÖ…=>¿°­oÜy¦vhÐ/íÐíjºÛÇ[û·#s5íÐ`vÜÜd¢s;vÖ¡ß}‡vh0–òvœÿð?ößw¤ŽäÔ<-µ|z´C;€^ìhÇåu;®ìÙŽxò¯tÑÓŽ^n£vÀÌõØŽx¿Z|N¾™ýTütÙ¶½šòhÐK;¦S‡‹Þð툧^ŸNsfÕŽõ¿Hái‡þ<;?Fá«Á™‡þü¹?ôè@í˜æL¼Ó nëmÔŽ¾ÎïWçv^aòq2´ãÐíXÞ‹Â6 ­59ŠjlocªñêüÁÙ|кŒWH½}Õö—sü8óÛógf>Cêƒ¥Ž´~ÇÖ“[¿Wþ«SŸ6sÂÏ¿8«õ‚™oÑúÁ8j÷ÛñÐÅEí8H;‚ã‹ìNdúSÕŽàióg«Ôâ7¶^?r¼²õ{Ùý/?­º~U22'ìü®úv)írß< "™ì¤Ú‘ZŸWgÿ0^eÂ…®Û[ÒŽ}.»ÿ;†üãü ùwµžÖË'ä¨iÇûŽ’W§?UíØV£õœX«bU;šv~žàäÖ_”º`þí­&ÒŽÌGÕŽÒŽ~Û,©sF¿{ÞÆªv4ÿ¿Õ¶cçzžzcþHæC–´£ü¥>mêäÌo)¹~UJNȘü',lGJ;±ïÈÏI¶#¿Pc§þ o½Nð8UŸÖÐG‚O’9³ê²­§å¿cæÌ’Ï‘àñÎÛ?ÎÜGRß"þÀ­ïåiÇðí8ö)lGFæ„üB—ù-Ç»(u¸]Uw»Ã{«î<ót¿÷2¡Ú±ó6Ví;šò/¶þ½\*õôˆL°«ìÞªê×qªÊÛqáÒuíÐŽe¢£;á5­ß¯fA/´C;þÇ~ùÀDqåqüíRþÙ@ªh£Q ¦b ç!`­ "«üÓ«à?Äõ‡TªçIs1—^.¹4¹»\®Mz!¦—˜Kl±ž×bôÚZÿ]µ‰ ØŠE–? +çþ,°àÂÞgÇ™yofgggö÷Í7›·¿yï÷Þ¼™ý}ö©ØFdÒSÀ`‡Šmv€@~.`°CÅ6ªfBHaP܇•KÓ&½àÅð–ôdGMuÝ:=`‡&Û¨?;ÔuùàÅÐY:³CõUô¬Øÿª¸›ø+°ÃÓìào¸ BêÀÅémÁ@JÒzHKRHóÌ’BÙFú@ñWÉIÏ‚>÷©äÖè_é7N+ÞñAÒ +%'r鱺šP¼lÉ$>.o±ñ*¿BvP"ˆ@AØ¡‰Iì ÿ‚(?mÙ¶«Í—¤UfJ~…%TPj–b… Vq²·æQvhõb¸´x%S¸ú>“ÖéËò +;8àJ^•4°Ãw,ÉÙ_¨ò2¨a‰ǵb‡;™IÃ’ÌCÉ@É£|ýJÊ  ¢üÉ’–¡ðƵz1ÄÛ¢ä¹KÞ©äÊû¬|:ß—þì¼'‚«$#ì$÷vhâ‰ÅÒ¤ô%‰Û’Y]fÙˆxgÄSSn™Rµ( ÍEº/ÊbHOVv%ôî¿‚5“2‹w@¶ƒ8ÿ^d·t"Ê[ì°‹N²ìôGRìD°ÃçÙ!¡Ô%ÊJ”¤¢Ü‘V™éÛ%{û’—èK¢t£ÏEŠH—]6}%ô»sÿÅ -Cœ™¾ q—^`‡«æØ!&‚]Õ¹C@»ˆG‚>ÀÙáàýé|•ý­ ~e‚’yø_%WB™Ž´%RW"(É}Óèy(Ë–¥ð‘ÑòÍ$ݸä +Ý|1$ßRN~Ù;¥>ë ÄN€H[;4g‡pLtðún¸³$vðK4$¯’Ò3p_ÅÙ(ý%3€@ Õvx‚²övÚ.±ƒ>œÿ•‚å @. ØávLh«f‡ƒ@Ù…”Cl¤ZÀ`‡ŠmTÍ¡€#žHA1;$#’ý¹ˆäD ÈUiÂŽšêª a`‡Îì¬Ò$vP:(9wÐ/‘" HàÜìP±ªÏ¤‚OêL:‰ˆsÒûSú€@ v;Tl£:vPþö«8@ý¼(åìIaûwNÜæ%õAÏJ”…4œßvxŽ‚'è üçç^<1;\=;@ /ê);RšÐ¼c"v4ëÀåAú,²€žc‡þv€@^”VìüÏï&(A±“’"žfÇ.œöû;@ ¥9;(U]+vPüQ‚±:°ÃO ì@ڲØp‰”…;€ H+iÂÉ:O©ðâ‚dœ¡#†vhËŽÝ;7••í¯ØƒýÍú°C¹U Q’Šm;41ËŽ?½wøÃþpô£¿ÔTWÁ`?´žç— +¾›vxÈxQâôZµ!¥Ö`ºhȨ7f¯:^ǘß+0J¯Sl+°AJ+ŠkF‰çÑŒ÷U°CCkÈɢǯÿ99ÕØÀۈ⪳ã”qåE ôz#kCn3k”׊rÛQžÅé mOÛ¬ñU0Ø}gµ‚eü6a£Ò›‘é±SŸxE“ó«é‰Ùþ\v“qR#󹤑iàOÌŽ¤†ô.;<]ôÄP‡¯ß‹¬ÑybQÚ'(ûK”ûz³ÞCæhG@qŸÓ¥VžG eB£â1ÞldËÚ¦ÚëÈç]øø-Ÿ[lhë Ú<€6 ¡ÍÃŒq#ߊÖ[Ÿlƒóú^”óùd¯æ 0Î~(´_²ƒŽ²&";8kކµ(û<Ê»°Õ`î Ø9Äb"¨lÄér;뀽Ä6–cãþ`Yc΂'“K•t¸¨Îûcxën’ªÀÃ,P‹†K>p9É={É}ëúÉêñCv`p°ÖðÜÁ/Ôü¿ýˆ'~7ACÐM0Vr +É)•†ì0¬½ÿ“qG·±xÄIr{pÅãNíçpÀáô>§Y‚€Á~å_ü}¨¾©/¦àbXÚ©©_OËürzæ™ig"2¿ŠÈúú…̳a™ç¦džɸ´ò\@Ú9CÚE”r6r홺Æûx¬ûI0t™í%UƒnÔ×fÄ|ü³°šø©Ÿ&L;–8ýXü´šÄˆã‰Ÿ%¼p2>ì_qS¾øyÈÉØ “1_¼bøl>ªYÙs½ãÃyñ×s‡j»ÄJµ³C– ê"Ún£aõi–;{p¨qp\`>À²öz­këÎc1E-ëZfç·ÌÛj‰.l[°½u~aÛËE–yE–—Š,³wt¾XÔ±½+|[gèæ®ç6vÖZPæ‘kOãʬI–øòýš˜«IWW̮˘W—]—½ .k~}öËײæýùRCæì†U/Þ0E4¤†ßHmXòܵxÃ…XôéòH&‰ ìhœdìð蹃_õb‡˜^d‡qÝãæ&†{UŒbppÇœwÛ„,8¼þCƒu6®®áy÷çl{³»wQiïâ½}¯–÷%”÷'¼ÕWÑûvôÛ‘³Þ²F”YÃJ¬ÁæãÖ^”kAËÎpìp3 6n4. ÿoúœ[91·ß\Ô’¿¸uÓ«­ù ­ mq–üØŽ Ñy‘9³:WGt¦‡u¬nM2^[„>y1I08øì˜ñ¾s'-;X|xèÜ¡!;øòv ìZ|îàØÁà£ÜŽ'ŠŠB¦¨¨ñæ(ÜDø ‚ƒaÇcXÊDZÙ÷ÊÌßcãFàîÜÀŸü ÛÀM® Þx›ÿëãúŒ3„¬ùÞ9*ílÐöÿ‰û“Ú¸sh|uðævökhæ·ìÔ¤¹°Crd–]<ÌL]<ŒÛ8BZ'©Mš‹MÎä\“ëd~Èm»i8B)S”ÅO3¡'”qu^0½Ëš°×š¼ßšzp0õàPʯ“ .­L|ghá;ÃѕÑ‡†gžºÏö|ép ÙjÜÐeH=ë<2¸Ÿ³£p7n-ŸÞúFtÛÆ„ömÉE©;R;ŠR:‹’;‹–vmO¼³máÝMÑÝ#»ófu¿>õnÆó©7O,08ÙÁ‘Õð#á[c9d¹Êå§ —Î|šø;æÌ™cÜÑP:ÊáÃdBïšL--f“É„O"œ¹#†¡l›}ù±pe;|ânüî½oBrØ`ÈÊKŽ'ê?Û0ºèãÐÔ¯ {F°¹ìWο=nkjíc¯v÷tª'dM½ ?©}ä‚Ý6b¯ý÷M6•¥›¹Ú78Fš »ÞÂ\Ýw¨6¨ ý—ÿ`ná‡ëwC—~ÎuP2/i®k·‡Ù¯Wn²HjÀÁ?Ÿ±sÅnÚ_ÿv™½GIS?™Ìþ…ž@Æeæ–¸Rë²ýÖU•ƒ)ŶÍÿmn¥mƯláå¶ÐÝÖÀ‚;Æ´o¼#ƒl¾„I +GÐnÜ6Íl[×^¸¬cתÁóµ8ÒUœÞU¼²kOê]Iw͉݅±=[æãøðé£Ý«Ã;M¡?½øÏWŒL ì•wv,¼âWìÀÔðйCùiBÌþ%APœS|6ò;Pî¥ŠŠ¤ÊJd,Ág ³Ù„¢LOÙafNX(Ø _JGqOlö'ßvoœ­l—›™²ùÝÕöÐ%Ÿã†¥£7$íW÷dïîµãvpn2?-‰¸Í¹ôè#ÛÈX_¿mïÿÙ/ ¨Î+Žß4*Lš4ÎP YP0"XB#fA–—‚³bdyV| »h›h§¤í4“„fÆ ­Õmœ¤ŽºÉèDÒd” ¢X§<ö ¨ÜûÝ¢ô||Ëår÷! RöΟ;çûÎÙó}ÜÇùÝó—›0l5Ümì¸C\üx[6,ÁÙðC°#¶Ö"êcðOÕ7;Ç4Ö5àwV‡ÈYYý_×êZä‚@æcF¯ŒßGð]Ç÷ÜÄ­ø+ +dgóM¡à¦¸g+èÈ­LÜNëeßoëµÃä^aúy™ég…ìS›é'3 s"¾ÀÛF’ÕUllŠV¢ +U¢ %Ë%¯0IÆ•NƒÑíÞ™ àÐåÆq«ëó¢ ¹†×B9AÝëý¸yh=ôQO]}òèÒ9fv@Óìí¤¾œQ옌ì°c2ßü¼Î?¤ËHEvP©ÍaJ%E‰Dê6‘MÍ;T*J¥˜>8j<¾=&c:®ß!•|rÃlÂ'Ée®îAä?/àš©>Óæz†|'R„¡Þò'‰øñ±9ŽØZ $ÿÐ\™¿ûÏ€KÐQ²ú0iCRÚ'¾®Õµ“&ÓØyï›WDâ˜Ûc+:Å]¦Ö1–âZõ:4U‚›â•3^FÇîdUhØÚáWÉzo7‰*Øùe¬k;WN?“m|"J+¶$‰Õ(^…b”(R‰Â”(Ø1š¼Â$é} 0Úã½4ëÃu¹±ú-‰úB)·C^¤aS˜1'˜›é’Î7&¸jcæ^yù™£~Oà$@ Že×(ŸÏf;Hßq­‡âÿc²cJXƒÙù ÿ°ã±uúÚZY­Z Ro¯¿€25Èêy³êßâ'ùÐç8«þÜ2<§¸Kcu/«¿òþpêî¡Éïât‹¹k9IÄŸŒÍWÝWƒÃ#˜#ȃ3ØÃ¤ YùÍ$×µœtñ=H.WÓ•›‚³ºÁ^ËÿÚÎæÿߟÐÓJpS–n¦£¶1‰J”²¥îAÉ»‘¤šU¢•J^…‚*‘ßÖ»‚õ(g”°óì¼|ÚõUÃÓ1£-ƒEÚI^a`G2~b;’–j7Fé  E)†¢T½"y ›Â‰q—é3¦y¥ ’yÚÕó.Gº{ñi3;ÄThû dÁǃí;&©iÓwv¤5†ÐtØbE=.ë#}ßožjÆå÷ëo5}ƒNQç¡ø7´Ð„³¥cu/ã&ˆ?¸,â\³R´æR¼ü3;9¹Ï~§¸[iÛ‡)àüö;ç8»©Ùèð±=s{p=mk-nrNÂÕᑾ®iðΨq—7y—´!iç·t94…‚›P@ÇïbÒö 5¿aÓ÷°Pü%*» EV¢°(pòÛŠ¼ËXÖ­¹"·|ÚmƒþÙXõ;¬$¡$à&IîÑ™ “ÇŠÓ %kŒÅé@ýÉðøÃîmHñÐ'ºé%nš·–UnŸüòYœ:GÐja fÇÜ}dœ§¬ö¼¡ÍãGcÇ´f‡¸žŠQSÒóîîî€ÿš«ìÀ­€#û:õÊu*£gÿ§øc©¯ßø˜•Òyîê |½“R<[ú_^Ýë™k~ÀÎæ\ü€‘âÜÉŸç\ÐàÔÔµƒÑ}ÃDbøyø6áÂñ³ÝãZ€ñ9ÉVCOâ·ÏÈrv=„÷¦³š_õ^[Mí%ò²«kÁ¥À0:ÝóÁÁó`4\ê¯;‹—À*©ã\ë Àl¹§Ò»ùrÿrlã]M­à¦,WÐÉÕhíëlæ,œSª‘¤ +ÅìDÛQhXÎø–"ï"äYˆÜ ÐóùÈ#À#GïwWlkI0;l'¯0 f‡ MærCa²±t­±,ÓP²V¯HÑçKt¹18tk}u©Þ:©§N⮓<ß™èÑçQ䊓BZ1;–4RÞ‡g;Á¾cZh¤ï8LÅž¤¤ßº‡…Q'î²eþVÝi ŒìÁÎZmCd »na/ù¹P|¼‚Ö‚m8Øñh +nJX)¹e¿Åf¿‰+j5J„²¿ƒ‰ØÆ„”3¥Œo³x ³0‰äÈ3ñ’÷{åèçÇc? í$¯0‰DÂìÈ3–g+²[³ ¥™ú¢T]AâðøC›¼X›´P“ ÒH<;’¼.­öª_>'yé +Gpfô?Ý5£Øqßšò>Åì?LEŸ ¿±ÅµZ Ho¯?4#ãÙÑàÀÊÐ"8E,t R?GjŽW÷tïÀµºéÊ Æwq:×z&Õ zŸ¿ÎJº3Îá§If«ñD.AÇ@vb¬Î×Å/£úLÛœø–SMºgñAþ‰ÈÎ>¨ iðÎLèÐÜ”UÛÙ~6çw&Ù>6k/›¶›M¬D1ÛPD9RÂ*h¿æ9³(—ñÜÌxå2Kòú—lÔ.ˆ?5Â+I`h' x…Iâ5T|;ºM«Œ;dÆÊ|.Ï2(Ò8dh^ áìNÉ¢ÎxÏN‰W»tIsÂ’W,c€CÔ€û;ì˜;^>df‡»»UvÔ×ÃÃì‰ÄâŸdwÌÔaGÃÅ^Rê©Ñúï¼â_¯Â÷sßÀmÓí;üWÏjI„¯zêývÀÇÕk׿nº9[ÒÊÅä ¾ëÖ÷Ý7L|vXÆXol„ÉžŸ•Üvà$-°›š.þÿäŸ`I±º‡ûÐþc=Cv<š"e?ï¦ü?š6ýÞ´þMvíVZ…VoG+Í„—0Á +úÌR9óB.³x3ã“ÇøÊû}r´n BvpI†ïu“HÆØÑU×½'¿«j“±b=¯Ý°R›®ÉÃGââN©O{²ïE‰Ï‘nfv¦cÒì F«CK›;îiëWvL%;~õwÌŽ¤cvÈd2™˜¢àO%]¸ ‚¨keEõÅ ÚZÇ:ƒY#à€çê[e]÷N 3Ü«AÀÔjÁ«Ç½AA$ăê6ÔO2 9aÒ2b@öc¬Î“þ(ï@/ØpØàµÌ?ÙÚÃ}‹°xÊKåCWò4ÜIR¼c*~Wþœý¦¬7Ø4+Ù‰b*¸” )b iÿÚONûÊ?9³LÞï»Q÷\ÂI|C­%¹';„IFÙ¡Ï—ôìUô¼U øà‚uyík1ÚWÅš¬Î5cøHñkKYvQâ{$ä9œÀòmÀìXô‘v8=vX­ü÷dÇdxá`ÇCaGØß¨¨ÏÔš«"Ül¨>D"‘L­̉`è_SC‰DÀ¥Rdɇš‚êš²m¯5U~h*y×”û¶I¶Í|M­F€ULDàƒ~IAn¡¶Ð/Ðþò>ß­¹ì[KrOv“Œ²ÃPô?öË=6ŠãŽãcR ·BB•šÐRµˆþƒ•ÂP ¼lƒ1µ]ã`Çuy +Np  @<$ÇMˆ\c%`â*¥ƒ#’Û`ç³/8øE +ÛYÏy½ÞÇììÞ¾Îû}tÚ›ÛÛÙÛ™ù}î»´­xkÛ¡‚Ö×7t_¯â{ò’ýkúô1¯)ý·XÉ/âþï>yÿ~bt}„/¯ä…Üq=zˆ¹#:÷*`wà&è£Ï ¡$‚3Oþ¼°Îw®®I¯uí{··èýÞ³|åÇÁaõÝi¯w'ã²³kÉ_»b :tÎÝÒ9sSç´<,‘Žñ™£|"vGXéwGóƤöû‚§‹)ÄúÀé#ð—ÕÍ[ÒüùÉþõˬ]âˉõå,jZ5·)cfcê´†å“kâÆŸûÍh§Ü!nìî|+w|VÓ`À1gÑÂÐKÿFI_£´À˜¾†°A2ú 2‹ÏüT¥ü bw€>YÖÐH¸Yàêšu°ûè…ÞcŸàâ¿íTOÞ±žµGzrþÞ“õf÷Ê7º3‹ºW`ìéZú·®¸í]s^露®c\zã¨yóÛ”‹Ä7w +³¾ýÇÑGçŽaƒ´okݟײ{m`GNóö¬@ÁÊÀ«™Í¯¬hÞ˜ü`ýR_n\Óª9÷’§Ô,÷î¤QüE¦ü‡‡¸ã%væ½îPÜá˜;攣—>GËn£4Tf ZÙg‡þ6kÖ,ÒÉ¿bw¤Bâ»Ãñ² œvwl>Þs°¬÷ðùÞÝïôl:Þ³î(®ùÝÙùšŸ~ ;mwòޮ廻âwv-,àSÃÄ?wŒMmœzÕ×ö½9ÁîˆçÝÑV´9xöà·%‡Ûín-ÚÔ²g]ËŽœ@a6GóÖôæ­iÍ›’ýyˬ‹÷å,ÄÑ£!qâÍyc?Œàky‹#úl…;äIAÞ©–Dèßw¸Çؼ&²Z%„ú‰>ðii~©AÿWï~/Î.Çiè%ûP Ö÷4ÿXOÆîÄ]]‹·w-ØÖ9{sçÜ-1ù<Ó7ðLZó3!÷ñ¸Õ_XœürCÍ;ðw͹Hü}ìŽìbÿ“{µ­ûó¯fø7$>È]ìË^Д9»iÕܦôLcêtÌýå“x&4,Wû»n&LÞ©ÉÞSÏ‹3ñ3‹Üa¸Î[ÜÅ'+Ž—åˆ@É·Ý^~( x¤_"¢"dðÃS|Ùoµú~Ïélø[ø»á^äpëðå}ο?|)¯Ct_dOýðé×C¹»cüEôËshÔ)î@²¡îÞÊq¼n»Mw (ãO öÊh‘Ú0€p!ÕÄ`‘TKQ|&jq--¸3Àü¯xæ|É3³͸ëcÈЏÜí"€Œ¸cÎ;há¼;’¾¬1lÍ#Âsë:Õà?Íy<@Ö#ìfUOfkTf˰LÈ&D(„e!Ë%ä¢|€U‚õ1ú=\`Ír‡ Qt©Šòè$4]ÕUñ‹’Nñ«øSÉùйÄQqÿŒZZ‰RªQf±¯†õOFn|†òŸ>—ÇaÈ1~:Éé±áÙȼЙ`˜¨5Ï:ä)‘=H6 !*÷ɰ¬^ò.*£¥w ”¾×?và·¡žŒö©mü+îIlAI­<¸ƒå‚õ1£Ö³î0 ‰(=ôO)—uƒ;~°øâ°¤ȪûQ^ðÇÛ¸ŸìäùÙ>ž_q¿>8@ôáâNloI‚øíØÝ!ð1Ù¹¸Sü–ìn¼ß #×?Å ¤ïÐôR`=âBñÉ +‚Ü¡¦ ÷DÜ1õøðe×F¬¾‹ÝAVY„ÑxML+æ™q„gæQUÈ Ê`[E¸‡ìPáU ~G†»cÄšÿ¡™5(úšP`½ìá­ëÜ!nòó]b ‰;ÊËΠ%Q³?Œšÿ9šÿÏ¢;!âPÂ=”Ò„Òüä5*³¥PŠ¥øƒÔ~’ZÚÉÍ€Òå4x-!øø×X߯ï¿íë‰mDóšxðÿÖÏ÷ÏkÁâXw}Dbw ´‹`zŚ®q‚;bSS–¬ÊüCnNÚ†õ«ÔÜñÃÁîˆDÝ!¯ùò, Ëš.ôË]CyëwìØž`oÁ[‡^;}âÍs¥o`ÜS‹~ê w˜Kj;Eí +nCpGyÙ™+—Ên\¿t÷›/ŸV\ݸGbwŠOVLt‡fRî¨8_Ruå­ꪆº›ŽO+.AÓŠßÂ…%|,ý]šîÞÊ1±ÓÝáfÀŠ\­úÈñ{°í7º›Ã$:‹1wÜÐvº¡]ÓÕ0„w(â…²#v‡Ë·9L¢³xǤ*"õæxÅv‚;*++«««ëëëƒÁ çh#3ëÔ¸/”pÀˆ×ܸКÊYãöq ^(;à€wT~ZN oå‹J¨Ïœrî\‚ÊŽÝÇпm2äsî\¸ÃUÛ<Ì(€ÕðŒÚ(î@æ5ÇŸŒ^¬ÈŠýޏ0 ¸#îíbZÓåÿÛ¾”š;È…¡ÑÝáeLÌrG¨uŠ•¢p%.Ÿ#ïFÜa +¸„zpÇìELñ?§ÚÊ×õ5œ² ¹CWîL“â$ªMkä&‚)¹ƒb +ÅâsÀf¹ƒ¬mìüÊõ7ñ±)Ms8™;„}'y+î4q\=wH +µfÝfYç”õ¯ ½´´Tׂכ;IJÍé1Qs¦\ÄŠÜ¡6Aôi50§®"œÜ÷¨±,$€;"’;ÜéÉm»%öq ‘ål ÍB*rG˜¹C¯;Ô¢‡û…"wÇH¹C,yÖ°ÍÂ,àîˆhwÈ—§åcwÅ>.!²Ü4=ôæ]î0(O۬ܡ¨ KÝ¡f ¨”éz&6rÇŒZôü)5wHÿ!¡èƒÅâ¦ö¨éÊÜ!¸Ã,w'o§;w Çà7Æ>.ÑŒEL²ìÕV¾b?#¢‡gsyPbqܾ}[øˆ~MÃîÐ\nÖ‹;è¹C¬ÁìЕ;‚²,—µ¢¸…"Å 3žl¿;lÎj»†cs‡Þ{c—`uîP[ùA%Ñ0¢7zèÍâFÙæô˜Àh[S.Bq‡X䘼 +×ÄCŸJù$²L«®9u ¦äyúèC¯;Â$RÜ¡Ë Ž¸Z]]MÜ!4Îì¦9 ³;(ýáŒK°Á”sŒí½Ñó¹C® á•4"awh²ÈN~Ïfå‰>DÚî0üŸJ Ü¡XÉÅ?D~ŽäS½ç+~ÝR³ÜAÜ 9Ëšæ,p2wH,¦vlÖ¸ÓÝ¡¹ìÃwGPgôЛ;t¹ÃpX ­¸Mw8~‡Æw€;Ä\­úÈñ{Â¿Ñ î ãxw„Џ°pÇ 8¸#|¼PÜ\âC‹ôgEîÜAÇñîp‡mCsnŒ‹s·;ØïŸÅ•Ÿ–ß t.”Ÿ%€;œuG\\)û†7ÝÇÐÄgš24çáÆø¸8/¹ƒãú´èë‚8À&ºcêÔí11{gÏ>4þ =“XúL¥;lûxÔf¡.âÄsgÊМ‡›üÉ „䜗ÜAÏô%ÊèŽÒRUW5¸Ã +w\¾|ùÆuuuwôM_ißd…^‰;þÏ~¹ÆFqÜ|ÎŽMd+`ˆ $1L,75¶!…ÃØ`›4`åeÀ‡‡‹À ÒUU…Ô/•ª~hRµŠ*Uj? hh( DAáMÔ¤ˆÖ8ÔæQÀgã3oÛwö ÛYÏݲžÝ½ÝóÞãÿ×O§¹ÙÙÙÝÙÙùÍ_™q€;†òµ>ÌAŽ'˜ qxÁ¡ †…‚ªÉlÌ»ƒLg“úwDÂN§³´´”ÃôÁŸw¨nÌ,T¿Aù_­/Tkq‹W8ÝA|Ñ<ÁWµ×¬ÍÁ$´æ059…DrG¤ói7dFàŽH¸Ã’¼ƒÊA¨OŒêr„òV†>Âpy +«f‘4?-ìP÷•¦\øØÞé-¼´`GHK´¼†}”ª¡Î¢ +ZõTp—0Ø&/jyðß¿Òi…—‡>ï0¯¶;T×.y¥rY#ؾ€Ûë«òÉ Ô¹üî§!ŒÓu7­Y¡¼7¢DÝÎyîAUòË£vNw4Ë‚x„Çüi0䡪 j™ehEµ¸ƒçþŸ¹ãeMw MÞ!éƒìÏ“‘w¨î$I%c•ÐZWñ{T­$¡l#¯d7ÐêÜw˜É;(w¨ªÉB«RyTµey{Û@°g¯î¥¥É©;iu{`7ãw®5äCÃ+ y0\ ÛÜ¡ åÛ׺w°±0ïPþòlŠ”—ª;¼¡µB^#¹C«[~w(vML¸Ãéüeié¯çÎýÈhÞ¡†Ê«d'ÊDƒqŠwh?Ëœæò2Swðd(œî_ÏÀ×EÜAÞ–Égw ùXE³;Tß»­yõk­;”©;éðFØQqÎ;°;Ü×Ï3Þ •w¨þò»C9cå5ÔQž¥›í¯¶#tóþÉɨçÉ;táq‡¤)ïàÿ¾8/- yD;8‡Kˆwhm„¨Ì;TƒÿóÔu‡W¶Õ”ÃèÜóŽÆ†ÓzîXÔƒZ0ö·œ‰ƒÖ)a,nÔd—©-{Sa¥¨š!sõ™YòtñäR™]Oçp +w˜¹¨åÁÿÊ; ÍOÝ–<]qºCžzè&^¦;äÇî8}ò‡;‚vhV„”•h¹ƒ'q Nál)¡åÕ¹!a•8¨ù)Ÿ¨Âïþ}]—† 8Ýá )C^`ÀpC(J¿¨6ˆrð0~þÙ>w<„´q R¯•w œîˆi6ïoѵj^ÈÇ„Ú[Ê ‰äްó3R~:)[åùöRwoiȺĊ5 ¹Ã+K %k ^¢,[¦ÂÜA}›$ŒÄ¥…jXTÅáM0w°¡×ëÖ +C]IîÀ°Ýá eºI‡—éeZ‘°îКæç€%€;¬Ý×1.-$p(GF)o‚¹ƒwD!ºî ©‡nÒáÕvG"ž;¢„uGäöuZ—88‡KH$wĺîð¤<]Ù¾€ƒ;Ì“˜î°åÒBçp àŽ(†ÇœØ¾€Ûë,޳ß~uùâ¿nu\´ýµ† ¸cÈ.-@pD¬¹pÛp{Ý3,Ž˜N:¼àŽø½4`#Jw¤O»"¹#Fõî°ÊØ1q ˆØîˆEÀV¹ÃöW @Ôîw€;0J\ºÃö…7wÀ .ÝaUÞøâÛ_%Q ¸#î8xà¯'øÏ¹c×®œµ}@,Üî0Š®;N=H°ýV9‰w PØ>¤wD­;ž½#ÐQ†É¼C¹¬‘©ÞÐæ e¥²ge'”;påò.u¨l£¬””'*ûWºƒñPÊaÔzpÎd”9¯¢¼¨V€„ÅdÞÁv‡Ñ5G«7vϺîPš‚Çì³tÝÁóP죯#¼«hù%Œ› މhÞatw0j8GOu”̸ƒÑ- åŽaVçò»7Õžµ:‰;HA +p‰ŒèŽâ+hÂ>-wèæ”´NwP¢±ÄŒ5_ªa+CÕ> åÕ ‹®;tNgæ÷d:¯·{ +¡H¿ZÝêær¡(]@Y† uÕ€ÓÊû§ž‘QÉ3tZë?çU”µ +$,æóCõ:7Þ½èHÃ¥ûø\ó`鈪í¯ûØÿ ùüá²Ü=ßÏØ_0â“‘ûŠFí+¹¿(ëïEYŸ¾p° ã³üá‡~v0/õ`nò¡WŸNBûgeßùoÖG0¡óŽ ;°8ˆ;ÈV“¶ÆÎ§ZúâÛ¿AˆE<žäÖ´d½Õ2nyË„Õm9Õ­“׺'U·N¬i›PÓöJMÛ¸užkæWê/!½`oZåRŸî<ŒkRk½ä/.ˆ œ‡U{#‡†-».?„ÿâÉ¡” ÝÔ¥µÊøÈß´%—mŸ`` ⎈$xÕµ¢;g½¯p«Ï¹ÝW²Ó_²³§øg~çûþé»üEô¼öAoήÞì÷{Çîèñnàùͽ)µ¾¤¥Ž’ãÁ”Á|'ØÕ}¸pmÖ(÷‚œÖe…7Ö8ÛkJÚו´×{jœžšék‹n®yíÖÊœÛ˲o/{ûÍ·Êžo/Iižšt`²#è,ŽŠ;¢; +ÿ)ºcb3*v£7QÕ]âìJ.Úírµ´Ôº\.œ‰HH)†cË# yLÇÆ>Œ0xe–ÿ%xô´ñZ¸hWœ}Ø#*õwü&}úç¸Ùoˆrìì +¤¬}@N¤NÇí7=JŸ²'½ä(9t¢Ñ<Ïò?ÙýûÆ´Ê&ù¥µÊ×{Éßo/÷ŠwRÙ$¿$dG +D¼ÈŒYÕ¿Ù7s»oî.¿ y¿Lúyàå]Ñ? dÖÒ7øRVÜLš}Bž2èv"º“ê>´*€ ×]cZ—äߨžÙ¾~®ÿÔa\Ó±i^Ǧ9Kn®Ÿq«¶èvuÞU“p}ï—¹ýF¦Ç•~ñ‡)ÿx5Iì‹3çÖÿÙ/ ¦Î,ßÙº>Úé¶[gX\©¬\dd ˆ‚@" D#Š$ ¯ÊÃH‚nu|íÒít:uÚ²v»³l‘Õ]·³¾ØîÎX;ëT-*ÃÈëA¸÷¿j»çÏ 71 2ë´ãüw>2ç{“ çËÁî_v»l"Çî ‰Á@> ÇP©$”Hâv‡ +wpPìõ8ì&¾Š.„Bí;¼Ö‹5ÚÙ5C} _öïãÖCa†úCÃB¯ã°ÔÓwïŸ!í¼Ð÷·ý§ûôÕ0ÿYׯ{ùaÍ­7àŸ_1ÏŠøÈëŽðø@…™—7£e÷°öú/ûû¸Ð:ǼjÇ/*?/åžßÅ<§¤§'üËéÿIRë¹”z´Î€Œ(΀–8! ¬z'É¥²º×Í3寀8¬E„»ÛÔëè¢zgœ½`ùüaZ[Òó7ãž;µdºË  pGœ‰Šú»c~»Ó*ûµuÀS”HÔÖ-Šllt»Ãh¤ŒF èC°Æ3Ûô,B¡žrx¡[µùÝü,‚+w=óøîÿÛÕû¼/fÅ_ðóžxnö §øIh[„#Lµ™@ |g Â„ŒÆW2){Y™ùw‡ž «uˆª¹9•\€Ž›­a^̳?›Ô†+ö$Id (͈’ (Ñ€VP ¸c" ¬z'É èI 5çÇ[‹Rl»e¶Ò áhu"]¸Ú^ãGÆ{z€%yö­5/žŠx'kðâXÚE…ârG|—ÓV*·Ÿ×ÔŠ¦&US›N Ez¹ƒ×‡  Þ®ÏjËûÿäÙ’Kü°ow PÃïô3Órú…$~³é›±Xa§  Ïk–øCÏÍ~cßI8å{Sáé~‘ž$P^–ìb’jX™)ö£ÌH¾I¸Zk@ñõh¹EÔqaÕ\p7·œ ÔrÅLÀ6ú…䉖Á' ‘V½“€;ä÷ èݸIJ#ÉV"£u +Z—iÓÊÝú(ŒçƒoØa{V°=c.- ´¤ÞL 8½ì—;$½¸ÑÜ!ºL­¼…Ý!Ÿp‡j‚žC"¦c2w`(êÕ0ÏÄ÷pPÀ]ŸÐ2@ÜÙ50=½“_U¿Ãð´{ÎL—}å™çÑÙ„bƆŽoÄÌÄÏ…UÈ/ÄÓ—&¢N +§ø pjFÒ¾7%„Ç*LT “¶Í:€6ý†Ë>ÀAñ—QÊ>”¨G«ëPt ŠØƒÂ*¹àr.H‡‚JQP1´ÝöRJ›Ó~’ÀðI`Õ;‰¼€À”eÕ¤ÑeYtù&{Y6Ķ[êõó›Î£Á6YMdNêXô×_¿„“@ÇâX~‹ZÐÝ1ûèCîȾÃëC$ñ‚}D66úun=@yÖW³ • f¥–‰ÞÍDíf–•0‘šaqÅUöý%™ÒÞI&ÜAë¯×¼¡ï?RÎ]ù7ž©PÒ¥™N}¬·lK}˜•+a~ô\‹){Ywfäu™?wð}Çdî€KÐ‡Ó ®N€®„‚pe0Hˆ;Á/Pus¢ÃÍcÇ[Æ àÊÃÎßrùG8%4 û‘܈ÒôlªžMªa×¼ÊÆV€DF·›SÎyºã±’L¸Ã^•;øîá¡÷ß}Óú€î£oßN{M>]©¤uY¶R¹UfU§Zv$YTkÌ[c{6E·§‡8©;¢>¥â¯PÉ7©ÌNjs7µÙBåÓT¾S  0ˆj Ü{€8`•oðtÑÇÓ +ü¨ <}döž(Pu ¹·þ>vâ“q(þupTüŸýú}ië +8~®Eý†0ö¦lŽMº7Z ÂÄjkk[£é"‹&Ñ&fÎFÔjW[,íÜP7Ýìé‹Â c[a°ýÖk ’½¨Ð€ÑäšÜ›Tk–_Újö<9Ç››LÇÊ,i³sùp8÷h®/bÎ7g6~öZÜöUÜòe¬ã‹˜y"Ö 6}m‰ÖžTØC%FOQÝmܱ÷ä!p(H¶CºlyüýÌÚ­Y(Hpj80Ö/;ÎJWlþ‹t©CºhöŸoóŸÓ/÷6‰Ý ÞÎÚE}…³¾ä‡ò"|HÅ]DÛñæMu;òŽÏa;TùÌ2éHÖaûª©©¡‹8B;  ‡ºYÿ8p÷/e{kÍy°ë]Oþ´>ýóºã»øàõ¸}öü˜u÷|ãx¬},¦ÿ,Úâˆj¯FO]ÂSÃÁBÅO©á71ødoíÐb;‚C«ßN>¾9½2ëL Ê£vùŠMºl…pø/ýÚýƒz_˲]+ÚNÁÑí;8WWü‹¦T”70ew°oÜfí€Úqäw¡!³ÐÌ„%­Ó|à Å—Y¬Iæö\Öw9îyÈöÖšó¬_K.qs`6né>6ŽDOGŽEŽ}9<€*ûPyO”v‡K΄÷·­êr;†àµ{óí´Ã:åÛXtƤ‹&_Ÿn¹»Q´žôšz;y‡ÇP –ZÊQs©»±Äu|ÿ\ó¡Õy§utà J;`¾C;vléz¤P:²Õ1D9ƒpÇýå·ŠÖoâ£'‰g¼àUðÚÿúé@~KòK‚v)¿ óÇg~ÈèB~å=vî€Xø•¼u‹ÝÀy½‹hî³pìÔŽT2> ¥¤w„˜VCËEÇq/ú^ ¤S'M­.€û?3ŸrâªýU;IÕ= +BE7 +pèÀvÐd¨ÂA«‘׳Fí³Gvƒ?µ…S,kÇqÜ ¡3ˆÌÁ,çµI€Õ„…zßäDž5…¦&ÈÇ«?Ò# ¶C»'ˆ…ú”ÁzÑ»Qxn‹ lîëO:‡QY¤ºXзUØÏ~“㸜гÅåú¶ÒÍ™î̔н‘gY§ßíS„C¤59~‚[¶bZa AaE'“Ó+âù¨r%¶/¡abTІ^@^N€×®¢×?GoO$Þ™L)›fÔ‹Çq\vÁ^M©o‹ Ìé–®€Eõ-Ýö´ °wÓ’Jg"ý‚|È”pпU6Ž™xw +U]CÕ3»¢¿Àå˜xǹ—WÖÿ¯¸çáïï2ݺ•q7¸Õ§£Å"ô<%ÕNRv'±ËE4÷iDȉ¨~žÑºIó"iõ’v³LÚ%Òê# '†mô€Ãåš.éý\®ÉüئߣD5¾äDLNà6¹¢ñ:/‚ Þúp½N†pdÄâ/rNª +endstream +endobj +601 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/TR2 /Default +>> +endobj +602 0 obj +[/ICCBased 603 0 R] +endobj +603 0 obj +<< +/N 3 +/Alternate /DeviceRGB +/Length 2575 +/Filter /FlateDecode +>> +stream +H‰œ–yTSwÇoÉž•°Ãc [€°5la‘QIBHØADED„ª•2ÖmtFOE.®c­Ö}êÒõ0êè8´׎8GNg¦Óïï÷9÷wïïÝß½÷ó '¥ªµÕ0 Ö ÏJŒÅb¤  + 2y­.-;!à’ÆK°ZÜ ü‹ž^i½"LÊÀ0ðÿ‰-×é @8(”µrœ;q®ª7èLöœy¥•&†Qëñq¶4±jž½ç|æ9ÚÄ +V³)gB£0ñiœWו8#©8wÕ©•õ8_Å٥ʨQãüÜ«QÊj@é&»A)/ÇÙgº>'K‚óÈtÕ;\ú” Ó¥$ÕºF½ZUnÀÜå˜(4TŒ%)ë«”ƒ0C&¯”阤Z£“i˜¿óœ8¦Úbx‘ƒE¡ÁÁBÑ;…ú¯›¿P¦ÞÎӓ̹žAü om?çW= +€x¯Íú·¶Ò-Œ¯Àòæ[›Ëû0ñ¾¾øÎ}ø¦y)7ta¾¾õõõ>j¥ÜÇTÐ7úŸ¿@ï¼ÏÇtÜ›ò`qÊ2™±Ê€™ê&¯®ª6ê±ZL®Ä„?â_øóyxg)Ë”z¥ÈçL­UáíÖ*ÔuµSkÿSeØO4?׸¸c¯¯Ø°.òò· åÒR´ ßÞô-•’2ð5ßáÞüÜÏ ú÷Sá>Ó£V­š‹“då`r£¾n~ÏôY &à+`œ;ÂA4ˆÉ 䀰ÈA9Ð=¨- t°lÃ`;»Á~pŒƒÁ ðGp| ®[`Lƒ‡`<¯ "A ˆ YA+äùCb(ЇR¡,¨*T2B-Ð +¨ꇆ¡Ðnè÷ÐQètº}MA ï —0Óal»Á¾°ŽSàx ¬‚kà&¸^Á£ð>ø0|>_ƒ'á‡ð,ÂG!"F$H:Rˆ”!z¤éF‘Qd?r 9‹\A&‘GÈ ”ˆrQ ¢áhš‹ÊÑ´íE‡Ñ]èaô4zBgÐ×Á–àE#H ‹*B=¡‹0HØIøˆp†p0MxJ$ùD1„˜D, V›‰½Ä­ÄÄãÄKÄ»ÄY‰dEò"EÒI2’ÔEÚBÚGúŒt™4MzN¦‘Èþär!YKî ’÷?%_&ß#¿¢°(®”0J:EAi¤ôQÆ(Ç()Ó”WT6U@ æP+¨íÔ!ê~êêmêæD ¥eÒÔ´å´!ÚïhŸÓ¦h/èº']B/¢éëèÒÓ¿¢?a0nŒhF!ÃÀXÇØÍ8ÅøšñÜŒkæc&5S˜µ™˜6»lö˜Iaº2c˜K™MÌAæ!æEæ#…寒°d¬VÖë(ëk–Íe‹Øél »—½‡}Ž}ŸCâ¸qâ9 +N'çÎ)Î].ÂuæJ¸rî +î÷ wšGä xR^¯‡÷[ÞoÆœchžgÞ`>bþ‰ù$á»ñ¥ü*~ÿ ÿ:ÿ¥…EŒ…ÒbÅ~‹ËÏ,m,£-•–Ý–,¯Y¾´Â¬â­*­6X[ݱF­=­3­ë­·YŸ±~dó ·‘ÛtÛ´¹i ÛzÚfÙ6Û~`{ÁvÖÎÞ.ÑNg·Åî”Ý#{¾}´}…ý€ý§ö¸‘j‡‡ÏþŠ™c1X6„Æfm“Ž;'_9 œr:œ8Ýq¦:‹ËœœO:ϸ8¸¤¹´¸ìu¹éJq»–»nv=ëúÌMà–ï¶ÊmÜí¾ÀR 4 ö +n»3Ü£ÜkÜGݯz=Ä•[=¾ô„=ƒ<Ë=GTB(É/ÙSòƒ,]6*›-•–¾W:#—È7Ë*¢ŠÊe¿ò^YDYÙ}U„j£êAyTù`ù#µD=¬þ¶"©b{ųÊôÊ+¬Ê¯: !kJ4Gµm¥ötµ}uCõ%—®K7YV³©fFŸ¢ßY Õ.©=bàá?SŒîƕƩºÈº‘ºçõyõ‡Ø Ú† žkï5%4ý¦m–7Ÿlqlio™Z³lG+ÔZÚz²Í¹­³mzyâò]íÔöÊö?uøuôw|¿"űN»ÎåwW&®ÜÛe֥ﺱ*|ÕöÕèjõê‰5k¶¬yÝ­èþ¢Ç¯g°ç‡^yïkEk‡Öþ¸®lÝD_pß¶õÄõÚõ×7DmØÕÏîoê¿»1mãál {àûMśΠnßLÝlÜ<9”úO¤[þ˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ +¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿ ÷„óû +endstream +endobj +598 0 obj << +/D [596 0 R /XYZ 109.858 727.97 null] +>> endobj +573 0 obj << +/D [596 0 R /XYZ 109.858 651.313 null] +>> endobj +46 0 obj << +/D [596 0 R /XYZ 109.858 648.56 null] +>> endobj +574 0 obj << +/D [596 0 R /XYZ 109.858 205.556 null] +>> endobj +595 0 obj << +/Font << /F29 416 0 R /F14 372 0 R /F8 369 0 R /F28 380 0 R >> +/XObject << /Im5 593 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +607 0 obj << +/Length 512 +/Filter /FlateDecode +>> +stream +xÚTÉnÛ0½ë+x¤b¸/Ç]ÐAÑZ +$9xQl¡V”Hvƒþ}‡›lØøÀ!çÍ{ÃDZ¢ðcˆQG¬²ÈpCœA‹¶ h™¯KˆR0b-„>GL8í’Ÿ{$E%'Î:|)î(ZÛ5TIgÑ+Ä”péP[Hå76í7Å´ø1²ÄœA#ÕICñ–Jã¯eaïwU_¸Ca_=¢„H€jy‡o‡ÙªžÔZâ´öÅRH"­-_èŽûS®Թ3ä¤C‹˜$Bê;´£D1´¦Û¾y†–öíÅî,rМðU0#ŠƒçDùv¡ªZ7P"„ÀÛP¡Ä¯nð,7OãÊ0œ1ü AÓ×Ëx>Ÿ€ÞßÌ©Dr3[ÄÃ?PûÂ>34] å¸{Œ˜›i\¿ßS¦L޽ËI%¡‚ycÐ Ú5}tpñ­ÕèS£‹öÓ[f®ò€ìM—…¡D8üºÜìZpÂà]ûžÓ,;­r%\¿ ׇàÉ»âI޼_x@×úì<àê!&Á›”-î~Çm¶pà~7¬ó»Ì¢^…¢txÜ^) Vþ=f˦íð¦ãÖÁäÇ 7'†ÃGGb™úßÈKtáò—"%ÿ` endstream +endobj +606 0 obj << +/Type /Page +/Contents 607 0 R +/Resources 605 0 R +/MediaBox [0 0 612 792] +/Parent 610 0 R +>> endobj +594 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (ss_stripes.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 611 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 320.00000000 256.00000000] +/Resources << +/ProcSet [ /PDF /ImageC ] +/XObject << +/Im1 612 0 R +>>/ExtGState << +/GS1 613 0 R +>>/ColorSpace << +/Cs6 614 0 R +>>>> +/Length 89 +/Filter /FlateDecode +>> +stream +H‰*ä2TÈTà2Ð30V025Õ3S06´Ô30³TÐqM-ÍŠR¹Âò¸ô݃ Ò‹¹ +¹À*,- €¦ ăœË¥ï™k¨à’Ï„Û{. +endstream +endobj +611 0 obj +<< +/CreationDate (D:20030406193457-04'00') +/ModDate (D:20030406193457-04'00') +/Producer (Acrobat Distiller 5.0.5 \(Windows\)) +/Creator (Corel PHOTO-PAINT 10) +/Title (ss_stripes.eps) +>> +endobj +612 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 532 +/Height 426 +/BitsPerComponent 8 +/ColorSpace 614 0 R +/Length 25743 +/Filter /FlateDecode +>> +stream +H‰ì—]kÇÇ÷¢`S(”¶J±?€ie${eC¯Ú^…–r‘;ßõ\HI}U +)-.‰«€Ùõq¤Ä²úPÛB‰päøE~òä#'m[1ë6u+'›s„:ÒèŒGóòì³;3»«sžåw–ÙÙÙ™gÿÏìüÏDßy=úöï‚ "Ͻm?¼Æp§à—a¾ÇÝæ¿ãbeöß!öE†QøŸ xe¼’aj!;ôN·|›¥ëÏS+Äœñ>GV ßûóªw|wfkÿÜ7~<ÿÍ>úúOç¾ö£»¢= Xv7ËaŽÝ hüFˆù"eeÄû¸þ_ŸâjÏ¿3?Ãä÷û¾•·4½ÏÀ3ÿ‡×£ïŸ[uŽw|ëçŸ>÷‹mÝ»°åùG¢Ÿü‡ ‚è-˜}üàB´í°ðnñgw ‚ ¢;J¼R¬ÛyAaËéJÏ=âÉ—ÿcçF½”׳OÞÑÛÐ?."7ä] Ò>È;JáÌ©‘ŠŒ{àÀkiGï|51‹È;ŠÑ¹x0öAÞQ +•òŽÎÇ1ÄÏýC‘(³Ÿ‹wTÊt€`ÊÓ8z¥¤S ï(XçR€í#&ï(‰êyÇ3ãXóŽg5ä¥V)éÈ; +Ö¹,`ûê²Ú‘tï**E%Лí®ÞUê(ò³¶7 +7+ŒƒêñØÞ=Ó¸ò¾ƒ‡ ußçH±^Þ˘Y¸[cƕɇjœÆ»pÁø ñ€Æ©Ùôy Œ@¿TÚàu.›}ÄÅz‡R¶Ý5v’¯+`}@ö÷Þ‘)$ü¾#ÚíÛì;R+SÕÆ+džEð¢š:3Í=¥€Ì”-fw‰Â¡x‡â‰b¥•k”z¥M¡÷HÕV1ˆÔ¼Îåb³½#ÆMx_Þ¡üaCöèc çpÀ𾃟ŎcÍ;ÌûŒ,¶PK®ËR èƒô›’ðì2v‚läz3z‡¾Ì*eLËŠ=ë±É>â²½#FÌvà»NýºÅ]xéˆ7~ݶž=R=ïâ» ^–k6£wèÏäÊãºgÒ lÁƒæ¨ y Œ î"ïˆMöQ¤wÈ_œ±R/7šéwC ðE»ê¶5 +óv@À¾ƒï2ä}?gòL"ŒK®ãR ôf Æ6µŒ#g—­C¤•¤JÞQî‘IÛîóŽx£}Äeï;ð«Ÿþ½Û.mé_1¦¥m}pÄeßKÇ ï;¢¡Uû`Þ!Û‡»w`Ö^ý½0/ à–øiiî•5¾oª ¶[^ü¢{‡8Ä2+/¹+=ãò¦#Ö¶!Æ6«ƒl%z‡í®~i¬ÁßÍ^äðŽLïn{Øwð‡ °ïȦŒÏTíkvÁ5^(Ë;Œ+­l(ŠËÈÍ‚/úžŽÚ:.þôޏcq0ïˆ6Jh#·z06P;Y°þ¹÷pãÔ×½cýPŒÃæ°€xïÀˆïÑ;à°ýŽ®|^¨ŽwÈK®±¼Ò±o‹{àƒ¼CÀícÝ;¶Ùw6ÊšHïàÆáâ­~1¿ÞQºÆ;äC_r•³~wSäêd#ï(ƒ*{7væ·*»ðe¡xGê’ë{/ç(þC ï ªŒÉ;Öv‹Œƒè_Àô-¨Ù'ïèm€GéáU†¼£—!ï "佌Í;nÍLAD=v”.x¥ }A‘ò‚ "+6﫽NDRú¢Dl +lÞ±²²RzlA yï·f&J– ˆ wHïØ2@ÞA„åÌ©‘Òc lwHV½cO3Ú6ŒôŽv²H.0ï(=ÂHLÞA Éê͹i¢‹a »ãã©=8A0¢( +ÑmLÞA IõŽF½Æ Ü;ˆ®‡­íA{pïŸ`Þ¨gò ì­V"Z½#’½R¾Œ¥ ïkæW!þ×Wo”Å#¶zÿ²o”K/(fÒDƦ•í­m—ФÆJ¤h¶»ºø¶ö¶cø<u6No½J½½ÏÔÀàOL ¤tz0ðèä’Ô}‡ÀæJYŸ¨¶î«ŠÍ b˺,†Ad·{ `>M€·Ó/Su¼)ZªwI´õ`Œ +3¨-)ÆÔØr”š;›+ašú7#_ä„#Y½£,ʰ¨—Ž|é[l5¼`¼ÔoqôöÆ!¼`Ó 0Ÿ&À++õ6Ý`%§ð¦Ž…É»8Ëo‡O¢Qj9¢1e𥱟!¥”z Œ“whR½£Q¯ñ÷޿ܴŒüQè·ÄÙV㈼Jˆ¹ nÙÈ]Áíý¢Ë¢+“O.]ùí`•R[* RŸ²E×áÁy‡£Â$žÌzRôz¹Ð,Ç<Èw©“wh`ïhµÑ’{‡úxgç+ +¼l¼46v- ÆJQÏ zRÐÛ‹zãd×ô± ¨ÜÊ¡‰\¿µÞRT*jØ$ˆf»+?kK +ü޶·CæÑ¨³’ ½±Þ@žð¶fÈ´êmäžõÎ1ÃÁ£“wHR÷¼wXÇòd‚@ {CW!/¢ù X·Úp’â‡pïÁ‹ÔÅtˆ™*#'ï ¸{þqï ¡÷n£‡wYi¢tåÒ³ïPÞQß›xIKW¾”Ýö)Y!ï ¤zG£^ãîíd17lb»<^ +l9 +=Ħţ@WÜ ªdo“wh`ïhµÑ’{Gsnš \`+|é1Fbòâ[ûÕ}‡€{Gþ¢¨ô—ÕaëXé1l.ź[s*›¯hí@6&ï ¬zÇîf´ý0yGÕ¨¦bÝ­¹#UN26òIªw4ê5^0zG$r¥rW)‡†­N¹R¹«” ¡˜®ž» ©:[…26Î >wr1Qï!œ> &ÐôVf‚± hÀ]ýR¼ƒ@{G«•ˆ–Ü;ÚÉ¢ 6ÅY.(—J}hØê!ÎrA¹Tê‹Á¦¬dn2é`3k0YsgŒÐL¸´Ú’¥gÍûˆú.—FbòMê¾CÀ½£97mƒMKqæq(õ@'Þa«‡8ó‚@©/2*›bp½/0:( lmr“)l=8ƒáÒjK–ž5¿Ã¥Æ`ûÐôK¹±BLÞA Éê†:‡¸4ôú ˆåE\ z}š®˜¼ü¦ê`TFÖÇQ´Ô§Rs§æ=B8wƳ~éq8[¥rŽ9©È;$©ÞѨ×xÁèú TVE¥Œÿ²\¾A}ÅPÖ"¥ì¸Âdz<œbÈaäuØ&”£hðƒÆ»Êpº³è>âžV }€ƒSì8œ^©L xÚèÿU€É;$°w´Z‰h‰÷Q¹-›Fï$`Öe*bxAl‹³‹¼ŽÙñعÇNŒ‹v¸•rÐÉ;$©û÷Žv²¨I‡~7ÑÆ#_'òi/Q¥Ž‚È»bîjdRÉQÒÔÇÝs.éJÖŠI¢2[“wh²zGsnšèJøZlé8PïRºžá`ި瘼ƒ@“êz¸w„#la/=ÂyöŽV+-É;10ЧPpC‡^Åàk¸@Þá7Èž…¼ƒ@’ºïwx‡;ŘFÁ25yúÞÝi˜êx‡ÑÑF†NNœdçî¶ýo†÷?äÅ;¶ôß…½£,^ìŸ51Þa×`1‘ܘ™üꋌÏ/ðóÅ©º(³ó£‡³ÇŽò5óŽ|²W><7q~\œYÍ;c‡ÿ~æl}”<Æ©³k-)H°ÜNÇÉ;4ï¶yG£^ãî͹i ;ûv [Ï~ ôŽ÷í¸Þ·ãéþOû~&s}­žq|bd¬¿û—ùÙ‹7®]àç·Gß`È5W.ýÍ£hÌ;r<ÅB:2|qìèk§Æßdñ¦Þ;õæá?¾ö§ß†Îì¯X¾–Ž<Ù!¸^Ûpf¯ý’%ŽuûtéÉε‰! +^ãÒLÞA ½£ÕJDKîú¥¿š¡C¯2Êal /y¹/xÁÈ­>ÆXQ2NMž~ôðããûWÏÖß’a5¬þÞÝiŠ1ïÈú‹äò¥³ Õ©ñó•Œó·Yl#à Èé¯YÊ’Zr³Of``‰oöñ3clt Ä±n“d À}\òIê¾C€ô6{_õ0‡ÃÁ™¦Î”hkƱðncEÙ÷nÂ>Xyrâdý¯ÇXM¼ãöÍ÷Ì>¸qÜ¿wy~ö†°â¼£cÜ5ÄY¶ ÞÁÿ›‰‚€¼ƒ(¿ÞÁƒ{‡‘‚ߎ/):7®M”hëÞ1Úq +þ§qc¹È­‡¼ïöÁËÌ;Jßw¬³p•Çé“G˜w0ãXüôöƒOn2¸}°ðÆÞz#tBŸí;$ûàðKa´ï ºžTïhÔk¼À½£,ÚØ5ØÿÒ‰ä¥;ÉêÙk<‚Û7ßÿ¨yÕÈgǎ*8$Æø`ÿò+//Ÿxqy°C;yF§rv°Ÿµ,@´3“_}ñàóÇ ïO¾Ëμ,×\¼vköÂÁ7^ó|Kâ{¥áµÑ—×&ö®•b>û²alËBiXöôð£M;¶üè†xrâ-YÞ»{åÔÉ#² ×ey{.ÏJÚá´¿ÜL¨Œ—xlüwÑ Ë8Îß¾,åöd¬;=š¯Œ¯=_›nŒ”,çet¾ ?.Ll,;4jrZ¹ôÎæS±ñÀ4?ÎÍ]¾2ùüUÚÖ¶wD†í0»ìÙd­a¹\’õ„²Ñó_wsæ|ªO>}°üèæÛ‡_/ä7Ÿ,—jc£µ“ûjc¥Zy_ÃÚ³MÃ-å}‹å’ìéáG›¹zöég?þðÎÔŸ_}ÿŒ¬_œ:!Ê–pûgsü­¤®ƒ(ãõÉGó2dâüíé?~GîùÃn‰²"÷k§ôU¯ÚDcŒîËŠ<Ï•øR\<Ù°C£&§m^·tçö\b=\–[L¹|HŒ´0_‚v ¥ù¶£ÚʇÿLØ+/™ÃQm¶c1ÞŽx2bëžÛf"¬Fd˜nh‡$ãì™q1ÊG¤|”}&OñÔŽf8¢eTÈN·CMF´ mdK;‚­.A;ÐÒ¶í¸45®X¶£ÚÌG—·£Àp„¦L=½„£kGd"Ŷ#2©Æ­¹‹rW².± ×Ão=ŒikÞÑÞε#nj8ZùHÎ;,¥h©¹ϟע=Ãv¬×žØøÒ®Ë=ýûàþµÂïáô®‘GÆþ÷Çý Œ4ܵ?¡ìãçg¼7õëÿþ3}¾*+Çß=™×央‡\¾pê‹êÊ?>¾·ôpöýéÓ2‚«Ë·BÃuYæx‡:{`ÄR?'WYX¸.¾´ëMÑõ„UÚÖ¶wD†íXYšÅ\|¯4¼0úòš8±·áèpÃÒÞÐ…ÒðÎÒ°Ÿ;™:wlùѸ÷î^ —áWßx-ÇËI;25^9´pgúƵsÓ—&OýìaªòÕÛ‡_Ï÷rÒŽlž>UÜÿ›xkîâÅ©gόߜ9/úµWÇJq}^:Õrë)Çžœrù˜ál´-m´cÏj0xT׎KSá +íèaAâz¾ „ÁÜ/—¹¡aAB=W£¤h©¹ϟע=iæâ6Û•v ¥mç‘a;ÖkO·£´£ð{ÀT«´­umÇÊÒ,"ö¤UÚÖÚ·{^Ú–Úýí@Kuí(üÆÐ³E¿´à…¡jlGí«ÿ`Ÿ(Ã-ÿpþû‹OÍÚ´c}½ö×é3ØÃÊGíøÍ¯|÷÷'1MËvÈ»EV°‡•!ÞÒŽïý!:Ú´ÒZÉ`Ec¦³ f2ÃÙ´·]Éx”ö*Z³üªF ×Êp¦£2˜ïӕ턹ß^†'Üãóq˜Þi¬|ÿ-Ú‘Év4ŸoýtùÛû>úæÏ–¾ñ“Ç:ÎÝ+yºGïîU½®¥?›áòý²-ËQ†ŸÎׯÚ僞ñ‰u„2ÞC†£²ú‚\n„vè ‚ ð{ðij;¾ó‹OÃÇ`ÇÏŸêl<9ˆØJ>~x%Ì„®;ú»A‹ÂïÄ›©íŸ:@½¾‘Ôv UhG°•ÂïdžvÈyN±Ÿ¥fƒ4 +¿+šÛ![ +þŠƒv NÚ:hꤠ#s;Âw ö°ëë5Ú©dn‡«Aý·B:24†£ B;€v€+[Ú1D;úڮРà +íڮРà +íڮаoÇŽ2퀛íس V”vl…vô0´\¡@;ÀÚ´\¡@;ÀÚ´\¡@;ÀÚöí¡Ð`³»72A;ú ڮРà +íڮРà +íÚ®´iÇîUÚÑóÐp…v€};vŒ<¦PO¶£B;úڮРà +íڮРà +íڮРà +íûv ´žÚÐçl¶cÏj0x”vô!´\)ªA‹øózâõcâje íW +i‡. †Ôôv NÐpÅ;ÔWºîå¯û6õ$êž´ÃÚ®´oÇ`—¶#Žî@uP¡àʋێÌëÀ¾;h4ÙÒŽ¡J±íˆæ‰õh·ø$B7éH½í0@;Àÿí¨kÞêÛ|Õ›§*´ÃíW +iG]?k0¯Hm‡zP¡àJQíH%þžçï Ú®tU; h¸B;€v€+>Ûq÷ÐG~uÝu)f8Š¥Ó/L;À‰X;V‚¡£m‡¼¦2(7“í@´QòA;ÀŸíÿË_=ˆðcb£yÿh‹ºÚK;À•bçuM/ÌßêöW?b[™w@ÚµC6VòwäÛŽÄÙt_¡AÚ®ølGêÛ>[;âPíȼ2Pȼ#ºzj/ÛëÛ˜‰ ´\ñ?ï¨+ïùèf-¨+³ŒÔCt[ÐFæÍvì^õ3﨧µ£ðWh?K;ÀŸíˆ^VñÑ·C·s”ydÀÿ¼»MÚ®2ïÀî‘ydÀÿ¼ƒe·-i¸â³Eÿ­íWhÐpeK;}´#ˆ¿“ÄFÝ·ºó$¶wð'ë9h¸bߎüÚ]ݰ1u7÷êv°„v€+Ŷ£®çÓoÐp¥{Ú'u7Ý·´c›Ðp¥{ÚaØb¿?íÈíWº¤õØÌÂòcâ ‰ùKÇ~°„v€+±vldÂg; /y×÷?óŽÌÐp¥vØÌh‡7h¸â¿ö´íKbg×óCíWº¹àڮРàŠÏv@×B;À oíÀÔx;h4¡h–v€ +í@³´TÚ´cÏj0H;úZÚ*´ÍÒPÉ¥ò&Áž‘v@[˜w YÚ*´ÍÒPÙlG+™Û4I|ŒP÷IìŸ8ʰ³zf›K˜BÚötº‰us;\Ï`ÞÓé(ÔI;@Ås;j[ÿÿÏp†Û6ÒPñßÛܾ‰Y¶Ã-ÔI;@¥ÓíH}Wo¿6ŽB´TüÏ; ÿü§Î&ÔÕêžöGþrîri¨xn‡ùÕm8%í•X;V‚!µÍíÔñ=ÕõÔ-´£¤ ’K;:$íèi¨ts;°¤ B;Ð,íÚfi¨Ð4K;@…v YÚ*´ÍÒP¡h–v€ +í@³´Thš¥ B;Ð,íÚfi¨Ð4K;@…v YÚ*EµC^>¡…¿Ñ,íÿíH$ò AŒøÆøWºÕcã+‰c1!íÏíÐe¢m>Ôd$6Öb)±Ü’zNLH;@åElGMóòßN;P'íŸí0Âü­¡Q5âßFÔŒíH쉪´Tz£æ£læ´C'í•hG-6ƒ0ü?ûåÖjIqàÅÌä9„øâCþ@`†$2"˜ d#N¢%qI~B^ò0BHH$ó|’ø` AH|PÄ\8sæ£bHÔq«ã%5;}NÍé©SkÕªêîÚ}9ûûXlªkWUWWw¯¯Ë¯Q[2pH†tÇ•¸ lq\é·Gí‘E~àÌÈr©ÜÑ'pHvÇ•Mø¦W¸£Oà ïN«¶Ñ?pHÆr1—À Á„¸$¸ƒ°w€wvààÂÜÜAØ;@2–;êäãbôÜHر×›¸–c¸#PF¦Aª½¸ÿ_ÙLª-GOÎÜ’ÝÓDR2ÉKwäרÞ!ÔÀ Á„¸$CºÃ„ýoŽ;\¡AmÓü-‰XàÌÈAªWÝÔäì;p‡¸$3r‡¬‘é—˜qšúÿëUˆ gŸÿíéŸáðÒ† lq¨îȉØ~ÄE_~éÂÙ­F¼øÂ3¿þÅc'}°~Ù°ôÝq´ÖÄãSv‡ºÑè쎷ßz£ÇßÿöâóÏ!ŒøÓ3OþäÇ?8ñÈýÕÏáp ì§ ßÁaÙ0ÜQo:êê:7þñ¿'ŒøÝ“¿ùÑ¿ÿí‡ï«>ó,îÇðîð•±:k¨qï=Lj¶;@2–;F‰:޽Þ3w€ +îÜ*¸ p¨à0Üqèð&î€åººc)ÜBáPYOw@&¸TÆrG|\¬ƒ;ž~êô(çíî•áÝ(#Ó UU©‡•‡_üsÇÆÆÆ‚º²ø:ÏT¸TvGLI}¨îð+c5~Yº£6Åkg̬¥àBÖ•Éöþaë¹p¨ŒåŽ`G㎀>îXìrêÔ©s‚ºòÌ™3õï"EäeÙ¨”ù5òpDÜBáPÒRmõ+tÞwlllÈ­G]³±ƒ½û»WÛn]Œ1Ç%pÇÁ#[¸–{Üqa ÝQãÜQüß}ts‡rܳ`ÿ¹Ã38Tݱ쪞ûÜóeHw¨úȇß+Ç/jÄܱLé£Fv1Üáï,š¿HÄ߆ÿŽ î•±Ü‘Y¿"w,4N:uîܹK—.ù¿uå™3gê_µKäeÙ¯lKŸ¾eq …;@e`w8Mø¦Wƾáî>êMG]ë¢î#Ôf9·c:;î•áÝá+c0kdºc©é£Æp‡djù¿;šgw¬9ž;ÎéŽQ"ÇËÝFÃÆ«½ Sw€ +îÜ*ë鎤p …;@¥;6÷; Ü*¸ p¨à0À ‚;À@¸cwÀ2pÇMÝQg’YD㎤p …;@¥ˆ;æì;Ú‚;@emÝñôS§‰X4«„;@¥ˆ;ªb5Õ^‚J»WÎhù-Ùw´w€ÊªÝ¡&vÙ>ÓjÇdKÜÑÜ*ë鎤p …;@eÕîhÊ ýÝaŒÆ¾£,;âØÁsǧ‰ÎîHÚ¡ì¾w î•|w<²Õß«±ä7³G³Õƒ;Ú‚;@%Ꭳµ;ïé{1dàŽ¶àP)è¹_˜¬;Â-î•"Øw”wÔqf3Ǫ瓜Fæ¿AËUÏ"ëY‘;¦¸£-¸£mº7=vvGæýAûÜÑ“Ø÷›«—sû Üq(å™äå7u‚bÝ—ÚÊ˲qv»¥1‡ØÄòot¬±z]ö¥åØlq2ç_íEи +ub0k®¹ãÖóÕM¸£5±÷±y—Õåá4éïŽàP.Kæ­Ö3ÖXf¶²ÃöP¶¿•2ŒÉIv!vu0SÖÓ‹rÔï‚Q6þõ'ˆ[¨VîˆåçåÞ㥙@2]·›ãŽ>Ãö°óì²ÝÀîÛJôŸ!ÌšõtGAäGcÃ2òNÍèõéïŽàzû»#Ö½§;‚gŸ7ó.«ÚÝU&âcª¸c Á=±ß¦™“¢ˆ;Œ6’`Å’ù<ÖÑ®1&™ãŽüÅfklœ%güVjÈi`OÆža¦›`¦àŽžÈ?xkdö‹}ŽN|w؉:øÆ6V 3Ñ©9-¹ÔÁLrnJæ”Íìk4ZæÌA^HPN.£,+¬‰]…œ°Úæîè‰ý.ÌýM Üq°; Œv¢3Î2ߥî°\­V»CßV+ëÉ5wìjbܱ(Aµ—X›"ç·P}Üû:5þ +¾NÕïmõŒ±1gÁݱ4÷V­Nû•|wÚÍûÀƒ1÷-ߣ3÷¥6({iì  ¸ fäܸTpwGUU™•²£ÃIaÃ1Cº£N8v 掤p 5wtk ëÆÀ ìŽÎÿV{q5þ¿²™´/Üè+WFv ÚÄf¨ž¨Õmm; œ¶:ÈÄË•—ù3ÝaÔT›5¸£-­Üa¿AÆ«,·­)>¥R#ãg¦Ð Õd¦âÌ w¸Šä¥­Ô¥ŒV“Ï9EÛç96Ï)3Š;á⎉“ïŽäšŸ ¦Y_Ê}FŽuPÇ1F0ÆÉŸN jòïll™^êÁË’sßÕ+U»Ïsþé¦Ïðîž“‚îÇýÙîˆÔž’,« ¹ÛÈɹ2òÔÆ%Y˘@ì\±ë2&»³É™Øû?Áœc#ËH6£ù×’\Ò92–;äî#鎠}¥¹#sß±€n¡p‡Zcäœc&9CWTjd{¹’—¯þeOÉhfŸ+V£vONÛž‰}uýŒØ4äÈö4dƒVîèìi„nûŽÀ&ÒGAömé鎥÷Ñ&ßµà- :ªãø‡êLŒÓÅ&“C·aÔ¨{ÑìqŒi«½2o™} ò3váê {>êsÓo¼Rã¦Ú+3e†w‡ª€îȉ îhK¾;–Ã~AÉs©g—/rNÍ2¾5è9r2Ê cÌÁž^²o‘•B½ð³Ê|0¦Ãħg0º;š Ÿt‡ÏtÜ!¿ÔoÙRm°Œ$œ±¾Ow:¼e¸c©­FObãä§9ŸœcÀž#Û룦ÐäÜ‚Î7k¢záÆ‰ú?aâÓ3ØãŽ›,w<²µ"wäüÛ-ª»Ã~Pýçßx/’î0N·jÚºc0æûƵbM.S’t‡ÝqFÌn )w\(ë;Š»#ˆÆ‹Ô7Ý®teÿWÖË‚lÙ”Õ3®·P“uŒËî=Êî;Ô†Uì;œ5 +Î<Ü*¸£3Cº£à´[1wwT»Œ=€ýîèL,#ùÊÞMÈEås0æîŽôPÜчœŒ4ë¬ÕÖªïäk)–%¶‰“#øÂ ºíÕ 3ëéŽE9üìkPðtƒá*pÇ'?¶•;‚r+wØÝýCC%ù€V¬§;†dÖ9ª¬;– $k w›šäÐÜÅݱŒ$pû«”îPkÔöMz"hKwÔ™d;ÚÒÓj–޹Ãh³ï°ÿŠÕ@7Øw€Añ}G,áÇÇv"rL»½Ñ:°žîX@ +·PeÝa|öwØÿF$߇'Üá>çdÙ?Œµ©ö"+“g‰u÷Ëì;Ú¸ã`ÜÁ\F¾ùýö±î™sÃ#rÍ·œ­>û„pÇùÜ‘_iŸ%9îhK¾;†wŒH)w¨ßü}4aTJì­GSƒ;Ú2ewÀˆw‡‘ÕK¹Ã(ø½äÞw´w€JYw¬B­ÜaLÌwÇR¸… RÄjžOîüT¯ÖÇjlÅ5þ¾ãé§N±hVÉvAkø#?:tÉÊ•}w@†;‚XóX¸ïÀób;n|¶ºåâv»XÝþ—:Ôñ¥¿ÖqÝ—£álGÓÞëH$Ã-5‹DF¬ðÔ ásç«#®>ýÓî(Ý!w´%ꎣ/T;ùß ¢úÚ¦‹wžwQÝu±ºó•ê®—¯Æ=/]+»¨ÿ%ˆþñ•‹D"êöXd¡n?_ݶGwãÖ³WoÛ WSÿ~qk;nÞÜþýÂæv¡þ­Âͯm»ãS뎕F㎤ˆºãØëÛ/ì×_©Žÿs'^¯x£zèÍê[ï\ÿÈÛWãÑw½øï“aT||à;Wê¨"’ñaÆè7hòñÀÎSTÿ~ã?Õ7ß«Ž_®î{¿:þÁvÔ…{ß­î~÷ê¯+4q÷[Õ‹í_÷ï—·ã«‹0ÖɉîŽãoV÷¿ã~¯èííxø}§‰Oœ¼r5¾÷‘‹ë¿û¡ŒëNþ¯Žº=‘ŒÚ³Ä~ŠN|xâWïµ}_½ôqÝ«îÛw_^¾ááœPnxðƒ?¿Üz7þÏ~¹5ugqü‚òˆT‰ea@£PyŠðA@ (SEAuŵÔ`Ý?:³»3vwf»íŽë8»£­õQTZm´¶>fím+IÈ P Ü^ÉžË/\¯yÉ–t$g¾sçÜßïwϹ¹¹÷|~gtû_vtIè¶²Ãj†fÀÅž +a[<ÒQ£lÔ¡bŒÔ^ì+5”æìÕêT®"ˆUVÍ*íøÞôXáŸsË)æ‹…ñ×]¸_/â^u‰¿Êä^c&\_À­wâޘǽéË>öÆœ˜61·°¨zï´«íÏàÚ©èânÿHÕÛÖTïj™ÓÙà…Ÿ…¸|ºèÓ`—³¡Ìs¡Ìó! jƒ.Í»èX`_ë?çò6ç—bg£½»[ºNÄÚwX͘™b€±íõ©±_£'Sø°ê¥šöZg•e%éó/ì`nèðÈîðÙ,òÍú–æ —Š| +E^…"-×B ³@êœ'aäJçfImÒD÷ï´+ðIZ$b´!ß'ûß_ͼÿ¦Gc¼Oc¢oc¢_cÂÒ¦Ä%Í >¸^­\Ö8×6³•íÜÉh ŸÛlóMöY´7ä`Gû+ÆŽˆˆã i¨È3Ç̰5$;JGì+†؄Ռ‹ƒa/Ç´ÈVYõ|VÎéÏ<óúü·ö¯(é+U¬,S„” „ìªØ3à»gлbÐ}·’¹Ké´]éÀ´Ýܥа5Wµì˜bœöUÎ?®õüy½ÿ“ÌÙa‚·V +²C9!œ Qv€x£¯8Ý[²Þ]’Ä”¬u¿é XmÛ¼;³#ƒ8èìxýÏúìXü +²£faa÷Íp£Š¶caÇâï(v`[;H|” °X‡ÅºPÌc‹A‚ÀA²c6ezÿç¹c·u8Ò‘bDÖ9d=¡}Ô=AÇäïuWÅÔÛô®7åÃbFð'¹è”Á½R›ÊrLý¼íb‚L]L€#¦îÓ”o* +NÆÌxD­´çõQ +=41S¦ÌÜü+#r =£ŸÕ¢œAß"eH©2²RÉÞ¯bïÇ£~«Š< ZU¥ +=ˆ/?HøVÞ÷½ÄÂrõüÂŽ§´Ý(µa×kQË0õ ÀŽü!p~Ž^$Hñf…tæEŠ Ùâ-lqa”¤0RR¸JZ*Ë[.Ë·+Ë»+ݽkÝByü|1Û®-Ìö‚ŸŽŽ„n’!·g ;(£÷¦íWÚÕ[Ü z[6à ìð¹‡E °–ÛƒØ|ÐǃÕp8<‡%ªÅ°Ù5 B/?T¶ê #ày¿Á1µ :Æ~KÝ@?®©of¬8Å`_³Ù6¢.D§”ŸS?(Ðl—Bsü‹nÇä&½õ¦ü¿3ª­ûê +%ê"gª1S¹@M"r¶ü@}NçÎ’?áA‹œ±êµ`2yMåj~B Ó»’ZaðOWG©…ÚÞA¿Ñ¨ÌÜü«$´…žA‚?ÅmÓ`P‰rM¥2®Jeô» ¨V/=¤^\¥~}ŸÚ¹LÍØª´Ë‘ÙÆ4hi-ÃKƒÐM?Hþ¶I ÎŽ›0#¨3¸(Nu³F¤Åk¥Å±ÒmlYÑj9/´+? {ÓR'®œìJr–p#ì>Ö àÅÊIv,¿;«Øà@zé“7jôB¶ýtŸ¡Ó½ez×MatÄT(‹˜vÀ6#ƒdˆÏçðùàz ƒ±8ÏÙÁ#;0 +ˆäKÉ0¬¡O^øT£¯lw~"Ëæ½ûŒðKàˆÄýŽ1:vd97¢Ötõ‚ïúã=/‰àS*99¢S ¨KÿÖ §dš&ᚢ¯7åC +ʇ ÁŽ˜Ê…¤P‘—œ¹Ðâ˜Øtú.ù-CvX97o`òyæB"_lœx2§`A³p”:Ek€VôŒz2sóVM£àOñ*Œ(WÆP%¿c¼ì¾KøR{U©³O½p7á´]9“Ì>ö†–d‡ñ ëI‡q.­Á£øx8Ÿ ‚À¬~ÜA,[ N×K”àìH¦²KK¸²±²mQò¢ðîÂ@jZi¼ÓèùµË쵈P €Q",ôæ¬bÇÍ(;ÌT{Cv˜Z9Å Ú ìXüÝ8;ÄXv7–ÿ”ŽŒÅjè`;öœ55XM ÀðAQcÎÛ8ô,§dõƒÊ†¶Üp_;·ԇ(;¹gæ©.5’5³áV#ê+8¥OQBEê-}‰¾~2>ÅS¹@;Oê*sóƒŒðZ”]‹ÚLÁäóÍ¥7¨V€_r\—I®zžÑ!ù!¶Ye(* ÑY«¦Kð§ø ²÷)“ÞQ¥ÕàF¿»ÀjÂïwjVá¾p­ ˜;• +äóâ`ÊT´#xJ žÈÇãøx4vLYý Ù +8‚ßÎB¶dG’´,Mº;ºYIœ¬8Z^At¥»Ë׻Йí1 jç‘A€A?a_Î*vXªï ×pK±Cï’I^õ«³Þ’,·áêÛ‰¼ HÞ׬DŽ +ˆèå¿Þ2ñ¼ßÇ3W:áXó×6í8#’[Qv²îå TŸ!7NÝ=JtJŸ¢Ô¯Ò"Ñ×Oŧëôíaí8æòྵ!kÿ=ż†ƒŒåÿBëA{¯Þ±á® f µ™›Õ[è%øS–mWÆT¥ññÌ÷ðGñŒ÷ðÔ#D_ËÇÙ‡ñðj<ðáWEøì'<* ·rÂm—Òu‹ìµÄ‰–Á œš ³úA€ä+ܰL¼5^Zš&«È”Ul”–gPß¾¬˜J!Ïò‘§{ÈRÝÄëÜƹ^ yM‹ØÁ’ûÉÙÄŽ¾ û¸ï—jºC?Ž›Z¯7B7óÑÌŒXÄŒ°Ãëklu;ÉŽŒ vðz!#КSì …asx +¤‰ï½÷z Y~ïÝïT ;ÄÿŠÿÝ6%b‡]ºðyÝËíÑOõ¦ 艚š›)Ö•âU_š‰Imû’ÛL…mŒ RÀñƒïPþƒ9#ô¼™{¦îÁ1ªÞT.jÐ~ýcíxßÏG=<6áhhƒÔ†ÀJ3?Üpʪiü)¡¥Ê”wUYGñœßÙG (þ©5xÒ»x\5}_y<€ûí#|* Ï +Üs7î¹Kéù¶Ô%©aœF‚À©™ 0«$£Ž(+T²3E¶'KV™#ß“ ‘–¥j_4Y¶Ÿ,ÓGšæ)Mõì\ïÙ–àùy˜ :Gx;¶¤dó“aÇÙO>š‰Òë;Q}G„i3¼Jk¢­°TßAü‚«,h&Ù‘ÝðÁb± ÁÇŽeÙz8 +ž"‘ÐÉíùãer³¤P>æfŠî<†Ý»v¼Û¥?AÙÇë^2BÏQ>5E_0^œEôqj +œc§àt?S£5ô8tq¡îÛîZ€c¢[uŒºÇÿ²_îQM\iÝZõŸýO=m5¢(RlQQ*–|@‚á!å@ €y(¢”‡.²*´XízʱUO{ĵºìñÔ帴²®VÝÖ­Ð*.ž@’Ƀ <ÌÌ$¤žìw3aÃb£’{~ιsïoÆ ÷ûÍ'×PL¿KoBÏsÆ/:.«8q—¾„~Î{ÁO³—u_}ó tnÞí®º†n~¨õ­7šzX}ÐÖԥѱaŠï•¾è?åıÀKñ–êC‹É%”h?ǰbRP@ì!ýòȹ„Wá‘EÎË ]ÒÉ™iä¬Trvê“Ùñªéë.›QÉÀNíYvä: +‘·:=T“µQ“-RgnTIÃT©<9€ÉøF<|.tÁ3qÁ,yÈì_×Í®^:;ø4!w,¨Çæ¦;è/,w€5qŒ¢ ߌX.°b ŒÉŠÆyÕóuÇŒ¿cË0~3&„¼§ÂD,JËC¶èÓ„­; +ëøÕÛÑ8¸£¿8àÚ²ïôô-ŠŽÞ½_e=wÐ[Ãl“÷ÌËLá_8EÓiIæ ˆÉkoܪÐäÊN8Â2¸3h¶Ù‰¶1[u¿Ñ‹9ï%©ì¦½蕶}é΋¯¯»70~n¢KXF?ƒ{ÕËLô)tàTÛ‰fé«èʶ³¬ÿ2Ü ƒóá8x)déE¥dôA*úÊüáÅd¤ýÝ„ß.Â'‡ðÊ"<2ˆùÛˆ9©$/…t‘®)Ý®ñª7‚ú¹Ã6œÚ ³ì Eôš‘&7Z³3Z%Re„ãi!¬$  ¯\?GÌS\Z×»Þ t­ö~/IäpÔüxü¸ãÛÀ>ÒËÇðažSãvG`³¥ôÀAƒ¹£®Ž•HG‡'#ýÝ¡EÒ6©Ì#L^u…Ú€ÓùÓ’ëpúîtÿø?Q®n¸ÿˆ^f;Åp£Éƒu7USÝO¾¶¾F¦ø^¦#s®§™ºô`g çxÕ5´ë®Ê^úõ‡F«UÀþUVüá`ç9G +Ä1ô<ÀNÆx)þy„¸ŒŠ/7ˆQ[J©ˆ½TH>°‹ôË!|2 /©~aá–BÌM&\’×db¤{A‚òÍ ÌÈAàÔN˜e R`A-ÐÁý5»ÅšüxtÌÙ¢–F0{_åÃô傹ò ¹ÀµE¸àNð‚¿-Ó̸ÄÁ»‰êŽñäºîuéñ;»Ã!®Ô +ô7 îàñ8ÝQ]½Ü€_&Fk«5,â Ýq³±ƒNõXoþŸ²üf“Háû¹ë‰Ñ`|j»õÌ\)¾ê¢/[@šÛÿÓðx’ ‰Yƒ¬õÚÎßÚlÝ1p çx½¬¿úæ—×Be•ßëYý†;š©žß²â3¥p>Ã((»ð¤Ugì‡râXÌ–´/ùÌzÄø©!æµq%, óÈÕ;ßLb™Tÿ^ñN +á–LÌO"Ü%„GJ·{¼ò­`¶;˜ CndvAŸ;´Å’¶}©Ú‚DMn ³^·Zí«Ø´Œ‘‡Ì— Ý[B=îç—¿e¦ÝA£uGm͇÷Gꎎ޶dIe‡ƒ¸ÀQ·Nãv‡÷ÏØŠäŽðVô7¼YÜ!#qˆÅ| ƒEbÞíÛB0HÝ qFõvàÄ Çfµ‹8àrÈoùU]Ìž‚>Œ0[ƒn ÈÕ¬­Çì °ÖÃ,ämÈŸô Ä„Á‹a ` ç8]I*; GVfƃ=è¡]ìðTùÜ }É€—"( ¥Ç Û¿@™?¾Ì°e?QD ö¹$?‹ðÉ ¼Òõžiú…)zba +ñnJ·Gþvð÷è…rÒì ½îP¥ +t¥RÝÁí f1.(·(cùŠ->òH¯>}„-”…½Û(ð8ïó6 +âW!72;H¯;Ôaí‡óÚäëfR·þF²Dêôp‹>ü•±~ …è}R{^¾a‘,ܳ1„ËuÇClæ);îx‘Òf‹>Æ2Õ¾rmXî€ÆèÃbk%@U‚ÁÜòîpâ¶Õ¦ý䳯òóÆÂ¯Qæ‡Âaë'TÌAJÈ^2´ˆ Ê'ó‰5»ˆ•;Ÿ,H·{œbÆGµfw úÐ~¼U³+F-RgD¨ÒCqI. T&¬QŠW*¢|Z"½‚ÝÏ-›a÷îp6ûíŽÅW0ß[XÀ=,ü¶Y†mVb1j,Æ¢ÐDÜk>ª=Ð ˆÑÒ ¶îpêc˜€£Ø!¼õå¶Ubuì;ceM$ÿÝ' Y•†ôÏ ’Ï ‰ŸRñŸPqåT4( ” ÛG«s oi·[¬bšÿ%¸vl‚À·ŸÅÚÂÄοë:W i?¼[w(«­$][,Ñ$jóãµ{â4¹Ñš‘*# O V&¬ny7º]2 ñþA»cîéQ¸£¶æŒÃûNw<§Æéމkë‘;lô1!® ‹·Ø¡·ñù|zÁQZ«8lÝáð´ãäÀÑ.…;v7TT^0–Tv7HAΧ’*PÎ-£bQ¢?“‘%¤p/¹.U ‹ÓºçD)<£~ÄÛMcÜ!Dîh/ßÙñuEçé£+Ktå;ÚJ¥mÅmaˆC“«É‹Ñ쩳"UR!.Y¥GˆÅõþsþ䉷õ q,ºŽÜáriî0™ŒLrvTîèp¶¡‡;\Ž#wøý4!˜ípÒD¢Ž…uœÖªPÔlƒ8ü«þÅÇáÉùÇÑ.)IG´ÍøÓìJƒ¸ŒÚð'RP@~´›Xµ“X³‹ø0±"±d›ðLÕ»mÕÏŠîðJniø_7\;6A„rpGÒauOk³îP¶vX¹A•*À“>RÆ­R&¬QÆ~(¢VòÈ%ˆpÏ[óÚYõá^÷’JeHä„Q¹ãEÆ~ÝQ[S5 +èk¥þøÊÃáŽ÷.r¹CÆé,ùã‘^‰Ø”!L âÄÉø`Òf<é/:ü‘É<ÂWÁµÏä¨nR¤Å¹Bù¤0¤(CF¤T6iÅ-kÝ9Á½›w›vr<¸,#Fƒ~¤GZOìsG`3ô_«8¸ÜѧŒ”î>ú{?¶Õîdh8yVèO5[ÀAtUKDÂ`‚ @ÛÜÊý>î!V7"V6`¾·¬€A@ÀÈÝQ[sÆá}Nkضî`tÐpû_››à8}Œgw<|ðÈ´2lÄA[câ¶.š?H‰Á@³}‰]Nœ8ù½IhGÄé&ĵMŒÖV›ÐB¡‰PXé/«Sh•@Tú˜ñ-¤Ç¹Ãd22ÛQýá—!ëPƵ«WjÿÏ~Ù†F•øÚ‚îÿþ+´`‹´Ú%’)æG‹Ýjl)›ŠÝBK‹,È®ý%ËÚ]âba[­ë¤F¶±¦XŒ®h„qLìj‰ILÄEÚ #i»F7ì€m„»¾3oæõä|ß;÷ν39/—sÏœûu¾žy/}`Íôd¾P¸#=RÞ±mÿlÛ£tÇóÿŒdÁf˾ØóÙº_?ñö>þüËËp¤J,`åÚ—ž¬{y¹¥Ãš5/>qèÁ^Â5ˆ Y³û³ÏýÂÇ¿pk^Xô~úÐë®òN—k^øt™ Õ#Ôüè·ã“*P€\@[‹AÝÑZpy‡çõ  Ì;ôâÀ¼£T*­ï¾ÐöHÝ=°æû·à_ÊÚ_þ| +øÂ¾ +ðÅ׫¬ÿm•¯ý®òÃOé<º [ép8š,I„=ýêe Œ+—€JöW7KX·ç1àíø¯÷íÛ¸Á®wT?°î‡§å»¯·=*w >Ð$$œ„oV5ñ­?TÙš­òÜ•`‡M:Ü, +7‹ W(UTWôJÐ8°ð×¾¸ä=wÛëü;m°«ÄlÞAj0YwT˜à¶\ªdì¯\{éO©uâm¿‰ñ¾û*ßûç2ÏÿËû´î½]÷ð¸æg¼]÷½î{ÞÎûÕÂÎ:;>qXð©CÇçøé´r‚ýù¨zÜ~¯Vø¨V€ÓZÍö¼mVBõô^µ~Û·ÁZº£ƒË;Pw‹È;àh£ÎìN«©Ñÿ*nÚ‰‹CêŽÝ¿ÚõÒžŸ;‡•;žaÜÑ¢pyŠ#wéôµ÷®‚>°¦P¸3=™—)ïØ¶ •U5â¯â¨F¬Lνo½ñÎÀ¡¿õ9‡Š§îøNÑûïŽÄ_/4\Þáy=èó½80ï(•Jë»/p,PYUCG6Äöìiâ;^{u¯s‡Ãá°Gå4K+Âå䇧廯¬¨ Tâ¯âµi€Í;ÆòÃÓSù»³‰ ÃáH9ÜñþÌ(—üy ´ªðòXQå u5œ;Œ.àêE×hNSâŽ|îÌ͉ËÅÙÉ…û…&Œ‘£%Hó2w$H8w ãpU%lÀµp‡XáòÔÁí™1È;àh£½;¤;°ñ×tBî8y¢÷üÙÁ±+ÃÓ“¹¸¨E¹øî‰Äß¡™ß˜òeî1A¹.cèI…ó*ÖdŠË;P×Þ»š»tô5Ó“ùBáŽôHyǶý³ûæX#‚?©h.Lü.豃ö=Üóvÿ¡Ó§ú`}¥ Ù¤žKOuÞ¦úÆô/ó?ÐÑ 6îÈ aAãÏë1’ˆ;@ô Ì;ôâ¨}ò©R©´¾û‚%ð,:¶äŽÑÑÑ™™™¹¹9øðFvŒ a³–Yw$ò\éi[âÜá°ÄèŽrÙ§Æ-šw;Pž:P”wtî¾Þö`G9wèŸ+=mKV¡;2™#‰¿v +±É;û¼CZÏNª%>>Ty©ÁxtîhZÀZ6(µ‰ÖöÏ•ž¶%ôì2×üÝ‚PõpÜ˼Á$º¶t>^ò5@ÕÝô=(ï™@DèŽú[áU%Ü¡X.ï°W†Ë;q‡q@©M´î°®ô´-¡oŒ$ïàn¾¹c“†@ïúVâ BûG‹ñB*X“ø¸¤ KwäF†,ÝQ‘™BêòW̆ÈÅb±’-`pyG} ;¶íŸm{°£’u‡88¨M´î°®ô”%“颹9ûŸÓ8ó¥í_Æx‰øöyl³Ë<=ˆƒýãû‹ŒÈ Šå°Úh:1º£\ö©±è˜,,õÊÕ¤»N4…;Ø6äØÁ!(Õb}÷…¶;ŠÜ݈îà6v[ඈfîáän³Òì`‘¤îXòçè"*‹5XkT 玠‘¬;4¡6*w„x«@Ï•žrtméD¤§"6ó\3ÿmÀè?f }c$y‡ª‹¤Ø¿d#·Ú?^òE¨Þønª2«j4i+ Ô'Íä©;¶½/ÿIåŽÜÈÑ•º>VÒCp“ªXG¸ÿ0XÃþJmØipîœ;*+ÿjVbv;vìL ¨ÆA_,Ðs¥§›;6‰hÚsÓ^5ó¥õ–ôf_ƒƒ¾Ñ>ïঠ+»ÌÓƒ8ˆÐ?bGAò×é'ý=U¤ÙÐ4C)n‰)ÄÆå²o“wÔçØÓìƒÓ7©ô©õ›˜è±?±mØŸœ;‚†èŠ&¸CAnd©ÞÞ-Ðs¥§™L"=•Nr±,ùÜjÞAõV}}YËöô‘äbç±éáFn""´÷ýE8ÞœºÁ•ñH÷Ìd²€~(ÅA´Ö@cšlòÂèŽ +£¦Ø Bî(¥&h’X6Žû}(°£ ÇðõæææJ+óŽú°z\MT¡ßV®w£;4õ>¢u‡t/âþwqmÄeÚK/׿Oƒ‘¬;ŒJm4y‡ñop#Ï•ž²tmé”ÒàL†Ï1Öè ú>ôöy‡8]1â^æá0Ž;ôÒ­[SxäèÚr hü‚b‚à°Šew”Ë>‰ÆÞ•ŠÁÅÂx|Äíq'Wííª_£jU$ëã€RÖÍ|®ô´-¡oŒ$ï ÛnîØd‰æÝ"¹‰Í ÂnܸÎQ»ó ñ1j( ± XæáÜ¡ŸT±¦ZÎA#Yw”ÚDëûçJOÛúÆô/ó?PO&ÓÁQ«Ì‰Bs@Yˆe¢½ÝQŠ"<&T•ìOú_oÏ]Û``G9wèŸ+=mKœ;–ظ#72„…–sG$¡ÿÏOy4ÐäAÛkÞ¡ñpîÐ?WzÚ–8w8,1º£\ö©1ºcÉŸodVÀµp‡Xi‚;(M`ëU¿²5lKÍÝŒ5ÑôØÁûŽîy»ÿÐéS}°¾ÒŽlRÏ¥§Ç=u‡ýÆ”/óÆ?Ðw° ;Š…q. ^+ÍÌ;šq?zìä‰ÞógÇ® OOæš0FŽ– ÍËÜ‘ AÝÑ*DîŽXÿó[¾C¬÷‡;7<8–žžÊßH|GÊÑ»£EƒÜQj—wÄtgê±ÑÑÑ™™™¹¹9ªtáÂ… UhÜ:]MœhóŽÕÐc¯½º÷̓¯ô¾õÆ;‡A‡Ã‘~4yGâiQ8œ;‚ôعáÁ±üðôTþîìDâ#èp8RN w¼?3 +Ç%>å8w è±|îÌ͉ËÅÙÉ…û…ÄGÐáp¤™pî(ÆSŽsGЀ;y¢÷üÙÁ±+ÃÓ“¹ÄG0Z.¾{"ñwhão\ ÝëàçŽôCî(¹0¹ãÜðàX~xz*wv"ñŒØÜ‡6þFöÑPviõ¾Â÷·qGnd -ç–áÜÑê$øWº#鹜LØ÷?뎤ߚ›¯°wG¹ìÓU)wGÿñCˆsGЈÖ™LVCó'ÆêtG&Óa„mÉ£S¸6'œ;¤yîXòçYº¶têáÚG{9qêäñk»@Á¹#h@åsgnN\ÞÜqà›™ßwm9&d=^ò¥èï0Û›ÿÐÄ¿B5 +õ±èdÇ.’G§p?lNHç˜çyšîJa_Ù¬lÎÅÂ8ËæŽMª€_¹öâå@oV‰ñÈ‘Ã=§ÿÒ@Á¹#h@<Ñ{þìàÆ¯ÿæÞÇÈÆñˆf{³Gjƒµ|„Æx ‡þ>ñ³½ùMüU W\}ÝÁBTNá~Øœûß«‡ª»RØW6+ÛXº#72ĺƒ²]ß_T¿ê3 ÚåpìëSb¼ ÐüÐ¥‹CÈ%¦ÀŽ‚;7<8–~öÙ×ïßÿ:œ¥6ŽYÍÖ†)KGh¬ž+î+K¼¡Ç{Ê5àkæÌvãüiuÄo”.ÌÚ`eoNÝ €§>:…ûas‚ëoeH»+…}e³R¨Ñå²OWÅæŽÅÆõ!uEW×!­ä~Zm=¶aÃW6nÜ€î0îùܲâ¨íHY¼aËFwpŽR5Ðè#„;ð+‚^¥aèÏǯ]=á ß(.LV±6^Y›?föNd?¤-š­ÑÿÊÕpWqU=ösŒsG#<tÇ3.ï âË;×¹Ý10 ±VþŸýrŠê:ø]øèàD1™ZӠѵ+Zžj4µ°­h}ĪAÒTê(‰‰c“ü™iÓ¿Úi2dÈÁþѬ6Ž­ÎVë‹(Ôàň(D Š<²ÙÅíw÷,×Ë}œ{î²Ë½»û}ó›;gÏ=÷Ü{Ï9÷üö ÔÆSqÊ$ËOqÝj6Pë|äFÌn¯¸p¡*Hy‡`ɵìî§!”Ë÷ÕÁ'/T“9ËòŸœåÀàI%Ôˆñû-ÔÎ*ºƒˆCÈ;x‰0¸ƒ=­yw¨}zšm(ÍÐ,ÏÿØ?du‡ÛyG̼¹©n§pVÒ^årß~ÒQëç³ýÅ•gÊ((ºÃ3˜hˆkwPÆ“òÿÄ#›hÅÅj0b6›uö,[rÒïwÜUšÇ½”ÜW²w_Éã#4–_®Ø' +µJùYÅ–âz °ÚUž|¯€ZúêÕ¼5áè‘ýjõôàìï(ÿ0¡¦®®fžÛ GfŠÿ©õ…ê^“¸ƒ±M`ÝAFùp™ÓòÙW|~FwØËKÅîhn{–ízsSzZ’Þ©ÙWì…£wÞSÉd‘©‡cƒ^`µukßQñÃ$_¥@ÀomÈ~¨ù?’_*$ãÏ Åá2§;§›Å.—S0qGsãy1ÉI‰}Žn P HZêB|9)Ó;,øðýƒJàX]UNw‡g0ã`I:³Á^Aà¹Ã@ GˆºA„wØËKIÝî@é`p‡Ëå£;Ђ ly‡ºÝ Òî@w ‚èG—;A¤CËòºãµÜžå-ÜÒZÀdÖQYªà¶vGoëò±½WÄw–R¸m–ß8. ?ÜH8bøºBÍ'?³püÕ·Ü&·±‡{¹ÛØÏ…õ½Üš^ß‘Ö<äVtòGrvEϲN)rwl|Àmî&ÇèÜ.žWûˆ&bw8}ä» Ñ;]r¢v< =~ÀAô“çÊûÄáÑm÷à*¸v¸õļÚO„“ÓŸ÷qîN:ÜyużÔíóHö½¡îhÜaÉu€2¢¶9hb|÷¨]<»}ľõH z·ÇÇ>ˆAAßþµ¯®©Ë¶álÜâcã3OLȲOÌ:>!óx|Ö¿ã³O<™u2.ëÔØ¬Ó£3ÏÆþäTôâS–Åg¹…'V¯m¸×¿/ \w^‘ãÁµº²LÛ§³â¥Œ?˜:á@ÚÄ)¥Åÿ#-þóÔ'¤Äý3iìÑ>’{Ä}ôG–ϧs‡^L¸÷e-è׉HóŸ;@Ä䯦Ô{IPÓ~þ "H(Òö`À–s#þ¥“×ߘº©ÕºåæŒWZ¦o¹9-§ujNë³9­“·¶=ÓÿJû¸Ímc6¶?±®Ý²ª•˺š°ªþö¤âHC¾ø¹­f~|͢ɵ™Sk—Yk—ͨ͞^·lÚåì©W²ž­Ïš\ÿÓ§¯-‰¯ÏwmÁ˜ú¹O\N±œI侘Àw¢å’tðîØéŠÝõˆƒŒ÷¼,á8Mq>_‚ fvÝq«ï?³¹ÓöÚÃäíÓwvÍÉïJÍïN}½;iWwâ›ÝÖ7{võLz½7~Go\^ï¨Üž¨M¹•­Ü Çw ³…†çÇýoé3×Wؾúeòõé-/ÏiYŸÚ²!õ憤Öõ‰·×Zo¯Nh[1©ígñmKãn/Õ2?êr2÷÷iß ˆC쎧 +¸„+‚;¸­Ý Á¼>òÝ`)S¸%S¦Þ•’;Šä D¼;¼²°ä?$ƒ6öû$? cRJG¯¼JêÇ,(ƒšØÜNò +|ƒeн‘S£Ö}%>?¡Cr*æµÉ­ÕÊðäçè5†/01þ)L`׸¡ÇúëÞÔ½ ÞêÍØãÈØÓ·ðwŽo;žÇ‘önßìwû­ïô'¼Ý?iwÿø7¾ýÞöþ˜ÜÞ¨µí–Œ“¾”áÿì— P÷ÇWã‹81[Šõ@Áˆ‡A‚›,ˆ‚ÀžáðD‘äxV‘;´“ÄLék2uÒ0¦vj«D3¶U¯™Î(iøÆÇyÜcï€ Ýÿ.(ÚßÿöÎãÉX§vw¾wóûýßÿîÍÍﳿg7väCðuôw:’:ÓW›rÖšóæ­ +s^”%o­%/ª¥sä¶Ì{ú{Ê{â«¶¸¹fÅÌÖ7§7Nc€cC7fÇê ˜K[‰¨"‰&²zvÜðA’„$ÛÛ5$IB'"Jl1¦€„Çœ¶côØqAevM…‹ytõk„‹ö†ô#ŒÔŸ|xÑ+â3XöÁ玃üLuŸ°Ñm;¬?sÄë£^Š³Â”ñ*Ëóð.vÔðó«s¨›®GO_½Ç iËß uÓõ8I’þO$¼‘Jz~‚"ã“=´JËDV0±5ìcOWP¿¬–_TÃ·ŠŸ·‹÷ÚÎÌÜLOÛèÚ2Liâz¹›äÙ<÷HŸNÕ*Sn¤9?–ýâ4ŒX ÖY b¬;tþ[6M¨=7¨;{Œsùµ=až…ôº>óÓåÓ± €cÃì·8Ù4Qav€ôzR¯'Ðch4$!#ìÐàÎ. +óE;+AãÅ1‰…zbz¥côn[/¤uÇ…²ÿ·©&¨ÿêÓ+ú¸m‡õ€{?^?›º{®¯7þ½ýÔåQ¿Ø6êv–Ç–Ap¬ùì‚àËK&¯à£n'J’$IÒ³ *ÌbõP¸Ž‰ÝÍnÜç¹ìïçjùÅ5ü÷ªøWK¹—v2s³éY1s°Ã³Ib=—PÖëQŒEéÑ='šÀ¬»IÖ‘Á@о~qWV8€ÃR¸Q<ݪ]OÆÐ;¢lùkºó‚Åqh=¬q/ÝŠš{rå¬1v&€Q]Dè˜K®9Øa&2º‰Ü^W|2™±]ÒØèd‡Á@ À‡H¶!Aгˆ õ”é¹VLÕc¥ý©ƒàÒ7®>×vù¡À ¯¨3À aÜU®‹=Æâ.aÚñÆ$M&b‹$I’¾µ Âä)ª˜„}¬Ò€<³£Ž ÜËËj¸Uœw7¿ˆyEm{1Έ+ö$&Ê”d@ñz«GÑzì7Yw“ŒI¦<…¥0ÁºKi-Mo€ÖÆÒѶüp'8RØ’½Íñóo¿ýÊÉà± PCǪ6"èÏcìP´9Øa!²z|@­hjÒ4IØqÿ~ˆ;|ˆÈ¨1ö[å +r¾ðOžÎ!/©}w Pû{˜™=¢‰G·ºc¬°RÄ„ëå%ÿÄu±Çxâ ìšx¨$Iÿû‚7RIÏSP^Vîdâö°J=J=€Ò"ÕD5p z´NõhM +®åk8¿jnaç£ã|Šï­ôËñã-ÃHŸb³î&ÀU?›Vš·ÇYK”tY*]–fÕ©œø(PÁ#vÀ–îgKYHS>æDŸ[±Þ§V¿<Ʋ7";d-Ä[·1;TãìÐôÐs$4“±‹ ^Ð ÿö‰rÖç'S´ ßmë•|W˜Õ~Ä t»OÏRÞsõyº›ØAÌÞØúØÑẢýRœ1ž‘jÃDè q—°vÍŽûjâ¡’$I’ôŒ‚ +ZÂ$ígÓ¢Í?ä2rPü)JØbëPt- +Ûƒ‚w£À*ί‚ó-C¾¥È·˜ñÝf}-Áè`‡HŸb³î&ª]é¡–¢$º<®Øl+Ï‚XwQn¯ßtF êgUúZ)_S²oëßOß| ›@ÇàXs›XÚŠÙ1ÿý'Ø‘Ñ-àC&“ €|„46zdn=ê^A:°w\.ÕÞ™º^Çšox…fœã„ÁOܧtƒ•W:@púBßÇŸ|ÁÕ6Fœý½±Ïð‹B\ÿÛ>Ñ6†Ff¤v]¼;‚oà|°«åæàÄ%¹ þ’$Iú–‚ +¡cT (óG\ö;|§6 ªÅïC1{QT VÍÊ+Q`ò/E‹KÐ’bäW<ä—oõÞxÞÑ2x0Áì˜ÜfÝM0;,˜²#èR•­2ÓV•MWdZu©ÖbÊR/–eK¦Ü’hIñ·P‹-Ô’.¥_ëF¿æ5ÞØDÑFDÞÁìXq…ü#fÇ÷ÏáײHé"²¬D¶ÈµË0-œ˜pe‡ÞH–5—ãq`‡8`¯ ÇÃŽUûñgÓsׇqäÅÙæ!¤ø›yˆ›ˆõ—'þþnn°~yâ+í„YÄY8¢Ÿ… ³çááS,|C #u¿c„5wI’$IÒ¿]Pd¢+™ìCHý§~Wþ´¤„²_ËÆìa#«Ù°JV^Æ.ßÅ.-F²"ä¯eŠò­ ’ž`‡« ¤O1YwÊÂìPGÛª³m5jÛn5]™m-K³”(ÝÞêͪåæMKMÉ2åß¹)àfb@sÄl-€`쀾cÞ~';Û­‡Šÿdì0IèDîßfäIvØÇ¨ôeX\ª½e²tÎÚÏ!> ?ì¯NšŽœe 0^ê…e3TíÂʉÛ?:3ñµÛ߸.$I’¤ÿBA±Ú°—Õæò?à5ïs9‡¸ôœ²ÅïA1Õld¦c‚KØ×‹Øe…¬ÿN6 ]¡\±Ý¼0霃L }Š Ìº›$™ˆ¤ÜVl°Õjluùø»:‡Ö¥‹È0åFŠqµ¬+É¿‹ +èHYq#yʼnµ ìpÈZpßáÆŽt¾U`‡Læ‘ÍÍåàì_¦«í g»áTxXí'¦§ÏÜÁ·gãá,í‘û86÷Ϥî@ÚÙƒÛÝîÓV\a;L óãÿñ¿„$I’$M)¡ìkÊÿŒ/ø1Ÿ÷.—yK©G‰{Ѻ°Š +6\ǼQ®,b_/d—ïdƒ´¬¼h0(ßì›ìÎÑäñT—» åd‡½AÛ}°Ø^_`«ÉsöÛÖ™Õ +SV¸Êå])A*ùu*èøZß1vM‡+;"þID]ÃìHëÄ·º…ÆìÐh084’ àcÐÈ._N‚›4eÍå ¦&ÇzLpLùPpõ³£WÚG„ßD€ÅáSCB +¤08ñ÷.~䑸W’$IÏ*•¤ç+¨ZT=Ò}È—ÿWþüÃ|Î;\º£ö¡øDV²‘elX)RÂ1ò"6¸ˆ]U4(ßnY”|WlO&SÖXw“qvX‹©žCºž÷Êâb‹–2ïˆ7o%M9‘]›ÃœøH nO]u’\„M y fDz£˜> V_ ÞvÜ&R:pë ȵËp³að(Ñ@#BÂfJHc#!“ý‹ýºýiêŠ8~Šþ€…ÄìÛX6âö‚§ A@•ÂR¨ÊJi–Š<„"(ÈìdcLFF\¦1q™Ã,Y–ã«-™/6LH}ÙHxh/··­ µ½·à¤ûžÛR:ØfÄ»sóÉÍí¡½¾¨=ßûƒv¯„´#ü¿Š¢¨vÝâ.¾ý+OçUOóžÚAºWPt òs<ä#ï”;§òáÚ×èJ­w%×»’N¸/¿]e·ýÍnò¯í½‰¿lS±c°Ýq©Ó~¡Yÿ¯lƒÜ—AÕ+(>áK»yY´O É'œñJs¢òÆñx{níáv8úÛ–® <¼>´8Úmïoµõ4ÚÎé9£Âam¯´¶«¬­ +ÖPºÐ(côGaô˜-IžÈ‹ÿQšÈØVq8’îâv¼v[lœ¡9¿J +BÛÀ™ÐÚCˆë$xBaC ö‡djÛ…}—£ž‡po­Ow‰›fž´ŒzÔ}BÉG|áYþH‡û@›;÷´{ –ÑŒ¥Ô»@b+¡Æµ§b)µvÖô‡>»=7‘ÍC;tƒìêÜ´½·…;£f›Kê +݋急:×R¹˜•`¾4“'Î&LÚ3!O]š2ézfp8Ä"иޤ3›¶Õ>tÄ‘ 1$0ƒPEýE—3ºÏí̃ÇÞ§<àSðÙg½É=ºÔ÷ ›.Æù€1ä©oÒ31.΋½·Ðc(î +¾ÎŸFÒ{b86kÇz2Ž;×mìR/Š”*qE½È3|0hP ³>iÊf¤pàý_4µîð$vð>–eB™ã"(7â®@V`èÀí É +©FTý2±«Ñ½üW½kv™¢(ŠÚª˜Æ.ÑØ¢*8 Ö„…8fmŒ‹Ø’¸€”@>vKFÜÙ> +endobj +614 0 obj +[/ICCBased 615 0 R] +endobj +615 0 obj +<< +/N 3 +/Alternate /DeviceRGB +/Length 2575 +/Filter /FlateDecode +>> +stream +H‰œ–yTSwÇoÉž•°Ãc [€°5la‘QIBHØADED„ª•2ÖmtFOE.®c­Ö}êÒõ0êè8´׎8GNg¦Óïï÷9÷wïïÝß½÷ó '¥ªµÕ0 Ö ÏJŒÅb¤  + 2y­.-;!à’ÆK°ZÜ ü‹ž^i½"LÊÀ0ðÿ‰-×é @8(”µrœ;q®ª7èLöœy¥•&†Qëñq¶4±jž½ç|æ9ÚÄ +V³)gB£0ñiœWו8#©8wÕ©•õ8_Å٥ʨQãüÜ«QÊj@é&»A)/ÇÙgº>'K‚óÈtÕ;\ú” Ó¥$ÕºF½ZUnÀÜå˜(4TŒ%)ë«”ƒ0C&¯”阤Z£“i˜¿óœ8¦Úbx‘ƒE¡ÁÁBÑ;…ú¯›¿P¦ÞÎӓ̹žAü om?çW= +€x¯Íú·¶Ò-Œ¯Àòæ[›Ëû0ñ¾¾øÎ}ø¦y)7ta¾¾õõõ>j¥ÜÇTÐ7úŸ¿@ï¼ÏÇtÜ›ò`qÊ2™±Ê€™ê&¯®ª6ê±ZL®Ä„?â_øóyxg)Ë”z¥ÈçL­UáíÖ*ÔuµSkÿSeØO4?׸¸c¯¯Ø°.òò· åÒR´ ßÞô-•’2ð5ßáÞüÜÏ ú÷Sá>Ó£V­š‹“då`r£¾n~ÏôY &à+`œ;ÂA4ˆÉ 䀰ÈA9Ð=¨- t°lÃ`;»Á~pŒƒÁ ðGp| ®[`Lƒ‡`<¯ "A ˆ YA+äùCb(ЇR¡,¨*T2B-Ð +¨ꇆ¡Ðnè÷ÐQètº}MA ï —0Óal»Á¾°ŽSàx ¬‚kà&¸^Á£ð>ø0|>_ƒ'á‡ð,ÂG!"F$H:Rˆ”!z¤éF‘Qd?r 9‹\A&‘GÈ ”ˆrQ ¢áhš‹ÊÑ´íE‡Ñ]èaô4zBgÐ×Á–àE#H ‹*B=¡‹0HØIøˆp†p0MxJ$ùD1„˜D, V›‰½Ä­ÄÄãÄKÄ»ÄY‰dEò"EÒI2’ÔEÚBÚGúŒt™4MzN¦‘Èþär!YKî ’÷?%_&ß#¿¢°(®”0J:EAi¤ôQÆ(Ç()Ó”WT6U@ æP+¨íÔ!ê~êêmêæD ¥eÒÔ´å´!ÚïhŸÓ¦h/èº']B/¢éëèÒÓ¿¢?a0nŒhF!ÃÀXÇØÍ8ÅøšñÜŒkæc&5S˜µ™˜6»lö˜Iaº2c˜K™MÌAæ!æEæ#…寒°d¬VÖë(ëk–Íe‹Øél »—½‡}Ž}ŸCâ¸qâ9 +N'çÎ)Î].ÂuæJ¸rî +î÷ wšGä xR^¯‡÷[ÞoÆœchžgÞ`>bþ‰ù$á»ñ¥ü*~ÿ ÿ:ÿ¥…EŒ…ÒbÅ~‹ËÏ,m,£-•–Ý–,¯Y¾´Â¬â­*­6X[ݱF­=­3­ë­·YŸ±~dó ·‘ÛtÛ´¹i ÛzÚfÙ6Û~`{ÁvÖÎÞ.ÑNg·Åî”Ý#{¾}´}…ý€ý§ö¸‘j‡‡ÏþŠ™c1X6„Æfm“Ž;'_9 œr:œ8Ýq¦:‹ËœœO:ϸ8¸¤¹´¸ìu¹éJq»–»nv=ëúÌMà–ï¶ÊmÜí¾ÀR 4 ö +n»3Ü£ÜkÜGݯz=Ä•[=¾ô„=ƒ<Ë=GTB(É/ÙSòƒ,]6*›-•–¾W:#—È7Ë*¢ŠÊe¿ò^YDYÙ}U„j£êAyTù`ù#µD=¬þ¶"©b{ųÊôÊ+¬Ê¯: !kJ4Gµm¥ötµ}uCõ%—®K7YV³©fFŸ¢ßY Õ.©=bàá?SŒîƕƩºÈº‘ºçõyõ‡Ø Ú† žkï5%4ý¦m–7Ÿlqlio™Z³lG+ÔZÚz²Í¹­³mzyâò]íÔöÊö?uøuôw|¿"űN»ÎåwW&®ÜÛe֥ﺱ*|ÕöÕèjõê‰5k¶¬yÝ­èþ¢Ç¯g°ç‡^yïkEk‡Öþ¸®lÝD_pß¶õÄõÚõ×7DmØÕÏîoê¿»1mãál {àûMśΠnßLÝlÜ<9”úO¤[þ˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ +¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿ ÷„óû +endstream +endobj +604 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (ss_aluminum.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 616 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 316.80001800 252.60000600] +/Resources << +/XObject << +/Im1 617 0 R +>>/ProcSet [ /PDF /ImageC ] +/ExtGState << +/GS1 618 0 R +>>>> +/Length 67 +/Filter /FlateDecode +>> +stream +H‰Òw6TH/æ*ä264Ó3·´´´°P0B#S#=S ×ÒPÁ@ÏŒa 3…ä\.}Ï\C—|®@.€Þj ò +endstream +endobj +616 0 obj +<< +/ModDate (D:20040529162831-04'00') +/CreationDate (D:20040529162750-04'00') +/Title (ss_aluminum.eps) +/Creator (Adobe Photoshop Version 8.0x118) +/Producer (Acrobat Distiller 6.0.1 \(Windows\)) +>> +endobj +617 0 obj +<< +/Length 41431 +/Filter /FlateDecode +/Width 528 +/Height 421 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Type /XObject +/Subtype /Image +/Metadata 619 0 R +>> +stream +H‰ì—gœTÕ‡çsŒ$*šÄ’Œ‰TÖ¨€Ž])Š½ËØ Ê.E)3€J‡¤—U@쮈½ êêªHï,½…dã§ý¸yÎü‡“ëÌî:3 Lä=¿‡ÿï2{ï¹÷ž{î}λì‡o–†aFƒD"²Öš5kÖ¬Y«¿Åãqï‹n.Ã0 £`1_†aÙé‹ßðȾpȉÐ~< +‡žœä”ljS»üA4)þ#4uÖ´ä°ÓJwt=üô®GÀÝ 14ƒîGBô8 +΄ÇÿtVŠ?Ÿý„øË9=áèæð$ÓBô:¶e’sŸ:Nœ×û¯âüÞ;¿£UŸp«¾áÖŽã[÷;¾M¿¿‹ bÿ€ !~D ÿ‰p‘㤋ˆ“/(N¹ôiqêeðL“ËųM¯ƒN»2ÉUƒN¿j°£íà3Úq´Ò¬ÝÐfíEÐaœ W?K\3üìkFœÝÑqNÇ‘ç\ëh~í¨æ×9Z\¥Ðò çÞcλ)Åù7­nyN´¾uœã¶qmãÛÜ>þÇ„ î˜p!Ü9"p×Ä‹îšäè4éâN“/Ž:.‰N¹änÇ¥pÏT¸ î—ßÓáŠûEÙ•8®zðyÑö¡D»‡aF»Gf´wÌlßyfǬκZ<öâ5Ðfw„âÙ׿ä(yé:èú2\Ý^ û«pcñÚM‹×o~"Å-=߀[Ÿ„7á¶^P·?•¤÷[wˆ>sî}ß¾ ú9:õ›Û)67êx'çnèÿ.Üà½{a ¼< ÜÿLŠžýP<8è#xh0| Ÿ<24ɰO;‹áŸ=*F|ö؈„cd¢ËÈy]F9ŠG}^\úy‰ýEW_vƒ±PÑžsô÷•x|ü×≠•¢çDøæÉIâÛ^“ÅwOMI2õ»ÞSç;¦Íï3í{ÇôïûN_зÌÑž_1xaQ\ÌXÔÆýg:Ì\<`–cà¬%_t<=–Â3/Á2xöeX>蕃_]!†¼¶R }}•ãU뇽¹z¸cÍðò5#à­µ0æ¬5gãíu¥o¯/ë=wÃèwcàÝ* ïm„çÞ‡M0î±yü‡Ž m?Þ*&}Û&}ºm²cûä϶Oq옒Ø1UÌÛ9 >‡]Óá‹]e_ìv|¹ûy¨ø'¼_íðõ¿`f¥ø÷¬oDõ‹ß:f÷Ÿ''_„ÃáÐÞÆþæ ó…ùÂ|a¾0_dšÂÉ" Eã¡x’H$ÌC¡à>æ ó…ùÂ|a¾Ø_ÔæÒønçº~gÉÞN¨!¾×ѨCÛÉŠƒ¿Çb¡X,b¾0_˜/Ìæ‹}ô…>Â?‹¾Û¹îŸßYrð…—E4Š¢áPÜÕaþ[TZŠ-ÊÊðE8xˆùÂ|a¾0_˜/~M_„êo¿š/DªšˆF#¡ÿâÑð¢E9 Q-./|”Ef9ƒ/Ò~‘/´-_h;è‹´CÌæ ó…ùÂ|±ß}Ü'ó—œ}¡â"‰+5"‘ªªhyyImm¨ºº(6‚¾P}±×©úBÿU}¡í,}¡úBÛæ ó…ùÂ|a¾¨Ïuî–M}Dš>ró…3D¾H$"‰ª0²(*- åë ¯Œ”,š–Ôç‹ÆÍö*#é‹àQòEZ1‚/ü¶÷Epó…ùÂ|a¾0_¤)#³ÖØ/¾ˆÄã±D¤¸¼Äýžµ/|k””…£Iª² ÄÈÒÚP}á•¡ Õ{•áꋽÊHÉBõ…¶Íæ ó…ùÂ|Qg•‘§/Âa™‚j‚R"è /‘ð>Ôyû"ØÌæ ó…ùÂ|qÀë ŽEÈ¢¶6T]]T§/Ø'o_?ûyÔ˜B˜/Ìæ ó…ù"?_5‘¦Œœ|eeѲD¤>_dÙû"UY4)¦¸H)£_¤dѬ»ùÂ|a¾0_$¾e´_™=ÉɱX$£ÆSb•–¦ùY„Ãáì}á[£@qѰ/|kŒ,’¾8²¨GÚŸ²ñű-{9N²0_˜/Ìæ‹ßŠ/êk?[_ül“/$ 6ÂáP4 ¡ï‹h4œl™²/9±3x_zr’d}áHúÂ,’¾€Ãš–}qœÑMõEãfÝ‚¾8 +~Z_` +/àèæ=å‹cZç G²¾p˜/Ìæ óEaû"›/y~_þ_™:øŸ/"‘:Ma¾0_˜/Ìæ‹}ñE<ë&_ä´~gÉÆiP×PhDÂáòâ"W]„Bæ ó…ùÂ|a¾Ø¾ˆüÂ-¿³äç µx’ˆùÂ|a¾0_˜/ö«/ +™œ|‘=æ ó…ùÂ|a¾8H|a†a™dúbÁ‚{ö쩵fÍš5k}[¼xqeee}¾@555kÖ¬Yºtiö¹víÚeË–)×­[·|ùrrÅŠëׯW®\¹rÆ «V­"W¯^í“ÃI$9„dç ?müRUUEnܸÑç¦M›ÒróæÍ™Éá>édË–-î“Iþ´%жnÝJnÛ¶ åöíÛÉ;v;wîô¹k×.Ÿ»wïÎLúñÉY|r^%Çr%ôFÒ?ɹ¸NÎKÒ É!üÎÎl³Á½Œ¿0nü•1$ONÄ8sIy$ÇòŒè‡TŸœ…äŒzR$Krj%%9–äY“<}þÄLð™Ó\²yeóÊæUAÍ«9sæÔç 6¸6†4-iºzãÖHd5H†š &µMò ØGüÝgŒÞ¸e%ýsãõ%}¸Žª¨¨ˆÐ6þ|ÿJf¦^Ò`2&OMà´ñ¯­OîÔ¿bJƇ_1ŸŒ§OÆœ~ÒÒ?‹:ŸHpüýSà\¤g’k#¹NöáÊýÝù)͹6%[áÏ’>¹#?æ¤^p½ø4~!ÙS4ÿÑðŸnß§>€þyéÃKÜ‹’N8#ú´9cs¦ç £ÊÇ­_h  õ€Óšd+psS”N{PãÔ\€­m}X€ëC›W6¯òžWÕ°/è¼²²2‘Hhm «fVJÖ'ÃK2°¤V/ZÏhx{ÊÈÁÛ×U¦Ý~}©}´2ѱÜÔ’… G£Çĵé5d ¹S¿ÊÒZ…1I{}2WJ9eæšÊ§©ƒ/¦^|=.ÒOu­Žh~uDê¥ÐkB?ìOÏ$çUú9Pß<)üù£ToÁ×3m=æW}¤Ö™Jž ûøgMòbÒ›>˼˜œ‹¤%¿Ó‰^^½ÈþÕ¶ùcó§pæcذ/¸555lkM¢ÁϬ;‚7,6ÓJ$•Q*¬$ ]°/0Ó.• À¹Øæ¼~¨|ó—Á«’ +Á\‰_èeÑ‹£ÕQðÅá‚5™ |Tõè7'[pÅ’¶VáwMif ’ôCÒ'IÿìÉUqTðª¸UJ>t¢ôUUÕ8ª ûBå²øñÇ}9Æ-p¾âðu‡n*-u³A“Ê­2»Ê[¿¡Ÿà’Ül°ääG•œ™…g0 ÁK–,áÞ¹AJ9MÈÌ5¿°­{jÁf@|2,ü®Ôª Î±õ£Ê@Ñ•O­÷H†…•L M Ÿi“6mê'°O®A3¡ðçƒOÍg’ýé™ä,ôõʥg½8Á{×K§•O®x.ú¤¤%Ïšn}Ò9Iç$“6l>üÿÎ6öEðÁÉ5$©²HFöuG0ùk(Ê,š‚åÛ"í£AÓj05°d®¿ªO_FщŸÆz¬zÜ…à‹yóæUTT,\¸ëáâum~½¡¡G¦&U´ªŒõ«#5Š{÷¥%2šB>³|.u³ûø\¸‹lž‹^jv ùqE²ñ’*ù…ä’}Hÿ"k¡¢Y« `j<}²'ÉQú˜ÐÆ6ì϶ÿ¼ì—ç¢'bÏÅžËoþ¹p û‚q¨¬¬L$ÁâÅ{YFý´Ñ9ÉéÈêêjÙÊ›KeŽÖ P°ñKZoÿe¿ìZ«J²0윋þ}þñNDHâEˆ ñMˆ!Dæbfzœž5™4’«ƒÐÐópúJí}ö9QÛs2]‹ð²S§jUÕZo­FØ1¨NÇEN%J±Ê•Îo˜&iã/_¾$_`dÏÌPÔo¨‚¿ørrÆ™l÷Ç]¬¯¬ +¼;s°'~ÁÎh!í µ^R'»ø$SiØK¦–ãײ–“œUÍv||üe˜J/¼*i_†Ž0êR¼Â¤ eXòJ —&ñ +%XŒåA‚¨¶ & ) Õ#:‚“.¢'È.AöM]^åû‚(™Ê+~ņWWSy… ‡óF#Y0g4¥=©FãX)Ù¨¦Áé¶9R=¢Ôíjc!wý•åÑ_= ±›/~¹(ß0_ôjã>\YYy5–œÜgå·-m¬¤Ýl'AHÅLnÛ9Ó:ê§±`@)‡ß™¢LÅò(Ð`m òd˜#–ãÁÞPàiEôC¡IhÕÄIX¢“UœI¯Š02Ó0’§:;gÐÀ]D”„-bÒÅ’3"´§¹|à °AÏà©Dìà bÏ 6·è*1¾èõHiÿx½ÀØy€3 >33_Ïæ ç ´±Éâüü<­MyT2NâGµ™b„Ué/RØ[ÞXêØ6–Ó\é*òãiîÊîÀL¡~¥¤4ç{óE7Ô—í†ÁüTµ$ÝU½= XZZÚÚÚzñâ…Œ'çœétenTujéæª»—öäÛÞD«ºÊœ[Y5HiUÖ‚¸äT W‚u­j)R¹¡Dd„Ý™iÃkµæC†“‹U¥Ï™_óL¬B­H YÌ4\pþŠÌÕ³õiûØ 5hЪ½Î“kÕpÕ’JÒ ôv,S¹Ú¬Ú¬ú‡²*÷ÎÌq»lmA’v’½®]”ôAÚ)ð]Õ-],UéˆJC…éA¸,H3vóE)É öU^p¤ü)Jµª·gá÷ïß_[[{úôéÁÁ¶ºö[š«°÷FÚª÷î•=ÇVII~Hˆ× $‰•J[…6¶Ÿ¬ÒËhÕªƒ™V©÷¬ë ?áAjåyNBæ8ß"„Ãc‡ŠWe}hW V•°uT·î¢3}¤òʇÌaÐÙlÕlÕl5ÕVSû TíîînooWÍ]™Ë(×Õ« + xVÚ¬º]eçRéO£gkKØÛ_”r­è8üΜ²éýˆTzºù‚þâùó瘈SA€îáØË­ÊiSŽ -=KÐ+…êÝvF~&"3­»|zp_€°Å*¿À–¿…k¹’?é[¥ºµˆÇ­ØÒ‹®J% ¦B³JÙÝsöòÇ'É‘;æù s¬ñ²6ÚÔ,rý û²*h½ZV­úZ„h ,ìexG‰ü)Ë<ù2߀ìbЀ`LÀlüiü °Ãp¾@9É‚9£Ñˆ-Ì€ªB£“¹õ¤.@á"¶?Ì QÍ쉜¸†›r<¦9Âwo¾À¡,Q2ìÍ“Fº‘R¾¨º’á|ñàÁƒõõu²­­e·í*ƒù¯®¬F°Øðœ.¦Œ_lBYKUƒg­m@L ûôÉÄ/ ôË_Æ‚åEFzýÂLPCžy‰ÖHAf‚¬Ñ€*Æ7Ìçô$Ìñl`j-˛̈O5A•…X@¶±Œ˜j°‹“žaù›_š_®¢_á|¡³HçççɃföt‰`© º±‹UœobR‘åV;%&ÖÙÖe ÝŠÚâÜ«yMñ÷Ë«zû‹gÏžéGnçù¹‘æâ›£Ú"õÚªŒüéã2‚Ó3ŸÐq¾ÁÌ©*FmÐ[ăˆ_¨œÉ¾åINØ8Ó83Àvν¨òxYwë^ëj%ql _»(æñr$š ¡H7OÍ*¶ ³ä‹rU5Ò›/VVVÈ{{{Éãž\jù- Ë{éÜ®õbçüËwFøÐ/~·úªÕ½Í/Í/ßÖ/Sû .²»»»½½mV2[%g¥ã°Êõ»­¢õèhÞÍãŸ.ŠõI9‚©EÖ:èâ*_˜º]À/¿IwNw°üè.¬ôs€»wï>~üxssS[?”•ï·“Bæ ¼VÞ+—ÖHUfò‰ñ-=Ð ²¯ˆ‰Þ¼y_ +]%ªÍÒƒ[S±{Yõù´ã_=^²¨äÏ$tŽ!k§ò§¬6Aù#òÌ™#sD˜ƒ¶Š?Uˆ   ã JhˆN+½„ªJïVø—Ân/D¿þ°»üÑ/¿È«z$üß„šÆŸÆŸ’?œm8_°œdÁœÑhT¶B¿wãÓÛšU Z‰ž-'ìæ‹ï,`yyùÑ£GdÛÃÃÃÐ;p lÄzÚ°‹þZ"´g/ÉóÐDmm&ú0}¤"ö bsôTXQn’/Ð/È ÏIòœ3<êI˜»° +4tÄæ Çæ´ûDZŠ È 5s*çgZUß8Ó83•3ÃùÂü¢ÓãúdÕ’T•)4—Ô}fÆ©"•†Wð‚Vº UVA:úíXþ9 Œ ÍìlÖæRŸ?ž#^!™Ýª uÅãÖN”,Ñâ)ÐÇ+ÁJ_ãåøZ¤ÚD‰˜j…xßÊÖ‡lÝ‹Tuož‰õ˜ÅÌ+ÁÕfÕfÕ«bUVÝœœ/¨“Yk{ed ÆEk/›6Íœ[fFTQ(V9½Ìæ`eäÊÔ¥Áƒœm7Çq»ÉTÁP§§§ôAaRš{2Â7fgüŠò!hô„],Ï\Üä„©NËr‡ òHäÁyÂÃÈ*‘ùhÙ=ì |øåÝË®ÁJ¿+Äר ¢D9ˆòƇƇI|¸uëÖíÛ·'å‹ÝÝÝÕÕÕyÖ¾_!óŽÄWCæí¥&Mš\!YlmmMÊggg¿^A¹ÙòÅl‚¡æí«&Mš\ 9::¢‰˜”/H£ÑˆFæøøxvL÷Ú=ôMöP }ͽ’=fЮ“…vv “ÿqQ¡Ei‘‚4J¶|1£`( è^ñK‰ïÞ½KoKŸ‹°-ˆÍõˆ©A\&ò+ÈZ_ƒxŸŸ`BðR\Z4^a‡.²<ˆ,Æò A~úw!ØÄÎ|ˆïß¿?|ø~üø1xrr<==í"z‚ìd_‘µœm úAöâœì ¢d ãLæ›îb+F°¿bC9ÀFr£bËìØxu¥yµºº:)_ðÁÙ0i…ˆAW1ˆ%ˆ©90è7ˆ#˜#–ãÁ^‚¡+‹èçâ“÷1‡“°ªå‹Cmnn¾zõª×X>^ÀÎ`ì òL@8ÀøJӟƲøœÑÉ8§¡ôûðF@fÐ4F¸~ЈÑÀ‹î"¢„YL–ˆíiH)CMB}Ð3x*û0‚Å‚Ø3ˆÍÑSa|Qz„0{ØdÁæØyÞ§ørÑïDŒ|©h@¶··ó´ÿ:–ÏãSóÅ?Üù>yÁCmmm­¯¯¥Õ‡ÿ÷õá7ï;ÇÅÆŸ› Êëׯ?}ú„­ö÷÷ç}–/žç‡!Ãùò,˜3R‰u;‘äÙ‚T–œÄ<Ñ_îŠwÇçœ{r!©IR¶®–æÎ™33göžµöžLVVVúhLe\m&–Ü,™aÊÛÊfÍÖªI–——¡`ÖcuvR˜”8xöìÙµµµàˆ^¤¸Èo‘ã—1ÿC¤?þøéÓ§Ÿ|òILâ´+“oS‚–l ù7‘0‰ï% ÀEâ¡Å$uÚ‰g˜x†V1S%™9$ß~{"™<7êQwPÎiÚB“C“C“C“ÃÐ~¿¦Ð£ŠÃÈT%Ö2C¡9õSeäl}c{¶&qþxàæÍ›\™™¯0aÐwEÔ +;‚ÛË%L< ÓþpÜÜýNÏC¡‹èÀ× gðîî®àI^mêŽä9ÒÌcÅÑ…~cÄXйå:äjäšäÊdL.Q.”™WWWsѬ¨m'Е4Rçòš¤ÂxccãòåËëëëŸ|òɈ^Te±`‰1Èür£_€üÜzä×2õÑG}öÙga¼xmÜ/E€!C~ñ4An‚‡‡gnÜX6•vЄ’ç8ˆ“¿šÒê\ EìITBìÉØ[ôJ‹FBoE\*÷Ö0^ð”Ü£m|e×!Lk@$ zä(<‚U Ä”ñô¢Ó Õvî‹vsÎ÷r_|cÇ/î àexxxxãÆ ìííÁ|û/ó‹åâ—“OÆÂ´ß7V¿í|(ôâŸó­ö/ÇõÂÇ cL(J…JÊØ¶î@‚PL¶ˆ"‚É^*“ñb²ÇHÏ×ÇMȇ‘§ ¡ð¶PÚvÒÇóçÏïìì@N™§).Ò^°Äxì¸ýx\AéyÍA]¹r…^`Ä_¯ñWjÉÊíù±ÍíCæ)L.\X¦×P›ÛSªÜÆôCíëׯ?ˆ•ù÷ëÙ`QzEÔâq%ÚçÅU‹ƒq±(Ép#¼^èEá(s­`H¾¨¦špÎ….c!’ï£y +­RhݪS"7¾1òd-û´®ûB nõLntn&t†ÐyZÈ9[ša-—öÉp  Õù›7¸ót|ü/¶0í7GÖáŠê_P/îûö´Á*i°>r7Çõ"Da¶ýýý*W…Vò.(>ÞÍžéLVÙJF§ìõ®ùÍ“,ÔàÌ,hƒ.¬Ðõb…w. N§Ó·Þz ^»vmž^D#:¿qFí3ÿ#¦ê‹S§N=õÔSà ãþÉdkyù¿Z@Ôˆ(Èwª).\¸°µeü²Ã—»ÉPòØÍÍÍéôŽÜ'fªVmïWä©$`^ÌižDNèn0f +“{ÆLž +ž3g¦++›A[áḨîfÙUÐùèqb…Ä.øÁ8¢íííà;3Ìž[4ÒN +‹¢Í\^°´:´ho¾Ñ>ñÕù:'ß‹˜á°¢ 9­hþZ·ÝI‡–ËÓЋ>ù¶ç=/¦ýëÝl½˜üîWÖ‹Ì·Ú¿ö¸^ˆÀ\ÛäuBW¶ÁCq„åÁÁU-–p„"µŸ™ôÝÌ„œ×'‡·m¢|:(ƒò"4tþ0d•ë“>wîœ;xöìÙ/¾øbP/Úâ"¶H‰ñÈëûüóϧ|•×äŒàÒÒòäåøšË‚*N ª&­ +¢M +½ (KE­êßG¦Íh"@ÁÙ!À`^)9ˆ@ˆ +OÍRíh¯ýë ÛAŒ ™j¶ÍÍ6V}8kcµª†N½ &ÛŒÕ?þøâÅ‹«öðᇚ¼v¥Ý9Uývh¤ «¶Š¤:œQjÀìß7Ö©B³¥ZŒÝÄBŽp³‚}]ðT-—³=ùúâ>êE[w´ª4¯¿caÚ?oÞU/ˆÅ ‹iÙ=nxä+¾Ÿoµñ6®¼»»[×$ Iꎄk…e§§UÞöóHf#[œ…wBÚH·ÀÒ¹¶Úv¢ß%Þ®$tß|óÍK—.Ikõ¢_MDAÆKŒû¢ýó&?aK}qúôégžyíÏzÊkÜ3$[ny)2ÑFl¤! +ZNÀ”Ĥݬ¿rø¤7^í–Æ®­øKêªÏA/Î(wr.ŠV•QK×íèÐ8ô.E¨û2±Ó‘W_}Uq!t½ëv˜yð¾í„ØMâMãú~¹1³ò‚•…^¸··ÇSÐñK¤<çYhdŽTûÿ\/n-`|=O/LK&¼- ƒ¿Ó‹¯ónû·ôB`ëÅ`f•ÌæJV}dúˆüÅ•·Ä˜ ÷b¡×]¯Nfr3ÑÞÚšL§ðLe­žš§Ÿ¡… +ž{î¹·ß~›^À~}ñ› Zê‹k×®¹øH‰'“­NpK!?êÇEÉ{ëÌ!²â—ÍM¿ÍB7 &fŠÌkŠ–¤—ÛR‚ÇK5ª 9Õn-qL´ä¶ÆŒ}¦¾€ö–ºÃ®‚z¦Óiª’ :-”¢˜&O»“‡WEF”%óÉÞ¡Ó†/^|å•W.]º$NÚ´Ocì?_j_QõË·3KýRßÍj<ßµ¢?«—Ô’Ä"èë ÚVްªŒì¶ölWAó[’¼D/yòdôâ_w³âÛÁ³º#3i´û¸áAËWüm¾Õþehãz!h ÞÝÝ­ íäWP¼ýx¼¦hÑÓN=ÒæW¢ÍF®ùüó«¤âœâ Ô#óò«õõõË—/Ó‹gŸ}ö7½XÐÔ©S§žx≧Ÿ~™ðæœS'NçÕ‰ÞR]úž&AP!al¬=«/.ø 9ë«™…lST˜ÓV»òÞ*7òJéEò^m#µ“÷V=¢-ÚSÀdàÆ¤V¬GP1Ù³ÿN=ò]cƒõHU"ýzDAšëÖŒ×##÷%ãón[øÆ¾_:u¢+Æ;W¯^%+7ojûL~O=Òú%ØúÅ¿X"ËvzÑgÎÁžŸ5¾óÖ½èÅw³q½øéH2aøÿ^üe¾-^_ˆObaŒ µ…¨¸ VÝ!Gj1OsÑ’ ss QPAúˆ‚*»>3$yppÀkh¤pÖ3ýòË/¹]@D™æ\y,O!ŸBêЩ4›x˜¶ñÂo«×”eUY0ªa‰ŸþÓÔ³…ÉÌï?#Ô CÚEàP‰…jÎT•ØT~L߯DĶ +è`¾Ñ*F&•â—Žà¬Ü${{{wJÁÍM»u,vé„‘c3CëQb@œXjŸL}ñ`Z˜öû#ëÔÕW½øéHÑNvûw,_ñçùVûÛãz‘ 7Ûþþ~•¢PtéWPÈ%#4O˜ñPr«:H¨Ë‚Ò,/½K'˜O۫ѹ€A³mmm½þúëï¾ûîÚÚÚoz± 9(ÙÎÎŽs"™¥¥ ^#ÔÏwšÊù¯/nãd²…šàØ/—ݪ’+ {œçÈÔøø òy&‘ȈÜÔ0Hè†LÙ†ê4Q°’‘%.rË€‰±¡} ݃¦C:­vˆl•ùr>±RÔ>{³mŸs|lí%ë×vªU«Výµ.D£á ˜öªè4È×Ë xµ‘ˆs”Ø×µ$Ù1œÚ_9“ƒÕ$…24øÃ^V¦6ƒ˜ Ã1ûÛ¶02d-㢴—‰Ž†_Ñ#²*Ky(aG²P¦Èõj`rYÊ`œW)NLLømW¥ Z%âF, Dü ²HiòÅ‹D"Y¤ƒuòÅ»tÝOñU¹„ý¼‚ê|a=©ArZ×Ù#À¨ÖÇ$­­*ÓŽÃ9Aà"v¬£b¼páÉâúõë—.]jòEMéØ_:¢õ¤hGt"Ô´mƒoß¾í¬&2þDßkùSìXEXÛ?ÊŸƒÞqØ_¤‰’» A{ )¦½ibä½ +øi=c‚@ƒa´Åû{[$0‚6«;«¾&_ÔuõêÕééé‡Âj¯‚ÖÕŒ[{SBp ·rS ߤÞ5·w-òšP"F·‚BnßÊÖàoÝ‹duo„Vm`¤9fWaûÀrµ[^5€÷Í«lg0¢d¿Ã^¿…›âàjÈÒÒRš/¸…ý¶ýÿ—>zЧOŸj?¨Î0Š’,¶¶¶à’]„KlÓ¾C\__÷[£9°Žù>P Q·0ÓZ%*F+CˆÊO< ÚÇ(Cæ8¿É5G]»vmjjjvvvqqÑБ¨ÆAîÌú;Íb÷QDgŠ ã†k.ÒñÊà¶w^±–S`<§4_qÆ~¾A¶ó›877÷Y#•‚£ÌÔWÐûáRu¾°Ê‚fP×Öü@Ñ䋚‚£&''oß¾ýàÁ(}èƒê 6‡ÀW,Üh¤†à±í+hY/|8Sb°D´ïj¢Pµ ´d•ämcQÂ4~ò:PˆBÑg(ÆÃ ä±0DC :AôƒM¾¨)8êæÍ›·nÝ¢å\ZZ2,€8ÄÉ î%DàXo_&NùÆíƒÏ‡³Ø€¶@vÁ¶Àª¦6g–ƒØb!È‘ÑÃÇ7m1` Hè ã >{ö,$R¬™f]L:¦*4c˜ž=-ù¸Tq/(áN3ä®Qˆò† R>pÞŠ|±¼¼ÌÁQè5ÅÁŸ·…¾£²Ê²^ŠZ‹#ˆ˜ÍÑ@ê«¡«Dõ Y'Ø];%xÈòÅÐÐP4ã¨+W®Ü¹sçîÝ»8CªŽX]»ŠÒJôF"|øÚS°DäŒQ“W sÀtmhS³Èñ³àc8yæÌᙳJ4 œyòìeÍ/2^ éØAæÛe„N8~0˜ð«]It1,¯`H56ü9ü9þüØØXY¾xôèÑÔÔÔ©ƒ)ÝŠ¨C‰tKç.lè‘fuôèÑcÇŽ?~üĉû}i4ÒÈà +ÉâÞ½{eùâÉ“'oÞ¼ywåTWóEÇï~JOóÅìììÊÊ +ÕÅæææ~ß[#42¸²¼¼LQ–/HÛÛÛôY´fõ‘ŽŒöM¤¢‰iâè†DZ¹hm$E–ƒÑx‚LþÛ‡Â=HH¬Ë°×ù"ë8ü(ûõ?…&¥z~±£é]ƒ£nܸAù¸-´œÜŽHÊÑ“‚ô§Ü¾ñ¹7âj+ùd-È]ƒÜ>?Á„ÀqiÐx…ŠÈò@”à1–²ä§ïÁ· ~æC|ùò%øêÕ+ðõë×kkkëëëEDO »²¯ÈZ,Aˆ~½°“}A”€,aœÉ|óÁY@|Å~ãW|(ØHnOvŠ ¯4¯ˆeù‚lÃ¥Îͯ|ræO?øáOw÷÷É™?ßûb«¸Ž;ŒkâÈ"×ÄÁËëc×Ǫ¾õù;Fò,/ìe~… {uùòåÉÉÉéééû÷ï9À“äÕô_ãç·mÁŽÐ"hDÁÂ@ ïZ4ð¢7(¢æ³00Âxý5E4°JÌBM„ú@mÐ*‘7ů,7HØüËÂêñ_ÿ~×Ïüç§>_øòköâUÆÛ± ÄNÎ…åqºƒØÿ][1`ê+ :M:7ÒH‚å̳Óõ8¢“…ÏA“¡ä ^%bTä H233ׄ’_|zåÇ?ºúbw¬ýåoÿÐÓ<ÞÝ|Q³_¨óëÞçw=_œóŸýæó¦ï8L}«ªóÊIÌÙÞÞŽ¬Jñ°kù‡†Èbfç8>h]Q<~:ÇÊĵ=ê/Š#Õñ|§ñ_òÅìììÊÊ +ÞÛÜÜ|×wáÞIÛ•Âå2Ç|Z´ô”?¢í ;†~ÌH뱨ú@ëL‘7ÂÞ «D&Ú Ëá›Slß"›Á_´… M¾¨)ûž/óſ˅7ÍQׂ GÖœi8‚†ëUkW~5ݤd‰*Eæ¸cp3ºÎUÄPƒ¤u`V2n à ²DˆNýÌÄ*V¥VaOX%ZQ"FhEaxÕpŠsºòÌ;z•ÀžF€ +¯rÀþ{µ\Ý»WgÚ¢U~½Z/:¶cuˆ44ôŽ¿êþ…`Ë¢™íR—‚6m9´å,6ž)ö4_8Rœ“ýºÓù—WÛ³kœ|ñ¯rÉòÅ.ø(ŸAù Â:ôÀ@«\4Ž|¶î裋Pƒ*‚Œ!%ÃõõuÔ¢D9ˆrå ªX2·#3­*Ù èd\´J4˜Duj½jkª@Šœ…"!Âð rFóv%_°¾ÂÎS›3Ë{8`> ŒŒ9r¤Õj‰ìÕjM92|0¡&>ü¨-2!ý6©ñQ/Ø‚×J¢a²¹¦N¾0YTç Ý¢‹l¬tšÔ™:V'c‰WÀÌh£PÙgîuw1_tWêDûîf„jœ|±V.ÅþÂÀÈí§@c0'†o>˜Ïw„æÈ™¨ ›>%|âŽüÇŒ¥Qµ*˜ž§ÈB˜éÓ„±¢,ßE”ÿ oÁa¸0tôô½è &€œñ«¶Ä3ª-Åg÷BÈ5ü¦XÆ+î… Í„Ž˜IŽ˜ô«ï ‹‹‹?ÄÑÑQòÅèèÅ}¹½’šÈÈ9`$> {ßNß‹iÂ÷âw¼ì¬ÎødÁ^t4/Õù"’Eu¾ˆ2F8hzÙ1C,)¢Z´|‘õ Ük{B'_¼*—,_X‹Öº>ƒŸ¾—nñʃW˜Á‹`y A~*†¬vxiEH­ „Ž@‚I!È »ÄûF]¡Ï0È^–}A”¤á”o&pëv«MÔâC²gd!¢+ý:ÙÅ ޵;ù5í zY_°ººº;Œ´ƒ0!NÓ”¼"m‘)Äùùù@dddœ¿½óŠKLãJÊxõ}"Ü (£öÈ+•òJœi‹i"ý–Wø°:_x¡<ç­­­hZ+ˆi"ù8Ã_G"I¡¬DI›SËépi`<„"ú«8hùb`epòÅ?Ë%ËpkAS<—-|gøÞ)gD4°JD³;úÌÙ3ì;D-‘ÉV¿ĸßÃÃÃ|š@‚•E—˜Òž­âù °–€&:Âãµ:ÅÛ@ìd–Çé >&‹‰‰ l`Ä0¥¯@4€QåNÑP³¿¨ÎX…N«hÂ>!–!–°/ˆ%œHŸc3h(6D#ŒŒ¼—Ž‹‘*ºÅà ȃ3bÖ­ÐJ¤Hš™hµ.¦œÉ¼‘¥†HÊg¼DmÃ?ŒÈQ¶täŒléÈ|ˆž”3úÿ£œ)KÛmqNu¾@›9×ük;S–/Òžâ}‹q¦,_ü£-:|ãC1Kâ‡hîl1ÆV”~ºBGéºÿ²_n-VfGö9Aîs™?oÞIÈA“ Í(I. ±µ ñ0‘ ‚P£ihé8ÄSu¢sºˆ06¨ãLö“~Y³¾CïÞîîÞ­»øxùöÚk­¯V­ªz«`@pÊC +†Š«Ã¾$“ç¯êg9g\|ñïn©ø"ÉІB‚0Õàã¥WÄ7 7ƒ‘PÕŸõp;“Ò“0!ý…¾Š­u¾J¶Ù±cIF_õìòÕÒóM5ÔÃè&¢- +8'5°¥)#b­žMòÙ ä+333™Iý+Z©Ôþ‚9cé/Z­Š d¬šš¹Õª£eïZ¬¬Ê™É†±*×ôj ¼ÐJ”ýEº ÈbPûàƒ™Ð+ö½¾\e«U-]â«eTÿ–¾:«–Q¾kUÎÛÏF+D“O3ÒêH+Q>{ø¢ª b4™1yIƒó")cŠüå8Â1±˜¿¦|1¤Èö%/T)Ý‘ŠJÆËÿHU­9XñE*aû<Äš*²(Q¿’PL›2ûãÒÇ¿)”åy_ZZùË#6™ƒ7ì–2±ªO½šÚ˜p3A±I<ßT–÷òì«+ò»•”‘ZD1д&YÌÎÎjÊVMäŒÎ²¿(¥æ±jÐA+)+üV[¤,ûµ~dÐâ–‹Æ•­¼ÄÒVØ%…ׯ_ûÎ>¢;cŸíÛ!ßÙ¦_y)ñ«ÄÔ]^k2•~Uf³.¿r‡t‹Ì´Cìò+mŠìBæ8¿²•¡­|­Ví/Ø +²`«bä&_”ÅÊÈÿi¢‹/ص­ JqLÝ•9ª¤r^8”/6­˜Ñ¿¦|1¤ôóEy/ëÍOV¤Œ ¥â‹xˆÓæ=#Væ"˜ +ÍÚÄ“Aü$FÀ^dH¦¿ HC+ µb3 "ÙP +‰eåƒà½z²õªïID $ãÁ*Ñô"RC¢†•¤U%4aŠ6ù0߄ƿhò];€&{(l5–þ¢‹˜Ø_D1»!S·7¢¤U4b®Ça„÷ª«2Ý%UÚ;xïú@å!°ÁD/^¼pEÞAÞé,ûýÇKñ~uÝ*}1­l$s­IYV zZ•»üGÄ,¬ +ÚE–½dîÄ7Ø Òl¤-ËŒ~¾õ°Øòò2Ÿ+Gê!‹¾ÀÈ(‰Á·­\œ45Xæd$/8†/Ü`,,_<~òßs‘o­éa Yþ§…ÏÖºv =œ®Ÿ/šì°®|ñ÷B,Ã"_°Ü5Á‹óà´8Î@t0ÂO0µ–åtÀÐp3ùù¯B¤ƒ$U2a(CŒ ZªÁwìØar6 SK†eZ=–žŸÄ»½Léùb/vX¨ šÊŒ­ÁÁA·äÈ‘#ü$RY2d>ˆq˜àöpÈþ¢Ÿ/¼vö^¨Û©ÿÁª§»îÅ)ï,»• ûx ÍÛIz´Lzd7æ¿^\Q$:ygOtó^@Žr4v6%q/¾{/åõy/Õµ"­÷óæ^B‹%êçAf‚(¢[á0e¼€e¼ä^†Œ¤Ÿ/RY•uTáH_—OIÕÓt$ ‹© |¯Fbüm+í[¢Œ“†Ó3'$._ù¿ó½ßþqaiMKXÈr”üõïþ²Öå[âá\œn¢øâq·T|?qÚê]¿ñ}¦µ*Kg!Z+2"Aä·¶D p jö)‘ÌlÊñL]mݲsüœo‘²J?·æoò*Åÿ ^F¬9ç\ gM\333ê`e˜ÚÝÔlVþãí/ÐÇZ76QmQû‹ØA¤w`\´ƒMeIhéA¼»ªÆf¾ÈÂ`™[@˜wÿÅJ¡ äÕ«WBCý>“ âfsAذ¼>}¦±¹š7"YT>Ú ¦+D“ô‰œ9œ:§Óg¤àa|†ýã«MŸá‹ý|Á†DëÜÜ\©@#5Ù¡‹/l|’í­`m¾’*+¤ÐZ_…ÇË9²§|ÁWFK§æÒ‘—o‰gU¾ð%²Þ|ñ·n©ø"õÕþ±:ÚÿMK}åS_¡FOÝ›*×~$uoW?¯ÖøñaëÞ&_tÅKWÝËשäggg“ +VíGì/H¼ Ù_ôôìº7…ØÆ¡6°ç^Z»’Viö#vˆ ýEÙ'ÚG€ôveÏÂXö#UŸÈxÝRîrUË~$¬ÿ^ì‡ï×£Yµ¿ÀJs0ï²U_´RC_Èqñÿªö‹ò^Wí/ZŸÊ‘ÆU¡µ²mÉ<0…Ïšré +Ý´4 kâ‹Éä‘Iã‹¿v»â‹uò™Ö +Í/¦BCuªêMh%š0Mž"!$ÌÙ§Â*tuXìœ:™o%¥ª—/ÆUnX'(æ,©ê›y†V>ó­ÐMôà&Võå3ý|ÁBÈ‚9Dt®~,ŽT9•†Gð€V†6Ö³ +29<È?b€°›ì,kW|1Z. _¬šù§|1²p¡Äï^¹sçNɸ^'L¬@Ü€qª¬A–´†­¡m°›j¬âðC¿_E±û*hµIIƸ)… AöÙ4%¶eúEŸh%R󉘞 ÑS»I©çÑ@xU9£VK˜7­Êέô±aV•7تëí«cUVõók1&d±¼¼Ìžvcq$TBI[KvNÅheˆø‹c‚<—Õ…Ìq~ÉipÆÅ]#¯ú‘þŸ›Î{÷î=pàÀ¡C‡Ž=z|RF“/ð“»(ß_¡ #Ä5cB(ÓB:=Á$ÃÙjÍÊ­µº:ÓT`1]àäìi óN3nT’ú‚KKK¾K:¨ÄV1ßðÝ¡ƒÇét\a>¶â€ã²Õ¸òk·„_ý|ÑÚºþ`߉ï~ÿèÈ^ÄÚ}øÑº:+_œ:·X¦ë¦tñE3á÷ðÅ0ü2 OøâòåË :ð—,º÷Æ÷?yÅOùñ[†ùOþþ=±Õ{B@,ïç‹ÖïÖÝÏ|à#ÎhÏ~êÓ›÷9 ä¨ä ¢æsÀ`ÕÜU-ØÃ<'ÎÞêzZùbÕü_aE1Õü ¡ŒðÅÅ‹/]ºtçÎÅÅE]ÄÈ F1/na½}=A·ç³3nšð â`Œ‹Ü8ó @M@6Ùd]ý!áDv òt &QTXê\i¢ˆ† Gf^ Ä€E` @>|$Øû‘U"óÙä+&S +;£Xž½,ù¸¶â^Ø„;­»fÛàõwö«Gó½¿øÃ§÷¦þðÎø›sÞ¾¸wïgC¯)<FxgɆòZ8‘#ˆ¨ÍÑ@xpMè*Ñ}ØY#Äøºzê``É<0…ÏšréÈ|QíÖ:²é¬¾8yòä'Ÿ|rõêU ‹…qªVì¯ÇDÒŠôF¶¢ÿø(Zû±D䌩3{Ð9`¹6»¹³ÈñƒUò1‰„9ssV‰´dMÈó-ëX‘ñ&ŇèAæ[9gO8v0™ð¯ufªM–÷xH?NýçðŸÃ‡ÏÌÌtñÅ7.\¸°okJÉ£åÒ·ç‹.éܾعsç®]»vïÞ½gϞ;´©Le*“+ŵk×zøb‹Ê¾‚/¶m;è32_DÊl_V¼Ð5¿õ¯Mç‹cÇŽ>}úüùótû§2•©L¥C ²k_ܾ}ûÙ³g_o5iå‹Sç«T_I+_¼«Oøb~~þܹsá‹oOe*S™JC¤†ëׯ÷ðdñæÍ›¯¶šôðω³·ºž÷/®^½zóæÍ3g΄/¼ýé3}¦Ïôñ 5ÌÍÍ9Òʼ/oA)ù‚¦ðYS.}OøâÊ•+þûeÅyÆñù_SMMlkZ;I½/V Þâz$Q¼£Æ#¬I4Qñ@Ð]EðX¡DäZÈî𤭉¥mj.ÛÒ÷/úÀ§ã¼3³³³³<ßÏ/ù¼óìûÎ;;ÂûåijJOOçû§Ý!‚ ~ÿX°Z­ò¾x€|¡î,í%¾(//¯¯¯§}áó?i0Œ?„,X,ºH*Äü†ŠÄû–-4ä¹zÂXH|‘qÖîóƒÝïÅù¢¸¸¸ºº}Á`DÃ?Z[[é"©_´ÄÜ%ñE[ûpòÃÁèR` ,„å·ﺺ6€ߎøâêÕ«UUUR¾pg‹>C!}‡EôùÌðÈ_Øé72ªß¨¨þ£¢ûŽ~vL̯!c·€Œ‹}.(öù mÏë¶ ÔÅ ÷› Û!¿¸ãw/Cv +†ìzaÒ®&Çÿ~rü¦ì† žš0xZ§%²ÓÙ{^„ÌÜû$Äø§YÆ!³LCô¦¡³÷A†ÍÙ>7iÄ<È‘¯@Žzõàè×AÆÌO³ yì‚”±¡)ãBSƒ¦-:¬ƒ,N¿8mÂ’ô KÓ'.͘¸,ãååG Á¯Y‘9y%$kÊ*ȱ©o›¶ú8dú›ÙÓ×dÏXsbæ[“!kO†¼}jd]Ž>,gvXîìðÜ9áys ysן†Ì{çÌ+wϾúäÜkÎÍßh†,xÿ<$ôƒ ¡›.,ÜtqÑfȥŗGæ/‰Ì_º¥`iTÁ²¨ÂeÑ…Ë£‹–ǽ¾õò +Hì••mWWÅA®½±ýÚêBÞÜùdÍ®â·â!%kw—¬MøømHbéºÄÒ°=ea{ËÂ÷–‡Ë Æ +ƒ©bý¾ëï@ößx7 RùÞÊ ª6¬ÚxèÈûÉŸB>HùlS*äææÃ77§UG¤UG¦ß‚lɨÙr¤&êHmÔÑÚè£u1™u1Yõ[!ÇbC,Û²-qÙq'·Ÿl‚ì8õùΈuW.ÄŸg‹?mß}Úžp¦’x¶%ñ\Ëžs­{Ì­{Ïß6B.Ü1A.~±ïÒû/}¹?ÿˤü¯’ +¾:PøgÈÁ¢¿º ùkòÈÝ”«wS¯} 9üá7´î¥ßK/¾ŸQr?ãão@JÛŽBÊd–?È*˜UñðØõvÈñˆTþýDä'?|wêÓïr>û'$÷æ£ÜêGyÕßçÝúþô­ÎÔüp¦ödzºŸÎÕýd®ÿÙÜðóù†Çç-/4þ r±éß— Ÿÿ'ß +é(°uÚÿëç¡ÕPSS#ñwI|8^Ô•+W*++]ò˲\7óÑè ôE/ñ…Íf“÷Ń@€œ]Ü%úB!ð¢._¾|ãÆ …¾`»I0cêŽ^ÏÂ%Ãðç /Ðè …¾ètøõtu¾º]¤|Q[[+ï‹¶@€ø‚»D_(^TQQÑõëוø¢K ÓS ]!ãîŽ>7£Q¾@_ /”û‚ü®9 ùõtu¾º]¤|a±Xä}ñm @|Á] +||ÆW²ŸC|QQQ¡Èœ, PƒeL]½ —ºÌL°…Ù ¾`¹ù^ðùsHÊäS/HÑC¾ 7G_ /¼à FÏù¢¡¡AÞ÷ò–¸K¾/@|_Kã‹ÛÇÀ‹*,,Tâ Ä/Ý„Á gøÏd`ïÜY j̆è’ø‚ïrx +|AŠà‹Î§á|Á/ +|!X"å RTî R!¾ câ 2_7}A@_xÂü9tEÞ---=ÛŸöðT¾ÚZ ®ù‚4Ýéj5ôúövCIILg'ÓÑ¡ƒ@³Aû¢KO|ÁU8_þ‚Œ¹þ‚“ߤè‰þ©/¼Ü_po }¾÷…è4%ý_}¸Ù_Ü @èþBµ2ÈËä_ººÜ£óÝ^TAAAyy¹s_tBÄ55úšvd¡ËÌd$|€/ø—_ x¢ u¾àé/3Õõ‚›p¾Ô‰/øâ 2_ø‚ °¿@_xÙ‚ö„ÞEÊ­­­ò¾ø&ôîàe_xxQùùùeeeª}¡7™Œ5úè’˜®:å‹>C#øÇ&×bhë Ò_±¨/È@ª¿à”Á÷è§Ñ¾ ýƒ/È@Ð_é/È}¾ð+_Ð…_X­VºÈ÷Å×Ý_¨>QÉÏû‚K~…3 _1|‰ó—æÐÿ—Y¥¡ƒˆ/JKKû‚e‰) ›€V‚ï N"¬˜/ú‹àdáç¾ A_ /zª/ÔõÍÍÍ2¾0&tÁ)#XÑU¹/ø—Jf:ž¶ƒ««4^T|||RR’S_À¦ Eg'ÓÑ¡õÌõEßá‘Ï _Œ MšêQ_Р/Ð^ö_eÈû¢©©IÆZK^Fà ÷û ‡X@×¥æ *‚NA¡SèGrxQÕÕÕ­­­mmmò¾€˜Ís^Ê‚æÂ%_ñsA±¾òŘùÉ´/t‹kë‹YërÈxvxîœð_š‹¹ëO£/ÐôßüRù»ï úÎüŠ;ý…Vç’—áûdA¢îVžð…Ô +WùÄF£Þh„ƒ…C—™)ðÈ‚eY¾à0.–ø‚_äûbPðNÁå¾à”Á¡¡/&¯ÌÜ|1}M6¿²Pì þBôúBÆR8í/œv1R¾hllìÙ¾pÁA­­/¥¿ ²€Ë2ƒž=p¾0Øn²€ôº™öE¿‘QýFE/úŽ~š‹îþbä‰/ ¿¨‹8>NÐ_€/ïôƒ§& ž–@|ÁÎØó"dæÞ— !FðÅY¦!zñ4¤¿1r€öŘÉc¤_-L Y<ñÅ„%é–¦ƒ/&.ËY_L‚¬È$¾˜²*‹ôÓV‡_ÌXs‚ô!kOr¾Ð‡åÌË%¾˜cÈYˆöó7š!Ø_ô6_(9ÉÕüZùÂn·÷l_hÕ_8x¾àÆ´Ah_ð§ ÖŠn!Z‘º•›(ô­ƒÿûB¯§M¾@_ /”û¤â —æ«ÛEÊõõõ=ÛŽneðÆ’xý1Uâ}_†žeK¢u]Ýà/Ðè u¾Ð{u»Hù¢¥¥¥ÇûÂñ´2Í› ‡¾ ˜º£G_ /Ðj}áÏé…ý˜¢ÈÂC¨ó… /Ðè‹æ »ÝÞ³}ÈàÔ ¦—‡,444ÐERA_ôxœú¢AÞ +­›Í†¾èµ /‘‚VƒÕ*Òt /z þì †a|¸;‚ ´à¬ð‰/˜n_ôðþBí…lû©œ/çЋHô€F¦áx<&í…|œœñ|!_{Y¡óì¨îÐY÷ÖÜÕîøKÃÈ4TU•¨ŸâÉ¢³¼£#ô"R|/ä.܋켿äŸÆ^·ß­oôÊå„%{~ä±òw3øÛŠG&Óðúúš®Ÿ¡ŸXz±Kza°·)ã5½#)z1é›ÇúòóEÐh/\M¨Þ4ù–^DZåùÂ{dø4ÿRµ{!w'ŒþIì]IÌÏ1˧Ù÷hÌŒ¹y#ÞëѯQ¾6¾Ñí.äÅNÉ4ǽ°­»éIô"R|/>C[ħØ[‚ƒrBÿ:¸Éhû•q–àµ3eíÛ]Ð>Ü8KÌúÁ×K&ÄÇB^áèúØ;™†v¯X½7G/"­Ò {»óLýÃØ˜0©1mÒþZÖvKí/jãð …½ˆ¹㨘Ý~ÞbïdÚ(Ћ‡µ¼ýk÷Ó%½ÐVXØ‹øë™:2iÁÙ×`¿¶'Döbá·4ºvG¦áýý^<¬I½ø4w†Uz1º¾=9¦K–]¾ |;iýI90&DFmÒ +ÚÝa¿dŽÇ#½X¨ý¹æéV´¼Ù7o‚;h¬ þin³ÞY´L3kÐ.L Þcprð¾ì[ó^kWk¬yýÙPpAã.‚†½ãùb*ï÷H›³Öé®lj/îÏÔýí¶û¡}v£‘+,G/î ÏóØE û¹¿mäçÙ½H}ýù~°.™†¢(èÅ(¯ÞãFðÄ~$Ùˆø^°†^Ì£mûݸ— cþÖÐ ™†ÓéD/FiÏF/v‘ z@#ÓðúúJ/FÉ"¸¯O7^ z@#ÓPU½5¯òíÖÐ ™†²,éÅ(Yž|뎬{«£42 í^A/½ ‘iÈó|I/¶ùW4½ˆD/hd꺎ïE6ÔŒõâV5¡‘èLC…©½°Gâ?M‡^D¢4«<_h#Þ£GpDŽ»Ï)î4{5oÐ{M/"Ñ ™†ãñ8µrŸNÓ>m”M^;pÆ ½ˆD/hdÚ(¤x¾X¥Æjôbô€F¦¡ªªUz1º™këÄH/Vß F¦¡Ý+èÅâ42 §Ói•^ô¯{Þ }TÌjñ3éE$z@#ÓPUU|/öÂíÅ÷‹¢‚d^^^î»0Ð ™†º®ã{ñÏNЋHô€†ç ¸èLCY–ôâaÑ ™†··7zñ°èLCzñ°èLÃáp ‹^ÐÈ4”eI/½ ‘i(Šâ1{ñóçÏ?¿\áÚ6…^ÐÈ4¼¿¿'íÅÓ·åKÅíEˆ¿ÿöÿ¶ÚÁøSw¸#Þ§ý6è.Ò=GxÚÁ%w´…LB/hdêºNÔ‹ÎÓ·åKÅózq»‹EC/èdÎçsÒ^ÜÄMz±Gô€F¦áx<Ò‹‡E/hx¾€‹^ÐÈ4”eI/½ ‘i8NôâaÑ ™†6 +wÙ D¢‚dŠ¢HÚ‹§oË—šç÷ïßífØn‰ÿƒ‚^dʲLÔ‹.ý©“V#Ë2mäÏŸ?¿~ýº@Ñ~9íW”ç9½Ð“i¨ª*E/ÜR¸F“‘ EžÎèEóõˆÑî‡ÿAÑ~9íWÔþwÓ ½«=_,éÅŒÓÙ½h¾ž2~CÑ~9íWD/¸dò<_½Z,:v2‚;¿|ÜðFäùѼ{yô€K¦ár¹l­ÚÎßèÏrŽ6 ½à’i8N[ë…1¢=P½>ž@¢\×éE£'ÃŽE׋ø^pÉ4äyþ ½ 6zÀ%Óp¹\Rô¢ùJ†[îíèQÙP£ìùrŽû68sɽ<zÀ%ÓPUU¢^tž¾-_ +IÑ .™†óùœ´Ø zÀ%Óç9½@C/ É4”eI/ÐÐ C2 ///ô ½0Äó4ô€K¦áp8Ð 4ôÀLCQI{ñômùRHŠ^pÉ4ÇD½è2ÑŸú +ÕȲltzÀ%ÓP×uŠ^¸¥p&#s¸ƒ1'¥KÐ .™†óù¼µ^_Ç KÐ .™†Ëå²z/´Xtìdx;|÷¶ô=´·îHp&$zÀ%Óçù^zaìör‚v ÉÐÐ ®]?_ÈïÂè…|ô€‡^pÉ4‡Õ{Ñèɰcј½èGì:ȃ^pÉ4TUµÙ^ô¯c"bŒׄ‡^pÉ4¼¾¾¦èEó• ·ÝÛÑ£2‡;è~¤M–Ǻ/¼cá¡\2 u]'êEçéÛò¥½à’iÈó +zÿ³_.»m+Yõ8ßÑÓ{û[ý¹ ¤et‚ $K¤š&e#AÞ/çýìÌÜ>ÈA™G¢ËŠõˆ¸ˆ Š*KyV@JTÃp8<¯/`+ÁÕP¾€#|§‰jÇù¾ø¶|D5¨J°¾€#|§‰j(Ë_À¾€ÓD5E/à_Ài¢&“ ¾€#|§‰j˜N§øŽðœ&ª¡,Ë‹õÅl0ø2‰j¨ªêÂ}±î_ ³ÁOTÃx<Æ=_@>Q MÓ¬Ý;'ä7>oÿ`à È'ª¡®ë%ùb'¡cHç­ÿÖk,¾€|¢Š¢Xž/üºå_¬ |ùD5ŒÇãø"ýØZtœù±Õƒç™+h/ Ÿ¨†¦iVé‹yõ?ÒÝS,¾€|¢Š¢X±/Rf6›÷-¾øEðäÕ *±®õElÖ½úÀ¿¾€|¢ʲ\/:â‹•/ Ÿ¨†Éd²<_8éZç};¯ŸÖñ%Þ¬­_@>Q EQ,ɰià È'ª¡i|ÑðäÕ°»»{Ᾰô²mà†/ Ÿ¨†ƒƒ|Ñ“ _@>Q £Ñh•¾Pçk/›½ÝðäÕPUÕR}a×M?ž«Ä·=[dž/ Ÿ¨†²,7Ùl¸á È'ª¡(Šåùâø§Z;ÇÁ >ÂK§Óú6vxflø ª¡®ë ñEGËŽögöÀ†/`¢¦Ó)¾èɆ/ Ÿ¨†Á`°$_Ä«ã |¿ Q UU-Ïi±:ÆëÞðäÕP–åê}qéôêc_ä÷À†/`¢T%–ä ¶MÛðäÕ0ñEO6|ùD5Ôu}á¾X÷¯„Ùà È_ô|ùD5L&“Õûb焸K_@>Q Ãáp©¾ØùIzäÌýâ); Þ—~€/ Ÿ¨†étº<_ÌÜ_À)3}ñ+ö|ùD5ŒÇã%ù"–îÖr î{³t±0o…rQêøò‰jØÛÛ[½/ZGæ}{fãî}h/ Ÿ¨†Á`°á¾H™wbl|ùD5Ôu½á¾ˆ¿¢ÕMd‚/ Ÿ¨†Éd²$_ÏQþ˜§|‘ ¾€|Vì‹ã“e¤Gº÷[§Ä­SðE&øò‰j¨ëz©¾€Í_@>Q EQà‹ž€/ Ÿ¨†Éd‚/z¾€|¢ªªÂ=_@>Q ãñ_ô|ùD54M³<_ì$ØÇ™£B1«_@>Q eY.ÉÑxa½à È'ªa:®Ò­µF+Óñ”yG |ùD5Ôu½$_‡Ú¿J·¾=óœ|ùD5TUµ<_8óê÷·;§9>m8/øò‰jF›ì‹™¿k,¾€|¢T%~ _´ºÅ €/ Ÿ¨†²,—ä‹€œi‡yícŸK¿SÛ¾€|¢öööV°¾È ,|ùD5 |ÑðäÕP–冸– ¾€|¢F£¾è øò‰j˜N§ø¢'à È'ªaww_ô|ùD5TU…/z¾€|¢ƒ¾è øò‰j¨ë_ô|ùD5E/z¾€|¢ªªÂ=_@>Q Ãá_ô|ùD54Mƒ/z¾€|¢ʲÄ=_@>Q ûûûø¢'à È'ªa0à‹ž€/ Ÿ¨†ªªðEOÀOTÃh4Â=_@>Q MÓ\¸/`cÁITC]×ë øMÁÕPU¾€#|§‰j˜L&ݾد‹[°Õè/ÆÐbõ…êÉáááÿ`KÑŸ«¿_@‹Ö*&_`«Á‰jhšæL_|ê;³X÷ V¾€HTÃp8<Óï{CKëΊÀYÌoû„ËbÝYø"Q ƒÁàL_ö ÉbÝCX)¾`ccëù––…º®ãA;â¾x [ ¾`cc›·×÷îÝ{[ŠþÜè‹¿~âjhš¦Ûûuq ¶ýÅ©/Z˜&“I‡/L°õØ­g`Ë^66¶MÞ¤†ñxlûó|ýá`>»»»ó|±¿¿ÿýû÷uVÇýû÷5s‡u][ªD¤Ù4åh4òÔ´SY…gY–ÊÉdâ©nÕCUU–{{{Õ :®}µQê,}«”êS©þÓëúH:FØg­r:ªÿŽÔ,í©OÍF¨1+5l¥†¦ZzªŸ4Õ¾•êG--­g¿:¥•:ÅîaLû¶•v?ÓLÇï×UÚHÒÔýñÔÝkå<_H?~üxþüùƒòóÅ‹>´|ùòå£G”?~õê•å“'OŸ>}ª|öì™§NWêD¥NQªñáitäõë×Ê7oÞx¾}û¶•ïÞ½‹©Ó=ÕÉû÷ïuº§NTê«÷ >|P~üøQ;–Ÿ>}R~þüYùåËϯ_¿z~ûö-¦úñÔU­LY µb«K :®T{¥zPJžƒÁÀRÍ23=ËS½éº–ºŠ¥Æ£ëz¦ +HÕ*£…~—§ßÕVz1EÞÒ”jéªÝK¨tŸ=¥cåÅg\6‹K_++}–­×j^Z›Íú¹Þ[úÚ¶æ`>ÓSÚÜÒR¿Qmô{u–¥^(õf¯•^1]K©N,u\ØKm/¸¿òöú«½•wïÓfæ6¿Õ=ù÷_ýëÏ?=¯ÿñGkv}®ŒópO—EZð•7oÞ¼{÷®òÎ;·nݺ}ûö|F­´bkåWýèG©g¥®kéÏÀ¼çDyåÊ•_y~®^½zýúõk×®)5`žŸ–Öãê,?uŸå‹XÐ<½@Y±Š™Îœ=Óyu:ë¶™¿ŠŒ¯S¬ˆ¥%W©‘xªè)U[©2Õ‘ÞR=[Z‘÷µO«Œ›>”*’&“‹çÁÁAšê°•ê\©Î•êÜ2])øêÀ×:®6¾¾0©yê¸zNsÞ½M×V¶LÓWJ‡gKjé=ñ;Óá =ÞºÛz~~üø¡}›“ØË×éË¢ü?ùõ¶G•…q|^¨»«ý*äÀ»86/€‡$0p“ 0Žˆ¢(DBsº‹í qÃh`fîr)vµïæçþÈÒ¦ºÝ$!†ÑLÉú«\½Oµkíï[K`'È[jã9jƒ1 ¼ÑJÖÚ& æroÞCE¸’&3üa~ý8¿rü]mÎ6ÈÖ<Ïáõ^:¢qИh|-­J¯vUÖS« +ÉAÂ’;Vf±µ9ßϯVxÄN×í­¯÷‡OyÐuãñ¸ëºßlWïÞ½ë>Ù¸éôÍj‘ _¹rååî*¿x±]ÝÚÚº~ýzÂøþýûŸ|ò ˸3¿v¦},æ,bu}}¼¹Ù­¯Âß=VEËt: G£‘ȱ†®{w4ºò¼±¿ ­À–´–À–°,2¹´^‘÷?Í/÷Å>fä´¬ <¹‹ôù‰Xyˆ•÷Vöë Ù,¶’[»š‘ñóVÒ…Ý“¶Z‰Äb¡•·æÓ‰ Ex«*©ÝÈÎøé›ùeçCOŠÿ ße…_ˆFAÅ,?~ì|9‘>!]GÕ9€æ`¶™Xr³TÂ*9U¢Š¢3šÝCá]´¶ÕÌúQ{#GcÆdÅFΡ.IÁÈl27ÖPŽjæ€=2lÑàhp48sÌsHNñps“GÌv/ö;f›Ó~cr<}õhr÷'Çߘz…É*—îmíªU™´h¡·°°Ð{EÄŠ·nݪ= ŹðÞ½{ž\»v-b[´†D Ä¿xxPPX0faœÂ¿ìÃÊU@øæ›oþ6ñpéÒøøx÷èh»8™L^J‡–©JÄžŠ‹ñ`öd§-YÆdrexYß…_,ý.xÚwùðÓ@2‹7n|õÕWÎ;/CK -ò×Í"­‰|ô“wñnltíŸúbÎé"}¸_ÿ]~ñ¼˜Åg­¤$^[û#ËxÞób +~a˜Â€ã ¿-“E¯`2mÔY2É%G­h‡­¤·R_öÔÒ8©M°ͥˀ%Œ‹Ì¯.Z@»þš7Ö9 ý)Ú½œq–Ò¼áiߢý +æÊÞ­ ­¶˜w1iÛŠ´ïå×|£ªŒ2ï +¿<!&)fÞ”±ÉÓ’¡µ2[GïÜú¡É^*“Ñ1Ùc¬ç?¿‹Ù²çXY.‰1šˆái«rœCƒ„Y'°­/ŒVUOî³þ¼KIºÑ"‘ʲ¶EáXLl¨Ä¶¼Äö`WWø…@ÒRüô}_E«ÐZZw¸<Áó—ŽnÇã¶à”½Éâüjœ0¡kAʩѱ¨£¸”ùµ¥ô +" GÝßßë­·2o­!« +OÈc‘p Z ´¥¹Zji%Å’k#3‹½õufq¸>žM/Íf31¸ßŸL´dF(ã3×?ç—'‘²ìz¬L²æmW²t…_ýuRñÃ;hoQ\i)NÞ{ï=c&S%}§1Ù¬•˜ïkb†_ bFKL´,Æ SЀAìììlmmùvÂÒýG}´»»ë‰á›ú—eœQÌdý—T‚ýÎÑöG{c<ÜwÝ ûƒ®x°Ó‰ÿ—3!:<<!Ưʢ阛ńYtÝ»/3©/"G¾{İÿÄÑ+ê‹'£sê‹G#›–ϪR£Å¦˜_?ί_³«·oßÖF<ÛœÏ?ÿ\ãíím÷"DcÑb»^ýõÚUÿzzbvûßV(«w•_<×®ŠRƒxh…¦ÆÊ5…OÏ;|SÖ¯ [‰©-5ÇÅX}]ÝÜœ*Èõì ƒ®›?œò‹§\ë÷'w×öoLäÿϫϲ«lBFáp9ιG¨(ZÐhãñU~ñ¼±jF~QÙæ3òÅ6l…ˆ4Ñ+2ÕfÑ™_žTæ_ù?F$ÃÈ`HŸQ<—ÊiÑÈÅԵ΢…EÆ1’&ç¯ÌÅÕ¶ Ûq2rËÌX¬ú¥X¦= +¶öT&5¨G*͈y•ñU%•ñS1­ð ñÁ)ñIB"üZ¨zYìÌÍâ'ÎfÅÝÙìÜLJ²£A5`²)£aÂ;aì™:ÇÖ½•xNú„½#Y|ôèQî#†–ä‹'WôDÇè€e§ºyøðá•+W’qU­”üÖñÔØªÐá­ƒ|µIû«Å{‹Óöj§ë××û ‡ãs}wYFòÆ“ûéÅ™^|0i9Îz¯œ÷ZÞ¼y3y¦Ê"bn.$Ë×®]Óò¥ì¿xö½2—"‚×£ï%˜™/+ñäJ7ÞxéÇ3Ý«Éññ®"âøøgs›˜NGÏA~ra¿?áNÿÊIŸ„LfUùV6˜ŒÍŽV‚‰@Žg¬uAÉçÒ‰!ƒš9\‘Žä“é–H½~Ѽz“ŵ¹ Š£<ÓhÈŽ_{_O_UJœ°ï™EÈ;˜>œNµd²©¬-BWcšíF #ŒábŽ}ÕŸ}öYj +ôvè'ôiZ)6~¨olÅì˜/‚™ŒÝ +mÂßç—'©;øÅÒøIõV ˜Úª|/¡»µµ%Îu÷íRqìíí©øþõë×ñåÆVløws³ë{ÙPÏxDþú¾¹Ÿ›…?×YÄ#–891¬†¦ËsÑRueÒ×wð#ÝÏ`¾Ëõë×I‰RòäÉ_»ƒê%’AXšÂùâÒ¥Kàn¾KD™Ù«=È92ón¾xöaÊxÎ×Ù8xjßàœ+Ï—gE¾Úî¿ Øô ýõ~]_§T‚L"–là» ÃýÂuúýkô½ûóÈó]ôÂ&¢ ×ÖÖôW¹Ôs&Ž:wèÙè”ï–Þ‚Õ;Qt +7¹Q·ÜG­Hîû-.Q4³u•:LðܹswïÞi®Ð2Äi°qàúê`<<‘E…/nLâßÈ“5dž·Ã~n=ºqKz¨þ½}·1sX|:±lizš$~ž[3Ȱɳ¢Ù&gˆ‹Ýà:Õ.¢¤ËËËœÿ­;ìú©S§ô½Ùs½åíxµ—Ýá4‘9‚ëbS3εfüvß®5sóæMÛ™Š]ZZB  ²²Oïܹ3??¢í]Í€ì'z±¾¾Èˆñûʺ05õ{EÆ +®ƒ+‹S|µÏ[3N:3晜`Â趃šá:zK„"@(b»¡«ëÖ7Sƒ'¬4ThdbìQWŠ5ÎÀïÝ`uò¾Xeh@b¡á׈šóŽsñœ#œ)ªç¯n»8v::_(a<]ô‹( u*äà +è$8 c‹ŸÃyßñVß‹ Ú#õYæ‘ãÇÏÍÍõWÛò½»™G–F#ô¢“eâÐÆèÂñóÌ ×;ZØŠïÝâw™4@¿\qW 4âÁƒ·oßÙÖcï/\¸ð¹¾ z±Ý9½xøð!½píÚ5Î/_¾Ì¿?¦þoܸR þ§OŸÞë9½@,Pÿ6Ÿ¿›&fg7ëd^,/µþwù]úýBg½Ÿ@ "A„c7ýB2èECõl;”2'T¨O%FIR -á+gQ à¨ä/±Œ{¯ÏM&Ÿ¤ÐJÑM¶ ÓÁ:Aä”3T +I;Ä”EI8?¬òÚÈ·4¨$Emp@LY7p@/(0m5ƹG¤®2qŒE‰Î•Þ´mƱÞ/ÔÓŠ´khîi"¢…6ǶhÓ¥¸&BbêîÒh3ï;´maõrhÁÊÔÔæÑ™õ©¿lÎ^Ÿ~ÈÄÓé韻ɂ5ÓÓÓº_’¤»IRÿïõðB$§€4ÜŸ8ö'Ån@/(¾8õƒ¡¥PpìÜ‘Öþµ;$Öpõ Å ÆíH›i¢~+ÕëÁ¦EsK†4ø$TÈ„»@iD‘’âH›lIûewØ\i+®‹6¨/;M{J›ü„'r£ˆ<žÏÎ6¸<;{m4âW¼"+ÝaîçX‘ Q‹æ`V¢Ä.É‹úI£®pP™"ä ò«H@Å“¾‘ó¬ìs$¸Ö z±³š™ŸŸ?qâÄ£G®\¹Â|!2-^¼x‘ 5A>X³w5Ùé¾KûÇ^Ô Ï¢‘ŒI¸Ëša%ý¾ïê¿4WTdÅ*¾Ø$8 ú1êpmmMi°åûŽq+Gß1~9ø™8ô‡HÃâǨc$2OaånãV&æ & +c/”ïw0q »©ŸsçÎ!^gÏž­$ãþýû ’ñ ×ÓÄ0“ø;¨Ö !á¸_±O†f¤¤zã¾|Tú’âÂJ):d.½ÿøáP¹ˆ£?oÜ{¼½>_ÏO˜ BÇ>6+¼±ØŸŒÈ]$‚C’?t‡çæï»„Ò‰æ>(¯ßÆ®èuE‘SW4 uõúõkýáWíêõ]‘¿«7ÛkWBÄé·üÀœµcW?0 B¼Ð,xúôiðÔ©SàÜÜ^ýäÉ“ºú………Ï5 ¢{Q3$Oæ’ši°‘•× É£!ÌIØP¨„ùÇ#¯Â<ÁÌ&!ðfBécõ½R®ÔJpéÎs¯G,À•••Šþ*rĪL´ÌúNþѯT,-ïÒ7¹WzA±¹'–œåWV‰¨i[̦³åuVêXÂÁ©Zö6…NÕÖ&”.HrøOwüÒ’Ñtwq}:@dŽëºDÄŽAâ€Ä¥&Û§fE>ÉJÄWDŒ¯& yêá¥)>GãðC:=øüÊYùgÛUôbW¿ÌZå@/öIu_€&íÕ€^PidHýlllPHNêØ¹C|óæç<XC ³Þ6¯ËJpW£ÎÂæ'Z¤ìÓ“5®ç^Zƒv l‡Úq˜ ÏC2R„N¬Jä$t¥ô"5IA$CLÉa¯ú{…^ìïÕ—YWÜK¿Cƒ•a 0èuÖ€ Š\‡µ*JËÜ$HXN$Tƒ„‚¦D 0(Í‚Ü$f§HÁ‘Çbò¬ØÏ9™ƒä’¡HNBÝ ™¡_ÂošÀ¬$²¨X(1`}÷Ð;ÈΓÈí|— ß·"ŒZ µôB—…X¬­­etýŠŠŸ(¶µWßwÇVöŠe»Ù+nßë½âßp]8p`êŠЋøÒ`¥e ª"$“ŒEèKl\kœmÈm,™KÚÐW°N OùgwĽKæüJ„ˆ…DÚ÷Ò6yö³­„< ÉAô¡ìËMD'¹+š~n•3žÅ- r‹{ØÇ:ÝÏŠzaãPKøêÕ+‘Ó†ÊÁuª¤,¹Ëâ¹$ H}‚Ô'ÅI¨ Å6Nöd=H„ 1Aâ‹’Rr  ƒ<ÅÖÓD Öœ›ÌAr¿ÿøøWwØødÒª mËÅ/^ˆõí¸ô‘»DÖó •d¤&"“Xß]‰ç½Ø¾¡øF©IB\0 ä:ø[wœs‚ƒ¼,ë î×·XÌ2Îyt¿‚VB¿$óz¨ÙVZk% ÔƒÖzà‰ÁÝÔƒ_-™ûoê A^™8œl±&Õ@0Õb=pÂÛí¦¬ŠVЋŸºº)œ2D}&¨ç¬ó…Vª”TZŽ”àœE‚ˆ\õÌ$‚$Y;ç’g3_43Eȹ/7 IJ¤‘˜ÈV$flþf«Ã7³’ä¥ý?*Ú·±«zAëq/Ï¥œÒMÊx¿•ƒ+,c ·ÄÉèÐH1ÿÚ\Ñ­qõ O©Ê£ñN4 kınŠõ´ tÖ¬¸Rg:CI ÑÈ„ÞòewTÉhh­OnÜkï÷wLò$ OäÆ 7º‡}ô׊Dp?Ar&ZPþÌVð.äÆÁº€+ì[ý ²çÄ]\¿ÅØ/â·°Zj͸W¡h¥$5£FÔýÙbÍ8¡ø\3ÜVÍ4h¶ýš±, î•ü»­šQPÀ­Ô ñ‰“RQ¤8ß‹š!狸èêÉ«ß.ŽuïAII‚â颞 +ª$ü÷îàJ(.DJà¢$)BbbˆtëÊm¦*IµqøN qãN=b¦¡Ÿ>uÔ•bÓ÷ü™)2Y4X'5DG$š‘R°À*d¢èÍÂŽQ?iʬΖ.çø®ƒ +ð-1E9çà®ÚÈ8(‘rWWWiÛ„+´ +uPT5™ØhÕ¿qÅvÓmJuî¥k9$¨:ƒÔ¶²õlF©@_RªDÄífι«Ó³å ¥àJîØ/Ý¡€Æ²ßsç¸ì»ªÏwW‰g(‰ùuv5rÀÞzî.)¬²t’Ü+ÿuWók=·ÜU}xcÆîªóŤ]­b”]õqÙÕäiæQ¯óšÉ°Öª»Zku»êç=g?ëk•ó­×jf¢ÔjÝU-ñ³«>+]殦lxD~Í®æŠo‘ó~­r;ýïA0Œ¨/ 7ÎSY!=°~8¸²²R‘€ $8Hp±WÈJô:kBwúð ׉\Q¬*µVªW˜*FŒ@'ˆ`ãÃëž4ž<˜ÉÅ)¦•ØrNæ 9DFnêÔ’Ioç—m’À¬´ô‚f¡Š‹µµ5šˆ²õ¥ ?Ù°©F›Âö±ªùÕ +²^ç^Ê•BµÅhºm¡w¥=Á”½­Wƒs 0îšÆô$Êâ¿´? ¡2%éuÅÿ²_;’Iÿÿ‰þÄÂæ†8€»BM_Zuª+OùÔ&[¬ìªê–hf‰ƒ)*2ÒÃÓËÃÜœÏQ÷[Û«ƒ£{bOGšr¢°Ì:ä†)žbDÒ“%CPbÄ7É™§xõÞåÀÎËéDBN²&2£CÉdW±ƒœ"ò®d©`-FÉõö¯ÛPuÇÕ”ªølæØ€X¦SJÄÕÃûòoÓ…á•B´ýŠ*7˜`o’?_ó'‰ÁÿëäO?WímrlÍbB½xQo[8Tõêü=æ®H­*ðýËA÷²•H1Î:ÆAÌ:w½ GŠQJRkiJ hŠ5-GÉ3ù~–Ë„¥óÊÞä+‹ÕA½ ™¥)Òt2óUA Ê§Mk¦e뜾V$¼“ÇÇG’ä²€œª÷VJd…¹„ÉN·8 A.ë¢$ƈje½™3Ä’‚‚Y(ƒ"¤¡î +M8”aëà þc-ÈY1{ŠŽLVƺ¥GâÂ0d‹ÍV° ž€ öÇ2B³#éDR8²AçÄXë>näƒúOø_Tì¼ÅÃAŒ|ˆîoOº+¥4œãCþwK'ïJ¹¡ßDßø¢ ålÍÿ Ö•=£^äç­ùÔÃ`r }N>t†\ºhñ'?{3å7øßE¾ˆzñÕÛ?…àÍcuP/HW£—Æä^Øwx1ÓwØh$?Y‰Î 7‚QGÜJ’?ÊŠŸF.&'òˆAÒ˜CQ†hª³Ÿw!I. SòlVaOë䬧 ð._qW9G?³ÇëïÕÆ¸ñ±ªÇJz숥Ôòz¯'b¯‰•_Ç\M~)©›|רÀŠ]FÇ*~S¬l®‰Õ¨q•=Yÿ yå<Þ0¯ü/°æ$-@JIþD „wç5ye#`¬œwÍòÄôÁ~ +Ûþ™1î H½€Ž  È!%¹I\P¥™áÉVâå­P1ÖäÇÇmü° ‰N²‚¸‚RYh­ › öÙ²Ýõ +â›äWª¥÷Aõ)" oX3>›A©›ÍA^idëîü +¢zP/HZâLþœÏgµ4ÉÌEî¾£å +¼°J/õCnt¨Ê^_D.lô?GƒœÛŠÏCn^Ø<’d2—vÞ¤0ç鈕=ZGŒ§¹Ú^X×ù®–‚FìõEÓX17Vùö,±ê =_)úÖXÙ5\ŠUÿwñób^­ÎX\L—Ô…òMò*EÁB`^¥+ÄsŸo+0’ Ì/ ŒÑ_DuôÕ?×;È[Ü÷Pœ8pኼ¥. Bn"L5£½ƒ!g©rà ÓÆÛPæQïÒ`«t©[Ü¥ýèm©XNŽêö‹R8ºkXû…‡Ÿ«· 4.™_B|ý"ËSbâ¶%¦ÑÒ#ZŒ‚–§FÿµƒzAj‘Ø‹ÓéÄ„{Ä%“öj§–+´·¤IèÜ +âhaƒeòoÛø}lþï6°)µ2áú€Ÿ?¹ ¬ƒì É`Ä+¯Ø‰W¼Õ^áO¼9¢ÅjæäR«B1 iøÕM >Å[ (ˆ50z’ „À+ ¯HÁö=ì爯ë’Oë@=7ª<ż•Ð8 ÇQÕˆQ•ñˆUì«Øª^Õló/'ªL0®oƒ9kT‰ùqT;>‰jG¬cè<ô›=O[»”§æªÔm–&WoêÓV‰:Wg4ü­¹Ú^%WGTó½Fõi+U¶F5œë¿ûýïôÍ\Íæ‘«Ø¤^4Ý5ÑÝŠ»Ä”ZÕíБ()AP­¢¿Û+QþÑÿ  +\´wѺbú‹ë1È(X²ø”œ-"1…懗FïÛÎA NÙØER"bML—aÇv'"Ú¡€v+ìê)DºŠ$i’ºQ\¹à¤Yä’Ø^F{§ç‚Ò8”˜Ië¹Pœr@®ˆ'à d,à6½ÎÿÙ+ÌÙÃ:ûA,„Þ­žÛžx8ülÔÛø !\Â| o^[ãŒÏ ½†lÀ`Åb-9ð9¢´%=ÌS숼Õÿ qàD^ v9èÓF,O0’<ñÄ >tÎó+s&ø®r&¥gä ÿ—Tü挥mäŒÝ„åã8g@êÅ?ĘÊ^Cûªw{•ÿÿaa=¨$§vZù¨¸LÅ_·k­ªÓ¸& :Sµ£òD5Ý„¾Õ +F ªó%¥&I/‘ÄP*E䂳¸‹î‘Lòn¬iy—6CΠW»µ±å-*Àˆe)ˆ5?ë±Ã²Û²GíØ/õŦÄ(½Ø³4A­ñ&\i0ˆ}‘v^œ¦xá$ÿ õâ¾üñoùÓÙ²æÒ_›? ùc7ñbþðÕÔ H" %6¹AV"´ ®š\R +MaMc8‰±ÓÂ$JŒ<Ùœr i‹Òx=¬§| Jå®þ§wÐP¯š~ÿý<>nÃz‡ËÊ(:)I–'KF@l‚_GTêé‡ÏäÏù|޶|Mb#r^Lì÷FŒÛÝÄxea5,å’z+1jj7¶q71òî{ËŸ×Ö»…ÙÝùƒÜ÷]ÿb7ñc(ö•T~úôé±oÅ%Ÿ®áV\{{´.F!ùP=È~ ¥!ýŠl»û­ Ö8Wä1¥'(hÑË÷Û8¨^4ŠÅétrN’“¢\®\¥σä$ÙD´C\¤1Û9X0í½ŒqØ/­y•@Žæ)'²³ÉäáGHìÁÈ#X—°–kÛ\Ï™snS˜Åg//ÖÀß¶ñû6¤GÖ$¥•Ä•±.¹}ùòÅ ôÀ+ÃÒQM7wMTñÓ¸Õ“;¢ +òŠ‘ ‡D•ŸwG5^¨²Î•ðqT×ÿÔ+Þ%ÎØgçÈÕ£:þšŽê­¹Êë×DõÊ\Kǹ깯ÉUÞ¢^¨-¥\2TQ7¦¬ã¸XŒBÐ䝇𨝖ÌíBzM¡pÈG+2¾ylþvÑäL°lù-ŽQ×+º'å¦ËAŠB¯hßmÿïÛƒzAâÙ¢Š$ɯºcÅ„—ëLÌIó“\Ù¯‚U;¹™\¾ŠîJ´laG~èÁ)í¥½à W ä]+rÝxÄÕ B+zÄ¥§"Ö° òÉX9ÄP:ˆ'†+>;ç•\óv¬Ï QžÆ$]³_H×î £ÉÄ2!¥hJ‘X@~‚3øøø¸"v‚œÄhµSí°ÙDšNgäÕúFÕõ»óªÿ‡½'Þ‘Wþ³Ç™sM^)Æ’*»y¥ðHvém:”ݼbeÍ«ôêdUwša•]„sV”f›lC¹ tÛ +¼µ÷%>tø%u½jlÎ’*A<±#Hw€ç ÔŠ,d„~18ã ÆGÄÒ{Ó¾e‚uöرSz².Õ/Å6…,¥ª±ûˆ.s ß+ŽIçÃqbî…R­‘Qö¢WŒ«ZàœÑ{Böø4­ÉX„LVçX¤°Æ`› +ŠËÈ#É9dÎ#æÜ jÎ̳òó6· &^ŸZÚ˜H¹#GëjÖ½V)…’‰êNôÚf…§ìagˆÝ*`ÜZÖ&¶þì¹42%°{îØªÛ­:œ·Ò}ø½JtFÇVdÛDƒxºÎÎ,þü<²bl1…ec•¢ÆSãÙØÝ"û[ýLWâÜÊ’Øv‘ÿŽC-yŽŽ›øÇóHÞúzÇÖøÛÎ[ææmšö0á­î-÷͹±Í?ÞyÛHlÚ{ˆªInÞZƒbÁØ:'z’;ØsŒýù¹æ-ê\¡ú…(>nPKJL$á±(iƒY·Ã燭·ç`w mG³ñÇ|èo4ÚŸ5Ò/¨ÿíUé„$öxȉʤü5FD×ù;Û‘§ê"™ðÙÿ¡óÁòd>Ømá’H¹¢ˆJ>´eÏWÌ3Þæ)fûô6 ö¹ïhZ8U,Â3­“ÕÏìQë¦p°MÅ%¯Âçÿ€ly´"ã›çÁæo·a—aÇ!ù[$Ø]ÒWâ…`ˆ(ða_bgÑ.``z„uôS{ +ñïÛƒzáE¦XœN'X†½F°sOMeJ§‚ˆ½îE³wXIƒ#rVJ ÈUe]:3#¼¡¨^éîaS¶Á§­À…yÖýx˜úÂæ-Q ]ñÄC¾H„vX!b¢aaþ'ûe³[E’Da^ižp6ólØ!ùx4ê¶ Æ6Æ´Fî–zűbÙóM}ºGáÈ[…ÛmÚº:Ê›•y"²JîpZ´:÷²{‚ù +¡5gô ¶™þr¨´ã©í52#3W?$áVLSÓÖ4;ƒ’?VÅfb#–3v™˜—˜igLg¬§K¢l}ŸßÅ/%Ö`ö\VìùéAÄpo +€‘·ÕÓʪ´'ߌ™Ä‰‘“hi1S#§½7³WkkÌ€¼DùbíîF/€m Ö“þ.Ý?.ä ®Aä²X?ÉÔHÖŸ¯]ù‚„ÄÈSÎbòe2¾uW>këbªoc^|;Z±Ëc²Æ-d—qßêêê[c5_¡ÆpåçFÔ(¬k…¯ð +ÉŽÖüL¢“I¼Äd°yï÷8¾ ¾­mÈ%|›ž¥‘sõ- î§o¯0nÓG\mÜ2O¾€ÇB5PG°Ò{ü4I¨Õúœ§©rCw#ÑA¤Á­ÔW锃ÐúDÖkOí @»Ì®hRÓS´Î¢Ò»ý¨æx`ì_Ø¢G¬I*¨?+ŽPú †ø'ˆ÷âsôlŹ/’¯°/ãT_„¢u¯W•‹Ã˜K”¾CäŠ9¶^"&YC4z=s‘Ñò”¿¬4\ùkõKÐZmòˆ;rŬ 5®g/–cp.`­ÿ½2¼Ë+¦FµÂôÔè“(G\ð:­-o£¯RÕ_ÎW)¡ç|E¾¸3¾ºÆ¸²£¹Z_1&_¬uõÚƒÌùj¹¿ Ôö"u‘}Çê„¢¡^ ªˆ*º9äêY¿±Ë*ŽË’ª ÌÅÿï$ÌX‰R8VS^dž¢Gd—š9‹ˆ’Öq°Ñ«:¢O+Zû‰VƒÁT}Am½€ø‡<ÄŸA|Žž†¼«âÜ·@s¾ïãgÛ@ìd –çtÒ¯æ]¿MÂL(Åš G2\°p™3h&_Ô*Zê«õ*ŸÓGCD©íJP ­ÿk°Ð  ‡AèÄ’ ”B !çÌJ4‹¸´oe^O=v:l‡Tƒ¤žŠ(l˜ô¢\L’â&© ó¬‹Ì£¹âœok‡‚ª† ]ÕB¾ ê¨UÀT)஫×dõÕ=÷[ÈR´ê†=¶¢5¶È–`äe‘J€R¢Ý5„<—Í C¹!^¬’ZÅTѱ™e{“p–œÂÜZ½§nÿ³XëuÚ#HÂ-ýIpLIs,» ΥȚ“"yo0‰C;çòÅÁÁÇE‰%±]"Z…¨#€½hVnÄð/“ä²ø4uˆ¶Ú¿°Òúàoo«Ó¬å¬î¬-½8©r[e«åŒ­¾°k½¼¨Bƒõ'x6ɯ“X]{õ$\@ÊäŠ1šR½zèÑ Z['W«V¯®^½™^}øðá£G¤8hD„âDHF„îDæE+ðJ2µþg,á´n¥u(,¶†fY Õ‡ð™OÍlÏbGbßj¿ÖÚ/hIh0ËÞF~š$)ܚ易žRíÛeØwØ‰Ü ¯Îå 4µß1‰`Ãm÷í\¾ø÷*«¬²Ê*«™ËÿYe•UVYe•"sùâÇUVYe•AÜ3¹nß,™Ë«¬²Ê*£@¡Üá°×íï›%sùâçUîükQ®ÛºUn–Ü·|qÝþ¾Y2—/>|øðöí[ðÍ›7§§§ŒGäéÁÁøîÝ;ñäääðððýû÷GGGÇÇÇ cf˜w ëÝûñãG4ƒûûûàëׯÁW¯^ñ«XùòåKö¾xñ%ä5¶ƒlÜÛÛcñîî.Ë@€LîNBÇ$2²d ÈzW°@ ¼še˜Q‘-Y ² Dª0Œ1Ö3µ„5Ú¢Y ,Ãfpp€<â,<ùû®Žb¿‰lÄ Þ ~ïBR˜»/<âʬßåZ¾Ëͼ/÷-_Ü–ïò÷Ü—¹|ñüùsž‚loæUU ª‚¼d#ÈÅûç… 1 ˆÿâØ½Ô¹Ú|A¶ÙzÁ#|&ОOòéA>hO䣈ž o ò^1´á]ØÉ{A”HGÌïìì0fÀY@) ¿ñ‚ø“ágvh¸¢è1PÑÉ{ýô~)ÇnËEqkˆ‹Ïž=»Qk\}¿¸bñwŠ+"ÇñEòÅÉ)äoŽ+ü|“ãj._°Ì`u‘Wa$ÁÐN½àæ£d%ž¢G4tÑÀ)D”`ƒ1xDŸVD»Äö±rY‚Ú U"ÔÄ !q!4ô4ä]Y‰%Á\14‹V •–€Dˆ¬Áòœ.d•‹0cÈé+ `*–¼·Z2g!ïmv‚c¾øÇ㦌Ex#A%æ,høÕqt„·[̰å +cm%fØ~3cÆ +ö"1ƒm‰^mÌ$r´Ó\ð༌4Ûp|z+SÿlÌਿ3l¿Bž¹`Ì\œgæòE5•jÐ#x@›)¯vª>Ê›IäŠ*(©Í•ÎÛÜyÉw豕«ë9².öÄ*‘§(¡‚™ÁVÚšY¯JSxïçI¬«ë+ü iã(VJ†¸º¹½‘’Ä%•I¤hðSŽW’¨Xð*öT¯êyÀOŒ¤¾Õ?V 9Ž^œͫö¬4À´jk¾Hʰz÷í£W«õªQÁSfÎÎÎôªÖ«®Ô«Öof–e¯ªmÙ« ±êöxµš½Õ«­®«±:z½ª=yKUÅXÕ°oÆj¼ò™‹U^a¬êU"G¯ÎeF³[ÇlÍUñù÷–«de¤].V½¡s¼z‘X%J/«#¯Ê¨•Wçò…ZÃ5µ˜Æ¶fó]êœfè*m,Ñ1öC„[lмMgE\ÀañÍW˜žxÊñu ˆ=hH&µ±bWz%ÎÕLÂ!qβUœ œãñÀ%|eµ6Öx©91ɱT)œÕWžy‚$ÇÙê+ÞËvU_•|ñØL‘_R†„ïÙA}5~¦ê«œÂíŒõ•ã¤lçÅ…¸ª>™CWzI«øÊí3_Íž‹«øÊíŒ+‰=MM¾HóXf_U\Õh¹´¯Œ+lj+"G/ýý2Ë#‚(6wÑEæ |ó5+ û§¢yª‡ +¤’U­ÖÉr!„i6‹Kf03ãL¾¨Yø¾è‹–#>W¾x®­ÌÚêI^ÍñŠÏŸäU}ƒï¯äÕ}Ѫ·ËQ­3A¶0ïp¼¥î™¾Õèˆb-a„¾â®Öi’6Åa­Ù¬ètbí×¢.B,ÇH¿®¬ØtG×±­7jÕëùV$wcPb°—ôg)X‘ªÀ +AÚ€¹~Öô¿cÕYi ¤¹{ª—Ä·&l­ëHÑ·ãæfÜÞÜ?Ö f‘H`Ä N­óuhªŽà˜ZîÕn1bÓ/cÍ¿³_¬¹&3@¢/ÈË¿·5YܯúB¿`yÑ}1&}õ‹ãlWSƒ–L0¯¸w5¤_êVΈ5¼Ž«DÍLõ-iBİúÅŸôN>¯¤­ê8úùU$¹û^ÜHY‘÷2–䢡ü\¿gåyÓÔxùuäŒ_ -3õKÊ¿ŠÖ®Af‚|å{9øB¯Ý?•~¥|1¿«nZ¢hL„mÕIªÍày¿0ùY~a)ýB‡ùôAãsŒ±`´‰:"éï’8¦¿Œc{ùBe©’̶ɹ-÷q6ŒÉ‡âX+¨¼ëúÒ™“qû¬ÀWbûX <ÃBjÅ9–¦ª<-ɨ†ŸëTlGbßš§Zã¬aNKå/y8Iê7îÎN¹Š¹RKü·4k YÁ|~e…&ýZú;=§¢5aIÅh`ÑœJd}Ⱦ髾¨i"#ºükiª‰±Œ‹áÌiÉþqnôÈæ]²TeB©üÙ›3ÖÚ¾®6VeΜ–|!“c[Fj:3ü6Îømú›$‰G\§qf,¹OÎŒEéx÷ª\0œ«¤J?¯À:¿ò!ëˆUÈ–†Meˆ›œi̹¶|!{åŒhœ1€UP˜#´¿²¢Žìy¤ÚŸÉ±ÿëãŒ1y/ÎD]Î3ã:+ó÷òÅfÝÜ“9Mä•¥³¾²_¸zd3·Ø2×TõÕ´ú*ï+ ÖWy§é¢DÚ }Û<®VÝÓ#±U«xƒza‰÷ü¾³NŒ¾Hšˆ¾Pqè©M¿X_iU­Quâì—U»5ñµ\ =ÛHûj3¥ÆéúÅñæ—˜«~«SòyõHX='ôR¥àüÙ/c>ñ‹?é—šéÉFŒ´ëë—:rÞ/U'2>©GR÷^[¾˜ß‹>Õ/˜E˜¼ ÇêHÕ#gü¢H¹Ü/ÏՉϊczÊ÷b”ÞËÉY mcv3¯‰!¹™.ýZZeIþ‡ÃÜÝs@5 ü1¼°¾Ì ¾}ûv†9ɵ%ºÖ‘6Þæ¼cÔy‹n…Çâ­ñÇ\ jvHy–V'?)ÀªÊ3_´jÿYxIüaæ™øÃ!}_X@þ؇?{ùâM„OïSJóÉÌÏ¡Š 4ŸVP¬Õ üêc÷ñ¦Ÿ_ÓOzâØ¦­4þkˆž¿Õ׬œ˜ó6 _ÜZ|°êÝ6 ò¡6 ŠXµaBA¸¦×`Âuâ­w÷93%‚Ø3¨®Áþ«¾0YäÏ$bÄòœYû³WfšœkðôFü7œkÒO_ÎÔ«±~åCs‡×¦‚Hpö¹¥_OU+p1 ¶Èïâ·Ú¶qÆÿbŠJ’HWYǵÉL~­T´…3cIy7ýÕ™íŒÇ)2«Õ”Ê9e¦l Ê[Ù"bó3œ‘'aÎø$¡þMš 1ªÌhÀÿRšÙ!ÍâMufÃ)Iߌ‹&q#Œ:N¿¼>Î7ãŒq;q¦rF/'ÎØˆê;ù¢VŒQ /P©í§¹~%¶i:©“£8ò­Ï<ÍŒoŸ¥Ú¯¾,‹³ZG–Œ_y>IdfpyeÆO±—ñ½T2¾!+Ê”0HNë¥ö*Æg鋌™É™ACŠA†Ý›#y3#›æHõ¨T)^Á Z©ú´YÊ*ÈàðÏÒþ]š¦±šê€ŽY›€’ß·Jüþý;‚¬²&hhòùÔSqžœJ¤‚bÑšÜ*‹sZƒ¦¬Ðh­B‹CÍÔ ™™i0Ôª°âC¬Ê¾³UÉ?Õ`Ë‹­zZtÇ;Xõ®žu¶iÕSQŽïÏUvŸ­Uò\Õª0G{^[¾xg®>*®ê\¹j_®Ú‡Ÿ{ù‚ùLƒ´¬Ï'ìÅäà?ìKxE[3ß­AWHÝÂLk•TŒV†Ÿ¸&ÈÅóö9Îç[Ì‚ý1‹Ž«îK… *²â8Í¡¹wF²ÅeºÛÄaXSƒj[ËÚa«ƒWàµå‹ëᕞ•WI)*ãQ;ùâJÈÿ¹zØê°Õ‡ÛêÚòÅ•ðJ·Ê¥¹^íå $ {1Wó0.rZL$9A9$ȹKYPÔ\b.lâ®I¼*ô‚œÕ‚ìÂÙ‚yD ë™ÛÉAÎrB+³N•¢ '1>ˆyDqîyä+‘ù¬ ²‹dB¬¬À¬wWœr/nX +¿°Ôm±Y6ÈâRdqÅA.Ë|Wв2(íé³õÁ‡ƒòáB5úË´ƒ•{ùâø;þŽ¿ãïø;þæ¿#_Çßñwü—ü%_ü~´£íhG;ÚÙöÛÑŽv´£íh—µÿÕ"nL +endstream +endobj +618 0 obj +<< +/Type /ExtGState +/SA false +/OP false +/SM 0.02 +/op false +/OPM 1 +/UCR2 /Default +/BG2 /Default +>> +endobj +619 0 obj +<< +/Length 6424 +/Type /Metadata +/Subtype /XML +>> +stream + + + + + + 1 + 528 + 421 + + + + + + + + + + + 1 + 120/1 + 120/1 + 2 + + + + 2004-05-29T16:11:53-05:00 + 2004-05-29T16:27:32-05:00 + 2004-05-29T16:27:32-05:00 + Adobe Photoshop CS Windows + + + + + uuid:64f454d8-b1ac-11d8-8c90-a1142b67d8de + adobe:docid:photoshop:3d8f39c6-b1ac-11d8-8c90-a1142b67d8de + + adobe:docid:photoshop:64f454db-b1ac-11d8-8c90-a1142b67d8de + + + + image/epsf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +endstream +endobj +608 0 obj << +/D [606 0 R /XYZ 109.858 727.97 null] +>> endobj +50 0 obj << +/D [606 0 R /XYZ 109.858 703.064 null] +>> endobj +609 0 obj << +/D [606 0 R /XYZ 109.858 404.031 null] +>> endobj +54 0 obj << +/D [606 0 R /XYZ 109.858 393.307 null] +>> endobj +605 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F8 369 0 R >> +/XObject << /Im6 594 0 R /Im7 604 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +622 0 obj << +/Length 2770 +/Filter /FlateDecode +>> +stream +xÚ¥YmÛ6þ¾¿Â¨­u’HJT>ÈÛݵ½ÄE$NkË»jdË•älòïoÞHQ¶w³¸"ÈZ"‡3Ãá¼UÊ,L I-a‡úÝŸ'Nòˆ¢«#a7êG<~4NЍëù‰LˆþƒHó@ΆtEtèÁG‰Ø˜D3v<µz²ÞýÀ‚Ç»º¯™@ü «=ÓÖmžÕõÕXóØX‘s|Ͷ̧¯÷Õ¬h° ˜¤„„ƒ®ýI+¥¢ÕµUDþ¦Q{S¡ÏeI’p^AäÙýd§¬Œp+8[A> |Ó KÌ 8Wá’ªínné³R P—*'…œ +*Ï£-®àü†QØŒ´Wœ¡"£5FÛš¨â¹ó#Ò,« +Ê1¡œ_^ÎC‡ÑЮ*/\4;÷@‘÷..›RM G«3¨rb¸¨˜Q(¾«ÚVT>ÐÎrFÔÑ™c:Ÿ–Oæë .!÷¢ßMÓ;C®Ç®ÿ*9!™üÛ–±) )Mû˜„+…I™hì¾;¸¬ /X5šÐ—©Õ¤6Ÿ;åÛZü+98¾~  <ŽQ‡¿X‹ÛZ¢¢õñÙ;îá ñ‹+uznïy\À =Y˜Äà)33ŸÒµS”äu(°§¸¨çú ]z~(šáОÕtl‡Ã“Txùý÷,è®®6u? Eoƒ}C6o{ýMù\àÐûµûÿ¸Ùî¨5 hTñÏÐì¼MdÇñ@À9Ü ™¾>´¾"×ÄÉ”2g–XØžš…È,Ùâb´ªDGÕKœøîŽ)…åÿÌzTAç\;¬Á©6{¨ÜÓ +äK1ÀæÑZc¬ ÷Ò^`‡!ýz{T3[M"A‘ã%I8W"ëèOâ¼é‚cU¶PÐ3•¥ ë9rÚe@LÈU§¾euèÖ‘ ¥ß‚IÐ&ª —R“S`›ýÂŽ¤ça²r„8Ò2=‰Ècc›løÈGlll3,*䌘¿û†XzWû®ž9„ƒë%õ¬^¬®S`Ðu7‰~y¦­6€>еµÔŠ&Žã»KÖºG[†š‡’oö›»œû‡ȳ8/³GP—8“E +=Ž9±ÀO#†ÓeÁÊ,{úΉÕiÒÏ‡ÃÆ Ë” +r>t +ð¾µyŒàö^|OÔËeì8d;“ ™Õódtr| –‘ëȃž–b––£¯¢²9€äç¨M{.RŠÕ8eu ¨¶A¿, + TK¸Q4"\ˆ$7SæÁå]__€âN´Êuäq¦$N•«Çj'NK.â]Ïè4ä[;, –<™÷ ƒÐ‘WÜi=hž—À ‹˜K:¨ªFeì+HÜ6{§Œäã‘Ðíè:ÌeXJÙn÷ ì`©~³+ ðË(ûÜÁcw^9%W\ɾ³óÚ[ºîí¬JÄ“s,PÞ‡á [”-?ŽsqígîªéÌD7þñç7¯˜y6¡>-‡„ +þWú©2ÀYEkíª®E_+òÚñú,@ugÚ¥[ÉiðŠ•oÍ~<µÔ€Ns=·û¾¾g…/K4P«]âø±ƒÍ¢çÛqªŒ4Œ€¨ð^ã ÕEœ%ù_5ÀBaÁQ ²¥CLÝÄ@÷Zç| ¢]ûÜ’ë¾ Ñù“2 î3 ^¸€qúc2Iœ¤s(sé†ë> " .‡kÚÖ_ƒH[ÈMüÚ5½ofƒ…¾ ^¡>?æ”®ËУ”±œ¯¢ëÀ$AVi‚¦3gE@á›ôâL‡¿›–œ(ÝŠøBs¥²$6ÊÎZÉwcýìRGRfn[ÏÉz©•SÒøýÞ…&SSú¦—ŠÀÙ'ðfGM÷Œ~Ûõ²F NÏßv†ŒPÞ‡N–ß…xRø4¢mÕÞ£WÜÿðY§–P#hÎñ®…§ÏÞÃ8©é®QËlð‡žcÅäÑÓÕöî³µyÔ|¶Ég Òî(ãÈŸYè±ÙòšË”PRsY4¬Œ%"+ÖàÖÝYâßhµ©+¿÷ójîÝ„Â{ <(V4ÁíÍe ϯ1ÙÑßÑ{KUL^¢ +ù®„ƒ³¤âÌÀ¹…–pgt‹Ñ µã+’uÇžßNî’‘ïÆgËZFü¡;†gÔè_ÕhÆÅ¸æN«§xr0PÑ7ŠnyÁÌ;€kHˆØù'*ZënG0Lä:¶X—…Jªý¡¢»ö*¼0,@"Q +ÔlJüSQÑøt Šƒ£Ã=ßPýŽU-ÓïÄ]ü·3F><çB_†±iÛ¹þçíë?Ñ +MYjf`Š‘ÇÚº„Ÿ“¬æ­TBG— ´Ø8‚Ñ»ÖÄ—F(~zõšÈ*è$"ãUÝòg,~uHŸ_¢ìï¯ñ?½¿põ¨ig1ƒKR¨›àOEÀ}Ì mÉ7ˆãxÁ !®ä…ò‘áaß‚ƒÝLeCŸöü…LÚs¯IÞKòåí¥SF¹M§6tU±*‹ù¤ÿ§Ø‘×endstream +endobj +621 0 obj << +/Type /Page +/Contents 622 0 R +/Resources 620 0 R +/MediaBox [0 0 612 792] +/Parent 610 0 R +>> endobj +623 0 obj << +/D [621 0 R /XYZ 109.858 727.97 null] +>> endobj +624 0 obj << +/D [621 0 R /XYZ 109.858 658.287 null] +>> endobj +58 0 obj << +/D [621 0 R /XYZ 109.858 643.274 null] +>> endobj +625 0 obj << +/D [621 0 R /XYZ 109.858 422.045 null] +>> endobj +62 0 obj << +/D [621 0 R /XYZ 109.858 411.321 null] +>> endobj +629 0 obj << +/D [621 0 R /XYZ 109.858 125.798 null] +>> endobj +620 0 obj << +/Font << /F29 416 0 R /F8 369 0 R /F14 372 0 R /F28 380 0 R /F20 385 0 R /F41 556 0 R /F45 628 0 R /F19 516 0 R /F11 520 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +633 0 obj << +/Length 1619 +/Filter /FlateDecode +>> +stream +xÚµXYoÛF~ׯà[(4bxs™‡qš¶IúÐ6 +ê" еHIŒi’!©Äþ÷kIJ”íEDÜcfvæ›kמåÂ?ÏòÜÔQ‘²?qÒÄÚÜ,\k;¿,<¡Xž£ qÏIhµþ9RºÖÊwR•"å—ŇO®•´7À¦Êúc×ñÃÔºY„Qêø‰’y¹x·øcÂ{‰5ˆš)d(¾C¥U‚f)øö]¬Ï~öS‹æë­%B°Î>Øï;½Ë—ŸÖo¯Öƒ¤4vTœ<„“Pú~¼\ù¾²_ÖÕÒ‹ì¯Kßµóv¹ +»7ߢÚ1‘®2¼ovËÄná¿Î†ÝW·E7ÒþÞÖŸóMß¡!¤…rÒ8F5ÂÀu‚4­QÏ;55 +Ç¢‡l5$3c•å…NÆdãÔu"ÏhýÖ—£åoEk½˜¬&•••‚ÆJâj'B@Ðoyÿ¤CtB»××K“ã,°5/–KÏ®A¾²ëkÙèùÛïs&é6p`è!+üT¼ßík¡¬·†ƒii}´—¼šÃ _éøVŸ"i²+t]0E!LÖkÌ—SådáÙëeýTCNXcZ¬Œ¬ÕDa>ÁÉÐ*tÜÀ'¤.Ⱥ-âÑÂ0L”½Yú‰½b§„IÂà ÉG×  Ì;žoë–)6S› € +X=]®"Ю˜\7 Ôô[èÞhðˆfn%#,7¨ôÁõLqEŒf){_w$PD•1Œ$°Lyž“Bô"<Ç>ìŠZ Dž»ä'Æ÷›št¸¢µš×̈oŸKª¹£Cð¬ØI),ÍíÔ +T§€g?ŸÅ»#?:Òó}'Zôû‚AÀI{ 'ÉNͪXܵ:Ö®‰íÏ&à±6Ðæ·Бo×eÆ5'8t´fŒF]å³*‘Ëî­…×(²F¦ ‘ñ€¯qÛw\äÍ!\ `Œ@¾¬—èa¬ø¹‡€bvúoYÔ›ABBRxRî~œŸ8 t!Þ&— ¨ØEè²H:árî®Uì;qr쯗{HpYÜ!pˆH¬ÄòJ#¾ëº¼IÕíºj¤é‰ÙÇ4-Z“Œúô©Ý87tŠáçþ\'!2h`VŒ|8aoD¹Õ™t~Ä‘ñÿïÈÇŸu®8J¡£0e[v%ÃGÉ0æ éäí™|`1²ämCýwè.çÈÅÊQnø½ÈùoÏ@ÅN íý¡¿ÇÆ{ "\©]— ví‰?N‡{¥Ëzw#£ò\ÕXï%‰ó[½‘&‚9Nµ(ø¨éÃb›7%+ˆ›7rC@õy¿n¸õ´ºç2Ö1!_Ê=ȾIKBÎB¾ÃµBEö?0|—÷p{C<‰÷ÉD9> endobj +630 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (ss_converter.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 636 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 352.00000000 261.00000000] +/Resources << +/ProcSet [ /PDF /ImageC ] +/XObject << +/Im1 637 0 R +>>/ExtGState << +/GS1 638 0 R +>>/ColorSpace << +/Cs6 639 0 R +>>>> +/Length 94 +/Filter /FlateDecode +>> +stream +H‰*ä2TÈTà2Ð30V023г4²P065Ô31³PÐ XXZ(¥r…+äqé»*¤srUXZ˜)¡.DŸ‰! 3"9—Kß3×PÁ%Ÿ+ ,ù +endstream +endobj +636 0 obj +<< +/CreationDate (D:20030406193451-04'00') +/ModDate (D:20030406193451-04'00') +/Producer (Acrobat Distiller 5.0.5 \(Windows\)) +/Creator (Corel PHOTO-PAINT 10) +/Title (ss_converter.ep$) +>> +endobj +637 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 586 +/Height 435 +/BitsPerComponent 8 +/ColorSpace 639 0 R +/Length 17165 +/Filter /FlateDecode +>> +stream +H‰ì—ÍÊK†k $‚å€HržAœ8JÀ‘:DoÂkñNòáÄxâ-è0‘G”Bp(lˆ_Î>ië«Zë]«þºº÷÷6›½ëgýU÷zw‡ï~¾óB!䦸üáù미ûôewn¦Åðlób¨(ÚÝ,³uÙÝU0ëþ©*Ú4fmËü©-è1ÌátÝÜ{øw¿|ÿ·Õí{yúâí·~ò·oÿòïßüÙÛoüøŸðê}/ß­çU /ß»™³?†÷5Ùãà&…11»šã8ÝýSQáIÏÑAJq„j牞dyÒsôU ?úkøÁŸ>jÜ'uûìÿøü×ÿ~ú«÷O~þ/?á§ÿ!„BŽÂ½À}ñçðìõ¦nWiûÃï¿$„â?߲Н®P·>,r^®êv¹ü—ý‰T7BȨnd!‘êF™Õ,$RÝ!s º‘…Dª!dT7²Hu#„ÌêF©n„9PÝÈB"Õ2ªYH¤ºBæ@u# ‰T7BȨnd!‘êF™Õ,$RÝ!s¸u !,ay¨'*BJ¤ºBæÐ£n÷{1ûtȳ4öÙqž¥)qS·çT7BÈH:Õ­y6$WÚœÓN¥‹Ë6.6ölPtW:ÒöfßËØÄŸfš -_*ÕB6F©[ÙZMu˾k€Æ.Š0+~©ÖùDÛêé.RÝ!s¢nâ Ënêæ‘¼Ô-[_«nCB¥ºBÈ•~u ¯l¶¶‡k<µ(u+c3_$1T7ª!¤ŸQê–¶útôðl=èäe·÷ôvSÝ€R4¼»™osæöå •êF!W†¨[Ú]7Õh~wËT/3[®×z{¹ Á/_Ù‚L\p´f¾bqÊ<¡RÝ!äJ¿º‰Y›Ý~8ÍŠz×cDT@m‹Ó×é¤íBu#„Lc¸ºmmÖT7ñej “Ô­JqD#æ»[›/ª!„lÌP7Ïì>xÞÚLµ™­µ +¢GOG¤ºBæÐ©n˜åÍ“œHu#„Ì¡GÝé$RÝ!s º‘…ÄBÝžüêFÕ,$^ÕíÕ»ðìŽêFÕ,$RÝ!s º‘…Dª!dT·„Ngy ‘êF™CºÝïÅ,ožK˜-@·$p‘êF™C§º5ÏŠ:|ºÊÙt°ÜÕ`DÛ›}Ïüj?A<`6$—?Tª!„˜ŒR·²åÖªèí¸±c#CÔMsaþÑö„z3©n„9 Q7ñE¦GݪÖì¬nÙúZu*ÕB0ýê^ÙlU‡íDݲØJ]zr¯ +•ê¶œû#¸Œ2œQê–J@:[ÛáÅ–®‰‘ÇHÒw7ómÎÁ¾<¡RÝŽ€G¹¨n„¬bˆº¥]wS“Zu»ú¨I•¹«4Rn_¾²—‡â’mÑ‚)c.3Í,hái¡RÝ®lÚ‘‰H©)éÊë%nOgÅÅ©åÒ‹¸+5ˆ]€Hü.°÷Òˆ?}v<8”Ò‚–Q$v*zwÖÜ*ýê&vlm¶\\åQ\_k¤Ê~ƒñ`) ¶Åék`¾Ë‰“Õ ´¾¶ŸÚÍuÏϪ¬µx<ƒþ`€gÍuÀNµc2ë@n˜áê¶µ_¬nááåô¸§ºU)Žh$Xïnm¾n[Ýž¾°Õ-»yÄà˶Ëlªåâ±êâéÌKL6î)Ž')YóbÍ3Xµ mï©Û~ü©s!c¡º‘…Äu‹ðÝíŒê6i—¹wmR£œŽ= rPÝÈBbŸºí Õí°¤ÿ^Ξ Õ,$žGÝ!ç‚êFW«[ú·Ÿ4Toy „hPݸ¨û·xFnž¸ZÝ®°K³t§f·S8×q÷¨Ûý^Ìòæ9ƒ6 rjÙc¸Ø¤náÓ…:°,ý²­I?ñÍ ¶E|CÔÌzÖ‹?Óq/Ø®ÑJ䬼y^æúr—–Z9 +ŽËRZ§@$8 œNf\û‰óíw’ËSX³8{Ò©nͳ[3ß.O“ã™0r,=¦ëŨp ålæNs‘mÙMYŽ@ì{wó<Úâ² ´/çͲ¸FŒ{135·Wƒ«J$ÆìÍs¦Û^g¦Zý«¶”qž‚Ó/Æi|’#üdùO»I¦2JÝʶlªèäÚ”ÙüC¡\þñ'˜Âš65/Jàâ u3Çý]]|êÓ¾ +žå´÷–¸ ©4[î5×k1ƒq§5m¥Ù³A±ZÊZÑÊÌS³ðÔÄS½ªj‹a¤ŽÄAl\«üpGÀ‹ÿø–0DݶìÄY¬U³æ®0Zݪ+ýø]ܱUݶ§I›G²gP|®µÇ3›;n Ts¨êHf§ò\• °Ð³–>5çv$©AÏ)˜÷§ç,pYLÙÁ‘óø–Яnáá•Í:›ÿ6X^`<ÛÄÂ3¢…a†íIЀßÅ  u{òâÍìw·ë±nãÛÏt6{´µg6½O²G[tQîÅááõ #1;”¿§Vð,e­€â­b ÷,ýÕoÿzíž)ÃÎÆËjƒ²Ïs„}á‚g3JÝ.‰(¤³ÎæïœuŽŸºmƒævÀÀ<•¹1âÿÕín ºU5*ð#¿êYîôëßž5Àã$¥õäª×“šx—Š*SnñhÇGUUZ+gCÔ-íÌ›jì©n—B[ËŸ™‘Lbðv1ÑŽRH®lÖÐ&6©ÛV7óAÓ–ùñ­3œg·<”ºµ5á}b3·щÊ+mUýŽœÏÚ1éW7±¥k³Î6®M¡óE͇ ľw·ý)ó¬,p‡ô¬ 7ÄÏpuÛZ´©nýýåÈ„‡ïƒàÝ­Çø#!žMÝ!ga†ºyfOMöú6Ãì#!žGÝÎòRp–8 ™M§ºa–7Orp"Õí±ÆIÈlzÔNâ4u ɵ€qm»sXÓ”ÛS§¢…ª8ÅÙ†½ xزV–꯭/g³q-eí6ÐÎHtD6¨nd!q¦º‰# /‰#ZÂͰv»3l­mΟý¦:0ÓÏEkøX}ª¢*0³&ž2V•—¨nd!qšºÇ·çþ\åli owz/w9Û¸§–Ej ìõ¤Ü¦nfq€º‰çÛ|U™5ñ”±§@T7²8SÝ@ë‹ógiÍ¿>ëŸb×ÄȌęEC´ÚÔ [ÖÖƒD¢!°Iê–ãÃ"T7²8YÝ@ðgÿÛÓñòv¹×³ÝãÝé´6ÎlV‹ìÕvi1ƒªŠ[´zŠëµ\"]‰Ó’õ¬Ñ*Tž¤PÝrsî¶Ë4âN<žºE¥ÃtzwÚiˆv m^zb.5h’Ó΃À»–¨ ¥Í¤GÝî÷bf÷ÆSÓ£ýºãÔ²Ù u{úâíuÓþÜ:ÿôÿoìoªâ[ÕMÜ(žï¨ƒÀŽÈñéT·æÙ­yn—§©zÆ·ï¥åÒqöüëw°½ÌÎ#b8ª*#žRø5¯êöê}xöz¬ºÎöHuå´ÊE¦qä\ŒR·² šê:g¿ºÍ1Ý]pÊw¹`žº™#U¾ÚˆFÝ!;3DÝÄ7¬nÎ7—†qM•Ú´¬Yݲõµê|5@u›Gú7˳&¤–ýïÛ~u ¯lÖÓo3( jã¸{—‹K³æ®Zu#w¦oªYh7¦néߌìáÒÆµÙšr{¶¸7cÀ»âÃ7D°7ý"®7÷jÑŠã  £2ò˜{ +!¹Äú8GšC¬s–,Xi¨Y»¿t©/1YÑvÄe‚†¨[Ú ¯×ewuK]—Á˜#!Žìgé7]“-ð8âR&¨¥&VÆoÄ3â9©NâLuó<ï )á6¬†–µíjÛ^ÖA+ζÞ†h³!qÑ>í§f¡ípÊfYš£á®sÞímg$ÞféÌtšÅO¿º‰T›u¶MmªvÜO•…rqCÁRÀZËCŒ /,&NS7üDø§Ê¦´ÕÙl/Ú²ª~ع=$Õü4“õ„*Z(#×`³¢…ÎSÐnœò¨ã¨º@Ìæz~âûA+' à]<»*†«ÛÖMu»èï û7á* Ayójó¬×.¿µN#3 +‹‰3Õ <àaÑnzØQm_Íœ6o{›ûðk†*6«!fgœByz€¶?ð8œ‘ƒ›ÄÙðÓŒ<«’iÁÏk‡ ˜¡nžÙ±„}Õí’¼¢öà±Peyˆ‘U5‰“ÕÍl æ”Ø²‡W|ô²NXµ ;5÷–ýï5ûOúÇ\ºó”Që]` pÚy +âO1kñsÈq”µ]Ú‰àO1ÁQš¥Ã~;1eÑ>¦SÝ0³{#9;q…º‰ A\_û4õÇÖã×l5AήÆÀŽªÈ]ˆ!ÇÑŸЦ}üIºÒIœ¦nâKÏ“•ýsžÊ$ukû£k†ñxÔ ¼Ýlã~u«=Žyê†-ñë|¨n䶉óßÝŽÌXu‹{ìðîñHÔmlxmDZϟ«Ýê°ÊÕ,$êöä1©!dT7²¸©Ûó;ªÛÑXòAÈ(¨nd!‘êvx(pä¤PÝFq߆¬éßr"b“º…äÚFð‚t0]_Ú6Ó/¢…Òi¹W 3†,1Y¼ „Zf$Ǭ¤iÄ“»¸Á¬9Î GnV–uûûåv#InDÑü”;žH®ÉÒ¿/»² 9ÐÀ¨Ù-±‘̬9ƒªä#IvOœæçX?Û‹çe9b +v[2ê9GíÖ|R5I#X›¯Pà,ÆW•õ^§äF¦ŠT{k/ÁWt­³ëTÃ)å<Õà’üí7 Kn˜I» ·ªû((¿ÊVu¶È“È r¸¿ÙZ½.¾ëë½sMÎ!»=…¥¬‡?ðZóZ¹«fˆ ”}Ô÷FQ•ÏÕ-t-Cë¬V=IkNë„ý54=²Î®%õžFü7ìÊ*»É +Ük·Ã®ç‡¡¿ƒÓ_^d³«Þø69Gív¶Ê‹%§0ª–‘O‚3Xe7õ½]µ·|>à‘^»5ÏÁ™32[ðô†í6p‘4¹[–ØíUIÔV¿à7‹ùkæ1»©Ã'íÖÜK¤§ÿÆê<±›«ÈX–QKYUç:üš¡ì`½7²6kÂj©Ö¾¬eX}¬Qê<ÎIªÎþÞ­ŸˆºëT« :KЬ\P¾”Ü*óv;¾Rµ:u^©ÊV’CøÈ.û[OÔwÉ¦à‰©óû»î}ųr^h·É‡¨ÉÁÿb[jàÅ/=„qV-;{#½+ÇhÊ*»•UºlíªóÕ“¸D"ýƒv+¥\p\F»nîýÑ9‡ìöúMs~±Ë¿ÔÖÞÿ)U|§*7³—aé/_É5‡ðN?÷·Ï»•Eø%ˆ»É›Qõ¤ùU¾%Ø¿4KðuÎ^,O•%×Z¤õd—€RsÎÝ݆3V£JWRå¬uÈ7\9?÷eÞnj·Z#Ìg£|7=w_Ù97ÙòöYn·W5nÚí,PÝ­»Ûãö•»%¤º_\pÝàFCn˜ »EZ3²×·Ñí›ÊΉÝrRêÆWÏ1a7rÃLÚÍÏöâInžów»ýz|û{—ÝŽ?x}÷)?T¨š¬¯Îë]r‘åœê‹â3ûï’‹ož^|_¯¥ú‡©ž¼Ü¦?gp¬%gžì,WEn˜»2™sÔngëz"[ª%¿ªM‘4+¶º`õk|‘ý:ÛiNÕ»¯à×Èòâꉎz°Öi8±Û#‚ÝÈÆœ‹ìiê-Œòöµ°î“<²u;«öùªîÝ9ŠjyͱA»ù?V§3v{D°Ù˜ó®vs*¼ú–1 œ_‹§:g†Ýü¼ÀnT9i·áÎÒ‰ä†ÁndcÎkíV%çkÕÙªfV9\®Mv8 +œžêb|?úÛ—¿ªáÖj~g§ÎÌÕ¨ÈÁvu–GMnìF6æµ[¤>WŸß»½Íî–lDÚ-þŠ®ÎäÎÁndcΜ»Û«ƒü{ûAyÜ‚ïËP‘¿s¸ ½M°Ù˜sÂn½¡Lý<‘?뮿sýGy»‘9/´!ä§ +v#sæØ­üÛ›òs»‘93ïnŽŸ9Øl̳ÛQP=øúzx¬¾žâˆ+ yVšvûì@ÈLÚvûóoŽÝT+•Ÿ-CIaÉyü±êBÈ#òOînd_Î »É{–%¬»R#äéÁndcÎQ»©Ò +««3š#ä¡iÚíÇ½ê“²éøŠ5ƒ?ÖšªšS¾‚<4ç„ÝÊëXu5ó[›ó”MUBÈS²Än¾n|»EÌ…ÝÞ5ç¨Ý’‚Ây›<Ñnämrî³›:v#äm²Ðn%Ö A»USa·wͰÛÅùñ˶ý?&!d2A»©®Qí³Änjgd÷~9ïg7BÈ{dÉÝíCHö÷ÍèOUvV—DšÓµÛ_ÿö/BË€Ý"MÍn\ÄÈGÀnßú‰ÛÍ¿ù±naØ`7È b7'q1•rìKÞ8Ø 2˜´!“Ánv#{ó»ý‚Ý`Øì v€ °Ùì`7²7Ø 2Àndo°d€ÝÈÞ`7È»‘½Ánv#{ƒÝ ìFö»@Øì v€ °Ùì`7²7Ø 2Àndo°d€ÝÈÞüa·_oÿÀn° +ìFö»@Øì v€ °ÙìDìöÙáÎyÜ‚g¶ö~ÁnAÐnÿýÏ¿ïËnÛ–´µ÷ v€ °ÛmƒÝ¾c7å†v;4îl·®c7ìpC»Í+àÎ ÆnØ .`Ànê ¥zR~hö¬n:ê×òß^»]¹`ÙS¾ÂvÃn0ÏäÝMJÇ’‘ª'µª/·Û• ~©ÊŸÊz‚ݰ,a¹Ý"Ï›²¨HµÛ’÷ŠÒzvÃn°„Uv³d¤>÷e!}‘a·… ž±[õ:ìöi·?a7˜fÌnUA¶*yó¶r™ÝR\õ»»a7ì °›UáU}È‹Iu3R¯-kí–½`Õnê+üɱv€U¬²›¥§ánÒkí¶pÁêRçƒÝ¾c7eÀnÖ5ä¶vË^0vÃnp7Æì6£­±LÚíúc7ìI²Û^ÜyÁØ »À`·Û»}Çn0 +v»m°Ûwì£`·Û»}Çn0JÐnwÎã<³µ÷ v€ "v#$/Ø 2Àndo°d€ÝÈÞ`7È»‘½ùÝnùíø»À2°Ùì`7²7Ø 2Àndo°d€ÝÈÞ`7È»‘½Ánv#{ƒÝ ƒI»}Žõ³½x’›»@óvn%ä»@ ív‡ÓjEŽ*Ÿ~Ù³|¨Î\ —Ï«±êpˆ|®¶6ÏdÕ¡UkXu†Á}©ÁnÁ*»Éªø±Èn²7+v×guÚ ûÊÁ"´€zž«mùÆ÷%ƒÝ ƒ%v;¾Rµúɰ[³›õo×Wgxõ¡<™^ Xîë:´×2"‡3p†3ÁnÁB»••¼lõÓ,ÔÕœM¿ôVæa»}ÚMþ©0shåÏ(ã g‚Ý ƒUvSËò»ÛvSuPïu™ó¹|iäL&M]ÿÍìöëñ »À2–ØMVÚT»©E[å”è`eî­Þ]“gìO‚BIWž¡ìdØíUô|»_ñŸÈR,+³Õ¹*ÝêM$î‘ÈŽ& ~Æ¡U[^{†3ÁnA’Ý"­HªªÈv€æíæg{ñ$7v€ &íFÈd°d€ÝÈÞ`7È»‘½Ánv#{ƒÝ ƒI»}Žõ³½x’›»@óvn%ä»@ ív‡ÓjEŽ*Ÿ~ÿj”3¼z¨Îo½´([›»[µ}¹ëûŸ†ì¬²[U«Ö™ònÕm«Î[ÕÕ)ûM)86ë¹z2«¶ÿ¸ÓÁnÁ»É+@Ùêg­Ý¬±Û¹ªŒÝV,÷umÿµ  ÷?W°d°ÐneÅ+[ý4Ë{5§¬ÞÕ«{o+›8iÖs)ý™í—§ýÄÓÁnÁ*»©Å|áÝ-RÏBíw«ì,ßè|–ýÝMn_]äSNC v€ –ØMÖçT»©¥~ žû‹é½ƒŒeLî_eôèÓÀnA†Ý^5зÛñÿ‰,ಞW›õÜ)Ôò½Ë3¼ýj;O? ì$Ù-ÒJÈv€æíæg{ñ$7v€ &íFÈd°d€ÝÈÞ`7È»‘½Ánv#{ƒÝ ƒI»}Žõ³½xÆsÇÀrTõ•D‚Ý ƒy» ·Þ0cnªF!¸®`7È`¡ÝdUØMŽ’·!y'’—¦²³ú¤|X¾EÎã,O½¬•SU åzœÁUù§*ÏÐÚûð‘—­»@«ì¦:h‰ÝœŠítSMaý+ûø p&wæZ ¨ õÀƒg·[ðHãË–ÁnÁ»_©Zý Ø-þáv‹\vÊ>½š°Ü×ÜÂØÙZ_‡ƒÝ ƒ…v+ uÙê§i7)Ífám'2ÄWCð뼑-ƒÈcé=Ã…G:쬲›ZuÞݬR_©¤ºUU]µ›UÆ­×Y›Uà{Äù\-¯yh]g(ß8y¤3ÁnÁ»ÉÒz±Ýâ“[ów͉5p¡‚owÎPš}ìHg‚Ý ƒ »½j o·ã+þ«ºªõÙ¯ÛÖæòºb‰ul¶®÷ÆÏ°yJÁ# v€ ’ìi½ Í»Ûů~ƒpw€G0o7?Û«1¹y°d0i7B&ƒÝ ìFö»@Øì v€ °ÙìLÚís¬ŸíÅ“Ü<Ø 2˜·Ûp+!Ø rXh·ã8œV+rTùä(°ž”«Ïålê‡r”ßjÍéÏÐÜìüi”¶NpïV°d°Ên²¨~,²[³§¬ðÎWùÜoð`…Wjø4š&½Éá8ÁnÁ»_©Zýl´›s=éºÝ4‡7>v–+¯<œ™`7È`¡ÝʪX¶úiÖs)ÍêÉpŸÐ*þr;KNcïáÌ»@«ì¦V×…w7§¢Z÷¹Ç ¾ªÎgõEÎf'OC®aËáÌ»@Kì&+ê•vë5ÈXÖ–ôå§ñ2ÔÿØ/£\¹m$ŠòÏÞ„³ç?YkfW6àì`– `ò0ŽlY¢Èº¢Ô}.Ô¤(±h Žµäpf‚Ý@Ân.êÛ-=ã´žÓÀ×…¿âÐiT5wòáL»€‘ÝzfušXÞ±/› vóvó³¼y’‹»€‚I»2ì +°Yì +°Yì +°Yì +&íö±ÖÏùÝ2¥´¼c_9W;ì +æí6<û&Ýûj¹Úù`7Ph7Û6{ìfWå#)£5’×ÕÙêx>å úãÕÙ£r8üâäóé¬Ú vQv³=s ²ÛîŸíöÎÏþñž6ÞÙç«g5| »&•žOÕ­`7Pb·ôL1ë'ÄnÕ¯â[Ãÿ6¶[ÏCúk;–+O8Ÿù`7Ph·¢nAv³Ò,FZ>*žœï°:ÞzšÓØw_Ý’NËG3²ä|æƒÝ@A”ݪ­5ðÛ­Ç-wØV_5WëºÚáë–&:¥pô@ª>í|æƒÝ@AˆÝZ½ô4»Í§ç±ê=LH¡àóÏg,Ø (ìöh†¾ÝÒ3þHk¡¨å:»=ᇤª¹óÏg8Ø ˆìÖ3KȆÝ@üÝü,ožäâ©Ùív€I&íFÈd°(Àndm°(Àndm°(Àndm°(˜´ÛÇZ?Ë›'¹x°(˜·Ûð,!v vK)9³­ØUùHÊ(FŠ›óñêìî{ç7–_DíóåƒÝ@A”ÝŠf^Ì:Ù•ˆ½Þ•B§5ª{ÞXÏöÆöùÚÁn  Äné™bÖO”Ýf¾‰ZîØØî†ùv+‚Ý@A ÝòîÏúÙ•ˆ•æîÇÑ9ßnÕ)öùÚÁn  Ên¶ío¡ßn»ßJö:nÏ{C6¾Ï—v!v³8Ínº®{tc=Ä»€…ÝýÜ·[zƱ«tývxcùÅ û|X»}úý;v€IDvë™%d{Øí»ý…Ý Šy»ùYÞ<ÉŃÝ@Á¤Ý™ vج vج vج v“vûXëgyó$vóvž%dÃn !Ðn)%g¶»*IþýöÎ|Ð.ÌhïÙm=¶µÉ¨ª[/½à!t»€‚(»Ù¦ºÙÍ6ð݆_½®6öÖCœŸ-AØ*ìDU}—Cè v!vKϳ~vsn«ÞÐúli5öCŸ-ÕŽVýx¯_ÝeÁ vv+šäd·â™ö ¢¿±·,ìwòÖ‹ò’«uµ¦ª.^t—Cè vQv«võÀo·ÆÞºÁ6ÿj9­%Îãªv^zÙC茵Ûç¯ß°Lb7Û¨¥v«öüꪞÆÞ“™îUu±“8„ŸÁn @a·Gôí–žñGl'·½ó£cmc®ºØÉ­!v"»õÌÞ(¢Æ~¯`7¸óvó³¼'“‹»€‚I»2ì +°Yì +°Yì +°Yì +&íö±ÖÏòæI.ì +æí6’2üû‹UÎòb°óùŠìÎÏ©èRÁn  ÊnEG-fgÔÐêù-G´ºº£Œêl±ÖVUÂ’Š®ì +Bìf?òY?±vk­õoèÿÌ©Þp´„ljùÛ8§¢å±vûôûwì“Úíqñè¨!v+ži;ñê£_:Ž>ì6BJØjv;¹¢ëä—ÝþÆnH”ݪ"üvëqÓäýÛ +;ïîp²„âEçWt©`7Pb7ÛÛ¥v«jbÀ=›éɘ ·g]ª¢3ƒÝ@Ân¦êÛ-=ãØæo]PÜÜù¥3“áŠ-]§¢óƒÝ@Èn=³„lØ 4ÌÛÍÏòæI.ì +&íFÈd°(Àndm°(Àndm°(Àndm°(˜´ÛÇZ?çwË”Òðì ävåc7P0o·áYÚ;åoØ 4ÚÍvλÙUùHÊpúsqCþ³Ù}Zõ9ö~û–N} ×[ìäšåÄÚíóWì³DÙ­ÚîBìV\û yògë-»«¬kZ¸Þ»”4¿ìö»@ !vKϳ~º}ë$¶½;/í½å¾Cõ>6“_ߢüÎ`7Ph·¼+æ³~v»}«™‡ôsÿo¿Šý瞬7?Þ[”4Ø DÙ­ÚÛ¿ÝœönûUUÿú½ó™~9“õÚ\¹ü`7Pb7Û®O¶Ûpò¦m*2\oaŸ›–oƒÝ@ÂnÆëÛ-=ãTWÍ·Ö3Ûûp½ùÅ}Ëo»€‘Ýzf Ù°h˜·›ŸåÍ“\<Ø LÚÉ`7P€ÝÈÚ`7P€ÝÈÚ`7P€ÝÈÚ`7P0i·µ~–7OrñÔìö »À$óvž%dËíö»@vK)9³­ØUùHÊpV7ä?í…¬Þ\<¤º¼ºÿÖàLÕ~×<„Î`7Pe·ªƒBìÖ]íÒ½³íÛ†o]ã̪z×n×<„ž`7Pb·ôL1ëç»õü=ô³º¼³À±ª­DntN°(´ÛãâÑèBìVýZÞØ«Åšªïx=Án  ÊnÕ®øíæ4vÛùóŸ½ú„ü!N?÷KˆªÚ·Û¡3Ø „ØÍ6ê“í¶ûü±n<ܱënùîÖ‡ð3Ø (ìöh‰¾ÝÒ3þˆ³j¦±ûOP4ö᪋mßúò`7P ²[Ïì9™iÎêÆÎ!lØ 4ÌÛÍÏòÆN.ì +&íFÈd°(Àndm¬Ý>a7˜»‘µùe·¿ÓoÿÁnv#kƒÝ@Á¤Ý>ÖúYÞ<ÉŃÝ@Á¼Ý†g Ù°h´[JÉ™mÅ®ÊGR†³ª¸!ÿùóÂ>$±{h ÎìÜ^œSÈŃÝ@A”ݪ +±[ÿuÑáóŸ=÷T÷f‹Þù®Ýt…\9Ø „Ø-=SÌúYb·íÙ\Ÿic;·®<¹ »€‚@»v ²[õj^ +Å=-Í|»Ùå« +¹r°(ˆ²[ÕßnŽlWÏVµÛºÇߨüÎ}»‰ +¹x°(±›mò'Ûm÷ùІtç-ß-/dm°(PØíÑ„}»¥gügÕùRÞy±¥å…\!Ø ˆìÖ3{N^F +/SHì +æíægyó$µÛgìÓLÚÉük·?¤/Ø ÂÀndm°(Àndm°(Àndm°(Àndm°(Àndm°(Àndm°(Àndm°(Àndm°(Àndm°(è±ÛÇ „Ì»Àɼó·[ú?Ë·ñæÁn »-߯›ÇÚív€i:í–ž±ƒùˆ½¶?«Ïtîqöst3Åëì+Ž>ªUBõÎÝç¿[þµÛ?Òoa7ˆ¢ÇnŽ_ª¾¨®òößS?´ÿ†±ÁþToÆnØ b9Çn)£ó™=R˜ÙLì`ÿNZò¶Án `­ÝŠñ;ÚÍ)Á¯«UÝ»»€‚ì6æ‹Ö{«ãý¯ßíÑÁÝý¿[°(¶ÛVûIÏ8fq–ÿ¼¨ÞÐùêÖfzvÛ_×ÑpFª5¾I°(˜±›:/Óó_¦E°(è±ÛÖþx‘æe¤ð2…(‚Ý@A§Ý»€ìFÖ»€ìFÖ»€ìFÖ»€ìFÖ»€ìFÖ»€ìFÖ»€ìFÖ»€ìFÖ»€ìFÖ»€ìFÖ»€ìFÖ»€‚Ün 93Ø D`7²0W³[úÅ™/Ëí–2–7[rr®f·àî,·Û#î 3l·Ü>…‰òÿ/å³ÅHõ ÅÚÝWTg[;´o©þ´/ê¼Íy¾³«Î¢ø¤…ÛѲ[zÆw~Ú‹êµ]R¼—¼dÂíf¯SÃe=#‡^±»ÃCo鬱gUÿYõ¬¸ =ßnUCÙYÿgÕn-åµFÈÒóZµÛç¯ß}»YY<Úï½ìVܦݜsÛ}#À-¸¦ÝRÆò.M†ãÿï必ݾØí¿4ñÅífwØù„ݽõ×eíV=·ê+àöË56Šã€ãsvlc"PÀ…’ÆA`bє؆ qpÀ6I€ÊŒ¹ð*'š†¨ªKýXõCÓªUTµI?Ж†„Ò†(¨ ˜DiӊȘ +”‡1¶yclŸís°o;ë9oÖ;³³s{½ƒÿ_?vçv·;;¿$%"±›eÂó%¼¡$§Â…NRhi¤(ò§»I.ãËå%ÂSaE~víËûUïT}¨®KŒBØ IÅØÙ·ØuCIN#µ›çË2ˆ’êÂnŽk¾1iÍåæBK‰¥¾Pئ° »*– $ýªwÑð„V¼oò®$i#·›ÝJeþÖR"<½n£K»rá• ‘?ÊxØM˜(WfÕù*‘6’<6Iž‘ ˆz"µ›Ýòå¢"¸ãáÿ±X.H€Ý·±Š‰ª"ªÂ!NÆ)É3QÝ®Ûï¶$+˜ã)¸{à=_âÂn^… >š*p‚$2»oRÈn‚¤V`7à!°‚ q +ì<vC$NÝ€‡Àn‚Ä)°ð»€;˜ÝØR@"aOb7A×1ì€'Xì–=õ4³›ç\#·[ës@ +áh7ÏG¨Bá–ÏóÙ'z~K Õ¹3ìÖØr9¥Ý ¶ÀnÉ즂† IÏ_àHlí¶k×®ùóéÇ®Dþ»B4.žK v‹þ "H<¢2=€#*v;ôÑ>†°ê²cÇŽ1£Qµ…B!úÙ<(ñû Žvªz.5Ø-"ø‡ˆ ñˆÊTôüuŽD¿w£j3Ž“pïÆÔf®¶¶VK ÚÈ@îN»Ñ.9 A•©èùˉÉÞÍÛŸ ·[MMYpÆg‚wgòa74IHT¦¢ç/pÄ«½¿Ð±£ÜØõOÍXìFLa;5‹à4‘Ý̵$;/ó©qlþ´¸ÌÒ¬ÝVNÅnæ¦ìn‘ðöòŠ‘Ô~¥Ø‘ùb»‘ðÏQX"¼‚$$ŽË—Ê5Àsb²w£‚cF£j …Bô³ÿxP,µ„«b+ç8þJ¾"o7‹Yp¼\„û,ÞVB¹¸ž?u´›ÝíâoÝ·*µŸEDOG½w¡=͘¨Y”–ãÔ|±ðX^Ëø–ŸN–íFb + lY±}»ŸƒÄ$ŽË¦Ê5Às’sïf·¾Yþä3„vcŸµ±Fj7;£¹¶aDv“ˆ¿u–o-_Éíc¹ÉÑÛMÒ»üA ÑÂ/éü‚¯b7õZŽÝÙ5b¹Æ=Ý q•©¨>oWÄdïæ¢_G»™Ójã5†ãÞͲ&ðÚ²³›91±ïµÄÛ¿±æZ*ÍÆÖn–ñH0?Má#>n“‹kìj©t'ìH2$Ë·ÂëÛ‡ÚâÇ¿$!¼Ý²µw.³*+ªùÞÍ8e›8ÍÞnf‘EºsQ’»)–íQ#’Q¹hÊîYký‰­Ý̱«¥Òã±£‰\´)oqáJe™Š*k#ð–°Ýfž&ãvÛÙÍqïFÇŒFÕ +…ègÿñ Xjñ+˜e¹ã'•pšµ:íÝjjj÷ÇØn¿æè;ãÔrlÙëñ-‰Ænü 1÷ÅW´»±’Û.©b÷,„Õͽð…%Âßk<> Q°›b ¬Bag.sEþ2á·–"m_Ò eøÉi™¢ì– +¨ØMŽë½[Dåä{7K´Hì&¹Fåzuävsw[ý–\$+Zú¹F*¯ÿM²¶=}c[˜Í_ù¶X!û|z(Ä£€<Ÿ 9¨ìÑçý\$«:ÉŠ²¼‹¬èÖ¡KdQ üÉ Ý"ó[õOöíü¹­Vx»­¸IV·³Ït›Î ]Ld™[zÂT÷2Ò·ÞæIÛ¢Ðë`Ð?<€d&cÓíM¿éÔ"Ló>Z‹Ö¶‘7;2^èfÊ˨êÞô«Žˆ¹Þ»émÏ·‡MWqu°Ý »ùüTji{(éÌkÕ½YÛútv„ÉÜ2Hß¡…y) s€äç{¿ë:zº-Ù§Ãf}0¢ìã‘åU~`dÙœòr*>¾¯üà°òڡ凇”}šùTmú¬Z߬OÉ̃¹Ï¨;yƒÖ¾ªE]‘þÞMovÞçùóc—ž·ª1¯òÂÄ5 */Œ¯jWÕøPUãØµÍ÷W5ç¬i¾º9{EË=KZ|Ï5’ò/sŸûnbÒ³ÝÊ}ñLþ‘é9Gž[W6®nn^Ý܉uŽÎ__1îXùCÇËÇŸ}ÿ‰Òœã%ÃOgüžúß'“È;Oäê8Ùªíõ×É¡·HM©‰‡I)!êjóüyPzaøÂ®nÍ_ë±Í·¦lm›ZÝVXÝ^øbûämí“^nÏ{¹#w[ǘ9[Ã6²üi«n‘dÆÃnQ6BÕF¡'§ ÿßœÏÎÏ?÷ÝÇÎ/Ò°|jÃÒ†e…–Mn\:©iq^ÓÂÜæùcšŸÎiž3¬éɬ†éiõ‘?'z#Tmf»~ƒä3ìFÖ¶SÁ¼ý¶ïÞ‚š¦”³ó;çžó½wÜ?ðÛ~Šƒ–µÍ(| ‘¨%jZJÓ@JƒéÀw34÷gòÆ×Ø ÿœŸ8¼ÙƒEßÙ5Ãê"ˆ‡¸™RÁ0Ô¿7Èç4gØÇõ +ÿ8ÃëcâZ^®±íÂ縸~Ã87äËyÜÉ=ø‹hm³ÁÌÌÌѦv¼±ùS$€v!Ðëýp–Ÿyú]""""Óxd-Ê ×1±ûØ-½‹)äpÀ¾¨Òþ³rûO‹¸ç÷0Ï©¬³b®8ìæ=$±†K¨A›ô(†F‘z´FÏñ!pÖ3dû•Î@aØ´¨w{8¨Íœ¿…¿ºE³ÉšcÝiË]ÓŸÂÏCûf‰{þNäsçWÌrÚ Dv‹ì¥VÿÛmq«Ãn&*½ŸÚ1èÜîñúzõ½{¡`7·k””V«ib7µÔ!8ÞkÐë°]ðÏù)‡MíX7ç>±žûk7VÆÿ +sDˆ`1yÞ8$š)¾Îóµö¬»‹Ôí»8[v‡O2ñ†=fž~×êU‘i <²rǢʙ„ƒ¬œFÞíVÍVÙ%•Ü‚rΧ˜›§e^̲=׌ò„y-J¢Q¼ÅêÑ= +»¹Bà¬gHúEwR€1;ÊœŸ`Ù+·¥ð7`ÕÄZó6ØrÃÝjKY`Kö1ÅÏ»ýâùgqx¨meô7§Ý¢ºv3SÛˆàà¹T\ +í›Á€íF»)P¤ƒç ½æü¬2G üs~’áéU2ìÁ¸©€™™1À‡ð ³…Û½^…Ôsƒß÷:Oê¦6Ü*¶ÞÂm±Ââ‰ßãÄ„']ëiv‰ˆˆ8ÿÏE¦ðÈZ±‡‰ÛÏÊõHy¥AŠÃHVË%èÑF=ŠªAkªQÈ.°’ó«à–róuÜüÆ'ÇúB¼«íšÃIBà¬gØM1 EÏÖ¦]q–B¹µXi-NµènÁåE‘â1;bKó³¥,´Êæ›ç߉õ¹°ê§Ý¤=¸Yãí&i¡ÖÝÅvS¸ì¦"‚ƒåxì]Ü·9Õ@ûF»©G®_ïû9ÿõ!Ðü©êήÁYÉ䬿m†,€~j–üKaŽ×4¾‡‚¨¯½Ûì¸Ï„ëg*MN“F^v¬DÖ`™Ž?‚0CVÎÞÒNæÄ^&@2¹%á=ð×r—ˆˆˆÈtY« ™¤ClÚ´í×\úô$£QÂ![6@aûQÈ>XÎù•r¾ÅÈ·ù0¾;-/%4;ìæ%†“„ÀYÏÅEoÚj³6ÉZ’f-Ýf+IÇYöÊ!Јô™n\g×àõÖ!²å[ ëèȾû_£ˆˆˆÈÿ "&ÍïíoÚó~gÏ>ÎeáRjPbÚø+6ª” ×1¿(dWhÙWòÙe{Ø ¬ Ê5ù&{ÚùjªÃ3Dæ¶[_­¦ÿHA_Mž­2ÛݯíÜhÊŠ2nw N¾¬7%¨[|KÔ°Þ×i7Ò¸ í¶ö?Td+¶[j¾ÕW­`7¬-‡à®\¹ûh5–ÛŒQL«D"Áë‡Ú¦|Sp€#nî“Ï„èìÔ…12„†0éõ[€] 8XÐ7üß"""òý@!2'ª¬éþ`/y »)÷”=ó(—Fs²ƒ(¾IËØˆb6¬ˆ -dB´L°– Ѳ+µ£Á»Ì/'_ÂNñ2¥×°Ñ9ØÆß28úuüÍFþ†ÖqµÞÑ­Xï¨âZ*lME«ŠñÕúd·}—nÒÉ+ûOºÊ*VýÊm<;™›@Ýd´n£½îoƞޛؚtö8‡Ú· ü€Òæ¸Þฮvô(ìÆÚõvg¸ãÛJMöbIúOR1çÜ£iËzDëöúC¡np†º½û›¨B¨ŒoDi#j;TŒ†LçŠ!ì‡&8ú1µ=¶q§>2 qêoT”8Nû5ŽŽ¥ÿ‚7sû]Ó͈¿æc_e¿¯¬Ï{¡×[|Í{¾‹*è¤rZw€¸e'ãÊιzwnóŠéO|÷dn"[ƒºéÇí{«f×pCcï¬Yo©äôe6í[S±­á<°ª +ÀZm%¯Tf˜/ž[”纗Mú! M€œ…ëëcêf9¶n¤y3,\ºÃÌñDÅÇÎq!„X²’Óéâ6Ÿ_ð€oÁw_ö&®äÚÐ??²µä*8å^ø&C–ä‚avƒœe> oÎ’Ôº.7éc!mÇÕí(jï{ŽD—Žh¶ª „ñ!‹ÍA‘ ’5Í*e+@Ti´P‚å#¥KTÑ”ÄD +Ð86²¥Î@ø`p£ucQ‹HëZRë6s¦Ýý©açˆn!„úOš6(­K¤u&Õó@èKSmDçO¨‹, v¸´ØXGë&[ƒ© r9© EëØ;Û}@ºöσ€­áÞd ¶™ÒypÖ(|!„ÂD­ö0°|°v0¢–½$Ý.›D/iðeèüž.…Í–@µAϰSã$u. +väWh¢ŠEÈeJó "õJ_¼z›zíõÖhðí±#Y‚ÈM„Bèù &Läeú Ö,:a°yÉÂÆjÎvìR÷)0£€ÀÁðNû]Y#4dùãTá$%™Š‹}¡Âç>'èÿæÔŸF”8þýl°¸„ÏñÐEcM„f¥´þM$&’õ(ç ÒÇ,s¤t‰*_ÈVˆ|•(mDmgg‘ÖIÔ> +endobj +639 0 obj +[/ICCBased 640 0 R] +endobj +640 0 obj +<< +/N 3 +/Alternate /DeviceRGB +/Length 2575 +/Filter /FlateDecode +>> +stream +H‰œ–yTSwÇoÉž•°Ãc [€°5la‘QIBHØADED„ª•2ÖmtFOE.®c­Ö}êÒõ0êè8´׎8GNg¦Óïï÷9÷wïïÝß½÷ó '¥ªµÕ0 Ö ÏJŒÅb¤  + 2y­.-;!à’ÆK°ZÜ ü‹ž^i½"LÊÀ0ðÿ‰-×é @8(”µrœ;q®ª7èLöœy¥•&†Qëñq¶4±jž½ç|æ9ÚÄ +V³)gB£0ñiœWו8#©8wÕ©•õ8_Å٥ʨQãüÜ«QÊj@é&»A)/ÇÙgº>'K‚óÈtÕ;\ú” Ó¥$ÕºF½ZUnÀÜå˜(4TŒ%)ë«”ƒ0C&¯”阤Z£“i˜¿óœ8¦Úbx‘ƒE¡ÁÁBÑ;…ú¯›¿P¦ÞÎӓ̹žAü om?çW= +€x¯Íú·¶Ò-Œ¯Àòæ[›Ëû0ñ¾¾øÎ}ø¦y)7ta¾¾õõõ>j¥ÜÇTÐ7úŸ¿@ï¼ÏÇtÜ›ò`qÊ2™±Ê€™ê&¯®ª6ê±ZL®Ä„?â_øóyxg)Ë”z¥ÈçL­UáíÖ*ÔuµSkÿSeØO4?׸¸c¯¯Ø°.òò· åÒR´ ßÞô-•’2ð5ßáÞüÜÏ ú÷Sá>Ó£V­š‹“då`r£¾n~ÏôY &à+`œ;ÂA4ˆÉ 䀰ÈA9Ð=¨- t°lÃ`;»Á~pŒƒÁ ðGp| ®[`Lƒ‡`<¯ "A ˆ YA+äùCb(ЇR¡,¨*T2B-Ð +¨ꇆ¡Ðnè÷ÐQètº}MA ï —0Óal»Á¾°ŽSàx ¬‚kà&¸^Á£ð>ø0|>_ƒ'á‡ð,ÂG!"F$H:Rˆ”!z¤éF‘Qd?r 9‹\A&‘GÈ ”ˆrQ ¢áhš‹ÊÑ´íE‡Ñ]èaô4zBgÐ×Á–àE#H ‹*B=¡‹0HØIøˆp†p0MxJ$ùD1„˜D, V›‰½Ä­ÄÄãÄKÄ»ÄY‰dEò"EÒI2’ÔEÚBÚGúŒt™4MzN¦‘Èþär!YKî ’÷?%_&ß#¿¢°(®”0J:EAi¤ôQÆ(Ç()Ó”WT6U@ æP+¨íÔ!ê~êêmêæD ¥eÒÔ´å´!ÚïhŸÓ¦h/èº']B/¢éëèÒÓ¿¢?a0nŒhF!ÃÀXÇØÍ8ÅøšñÜŒkæc&5S˜µ™˜6»lö˜Iaº2c˜K™MÌAæ!æEæ#…寒°d¬VÖë(ëk–Íe‹Øél »—½‡}Ž}ŸCâ¸qâ9 +N'çÎ)Î].ÂuæJ¸rî +î÷ wšGä xR^¯‡÷[ÞoÆœchžgÞ`>bþ‰ù$á»ñ¥ü*~ÿ ÿ:ÿ¥…EŒ…ÒbÅ~‹ËÏ,m,£-•–Ý–,¯Y¾´Â¬â­*­6X[ݱF­=­3­ë­·YŸ±~dó ·‘ÛtÛ´¹i ÛzÚfÙ6Û~`{ÁvÖÎÞ.ÑNg·Åî”Ý#{¾}´}…ý€ý§ö¸‘j‡‡ÏþŠ™c1X6„Æfm“Ž;'_9 œr:œ8Ýq¦:‹ËœœO:ϸ8¸¤¹´¸ìu¹éJq»–»nv=ëúÌMà–ï¶ÊmÜí¾ÀR 4 ö +n»3Ü£ÜkÜGݯz=Ä•[=¾ô„=ƒ<Ë=GTB(É/ÙSòƒ,]6*›-•–¾W:#—È7Ë*¢ŠÊe¿ò^YDYÙ}U„j£êAyTù`ù#µD=¬þ¶"©b{ųÊôÊ+¬Ê¯: !kJ4Gµm¥ötµ}uCõ%—®K7YV³©fFŸ¢ßY Õ.©=bàá?SŒîƕƩºÈº‘ºçõyõ‡Ø Ú† žkï5%4ý¦m–7Ÿlqlio™Z³lG+ÔZÚz²Í¹­³mzyâò]íÔöÊö?uøuôw|¿"űN»ÎåwW&®ÜÛe֥ﺱ*|ÕöÕèjõê‰5k¶¬yÝ­èþ¢Ç¯g°ç‡^yïkEk‡Öþ¸®lÝD_pß¶õÄõÚõ×7DmØÕÏîoê¿»1mãál {àûMśΠnßLÝlÜ<9”úO¤[þ˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ +¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿ ÷„óû +endstream +endobj +634 0 obj << +/D [632 0 R /XYZ 109.858 727.97 null] +>> endobj +66 0 obj << +/D [632 0 R /XYZ 109.858 703.064 null] +>> endobj +635 0 obj << +/D [632 0 R /XYZ 109.858 137.014 null] +>> endobj +631 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F8 369 0 R /F20 385 0 R /F11 520 0 R >> +/XObject << /Im8 630 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +643 0 obj << +/Length 3292 +/Filter /FlateDecode +>> +stream +xÚ½ZÛ’ÛÆ}߯à›Á’‰Åý¢—dÇñÚQlKLì”å*cA, /P(fÿ>}º{ð²«uâJ¹´˜kOOO÷™ÓC»3‡þsg®“ÚI˜Ìb/¶Óx–o¯œÙšzþzåꈅïÚIBEôÙ1·¶4D‹oÇ‘ÎláÙi’b䇫_~uf+’ö-Í +Òdv ²c{A:Û^aj{q¢õêêÝÕƒé‹gƒ¨3…̈g¨´ˆ±­„¾Ãþ^/¯®¿öÒ×—w3¡–«_¬tÙº˜ÿºüöê/ËARÙI?e'ñÄRibGI0]ê½çEó…ç%Öwu3w]ëPKõ¦ëöE%XBb§QïØ~Њ˜îz§j†~l{aø”žfÈ™¢ÉÌ¥7œX%Jb;ö\^ìQ §ëŠ×vƒè'$îµ'ùŸË¨•bAƾ¬á^|À˶P?Î  «?Ç¥¿?@ý¢ýªeŒ"—>HGñ$úÛw@¨¥ÜKÐ> ²|ÛçEÁOsBž¦½/á>kÙi£ðWö¶Í^ô‰ +Öý@‘SѲ¢ÅaSV…Á5r¶ŠÑˆêšqP¶ °%XžÀ´ý6Òóå‹Òóz_V‚)ä¦í³vvÿs$îèËȉÂÞ¸-"HnÚŠ]i%ý¼& +´&xU´R߆H+‚uUƒðØêÅ¡˜éÅâ·-î½8°Ö|ò Ö4ºŸÆFÃmÜAœ±´ΉWÓ@ÈARˆ¼(žËøŒïšÈê!åA/ŽP¼ˆ¾ù ‡@LÞk?#Íã(ðЭ•õ%{ +õß1pÙª-Êuq`5׬5ã@Éq­ïP¸ðX€€_ÑÂÜ&nãiÌfzwŸïúôþc+»5âÂDöH_Þ‚z$-1ƒ=*¥ÎÇ£o8ïVÚVª kxQ6[žñN!¾©! ,ƒäZaåËÕ¨‡Ü’'‰tó•³hÚ‘³¹á»çh.l‚p@‘Ýk-dEïoŠÇ(G 4Ã)´Óèg;é%_çÕÞh|D¿ŠlJ¬j£ãAêmQbçÞø7[ámê•òwÀ;]–ú²jG^À9‘vZ•öµÆu@êôn¤rgî)À$î¼g¡Ç›†éhä‘>r-U€J˜3¢»hc8P~0܇…´ÊJg£Âà¡rNʨýÜÜॠ+˜"êy#—t§°·È•xa汑ŽL>«"ŸÒn[ªÁ]ëo?ë/ÕcÌÀľ?eET¹@ ”èãèøncO_¤™fL‹Ò‡Î$pí('ùwrQ÷§É›^u÷Ìb¨ø#¥ PëÑ,ÊO) K½?–E¥ÿ‡, +Š©ÿTåDzƘEy¡dQøD +“Ò¥Ÿó)|P¶Û¦–IÀÌäêQRir†HRŒoŒ¤§•&ŒzȲ0ipì5ü ÊÚêA¥©O`*¬½¡lU,øþÌøÆ=UãÂ%2Þ}×_“ÍI¿~”îd@b‡n¢ùþK\Š)Q ÚŃ”óyíX¾œèÖ¼/ÐZìºã1“¥f_)0Arƒ”Ò>¤z?°½w RîJ%sK ô–eãO.“ °PQƒ +wÍžƒŸŠ‡ ßnT 'ýzð¹Ò)èÑp /d«GÑÌ÷Þ| +6áò{M†_<žËJô½º€›¡¡Zó_̺÷$7v/¤Ú±ÂØ•t¢§a؋ݑ5Ä€érÍ;‚²èóµ #‡{§À‰Éì~äGlfëlD¬µ*u.{”™-Ü\GûŸÀ”蹘BqõÓF¹ƒ±v}ªß(3Í%âûp&¨›bËnŒ~Þîë¾ÜŽœQ ·T‚Ž3rU0º¬kVnu@ñ‘_ƒˆ²°)ÖE›û ?@Ç¥—£ß3Á/)gññQ1¾*Ü-SJU~Y¡o†Èê0av $â•‘2^(#U)$-ÇTì? Wžð&³šßí~ûª¸ãµªþ3™£+Q]± $iø)Š™ ?ኒYxgŒ9ôFñReK¦DT+þÍá]æeÏ{ ž¼d8-¦vç£Z^eÜÀËÖ2W1¤•šbG™ªFmïÐò †­½#= %@›úd…Œµ{¸àï7ˆâçæAU^~$ßÐW”¯š­8F½šDdnÞU؈¥½RÅe/)ãtd D'ôûÞ\Ò¯9d¼„¤èƒ uÉyi.A=ñ÷iêñò'Ès¢!b¾2,9#0('r­³›zn²Tö S 18æÿ4l9‰3[©n‡`} ÷B @Ã*¬ÌZãÝ}Y_ÂÕþS” ²ýØìñï EUâ$cŽ^‡‘jØãù‰›vÃÃø’ÏÐyò¥ˆ‚y9EyÈÌ»r]*уNæ¬M{oZE܈I­NH77 Ù•<8æ™}bU* T"`£>!R)‚Ì0dùªxsÌš”žÜ(›Èje[Ãp|*&ÂáD±Â\XJ5š#ÈbâiG[Eƒ*›ÏBaz:ï<Áºÿ= l'4û|ÛèAzžg½ÉÖêJžç[ßUæQTz9‡öôg ýáirn ÉäS—¹ÊÓaD¶§>ÌÓŒà°âÉgü­Sj¤ +dýéÃEx6õÐÖÛ y¸ðgò/–Ç‹±:}À03“©§O §Òa7ù©‡ë½¼¾>v»½¯Žˆ¼B£ûúìçòÈåÿ•`ªïÙïå:æ)ÍNå@3yèFÔÙq|œÖöCæ‡<+‘W°ÏL©ŸRŒP8•_)ËáÑ8Qæ“q«ä·Jô,9ç¡B7RßúxèuIv +UȘēD©èd,¬ÙyLÒš R0צ°:§¢±;ÊDâ:2Gª9N~Ao’¸¯¹9ä¡›:”ÅÎ4S²A¯¢ÑèÔ{bôØÂF=Æ´‚Ÿ£ic%î4dU ïæœ¼¨öBâ1N?ùÝ VMœi˜™7×ÉúŸ>¿¢¬7ùè@$”W–þ>ÜÂT2â3Mƒ4=Ë1YD¿(XH…y ~NZ M º˜œÝõ…/ÑL¦=dÖÄwÇ “QŸ|UχYÉ7ÛÉÛ Ä»Y5ÇŒ%¯> endobj +649 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [441.227 144.658 562.273 156.613] +/Subtype/Link/A<> +>> endobj +644 0 obj << +/D [642 0 R /XYZ 109.858 727.97 null] +>> endobj +70 0 obj << +/D [642 0 R /XYZ 109.858 703.064 null] +>> endobj +645 0 obj << +/D [642 0 R /XYZ 109.858 444.305 null] +>> endobj +74 0 obj << +/D [642 0 R /XYZ 109.858 429.529 null] +>> endobj +641 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F8 369 0 R /F20 385 0 R /F49 648 0 R /F19 516 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +652 0 obj << +/Length 989 +/Filter /FlateDecode +>> +stream +xÚVÝo£F÷_Áã"…-ûìÞKuV’*§¾¤¥jª»{ Û4ÀµòßßÌ΂‘ÓFU3Ìþfv>~³‹bøˆ-7‰ 2™q››Ã*v°òËJxD¤7D\ã™ÓöñâodD’[cùºúú=Jðö¬´5Áä˜KmƒÃJ'–ËÌø÷fõûêqöBkY0»zЄø!E¦eà9ç·ÎW?ÝK¸÷|x„äåWöÇPìªð{þeu—ÏžlÊMš}T'ø`+kxjôr«oR¦a$¥a÷¡JY_½žªvlÞH÷yx Eª’^OÕ0Ö];`lαá6MѳV1WVC èU¨ëè•q™$…?AÞŶQ¸ÍÄ–Ô*.bá6ûü‰Â1 XÂ3k|0·§P°*Œ”5lìð™²!ŒëN›±º !»±ê[@ )nïûŒö»¼!²;ÑʽhÔv#©Nôha3D7ÏEO«õXÈ{…¦%`ê±ó‹Å" ÕMw8ÖMŽw¤÷SËÑvý„Y‘O5‚[(&|,6åK˜€ÓÛ‰‡‘ÖšýEÑ+Éö¢þÁt¬4UG)`«ÏXÀžýHºqïA· ½ãTsž¹è0}"åV± Ã15å8K2öçþ ÃÊ.L ÁÔ­kÏHK9ì—¯à÷ÙüZ^îú‚ŸŽÕQØ_ÌÖO?{ª.8QlúŸJyª3m¾FÇOPD#¨Å)¤„þy¡ %DÒæÂ(¬aCˆ¾C&u[95qEG…áØ¸ž¼yט²£Øn²p” Õxƒ%inÂ(–í»ÑKŽ‘%¡È¯sòŒ‘T^?ŒÅH]¾ñ<¢|—<š8$˜„-F܃¨¡ÂŽ(lºvã–ÔÔu[|fì8Û–“ð-óp±ÔÅBb}ð¹&Öái‚HchÊP8»)„ö;faàÈ¬È +k:ÅE,Æ™nË¢÷EIü=x6kûì‰0ƒ”R}íÚŠ:JÃPc…ɲ*JÒaÂøÌ«S׬|ö}áÛ}h4ss/càù¾òâ+¸=ùáÃVãQë ¨ ‡ÏâÔKvl¦êî’&{j½ ´Çž]ÍJÇÜÆ2Hã”k™Ò¦úÏè^»¼.ï¶É2Z˜º#{1G×Þ1ý¿û©|ÝÖ…&]K3VÌd᨟ÏOla/ã8掓uÜ8:ôHs•“6‰»¡—9½»Å=æ£èµ1\à ·Œ¾­Î.önßŽŽ„WûO÷T¢àÓã_?"4\rp˜ûo¿øÿ ”endstream +endobj +651 0 obj << +/Type /Page +/Contents 652 0 R +/Resources 650 0 R +/MediaBox [0 0 612 792] +/Parent 610 0 R +/Annots [ 654 0 R ] +>> endobj +654 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [339.905 603.492 486.274 614.341] +/Subtype/Link/A<> +>> endobj +653 0 obj << +/D [651 0 R /XYZ 109.858 727.97 null] +>> endobj +655 0 obj << +/D [651 0 R /XYZ 109.858 604.489 null] +>> endobj +650 0 obj << +/Font << /F29 416 0 R /F20 385 0 R /F8 369 0 R /F49 648 0 R /F19 516 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +658 0 obj << +/Length 1738 +/Filter /FlateDecode +>> +stream +xÚÍYÛŽÛ6}÷WèQ~0+’’Hö-»›´´h.. ̓bËY#¶åÚÚl‹ü|gx‘)[¤¸(Š`]Ž8‡sf†Cš&ü£ Í‘…LD‰d±dÉ'xóÓ„ZDo8¼Ê†^Δ$Œ'3‘!•F¡ßh/ßxøœ+’±"™•'TRüäf>ùá“ ÃAD2_%å@óåûôöçg¯æÏßL?Ì_š%…"B”ˆ. ,“YÁÏs æ›<Ÿw† .+`Ä,#’Ntæf:+)”}Ãl8%R&³ŒäJOþÏÉûY²„¡_Nð¡Lžà:#,WÉv’e&¤½ßLÞN^wC™‘†}ì4š\’’•Ã>( LŠŒ*ŒÞÔ«©HëC½[Ôçqƒæ’‘²Pß7YùL‰Ñò 2QD•§ÚqÏØÕSýíË”I˜ê—õ”¦õtFÓ§àŒiA +EG¬Ÿ@Ú:Í=óàt™±n ´ÿGFÅ…A!*yÌ`N”dÖ„'æON·¾ +”ƒâeqÉÐ÷Åøç7ïȾ:^pœo.ƒN±˜¨I¿ŒñžÉ¯Óç<½m¶¨Ç¶Ù™{`‚yºnVÛ£yRíàÉÒÀø¾a*mÍæ’“«‚”e—Óåt˜19#¯óœá€œ>ApâÝçWóÚgÚ‹›#ÙÃõ¥ÈŒÂ´ˆºÊabD•$ãeˆùÕ,7S&Ò/p±^ÖVÑã#RÚOgÀ´ALkž¯~0ß.x-@pøïó´(Óêã¦6¯öþìÌ£jgäØlk3XÓ>Ôv¬FŒÔ†ƒFŠd½¡x9±ƒpyþW{ßÖ˜i4 Æ $z^Ƽã óŒB)(…oÞU/¥«õN dò~¹Ä¨i× >¬6 +Ð׿mLTÁ›•Õ¿WSBâ‘êqõO °ü3ªØà5pÆp(<‚¿¬µúm¨NP•“œÇýc QãJQОq÷z%@ã›Z_Ö&[/Š…€âКoV®L`BÛ 8­ëˆÈ¬«;LXbU8híûô†ô=±y½»›å,ê ‰YayÉ}«]õoPÇï/ý@9( tª«Ñ'PXB‹Õ0lðÏ©èß¶Uûhj#MoªCpUg”ðŒFå01 üT²¾Ÿþ|mL)Fd×óO“Ã[¬Ûý™*¡ÙÉ`ÔßaÆô¼Bÿs†úûQÿ§u»@7CS\¨)ÉTÔE³-_NiÏ~׳¡{«ôz»‡0Ћ«]Ãõ‚­?hV¾è®ÓG¨<Ö ž×©ÙàÒѳ³‘ŒQJGª +GƒÅŒFCØà5ÑpÆp(<‚à;íÇ®©©£ý[&HÁ¢¾²F3"sÚ#ò­õËA¨t5cáÁ~\¿YÖÇpÜbF¼Fð3†C‚{µàÒɬš³ÃÛ¸Õ R`”¨Ï&Æ B!D‘Uþ™U¸¶‹¸ÉwfzôMuoS·­‰}®{†½ã +}Y’BA)+(‘Âô“¿ï ¢Àê&ƒç6Dt3Êåÿïx ‰±èL«gÊó¤ÛÎCm ZÜE×0L»¶ÿRãÁ)XÝ +î~&ýÂé0æNušÏ8ì\ºap +4ýÌ{ië@o§Àendstream +endobj +657 0 obj << +/Type /Page +/Contents 658 0 R +/Resources 656 0 R +/MediaBox [0 0 612 792] +/Parent 610 0 R +/Annots [ 660 0 R 661 0 R 662 0 R 663 0 R 664 0 R 665 0 R 666 0 R 667 0 R 668 0 R 676 0 R 677 0 R 678 0 R 679 0 R ] +>> endobj +660 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 412.657 174.698 423.506] +/Subtype /Link +/A << /S /GoTo /D (tbx) >> +>> endobj +661 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 392.732 215.711 403.58] +/Subtype /Link +/A << /S /GoTo /D (tbxdkpanels) >> +>> endobj +662 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 372.807 214.743 383.655] +/Subtype /Link +/A << /S /GoTo /D (tbxextitems) >> +>> endobj +663 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 352.882 195.426 363.73] +/Subtype /Link +/A << /S /GoTo /D (tbxlists) >> +>> endobj +664 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 332.956 195.039 343.804] +/Subtype /Link +/A << /S /GoTo /D (tbxmdi) >> +>> endobj +665 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 313.031 222.298 323.879] +/Subtype /Link +/A << /S /GoTo /D (tbxstatusbars) >> +>> endobj +666 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 293.106 212.086 303.954] +/Subtype /Link +/A << /S /GoTo /D (tbxswitcher) >> +>> endobj +667 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 273.18 208.516 284.029] +/Subtype /Link +/A << /S /GoTo /D (tbxthemes) >> +>> endobj +668 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 253.255 212.252 264.103] +/Subtype /Link +/A << /S /GoTo /D (tbxtoolpals) >> +>> endobj +676 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 131.335 193.027 141.297] +/Subtype /Link +/A << /S /GoTo /D (tfontsettings) >> +>> endobj +677 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 116.391 212.223 126.353] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomitem) >> +>> endobj +678 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 101.447 183.115 111.409] +/Subtype /Link +/A << /S /GoTo /D (ttbxdock) >> +>> endobj +679 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 86.503 181.198 96.465] +/Subtype /Link +/A << /S /GoTo /D (ttbxitem) >> +>> endobj +659 0 obj << +/D [657 0 R /XYZ 109.858 727.97 null] +>> endobj +78 0 obj << +/D [657 0 R /XYZ 109.858 703.064 null] +>> endobj +669 0 obj << +/D [657 0 R /XYZ 109.858 244.289 null] +>> endobj +82 0 obj << +/D [657 0 R /XYZ 109.858 229.276 null] +>> endobj +656 0 obj << +/Font << /F28 380 0 R /F22 363 0 R /F8 369 0 R /F14 372 0 R /F50 672 0 R /F51 675 0 R /F29 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +694 0 obj << +/Length 2152 +/Filter /FlateDecode +>> +stream +xÚ­Z[Û¶~ß_¡G¨xÄ›Dµ8IÚ´)Ð"Íúœhû µå]¶åÊò‹þùÎðbÑ’(¥u,¬ËGòãÌ7á¥ðF4-ˆ’*ÊYNŠus +B(Âf€V„ÅÌ*"<à-Šè3S„ÇÐSÄr¡dì‡TŸxÁ 9Ÿ¶”ÅLó($QüšÇ'HâãÓv…>|rN=Mi0›XŸ»é˜nž@AÂNç,gœÞÂN·˜Y§‡¼Åé}†cN÷†œþ3FÝa]cL}fpm:m3‡™dĨ[\ +¬þM…<¨‚re\‰t$·ã©ÁN ¦•ù ÌÏ[=­b8­‹¨"\Ñ)t °,fV +áo‘BŸá˜<†žþ¿5ad*­‡-Ú Jp0Ú >4&}|Ü97¼Ã°Y9$z–OÔa&é2‘V¨+º—4*.‘×>ò3E ¬áÑ®²9âÙÍ14Y¿Â¬!‰Xm­j£¼FKJ'´|F„ÀÌG +«æ¦>·:’*=À—!ÉI%‰LÅ´äÃ1«z —zgÙ`ξoËv(üWƒlŠmâ0Óƒ;õJÀ(#üç$ù²Ù–;³ÿŸ”½$å3;?vÅÌ:(<à-ê3sÇð ¦÷n;ÈN·E1m"‹`*és‘yçK‚šBAØ•§“=áy[ZH‘íöðhÏyT{Ʊ­9z ÄœÙa½©õE[nöÓñÞ|ÆXãNÎU µ÷^çœÇëjSžq?ØšûíÌÜñ[~_d¹©•]%UîøÉŸTª…ÏwÛª)-¡°Èaï /¦‘ï +<¦6÷¼ïpœ\aìéè{öšŠÑˆƒî²\õ±bííj‹öŽ×Wâu 1SÏmå¶|k¾i’`=ðž6ÔÅ}K1}K½×Vª¸±¦™oÝ&G +)]耛|òºÞ­­5EÇ,™_›cÒãùa·=AÁ"ÁÕCÓeDqµ¨$,»ôPØ›x`#lvu‚‰–qM Y°ÔÎ.Z+A/­põÌ[âľÄêT`ΤЭ"ã­N›_YÃtC&¶uRèjZ¯ó/Çj0U$KÝ #=£ÂUü_óó[*ÓöôuµYð4.Ï»ö ó¼=ù ÏúíòêíBxwª 5ýj¶‰eàq‹AUï\`>½ãõæ¤Ý¦ùÒoN-¶|ÙUÄÊ@^¦ +J_áa3Žq®—º?%^mð\tö‡€`Ôšf¸.€¦h‘Aò™qñOr±m™xMµb¼±û½»µRÁZy¯ƒl±TŒd`UŸÒ@®3ü*¨œ`i‰‹åÖ);³¿þ<±EaG3öi±åC±å ÿ"¶ÌÌд‹°îɈ`]dy‚}wÐëÉJŒ]J¸ÝO‚(W¶;n?rs´é^oÌŽO°@ŠøëÞâóŒZ-±J9Û6ÛnÅZáøîÇúP}a˜OœšÓ‚åú'gñv„¦ˆæ”›é®:²n¯ €GÝ‚÷Á–“ñ ”ý¯©ÿòoÄݲbendstream +endobj +693 0 obj << +/Type /Page +/Contents 694 0 R +/Resources 692 0 R +/MediaBox [0 0 612 792] +/Parent 723 0 R +/Annots [ 696 0 R 697 0 R 698 0 R 699 0 R 700 0 R 701 0 R 702 0 R 703 0 R 704 0 R 705 0 R 706 0 R 707 0 R 708 0 R 709 0 R 720 0 R ] +>> endobj +696 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 690.361 211.019 700.324] +/Subtype /Link +/A << /S /GoTo /D (ttbxpopupmenu) >> +>> endobj +697 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 675.417 220.152 685.38] +/Subtype /Link +/A << /S /GoTo /D (ttbxseparatoritem) >> +>> endobj +698 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 660.473 218.319 670.436] +/Subtype /Link +/A << /S /GoTo /D (ttbxsubmenuitem) >> +>> endobj +699 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 645.529 193.76 655.492] +/Subtype /Link +/A << /S /GoTo /D (ttbxtoolbar) >> +>> endobj +700 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 630.585 213.704 640.548] +/Subtype /Link +/A << /S /GoTo /D (ttbxtoolwindow) >> +>> endobj +701 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 615.641 244.223 625.604] +/Subtype /Link +/A << /S /GoTo /D (ttbxvisibilitytoggleitem) >> +>> endobj +702 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 582.765 227.919 592.727] +/Subtype /Link +/A << /S /GoTo /D (addthemenotification) >> +>> endobj +703 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 569.564 207.402 577.783] +/Subtype /Link +/A << /S /GoTo /D (geteffectivecolor) >> +>> endobj +704 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 552.877 242.389 562.839] +/Subtype /Link +/A << /S /GoTo /D (removethemenotification) >> +>> endobj +705 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 539.676 214.781 547.895] +/Subtype /Link +/A << /S /GoTo /D (tbxcurrenttheme) >> +>> endobj +706 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 524.732 196.309 532.951] +/Subtype /Link +/A << /S /GoTo /D (tbxsettheme) >> +>> endobj +707 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 490.112 235.562 499.975] +/Subtype /Link +/A << /S /GoTo /D (ttbxitemtransparency) >> +>> endobj +708 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 476.912 175.462 485.031] +/Subtype /Link +/A << /S /GoTo /D (ttristate) >> +>> endobj +709 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 444.035 194.945 452.254] +/Subtype /Link +/A << /S /GoTo /D (currenttheme) >> +>> endobj +720 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 197.938 183.66 205.465] +/Subtype /Link +/A << /S /GoTo /D (ttristate) >> +>> endobj +695 0 obj << +/D [693 0 R /XYZ 109.858 727.97 null] +>> endobj +688 0 obj << +/D [693 0 R /XYZ 109.858 441.046 null] +>> endobj +86 0 obj << +/D [693 0 R /XYZ 109.858 434.307 null] +>> endobj +710 0 obj << +/D [693 0 R /XYZ 109.858 277.266 null] +>> endobj +721 0 obj << +/D [693 0 R /XYZ 109.858 198.934 null] +>> endobj +722 0 obj << +/D [693 0 R /XYZ 109.858 133.3 null] +>> endobj +692 0 obj << +/Font << /F29 416 0 R /F51 675 0 R /F50 672 0 R /F28 380 0 R /F8 369 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F55 716 0 R /F34 719 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +738 0 obj << +/Length 1836 +/Filter /FlateDecode +>> +stream +xÚíXKoÜ6¾ûW訲¬(‘z´è¡vš6=¤h¼F$9È+Ú&¬Õn%mç×w¤¤}øQÃÇÀðŠáÌpæ›á2ˆàO2*D®ó ‹3QdÁru×0óÛ‰tóDŠ<‡&ΉŒF[ qÍ÷#eÌcQäRþsòñsTÀíX¥Š<øíHĪV'J"ÎrׯOÎOþ¸ð\ ¬òOPižá¶røû;]œüð&.ê/®GáÕÇ𽹚Å*4­i–föyñÇɯ‹£Œ€.É2˜'y@(š=Ój*õS§³yçáEc{n-N?ˆMÙ¡´<Ešâz% ‘Ä +äáR™îk©“LÄZ?¤¥'9¢¥”¢€§'Â#-!#IÒÞöem—¬laÐi®RQ€;ç™PQL¤›íem»3ÓIXXR¦"Oâ Íð»£ä¡Ií|BÌÚÆ;6%] )ÐÎâ(\oL ÂþŽÕVrX•(¡Uì É[ûq6O” +‹™„5°RêО÷eo~rž…ÎÝúy!Tª‰I·1bd.ÒÈ‹9ÂÔËòðgþ|ŠtÔw¯†I–ÛºÅã}7]¸53ø¦ÞÌ4×ÕÒ)šx'!Es@N³¦gëf(ëÛ™ ×uÛNTØß@ÏpûªsΆ^^9rîu=vîj3 s„ f‚Lè('1ïÊ•y.òÀ%JDV<-í½`aŠg`wå‘òµnz;bz‘‰éß6˜Ù.Éõ2Û+™ ¶ÇvƒV£Öú +¿éά÷…˜ÍÓB…ÃÌi<#z7°Ø‹7°±ò{މ­mV¨ÇÈÜlž ¶Tò¸Vn b*^APK¬˜´E› *±vðé1»`¯õ`ªËÞBû_œsKû5Ó ¸„±Ê\•“Ú­ßÁÒT:b%òlx£"ca(uI@¢+‹“ðôŽ)G!ÈEàè}£LAÑÜ:bçD{}Áf¯î „ +Sµ®Áµ  Ù]¹r¨GÛ¤‚‚ +ÂÿÜôG§«5c”-È둌‚wýãuÿzo)EFiMÙѤ -÷• 'Ž~ÁǬ·+ÎwNÒÆu4=4Ъ¼uÞÇd`]r`Þvé†i竲®=pÚ'¤ŠOÒ8´·ò?·ýËU5 +ÊæX<)iLˆïKžä9I£w•Æ-.Ãm~¯pÆ +çœ&-C !pü,ê8 ©äñ{aMecµmÌË¡+Ñ`öH= ]âûÐåIž.¿EM[üެYÍP!UM™ÔÏâò‚Á¥ÆZÚ#*¤‰bŒðEꪆ³ºì:wE„;âÙ¶ë׫·=ÔpûªÃZ- q,´³ñ/ hJéëÕ +¡þ¦ÎÜ)î)ZnÓQ’âw<²†cÊM.Nqöƒ«Ü@—îÈ^"‘¤íH ió»5-JÖ PÞ`ÃNGcœ`TÁõÞ…`Dò¶A?¿óÝHdÇ2ˆáRg÷¾IÐ D¬\K‰"—{/sÏk>aF‘4Uч’, º+ò©¢ÐbÞIhäÕ1ÓPâ.´òµé–­ÝôܳïS¤ øJh®Ž°ŒVy¬»PgÁnB§ä+_b`âCèª<\2¤°Ù™–º~Ù1¯’?;ÀÁá¡@0 ¤uJp#…#¹q· Æ¢«L¡—¥#±N-'Æ6Gj€1²"|˜´ÆJç’àÃ,‡T¾uÅWB…üøê‘±µC\v̨ã-îq‰BYÝÊ‘aÍšPÌMðçÊ$T5ɦeÁ¨aåù®[×úIm¾ÚK_nÁЦ´œls}dÿ¦q—$V®ì¶C´®†bÕ/Kéù‰¯™°*‚ÜVÑu“àD¤gèÉ}UÙVÖ|1ë(Q(88ÜùK±¾­(ôÞÚ—üfÂ-/wdæ+Ý—ìÒöµ;­;LQ³Í¦¦'ŠW7qøžìÈèGß»á>)’Â?w»ÉÿË«5endstream +endobj +737 0 obj << +/Type /Page +/Contents 738 0 R +/Resources 736 0 R +/MediaBox [0 0 612 792] +/Parent 723 0 R +/Annots [ 744 0 R ] +>> endobj +744 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [385.598 93.86 436.711 104.709] +/Subtype /Link +/A << /S /GoTo /D (ttbxitem) >> +>> endobj +739 0 obj << +/D [737 0 R /XYZ 109.858 727.97 null] +>> endobj +740 0 obj << +/D [737 0 R /XYZ 109.858 645.51 null] +>> endobj +741 0 obj << +/D [737 0 R /XYZ 109.858 571.91 null] +>> endobj +742 0 obj << +/D [737 0 R /XYZ 109.858 474.838 null] +>> endobj +743 0 obj << +/D [737 0 R /XYZ 109.858 399.739 null] +>> endobj +689 0 obj << +/D [737 0 R /XYZ 109.858 326.577 null] +>> endobj +90 0 obj << +/D [737 0 R /XYZ 109.858 315.853 null] +>> endobj +736 0 obj << +/Font << /F29 416 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F28 380 0 R /F50 672 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +747 0 obj << +/Length 2005 +/Filter /FlateDecode +>> +stream +xÚYÛrÛ6}÷W𑜠‚xI§q¦NÝIÚ4V¦™Iò@[´Ä/*IUv¿¾»À‚"u‹¢ÉÄÝÅÁbq° s'€ÜáAÊ•8q³4vª«ÀYÀÈÛ+N¾à,I ‰c,Ö½-ˆPóãV2pü¥IŠ’ÿ\}ù8s°öhÉ4q6ÐX(S§º’*eaœÐwyuwõç`ÅŒÅÎ`j•8’ã²ø=¬ïzvõò&Lý={tH‚fó/îÇüÑ ¥›·yý{ßf¿]ý2,òäD|ÊaVäĤèöXÉñ¬_Ã0òü0LÜOuÑ›Öìú3[ebÐê K£õ%O™%̇ª<ÞE©DÌB¥N¡´"{(‡K&ddqbxDiÀçz¶­Ç•Û¬òÖóyäöE¾È9KÁ&hb0€‘h×åÆãÜÍЯÏÝ]^æýMÑvýž{yÄ:‘LYLößÏ$ë„͉£õHÁ¬Z/ hÐèŸ |É-!™’!yWcW€]Sì¯<_Hé^7M™gõOÆJâÀD‘@+>™ña³Ò0ÒÆnë¹ÇÝâ!ësðžÛy¾ŒÂ:³ž> ½ÌMûkÀ%¸帋ã*5í5tÞðÃØ©Œx·lp œÉ Ceøã™¦º‡5Ç.™ÏÖ}Se=À)Ëç‘u\£™‘»Ú>Ü,óÚ´z‹ð/‹Ò3BгÒ34+èY¯Ð) 60ÀÍÊBànmׯ<_EÒý½i+%‘î po"´¹d0ç‹X¸ €¾u‡ŸÒE6¦‰öšÞHi»K=ÓmFÃòÐMmFÖÚ&®c¦AíP£e¦(Ì76+mù_ÔËçF§ÁÓƒ:­éÕûKú-àÑ•;C‰¢;à®NËcЪãmÆÏaK…îcƒñ¢——Ó8véÆCS!`#ßøTh }^u¦¹Yf{ú2/23P£Åެ›ŒïF±^ÃúW “™í?Ì 1Sa¤Ž¦îïò¾/êEwŒ8T2ðóˆc$|Œ8¬ÈÄqƒŒ1‚L|1Ûíÿs˜8øÔ ; Á“?J + [ãíܾ¡ Çí^fx*¤=„"nÏŠŽbÖfxÕéÎæ‘l é˜1 íl¥gmj6„m¤/>„;[æÃ©‰":Ñ á‹@ëÃV/L_ÖjÑØ˜]!¡–{œV,2 ¤yi‰©ëŒ’F V†åAŸ .lu=ð-ž4pÿ-I>#8GúÃðäbÕX<½ÊN÷„¨îKZ”öíFÛ”/Ì_wùcLÀv£"<à‘£¸`2‘&¡Žù›¤fû9Nl¬¦?RÕ1< +£]ëˆã †×ó¿‘N»þƆµñ´‹-I™Œ§ØöNÉœD‘†,†ã1F‘o)r ]âÌZè4ù $"ÄÕ]î)¥w®ˆ¬ì£%äö BVÚ3øjoU2b<™FpÄâñ8iú#U½ÖÑܻ֛2"UÁñÇð{jý~§ Rð=f C»˜NïÙÃ6aTËi2JY L2ôÎäd:¥[MǤ +Y’žÉª#ác¬jE.`Õw&Ó:k›ƒÍ S¾…ã>$bÍ?+„mDóy•ïÍÈvÆÃÆ‘9÷góëk ‚þþ©|Ty2Àü‡°ûmù¼Z¾Ëûݾ™ÇõÚAŸ¸ÆøxCDŠ4Ø”˜Ô `®²X๮Æ' +F /âoäÔ¬íI~Sh:ˆÃAKš8„¤ L«(œîuì_é M2–·”5hí‚$PxQmÎM?%‹ìS‹ô ›Ak›úkC‚XÌ·÷Öø–œºëïgï‹ú×¼X,:>T»gÖ#ácnE.ô+ÅømÝç Ô…;/ex[R•Î5鿦K<·DãöÆÃ]†îªx²×]ÙåÒ¿Š9lÉ1P‚ìyÝ +õ(‰\æQ õ‡Fg8t¶1i»êÔyÊËî¼<÷®oóþá¨7C°èLÞÊó%I\àJ‚ùc%°:R ¡€-lÐõC«¥ã>d¢jð¶ÒU_QM«HSÏ‘ÅI•$ÇU&“Fþ¿œFMƬt©âq›\÷vÚ>+©D‚™ú—ËFøEÀ¦)²¤ýlHƒ0«&‡)rq’û¬ý~”̼¸½)¯¼½Ÿ>à}Ó¬L¹ )”ܾAIÎD„/aLÂUB[­ ë´*t̯ù±€ã‘bA,΋¸‘ð±³"Ä]–zÕpdaÕʬú’(œéÌwëökËãÁ»p™€],CÀ2‡šŸ›š½êá>ëù ûÚ¦¼°o +8ÃæhÿóÝú¾Êëõ­”jdÊY”Ø=Ž0±»~8 |Tàðxïi†Ç×!™X™uØ'¬õð… §g)Rª-Aø„W|·°O‚…|½¼ +à¼ía®ÇÕ¾.õéíÆ¾H˜d%ÓĺŸúÊ„…P|s! ­?¬[M¤º[˜ìZ§\A~¾C¿·Õâ]±ÿN)B|d{ç$s +îÄðb²òÀKÜ`5OC˜Z»aˆ`›RïsVB©²WÇÊ@±X¦'ÝaeNaÙµcÜ¡CÅ>buEe©¾ÌÚí¼½_§ÏõôŒµgzðÏ hU¤ö¯ 4ø?7 äûendstream +endobj +746 0 obj << +/Type /Page +/Contents 747 0 R +/Resources 745 0 R +/MediaBox [0 0 612 792] +/Parent 723 0 R +/Annots [ 751 0 R 752 0 R 758 0 R 759 0 R ] +>> endobj +751 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.02 510.55 190.473 521.399] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomitem.onadjustfont) >> +>> endobj +752 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 494.001 222.015 503.078] +/Subtype /Link +/A << /S /GoTo /D (tfontsettings) >> +>> endobj +758 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.204 130.259 321.509 141.108] +/Subtype /Link +/A << /S /GoTo /D (ttbxstringlist) >> +>> endobj +759 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.605 130.259 406.745 141.108] +/Subtype /Link +/A << /S /GoTo /D (ttbxtoolpalette) >> +>> endobj +748 0 obj << +/D [746 0 R /XYZ 109.858 727.97 null] +>> endobj +749 0 obj << +/D [746 0 R /XYZ 109.858 681.914 null] +>> endobj +750 0 obj << +/D [746 0 R /XYZ 109.858 604.136 null] +>> endobj +753 0 obj << +/D [746 0 R /XYZ 109.858 494.998 null] +>> endobj +754 0 obj << +/D [746 0 R /XYZ 109.858 411.546 null] +>> endobj +755 0 obj << +/D [746 0 R /XYZ 109.858 346.027 null] +>> endobj +756 0 obj << +/D [746 0 R /XYZ 109.858 282.445 null] +>> endobj +757 0 obj << +/D [746 0 R /XYZ 109.858 208.73 null] +>> endobj +745 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F55 716 0 R /F34 719 0 R /F54 713 0 R /F19 516 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +765 0 obj << +/Length 2167 +/Filter /FlateDecode +>> +stream +xÚ­ÙnãFòÝ_¡G;ìƒWû0–탙8;Ö’<ÐRËf"‰Z’¶á|ýVuuó%Ú³0c6Ùu_]]â³þñ3–Fé, Ë’Ùr{ÎîaçßgÜB’³4…%î±Ä|­Ä.¿tá,,K3„üïÙPû °T–Ξa2¡²ÙöLEIjß7g·gÿi©Ð^2kIro)HP­ž­~狳ï¯D63ï‹õÌBX€Åêwï‹^ûByºÒ»¥öÿ\ütv¹h)òàd2e02ÁÍžDªÏõ!b?"õ¾îІV‹óߨ>¯Qƒž²,Ž_ñŒI¡€¢òôPÊH&LDÑ””d$e:ãŠI;91<â,dç†Ûå“Þ5Lœ³ È0ú0ejÀnvW=ÖÍÚ²Ü5„:·J*f2F'1 +ƒ´¯üHze£ýHxKz¬F.à1K¥˜Å*cY8ˆ‘±/,lÐ&5ÅÀFI b¡Wîuž½æ…ÄW¼Å’ŠEJXtÊÊ•ýÁ¤RÞÂç€<ܺ|òEä ?Xv‚–f1G†pó²×#Öò&ã–õ$?PYèýkÄ)QLq>V×¥^=Vcf2e),èa^7z ú%1Äçâ|lË-~ûàQ{¿É=û<ôÐz ‘NáŽXÔžõ u÷n·o›¼ÑW›ü¾þ¥ç +Î"0”±—2^ï}¯+“”‹S«H¹¿&©WÞý¥—ÍXiÉw¶ŽJg±4Žû¥!¤a&bòÃ’i±àsôü5.I1ü}Èæ†öõ¾0÷àsæ>ç›M‰Ï5½/aªJÿà"op Ä €Qˆ7ðÑò.CwkIîagŠ»¼‚÷‹ldžînЧ <^y¬*+r¾ôȃeXâÓ+øh¢/BL5*` cˬýÃÎlCi$ƒa,Œ,k Yb÷YCé]¥W0RÉð‰æ™×í-á>ó %݉ðk„õ³XÆBÕ´@¤Ý¼¬*]ïÉèìUï‰ûSôÐâÕk2PÝ¿ò!´Œ^óîŸKãÐU±&_!Ïu`­Mª|k4jtUÓgt›”ÊVñ¦×æAÓþÒ„"7Æ~k#H¢šL¿Í¾]ƾÅÑóÇʸ¸¯‹ñr8#ë(1¥KF©eµ3µ¶2k\BäG¡·iÅ„»B h±ÕlT݇'ýÂUë7Us“…ͧ%´@à¬y&Œòîlê°»”3Yã)r$žlå®nr +Hê‡7:jÿe +e$ŒO\é&è™8„&º;Òàö“ÂEÆÁPÃÌ“ChD“TN3´0#†ý#® ´¿}~×·W#vQȲl ßðv.ÛÛ9ÏðvN7ozÞÍGkR¬¶Òd ÖÅõíGpÍ9úÿÓ%¬.Nz!FlþŠ: Ó^°0¯zaŠa녆ǼÐã7å…ŽÒ;xaB,ç…žX?Þ,Nš]Á1 bÚìÐi³[˜WÍ>Ű5ûÃcfïñ›2{GéÌ>!–3{O¬_¾ÞBÄÿxy:æÁv\¾bûæ´é äUËOpk ?ävÌî³)³·tÞÁê§erFïdºÅ"óér¾˜°z¨ µ|-ä; Óv·0¯~Šakù†ÇLßã7eûŽÒ;B,gýžXŸÑü?ß|ºùrdRM7gÐ̲(tó‹ÊO¼Üç‘÷|½Íïõ+CþíC‡LIù¶‰aøÔÄÐü_CP—‡ /ÎÂŒ¾nh8Úx‡‘!Oçnø5Ádçɱ¡dq"ß>0Tã¡äj402910´Ð§†ˆ:Ǧ.ôŒðyí°†_ hê5¿èeãf‡`‘áèp»h,h oÖëZ·£Ü_|h†Ëbç@úÓH15zä`? ˜w> +ž±P¨Áôñkmº]¡"YèÝ”.…”L°{/ø±|$@º¿îìËxÜhq°½.± ¦÷v(kjØÍªcb"ð„{È~C’$È9s÷Uîá½ò|ïn>¢ú^zN²Ü…÷èı߬kƒhnåvÏaº~p¸ÝÁ Çp2÷ÝaÍ®•rr=ònÍ3è¡ÍCêTÇÒÜ¢3š dË ¦CÙ똃™”â€Nïê<øÈ„\„¿B°Wçù&¯kû3Õâü·‹r‰•ûïQ¸Jn~9@ŬéZVéý&_ÒÀz0ô[»é.¾ ¹‹™?ÿ}ê(‡HeG,TpÂÈÌýVh7ÿ¯Ž¬1endstream +endobj +764 0 obj << +/Type /Page +/Contents 765 0 R +/Resources 763 0 R +/MediaBox [0 0 612 792] +/Parent 723 0 R +/Annots [ 767 0 R 768 0 R 770 0 R ] +>> endobj +767 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [465.496 463.663 522.2 474.511] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomitem.fontsettings) >> +>> endobj +768 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [469.344 451.707 526.048 462.556] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomitem.fontsettings) >> +>> endobj +770 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [234.031 206.69 298.484 217.538] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomitem.onadjustfont) >> +>> endobj +766 0 obj << +/D [764 0 R /XYZ 109.858 727.97 null] +>> endobj +760 0 obj << +/D [764 0 R /XYZ 109.858 681.914 null] +>> endobj +769 0 obj << +/D [764 0 R /XYZ 109.858 296.235 null] +>> endobj +690 0 obj << +/D [764 0 R /XYZ 109.858 207.686 null] +>> endobj +94 0 obj << +/D [764 0 R /XYZ 109.858 196.963 null] +>> endobj +763 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F20 385 0 R /F19 516 0 R /F14 372 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +774 0 obj << +/Length 1750 +/Filter /FlateDecode +>> +stream +xÚ¥XKÛ6¾ûW=I@ĈId‹êMΡH] ÉAk˶Ûr$9Ûý÷á’üÚ6‚À$5œùf8üf¸‡Ò‹\ ÔWLªÌãÄôÈLÂRέµ?ª²)šˆ§á"Êà žaš 1¦a÷ÌçQÌÃé«üÒ°O˜ðóEdÁ'-x¥bÃof‘Í™$ع‘‚<ág9{]ñH™õn ±wNå,7'@ï#Z°fö,6èaÎ\P^•í¢©]UïITìHŒ&SÒ\ÎÌíÜ[9ÚÈÁF¬L–ÿtå~ ö[š[@óQè´—|¬º ŽŠòð{«¯n:ú°ªx·ì¤Û”;œ—-‹bîÍ7•³VlÛšFÕô-Pl ƒã²tÏÚ×ç-çÌ@z¡·]S ²öPà•zŠ´ +‰‚Xw%³bÓ'P”¦!:_¢• Š#šï^À'qƒµ> :ó;üR£´uU.Šiêù³Þ“n\* Ê0Àp ‹‹cÓxó{Œuw*ÃÓ\–‹Š‚“M²4éjÚs(À %=±´ýŒ…ã]ÙuVÁ:Š¥ýf©exWoÑI©áo}°Á(á,à牾 ÜXìG‹5~Cë_£4ƒ?zÏ ÆÒH„í0Û衹Á´ ÜC"Z­û¥Ÿ#¹ZÙƒØÑRSÚèl¬·NÕÇ„«íÖ›_@›Õãh¸BÄQJ.¬û²(V +²ÂÃO>2RÞŠ |Ál·¿ë}ÝŒíÃÚãf8ÿ3†’À*©RAª2&5Ñ*“ýÏ© Ó·'5”vÆ£­–F4q®½~ßZ$o{1NLvö&të¦Æc„Œ>ƒ¬à~ ¨EcÈõÔÉ< N +\9÷3lA†4”E—,K,u¶‹ðä÷Æú€yȳ°«Ê¡Âù'z-Rû@¼‰$¤0H7¯AÃç5Ôpœ¼nW·Ç€Ó@uˆs¦¢èÃña[µ›2Je¸¼,>ÓR*W°AãtYßl<¦Ò)N +<Ö/b4‘Hœß0è\ÕT¼ß%d€pUݺ¬’ÁeØ.ó„|þ¢¯T8­ëmY캬:NY 'gQÊÌ–jQt6¼3\­~‚v–g,‹š +JÕ–š—´ïÁ²YI“\*Oú(}@à†¥•àÖf9§[[9 «²èŽÍ`zW­76Ëéó¾îÈøcdK~¦/¨ÓzLB"TaTÐRïÔV±¤pð؉ð §ëýY:.éáÓ|QÓ¬±Ç:iÉH…øƒtÀ|ãØé2¢c:º²N®k{’seŽx®v\!9e« ò\¹dWï§mïA’e’îõݶh[×€B:ë [8Ï.Ø…ý ±4£äú¥ÙκT˜§.„Ó”‡m±p È8¤+ïQ‚îί©–L@ñf°¯ƒàK0¼?jÏ^Îv&xUCŒZD§*éºÝÿÊTÁ•ÿöþ7wÜãÚÊ»cÛÕ;ˆ…éµþW +Éxþ}ý/¼D ÓÍ7Ô)ï/d…`‚‹gûf/sÒ7Ã%/g˜÷W¼ÔP@D0ÒÁ¯Y®š1úïÈ„ÃkG>ë€GŽ0êü0äÿµö?1ÿÙÿ''­ÿÌÒ‚©/©ñž´´ªû±}Ñ_†û™íúÔ3PÓ”­Ó‚´±ô,R“¶‚¦c¥Ž°¡&U޳<¦Ž¸©Þ>Xö9ÁÐ÷xn`¸lh‹ßÈ->`ÿÐuõÞ!ºé¶g5§Ì± 5æ7Ù䪢ý¨}ñ@æ¡hD’$×(þõa3¯ˆ åÎÓõö„Ô'箂À`íÎÁ¡hl!&-Cý±¥÷­¬°qxD4‹ÈqQ.ÝçË6.Pnx÷‹éoiRݾ¸ßxÑ¢žh‡ñù{º•2LÁ P]ô¡Nâ¶ýSh3˜Ò‡¢9ÔØ²¥ zÝõá¢PÆö€! ±5éIW°<ú§¯«þà +&ûò‘RÐÛf8/NïÚÓ¿¹¤Ò’Ú¿Ј4þÏYîã¿Hõ•endstream +endobj +773 0 obj << +/Type /Page +/Contents 774 0 R +/Resources 772 0 R +/MediaBox [0 0 612 792] +/Parent 723 0 R +/Annots [ 776 0 R 778 0 R 779 0 R ] +>> endobj +771 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxitem.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 780 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 15.00000000 15.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201243-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 781 0 R +/XObject << +/Im0 782 0 R +>> +/StandardImageFileData 783 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 782 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 784 0 R +>> +stream +q q 15 0 0 15 0 0 cm /Im0 Do Q Q endstream +endobj +780 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201243-05'00') +/ModDate (D:20030406201243-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +781 0 obj +<< +/Filter /FlateDecode +/Size 2550 +/Length 785 0 R +>> +stream +H‰¼VklU>wfßÝn»ÝmAT(µA(Ûí Š±öÉÖ²ËRQ4ÝÝé¶eº³Ý-hŒa\¢Íÿ½ìY®=Þ'õ¤4dÛäpÕ$y’ÈÑaô™å¡Ô/'¬€F¼2Ð,彇Ð8ñ÷uQbDï ²,^(Š“ zÝ*g“+b¯vñY!èΗÊr^O(ÍB¦ž–‹y®Y– ŒjO%«l£‹ Ô° bþ˜û(‰ 3Ix¨‰PQ•[íñsA_ŒJÅù=^Æk£/[,U–ãë‚<·€ñ2þ:žqô/úÙY'9‹ÑRÑìIýöOý¬£l©#¶ø±{ÀÃÄhTu,ï¨óÄè .Ç1+øŠ€Ía_èä8V4hBêgm穈mô„*• mÞR‹Õu3õuA–Ý[??Ž{MHëçô”p,ç*®Q +(^6ˆ0žæ¼âªå9_U0Ñ…Ó±¸÷hõNŽÇ½G‡qÃÝŒ„Eò$u‚øà¤3N/Šô<¹0¡^y»|ŠõÃD@Â)á$>U^QˆBøl²á®ï}‘›s2µ%v „k` ¸W‰™„^X zF£ÕèµZ½1NgLNÐë’'šLÉ&ÓD£ž¼ŒO(>..ÞŸh0$š ƒYœ f)ÄøoûÁ¨ÁÛ1Ó( (#¢H8‹·N ‡P!F©D„äÒxs +¥J­ÑêâÐÝF2&R šRPJµJ£¤õÙØh¤S“²”EÏÔ™ÒZV[Uæö­]Ť'Wpfçø×+QOëX|ýü W 7å½Ï^Í(}Ëá.;¸Ï›p|ÉæÏ]k¿ú!xq |ú†÷_ûüíC'. ~°ûðÉËC5õ­ë6~Ø}äÇ+Ãù žõ,oÛ´ý‹£?]½iŠÂh“Z¥Ì%¦f%)0‚–4“ÒººÝ,"8P}ìzvºó¼MGÉâdW çÆ4•@‘{ð8±m‚»lIÏ\C¸?‚éÂÐÓäžF(„AöçÞ]û绞Û5ßQÛ3`›cg_ÞIûÆõù)9{rN(ö¿ûå>OsåŽ_í5§fwíÈ\_òº‰êïõÜ\žÉ}2´w֬ǠkãÙeÍühþï¾) þú#=+÷im¥IvèI™qysËÅ76\jÊJhÞþÊw£Že»^Nï*¼:¥R€În(át÷­ÎÍþåMãöô=m-»Çæ|æ›ÑŽ‘}=˜w‡àÄJáûÁ½;O¶é®jî3õM¹}rl“§wx¬³\€ÊÖk¥+³o• ·UººÏ¶ÞÚyøö¥'¸ÎÂoq|ÏHaß‹ƒGGæ ×^ÛÔTy…o_*€pZꪩä-Y"õ> ÜÀá©°0Ïã œ{˜þÁ#ò!,þwH#¯a†Ý3ÅC Ô( ¿²@þYM¥ÜÁNô`˜oBÊ>øC†²ÈçLìn?²†ùumÒi€Çf<¾Æ£V–ÉJú:uQÇs|ÔçgZÀj±dXr +,y©VKA–µ '›´Ð$ÝO¶Pá¼æ-t„—;J…h›*?J‰àG“£ñã“GÎ2¨HîÙd™¬ 0Fjqendstream +endobj +782 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 20 +>> +/Width 20 +/Height 20 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 786 0 R +>> +stream +H‰ì“­ +„@…   Z76lœ©‚ϲ>Âê#ø>€uŒ¬6«£‚Á=¸0+Ãþ” {‚œA¿{ïÈ=˲HŸjùšçyš¦qa˲¬ªª¢(0œ†¡mÛ¦iú¾°º®[–eš¦¦iœíº®ª*BˆxÈ$I(¥žç†ÁY4-Ë2 â(,cì´ +­ÿ첄ÒD’ŽYæû>Xl×»ì!MDZmø+,¨í(cØ®íNâ:û-ãëJ=´eÅY@ÄðêE»3‹3ˆÊu]ß‚þœç®ë" ü_‰Å§‚ΠX|*ømöï „)ö endstream +endobj +783 0 obj +<< +/Length 787 0 R +>> +stream +endstream +endobj +784 0 obj +34 +endobj +785 0 obj +1387 +endobj +786 0 obj +246 +endobj +787 0 obj +0 +endobj +776 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [318.548 543.454 417.234 554.302] +/Subtype /Link +/A << /S /GoTo /D (ttbxdock.useparntbckgrnd) >> +>> endobj +778 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 311.216 187.316 319.335] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomitem) >> +>> endobj +779 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.794 209.866 450.449 220.715] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomitem) >> +>> endobj +775 0 obj << +/D [773 0 R /XYZ 109.858 727.97 null] +>> endobj +777 0 obj << +/D [773 0 R /XYZ 109.858 506.297 null] +>> endobj +691 0 obj << +/D [773 0 R /XYZ 109.858 440.59 null] +>> endobj +98 0 obj << +/D [773 0 R /XYZ 109.858 429.866 null] +>> endobj +724 0 obj << +/D [773 0 R /XYZ 109.858 198.908 null] +>> endobj +772 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F50 672 0 R /F8 369 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R >> +/XObject << /Im9 771 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +792 0 obj << +/Length 1447 +/Filter /FlateDecode +>> +stream +xÚµWYoÛF~ׯà# ”›½xlûT%= €«¨$´D[(’!©Øñ¯ïÌÎòdN›Â€¹ÇÌì·3ß̬„ÇáOx‚–F©—È„™Ä[ïÜ»ƒ?ÂI„J°4…!î±Ä®¶ â†&Iî…’™Ô ä—ÅÇÏÜÛ€µ· ¥MêÝØ3©·[èÈ0™¤n^.®ïG+´—x£©@ƒÄ … ^+…ïx¿åjñêwi<;_ÝzN ¬6ýùm µŸ·yµÎƒÏ«·‹ßV£EÁAN%Ï9lyæPt{éù©Ÿ¤ŒƒPÊÔÿ«*z­–׬É:Ä`ÕSfâõµ0LI 硪äÇ(#•0EÏ¡DNP¦žÐLéxæœØp a{]f]çà¾Ë@I¿nöÍ»¼ +OXSÏT…&€>¨ + +,Bð`â× TJù« þòš&_0˜ãJ¿ÃAƒº¢íúÖé\¢œ{Í;øgUª@:zîŸãű,x?ï‹7q•M^]ì÷ÞÔ@HïýÐT8Ù:õÕJ±Š™Ž¤½éŸEÞfp¡È_ƒs¶8øFŠøML /'¯È/—x'rìù+ +àA*…sÍ#ÏfžÍ3îíÜHCn‰£¼ [á̘½åêpÉÈ(–*5| Ñ¢cÙCG‡?ámS0BÊoònÝM_@¤©r¦"ðºpá¬%v=zϲ ):úfö«ýŒ¦mÞ”ÙÚºrGò=mÜÖ­£ÖjyŽ\h\ø z“ˆ!ljÎWyNG­‚˜ +¹‘øuyƒq‡Ôäœ67ÈfØKýõ~7…´ÏìÕ +Š84»ºuV‹ +–% G5P°‰Ážö­šœui™W79رßùTJ„`²ßÅ ¨”@_—ËkàÃe 9ùù„y1@B¹Ö,JļĜD'΄)äAEDb "ˆ¥iÉ~ô.u´µkéÊà*(n±+ŽØ#Âþ38Rk [yVýrÊ3g&„ 02²ÆþÞNñUù½[PQì7ct‹ÝÛM Œ0ÕC[¸lt‹ª#Ì™!Ô%MoÈj?üK1”½ÞiÐ^¾Íp÷ka™*òaãŒ"ÿ Åj9—aÛ²Û…³dËi [ÅÝÖRÇßhyY|âBÅwb}O'Þâj½#úc8‰:à¥Ñ)2ò»>«ÐXÖ"8©½óë÷,µ:x„r5†àô´‹~XÛa_ …ô2,Bì‘x1,ªÜØ·¤;#+K›¡’÷å±l-ÝïŠêî Ï?QìàÀñúh³†é‘*ApšÑçÿi×WÅc ÆJ¿(F¦„^(Àµ0aÚ‘ºÙß”Eà"i}¦¡‹›«yYCŸ ŸkèƒÈ¿hèör‘Ÿ»þ}Qõù]nÙῬ‰¿veÚö¯ƒmôF£\ÝÌÆ¾“„>)qöÆÐ¨wü邸Ü;+X)ñ +úÒÓH“ßfÈüÒéuÅH˜Ýo ¢!M7ímw·­ÕÝÀ¾ÍÀ3ã² +M·Çýû|˶­KqÖÛgeu×±ÓŸ¼îͯ€ªOþ$×ðR™á¹Ûü¤mÖßendstream +endobj +791 0 obj << +/Type /Page +/Contents 792 0 R +/Resources 790 0 R +/MediaBox [0 0 612 792] +/Parent 723 0 R +>> endobj +788 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxpopupmenu.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 796 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 21.00000000 21.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201303-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 797 0 R +/XObject << +/Im0 798 0 R +>> +/StandardImageFileData 799 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 798 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 800 0 R +>> +stream +q q 21 0 0 21 0 0 cm /Im0 Do Q Q endstream +endobj +796 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201303-05'00') +/ModDate (D:20030406201303-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +797 0 obj +<< +/Filter /FlateDecode +/Size 2740 +/Length 801 0 R +>> +stream +H‰¼VyPW›Í PQŠ€N[•CÀ2c)`8,‡ry eH²$@ÈÆdƒG-ˆµ:­TG-âÁˆG«£ÅÖ¯–jµ¶ÓiUD)õV•€ÅJ·o_6(öN¿Ì·ï»÷÷¾ä}/Sc“R¸€!7ðM…>¼‹õå>_0øaWÆÇ D>É`Fô2kש\È>H÷rÔñ¤;Ùò0k–3« -ȊǙѭv”Ù‹äD09?z´ðÉg³¬–›·Ø-¡è9>m–pôœ8hA5G²zXÂÛ÷ïC{Ú{÷ÉyËʬÏÇÞ5«>š‘ð ;z+y³ì +” Pð£‹ànHÈ&ÈÅ€:({'‡6L¥¿ °‘Û ]gÒjáÂa@)H“NeLS*ýéJ*͉LRï«%uj[™d"ŸªÇRd1«#éj 5DçµJ˜­M62õÞÃC>(¸C %iúÚµ4éL|ÒP .Ð:S1ÔÄò &) Ù î’g¢ÈBGò(B…Ð/Öl°³5˜±0ž¤bµïÿ°ÜdÐfÊçd:6ßÑ’bT~ž–ÊÌS;Ø$J拨$cbfJ²‚$µŒCh3;;iHÃ’mÚÖ)Wëæmf¦»*"?Ϥ¥˜ðÂ@ žm3;†‹ê8RK†4WjMˆM°;©¤ŽY(RŸf¢ŒÄÐÆ9ka#_²Š$ú’]¿bÍ‹áè|I‘ˆ±ÓÈiÌgvbFŲ±Ø(§`ho£F_¥o·ñIñã`pJ%ÂóßÄ1*RA䯥ýHT˘Jt XÄB¡ÐI(vrKEÎ"©§«Xìê9J&ó”ÉFIňØexÂ\D"‰‹›Dâæ!‘H<˜‡ÄÚ"ý7èoT·ãcþ€#Åp)F·Â­sè3X4DÉñ Äáæ¸<¾@èä,Â^tb€ƒÛœnãb8‡Ëá øB.ƒN)ÎõsáÅÌÊ“ù/(å{¬ÛñUì¸ñžé§aS Ë/Æ Ög<ºùXi ±óàûÓ7dªä§wQ#²nOÌ+¾»dºÝôɧª<ÓxÇòÙá³—ïöf痬ܸûÈ÷M÷ú"f«®ªÚSwîÊý§RÀá@´\„IÀç…#~!î\ˆ`¿ŒZ¾ÎƒAp*ý⣰ñŠ›†åëã2<•Æ)ø A`øéb×H•<+‚"nÙ!ü=‚ Aô5 ÆÑ;¥ tGý™¯{c,19àÐñó©n½#ßd¡Áµ¥©{×uç¶éÐ`ÅÀØö© gvΡAvëåVÓѧ%¡Uo—ïï÷P´t˜ÃöP'÷U÷5Ë6Ñ ÁT²£¬biÉõø0­Q®,é(ÎÏh;1¯ïöÝÒ«_½Þn:Ñ_HÑptÛÖ fcOéÙ†Ôˆ Dnñ ™¨«×üÚƒ+Šg”ª´ÅRØëÕyõy¤ÙRZg©Ih$zOÆ{G×ö½·Arnþê¬5ÏÒ4^jKò¯K¿©ÉØKmtY[Àû¢hKÉÜœÊú¢ÎƒuuDeýõùMË5ô…Þ1šÝ7xµ®ø‡îÇÊjçf[Þ<¼jë¥gF³·þÉ>Ï&¹ö·NýDõþw·ÐÄœöÒ5?÷•ZR—Õä—Ó·ØçHó󿤴Í÷ò:^ êôlQ[EÌj”{M¥ÁNe‘YÒ]¾íã׿ô;Vi.å‘? L{pv ²mÀ¹½«þ~øØ4(Z’]Y±¥»uÌ×Ójêû?çw÷¯î¼SVß%hl1?›þG½e x9Ñý“ûrï Tjø¿Ôš«Å!åñ³Íîé_ºVD7£“ï‡~ÙYÖÙÀ\´1@¯W¼X}ÁL 2Ùˆ$=ŒýC„/ˆ“@0°ÿóñGG'0%¼Ê b ÀÜá1èÀF;uØ»\ˆM`càå‹… +˜™Y,Ô.¯\U``«!ÿ9—ÕÑŠf‘ïL I‘F ¼ž"'ƒÐàà°¨à)QÁ¾¡ÁQ!PCÇ~;f}M°c¯ë½”Ù)ÀÇp(~lÄ ~Ìg(~8-ÙX g°¶Y­ 0k§Ùendstream +endobj +798 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 28 +>> +/Width 28 +/Height 28 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 802 0 R +>> +stream +H‰Ì–1‹Â0Ç+((èàPAn¸áfGG¿ÆutkÜ\„ëP¿€Àá¿„î:èàÐA¡‚BîOƒ!mŒ=‡Ëí˯ÿ¼¼÷RJ©ñêA¯ÌËår:|߇æÇS©T2™„¡Ã<£ÑHáIY,…B!ŸÏ§Óiæ~¿Ƕm‡yÆb1×uF½^7MS‡¹Ûí&“ ˜X{×Ï!õ-úS¡32SÔI…¬øÏ:EŸÈLB¾$2“Ryûròæ]…\è«âÉÜX<›Í&c*ÊSçÜAãÇ4N-—Ë(Ï0ìÍÞ‰Ú ØÙlV­V‹ÅbV¬÷Õjµ\.aH>ø”üj¬Ø— u»ÝÑ °ÓéÐßmV}Ø?=ÏC/¢7­[½u–Ä£gJ{ç6°8/¤A&“á½:Ó²,²Ùl¯ßÆÇ÷w©Tâ½ZŸÉ䉵æ§eiº.ÔÖj5ôj|K“ ÚÇáLiÈïóy¥RZMæp8ÄÙAC·ÛeKl; ±a^o–‡L–·›Í†Ý˜ív›K…ò/ÇÓ Â‹Ðd²¼EÒbU"‘X¯×­V‹…ñ4‚ºó{=ìy¥¹w–·˜‘'˜Q 2^år9̬Fž:#‰ÙÀ²úENr¦xï?Å4„rƒP`>ŸÏ˜Åÿ“æò½Þ endstream +endobj +799 0 obj +<< +/Length 803 0 R +>> +stream +endstream +endobj +800 0 obj +34 +endobj +801 0 obj +1587 +endobj +802 0 obj +513 +endobj +803 0 obj +0 +endobj +789 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxseparatoritem.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 804 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 15.00000000 15.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201309-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 805 0 R +/XObject << +/Im0 806 0 R +>> +/StandardImageFileData 807 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 806 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 808 0 R +>> +stream +q q 15 0 0 15 0 0 cm /Im0 Do Q Q endstream +endobj +804 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201309-05'00') +/ModDate (D:20030406201309-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +805 0 obj +<< +/Filter /FlateDecode +/Size 2522 +/Length 809 0 R +>> +stream +H‰¼VylUÿÞÌÞ»Ýv»[@Ô²­´¨QºÝÒZ“Ú»Uj±1Ö=¦Û’a§ìÎ4H¹4Ñ@A‰„D°‰š¨€ôþ£\1D©¢ +rSkAß{3{µÅø‡ñÛ¼÷¾{~ï›ùÞÛ‰%Õ5ª ”ƒh"¶±W[ÓÝN@ø§¬Ä¦Ê¤6s4¢h¾¥J ¢ +T*?/³ýTÖ‡ãeP*“ñˆ,ëiäå« «¹[x®‚©Ø+¸¹¦Ò`¤k`¦xç“LÒ)X &N§×™ôz“Åh0ZRM¦Ä”QVkŠÕ:Êb¢¤,ÃJ0Ì Ifs’Íl6ÛÈd¶É!–“@Ú ÞŽEéÀXkAÒi¼uFêAE¥QR +ÈâͩԭNo0¢ÁF 6&R!–Q1j­F§fM9ØhaUiÉÙêâç]ÖôY œÛŠõŸ—<26¥n—;gB`ááRmFgý3}ž`,Ê,[Ùà-ßÝ%æìm<Ëý¶uñžoCçú+Æ­Úðƶw{ŽüüûÆ/öýe`jsû’÷6mßwìüÍüÊi¾ÙKWoîÞüÂ- 0 F«¢˜´u.…–¬Âf¥[ÕÎ+lÁ®ºÃ7rƺÏv–Ö§x‚ú24€63ww/Ñ5Ò[Þ˜'rg#î`\‚tL,}¦Š`Ày¾»SÛ³ñÒ´?÷\7¼Óñ¬Ÿ[p;sþC—aÌͽ«$è}éËcs?Éúx`[Áöé+_ÿQWsélÍ>lx½ëTw yù²±kм'꿚xn¿õ±GÜ©?”ÕzWJ0éŽï6^*¼ÒwñÎr_ûõÊ=³ûßÌè)|ûÓ‹§_>VûýêCWïn¾ýuÇ÷º¤o 츙xåø½“l=pº»ýZå¬Þ¬µ½%ÓÞ~¹û輬 iýsßn’à M·Æl*:رE‚ü+;êšr6¼µ_:!÷I}ïrçà~‡bðâ‹Ç/;LÌ“‹(H¹6 Ö?{Ø!ƃ"ÿÒ釕YS“c +´(„@ÿ— j¥'ÝèÁ?=ªøà« eÓ Šôk9#ü’¥­rã±x4)2]i§Ú§´¢lÁ‡wþx8ŽœÇ„GžÝé(ÈÆü$Úëü> +/Width 20 +/Height 20 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 810 0 R +>> +stream +H‰ì’1 +ƒ@E·°PÐ"……¶‚‚ ¥ÛÚÇkÄ#„ÁÓØ®e. (ØXh!h¡ …`7ˆ²šReªÏ°oçógÆqDŸÖøgÈÃÐ÷}×u 9Žçy3Û¶mQyž7MÃ`%IRUUQQg¶,Ë(Š!›>1Ʀiʲ¼bmÛÞdÃ0\±lÏE]×UUg˲V쫬hÀ,ËN®{Eè†a ‰±wDý¤iš$ÉÙó€=ø¾®ëš¦Ablö‘ÆË&ü€ ç{X2±—‰¢µ‡ýÆ3Í +¦Çq|sôNVËé°AÐÏwÅ®yƒ —÷|`;Ÿæç endstream +endobj +807 0 obj +<< +/Length 811 0 R +>> +stream +endstream +endobj +808 0 obj +34 +endobj +809 0 obj +1354 +endobj +810 0 obj +250 +endobj +811 0 obj +0 +endobj +793 0 obj << +/D [791 0 R /XYZ 109.858 727.97 null] +>> endobj +102 0 obj << +/D [791 0 R /XYZ 109.858 703.064 null] +>> endobj +794 0 obj << +/D [791 0 R /XYZ 109.858 486.461 null] +>> endobj +725 0 obj << +/D [791 0 R /XYZ 109.858 420.753 null] +>> endobj +106 0 obj << +/D [791 0 R /XYZ 109.858 410.03 null] +>> endobj +795 0 obj << +/D [791 0 R /XYZ 109.858 189.984 null] +>> endobj +790 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F8 369 0 R /F50 672 0 R /F22 363 0 R /F41 556 0 R /F19 516 0 R /F54 713 0 R >> +/XObject << /Im10 788 0 R /Im11 789 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +816 0 obj << +/Length 1292 +/Filter /FlateDecode +>> +stream +xÚÅWYoÛF~ׯà# ”îAînûdÙ= h«€$”DEÄ#$UÃùõÙC¢DIu î13;÷7¢Aÿh@MTªÉ$Ñ2XU³$ø 7?Ψ£ˆ9%JÁïˆ4§¸åû#eÄŒh¥‘òËìç$Xƒ´wÀ%´ +ža&tPÍDª “Êíw³ÇÙo)öNQ…<Å+TŠ%š¥à{°o¾˜½ùéÀì›ÀQ8‚ÅúCø¾ØDL„EWÔ«"ú´x7û~qH ãò–Ã<ÉGÑí2ãW?2–E1c*ü½.»ZÌŸH›÷¨ƒaWDgò ª gÞCVFϵL¹$,MoiéI&Zª€ +ÂEæõÄôÈtBRJÍk?öY•¢”hÔ˜ÀÊ•¡»ïŠ|˜úfDqdBœxêHGˆ­ŽìÄ“FCG‚/¯šººýjh:«¥ z‘A6Jç8«âÇ$Mî"ž„¿<×EŰúþ"\Ü7UÛÔE= ýÎ +S¼”q;i1„C³llvL¨i˜×øM²ŽÌ ‡—+\–¦ÙXšžAÔ‹6ï€&ÞEE¢X€Zw›DŽU¾Û•@Q¶ûa¤•µÛÐ…”C±vLÖ1þqô ¿Á;Þ{r×^ Í3借|£0Ò>ì`rùÕÛË9M¦A)bΨ" ä—)[Ø?iK÷¸—¯cŒGœ&F18“ú<¢Ñ_­{Ï5É8I„/Î%ýÆ>‡NŠ,VŠp0’s’ùÚÙå}ïz¦Ã~Yu$Ã=&Ã$ ¡Ccq9I3’»ãà £Ù-1x=,Q¬D¸A…;OÚÚÅ®øU7!ÝÙ£Êlêˆépß[V“Âk{Ý[õ€iߟ;\qˆŽÒT%ГÁ—à‰Åгƒ7o+Ê‚‡P!8CìDÅGY×VÊ! u /~*‹«)…¬—á/Ö‡irl©Ø¼ ý˳0•8¿ß÷CS¥Þï§­ Þb€XZ‘L²«°g@. *·lô ôbK€(*ýw +ÄÙ %‰¤üà•±ižÈÓŒ |˜Z+ßš’ŸZ© ÓY0’?)˜ » kÿýà} ™„¼iO–©ÓS{h誓õX.'Y‚±–ÄáÙCѯº²ʦž6xð9X3 +FxÇÍñ¥'l2{,«Ê4›þ6Sð rµæËÅn¯Ý¬š½á‚žÞšòìùÆ—$<õˆ"—ãú3&ÁŽ\²ËjËÚþjò¾i6heñ×ÀýÐ5íº‰( ŸkÀeãŠE#€À§!†±$"±nl÷Ë]ÙCïO9ô…+¨Ï¡Y'§ÉuÔ_C}OâÚ/Kœ©°^&ØÏIsØï­L½•óçM³+òúØ;v ö.ë¶¥C½ëÍ?_ . > endobj +812 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxsubmenuitem.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 824 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 15.00000000 15.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201317-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 825 0 R +/XObject << +/Im0 826 0 R +>> +/StandardImageFileData 827 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 826 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 828 0 R +>> +stream +q q 15 0 0 15 0 0 cm /Im0 Do Q Q endstream +endobj +824 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201317-05'00') +/ModDate (D:20030406201317-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +825 0 obj +<< +/Filter /FlateDecode +/Size 2602 +/Length 829 0 R +>> +stream +H‰¼V}Peöö¾àŽ“ã$+æë¸ ‰ü7ÿ÷6¼ge öhŸ’—„!ÚUä)×½ñ‚I‘Ô´ìÎõ»VOFÜþÛ’î*·åŸle3'wVÜ þ<²ùÛ‹ÞžÁ‚™ï|´åówOýxÓ÷ñÑÓ—~»WYÛ°u÷Ž3?õe-ZN7nknûâìÏ·†µ ‘ ´RŒI!—e`ÓRc¤ÁªD,mÃN=àDÙ…;é3,×Ý›LËb­ž¹w“ä<ErÆÉN¢u²-¿"“¥n <ÁÌ î +¨I|O-ä€ÏùK÷¬öã ¬¯Ìjª>6âå µ| /î’©?nc•æÌü·k6Mm<ðÃÅæ>¶›nßÑUÑPÕrðš¹òòìöƒ)¾·LÛu’þnz¸1%«ïƒ‚§¯ÎIè Þü£-í`GfÛîªÞóÝ-t×áøï>={Îzø¹5³¿9v+§øöháâÎ~Øú`Ñ*MÏk£ËîN\³nÖÏØµa>á€;ïûæP×_Û®t”Öõéú¦Ž]o¦»‡Æ÷pPÜ0°p]úhþ`ga±µãjÃè¡Óc7_döä|ÏÁüc#9}z|gGæ U÷Ž7¯,îew®@ùº„³7 ¿KÂiD=rÁ ú¨Q`€%`G<‹†sõÈC÷È‚0Bà#¿¬Éf3<Ë·>P1èÅüŸÄ‰çÜB<àWψ>èsG¤âßÜDZ€ßºÍ!ô 4ÞGãþžW|ú Kì Ëxì胕b„4£1=Û87Û˜iH3f§¦g§fჶ—îÇq{%¼ú½dÏœ ElòPüD\?‘Šõ'1‘, æöS¡(ãõok'Žvendstream +endobj +826 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 20 +>> +/Width 20 +/Height 20 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 830 0 R +>> +stream +H‰¼“±Šƒ@†]°PÐâ + -l,®Hé¶Ÿåò!O`—WH»–)lílµ°TÐB0²°9–=n +Ùùv~g÷_×UÛëŸÙeYæyž¦ ‰¤X×uÓ4 Ã@"Øq»®kÛv kÛ¶çy®ëZ–%ؾïëºNÓT.2ÏsJiÇŽãM«ªÊ²¬,K Ëû|Z+²\–ö±„TBs’$œÅ¸ÔYÞ¨( +°¾ïc\¿b9Ž>®cwkF]®iáõŠqᆨ³Ï!`?.—0 ƒ À¨•XJ·ŸØ2†_ÞÞIý;øŒóïÅcËʽ‹aéëtúQ³ÜƒØ¹išûñˆüp»EQ„‚U¼/T!÷ <„*ä[ï?Œ1.ö endstream +endobj +827 0 obj +<< +/Length 831 0 R +>> +stream +endstream +endobj +828 0 obj +34 +endobj +829 0 obj +1441 +endobj +830 0 obj +292 +endobj +831 0 obj +0 +endobj +813 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxtoolbar.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 832 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 21.00000000 21.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201321-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 833 0 R +/XObject << +/Im0 834 0 R +>> +/StandardImageFileData 835 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 834 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 836 0 R +>> +stream +q q 21 0 0 21 0 0 cm /Im0 Do Q Q endstream +endobj +832 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201321-05'00') +/ModDate (D:20030406201321-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +833 0 obj +<< +/Filter /FlateDecode +/Size 2668 +/Length 837 0 R +>> +stream +H‰¼V{PTU?wï>Ùe—å!¤Dˆ€M3Ȳ’IH0bHÔLCÐLévî¹wwYÅ©?š¾;çœï}ç»{¾³Ó“Ó3…a€%/ðM‡6|€·>¬|ø•µ ÑMéŠH\ÍE =‘(„#ÉO¹Ëø’eŽ8Œ‹òà$Måðx°2§G‘#ˆO‘EEÐBÂYÌGqšÚ»œ-š_³C‹æ—åüñe0ã~ƒ5ÿ÷6´g©³öpŸ‚ÙÜàmAΪqòD–óœè9 +ä‡'0‚B@ÃÇVÀ™‚ y=°rÙ#lœ,Otp—K_j'I¸X@Ê^j²e]öl#åØ@.ULR¥fGš ¢ˆ+'ÓT /#ÙæbzŒ,¶‘#aË'3ll~·÷ˆ 2ÞpH>gLn‰ÙJÙËÜTbÊj1[J‰R{ ”©9lPÒ±•ÔÛijQJXõ4aBèß(#xgΙհ–ôsðÿ°Ün%sSåºß]“i3n±ž¤sõf7ÒHÀ8bnKËÍÌ0Pɤµ›³¬˜²–'‘³£R*nói5[]Q¤·“4뾌°Òã¸ç;Ôîîrƒ9…")ë˜âª¹€äyN cUÊ®2š*˲Ó6blᦗÃO\ü¨;:[jÄb|'òEûá¸N§`E|_ÇY…’i þ]0æG¦x½07}.ÀìPiðìE’‰2…)™@Àü”H¦Õl&¦¼R©T&UÈd +µÜC®öS)*¿?Ÿµ¿ŒO˜§\î©ôôR*½|•J¥/;)}¹õ¿IÀ| ÔR¸@ 5†«1¦n]ÀœÀ!J†ˆ/ 7'‰%R™‡{Ôˆî0zLˆá¡@$KE¸"Õ¸p²w”(éE½OÈÒ5Z±ïÖÚúä)¡~ÙG Ñ1Öµm)’°Êœ[—om±>lX>ç½\Sê±::ο=ï +qçÀ[ǰ_š;uÛÞõ·Ÿ¸ðËðG';®ä-ÛðþLJZ:½«›÷’yùÆŸ>uñú=5 Z!Â$‹b„ÉQÞBˆ`iˆH»f«/‹àhvÛ­èPÃeëÚÊ”?£-æv˜˜ =ÖAÔù›Róâh⊓LuA`~ +½S ÁðÌ/>í_¾zÑüW{[v·zT×OZ6ãçν¶AK„m¢ôü:{¶êþg‰û+Þa@ààÃ['w_øÚÒ×ófO€¿±üƒƒûÎ’ GvÈ5ûN^5PwqxÖÊÄÔ%£1Û :.å÷  5Öªoy½y(`°Õ ¸ùü™›ý h ÚœUÒ=cý÷½ÍaÚÏ5‰î]½f2¾l+øm“2áNý,j¾mTWp£|‹1ïËçp~p4 ²†9ßW~8ûø òóNòAÂwUò§CwuÍYz¿éµQûŽ*£/®|çqÿе×u-‘ž‘ÚÑ꺚Ãô´³ƒ]Aµ#G"s¾¹±]u癇ªÞÊj\·ÿêpsCÛÆœYýK6YjÏí½Ö߸½dÕ¥ƒ +«ÏÞØÒ¸åþWw° µ¦xd4¢yowSGWCEÕ_í7+† +ú;F´u÷éÚÿŒî[UÔz©ú`♊èú›rfÇÙ‰ª^ýf…AûöÌìæšú)Ã+ +™.tj'£_ew®a7IÀ/E @0XŠ!Ï^“6Ä•AŸð:0 h€óKúÙ‡gf‚çØ& +$˜7<"ýSØD â;†›ääcÏò>ðâÄ¢ÐõÉö+¦uò6Z¸îG§á(äe´¢>¼°˜¢)[1¼ZtÓ4@«ÑDÇkbâ5qÁZM|Tt¼6 +Ù=÷>†`À™7pîâù,Æp›x,~l‚ ?4?ìt|,\àÊí 4^Fëß \¸]endstream +endobj +834 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 28 +>> +/Width 28 +/Height 28 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 838 0 R +>> +stream +H‰ì–1nƒ0†ƒÄ+ c—È92f \#§CÀ#H0t $èß<Õj¥McWéаž-ûÓ{¶ìßëºnDkýæ<ÏÓ4ã¸, 'J–eUUEéû^Ó4!éeYfš¦amÛ꺎.?3Ïó |߯ëd!Ì4M_NbÌ0 1ž$IE¨û­Øü[L´gÌ{’góÿ“­¢…¢˜t5$IºÀŠb~Æò3I ÿ39™›sñ3¿ÐS˜xX¥÷å–qŒ5Ñiò5óµÂ(È Ïî½Â8fÌãñøHŠqŒæ@´bÂ;Š¢À³ßuÝ`ÚÏ×ÝÖfYy<®id‹à§@n¾Ý"÷{¸›ëºŽã`'y¼x†²,«ªBlÛ¶çy°K$Ìóg“jDL.L¶ÎÃDiT#bú-àÛ€øM€g`ؘ endstream +endobj +835 0 obj +<< +/Length 839 0 R +>> +stream +endstream +endobj +836 0 obj +34 +endobj +837 0 obj +1520 +endobj +838 0 obj +334 +endobj +839 0 obj +0 +endobj +819 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [144.893 615.095 164.044 625.943] +/Subtype /Link +/A << /S /GoTo /D (ttbxseparatortm.size) >> +>> endobj +820 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 486.716 187.316 494.836] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomitem) >> +>> endobj +817 0 obj << +/D [815 0 R /XYZ 109.858 727.97 null] +>> endobj +818 0 obj << +/D [815 0 R /XYZ 109.858 681.914 null] +>> endobj +726 0 obj << +/D [815 0 R /XYZ 109.858 616.091 null] +>> endobj +110 0 obj << +/D [815 0 R /XYZ 109.858 605.367 null] +>> endobj +821 0 obj << +/D [815 0 R /XYZ 109.858 377.102 null] +>> endobj +822 0 obj << +/D [815 0 R /XYZ 109.858 285.082 null] +>> endobj +727 0 obj << +/D [815 0 R /XYZ 109.858 233.152 null] +>> endobj +114 0 obj << +/D [815 0 R /XYZ 109.858 222.428 null] +>> endobj +814 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F50 672 0 R /F54 713 0 R >> +/XObject << /Im12 812 0 R /Im13 813 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +842 0 obj << +/Length 2195 +/Filter /FlateDecode +>> +stream +xÚYÝs¤6÷_Á#S8ħÈVb¯sIª’Üe'u[•ÍÙC̺fÿúë Ä0ãsR.!µºÝjõN?ÂAîËD:Y˜ùyæ”Ï7ó+ÿ¼šÂ‹„/% qÍÏhv=üu¡ /ôs™#åŸ7¿ÿ8pûvŹt^`øaœ;Ï7q’ûa&õ{sóáæß3^Ëœ™Õ¡x$/Cµ$‚˜ˆÄdZŒ%±;º#Ú©âׂ¡ð%qqaĽJ¯Ö-?O;ÄzÔ,оGuY$Ú%©[ð'… +Í¡{ä§µÁ$\ç%AŽ b2 ¬Ðõ3n&©ÊC8Zm!ü<Õ~&¹íaB@mD¤eæÁÙ¢:ŸënàUÂOñn6xØÀ¨*TX›Dv2v¿bÉ´ÂCD=t,†•ÒàHŠkûabÆ0g §¡—é XÉÑg€þ)ć”ô¿=•Ì@ÀcŽÍXâ €mðŠ',¥[v ±–)k ôË2Œ7ƇÉzä'{Æ´Pâ³l~&ý —XàDµå^ˆ‡hiM#è q†Ž»ø/Ò(-½0Ú—ÚZŸÕig› O°Md÷t"ÉáÙ䨮ÔBbé®)¤K^qbŠQMSÝ>™}Z¹$Ÿ-‹Óx€<[?ê½ÈÑ$Ÿwp_ŠæhY.Jç{Æ4eÑêźú‹–tE*œ§m¾3m\P.ŽÁÃlŠ¡ha{"‚¼uâµÙ+ñ~­9LQ±Ú°PîÀŸùô*ÞQó½ì˜ïúû)[–Œˆ‚ÎçÄ/ÕL+–è^j´ò׊™ÍÓ@á­­.£Ö7¶9ñ¥¨iÏ +áõæøUñêËìš­¾ƒ(U1c|˜fÖ»¸}%üËÁ=ZÂõ¿(v=º†H!ž¨%Kðœ€A$iÏý#×åTÞ…«îÊ&量ŒB'NCعÊÝÛJCÓz1'ñpUj`Z3$ˆ¤P>£‡Á¤ów,æ]Qì'q¨ë §§'¸s_ÃßÅ2ón›í43²pò©þguDyêÞá¸kÈ_¿ÙÄ'-—"—nQNG +ßøªC”ÞË3&ólµiZgUXÕñË¢)M1‘ëÃÒƒ‰ÄDYrÎCa¾…í##Iõ´wÁ±­ôVQŠ©p«uãaòî)Í"„bÖ§ÖúãLM»ÄŒ ÇÚñqÍÃL—åžÒ¤•ŽÍ.Ö»ÂOš%~4˜3Û±¡œŠGöÄÛÔ§@D´ÈN#×(¶A‹–8 cH +ÅEYpòB]ÉZšl6âá¡Aæ0€4ÇqFètƒ{˜CtÄ› 33H(%´¡€EOjsœQê)ºAÁ€vH¥ûŽ™vÉ+8—"üFæncH% žø“~uÁCîɈ }u‘‚—> Î:X.J–‚³br[°®·Æ¹Pá dŽNÎÓýÐq©³è™‰†ë²æƒB1T`A7vLÅK€r=:À|½ ‚qê‹/rø7ã^oyµû=³Ñ[vR@´$ŸñFù¿õº*í?w‡º!?ºë(3tÃx0Ð=A£a<ΆäÊ*C˜èAtºYúaRPÁB\ ¿*Ú±×M/ „}?‡žÇËüXïíM=ÂI&‘[]K-Qœ€üèm©Å"¾–Z ÉßH-¬«J¸i¥­I,Pt\¥Ñ©ÆB4§šÜÓ˜‹©S¯6„ôÓÀ`xUº¾t¿áǧ êé[L†GÓq€É êé¾-PóFaa0O¿¯G3›Å…䨡präÛs·Š¹t=C«¨YÒÍ +@¾¹.ðZOÓÜÞÁ¶¹¬‡åŽë ßjPYQ9n3:Ë•°4š6¬;R +Ss F–Íf¥N‘¦BD˜·¦¦ž³»æU·¯ÖÁ±ÛR™Ç-†îÇ î+ĉû3%¿çUC‡!Í”xÛ(Æ,,­vsý¸´×VŸY³:j íVÛwvÑà6ú±Œ ÈÅp¸ò/Ä/³Ó³¶Òµ³\æœ;šJ=c-}¡¤8G!#„=6²Í÷5Mó*†8÷ˆd6†óÂÅ¿PƒÑ f‚¾”$zㇶèá¢L…þÞöJ”oraÀ3}[”³ˆ¯E9Cò7¢œ­ l?´“zR¥dþ &ËiéóEÏÕÜXOtÝK+ßs÷Q'Ž×ýµõ¾ÅÐÍ5Õ×Rý WÔ,ꡱ®¿6¬!acƽ¶%ÖËA-MY¸¸é“õyäÕ¦ë'5ºêÿ7ZwƒÂL~Å/D*})Þèñ5¿0$(бqŽåÔ 7ŽóL{CÄ|BÙä——V7TÏ}תvº’64·UÚ`µ=ò…¿¾´øLá8Ƶcà"Æ5|^ù„‡qº€o©¹˜ +íÆÔÔ¡Ôh2KM Êäždþ0Aéì‚©û= –wó7¹¢ÁçSô‡r.ª·¹Áª€ù[]¿Ä>ú €ñð´öBj+Õ»í'}>È$“^ü—C Á*ÊÍôâÿ)endstream +endobj +841 0 obj << +/Type /Page +/Contents 842 0 R +/Resources 840 0 R +/MediaBox [0 0 612 792] +/Parent 823 0 R +/Annots [ 845 0 R 847 0 R ] +>> endobj +845 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 387.064 218.278 396.141] +/Subtype /Link +/A << /S /GoTo /D (ttbxtoolbar.updatechildclrs) >> +>> endobj +847 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [401.487 301.675 447.205 312.523] +/Subtype /Link +/A << /S /GoTo /D (ttbxtoolbar.embedded) >> +>> endobj +843 0 obj << +/D [841 0 R /XYZ 109.858 727.97 null] +>> endobj +844 0 obj << +/D [841 0 R /XYZ 109.858 494.342 null] +>> endobj +846 0 obj << +/D [841 0 R /XYZ 109.858 388.06 null] +>> endobj +848 0 obj << +/D [841 0 R /XYZ 109.858 302.671 null] +>> endobj +849 0 obj << +/D [841 0 R /XYZ 109.858 200.821 null] +>> endobj +850 0 obj << +/D [841 0 R /XYZ 109.858 134.998 null] +>> endobj +840 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F50 672 0 R /F8 369 0 R /F22 363 0 R /F41 556 0 R /F55 716 0 R /F34 719 0 R /F54 713 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +855 0 obj << +/Length 2281 +/Filter /FlateDecode +>> +stream +xÚYoœFø}¬spµêCí$=ÔVM³i"µ}À £²Ëظù÷ýŽ`í¦•e3ß=ß9^?ÂQfqæ¥2 óÔÛ7‘÷v¾Ù(f¼â^˜Òj æõ— 2òæYŽm~û#òJ ö=`é<óà= +¥Î½ãFÇy(ÓÌ|7›7›×#ÞK½‘ÔJ ñ")ª•ÁsÔïf·yþJæ}ïž0»ò7ÿ—ê°•Ú¯ºê´¯¶ì¾ß¼ÜEp*}Ê`ä ¦hö4Ö.×ߥL¶”™ÿöTü¶»yž‹e ô,Ì“ñµÈC%5ðCT©–RÆ* e?%¥¹"¥a;FNt$W¡ˆq{y¼«Ê²*W–I˜)é%)<óÄeº6‘ `æ.g6"Þy.§ýP·'¶ˆ#°RasX¿ØJkÿ¦m›ª8}É8™—ƒâŒ€-s›£ß¶¿t'økL/ò Ì–E¹aµÛ¦©ß!xµ"/u +Ó¡ ‚S=µ§à÷HİÒC}úÀËC ‡žùmëwEGÜa#÷îëývî®è*^GÛëSO¢#Ú@o%n¤°±5´‰Ç}Å/%3#º†Û@kåïî¹6L¨”16s˜ºô|úp|’Ü0°š†= +t*šæ *Å‚À³DV`Å@#!ÅWJƒ¬Lß‹óäMýªè + JZlL«¿Œæ/"xÄ…;FacÀoUN2¡ï]×óê¡k†ù@æ-éÁ Ǹœs`ÆQF¶x{.AÛûº)oÛ¦íúGc& +õgÆÌühÌâÜmeä·ûª¼tÕ*p´#eœt%ax7fÞòÑ j¿>¹=ëí˜ôÁØ¢pn©O^×ï[ö„ŽÂÀà=Ôƒ9ÜŸ·Ö¹6÷’•÷¿ZÇ«LD¨21 Ø X,ªÄ†ìà2ƒêµ&ãcNÇ­ïXÄŠ2¹v¦ýgC ÌÃ=¸r #’¬":6ªH+3 ù\5ô’£š9Æ9ý\p­ JB=žá“ +Æ¡ÖößyfRŒ^#éȸîùÙÞ *sªŒ6ÄÄÈA:†&[잊ynXgŠÐaùgL”íyŠ]JihE²3äª8Öþ›¿'«1Þî?Þó…jŠ¡:&Ò²*òÃD”ä Z©ã¾ÀÍøÇ¼EztFV´¯ø±o~jOÕ3üÈ'_OÅÒËCM®H“¼-J‘¢™uºjo«¦K™h47ú Ó'sæwÈøCU”îÀÏ ++([caÁÅéTÜÔ#³ú:íÅÜ>•ÜKÑoÊýÔôéöT3pP)¹®¶ Nu™ò=ëˆòYc Ÿ! ÒРˆ™|«Ö”AždA…CBNø?¶ý0·ž=K™Ä~ ¤Ësz›Pg”™½¿¼é¦ âK‚ÅÂóïŽÐ1¼h7¯7ÞëÙ´‡ØÚ\¶õU9(Ÿrëûm]uØÄ871'cpÓh¦±g`¨cïØ0 lBÊæ£lcœÆÖ=<0†£’ *~ôöƒî:"ïhÞt˜CW:¿û,­À!FªºòŽšÆ<Á;R¿IAòx:¦™Ø “ñ°"x¬Qõû®>OÓµÛõC@Å94(£ Cî·¨UmÏL¹?²ë`òËÌ$™IªkôäÇXŒ¸@r^>:í<ƒ±ãÃÈò¤óȇryœGþK´bìÑU§PFQÄ›ì´<þšBstúQÊÑ<öû7&ž±€“Ÿmg²2¥Z.œÇ ^7¶šÌ÷3ye{Ƭ-¨ÂUÿÈ4 O“/|/EiJMuµm²c¢Ì$’Ÿ7R:À”Ä)Izx>­ïctk›ÄQpL›,xl‡žÂ7w4»iåÚ= s‡Îw÷Ó6rz7/:w\yl¨à>E›Fž¦zš-/R—fù=ÃFO:ü¿Ø 8남ý!éŒh³œ9c½/šÑh½JF½s¤t•a»å<µn%¦Æ¢&…pÚÙÞ+*tAãRÛ÷í,ˆYåÀÏÁA .¬´záE…I#$R*z©Ú†`aàÆ„kñše(êÑò%­fœ¥,³9ƒu#eÑkžizuýÂ8OšZJÿ¥<Ï$u&„Ì6ßïð ‘šQ†^?ncðæRÙþPf‘ÿ,L}m"ö¦€mÐ3[W"\Í—å7í#ŽYpˆ? ñº‹þO'þ­‰‚ôú¸ ó±>Î@ØK*H.e1ؾ!—º¥îÚÕœP]¡B;^»è×oÃHªÄ5 ìYTnÿYa6ÿÈý !endstream +endobj +854 0 obj << +/Type /Page +/Contents 855 0 R +/Resources 853 0 R +/MediaBox [0 0 612 792] +/Parent 823 0 R +/Annots [ 857 0 R 858 0 R 860 0 R ] +>> endobj +852 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxtoolwindow.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 862 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 21.00000000 21.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201218-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 863 0 R +/XObject << +/Im0 864 0 R +>> +/StandardImageFileData 865 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 864 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 866 0 R +>> +stream +q q 21 0 0 21 0 0 cm /Im0 Do Q Q endstream +endobj +862 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201218-05'00') +/ModDate (D:20030406201218-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +863 0 obj +<< +/Filter /FlateDecode +/Size 2606 +/Length 867 0 R +>> +stream +H‰¼VypU/›³IÓ¤i¡"m…V„4¥ÊHhK±Ø ¤æØ&Ám¶d7p$ ㌠Cñ‡Ëâp©ÚÎè §àŒrˆ㌀†Z(‡´Å¶ëÛ·› ÊèŽßÎ{ï»÷÷¾ìû^&X¬Ò‘€'xˆ& Ñ)ÚjzD¸ò6i¶i#æeB”4‹R4†aù‰X™¸‹eU( +Qq¢€¥LO/ zÙùR0¶¶Y(4ËÅ(A³uý†°Æ„çÙhirðülDƒsþ…ùz¸‰hçÍÿ½ ïY®=Ú§dŠ0DÛ°pÕyÏUaô ‡8@ `Ñc‹ÐL£‡ À¼À‰øá ×cB¤‹è½~ŠB‹„‡e§ý^'SfŸïˆØËlVh•t}*E{]¡43ÈZ6Z.`é:QÆ0Ê]n6J–3”ÇA2ÕÔ †Ïó¶!& ,S£r+\>Ú_£’Ó>Ëã%½þ:$iŠ*ø 2¬Cr¼ÍÏÒ%¤—ôÙXÒ‰Ñ/®'Eç8Á™×ðK+õØ?á÷Q•E/VÆ?Vce\dŒFn£ØJ›+F§u(Ž\ÄZ˜ÒJë ;MS¼ARÇ8«Ü´oI>åq…*• l¾4¤æ«ë$km~ŠåÝ’>v÷ê:Ö]mwÒí‹*®^(( xÏÓ^~U±t}™ŸeÈèÂÅQ¨h5všE}D¯F?±ûaw|Âô˜…b?JÂÿà ýNËD­X˜ÐYA…R‘~Hû™ûè¦[Š”@Ô§JQèš|'m'k +­@ÂÝZ,ç2>w ¬¥R©RjT*^§Ö''h4 É)C²Á¢×`— Æ«ÕñÚxV«KÒjµIü¤MBôÿ&wè•h;C ˜$zHè!÷ Úº„;Í¥ b H ÍIer…R§†!!£@)$$R‰L!WÊM62ê iZb–,ÿ›!}Ár“|ZôA—ÌÂWß+|ÐæW®òMh|F(ã÷€Ô™nš¥7ºrÇÉhÌÎ3ŽË3ŽO5ó²LyYðqÛ…÷q[$á¼C·^<}rHˆØäÑøá ~8,?êRb˜!‰äQ©(ãõoNƒ’ˆendstream +endobj +864 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 28 +>> +/Width 28 +/Height 28 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 868 0 R +>> +stream +H‰ì–=Žƒ0„)(@¢¥€‚$ Ìð%rŽ”)n‡€J HH ±£<ín6"?Ž“*qñ»ø˜i<^–EzöZ^Àœ¦iÇaæyDɲ¬ªª¢(]×išö{išš¦iFÓ4º®c+Î̲,ß÷«ªùŒ™$ &cŒWlŽë—†!ùØç*çôGL.Ú%Ÿ/er†þ#²²¿yvéÿut'9d,Æ'ŠV}®f‘nÝoÄdÇíuæO·äö”Ç1/Œ/¢ýœÝ‘ç9®ý¶m¹±`F˜‡ÝÕfYu:®®k¸…à¢p³íbØïÑn®ë:ŽƒÔ"]Ü÷}QeYBÛ¶íyê†EÞ `RFhjaªu&¢QFhz-àÙý-Àì´˜ endstream +endobj +865 0 obj +<< +/Length 869 0 R +>> +stream +endstream +endobj +866 0 obj +34 +endobj +867 0 obj +1447 +endobj +868 0 obj +304 +endobj +869 0 obj +0 +endobj +857 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [284.888 537.538 348.206 548.387] +/Subtype /Link +/A << /S /GoTo /D (ttbxtoolbar.effectivecolor) >> +>> endobj +858 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 486.674 199.299 494.201] +/Subtype /Link +/A << /S /GoTo /D (ttbxtoolbar.effectivecolor) >> +>> endobj +860 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 161.284 218.278 170.361] +/Subtype /Link +/A << /S /GoTo /D (ttbxtoolwindow.updatechildclrs) >> +>> endobj +856 0 obj << +/D [854 0 R /XYZ 109.858 727.97 null] +>> endobj +851 0 obj << +/D [854 0 R /XYZ 109.858 643.079 null] +>> endobj +728 0 obj << +/D [854 0 R /XYZ 109.858 487.67 null] +>> endobj +118 0 obj << +/D [854 0 R /XYZ 109.858 476.946 null] +>> endobj +859 0 obj << +/D [854 0 R /XYZ 109.858 256.607 null] +>> endobj +861 0 obj << +/D [854 0 R /XYZ 109.858 162.28 null] +>> endobj +853 0 obj << +/Font << /F29 416 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F19 516 0 R /F55 716 0 R /F34 719 0 R /F28 380 0 R /F50 672 0 R >> +/XObject << /Im14 852 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +874 0 obj << +/Length 1961 +/Filter /FlateDecode +>> +stream +xÚXY“Û6 ~÷¯Ð£4S)⡃íô!qzl§wœ43M´¶lkªµ\IÎvûë  kw'íì¬%’ˆãJx1ü OÄ&Ê“ÜËd™ÌÛÞ­bï+߬S„JDy¯¸ev¶~ýu¤Œ½PF&7Hù×ê÷?boÒ¾.mrïÞãHjãÝ­tb"™å<®WoV¿ Rh-óQ …Å'¨fhVÏÁ¾W›Õ‹¯¥ñìx³÷˜‚ 6»ßý_Ë} µ_¶åi[l¾[}µ$ŠèTöœÃÉ3›¢Û³DOwý e„RæþÛSÕÓÛæÕûè\t¨ƒeÏ#“¦È¯…‰”Ô°²J}­e¢²H&ÉsZ:’G´"2°Âz"gª.˴ᄘt–3ÏZ™Ä*Ð2ö›sÙ‚[c¿ µµ¸”Ž-ÙS?B¥µsê˲«Øÿ‚¸sÏ€ÍÊÚÌì!DÅÈ”„”C¥”ß¡ðOð‹3Mì*ØYØ^·øZÒZßгÀ‡¶lÍ)üÇR´¼ö1HR¿¨/sé«¶º­'HMMÃûê´C™ÌÝsÖÂÔ¹BÆ ´4´lÕki3ø9ñV»Cimˆœ¹'t¤´Å@l‹†6Êz⇲?6»Ä#º°`“Ê-ݺ-‹¾| +I®£\¤Ÿ† ñSøp$¸ó¶9u}{ÙöM»@ÀY›Œ‘A*~ˆ“øeHøéþĘ`˜lÖÍݹ9•§hÄ#@ai”djvh1!•ñðÌ}Gp‚4Ížh6›W8û~ä +#&3õo–sGAŽ‚P å¿ÜÃmÓ붨ksÙ)ÆRÇ>"ôtt1ÇàWÄ»c^r˜S +ý&üÏ`-É{P¦•_õUQã“`l€¡w8¸½pë¦nZÙÅ6g‹à²íÑž‡yžlëÁÝ_<­,JbÂÖÛó”Z«zgåwO à!Rý‰0‰Ÿ„“LÊжÜ]Úr 4ÅŠq¶P÷1(YúiÉy{¶@ÖŽóxâ×-Ùmß>JI¨"\¶0"1ìÈ3Í ýÝ·MM0D¾û +$ÚåŸq±ÊЂ&¡û’fÔX¦"R¹`7A–ù-±kÛ$v )ÚÁÌ¡ É0uà|Qdð ©X¶¶æÕõCk„¡cîXªtœc-Å™ˆÈFíÌÌDæ³ Wö’4KÈö!/pi ‚ìbø¬I¤„ó„ îwž¹¶qšW=›Û¾°iZ²5{›,w$‡e’çÀï™Ð³„[†/·E?r!ÌbO…¶!L u G/Z?CaIí¿©fgðqI¢AïŠÒ­Ý q” ÿÖ¥rjü]¹/ÐKuOÇ?â \£<#§Ú—ô ìÿ cýBùWp†]î+ u`õµU+|¤µ%•5Ô +´”©Fw#ƪ igz¯ –ÅŽéöô¼¸Úmct É1*ÓÒ#ólíiGÊHjjEö?£ÆvN›[ÇNXm!šBíJ:Ú÷Õ‡X(¶õsÎ\|¯T:E1ÓoqG ’ç¹’B© )'üš®Ÿ{o8‹ÒÄÇ> {–¢e¿Cm×ßs l aHåŽÆ. q\„8Jè|U"9äܸ€šÄ/:zÞÖÅÙþ¤áý±²Ã#+DdMƒ–š!‡cœ²P1z†·!á¶LtfP¡ît£O”€;ÀÞ³¿ØÚÖ—XÜ)ËÁ?“¬sÅ:ŸÖÎ&8§NXׂ:zý÷JX°²ªÇN媌¼9Õ0䂹*2ÿŽºË]…ÝÅÃÐAÂÊk«]öA͵S]si‡RÁ½#Øjüo¹u $8¶h+œ—|怀ñ|sÖ¯¹žl9ÞÌ÷€Rš ±n±©Â—Ë• ´j;©/ùNK5?M§ÃÀ}q±ïK>;«bß;gOŽÍùy Íâ<&†ÞÀÌÎuyâÀL¦&\Ê’¡µ%X£3=;<ßÀ},±æ@1/êŽPz¼Áõ\ºKÑ狎 zY§´2I”˜ÿPµc8rÚZ1ÙùJöP³Æô©>b>Ô,:ž®54Pjà:ÑpÑÊ1ɵ.³ë !P)B‚*׺.09ì.é类º­êªØP²šCù‡º¼éË»E¬àf”,Þ2JR +ÅKO…ôÔhYh1È Ïáv7{´ÛbTÓæØáµ™”‰«¦…Õ‹&8WQnŒ§T}Œ@gxyãט>ì\M¼¸¹‰÷ºYý²òƯ8!Ë +'–žu]²Š3 ¦ëâ·UÙb¯@ŽÙK|¾¯'ñø™Û{’ØlÐÈWëK×C$|çøy‡{Á$³4’J=ù‘Ê~’н;~Ó‘žuþ‰*¤`†òó¿AŸíŃ-’Ùxs˜šæˆÍÄÀ÷ØŽ’•7¶€-­ÌÓ®&ù ̧x5Síÿ·œOáâ1òâ¿¢Øô·endstream +endobj +873 0 obj << +/Type /Page +/Contents 874 0 R +/Resources 872 0 R +/MediaBox [0 0 612 792] +/Parent 823 0 R +/Annots [ 877 0 R 878 0 R 879 0 R ] +>> endobj +871 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxvisibilitytoggleitem.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 880 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 15.00000000 15.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201222-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 881 0 R +/XObject << +/Im0 882 0 R +>> +/StandardImageFileData 883 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 882 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 884 0 R +>> +stream +q q 15 0 0 15 0 0 cm /Im0 Do Q Q endstream +endobj +880 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201222-05'00') +/ModDate (D:20030406201222-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +881 0 obj +<< +/Filter /FlateDecode +/Size 2632 +/Length 885 0 R +>> +stream +H‰¼V{TUÿfg_À²°ì¢„…HY'…„H#@^áò0íŸ=ìî°, ;¸3‹Ú?>"ýË?¤Œ´Ç‘H;§h¦uŽPóÕ9Ö ÔPÉòZ‰ Åsºsgö¥xêNßœïÞû=çw¿ûÝÍÈ)2ÉãA p¸2læÉf Ð#Í‚Mž€mZ_DÖF1JŠE9â,?(“ÃXòÄbT°$`)QÄ,È¢GÞÃëBXT],4•R”¨iݹ˫1âñe4z4ix|Ú§Á9ÿÂë~F"o æÿÞ†÷¬öÖíSö¼È’-Æ[5QŽV¤Ã‹^$ƒÄÑ`3pè±À:h°ˆ-ˆiĬGÌ€=4PXCA½øÞˆ˜!ÿC<îÓ;Ý4&™Õ¸6¶ÄRkõÙˬ\²gkLC,Í8íž4Ë©jÎ_Îá˜zIÆ0Êì5œŸ¬di‡•bWÒËY!À{؆ˆUX(Zæ—[ew1’q9ì'åt µÑä• A%X‡äÐ*7ÇPNÊUÅQ6Œ~}%9‹Î‚F°ÕÛcÿ‡ý“n]‘·ª"°øk§4Ê*𫍲è´V +ÅQë¸"¶°Â´ÜÂ0´`P{ÔÎA5Œë•lÚa÷T*LÜ|¡G-T×FUW¹iNpo¤\Ü î+=ê@÷‹=—¡—_qub@N× Àx‘q +sÇ4”¸9–ò/\0 +ù€Vca8TÐô!è'®¹ßŸ:^RO‚ðÉ=P#ˆdTÏYY‚\ö!} DÁ_à¯@ø ùEù@ÈÔ» +QWM¶±Pæ\ÈøAÐb l…L|/4F­V©5AA]Hpˆ.2L£ ‹ŒÒë#õú(“4ÍLDhHH¨64\« 7hµZƒ0h bˆîß$à€N¶c ‰8éRGð—ÑÖeüq" ¡T˜¤’hsr…R¥ +!î7 #=Æp ä)“Ë*¥ZAjRQGÊçE$+²WTéãÖl2* Û[÷ç<>?²ì¨%%Õµ¹+Wß\~çê•M›õþg¯&,{½Â–w¬[<»»òu÷@Ó7gÝׇóßøàµÏw?wcdÏÁç½·²ºqË›{ü±o4½à%ûÚ­-~qªçæŸ:ÉZ9ƤR*Ò0„yÉr„`Mœ^aÜ´Ý 8ZÖu'e¾åªkssny¤•MŠW +T iǺˆ¶Ù¶¼ÊÅuÍ áá}øK !ñ;u#ôO½ öyÖºúÀpz³¹sÌÍCÛêÊ©Úã§÷ö7°µgRÓÙÞRk[Á¬´Áö‰¥K'"ÆÏn;{·ÿðì%ûzì{ó3¶oùù[6z|ª¤ä\WFÚ§×ïXõ%ý‰v[×Gô<ÚÞʾ[3‘×ráJÜ‘Û]åK£;Mýæö3}wž{®uÎÆ¦= ¢ÞêQÿËùñ§†®¿·úTLÆÎï«›rßP»ö6ó§+ÖO¯éûx”‡Ò©·™=_‡u_¾54÷·ÓµÇNöŒ vÔ%÷N—OÞëüƒ‡ü#_u\œØzéPI}¿¾îäù©{ïèÔ®|Š—mHÏî.,¶ºÜ8ÞqbòÆsÌ®¬ïxx¦s,«úúÈ©±E£æ¾©–Úâ>nû*ø‹â9œ‡¿«Jñd¢~Ù`C×›]j±P +5h-\w,^5 ý?xÄB:,„$ðþ‰Ãn‚ÉO +mTDúÈÿ "Ò™·s¼ëZâ É]}D2¾…~à"ŒÞõ–­± ~ñiÄfIÆ3î±¥5 ǰ5èrH_˜Ƥ¤”̤Ô̤űƤÌdc¦ÑˆÝnB|Ïì–yóv“¾µt•)aSúã'fùð1þøQ¯’r 2_nJ2žÿ`5aždendstream +endobj +882 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 20 +>> +/Width 20 +/Height 20 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 886 0 R +>> +stream +H‰´“1n„0E±D)( E‰)RÚíJœ%{„˜#ì9öÛB™‚–Ž +J @"_xåXIäX‰2Õ`ü<Æþû¾[¿ýÏì¶mëº.Ë‚D³Ù¶m×uÇA"Ùyž‡aèû~š& ëû~Eazž'ÙqÛ¶¥”êE–eÉ˲,É¢hÓ4EQÔu­a«ªz:¥ÿ‰…61d…uBî]Z ž%„`c¢Ðë‚bB çÜL³Ôy¬+Ø£4S›Ÿ†³’ó‘‡PÆÐÀãõšç9X¼.ó;ìÃå’$IÇÀMXªÜ—˜;šÇëRߤÔù98ÿºhDaõ^€Åðëå|þV³Þƒ8¹ëº·Ó ùóí–¦)¼ g¥© +ùWêCªB®zÿ]€fS8ö endstream +endobj +883 0 obj +<< +/Length 887 0 R +>> +stream +endstream +endobj +884 0 obj +34 +endobj +885 0 obj +1461 +endobj +886 0 obj +302 +endobj +887 0 obj +0 +endobj +877 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [284.888 445.458 348.206 456.306] +/Subtype /Link +/A << /S /GoTo /D (ttbxtoolwindow.effectivecolor) >> +>> endobj +878 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 394.593 199.299 402.121] +/Subtype /Link +/A << /S /GoTo /D (ttbxtoolwindow.effectivecolor) >> +>> endobj +879 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 264.278 187.316 272.397] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomitem) >> +>> endobj +875 0 obj << +/D [873 0 R /XYZ 109.858 727.97 null] +>> endobj +876 0 obj << +/D [873 0 R /XYZ 109.858 616.821 null] +>> endobj +870 0 obj << +/D [873 0 R /XYZ 109.858 550.999 null] +>> endobj +729 0 obj << +/D [873 0 R /XYZ 109.858 395.59 null] +>> endobj +122 0 obj << +/D [873 0 R /XYZ 109.858 384.866 null] +>> endobj +872 0 obj << +/Font << /F29 416 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F28 380 0 R /F19 516 0 R /F55 716 0 R /F34 719 0 R /F50 672 0 R >> +/XObject << /Im15 871 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +890 0 obj << +/Length 1841 +/Filter /FlateDecode +>> +stream +xÚµXÛnÛF}×Wð­$Pn¹7^Ü'Ûqn@Ò6aƒI€ÒÔJbK‰*IÙÈßwf/%JŽüP±–ÜÙÙÙ™3sfI½þQFIeê%,!Yâ•ëYä-aæÕŒZ‰S’¦0Ä9’è·-ˆØá‡½dä…Œdi†’ÿξ|‹¼9h{ «D–z0Ž™·ž ™–¤ö¹ž}œý1h1s‰7¨šä$.0)LðX)üç»Ég¿¼d™§Ÿó…g%¬@>ÿâP‹€ _µjSªà[þvv—irþ:M»*„$ΘÔk?ªÞáÊæ Æf‹Qi¶ó­Í#Ö8ñ€ºtÐÀ`³Ì×>Ö«¦³ó“ 0QGVéhçâkD¹ÆciRrÈ¿‘ .1:}-¢Ô§Ðc™dHÌSSj›]_m n<; åˆEa×ó ñçùJ­Õû¦¯¾F+ WxN¡A¤1I >¡a$| Nd„†RÍw­š APFGÖìS6dtðÈÿíþoUö&po@€ž@‹Ñ<K®Ïb¿r(¥‹uÍëÌÛV-«®Wí7&ýÇ +¢GÚ8WlœT”®PhẶªœ`©ÿ"@[€7ùÍ»ãH +L!<ƒ“i›ÁívæíºpL›ƒÀæíÆ'ò¼ú32+Í$2®§Ìy؈vNDâZÈë€ÂΦŽ§B-%áI|A¨­È™ò}#t¹ÙA´oúcàŸŒî9> endobj +894 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 436.928 245.154 444.455] +/Subtype /Link +/A << /S /GoTo /D (removethemenotification) >> +>> endobj +897 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [381.562 273.324 483.181 284.173] +/Subtype /Link +/A << /S /GoTo /D (addthemenotification) >> +>> endobj +891 0 obj << +/D [889 0 R /XYZ 109.858 727.97 null] +>> endobj +892 0 obj << +/D [889 0 R /XYZ 109.858 616.972 null] +>> endobj +126 0 obj << +/D [889 0 R /XYZ 109.858 552.381 null] +>> endobj +730 0 obj << +/D [889 0 R /XYZ 109.858 521.735 null] +>> endobj +893 0 obj << +/D [889 0 R /XYZ 109.858 521.735 null] +>> endobj +731 0 obj << +/D [889 0 R /XYZ 109.858 437.924 null] +>> endobj +895 0 obj << +/D [889 0 R /XYZ 109.858 429.345 null] +>> endobj +732 0 obj << +/D [889 0 R /XYZ 109.858 345.136 null] +>> endobj +896 0 obj << +/D [889 0 R /XYZ 109.858 336.557 null] +>> endobj +575 0 obj << +/D [889 0 R /XYZ 109.858 274.321 null] +>> endobj +898 0 obj << +/D [889 0 R /XYZ 109.858 265.742 null] +>> endobj +576 0 obj << +/D [889 0 R /XYZ 109.858 207.38 null] +>> endobj +899 0 obj << +/D [889 0 R /XYZ 109.858 198.801 null] +>> endobj +888 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F8 369 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F55 716 0 R /F34 719 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +902 0 obj << +/Length 2064 +/Filter /FlateDecode +>> +stream +xÚµYÛŽÛ6}߯ð£Ô¬xÓ¥EriŠ)fÝ¢@Û­­Ýb[®$'Ùöç;ËDY¢´€Ù¥¨!çðÌr¨¥«þÑ2’Êt•°„dÉj{¸‰Vðæ‡j,Öœ’4…&¾#‰ê­ÁÄ4ß÷–ÑjÍH–fhù÷ÍE«ÌöŒYºúíˆ0‘­7Bf„%©yÞßÜÞüÒÍ¢ß%«nª kñ Hë—•Âïn}/77_¿aÙJ=oîWÆÂlvï‹û‰ ¨‹ã¶ÿÚütóý¦›‘F`Ç“9¬ɌS¤=‘Âõú'cq¸f, ~=–­nm^þNNyƒÔð”dqŒãÍgüáPxRò„0)çPZ“ÊtEá"vȉ³ˆHJ•³M(ÒàéT(T+-Ž5LÁ"¡ßèÛâ° cÔù±9åHd˜O#.iLRÎV±$ÍÁ“jl׎±Â+è€U³5¡, +êFA‡é XNÒà;ýëÏHFeû"äQpn«PDÁWúEÙ~ÌïB¾/B*ûî×ecûa0ýVÇ)]e&Ž€ # P“ +Êí Å6\Ó  )x¤x\s.‚üdÞæÀÈNuV÷ø›ßUû»¼Ö=8¼-p¢ƒ•‡·H¥­È¸á@Å¢¼mó¶ðAB¬#FŸÇØkbhö×@ŸqI}Û¼†¼òóó¾5·;ðì²ß6oB ÆûæYܿдݕG .¯Ÿô#@âóƒ¦ûSÙ>b‹¹î€GˆT½Ó ÒØ‰a<z‹UÖ£7µ\Ç•L’Ljh¿6&Ú;a˜BWÙX#æÇ¢.Ûb§{>†2†¥Ÿ‹1uçáÄÎ&Ìâ ÆÉ‹ç@º-ÚI¾¬_5f¨Òo6aÊü˜,EoÆïË zƒˆò=¼Pq+&²d-a÷ŠÀç$æ©rônoy]Bb'×ã]N§Ô«s ;H»y,ÞŒâ#”=/¡z[_>‹KçßÀj…PÛœz^J„WÕ1„“¥Í£sÃ_]Ü›“o@g¾mË8Òôƒ¿áX؉ºÄ’**Ɇ<Á4øÜëïð´Íž±‡ÝðÀ5ëgœ$QòŒ3ß8ÔeÇUµˆ[úŒOykÀXÔH®ÁFÀAÄ#AÒDÚ É‚uoïQµôp-cØk§=* + t˜LÿNÛ~|P’¿ÛkÚeÌ‚Sm; l^Ùب¹tàjÈ݉núá[#‰º2Ù‚ŸñˆQͨó zô)UÕ­î4‹QY.³AÖºÚÀŸ ц`$I¦ë…_0wK³2%µÚº· УÓ籌úbÈN§Ïš-."W9ßê×7>I1‘’(MçÃë©ðJÚ{¦LšÄÝDªŽ‹h2rÈ ÜKùœCå.³%-_éÿ‰–xÿèÊœrA’XN t¸±F.B8È_¼@²Ê‡ãÁ2 JÈ‚VËR‰ +;÷—ëa ¬d–@k3 öhfxÿâŽÆÕ‰-Œ83-NÕÂÜbÏ£~<Õ‚ýXîT%%Ìž?^“6?äõ +ûhŒïÕ!+LAe:õü%γCéùäÇbA>½‘_>ÆfQ>~‡×Èçá”|„Ž|^žÛ¶ó·….7³ü›yï¼cC~†ê8›GÝqP Ñ!tdã M [ž5ñ‡NY,Îçêš° ±M­ÃÖ… (yõX(}P]6?ò;¢DâÜK‘µ˜BÑÚÃøWí…›e¬bîàpIƒIõluLñx‚Ö\4#8…e¼ÏÞÈQc³S¿Ãk¢z‰p*®ÂAdÍÓàg|{8lxÇf¼ƒCÌfY3&³”ÄP˜ £Ü¨Âê.;±Ÿuy¾Óoï0ÔOfh…Uƒ–Ê… +†»7”<{œöü¢ßì9ìõI+JûðÖ–4M § ›cäµYÏŒÃ+Ä3B8!á@<禭°¡ã98ÞÓ£$J²y¦ ò;hÀ–ÎEšpÂãù²ÊÚ,²ÙÏõ²y‰pŠMá˜Ígmµœi ú×°¶6³‡˜ÙL<ö%N—Dº®>榪ÂwæR rHåm霩6ƒÕ:7f¡Ø¶Ë|©J±ÏÞ,“)lI½‘_ÆfQ~‡×èâá”.„c]¼ÍõAç)®1}x6K—µ™ƒoDéLW>¡¾ˆ*ôâ² ðÕTp"n]½_ÚdQ^o×hàÞ”zx +P¬‡>"©˜#ÈXÌ`”«/-€/¼¼-ÇKé‚ 7<Éê2ÇÈnc³o¿Ãk~‰p*âÂqÈßa3(n·P¿(~ëQø#”Îsfmf1œe@Ã{S³ÕE¢*›ŽϾ3QЖ̖ +¥ÞÈMc³M¿Ãk¢y‰p*šÂq4ßcRìTRL_‚™€id2˘µ™ÅÃDBR– ð|á|6‹«¼Õ  u– oa'ïm¼b0&KZð{»B +—ð&”àÀs¾}¼®Ô1g +<™à'Ù¢ûž;®ŸE&æ³&sƒ==06}¢wx¡‰ 7òUoª#ÏÕß»@µþ`ŠüÓ}aÆ÷»©ÅšKÖÌwB+‚?Ý/~½W'ÆdI'~oWèäÞ„NxŽNÞÚ{¸·,Jñ¼³$“Yi «tq/Q '7õ™¼Ãd¾µÌþ,¨º¨šµ'´’«¿pL‘­¾ $Ã?ŸüÒ0ûendstream +endobj +901 0 obj << +/Type /Page +/Contents 902 0 R +/Resources 900 0 R +/MediaBox [0 0 612 792] +/Parent 823 0 R +/Annots [ 907 0 R 908 0 R 909 0 R 910 0 R 911 0 R 912 0 R 913 0 R 914 0 R 915 0 R 916 0 R 917 0 R 918 0 R ] +>> endobj +907 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 245.348 226.893 255.311] +/Subtype /Link +/A << /S /GoTo /D (ttbxalignmentpanel) >> +>> endobj +908 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 230.404 191.05 240.367] +/Subtype /Link +/A << /S /GoTo /D (ttbxbutton) >> +>> endobj +909 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 217.204 202.573 225.423] +/Subtype /Link +/A << /S /GoTo /D (ttbxcheckbox) >> +>> endobj +910 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 200.516 225.316 210.479] +/Subtype /Link +/A << /S /GoTo /D (ttbxcontrolmargins) >> +>> endobj +911 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 187.316 222.076 195.435] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustombutton) >> +>> endobj +912 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 170.628 233.854 180.591] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomcheckbox) >> +>> endobj +913 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 155.684 215.935 165.647] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomlabel) >> +>> endobj +914 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 140.74 211.836 150.703] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomlink) >> +>> endobj +915 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 125.797 243.115 135.759] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustompagescroller) >> +>> endobj +916 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 110.853 245.753 120.815] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomradiobutton) >> +>> endobj +917 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 95.909 221.391 105.871] +/Subtype /Link +/A << /S /GoTo /D (ttbxdockablepanel) >> +>> endobj +918 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 80.965 184.91 90.927] +/Subtype /Link +/A << /S /GoTo /D (ttbxlabel) >> +>> endobj +903 0 obj << +/D [901 0 R /XYZ 109.858 727.97 null] +>> endobj +130 0 obj << +/D [901 0 R /XYZ 109.858 703.064 null] +>> endobj +733 0 obj << +/D [901 0 R /XYZ 109.858 680.841 null] +>> endobj +904 0 obj << +/D [901 0 R /XYZ 109.858 680.841 null] +>> endobj +734 0 obj << +/D [901 0 R /XYZ 109.858 624.037 null] +>> endobj +905 0 obj << +/D [901 0 R /XYZ 109.858 615.458 null] +>> endobj +134 0 obj << +/D [901 0 R /XYZ 109.858 457.76 null] +>> endobj +735 0 obj << +/D [901 0 R /XYZ 109.858 427.114 null] +>> endobj +906 0 obj << +/D [901 0 R /XYZ 109.858 427.114 null] +>> endobj +680 0 obj << +/D [901 0 R /XYZ 109.858 372.195 null] +>> endobj +138 0 obj << +/D [901 0 R /XYZ 109.858 357.182 null] +>> endobj +900 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F41 556 0 R /F8 369 0 R /F20 385 0 R /F50 672 0 R /F51 675 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +935 0 obj << +/Length 1950 +/Filter /FlateDecode +>> +stream +xÚ¥YK“Ó8¾çWø¶öÁÂ’,[fO ³ÏZŠÉVQÅrð$ž‰Á‰ƒãÀ²üùíÖÑíØ¦(ˆlµ[_÷×Ýj êEð‡z4ʈÒKYJ²Ô[m‘÷3¿-¨‘9%RÂçHªÞ6 b†¯O’‘2’É %?.Þ¾‹¼5hû¾Š3é}†qDXœyÛE,2ÂRiž«ÅíâU§EÏ¥^§jÈJ|¤0E³$üvö]-O~e™§ž—÷ž‘0Ëõ[ÿuq°Ø/šb·*‚wË?¿,;49žÎ9ÌŠÌ,ŠnOEì®úcI2&ý¿we«GË«7×nÎü|WT‡€RŸìóbRê$É’õÅ4#œÅ°>ªbéµà)aBÌ¡ŽaŠÃ\Èc"“lÂ2-a’qB#Ú™&è e‚Ð4ñ¬Œ2.¢#L”$÷]Ãcˆfyæžþ›j®O.ßЧ‰8ƒ0r!ár„Ô¿zPÿ/•0Ø}aNÁTÌa­Ì<É «Ò„¯øžùÏð‡û›ºae€¨w«z°Ìo›ºÇ¥¦&I%¡"½@ßIhš>#s‘¾éCßá9ú„}/Žz®¼®!‰¤¿ +àŸ‘,Š —óî²2³`${Ü÷VŸÇÃ`d~±B"óJÏ­kõr…lnïëFÖnœ‰ŸßUði¡g÷ºL±ŸpÂ(¿ÀþIhš}#s‘ýéÃþá9ö„û7HwþPÜ®0I¨_͈{JI”Íb­Ì,FcBP¾jšžiž…Êâ‡oÏâXv±Ÿ„¦y42yœ^ð1<žãÑA8âbýå]ŠÔ_¬ÚsDòhÞ[Vf ÉÓ¬‡¥OäªÞ¨-0§sè ­ÍX“ºÌeö §°Õzx§ÒÚ¤q±EÁ;]Öëb­_«0AËÛú\¡?@1(ôÔ…JÀ9tâB„¦#ÈÈ\Œ éAC„ç"ÈAèDÐë|î¬¯Ž­ba7NRÎf]eef0šÅ= ýM 1XL$P«ƒ êF‡¬75‹IN©„ ‰^àô$4Í©‘¹Èéô‚átˆð§B‡Óe …_ü‹Ïè—8˜©°7ó˜ÎúÍÊÌ¢bÎ0”õPýH}¨-VÄ´·¦L|.Ûùòù¾-uÔ"½p`¡ÑÏLˆµX¾ ª½.-?Š!¥³ÑãMF•¹=3 >"zFÏD‹Ð­Å¡üOïÄ·-ôã‚,›u”¡`ÒÃ=$Nœ#¥prNtOø¼Ês¨ƒSݳª|Øm‹]{ƒ'M,äúL'= 7ᨎ݂⊌´”`¬qŒ°+` ¶êýçM©šÝ~Ü7ªâ°Ôÿ„íðÃsXM5#¸<êÑ–žÙæøÉC¹3’÷¨ ÑÚJªjuиAÕºÑ})j¸\ Ñ•2œ&è&ï£wº(ˆôÁàÅ“?¶ {]/^-¼W½3¼T>?)ûÜFpœ4ì÷è¯ßË¢A“€Ì8ø¢ýì ^[Dð)6ÏÑž#$/&ôóùº É(Ds’(–“÷ê–#ò¶f„ÁO·¡æ‘d"ûž¼°™ A"9ÑkYç™赨LHQÏYf”àDr²á‡½a=Æ1´Ø|Þ(Øui:Ú*žaßYvŠQŒôÎVs‰âÆF‚Léº. {/»ÜKΨ¡€Uö r…«¼éÖ-L†êdTKöòRúŸÊµgsS‹ +½Ã©‡ú^ÿBvBj¬já}¾~¨ˆ5XZp/B= V‘Î`DYaÛÉY¯¢(tÕ¨}ǘ‰EëBör§!3؈Q!“€dsz·ÇDÉ•B,8øêóÆZÙœäÔ^u ¨E£áǺ«Uyã(Í›¶\+5ª¾h£ö(íÎÈ(^š…U9krDü Öï—<Ô`MèûD½éûØR*[K½+G¨ëf;ÖfŽ6ÔDP´¸ààÃø{2Û|:Ÿª$pâp¨Ý Ä43׆ß*GêêÜ¡² ú æ¸UR"sxe°åÑëȼܹq@Î$ ”N¢ˆ«Kg›X7ª‚×{À è·eqºµî×¹ z¸®ü/T®9ÀÜ0†P†ª¦ªš¡ìþxW•‡Mî¯Ç%Z{èÿ™„½œ÷ÊÞ¸‰2²¡#¬7*Ö»øÅ¢eE€&`‘1­Ù£ )µ_A[#bfnwmO±QŒU7»9ÍÄÏãje¾w›ÇëZ·x7¨?ØOl +=Ö½D‰yµ¾TZšbe{ò|÷ N¨ê-¾T)Û–ŸsúuJ—-ønŸw`ð‹Ÿ "<"§~}ÄɵJèR6ñƒ—ÚÆKQ¯PÝ¡B)ÇJRj-AÙy6 f½:n›!Rh–x v ,M¿'qÍ—¡ó©Šgí¡vÓ#*ËÐrÌâ°ðÈn ´¾\x¡»ï屈HNqaÙÈŒžëbÕЉÔA‹'ë3›c¯snçºï +¶éQïpçjõIx°™ÎvØWFª¤}Ý…|c_™ŽúJ.U›' JØù›/ó_"‘;ù?±/”endstream +endobj +934 0 obj << +/Type /Page +/Contents 935 0 R +/Resources 933 0 R +/MediaBox [0 0 612 792] +/Parent 948 0 R +/Annots [ 937 0 R 938 0 R 939 0 R 940 0 R 941 0 R 942 0 R 943 0 R 944 0 R 945 0 R 947 0 R ] +>> endobj +931 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxalignmentpanel.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 949 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 21.00000000 21.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201224-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 950 0 R +/XObject << +/Im0 951 0 R +>> +/StandardImageFileData 952 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 951 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 953 0 R +>> +stream +q q 21 0 0 21 0 0 cm /Im0 Do Q Q endstream +endobj +949 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201224-05'00') +/ModDate (D:20030406201224-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +950 0 obj +<< +/Filter /FlateDecode +/Size 2736 +/Length 954 0 R +>> +stream +H‰¼VyPW›Í p(Z«ˆö†¢Ø6rUåˆ"ULÈ`’,&Î8ˆçýÑVëÏ2=¬Z-Ž¢‚b[e9Šg‹‚RQ9j·o_6!QœöN¿Ì{ï»÷÷}Éû63£“¸€!ðÍ„6¼‡µe=+ü°'cã"›d$B±ÞÅuC"®‰Hç,ãOìb‹Ã¬Q®¬€¤ +WF¶êQd?âÀ;99Тƒ;Ÿ²jöîÜe×ÈѾî6M8Ú§hPο_=*á÷óoC5 í½‡uræXk›hïšUÏpø2;z+M`—7ÈY€‚5XT@ò€€p§`}*xPì=u$l”œ¯t°‘LjÞ`Ö1©9 <5i6hLÉêüì{J6b+',ðÓ‘­-Í|"‡r”£)RÏÊFŠ6—rù&]^6aRêæ›˜üNÏá!d<á !q®CnÖHš œT|Ò˜§Í3³JâØT&(é ì¦2Sd@~®‚Ø?V›>ƒ"nÛ!¼Aк ˆqôL)P€“åzú¸ŠÔûwî4ë½-Õ‹[`ĵȶÁ–áºÖÌñßÒ ®DûÍÐâR]k÷Ãß:NF —4u lë.¬Hƒy–pñãBÑD¬µþæÛbîºâ«î‡n4dž|&RôÖ—.›";úkTûÅlj ðÓG:ÇtÜëTuœËý²yE¥äµáÇg]6/?´¼Ô¢P–— )´Ã¥¹7jVõ.)ÉXÙ®$â*ND> +/Width 28 +/Height 28 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 955 0 R +>> +stream +H‰Ô–IjA†çÙàF7Š#Qw.0ññ21w\ç ‚‚«€®DÐ ˆ.DÄQÁ!ùé˜Ø)]ä-Ú¢}õÕÿ¿ze¹Ûí¨sÇî2Ìõz½X,æó9¿æˆD"£ÑÈ1g³Y:þ£¶D"¡×ë ƒZ­³ßïg³Ùh4 +XîTÚx<®×똮T*­V+°`v»Ý\.‰DF£Y­V*•Šœ‰ü|>é +…Âétî3±N§Ûl6R©ôØt¹\޲¼\.—4McºD"ù–éóùV­VÃá0É®Á, +ǘ(ïh4‚Bï~¿¿R©`P*•x˜Á`°V«¡ª¨Ð-ÍfSH˜FuƒZì#ò¹¦=h 8²Ûí$:{½žÅbNØÇ·<ƃšœÐ;t2[­é¼LBÿÎûçò®Õj‘, +AæaN&Â^‚Nä‹Åx> +stream +endstream +endobj +953 0 obj +34 +endobj +954 0 obj +1577 +endobj +955 0 obj +555 +endobj +956 0 obj +0 +endobj +932 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxbutton.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 957 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 28.00000000 28.00000000] +/Resources << +/ColorSpace << +/Cs8 958 0 R +>>/XObject << +/Im1 959 0 R +>>/ProcSet [ /PDF /ImageC /ImageI ] +/ExtGState << +/GS1 960 0 R +>>>> +/Length 46 +/Filter /FlateDecode +>> +stream +H‰Òw6TH/æ*ä22׳  Då%çré{æ*¸äsr!9 +ú +endstream +endobj +957 0 obj +<< +/ModDate (D:20040529160855-04'00') +/CreationDate (D:20040529160320-04'00') +/Title (c_ttbxbutton.eps) +/Creator (Adobe Photoshop Version 8.0x118) +/Producer (Acrobat Distiller 6.0.1 \(Windows\)) +>> +endobj +958 0 obj +[/Indexed/DeviceRGB 33 961 0 R] +endobj +959 0 obj +<< +/Length 188 +/Filter /FlateDecode +/Width 28 +/Height 28 +/BitsPerComponent 8 +/ColorSpace 958 0 R +/Type /XObject +/Subtype /Image +/Metadata 962 0 R +>> +stream +H‰ÔÒÛ‚ Ðä&Þ¢8Yùÿ?™\šR¨÷¶ãÓšíÈ9“ +aB7!U‘X… ÕM©ò†s«e˱7’LÊõ]Ÿ`]O¼ÑhI’ Šf&›ïö«W¶í¿ìls†dD6Ù\^gÀ\fúf&TÛ Ÿ9h/8ÎZð^½3]oî“«ØíHÐåëd¬csÖÀ8 Q 0?Šß¬Ð¢­ÕKºYÓ¹R+6ó­§pã +endstream +endobj +960 0 obj +<< +/Type /ExtGState +/SA false +/OP false +/SM 0.02 +/op false +/OPM 1 +/UCR2 /Default +/BG2 /Default +>> +endobj +961 0 obj +<< +/Length 108 +/Filter /FlateDecode +>> +stream +H‰Á¡…ÐïÑ…ÿh¢b¢èÎÁf²b‚™QlæžóÞ»÷žsÖZcŒÞûÞ!”s®µÆðï½”’1B „|ßÇ91Î91Ƥ”œsÖZ­µÂSJ¡”*¥ZkÍ-Jê +endstream +endobj +962 0 obj +<< +/Length 6106 +/Type /Metadata +/Subtype /XML +>> +stream + + + + + + 1 + 28 + 28 + + + + + + + + + + + 1 + 72/1 + 72/1 + 2 + + + + 2004-05-29T16:02:42-05:00 + 2004-05-29T16:02:42-05:00 + 2004-05-29T16:02:42-05:00 + Adobe Photoshop CS Windows + + + + adobe:docid:photoshop:17e9d8fa-b1ab-11d8-8c90-a1142b67d8de + + + + image/epsf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +endstream +endobj +937 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 692.105 180.811 700.324] +/Subtype /Link +/A << /S /GoTo /D (ttbxlink) >> +>> endobj +938 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 675.417 205.384 685.38] +/Subtype /Link +/A << /S /GoTo /D (ttbxmultidock) >> +>> endobj +939 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 660.473 212.089 670.436] +/Subtype /Link +/A << /S /GoTo /D (ttbxpagescroller) >> +>> endobj +940 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 645.529 212.304 655.492] +/Subtype /Link +/A << /S /GoTo /D (ttbxpanelobject) >> +>> endobj +941 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 632.329 214.728 640.548] +/Subtype /Link +/A << /S /GoTo /D (ttbxradiobutton) >> +>> endobj +942 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 615.641 208.337 625.604] +/Subtype /Link +/A << /S /GoTo /D (ttbxtextobject) >> +>> endobj +943 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 582.765 217.987 592.628] +/Subtype /Link +/A << /S /GoTo /D (ttbxresizingstage) >> +>> endobj +944 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 452.349 187.397 462.312] +/Subtype /Link +/A << /S /GoTo /D (ttbxpanelobject) >> +>> endobj +945 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.02 351 210.536 361.849] +/Subtype /Link +/A << /S /GoTo /D (ttbxpagescroller) >> +>> endobj +947 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 242.431 251.652 251.508] +/Subtype /Link +/A << /S /GoTo /D (ttbxcontrolmargins) >> +>> endobj +936 0 obj << +/D [934 0 R /XYZ 109.858 727.97 null] +>> endobj +919 0 obj << +/D [934 0 R /XYZ 109.858 579.776 null] +>> endobj +142 0 obj << +/D [934 0 R /XYZ 109.858 573.037 null] +>> endobj +946 0 obj << +/D [934 0 R /XYZ 109.858 313.844 null] +>> endobj +920 0 obj << +/D [934 0 R /XYZ 109.858 243.427 null] +>> endobj +146 0 obj << +/D [934 0 R /XYZ 109.858 232.704 null] +>> endobj +933 0 obj << +/Font << /F29 416 0 R /F51 675 0 R /F50 672 0 R /F28 380 0 R /F8 369 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F55 716 0 R /F34 719 0 R >> +/XObject << /Im16 931 0 R /Im17 932 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +973 0 obj << +/Length 1645 +/Filter /FlateDecode +>> +stream +xÚÍXYoÛF~ׯàã7܃äò±Rz8@›K ¤y )ÚV,‰ +IÇv~}gfw)’²…M› p´ÇìßÌÎÎP1üˆsnd2ãy”ÛY\Áί3á("%¸10Ä=žÑj$nøö@‘ä¹É‘òÓìý‡8X·—pJç&¸ƒq̥΃íL'9—™qóÍìÝìMÏÅîeAÏêH!Oñ*Ešeà··o¾œ=ÿEæÍ——£pËÕ{ö¶º ¥fUSíÊ*ü°|9ûyÙs1Щì`žä„P„=KôPê_R¦a$¥aîÖ-çç/n^‡J²bWmÚPÆ÷E‹:;Ãó4E~Zä\I ò‘•4S­•q™$§´ö$GZ›@h®têõÆpIó˜'B´ßÖUS4¡HXfìVÃ$>hˆÁsK:³\„‘`·mWoCÁõ.k»¦†Éæq°ÍH¤‰ÌÄ“ÑE±[7Ò?b[Qê(ôÏ\\ö/³!t˜¾¹ÔÚ¥:ãY.{t†&öà82t‰†ÎÏÁ°×h#úñÕE%ûX•Ý‘­&å:Á@Ì‘£Ò”£&¾#2á&Ó§Ñp44–¡IXuó¦¯pp +ɵÒÁ@à1.’§Bý ÀÄ +ަ§q4#`dÎt-æ·K7c +Ežr‘©` âŠ,å*‘ß +û¢$‡Œ<È ™”€›be¦¾[œ!“t‚I!ãpšN¼¨Ú²Yﻵ§5uPF7XIÊ+'`ŽÎH3ÅÖ0ÙâÆ“IEÃÊæ—ÖRö÷oÛk;¹ÀIç˜HVöi<Œ´LØYg7[Ê]°¾ßã«Ϲ,¬öDv×(b¿ÞÁÿWÏ`"~[4W´Ðº…b·²äu©“UÈ»Aóg±àÄ,.k²f‹”RìÒ(:T§©Z\׬¾´û(Ž[ í KÙG®ì܉'‚8Y»µfgN\±‚½â‹F>³‹à…ó¹ÄˆËí-ÙŽ6>¸å$¹ÌÝzid5XœÒó‰ÿQw@"ScÉ‹n0qô’›@­ ä¦¶¾qxb’M,Aï]<´i=ÏÊFÈa' \q™¹wuáÅL£Sb¶Î¢/ÓŒgŒ­¢ A››+y‹°¢ˆYAòs†àZ à\XåW–B~”tšÁœI¬y¢õ?ÈRþd48JWz`Ñ”ûð½Æ,å2Á"r[¤’Œ§“x}4“CO• 4¤“ä‰ÏÓD¢©‚S>(ã56^µ$š²ÏèüúÖ•…£n)T*;!ßáàÂ9¯pS##¼¯¸S£7vrw]9H ‰zlé×9ÈŸƒT×g'¼5e/ŸTwuwȪP©ÂÖçõêÀÑò)vVCJªd-œ(‘øš¶À9WmÚ4ü‘Òu_@ÑnÖŦh[×€¾‹ëªÄšûf^c×r”œ€–êp€'©…ø§^/(Ø+á/zÑPá{O„žÛá§çpYÐ>H}Š{­© >‡Ž0¶ÅÇdáùÙV˜àE …FðfÔ¬!¯hÀìéDa=â ù¿Z• +¸tæûÖ–*î"?YˆyšÑ‚ ÄüÈ-ˆ’†«XœFÃÑ|“d ð‡nAT M€Q§q4· ”Y`vC5裡HüÖMù@Ú*ÆðoJߌÈ<áZžn<%¼Ú%¼‘qO˜õ_ô&xß>ÃÎ}ZÕBSæ×ë÷‹¥e×—«»¢Ãªï3ž¨"¥­-±½p¹íèaYÍÊr¶¯MŸÕ‘~œÕ-‘Ëêý“ /`j {GÝIéj!> endobj +970 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxcheckbox.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 984 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 21.00000000 21.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201227-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 985 0 R +/XObject << +/Im0 986 0 R +>> +/StandardImageFileData 987 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 986 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 988 0 R +>> +stream +q q 21 0 0 21 0 0 cm /Im0 Do Q Q endstream +endobj +984 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201227-05'00') +/ModDate (D:20030406201227-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +985 0 obj +<< +/Filter /FlateDecode +/Size 2632 +/Length 989 0 R +>> +stream +H‰¼V}PTU¿wß~²…eAÉË’–Dù#D@]Q>ŒQ‹aw»èºoÝ}kj)¢¤Óèd˜fYN"šM–âGÙ(‰ +6Q¨d*Z*”Ž~Dêë¾ûÞ~)ŽýÑtwî½çwιçýîyïž»ã2rõâXÀµ`ðP‡lÄ5ÁVro€è'ÌœM‡m*eü*q †bÔ‡c<Ô}+Üë ¿*@âùp˜×ã•·°œ^,+C+¥Â*^Sóá&F‡Ç™htk’ñ8Æ«Á1ïbÙ;h#®ræÿÞ†÷,÷äíSô2ßÛpOÖxÉIÄt{¾E ]Œ 0èg ‘lç"D# Ç­æ²k¢ÊJ]V†s_@9˜AÜg¸ÕþîJƒ9“¶ÒŸäªùÙGc*mãfCÛó\Œ“òM\€%ò-i ”ÐGôJôŠ-»ãÓ¥Æ"jQ(FÜ‹ãkÉA¢JHŒû¬ D)´Ho²gØ xÒÄ܉РªQ9èô_dº‰6P%™z b¯FÀ´Œ‹Äv€*@Êår…œT(Hµ2@© "É °&L£‰P“¸ Óà *•ªÀ`•*8T¥R…rƒ*”_¢þ7Øï€Z޶EÀ RCB ÙN´u{ ¦!–ˆ›@mN,‘ÊäŠ%|؈pƒCB$IdR¹„ ‘QMˆG„$HÒ§—jbæWꤡÕ5»3ž–ĘäXÞš)‹]Wp£«×èL²uÏŠ¸ ïš²j™±ámE©›uUGOº.õMµ~Û[{7;õ[ÿö}ÇOÿ~kFÙ‚•ﺿ±ýòí”ìW̯¯Ú¸ã@ÓÏWî¨H„ØŠ1'™T’Œ)ŒH#óc4]eu(ÇàH~ëÄ‘†.Çòu™aFgRo¬”# ‹KnhC$jÃMYEcꢇÂãŒòR`Ï’ÀÏTƒ4p+åІÝíÅÚ“B®hü>¶ðþ¾¶ŠëTÚ•·ýQrsªùÞdôLê{Ó¶£%áàkáÙµ=/ÑíÏ÷j׿ 1´_6 Ü=Ýi[rààþ¥«#»Þm®o«Xñ úþèæ¤'-=ããÇ4þvöxÒžV]<»irwíöó'™¢7föm¼=³£(¯¾µÁ–õã®Ï¯š»_ ââ7Ǧ±-ýçj2÷Øé¦òU³f}t,ãxCcϸˆ»_ŸêTZ¹zíÜk_œmùò£%y»YPÕÿœ«¾¾{×Û#×÷n®øª³uWSss­|U¿_¿m€¬ë_S³fg›qØ_; ,ê_{æü¾Cy-? jëìnvxSÉl—ž¨»½w uÉSßD-^Ê‚muõV< ït¤ýuYÈÅÔw"[t“Š}V9”Üšé“ð­ÓîËŸþE,`ÁçqþÞŠø‹ê H&tÑÐ¥ ¦¡ËF! œX²#Í<¢A +ˆZàù7ƒ?è8½ŒæÊ#Áôñü/ÀH jóÈsೂºa¾¹Jâ€:¼rU9_WPÿõ¨—ϸBDO³Ð í´ K#%^ tZmbª6)U;6Z§MMÐ¥êRðaÜùç±,[Dž¸Q[¯,œM)$nR_þpˆ—?îËÕ0!Œyc»[Ž€ñüNœeendstream +endobj +986 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 28 +>> +/Width 28 +/Height 28 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 990 0 R +>> +stream +H‰ì”±jƒP†#D0àÅ€2(U0C†“­ 4/Ò 3À1y‘¬fì(8ÄQ‡ +:öo. é¥x] +=Óñrîwÿs頻ª×uTÿÌ?È,˲(Š<Ï‘Ð÷öûýÁ` :3Ë2Û¶£g±XŒÇcY–EQ¤3“$qg¿ßÓØˆ²étj†$ItfÇÇãLŠÕçóy>Ÿ[–õ| Hear‡õ™’-,L¢ª ì„IjšÀ›Ÿ5ꮘÑÏ;…0{·^7kº½KŒL×ub"Z0MÓ¤I€9›Íð<‡Ã!>ëyòð½û¾ïy:Ï|2™¼­×æ‰ëÖóäá\‚Ô(ŠÒ4¥1 !‰çù×åLépPE×uÔz~âè'Mk®€ür:©ªÚzÎÄщy¥‘€ZØËÂ$¶¿o6`~n·hìeaÛ/—ËÇj…Ï|·C4Mcùwb;ÔA†!V(=j¡—y}—¾hi’ endstream +endobj +987 0 obj +<< +/Length 991 0 R +>> +stream +endstream +endobj +988 0 obj +34 +endobj +989 0 obj +1486 +endobj +990 0 obj +379 +endobj +991 0 obj +0 +endobj +975 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 645.052 187.397 655.015] +/Subtype /Link +/A << /S /GoTo /D (ttbxpanelobject) >> +>> endobj +976 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 623.134 183.43 633.097] +/Subtype /Link +/A << /S /GoTo /D (ttbxtextobject) >> +>> endobj +977 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 602.96 197.169 611.079] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustombutton) >> +>> endobj +978 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [466.52 501.611 538.252 512.459] +/Subtype /Link +/A << /S /GoTo /D (ttbxpanelobject) >> +>> endobj +979 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 489.656 126.628 500.504] +/Subtype /Link +/A << /S /GoTo /D (ttbxpanelobject) >> +>> endobj +980 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.175 489.656 420.397 500.504] +/Subtype /Link +/A << /S /GoTo /D (ttbxtextobject.margins) >> +>> endobj +981 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 347.479 187.397 357.442] +/Subtype /Link +/A << /S /GoTo /D (ttbxpanelobject) >> +>> endobj +982 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 325.561 183.43 335.524] +/Subtype /Link +/A << /S /GoTo /D (ttbxtextobject) >> +>> endobj +983 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 305.387 208.948 313.606] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomcheckbox) >> +>> endobj +974 0 obj << +/D [972 0 R /XYZ 109.858 727.97 null] +>> endobj +921 0 obj << +/D [972 0 R /XYZ 109.858 478.697 null] +>> endobj +150 0 obj << +/D [972 0 R /XYZ 109.858 467.973 null] +>> endobj +922 0 obj << +/D [972 0 R /XYZ 109.858 210.015 null] +>> endobj +971 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F50 672 0 R /F8 369 0 R /F19 516 0 R >> +/XObject << /Im18 970 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +995 0 obj << +/Length 1365 +/Filter /FlateDecode +>> +stream +xÚÅXÛŽÛ6}÷WèQ"V¼Idú”uz Zd»Q’¾«ròÃÏLG¶_.#oá ÊÅûøÆ,&bÓ˜ÍÜ$Ë7“ŸÊ½Gš/ÎLÎLŠ´RôgýÀXž¤Œ©ø¯MÕ¹Vyuûúï넳x¶1«6¡4&ÛY‹˜¬;Etž£?A5áLÀüèŠé!jÉ Â¤<‡:˜ŒP«ˆ +ÂEÞ#+ב”Úɦ«YÛz¸€wZoº&¡2®WÌD|_mDwè >[|,â]kðÅ{,¾KÃמ—zmœÝ¼Þà»®©aìÊ^Ö³­àiu¿Ygåžnwð´ÙBdE\;Pø>#á¹¶I"4·qüZ™ff)˜'Eü€¯n Ì+†É‚͉å5Îl;O夀&ÅàÒÐJ]1å™ …f'ÓÎ&Y­}K@bÑAÒ¥ÁWÚsf—¿9 ©9QÜE[–ðêNk´ÁµGöKÌÄ®À“óðÚ´ó¦ÚvŒÊ$z%ÐËô‚ÈpÆ[$lÖ&ózsrƒE+âÊ~«xæº{aa……ßËÚ.³ë,ÌÏPes¿êðI’T0ÿ¶ñ¾j«HãzÖÎCAoõª}o”¶ÝçÁ80 ÔZ þçve=ÔYã_ï³poºÚc32*6VÀR䉡”hHZ$Æ&ÆÂk8hÜÂY;Ew¦ò’¿s²ÞÙ!³¦ +BóÃví›î¶+·¼Ö©Þ@æXw!¿zb%^òr_ó`Õin #¢}g)­c% ÛÚÙs±·ç WF}I{9¿È Õy$AVRK·ðÈýn;8tû[B™ö†Z©÷æz÷…ÎR„I[ÝCÁ{µ‚Òm[> r¨×YlM¡fa3ÉäÚìa%6çý ÀãÉ ¤kqGaäyÇÞG¶P9*ÕíK÷t—gñ§ ·ù¨¦q$¾ÈÏòlFàŽŠL(VBqB3fá]»ik hw•9ì¥!“\y7\Ù1Wu×A95‹C1L…†ršDø*¾ÝÝ­ªö”Í!ÏGÕ:‡¢É"!ÉiÞl|‚ð¶iÏØEÈŽŽ6>ob4 Ë||Ðèü¾#è!©€1Á|R¹Ð^ÂZ ¥­3÷8Ôûã¸û)ìšÉ>3¶4¬gPì±$„DfŽÐßͲûìñtòB N4§Ù<Øž"Ó[\À%Fu1“–wÐA±*ŸÇ›êþ¡{>]r* ?>qŸaò`|’Jor—6² ÈÌ÷£{ç¸'(³L4lŠÛçã”I¸;eTgÏø§ÁäNË„Zó‹5 +5œ#9ß&µ_yý Iî‹èð’°k¡r\í ~Ø3_äGÀZ°L<ù­Â)zŠ›Šõ ئG‡þS‡gÊá2©þÓÙÙÑ×>P•~ÊAįjJá4Ì˹3w°9:sÓØÞðrˆ[«,âOf¼§R•[Ùö¦©0ωE²ád#C¸ü<ÞfÀhΔ_ÂÝé-6Îñˆ€MoÂ1/¸¹†pÔó\±´$Bȳñ)A„ÊǬ7œOãß&üýŒ®oþv" ø?ø—ÿ—Éÿendstream +endobj +994 0 obj << +/Type /Page +/Contents 995 0 R +/Resources 993 0 R +/MediaBox [0 0 612 792] +/Parent 948 0 R +/Annots [ 997 0 R 998 0 R 1003 0 R 1004 0 R ] +>> endobj +997 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 512.049 253.116 521.126] +/Subtype /Link +/A << /S /GoTo /D (ttbxalignmentpanel) >> +>> endobj +998 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [256.298 512.049 347.173 521.126] +/Subtype /Link +/A << /S /GoTo /D (ttbxtextobject) >> +>> endobj +1003 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 125.582 187.397 135.544] +/Subtype /Link +/A << /S /GoTo /D (ttbxpanelobject) >> +>> endobj +1004 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 103.664 183.43 113.626] +/Subtype /Link +/A << /S /GoTo /D (ttbxtextobject) >> +>> endobj +996 0 obj << +/D [994 0 R /XYZ 109.858 727.97 null] +>> endobj +154 0 obj << +/D [994 0 R /XYZ 109.858 703.064 null] +>> endobj +999 0 obj << +/D [994 0 R /XYZ 109.858 474.505 null] +>> endobj +1000 0 obj << +/D [994 0 R /XYZ 109.858 420.753 null] +>> endobj +1001 0 obj << +/D [994 0 R /XYZ 109.858 357.108 null] +>> endobj +1002 0 obj << +/D [994 0 R /XYZ 109.858 293.526 null] +>> endobj +923 0 obj << +/D [994 0 R /XYZ 109.858 229.944 null] +>> endobj +158 0 obj << +/D [994 0 R /XYZ 109.858 219.221 null] +>> endobj +993 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F8 369 0 R /F50 672 0 R /F55 716 0 R /F34 719 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1007 0 obj << +/Length 1828 +/Filter /FlateDecode +>> +stream +xÚÍYmoÛ6þž_¡0qâ›$v؇%]‹X‘5.P íÙVb!¶¤Ùò²ô×ïŽ/mÙ®“µÀP4¢Ä»ã‘÷ÜÃ#MƒþÑ€&Šä22–•³ÕEÜAÏë j%bNIžCûH¦¿®AÄ6ß’I3¢r…’]|ú’s°ö´„ʃh'„ ¬.„T„e¹}_^Ü\üÙ[1}YЛ9ä$Îp)ÎpZ9<ûù]N.~~ÅT ß'·•°“ù§ð}y1–벞•Ñ—ÉÛ‹ß'½Eš€ÏN-˜91(.{&…?êgÆÒ(f,?ÔUgZ“Ë/ï¯#΢.—›ˆÒ´Å}Òær¢Òí ªgÆGS<Ù÷ZòŒ0)OyíDF^ç„‹ÔùpIUB$¥z´—åf¶®Ú®jjãX(ð‹£|œ.à‚¸ŸL.£˜†#˜ßÕvÓ5+ý¾hØu`ð–†ÕŸLÛ¾×(ÞL‰ÂëZÅÒôM‹Mi¤gØ·,6Vù¶Yï¯g)àZš*’Ð܈æf@4¼ú@rš±§ª×Ç›í¾uº—ý÷]ÊS¸Úqi”‚Væäà{vppÅ‚«ðÆ­ÛÍ‚&Dnž¾Nó”KûÖÏZ‘áP§VÃHœ8ãÓÝ /«fmñR!Œð; ct:åD©r˜%S­¸*4´!õlÞù ‘h~tؾS2lÚ†‚‘ºªrU[”V‡nòþ·euW¯Êº3’àuŸÕ±H O‘ňH˜–nבäaÓ•‘dáÌ<æ#Ž¢)É9 d.I’sÇdeecOØä=Ûa+Ìz'ba‰*4ºGã¾ ½D +f)©Ÿå Xz!ÂIDA«ÿú˘9¬z ̦˜´Ló9¡¢vhÆ4ç"œ-C¥¹ƒsà0 +VZȇîy¨ºJZAýR#Shn5‡8ïÇ,#2Éíl– ’ñ4>Ô³E9øßãŸrþâô)zfá£q´"ÏŠ#Î\ú3­{üSÎml/›fYõy1}SÏ1$³¢b +‘ÂöÂû@Mx—.|¥iL•X@T†Ý›Ç]õ7ÂÀ>±ðnÝl[ÓÔÛFa5¦° ™C®a†ÙàË Ý÷ÖæÆDÑR›be8×x[<~\—Íz^®oª¯ˆ°òh¢OG“Éqš<áchr"Ï@“7UÈ Ÿ7uWÞéh'áyš8$lp…«¯6Íí¡<Çð°})±vD÷AGxÌ1¶ð”–yÛÉ£…_=7 „dçøª1œäèIéž³¡Ç¼é—å÷'®¡Iz,<ác°p"ÏÅ0O·]xŸ,&¼!{L((¿ »Ç¶ Bs’&nß$Æ/5ωL¦›wX.0 »ÿò'ó}ºyµ,:è¥PiMû¨¼²qF<4Ë͘ ¦^Í‹`iá( W¬ ܉43•߯ÕÞ8ƒJNœÉžðQpX‘g€ãêGí9Ý¢è¤únöJˆª³Ê¸˜ðáÛhËÈì–1·±¤jðB +§¸I•wM§ƒþb4–!¹Cï)Å‚ªÕ³ÐYkþztû(´›õ½ÔåÍÒõ-ÊQñÍð4œ3Kô•ãyç§{ªûeù¾uœÈkíû±a)ÿx¢iÄ÷ht<²2§Æ†Á²±«Í8pdÁƒYåºéFa€Lg©²_íS8”¥@ ðžî$ëËuÓÎMùX_5«ióýÓ• =³`ô„¥«yFººÙJ7Û§%lz˜JY.¿® +!¤¦ÄÆt‹Õ¢ÎW|Õùª[ÅëiJh‹\Äsù¬[ÍØSa}Ϻ]‹žâ‘$†ÌÉ?J=Áíý’ä;ޱ§<áö&.v<ÙÝkì‚îilÖ¬Ð?[ܘ.[ø ïvõ69(mªU«÷Ó}a}¼fLÊ¥=^WL„LµdŸfX*,Ãñ¥¹Rúßq&Ux žÃ™žê1Ît"GƒïgâHdøÄwq$#rÊ.a׿tÇ—Ên€…®a7pôî7¹=*”$?J…èzf<ÿ¾dHab9ÏÎ#COø:‘ÿH†8_š„[Wá^G-m[×q^-£ä˜)‡\hÌSß‚R“·á¬Ò¥Žþn­ÉêÖ-ðiå°£ßô‘eaº‚(¥6« Ç’(– Nls镚-Ñ?ÍʃëþÈ…g"©zO·FëÐí¤nœQ¼‘¦ì)·“V3öTG—„{ÖýÛÉk<–ÙÕ9–SîÂÜ÷îè¥ú ?z\Q É’y—•ù´ëúë¶Žªš) ü•BS•=n²P¯x³ªØ]¶îÉðÄ:¾'ëÎúÞÅX˜kN¶õ­O:úƒÃÿ\b¯œ úR΢Œpå~ͱÿ¾!/±endstream +endobj +1006 0 obj << +/Type /Page +/Contents 1007 0 R +/Resources 1005 0 R +/MediaBox [0 0 612 792] +/Parent 948 0 R +/Annots [ 1009 0 R 1010 0 R 1016 0 R 1018 0 R 1019 0 R 1021 0 R ] +>> endobj +1009 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.466 668.021 387.235 676.932] +/Subtype /Link +/A << /S /GoTo /D (ttbxbutton) >> +>> endobj +1010 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [409.927 668.021 471.696 676.932] +/Subtype /Link +/A << /S /GoTo /D (ttbxbutton) >> +>> endobj +1016 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [276.986 281.149 331.102 291.997] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustombuttn.groupindex) >> +>> endobj +1018 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [265.176 217.452 336.796 228.3] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustombuttn.dropdownmenu) >> +>> endobj +1019 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [276.986 188.56 348.606 199.408] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustombuttn.dropdownmenu) >> +>> endobj +1021 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [454.897 124.978 538.252 135.827] +/Subtype /Link +/A << /S /GoTo /D (ttbxpopupmenu) >> +>> endobj +1008 0 obj << +/D [1006 0 R /XYZ 109.858 727.97 null] +>> endobj +1011 0 obj << +/D [1006 0 R /XYZ 109.858 616.972 null] +>> endobj +1012 0 obj << +/D [1006 0 R /XYZ 109.858 563.221 null] +>> endobj +1013 0 obj << +/D [1006 0 R /XYZ 109.858 499.639 null] +>> endobj +1014 0 obj << +/D [1006 0 R /XYZ 109.858 435.941 null] +>> endobj +1015 0 obj << +/D [1006 0 R /XYZ 109.858 362.779 null] +>> endobj +1017 0 obj << +/D [1006 0 R /XYZ 109.858 282.145 null] +>> endobj +1020 0 obj << +/D [1006 0 R /XYZ 109.858 189.556 null] +>> endobj +1022 0 obj << +/D [1006 0 R /XYZ 109.858 114.019 null] +>> endobj +1005 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F8 369 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F19 516 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1026 0 obj << +/Length 1927 +/Filter /FlateDecode +>> +stream +xÚµY[Û¶~ß_¡G ˆyÄ‹n=èC7mƒ-´gã¢hû µ¹¶Yr%¹ÿûÎpH™¶ìc¤6¢Èo†CÎÇáŒÌƒþñ€ÇË“<ÈDÆŠ,Xlîâ`#ïî¸EÌ$gyMc™éíb›dÌ+ò‘Ýýþg,AÛO ¥ŠY/<"ðü þ§Í{CøañТåv¨Z3€ÔXN«z/Û5T ¼ô¨¬‚ÆÒb|ü4wÃÐ"ü:8ÏvÆ’8§èÚÝö¡EpN>}Æéü§s —,®tú|Ñér‹ÓÇ¥‚‹?ÝàöĨù®®[ãWð‚"\ZtñÌŠúŒƒô߯ó]YS§ï# ~†f»"®Xò°3Ž›)ÅbЮ,x í®Ýè…@C±=M`˜Öv{ÏdÉÆ5ê²£¡¡¥ç;£Ò˜ã ø„ƒ©F`è7Tw:ìÐ5ÃÝB69jÁÞ,K´É’xþÁ³U£ö{lál¸ ŸçæÃ¦\ék¹yC@Â8™‚àUÜôÀ—¸é 7pó°T›óãÞëèùkoãÀƒq;)ð=‹á¥¥go:k7ºH²ŒÆPU¡6ÆX!Œoyx}[”/#pôÞð}ùï*³ý×P*“¬ˆ“ëHà/‘ÀAn%Aïœÿv×íÆô½‡ æ:ïÏ£VÁ#·X8ï, Tn,Âãdìy©ÀC¦åN=¶ŸÜ™}ÍXHoo73ø@1Î6‚vú˓԰j-Z3Bq¢mtƒ FyJ û×­a^ÛÛUX.ùQˆ.æEÛuº÷£&ŸOiîÊ‹4PJ°Ò.“‡Ê€þ2ÊE¯~>ê$gž¨!…ç¢Sí£—Ñ¸c–þtj’àW¸â|“Né0¯M~ª'?wÎ`ëKsn%TïK ºy$a»¾~ì•EòùuÇÎ_:vrñƒ¥BxÝ™ÝàŽß½ MÇcö zÓg°`*¥#8ì·z2!ÏÍÍ@žÕLÍÃoéñGœÄO8P›Lõ½~ÞЈ×;¸Yf$“p:úX­Ög„î[˜zúù™€b­ôÊÛ–Î$ÞëmÝSäît]x®)áκ¤Tèn K }žæ³Þ•âŽø$)6áó—ÛÈd“’øá"1C‹#“?³<ê­.‡ïum)ÿÕ¯)(é®Ì3<ðE®[È \÷ÖŠÜ»¹öù §å4niZ2ë æ}A$µ’3OtIO´Ób1Vu)Às–ñ#«&{OW§ÏË£ÙŸÛŽø¶i;ÝÍ3Ò®Û”†ºg¢mš0ž‰3 ü|Ñ}÷D +kS×QÄ<‹¸™x‡rû¾mk]6×e5¿µq.ÂGSRxå…£Ë/.©b‚§É†º~ƒ½™©£výz¬×8FM§æ=J¸K‡ ÂA\Ãw.·µb/c…USGgŒË‘–zYï©s¥›±Æ+Ëî%ÅÐþ!o]ÒV-0¯þx&ÇÑ.ôâžPÒ„\ÜE§ wÕAåB¹³h¬JÊî–.+7§¬þWžÂÅ–½Í%¤ +ç­7CF)= Z*[ ƒ_`{ô¸/t/€\µÙPýˆHØM§|Oò/kÝÐÀN<“Ý ¨­§n˽ÄB[渪ÆÐ£Àæô“[,Yœû¹JÊ/ˆlNr扞†–Síg"•ÚI&ÄQÁM·VN·ÖÑù‡c”B°q åçãžÅÌ<Ð$ðAM›%=8馪ëjÜgsYSŠÝ›-Ì=B'¶V€;yI‡àçæí 7Ô ™ â†å(¨pLÓK«¿Ä;˜ `/ëŠêÿÕÞ“óé}¤Cý‹²®MÙ +媬ìáǯqfß!RçE~´ïÌ}智 ,%ä~‹ù—ÐÆIÎ<щcN´Ÿ¡Í4Ýý%iXÖÓB#cœ8-4óš)BÆLIudÊeŽØ@e£úÄ~pö8P%wâ·4\¤|y¾¨1K²ôÌ=‹Ù^Z †£ØîË×­n¸‚> endobj +1030 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.9 439.091 225.536 449.939] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustombuttn.imageindex) >> +>> endobj +1033 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.573 302.463 172.706 313.311] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustombuttn.repeating) >> +>> endobj +1035 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [502.082 209.99 538.252 220.838] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustombuttn.repeatdelay) >> +>> endobj +1036 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 198.034 135.623 208.883] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustombuttn.repeatdelay) >> +>> endobj +1037 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [161.747 186.079 228.109 196.927] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustombuttn.repeatinterval) >> +>> endobj +1039 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.573 122.497 172.706 133.346] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustombuttn.repeating) >> +>> endobj +1027 0 obj << +/D [1025 0 R /XYZ 109.858 727.97 null] +>> endobj +1023 0 obj << +/D [1025 0 R /XYZ 109.858 654.974 null] +>> endobj +1028 0 obj << +/D [1025 0 R /XYZ 109.858 579.322 null] +>> endobj +1029 0 obj << +/D [1025 0 R /XYZ 109.858 515.74 null] +>> endobj +1031 0 obj << +/D [1025 0 R /XYZ 109.858 440.087 null] +>> endobj +1032 0 obj << +/D [1025 0 R /XYZ 109.858 367.041 null] +>> endobj +1034 0 obj << +/D [1025 0 R /XYZ 109.858 303.459 null] +>> endobj +1038 0 obj << +/D [1025 0 R /XYZ 109.858 187.075 null] +>> endobj +1024 0 obj << +/Font << /F29 416 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1042 0 obj << +/Length 1654 +/Filter /FlateDecode +>> +stream +xÚÅXIoÛF¾ëW= œÎÎaŠb;M‘KÒX +$90Ò8V#‰ +EÅñ¿ï{³P”h ¶ 0 gÞ¼}ù(ž1øãgµÚf¥(iUf³Õ„e_àäõ„GŠBrj-,ñŒ–~·’¸|¿§dY!he+¤ü6ùð‰esàön©Êfw°fT¨*[M”®¨(m|_N®'õ\ÂY™õ¬F +%ŠG¨T”h–…goßÅtòë¢Êüûô&‹‘`:ÿ@Þ»›\(âZ·ž¹üÓôÍäÕ´çÈÐÉòœÃÉ¡èöR«¡ÔB˜¼Â’¿×‹.¬¦ÿ\}}—KAêµ[nsÎ ÝÔ[Ôɳ³´2ù)^Q)ÈGVRk­eI…Öç´N$#­mÆ•Ê$½1]LŨæÜK{õÝ­»½NœÓ +Ø1æܔ֓½]_µÍæªA#îÖ<ЛP(C¥ÁQÅ„¿²is-IÓ¹\ 2 ù( ÜP+EfTE+v1ãÈDÚb@Œ¡ñ&F’¨ˆ`¤Ù¸âÂHwÔW¼¿%ÕJDÿïMÕ`ꋼJ‘épïÕ÷\h~û-úm/¿ˆ¬ŠŠ*£=¿î~ãF¹¥†%‰3eKK~‰(95ºŠW£m37ßµc)ÒRËS^}dš]»õÝ I†A–^î¶]³ºØu]³›Äp +\¾£¼º¤(ãI«—Ëe°æO^4ÍÒÕkІDUòRF&ÍMð@óù_7ëÆ¶I*8´Qk›AÔ °Œ£ m`OèÚœÔ M5z—œ¬A3¨ÒÅŸ +ÅU Ïæñl…/+7_Ô]:ZÞã™$ŸQOânˆ€ßèn]à4R”æwñe$Ó³ukÜÞ²çÖl¶áu‡ºÒè©a1ÇÎDÔÄ"½\ÖÛmì=}X/oÝ ðõ¢Á¾øcä)àƒÍ®QSöå:_€bé¼µè‘u½Œ«Í2¹aå‚=HYw‹&ÞÅð¡…S<mÐÄK\ߦ‹3ÜòjÙ¤Ö… :JåíT•ôzý¹p-äX3ËKd¤I,fÍö½;£6¶¡©ê]‚/ïë®…¤$Ëq7‚î! á2NxçÔ(ôƒe«¸R0ìøÑ ,‚aœ@C }Ê,ü—aÞí_ßÌŸÐÁ +]š3Õw¹¡‰‰(ÑxC½§ÁÑœ¼Cqè¼…ÜÔ%It`«5Ъy63ê¸ÆPÔdoÃÿè c)¨|Þ‘æÈÓÜBCýïX»oqqÎ/‚*©²À±_5\þǤ”\\”ç „)+Œ=4ênPéðöÕ4¸|°¬ ëu|eçZìÀØEpó3®·¾†™o«¾‰)Y’ì˜íq€¤*©2“U Þ…ŸÉ3ðsþÀlX1°yÜü>Ú"z`¶+·Ç-ù蹈Õîn ­6á®-ðÀgâÔ'®¥f…÷|Û©#"ÃcK\€ü³\ª/mWïó@Å=®û%°ÞrôDb@_a§%Hö¨làOÏ_?Ü>.ħ²!‘<#BS``ë³3à:@b7KÑG€~"\Š(F?µ£J†=á}Ÿ=1†uîcˆQ'U±œ§·a¨Y²I°µJ¹Ù…¬ð¨¤§­È¶ øøs¾üy Ÿk˜Å˜:u˜Œá`»Àù8ëG¢ísׇVyEàô3´K_&(vo™>NÂnÿUó ;®%&;þ%,ÑÇ]:£† h L?e´¤›Åàꨗq÷aϽMîÔ¯!CMNþrFfŸÜöù¾Ê`l #ÃjUúÃßab¢æÇ5Ô¤öˆëå¶ ô%ûÂ(Ra¼/=¯ PE¹QOÉñf1¸ê­È>æî5îê#U LO«T¹XS#pÂJüÎÖÑ(èy0ãO}ñð?·wendstream +endobj +1041 0 obj << +/Type /Page +/Contents 1042 0 R +/Resources 1040 0 R +/MediaBox [0 0 612 792] +/Parent 948 0 R +/Annots [ 1045 0 R 1046 0 R 1047 0 R 1048 0 R 1051 0 R 1052 0 R ] +>> endobj +1045 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 487.364 187.397 497.327] +/Subtype /Link +/A << /S /GoTo /D (ttbxpanelobject) >> +>> endobj +1046 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 465.446 183.43 475.409] +/Subtype /Link +/A << /S /GoTo /D (ttbxtextobject) >> +>> endobj +1047 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [346.527 396.669 420.748 405.58] +/Subtype /Link +/A << /S /GoTo /D (ttbxcheckbox) >> +>> endobj +1048 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [447.758 396.669 521.979 405.58] +/Subtype /Link +/A << /S /GoTo /D (ttbxcheckbox) >> +>> endobj +1051 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [513.566 210.123 538.252 220.971] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustmchckbx.state) >> +>> endobj +1052 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 183.168 166.481 190.696] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustmchckbx.state) >> +>> endobj +1043 0 obj << +/D [1041 0 R /XYZ 109.858 727.97 null] +>> endobj +1044 0 obj << +/D [1041 0 R /XYZ 109.858 681.914 null] +>> endobj +924 0 obj << +/D [1041 0 R /XYZ 109.858 618.582 null] +>> endobj +162 0 obj << +/D [1041 0 R /XYZ 109.858 607.858 null] +>> endobj +1049 0 obj << +/D [1041 0 R /XYZ 109.858 345.62 null] +>> endobj +1050 0 obj << +/D [1041 0 R /XYZ 109.858 291.753 null] +>> endobj +1053 0 obj << +/D [1041 0 R /XYZ 109.858 184.164 null] +>> endobj +1040 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F50 672 0 R /F55 716 0 R /F34 719 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1056 0 obj << +/Length 1504 +/Filter /FlateDecode +>> +stream +xÚÅXYsÛ6~ׯà#9S¢ÄEéSíÄ=¦Ó¤±2ÍLšF¢mÕ©JÌáßÝ@R”­Èžt:K ±ØóÛâQ<â™eF›¨³E´Xϲèv~šqO‘JÎŒ%ÞnÄ/_”Y” +fEÊfïÞgѸý +§”5ÑgXgL(­gJ[& +ãŸëÙåìž‹Û+¢žÕBâ•ÒÍ2ðÝÛw6Ÿ}!lDÏó«ÈSx‚ùò]üººJ„Š«mÕ,ªäýü×Ù‹yÏ‘g@'‹c $G„¢Û ­ÆRÿ"OR!Lü¦Yun5?{ûüöU"E\6U½K8٦ܡNÄÎ0›çÈOqˤP YI9ÕZË‚ ­iHîÑšsfaÇëpÉ­d<ã$í²+»Ê©õ*¥*g2Ç0• ¢Ül-㨵ˆîkyà`ž3#E”ø½§ë¡§=m:"vJ‹=W“ÊžÄ+"²¸ÝT[ðswwN}ÅûSR1­„÷'Yø,I¥Rñüü¦ZàéÛ³6‘Yü…6p LdÁ|Iæ{)DÆŠœøüÒ,¯诔Ç;à(eü×7°A/;XÜ ^¸ÕÝT¸P1H41 .â[·÷T/â7¾8¢Uây}1ð¤Ó·øA¨ÄwŽÉÇ&áž80Gª¥ßn½×[ +qÿÎíÃ#ó(4WL*ŠyFÕBYIæ¾øT5ÝÖEX(àŒ4Dö²9¿)›ë¯Aˆ?BÚ(fx~„FÄA(<BÁÈ€¢ßÛnuu÷âS"t ^ú~´g~÷΢¸¬|¸;ŒÏêúšÂ» a_â¦pëÒ#‚Þt«µÇUç02ñŸ($Ó`¿ÎÁ^Ë]™•‘û/\©Çå6œLGGÉ›#˦Ü]†!ÀºCMlÎ×{šL#hŽÊ´–i™ïÉÜ £Ú ¥‘s\‡à¾»VÆeÝA#XÞ‡v(ÑœiÀ²Ü£ù¼.w;_½¡|ŸÜuíú·òCU„REs4@0»ÿØxéM"lÜõñlÊÚo¬7uˆïš>eÙ­Z¶½rQžã.¨Âëû²’ÌîeîÏ«j[‚\ µêˆŽ=¾u6¤'¦qÆŒÏÌù9ò's¥  ¸ Û¶‰ºŸ Pz½ÒLIýàÀ@ãA­ýJÁHÀ'ãBêÜ Mª‹}TCR§ +2MCâM D† %Çž½Ã^¡Øš_‚‹uÿ]-º[MNÕk$æÂyÎP“Á†ÿÑ\¦zÃÓL¼1O ³/¡‹½ÄÅ1¿ˆ½ŠFý"XÎå7qL€\ +±`ÚÚ£J›±\íÛYÖ'3ä“9’OXa<²Äàyµ[lWÊσ"¡»R1¤ äû‘5‘W»²²¢òbwþ9¡"`¦å÷>`YÝáëÊZ„òdã+èH…,û•`™4ÀO8™ŽŽN‹ð”ûØÜ¾HÔ + Éa`€ëtpEñ4G¥Oø t–l|Y4D€„¦òOø“Gu™p?ÍJI¦ßÇ<hŽIǪ[Àea,Á@ˆY·ÛÊ㪹¹]»ÞrÿÄF3Ù3n¯¨u¸Ùˆç0nT_Ÿ/ðÊÕ.>î s@ר¿ý4(rð€’§Mƒ#⇦Á@ò„iðo#cÃTøçªñoN»PÌo˜2 3P(ö™rÑíö†=ZSM(Ãø™úØøPÄOš‰G0ÔçÝ]cÔèQ~” cÕþHÕ„[ÍH®¤KQ¹]ºÍùd\¡—‹~š¨G8œ‚©`:s÷»7Í’°'âzÕüwS‘¹ó§Ai ~Jžä P +¦j2Õé¬mëªlN»U> endobj +1059 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [272.526 561.958 297.211 572.806] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustmchckbx.state) >> +>> endobj +1060 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 431.736 187.397 441.699] +/Subtype /Link +/A << /S /GoTo /D (ttbxpanelobject) >> +>> endobj +1061 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 409.818 183.43 419.781] +/Subtype /Link +/A << /S /GoTo /D (ttbxtextobject) >> +>> endobj +1062 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [312.671 341.042 367.798 349.953] +/Subtype /Link +/A << /S /GoTo /D (ttbxlabel) >> +>> endobj +1063 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.318 341.042 444.445 349.953] +/Subtype /Link +/A << /S /GoTo /D (ttbxlabel) >> +>> endobj +1066 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 168.503 203.418 176.03] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomlabel.underlinecolor) >> +>> endobj +1057 0 obj << +/D [1055 0 R /XYZ 109.858 727.97 null] +>> endobj +1058 0 obj << +/D [1055 0 R /XYZ 109.858 616.821 null] +>> endobj +925 0 obj << +/D [1055 0 R /XYZ 109.858 562.954 null] +>> endobj +166 0 obj << +/D [1055 0 R /XYZ 109.858 552.23 null] +>> endobj +1064 0 obj << +/D [1055 0 R /XYZ 109.858 301.948 null] +>> endobj +1065 0 obj << +/D [1055 0 R /XYZ 109.858 248.08 null] +>> endobj +1067 0 obj << +/D [1055 0 R /XYZ 109.858 169.499 null] +>> endobj +1054 0 obj << +/Font << /F29 416 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F28 380 0 R /F50 672 0 R /F55 716 0 R /F34 719 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1071 0 obj << +/Length 1667 +/Filter /FlateDecode +>> +stream +xÚÅÉnÛFô®¯à‘Ê)gã̤§Äéâ"EÒX$9(m±–H—¤a·_ß÷f¡HQ–í @ÄqÞ¾?Ò(ƒ4¢™!ZêH1EŒŠŠÝ"‹®àæ×õ)§Dk8âQöm þø~™E)#F„ü{ñéK­Úï€%ŒŽîàœ&L´[iSÚÿÞ..TÜŠR3ÄDJª¥á9è÷j¹øñf"û{yy°\Šß—— qÙ–uQ&_–¿/~^ip\2X9ÁÍ®¤sýÌXž¤ŒéøC]õî´|õñõõ»„³xU—Û.¡4&7«e²ä41yŽô5„3ü‘‡RK®“ò”ÔäˆÔ”7^n —ÜpB3j¹}¨×e›¤”ÅÛª.ÏšmÓ:A¿AÀTä„çè"2fñnÚDò¸éËD²¸põÌÜ4'š³(WøœH>·»‡MGÀN61¼UÀƒxAX77¨úœø‚X\)˜·nÐWŽôMy¿€¿BÄËý›Ÿ!0·fð”Rð—a¹¥w^¯WÅ +LÒ¸TÎã~SâAÄ…'ïšKðáúΖ€Ená€Rï9¨É æ1Üñ¼kKDáZÄ«m×8x.ö*Cn2êU~1s ¸“š<Ê9衤KD¹ÿÊ%ãþç8!f:BµNñ>¤¬n5DõfâhF¨–qfÑáafŒ™†„‹|™&B»@ý£ì7ÍzŸuûtÀЍ\[¸³¶D>Á2WXGŸÀ{؇â×C Û¢©»¾½-úw£ÀC +£¼|Ÿ3™½L :ßÞÕåaäînšº¬{€¡G‚×SsÁ+Ç:‡¸•P¨Ü³¡àLã/m°æ>€e¼„–0ŸaôvÐ7»7«¯Êò.H¥žÆ//áÜûð¶èÅj»­0î¯ÜoŸ+yl_nʶ0ÖÃÙ(ˆƒ Ô´?8¤ Â@ êñ±Ú¦h›8èp—8Õ¿^ÙC/3Mz™KbŒyNBxÌt„j½>²ü!u— $T"ȇýCíHfxKO$›ž‡9)ƒÑ¶[eèWŠà²WÖº(ÐÅm¸nhcw¾M2 ‡£pÀà$÷¥øl»ê:ßû FÎn; Œª¾ž#L%’2cDæÎ7/k' „™!bÀ¡«­¿ØÝlƒ­vö¯ƒ\õUSK,‹—x ¼±Ö½>"?ø27v:†[þ¿Ue»†n‰Š7xð­DfûNˆ5##Ú7Ïå2²j&èÀíÕ· Öñy%܇š, LHÁ³¬›²hçOàZM†¬ÔÙFˆìgE«¯?©È$‘Z ‘2V1«¨µ(¤=ß¡Ž8м…„—*þ«,úyE‡Z6±™EmfÐcþ?kp 1 ÊŸ²F€9°Æ2ÑЉïCYz‹‡SvaD@«1œÛ…‘œòïb˜r)WŒ¨LV0§D 3Uò+d1¦âÑL‚ŒP„º„x]vE[ÝØŒœ5 ð(”²}ÎA•@F1¤FÕÂ¥{â»’ð]É•míìªCm ½»ûºêÂÈåª/ç•cúIO˜EþŒp ˜éõ°ÌR+92áD \ØcfKœ‡9Éú€²Æ £ÁE9›k¸Éý&+8Ä“’Li?Á‚k¢U~Òæg!`J4SÖ—nþfñ%hÚÄÏ3"¶Í®w®ƒàÈr¤Ñ*̈Ó^ñÎö ·sÐ<î«òñùò|·º*Ïq†íôþ‘‹>Çb‚š?qÇ?4£oرöªÂxzæÓéÛ§mWBRŸ[ï9!ÿïý>åǘn=íª¯Å¯[}ÐwZ²ØcKË ²oZ²F¨-Y$˜ÝŽëóùVQÈ9‘efÆõè' +¸òß>¬c»ïÑ4ψäüi=~(¢È·Ft7lZ¶UÙwoª®,”w`RÍ1œp½*¶·vÀß¹kpøIºWwU¿q/û/YðÖ­ ׸ûív¯²w`C†t´÷¼ö´ý½û¹Á`{#AÇÍ°Šø>ðÝ"¦q2† oÓØE¯éÂjˆÌF2MۖǶ¯nÄfm¹š¹^2û W¦\²ç$ÇLG¨³%è€úàYÔäÜmd÷‡"±Œ 3×X¤Ã( 0§˜Òqýyö}Ò àÐkŽn{†-nÂçSù$®û endstream +endobj +1070 0 obj << +/Type /Page +/Contents 1071 0 R +/Resources 1069 0 R +/MediaBox [0 0 612 792] +/Parent 1068 0 R +/Annots [ 1073 0 R 1075 0 R 1076 0 R 1077 0 R 1078 0 R 1079 0 R 1081 0 R 1083 0 R ] +>> endobj +1073 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 638.979 183.181 646.506] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomlabel.underline) >> +>> endobj +1075 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [127.735 535.003 195.924 543.914] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomlabel.underlinecolor) >> +>> endobj +1076 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 402.844 187.397 412.807] +/Subtype /Link +/A << /S /GoTo /D (ttbxpanelobject) >> +>> endobj +1077 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 380.927 183.43 390.889] +/Subtype /Link +/A << /S /GoTo /D (ttbxtextobject) >> +>> endobj +1078 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [315.56 312.15 366.259 321.061] +/Subtype /Link +/A << /S /GoTo /D (ttbxlink) >> +>> endobj +1079 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.173 312.15 439.872 321.061] +/Subtype /Link +/A << /S /GoTo /D (ttbxlink) >> +>> endobj +1081 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 201.759 172.871 210.836] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomlink.images) >> +>> endobj +1083 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.258 125.719 203.894 136.567] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomlink.imageindex) >> +>> endobj +1072 0 obj << +/D [1070 0 R /XYZ 109.858 727.97 null] +>> endobj +1074 0 obj << +/D [1070 0 R /XYZ 109.858 599.885 null] +>> endobj +926 0 obj << +/D [1070 0 R /XYZ 109.858 535.999 null] +>> endobj +170 0 obj << +/D [1070 0 R /XYZ 109.858 525.276 null] +>> endobj +1080 0 obj << +/D [1070 0 R /XYZ 109.858 273.056 null] +>> endobj +1082 0 obj << +/D [1070 0 R /XYZ 109.858 202.755 null] +>> endobj +927 0 obj << +/D [1070 0 R /XYZ 109.858 126.715 null] +>> endobj +1069 0 obj << +/Font << /F29 416 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F55 716 0 R /F34 719 0 R /F28 380 0 R /F50 672 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1086 0 obj << +/Length 2067 +/Filter /FlateDecode +>> +stream +xÚ­YÛŽÜ6}Ÿ¯Ð£D\Q$uÉÂ{s‚x=½q4Ýìa»¥Ž¤ñÄùúT±H‰’¦'ãÙÀ°›‹UÅÃSÊœºkÀ­êH“·86Ç­éBÂç3 ŽG'M++ð†÷0l»å±ˆ2gY.%ž‰€þæ”,¦G?a¸•±·Ô‚ÏØ…v‡<>Ü€o[tè¤#¿ï§,Æ!Ø|?WéÎÊ<åÑRzÄ¢XÊ4¼Ñ«¦Å®^€Ž[ù”/Kí>:1º‚ +ÆUŽ”g%䙳'2L@ä–— &ÁÂéã ØÊÄžÐÒKže,/ä¨]°\2YƯíÈ!$ò–‡û¶;U&B ?Q±ÊX™f³üóŽrß‚gáPë)»ýS,‚QØùó~hßWÍa]‚xÆ +pë „àõ XCaecO˜Òz:+F˜Rœ:pî¢4±NÃ`°Sòq•LÉÔVœ×‘HF¿À¤ ¯Ûö¨«æŸëdb—Æï,Tðó;ñ†ð}/æÍ+RÄËIS %#·.l¢<7v¯WSÌÃÊ +~EꆻélÏÕÁŽú)wa©©Ž&~Ñ—c5èž„ü¥]…\pËÛ½­\~ØæØâUHÈ Ð|üÒ±k³ÎL°$SÈcè#Ÿ)elÂšêØ·´LÈé< ²¤Üîñëgd " $VÙ’AÈ»•±·Ô0ȳ½Ônº¨G©›AŸ’¥37ÖÑK2+ƒ³xq¤ÅT’b56…°rª1¸)2ì +™´…x®DØonégw)àDÕ’—Ï 8OøRÀ9‘ÿ#àh«_q”o]_C$Ef»£° ¬>às:1½9Ýbnž8 X«íúj;ÔŸ"•…,(½3y2†S ¿ß“JØöŒÌ«WøÃ!‚ACw¯éåÇD%;½¯Lì ðÄ1pKù˜O‹8ƒÕ¦—°í ëÛÃ6 ¦ZÃ#Š,§NB’>µ÷½ŽqßõX$—¦“Á) R~´óÀn؈zÓvqEk{»m|ukàès×€}fÛfY‘ϳ"Êøà!.¤ôM~Qn0 ,é¥*›ìù(­w.»µ”ªnˆù˜!ѹþNïØ…Ú•3•Píº¾G7õx]Ѧ%g)çÏ‹BOøR:‘D¡·UHÎ6 +¿o}0$ ŸŠ›;D9+‰µõø”'TLð­áŒ¹ŒèÍt’œÖ`ŒfsEó›ÓzÚ¨:»âSÝ×·¶í2Æ|øL“¨Îãⲋ…«#‡B•æ€d‘}Aqq+co骷]h¿X\d ”yßU3mež4˜,ÉåÌ þÝ$%€Ï˜…`Üã‘Qc« +àR6 -×ø]ƒ‡:ÉË1õcÕêæ/b)}A,q7ùÌXš„/Æ’yA,Ñ_C7gJW[wqÿ˜p95lÚëêMU@8çiBÏäaL꺹|p•)6.åÏ>KŒõÄMs¸sj¬uÓ×;;«$Ý{z;QÆŠù êìBù×Ôù ¯iXëf¨¦»ýßI"®Àtž?Džð%9‘ÈlVM›µtÂSï"™ø_'–¢–fž?#ÍàZ”ˆÏg½ò€,KœÏ1…Œ+°jãö9ùoÿ u °M¼|Eó8÷]k5˜BÓ‚š#6DD†õÅŒ·Ca¤+61ÐŽjáÉWw7Cmºš@Ê2™jÉÔ÷A¹)yŽ ‡0f#ŠâÂE­Á˜NæÅOØ\ÕÞGÆÚ³±Hnš^‹†ÄLgü4V LJŒùxÝÙ¸¶½[D´cû-ó-©§W¶9˜H T¸¯¢„N–~ 0´g;Óì–"¶Ù2Ú1­´ ÿD/ôî ­ƒìB~^\Q/!rm£>o6é[]!˜ÛÓg°Åö‡['mX„í…yhð;Õ`à“©×'&ÙÔ&ôôlz[³)~иûDÑîa–B1½ìTce:<°Ã}H5BŽ$“$ +®¶7 ¶i¾£o5§±é†µõcíýÝ´ËÛGJ¨;T9²~úž3ÿÔo?µ +&ËGÿ+BBž¥ûŸ;ù'Âpwendstream +endobj +1085 0 obj << +/Type /Page +/Contents 1086 0 R +/Resources 1084 0 R +/MediaBox [0 0 612 792] +/Parent 1068 0 R +/Annots [ 1088 0 R 1089 0 R 1090 0 R 1092 0 R 1095 0 R ] +>> endobj +1088 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [396.677 540.454 481.193 551.302] +/Subtype /Link +/A << /S /GoTo /D (ttbxpagescroller) >> +>> endobj +1089 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [504.019 540.454 538.252 551.302] +/Subtype /Link +/A << /S /GoTo /D (ttbxpagescroller) >> +>> endobj +1090 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 528.499 164.459 539.347] +/Subtype /Link +/A << /S /GoTo /D (ttbxpagescroller) >> +>> endobj +1092 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 420.045 170.358 429.122] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmpgscrll.range) >> +>> endobj +1095 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [436.139 268.352 465.391 279.201] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmpgscrll.range) >> +>> endobj +1087 0 obj << +/D [1085 0 R /XYZ 109.858 727.97 null] +>> endobj +174 0 obj << +/D [1085 0 R /XYZ 109.858 703.064 null] +>> endobj +1091 0 obj << +/D [1085 0 R /XYZ 109.858 491.342 null] +>> endobj +1093 0 obj << +/D [1085 0 R /XYZ 109.858 421.041 null] +>> endobj +1094 0 obj << +/D [1085 0 R /XYZ 109.858 333.046 null] +>> endobj +1096 0 obj << +/D [1085 0 R /XYZ 109.858 259.331 null] +>> endobj +1097 0 obj << +/D [1085 0 R /XYZ 109.858 193.812 null] +>> endobj +1098 0 obj << +/D [1085 0 R /XYZ 109.858 86.721 null] +>> endobj +1084 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F8 369 0 R /F50 672 0 R /F22 363 0 R /F41 556 0 R /F19 516 0 R /F55 716 0 R /F34 719 0 R /F54 713 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1102 0 obj << +/Length 1790 +/Filter /FlateDecode +>> +stream +xÚÅXKoÛF¾ëWðH¸å¾øhOŽ´ Pĵ @œ-md¦©’œüûÎìƒZ‰’* +ÃÐ’üfwvßÌ. ø£M +’Ë<ÈXFŠ,X¬gI°‚/¿Î¨EÄœ’<‡!~#™~ÛÄïvÈ$ˆ)ò‘ÿÌ>}N‚%Ìö¤D‘Ï0NE°ž Y–åö¹žÝÏþg1ß²`œj¢C\ Rœá¶rø÷÷f>ûé+ý<ÿX„Ì—ŸÂ;õ%b"Tj*ú<?{;g¤ àxvÎ`rfQ4{&…¿êci3–‡›j0£ù›¿nþ¾8 ËFÕ}DiH6e:éérR¤)Î'hA8°>NÅÓC­%Ï“òœÖrDkJI_¬Þ.iÁ M¨^í6IØöÕPµÑ 66j‹”ð=AD´À¦‹$ÛAE’… ó³œØ™¦$ç,H³g¾ÊSƒ[lìîlÏâZs ±Š0P}£:0wßú‚ŽR\)˜5ëm$ÇþÅ\ˆð÷fP+çIø‹‘΃öÎõÞ­x Þ)˜Ô“Üo`­,T‹(¦aÑð!¡Bõ0áð¤pÀÿ.º¶®Í³rFÖ¯Ú/æw€9Œ˜ Ë•}èõ] ïêZudŒš;1c3"“ÜÄ}Ù¬Ôx¾Âƒ”žÑ =¸Ÿô …¼Âƒz‡¯p]ª¥oúª{*´¬ó™gÿíß81Ï™èïfE¢X€÷jÌ ãÈÎIr3ÿ7ø¶©«E5Ô0ún¾<»°q‘QÖ}ký­¥†C7@ÖÉ‹@BÊ +! gòÀüg†7w>w:ÉØÕNñìt8;Úéj ú íN{ÚHJ ¬|e¦ô®!gW•ªÝ[uhi±ÃQF¨.xešKMœÍI¸#O—'y@á¤π_‚ÅP\ÿPÃS»ìO¤Èr“V×*u*;$£„ËË’c‡=•Ë.Ú¦ºíbh»IR@F‹ÂÙÅè÷Èä*‚\øðÜØ¬°‰2¿n×›¶QÍz$Uìl>ËÙ=»,0µ¬Uaúè„JjŽRûŒ6ÇwPú"¨€×Û~h×øâ6b…!7Þ;IL¸ö2v»©úò1¢2¬Õ–÷í‰uÖ2#Yš_æ|Ê5âÑÖB-·šz‡B8Zç­ŒZƒOœÖÇÜ Å|/Ì£¸D[+C×j~êªÈD¤y¸4&¹­§D +&Þ"£›—š ÀÒ"K> endobj +1104 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [401.542 590.512 452.656 601.36] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmpgscrll.autorange) >> +>> endobj +1107 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [292.282 422.954 373.422 433.803] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmpgscrll.enableautorange) >> +>> endobj +1109 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [411.976 359.373 495.109 370.221] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmpgscrll.disableautorang) >> +>> endobj +1111 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 144.034 187.397 153.997] +/Subtype /Link +/A << /S /GoTo /D (ttbxpanelobject) >> +>> endobj +1112 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 122.116 183.43 132.079] +/Subtype /Link +/A << /S /GoTo /D (ttbxtextobject) >> +>> endobj +1103 0 obj << +/D [1101 0 R /XYZ 109.858 727.97 null] +>> endobj +1099 0 obj << +/D [1101 0 R /XYZ 109.858 655.09 null] +>> endobj +1105 0 obj << +/D [1101 0 R /XYZ 109.858 553.355 null] +>> endobj +1106 0 obj << +/D [1101 0 R /XYZ 109.858 499.488 null] +>> endobj +1108 0 obj << +/D [1101 0 R /XYZ 109.858 423.951 null] +>> endobj +1110 0 obj << +/D [1101 0 R /XYZ 109.858 360.369 null] +>> endobj +928 0 obj << +/D [1101 0 R /XYZ 109.858 275.252 null] +>> endobj +178 0 obj << +/D [1101 0 R /XYZ 109.858 264.528 null] +>> endobj +1100 0 obj << +/Font << /F29 416 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F19 516 0 R /F28 380 0 R /F50 672 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1116 0 obj << +/Length 1781 +/Filter /FlateDecode +>> +stream +xÚ­XKsÛ6¾ûWðHˆøJOµ¦ÉL'V¦žIr %Xâ˜"’Ž’üúî)ÑvOÇc‰vûü°+åIøSž’™H£ÔKÂDd‰·ØœHo;¯N”£´i +¸'Zm€Ä=¾(¥„"K3¤üròñ³ô– í p™,õvð,Eh2osb¢L„IêÞ˓˓w{)¼—x{Q…zŠ'¨$hV +ß{ûNç'¿ýf½Ïoôn,@¬uM].äá†W· s'þW–Î7!Åz~¼Åä²Ór€vLBc1VjRŽfrü½­ŠI!8Â˯¶ê~Þ¼­ÎÖyµ²ÿ•£„NŸØ–ŒˆªòžäUÞéê{þOÝ7ß_B¢BRUÝÓ“·X ÎY”ÄØX`Ö’ÊÀVCeëTù«`íî¢bã.#è_ªþ~¢Ò:ÆÿT +Io¨¥ø•‹©ç F¬“[áHúв ]ΑB"„^+4š˜æ±£5xî£ñÉmÇn¡–dp +­pvFMÝà{í“êìÚFýgý¸D ç•H0Õ´±æ9ä¬ÌÛÖ8Ôܨç׳Å ¼þp™¤Œ‰8£ˆbÎŽ?zÅ6j%é²±»»¢×› …ÇÙ¸ïÍŠùué  ÂéSÝ"ðB,yèúpZ#H‘f™% c„1ð¾xü*yT=Zøíõ:Ùó†RïÝÁ(‰²‚‘°‡QTIÌý«à§!i>\ルÍHЂ$EêPe>GœžÝµ´ÀÊ?Gó3ßAgí1,‚sþ…βÆÅÝr@@-C!eòàPN#¸ô6î º´TäA/+ #ÛÇô¦‡™Ò¤c3®¦$>ÆöÃ9¤Ó+%õ_Ê ]ç¶]4Å–²f‚LPûDë(ÓîàS<ùŠNM|WÍè·ë²Ï/wxÿŠsGß›¬8-€œ)Ûö3Ø‚µ>‘fŸ‰DÊ„›¢Ì^pRvy{Ë‹ÛA‰Ö)Qñ÷ßû¹§©Ûú¦ãÕ·€®ñÂxuÁ]»`Ôþ»¡«ànÑÛŠcWëÁwÏèOëfi›ËâþFñÀÅ™Azçù»ë²ha"ëóÁ SE©ÐÐF<éÂ?taö$ϸ0G& ùŒ¶Øµm[ÊHM1¼xUZwmæ=br«ìzIZºiÜ8ŒtnÓü¾zäÖX”Ũ¼±koPfãVËbUõ?0Ð÷2ùú.Ê%ãõ¾+æ~ºåVL.sãtjÙ½?çACDú_óÜæj$Îendstream +endobj +1115 0 obj << +/Type /Page +/Contents 1116 0 R +/Resources 1114 0 R +/MediaBox [0 0 612 792] +/Parent 1068 0 R +/Annots [ 1119 0 R 1121 0 R 1123 0 R ] +>> endobj +1113 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxdockablepanel.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 1126 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 21.00000000 21.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201237-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 1127 0 R +/XObject << +/Im0 1128 0 R +>> +/StandardImageFileData 1129 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 1128 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 1130 0 R +>> +stream +q q 21 0 0 21 0 0 cm /Im0 Do Q Q endstream +endobj +1126 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201237-05'00') +/ModDate (D:20030406201237-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +1127 0 obj +<< +/Filter /FlateDecode +/Size 2680 +/Length 1131 0 R +>> +stream +H‰¼VyPW›Í !JQvC0âЩ)7X¨Š ËäX6d1Ù¨µµQ±ú‡¶TJa+E¦&¬¡=bÿQÁ9{±ÎŒ†±¤Bÿ‡ýãV³1;ùýlÏâ{j2-ÂC#Ô©lÁC'Ó0ŽXL¥[Ò²33´$id b§ÚÃY’Oš—Ä ÎJù²›Osª™êê‰<ÕH1î 35ˆû,§ÚÓÝ[kH$¤y@qål@BªËÀÐx41³„"‹¦Y) 1°p^FXÈ—´R-IÁ‚¾¤÷†_qþ‹îèœÉÑãºR BÌÇv=)ñ\aœgJ¢€úÏÁ0€ÑWè›ÀojJz +ÀxìVi°<Òx=©%r3~dý2&ÝV©X,–ˆ¥‰Tîíå-ò•J}ƒ† “K‘pÓà‚ùx{ûÈ|üd2¿@™LÈO Џ4å8”´ ~†& lÁr¥0pÝæÚ„Ñc‚²Žic&šW\H…—Îìl}¬³¨†lÙ[‘ôU¶>ùøVjÒÐÆœ[Ä“}+O4Yo?M[¶í³ý_Ÿ¼ø‡½ºîçKwºfå-\U¾ý@Ãow»cSg­®¨9xêò½grÀãA¶|ÄI$¨…QÑþ|È`AX€@¹|] ÃàXօΘ1ÚVóŠÒÄ™A:ËÄÇáB†€(Bu¼’Ø:TŸœ3‰"n¹(¼šÁX7ú*âèr ö)5ë+R’st‡×jvwÏy¶ÿÇóæÚ¯Œœ}ïúós9êùy¶kå4hW÷÷í<¬š½(çû#»o71®áíu6â¦m ¶uô–N]ÛUYïˆ<­{RûÀzvwÏ9ÝBUýö޹—kë»;춦¹9]¶«ŸT¦ÐàáµöÓÆ«±…ßìØçHÍ8uâ×_j^_{ÚÕéHµjJ*lo”5ÞpœÉm»äÛ§£ÁžÒJú¼}úÎugÝ®Å÷ïŸ}0’°·I‘–|xµÄF)€R¡ˆ‰SLŒSL +U*⢕q1±èÈVaìûh€*ž+oHî^s'Xˆá7á@þØ7lÄ@þ°Óq9°ž;·SÒ8Œæ¿gÄ endstream +endobj +1128 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 28 +>> +/Width 28 +/Height 28 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 1132 0 R +>> +stream +H‰ìÖ!«ƒPà + +ÓfÐ`p à 7ê?ZlÍÙ,Æü#«îOØgpa ¢‚‚‚÷½“+Fuܰ/|Ãy8Ÿá¼§mÛÅ««}§Ù4MUUeYb1Ã!I’aš¦±èÍ¢(Ç™}6Ã0DQa¹\öæý~w] Ó4'i–e¡ó<¿^¯5Mâ7o·›çy/—Ë$S×õŽýzŽ:ÏĤ¾ïwýUfÏþÿsö5Æœvõ1?æÇ|Ö$ˆ_ñx|‡‰;y³Ù´®øÓ §æQ¸¸‡ƒmÛã{7{²Ý"4%IšÈÍ0 Á&I’eÇq#{±Ûa{¹ß#7EÎŽXER>Ïs–eÇô8ŽÓ4½^¯wY–UUææâïÙ€^×5EQc:Þ˜ ÿ Ûû|ÿ`M–Ñ endstream +endobj +1129 0 obj +<< +/Length 1133 0 R +>> +stream +endstream +endobj +1130 0 obj +34 +endobj +1131 0 obj +1524 +endobj +1132 0 obj +326 +endobj +1133 0 obj +0 +endobj +1119 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.951 603.139 228.068 613.988] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustmrdbttn.groupindex) >> +>> endobj +1121 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 512.488 178.007 520.015] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustmrdbttn.checked) >> +>> endobj +1123 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [279.14 418.53 317.386 429.378] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustmrdbttn.checked) >> +>> endobj +1117 0 obj << +/D [1115 0 R /XYZ 109.858 727.97 null] +>> endobj +1118 0 obj << +/D [1115 0 R /XYZ 109.858 681.914 null] +>> endobj +1120 0 obj << +/D [1115 0 R /XYZ 109.858 604.136 null] +>> endobj +1122 0 obj << +/D [1115 0 R /XYZ 109.858 473.394 null] +>> endobj +929 0 obj << +/D [1115 0 R /XYZ 109.858 419.526 null] +>> endobj +182 0 obj << +/D [1115 0 R /XYZ 109.858 408.803 null] +>> endobj +1124 0 obj << +/D [1115 0 R /XYZ 109.858 190.401 null] +>> endobj +1125 0 obj << +/D [1115 0 R /XYZ 109.858 136.533 null] +>> endobj +1114 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F19 516 0 R /F55 716 0 R /F34 719 0 R /F50 672 0 R >> +/XObject << /Im19 1113 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1136 0 obj << +/Length 1922 +/Filter /FlateDecode +>> +stream +xÚ½YY“ÓF~ß_¡G© ++sé"ÅCX–U¤lBª€­­µUÈ–ckY–_Ÿîž]>ð.TŠÂš£§Ï¯{ZZé ø'=)²0R/QI˜%Þty&¼9ìü~&™b¢e˜¦0Ľ0¡Õ ððmG)¼‰ +³4CÊÏ>|Þ ¸½‚S&K½[‹P™Ì[ž™( U’ò¼:{wögËÅî%^ËjG!Gq‚J“ÍJáÙÚ÷ôòì—ç*óh~yí1\Î>øo‹ë@¿Ø«i|º|uvqÙr”ètrÌaŽäˆPt{™¾ÔJÅÁD©ÔÿkU6vtùôŸgŸßZùùª¨¶”~¸Î·¨±KÃ,Ž‘Ÿ‘Y¨•ùÈJ§c­#„*ŠŽiíHöh-e˜Áëp‰3J!IÚy¾nÊzõ¶nr|ZåÀ¶V¹‰‰Ã âÚîúši'=b«¶8›”fR`(á×ëbž~sgÕ6²=¥MÅÙø8˜hcüËgoF¿rh:áæ3ÉBGĬ¹[;âdÆÂ‰Ûe Z&©ÿÄ>>ŠHÌÖÓÍoþMSFøì-W·Œüwï¶/êÍ·ƒ›©ðÑÀ¡¶’ H½ ¢§ÉÖlË”µàåjH¿œæML¤¿whí7O?¯pw¾Z«PÜØíúz@¦ý)žÍ×@k-ĵk˜Õ;žÕ v +dðóHØÌnâ1JŠ°Í†¦X‰’0)iû¬ž¢ÉŸñ§˜½(Êù¢ùJå=P*t˜d'‚´¥=ˆQKñˆ¢•@öœ•ŒÓ—«¦˜#ˆùž;„ö|^ÛÈm0ÕÖ†µYÀŒC¼@þ{‚;­ÊAÐóM‘ÛÑ-9HŸÂ­:ȸpZÚ’%"ÊZ$ @ b2À¿«a¨üÆ6äÌtÌì¾Ày_Î@ÊOÃMdàö'§G|9Žä‡¡Cv>9ñiȹ%7Rô[Ð "¨f060°\J61F‹båêHÇt¯ÝBG‹ˆ" ¥Œ¡^aúÒÒm¨8M-„öàîãï¢èâÚ¶Ó¦üB>¯+(q`aà’Š¤< =âC°p$€*qgÅ#§8bÁ]€ÝÊiuå}¿ûÄà ,Z üQÃpUÀ}etÚFØÈÄω ¹Á:QÙ¥©ŽlI¸ÔÀö‚OPä©(öó«Š·ºjƒ3„ +ñË«éMwÚÌ2½BÜí2&MP‘ͦ³Æ–<<0ZÒ"AÛˆPGͯwZ¦ýöüö¦"¤­æ¸¡üâ£7 +k6æ†C%dÓ‘”’(s¥£\ÈæL‚[âË|r;Ûº)S^‘똨¾jò’â2³»7ÛVÑ6 î•f…YÛêÞ®ÖT"ÖN¸³±O ¸nb”òŸ©¦v@ÅI+JÅ©¿±V4v]€OF#¿PÀ«K‡ý4:À`äX´«K÷ƒ©»=JôæÖŠí«@Œó%Ïœ¼n?oÏðB9âo30£ÏÖëjÊóªÎ-'53÷h¹uš…Bžx)õˆUGò€ê34ñ'v2&á\A[Ž]Cc,¦´‰;€Nüªì%}æÈ¹ÏÑí ÇqXsË%ëR¶dLPY´µ²«K{ïÌsÌH”—¬¦õ&©uXk ¢$ß¶àüÑJÛ ®¨o-yávQV¬¼2¬¡4k0#CÔÁf²O«ž€ml¶KBZ,­«L0¡€ÔkêfvéšRké4îD¯×HÌÇûÞ³MΪøÊýmS.¹)éš–2àw"ŠÞÌçóþ«KmkРå´)Çò?$Ç)=é}Ò_È0R'¾q÷ˆ¦?“ü@ú?´=”ý‰`§ÃZQ ÚÂÎ(ããlø +ëÃvßd`±…œÝÀ°[²è²¥fÒ~²ÏíÞ’@M`æQÄi{ä„;8¶•î py½›ñ”ä"%¹À‚…xÅÖgV3‘Œ\±D²/“0Åe¯I›â®†¡¤Îß4si “.­E2Hk—7 ÿš”^Žô<øŽ8wGZþ6{’ûOi{¥¿Î¿ž#òšŸýBIf§Þé=âCIíHÔ#œÖÀÁ±Ä€c˵ÄXÑࣄƾÀz?£qÝ^Ö¸c)øjÃwµAÞÅQæ¿Æ©Õ™Î¿I W8FXè·¿½¶Òôj„\uguõceO—#n•œ9'êžT^–;×øQÖx2U¡Ð6à¡öìÿÄ~!ï¦ý¯äîä¤w”ÂߋØ;Å.ð½îé¦DÆr ÚƒLrL‡T ¿m»/®Y&&¦ÏðHõR„¢¤Sü<¹­í)m:œŠP)‡ÓÇ;®…Ü“YìÉ8'¨û¸–ONzGɬžì1wëÚÕ¹m7 Ûg¢o-p¨ëÜño¦r ß®‰ä˜"#.¨Ç£Iÿ2=ÀîäQ FÜÛªA »{늱nIµâ¨p/NP±Ðûˆ ”e¹?0ñæg–yjendstream +endobj +1135 0 obj << +/Type /Page +/Contents 1136 0 R +/Resources 1134 0 R +/MediaBox [0 0 612 792] +/Parent 1068 0 R +/Annots [ 1144 0 R 1145 0 R 1146 0 R ] +>> endobj +1144 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.108 179.105 206.607 189.954] +/Subtype /Link +/A << /S /GoTo /D (ttbxdockablepnl.minclientheight) >> +>> endobj +1145 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 162.556 208.806 171.633] +/Subtype /Link +/A << /S /GoTo /D (ttbxdockablepnl.minclientheight) >> +>> endobj +1146 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.989 162.556 276.536 171.633] +/Subtype /Link +/A << /S /GoTo /D (ttbxdockablepnl.maxclientwidth) >> +>> endobj +1137 0 obj << +/D [1135 0 R /XYZ 109.858 727.97 null] +>> endobj +1138 0 obj << +/D [1135 0 R /XYZ 109.858 645.51 null] +>> endobj +1139 0 obj << +/D [1135 0 R /XYZ 109.858 581.928 null] +>> endobj +1140 0 obj << +/D [1135 0 R /XYZ 109.858 518.346 null] +>> endobj +1141 0 obj << +/D [1135 0 R /XYZ 109.858 430.738 null] +>> endobj +1142 0 obj << +/D [1135 0 R /XYZ 109.858 343.246 null] +>> endobj +1143 0 obj << +/D [1135 0 R /XYZ 109.858 255.754 null] +>> endobj +1147 0 obj << +/D [1135 0 R /XYZ 109.858 163.553 null] +>> endobj +1134 0 obj << +/Font << /F29 416 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F55 716 0 R /F34 719 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1151 0 obj << +/Length 2046 +/Filter /FlateDecode +>> +stream +xÚ½YÛnÛF}÷Wð‘B†{ã%}KÜ6- µU8@œÚ¤%"©RtÜôë;3»Ë«¤ÈŠQHîÌììÌœ3»kæðsXø±ŠˆG~9÷›‹ÀYÁȯÌHx‚ùq 8æGôµóxÕKŽÇý$NPòï‹OŸ'k¿ƒ–Lbç žŸËÄÙ\H•ø<ŠÍ{yq}ñggEENgjæ•8Á%/ÂeÅðÛ­ïíòâõ/¹WùÂK7oòê>_|^þ~ñó²³Èѱ€Y‘#“bØ#%‡³Þr.<Îc÷¯ªhõÓòíÇË/,wÓ*/w Æ\›îÐ'2ûI¢=É_p ó£)‘L½V"ò¹RǼ¶"{¼fÌO`Äøå&Âg£Ù>¤ÿ¼+‹¼joЬ]kß`iož ýÒìE¾ 8©lïÊb·ÎJ¸Ù,Â,ôcÁ0Âß‘³óPYo ¬½æ£X“ÏF„h­Á§˜Lj¤„ + 5ž…£ÿ4¦û׫Æ´¦7P¥ÄR0µN)À…Vƒ(`€MÙŽ<‹™¯„y6+>#sÔ‡‰ôÁ7Q]±yó¡<Á$@Eh©k@‡Â°‹Xºi¹«µØêJè“Û}3[ÀŽ%¡òØØ=#´FÑë5iUƒ™'¶u`«wTnÙë+£ò™…–=²@›FÖŠqab]x5›‰qhÉóC`Í?¶Ý±®Ù†à}^¬Ö·SÏ"ìp4ZbêÁ~6_±>DU4yûrt¬b Ý:>ŽÂ‡èØŠœCÇã5žÏÇDÈDZûd,„p×:gHYôŽÔŠ¿PÇD¨BÈ!5WÑ´±œ|Hq‹Ì|ÎÁ9Øgßþ’‘/âððT¡ßŠô—ÿýÚ‡jìÜœ´Ì17¦vP€ôC¬ÞgGÂjuabý™D¨!~4†¦>쥥Gñ"/¼)SðC&Od^ø ‘aÜ”í!'bq»?¡72–ÊþgØÏõÃx?öÿ€_†!œ1ÎêüÕCà·"{Á³oKŃ4ØÈ¯9îµÌ1¦và^P†Ÿ«yÔ…‰õ½¸Ä÷ã;€£Á0àŸ:²üRÀ¡Xj ]¯k<*>½K·mQW7°S¿¬ïL¹_ðŸ<û°Óù@r<§ŸF½ì!60g-YÍ– š_ðŸ<3üð¶®Ë<­¾G ŠŒ¾«5¼ñ¸UÃñ›P?Û¤ØÕqR õ¯¸/ØY¹+hŸÐ¢orY[: -n™¢ß"hÙÂLŠÄÇB8<~¡Yæw}=à%Lä«@GñzS×ízœü«|Wü‹õ‘¿\[x%óÓê` |¨¬È9•Ð-¹O¾Y2¬þÅÊ !“&ËÕJ§ëŽR”¯S”ÿŠ#uc’N§åiO8-Íðñ„LWéö²Øµ©¹³zxó((V§åu |(¯V䜼xF³W¦·š^½ÓØ#ôÒ‡ÌÜ€”©W´M¦ÚÚ4x%®+²Ÿ7µ…½ +¡[?öä`µònª»r`R[—wtU2s I °EeíÐø}“iƒž±@ômËî„:Ù–Å‹Ÿ 9ÝŸØÂËĈœS&ýúÎÞ^æ­¹¼¢;:ƒñüP˜_ÒáÐè’ŽN–ö½;‘œÞ+ì=qíId¡e´'µqÅ–(J4mqŸãË%úóöã,Û²Åe^MR9M¶§KíŒú½0s©É³bçu±1HƒØ´ éc4ÛnÒ‰B÷~ârc†­«Aù¦.“k…¬ËFLa…OƒºÂ›]¡0#FzZdý6`²éÈÍÌØTΠd}{Ü+­5w J€&\Ìûܧ¿ WtûÁö:ôQêç>«ÃhéJJ«¬+ýislr^ªg˜†•®å•&lÞÁghê-•_ÝÐ>ŒafÍn+ëR‹åÚȸ­ÅIº©«ÕÎ qx¶ëüÞ›áîÃab§/»á­•:^ŠCkžm2^¡Ó¬K?W3¡&í;Š¡-jð«!O#[s¯HŠ®œMHÌ(½ìÆu3Ã64ÍÀ/Øî´ú+ý­a2zˆŠhá{+@ *€q`m,™bxkß ×1 ÁÔçóR7ç¼~ÜQ‚AäQ¯]H{ÐÍX±=Kzºç÷ÃО‘&dÚ˜ô㮥tðdrÄRðJå©ýJí"8DHI]Ù-z=VÖiÌâ7›ŽØ +\ΧØÌÅ(ްÙÝÛŽ•›ƒ8xiÜHM¾|ˆ^ôòÁ PzÎåÃ@õÐåƒÑ _ŸºéÒA­fˉ|¡Äȧéî$‚O¢Î±ûD$l¢Dbÿêlÿ7wM;endstream +endobj +1150 0 obj << +/Type /Page +/Contents 1151 0 R +/Resources 1149 0 R +/MediaBox [0 0 612 792] +/Parent 1167 0 R +/Annots [ 1153 0 R 1154 0 R 1155 0 R 1156 0 R 1157 0 R 1159 0 R 1160 0 R 1165 0 R ] +>> endobj +1153 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 643.96 182.53 652.871] +/Subtype /Link +/A << /S /GoTo /D (ttbxdockablepnl.minclientwidth) >> +>> endobj +1154 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 625.474 208.1 634.551] +/Subtype /Link +/A << /S /GoTo /D (ttbxdockablepnl.minclientwidth) >> +>> endobj +1155 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.283 625.474 276.536 634.551] +/Subtype /Link +/A << /S /GoTo /D (ttbxdockablepnl.maxclientheight) >> +>> endobj +1156 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 544.84 210.453 553.917] +/Subtype /Link +/A << /S /GoTo /D (ttbxdockablepnl.maxclientheight) >> +>> endobj +1157 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.635 544.84 276.536 553.917] +/Subtype /Link +/A << /S /GoTo /D (ttbxdockablepnl.minclientwidth) >> +>> endobj +1159 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 464.206 209.747 473.283] +/Subtype /Link +/A << /S /GoTo /D (ttbxdockablepnl.maxclientwidth) >> +>> endobj +1160 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.93 464.206 276.536 473.283] +/Subtype /Link +/A << /S /GoTo /D (ttbxdockablepnl.minclientheight) >> +>> endobj +1165 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 110.786 188.349 119.863] +/Subtype /Link +/A << /S /GoTo /D (ttbxdockablepnl.splitwidth) >> +>> endobj +1152 0 obj << +/D [1150 0 R /XYZ 109.858 727.97 null] +>> endobj +1148 0 obj << +/D [1150 0 R /XYZ 109.858 626.47 null] +>> endobj +1158 0 obj << +/D [1150 0 R /XYZ 109.858 545.836 null] +>> endobj +1161 0 obj << +/D [1150 0 R /XYZ 109.858 465.202 null] +>> endobj +1162 0 obj << +/D [1150 0 R /XYZ 109.858 401.117 null] +>> endobj +1163 0 obj << +/D [1150 0 R /XYZ 109.858 337.42 null] +>> endobj +1164 0 obj << +/D [1150 0 R /XYZ 109.858 273.723 null] +>> endobj +1166 0 obj << +/D [1150 0 R /XYZ 109.858 111.782 null] +>> endobj +1149 0 obj << +/Font << /F29 416 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F55 716 0 R /F34 719 0 R /F19 516 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1170 0 obj << +/Length 2537 +/Filter /FlateDecode +>> +stream +xÚ¥ZÛrÜ6}×WÌ#§Êƒ%.¼ [~ˆ¥ì:Éj“µäuª’yCO·ï~¹zøy-…—Ù¡^sî±cR#&³\ÌtâzŠk&…‚ýq)åQ2b"–P;‘ Ôœ3 #7ºK¨%ã>7»Ýyó)O›=á‚cµ¸6*dL¼‰˜ò…?žîy½ÏÖôÒ‘vyÈb)Va„¿= c5[ÙMG˜‹žž ^+bTká{å1«@ɾ×<lÅÛYR±@ «Ìóñ¾Yo¤RÞ÷E“Ýãdé{§¹ñJÉ¥9±¼‹hš%®²&[o¸W­¹÷ˆ9<Y ûk°‡·Œž·‡<+Ö`yt€X{I•%4ò”§ ²æ{¹£ß¾ííÜ#<£›ÐÈÓ2O¹]+¯é7-ñ×Ûâ6ø‡Á–Z!Df”ýìË +‡¾ hiÂvv³[ü Îz}‚‡&¿ÂÉny̺EÐêˆl§%iç\!@2V°b]’¼Tg{OníñÍÈgÀǸW¡G‘‚\ÑÿÃùµKnæ¦3ÕxPgïáêäx^p‹÷Y~û5øB3ÇÌtØÈ‰­ÌÂtØqÁTHn|s:KôBé5YzUn×<ðêb¿>2áË×Å`Gx.Èÿƒö¬Êwg…Iµ È[÷áǼHk’mHjPY°y>f£-yÌBßmÙ_Ý9öÞŽ–07vJ5$Ñ9\[H¦"·öo~à§7MR¤IÕç MN®O&„è+Èò –þÕè6†eèL—6.‘eJHàª%óŒÃÏGš&æ­L ";|”}n°Ã9,« àÛ.˜›ÈÞÓÇA8zæ Ùâ&IA/wn_”C.k·Š, ¥†)Zv 7ÿd€´ ¡½S €¸w?rÛ•CªSànQøWhÀÎÜt¦'î(|¸:B{Dè–ñ6ÃÕC|HÙÃ7 ''³„d¸"yƒ¡¡ ÓKËô2Â>¿GížéµršÜ–& eEê>¥4ÓXD³?¶‡“ÄwðVÌ>‰™> ^õìgf朗2œÔÜà 'ô‡£‘+q÷ÆîŽ15\•Bëm×a¶œðAò>‰¼a6.ãr¥ñÃŽ«“ Z_ÜÁ{U>N¸ì’÷$Õ÷õº1Ë`âAyîø±,.ËÕ6͉R“*´‰nÏJé]g;LÏ··3¿ãÍ&ɘ’~“ÍÑ2P‹Eø:ZîÏѲÁ·eQ7ÕiÛ€µ† YDéÈ2ADûSßOO…½9J¾,e‘Í ÙÕzüEÇv¼$[æ0ñ^ãÙÃÐJFc¥%.wé9Ï:½äîýŒo˜â™ow¯¬¯‰½nWö¯oÖcŠŒà|uR=[Ì(’7¹¹$å_’&/‹74tÙú°9®q´¬™àë]yÀè-ýÓp_ %ÅVV™Hwãû‘3´¯àªÏ”,$³é‡áªÃà£1$H'C©ŒG£ 7±\ÚPAq'\÷:’†$Aö!ì’´•é¼6J»lïÕŸ0}ÙZ¥GÏÀDJ-*ÉŠ,!X×…¼‡Àq—s–‹/ãR.[¦#4k'ó’e6ü +Ë NX¦ ph¼Lï‰ÏG¶Ò4â‹zr2K(÷Y ûjz…uB÷Öè뜅æ­ce^´Îü†_cÂ)ët^ÍT‰Üûä*Ñ!|­ —ëe}Y™E4:î!qâ"ž5‘qP̲‰ÎBó&²2/šh~ï1Ñᔉ:çMô>séb&¢¸XàëeÅY™EX:fu¼Ö\xÙ ^Ѝ³Ð¼¹¬Ì‹æšßðkÌ5@8e®À›½¹ub2¿4Ù/Çx/À˜ÚgÅÕdM4âÂ0ùjQ‡Nf ¡$ Eac[/\wUÍ8T¶(^G‘WÌ]cζù”ä/Øö,4o[+ó¢mç7üÛNÙ¶ðæ‘,Wšbx>0?Ð-ÿ2ÒŸ IJþœÌ:!}+ÝC7kרgW,ز‰ê´"a_Üß²òÇc +××Ë}~H/ËCYÕsõŠ}úuõJGx®^q"6Ò6KOÕ¸Ÿ£8ó¥=áîTMbä»%ÉGªpêÄý|Kç¦ÊŽ*ÄäÐö>L‡XøÚ/®?c®õvÞSÞØ6 +)Õ¹Û…¨ÁJãoÇ6!g2æÓÁ9¸—B¹å¢˜ÊðPÎâ(êõb¿'ˆYU˜Âå𼎕é.Àa¨£¬ü{ÂøCGÄ,ƒG4_zG´óLed +åk<¦ik“ =ÎrR!áÆÝÚpñ€“Üi ÷;öTjš„´Ý8¯é·¼kjÌÛÓìL‰õHëØ5Is ÷8‹º¤¹±ù¨EΜ #êÐWå ®lP‹FÏl½ åÝä½"æÝ¾Ã—_襡®Cy¸3»¡EÜ»3½=xµ—f»„ÚR4cŸààgKDøÅäc#í-ýlÿ†ª ÕHŸ}=âCw†]žrãê0éŒ×”È›¶º>÷t*ª’Û¡Bu£å½ÒÎôœu“%©•ÛÑïÉ5\ŒÏVéqi°8Vp;ʈ£¿Àÿnæ¦3u݃Õñ|ßA†’öŒˆïsËúdþ@© Xá=|£¿u%‘% ƒU(´!ä¸w]ÖM_{í_2…ik¹>žü/¢½ü—5„1dû×@•i%ã@š;  ò8 +Á%BôLÞT^RÓïÝ!±IѼ>ísóº·¯¹éwÐKEçÇøÉ¸ŠV=;÷4­ÐÑ:b§F1êDrïcAœæd¸­ÉÜ$’”ôE«ˆI‹9·˜‹Ò¢3nà ?Õ0½ú£uJ0kåõDäu{(Œ+ÿÃAN«<òì="ͱ_ùl;ÝfäŠzWx>à\ó©.OUKfesVí½·=#ç„䎞Uø.çÀçüæNiùœÜÖÚÛÎ{ÆUÊMÝšî<œkà©¶~™ÒƒëÚõ²i—aÐ ¶û—ìšÌ¦ÀÚ@lšnÌòn?Ÿ˜µ§.=Ú‡»ž»õ fÐM˜S—]¸C+=ù ñ1©Ý¿Q°ƒ-`¤Ëendstream +endobj +1169 0 obj << +/Type /Page +/Contents 1170 0 R +/Resources 1168 0 R +/MediaBox [0 0 612 792] +/Parent 1167 0 R +/Annots [ 1172 0 R 1174 0 R 1176 0 R 1177 0 R 1178 0 R 1179 0 R 1180 0 R 1181 0 R 1183 0 R ] +>> endobj +1172 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 637.429 189.055 646.506] +/Subtype /Link +/A << /S /GoTo /D (ttbxdockablepnl.splitheight) >> +>> endobj +1174 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [165.115 546.943 217.53 557.791] +/Subtype /Link +/A << /S /GoTo /D (ttbxmultidock) >> +>> endobj +1176 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 403.062 207.437 411.973] +/Subtype /Link +/A << /S /GoTo /D (ttbxdockablepnl.minclientwidth) >> +>> endobj +1177 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 381.199 208.267 392.047] +/Subtype /Link +/A << /S /GoTo /D (ttbxdockablepnl.minclientheight) >> +>> endobj +1178 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 363.211 195.675 372.122] +/Subtype /Link +/A << /S /GoTo /D (ttbxdockablepnl.dockedwidth) >> +>> endobj +1179 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 341.349 196.505 352.197] +/Subtype /Link +/A << /S /GoTo /D (ttbxdockablepnl.dockedheight) >> +>> endobj +1180 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 321.423 251.3 332.271] +/Subtype /Link +/A << /S /GoTo /D (ttbxdockablepnl.showcptnwhndckd) >> +>> endobj +1181 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 303.435 228.524 312.346] +/Subtype /Link +/A << /S /GoTo /D (ttbxdockablepnl.smoothdockedrsz) >> +>> endobj +1183 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [284.888 196.954 348.206 207.802] +/Subtype /Link +/A << /S /GoTo /D (ttbxdockablepnl.effectivecolor) >> +>> endobj +1171 0 obj << +/D [1169 0 R /XYZ 109.858 727.97 null] +>> endobj +1173 0 obj << +/D [1169 0 R /XYZ 109.858 638.425 null] +>> endobj +1175 0 obj << +/D [1169 0 R /XYZ 109.858 497.831 null] +>> endobj +1182 0 obj << +/D [1169 0 R /XYZ 109.858 296.461 null] +>> endobj +1168 0 obj << +/Font << /F29 416 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F55 716 0 R /F34 719 0 R /F28 380 0 R /F14 372 0 R /F19 516 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1188 0 obj << +/Length 1948 +/Filter /FlateDecode +>> +stream +xÚÍXmoÜ6þî_¡±â›Hµ¸MÒkSIﵚ~WŒ­óZÚJr\ýñ7Ã!µÚ•í»´0¼K‘Ãá¼<œy´<)à'¼¨˜Õ61°Ê$Û›³"¹„•oÏxÈ%gÖÂטñ³ˆ„ểd‘ä‚U¶BÉßÏ~ý­HÐö=ìR•Mî`\0¡ªäæLéŠ cÃóîìüìÇY ­™dVµ2(Jü&åݲð=û÷|söÅ?E•øç͇$HMókúÎ}È„JÝອË~Û|öÍfÖÈ “æ©€E‘'Ű­–§¾¢Ìr!lú¯®h´yþËËë2)Òºs»1ã?¸¥&Yº1Ø«ÝÏ€òçïØ9¢òS@íqp†â ྋ67à´ŸÁ H`ADÍæ³Ð±õ\{ŽQ}]Z{PY×sìIšË\«€÷‰X«¾\µs(ü¼*­8“¼$’òÿ†ˆÞáqIöâÎ|±Õ7÷ÅÙ§Ú©ä£÷Pöç{Z%÷­b†ÛÒJp€ylå)Ùˆ2+{Ž8U  Xciˆ+½ØÕã( ´£×õ…Û­n ðr¤` Åt _Sê‰7˜°]HÞ®¾ð€ñÕD¶(ÒûZiS_¥bñ?ñ¬³U•(˳Áƒä÷äÀø "û'_¼ºEò²ZŸüxDÆQW¾Pö8ÅTZ²’Øßw­ðNk0Û×)þ¥‹mDºY0ãæzx;Ný 8÷"µ¡Ç˜¬ $ €T/[>úúâ_VŠä&Œ¼ ð“——œ²¯p«Ïnð:W¸µàsl–Ρ 2Kì‚_? ‹xCß^ ËK#O8rÕ–@ªy²8fÛ²dhÉÁ‡¿.Ò‚óV>(sMf¡ +ýá{<¾ÅÁSqžÿ.\ǘ"—“À”†pëŸ L9 + ›þV¼öÁÆ–vxÁ+à=iqÎ*¦ð”óÿx±×3^”Oû¥4ãÊœ&ü5ŽêÌg¼Œó¨¸`0p½Ô½tãvh÷Ò´a†ðƒSÀ›Á®çxÄ/¯µT åé»&‚~L‰²î4âŽÐè'ïZì´8ªiû-gG;\¬Þ·HdBÝŸM;îQ¢Æ®›ÔBÅäþ˜häÅB‚¡cçJÀKvòÕ"MÝÔX<îé¡Ç³'"¯9q +Æ‚_ï¾§V‚A}ɧÆÞ4×Îáh²Sl ¬Ô[Ø.îÌ:s™ .gÖí†vKs³UôžáCöÑSÿ!(ϼ:j +(ÛÜn]ÖºÓû t#0WÀ}(µüŒ+wæ‹­ÚËV~¢}4ñ䯮n«*ád(MKëV¿š™§ì8Õƒv<#~™(<|^ADÚõ‡å¶Ë#9‡"€?)-psˆ6lصòÈ©}n¦:ÞªÖi´éGÈ!{àr‡_*aóa"ÕvןÁ£®ú)'ø^/Ypèwp%^iÐøT‰¯¨’侤£¬à¶i…LVñWаøíž +õendstream +endobj +1187 0 obj << +/Type /Page +/Contents 1188 0 R +/Resources 1186 0 R +/MediaBox [0 0 612 792] +/Parent 1167 0 R +/Annots [ 1191 0 R 1192 0 R 1193 0 R 1194 0 R 1195 0 R ] +>> endobj +1184 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxlabel.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 1196 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 21.00000000 21.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201244-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 1197 0 R +/XObject << +/Im0 1198 0 R +>> +/StandardImageFileData 1199 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 1198 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 1200 0 R +>> +stream +q q 21 0 0 21 0 0 cm /Im0 Do Q Q endstream +endobj +1196 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201244-05'00') +/ModDate (D:20030406201244-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +1197 0 obj +<< +/Filter /FlateDecode +/Size 2676 +/Length 1201 0 R +>> +stream +H‰¼V{LSW?··OZ*塨ˆ€Š‹Ë¤n ¬ôb{ËÔdâÛ,[²‰(‘lÃÇÄ™EŒ$™ÑNQØ’¹ „|0磧B}€Ð{îíK1Û˾æœó½ïï|í÷ÝÎOÍÊæÎ4ùh>´á¬Mù¼ +`ðÞ´‰lRwDòF&Šë‹D.\¡Hžì-ãƒH9ã0&ʇ4›ÁãCËŒEÚŸ ¢t:h1ÀÏF1šý{k]𴝂»Sö7Ü”ó)âËpŒKøÚüßÛÐ…®ÚÃ{rÞak uU‘§Ð¾Ä…ž¡v‰(?j°€ +ž<«‚ž„“á•NòsëšCƒQ“£Öœ£.Õ¸í¹*Ú ^A–‡H£Þ™f)¡£<åTŠ,ce#W_LyÈ|³¡DC˜ KÍt~¯çð 2þp µÐ#·@o"-å^*>i*Ñ— £¥ J’ô<:(é ì«²Pda$L*ŠÐ"ôëÊ ÖÙ‡q¦5´%«Lö?Ü·˜ Šô• +ïâ{k²ÍzÂKÃW(…J肋jG¬¥²Ì™Šì¥j’4СSíå,*&MëS %zg¥&0—Ïtªéêj Êb h÷ +ÂDã^àT{»‹Õú4Ò@š<Š+cR3\Æ2ÒHŸ"Š,ϱPf³p>XÈ—´5IÁ‚¾¤ï¸øEwÔW2Äbì +DýÅ1SNB‹x[g¯ÀB‰äP¿ÌÑí¸ü/ÊZ0§S&ìû IÑ’jB™– 8Žû@Š$ ÝHgrô‚­@" +EB‰H$‘‰}IJ  É„ à€€ €€`™{ŒO˜¯Xì+õõ“Jý¥Ri ½I™Ù¿IàøÈ„ð:!882 —aŽ>xuŽã<– Qò0Dlqx9./Š|ÄØ‹F pp§Ñ`\ çp9<_ÈÃ%±Ð(ùáþѼ”ª€ˆ5›bø;÷O13(÷¬:6δ¹=M0«*ïÁ‡süÄßn‰\¸K¡M?wJ˜Ô‘ßO<:±µåWËfWµ­q÷ùË7‡5]èüÃ^ «Ø¾§þdk×­Çó2 +õì¨9ÜÜvåöàp Z.Â$àóâ„ðh.D°&"€³ig àlnûƒØ™ê¦ÍUiyAsÜÃY|€ 2þ\qp’6=?"ú]^`¶‚ã7 ÁÑ3e Ø5oÙ¯}S´­cìÂGeÕ:û´Î|KPOÙî‚öáÖ¼ÒÖÐæ®¼w¼î¢–X¡î¾ÝÒÐd×ÐM–¡h³5jnv-©m/ž¸ÀŠÏ¿ßÝf°†žz½ÌZ¤îÎé"ÿ<ÛQÉm¼`Ùí¼[ÛÑÓi5×{«o½9„Ò72Ê¿VôD;FT–ŽN¿kýbèŠrdÙ/ÝÖÆÊk»ýpרòÎúSgzN Gö YkG£ê«ê—þúîXçpìàÖÔã¬ÎXÑ²ŠŸµdR“ߌðêÅ«ÍýC‹§ïnyVi³:z˜ŽG¿Ð|¦Çád)@ Hôz ËA1ä)¸Ìˆ+‡ÿàæ¹@\ÿ\"P Dfgƒ9ô@̶ @ÿ˜6ðØé¡Æ¦ºøRì5Ö¾D±hô*¥g ‹qñÛw”0“®Ïáú.%+£Í”°åÅ$Eš‹ákfÞ\9ˆ‘Ëcåq‰ò„°ybtLb\jß}ó<‡€}WÞ}¸›g»™á,6¾'~l¢?ê‰N=6ÉqçvR&+£óoÔÀæendstream +endobj +1198 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 28 +>> +/Width 28 +/Height 28 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 1202 0 R +>> +stream +H‰ì”-sÂ@†‰«•ÅÅ6.ËO@–¸ülm,Ë_H"q€C¦ÏÜ;ݹIjH˜*Vdö>öÙw÷îÒ4ÍèÙÖ¼˜/æÿ2Ó4ÝívUUM&“ñx܃ÁõzÅQ8CÍÇår9ŸÏeJÇ1°·Û y,í÷ûg2MUžç„£Ê˜2Ò%I¢&H“~[ZLöðÍf›Í†Ía®V+v*Q–e(_¯×ªâp8àЖ¢(2l‹I,{F /µÅÔ’2NÙ÷˴Bü2%Õï'CùÔb“äRH‹i"ÕÊ1©‹Å¢Ë<ŸÏ$µI»*Æ´£ae$bhÅZ½„ŸN'•VE·vä•eI.æUú®qìBjUzp€\.Øbêć˜Ýg_'ÉÛ›ùgíý˜¾ç9-jéìoA3ô~ƒ˜¿WE9qOi3uÌ/G“Ií&7ûöE0ïÛ- +õ †0u¬ß¹_̵ûjqžsFžÚ‘{JúQü0‰Ó5– endstream +endobj +1199 0 obj +<< +/Length 1203 0 R +>> +stream +endstream +endobj +1200 0 obj +34 +endobj +1201 0 obj +1522 +endobj +1202 0 obj +393 +endobj +1203 0 obj +0 +endobj +1185 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxlink.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 1204 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 21.00000000 21.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201249-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 1205 0 R +/XObject << +/Im0 1206 0 R +>> +/StandardImageFileData 1207 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 1206 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 1208 0 R +>> +stream +q q 21 0 0 21 0 0 cm /Im0 Do Q Q endstream +endobj +1204 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201249-05'00') +/ModDate (D:20030406201249-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +1205 0 obj +<< +/Filter /FlateDecode +/Size 2720 +/Length 1209 0 R +>> +stream +H‰¼VyPW›‹B$b­ƒˆ‚¶S!\B©šrµ"6$jQ‡!ɰK“ Zµ­Ú"¢-ÔcÄE™±ÒBÇ™J¦ŽàQ•c”¢‹• +¨n߾ݢ8í~™wü¾kïKÞ· JHøF\Àsmü^Ζ:²`ðíŒMà‡l²±å&6JàŒ /„_±ÇüGK¬qåÈ„f³|ÌêQäÚǃ€ôth!à,â¢XMÙî=6MšSàlÕ„¢yî˜å|‚öÙÐ +ÿ.cþïmèÌb[íá9yo³ƒ³yÙªÆâ©ÌŽŸ`cÏÊ4n8HühÁz@€L`°y_l‚ø—:XÅeLo´\x -i1êÍIÚ5º1»JGZ©«Élo‚4¬iãéÔxE‘YF4T† j™‰Ln^F,63ùíž#D6¸q…ÄEãr;L¤%ÛN%"M™†L#n´dA$If‚’bç4 EÆáFÜ”FázÄþÃlœsvd cIÈ2xÿçç[L„:f…Ú¾øöšD³·ÓˆÒJf°ÓÉt8ŒÃ×S æxuâb-IŒAlUÛ9K2HÓ†H"Ó`­Ô$öðñV5S]=žžf!(Æ=7Q¸/³ªíÝ´†h’ MãŠ+g¢âl†ÆÒȬŠÌN²Pf||á XÈ´R-IÁ‚¾ w‚_qÆóîèVÉÑãz;BÌÇö8)ù·¸ÂXï +,”Dõ` +ÀèVú7àòNlB,ÀxìMñðÖ÷i¤žÔâ©Ñ‰€G?2„€~“‰î©X,–ˆ¥‰Tîäè$÷˜$•Nò˜âææáæ6E.EÂ- æìää,sv‘É\Üe2™;3ÉÜÙù¿I@ÿ äbxœi|Ìðä_ŽÑ×áÑyt¦„,…®€|x8Pä –8:aÏ1Àã[.`|ž€'t‰…|i04Êù‚®ÂÈ÷ÒÜ|Ön¹–}5s–‡ê”68Ä´åb´ƒïÎä‡]}:sèäÇ?ò[´K­9]NÍ󼤹‰ÿUýqýeË­G±³¿<øÉ÷_5üz»ÿ›Î\ù}`YzÎÖ¢okÎ^í ‹[nX·­¸¢¶ñÚÇrÀãA¶ÄÉA$ Efº + ƒµ>nÂ Í…î ƒSª‹ƒgi»L[vF'{èÌ!}¾"†€ƒ_èéKD¹§>F3ÂoÚ(¼œÁì1 +t;òÑ3å@ ÔE —¬®ð­:±°¾|mÓ•®óÕ¹Ïîütþ ¢Jb žU ¥vç•)­W-5׿h?¸b8»ïݼ«ª¡|Îg{;êú;3ò ™”µ«7º}¬å5^“gÿÍÊ þÑ÷‹ »5÷: ~lÖµ?Nù%8ãÞSKë¹û•ùxgéèܺ¤§íÄJeíšÑO‡“ÚêôDqcÕHgÙHK{XnÅ@n >wxHY½e*¯d…üØUxc¥r~^÷‘íJúBÿÑý{ówå®km;~¸ýÏ™n4PUv箪?×”]ÕTÕ &_),\IaûÛŸ<±»?/0_ãë°.`Õ*ͳ¤üüm#îS{úòÞ?t·sùÃ35ÅÆÄÒ}„noQKršáÈPjÊÙå÷jZ’o­íy<Ò6lèð-Q6U÷lظ /¹7¯™OëžxT  ûc% ˆ–6ocÁp…9§·?/¡°’·§·*÷f4Ó@½?î­†ðÏSF±¡f¥æÚ“7¶®Xph{ÃŽª[%ž–^Þ2ú9hh@·±÷ú=kØŽûˆz@ÂW*¼ÁR÷f´Ë†nÿàá €?PÛ¿taüÁëLû˜+¼\ý»ØT äz{Õ¶_ƒÍá|à+ D/^¦S™° Û~ë¶L¶oÁ±Ž&8R9ŒVÔ¼—fi΀/¥0R(‚#!ŠyÞAŠˆÀ ˆ7Ñe/ÅØçÑ4¥<[Þi¥ü±=w÷EŸã&Ï›<ÆóÏöH.æÇËm•x£õouÚ€endstream +endobj +1206 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 28 +>> +/Width 28 +/Height 28 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 1210 0 R +>> +stream +H‰ì”?ŠÂPÆó°0þƒ((b¥±Yë¸ +.Xiç¶µ´´ é<ðž@qK×mL ˜T.!û™‘!]p7iœâ1/™ùÍ—7óâyž·yæƒùO˜†aŒF#8Š¢ÄÈÄ: êõ:a…lÛá*¡-ÙõCb ¦ë:|Æ"Þ4­d2Y©TðÖq + 1§V«…˜ 6ŸW¶ÛY–«Õ*§«ê%~þlÊzýÖlj¬ö&“±ˆ¼ÉÄuÝv»Å%6›÷T*u.ð[MÓJ¥²BL’´\®„­Ö3¶Ã¡6® ¿P(ànžg§ÓAÅl6Ûh> +stream +endstream +endobj +1208 0 obj +34 +endobj +1209 0 obj +1574 +endobj +1210 0 obj +438 +endobj +1211 0 obj +0 +endobj +1191 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 538.77 222.732 547.847] +/Subtype /Link +/A << /S /GoTo /D (ttbxresizingstage) >> +>> endobj +1192 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 408.161 187.397 418.124] +/Subtype /Link +/A << /S /GoTo /D (ttbxpanelobject) >> +>> endobj +1193 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 386.243 183.43 396.206] +/Subtype /Link +/A << /S /GoTo /D (ttbxtextobject) >> +>> endobj +1194 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 366.069 191.029 374.288] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomlabel) >> +>> endobj +1195 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [372.641 264.72 461.309 275.568] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomlabel) >> +>> endobj +1189 0 obj << +/D [1187 0 R /XYZ 109.858 727.97 null] +>> endobj +1190 0 obj << +/D [1187 0 R /XYZ 109.858 681.914 null] +>> endobj +930 0 obj << +/D [1187 0 R /XYZ 109.858 539.766 null] +>> endobj +186 0 obj << +/D [1187 0 R /XYZ 109.858 529.042 null] +>> endobj +963 0 obj << +/D [1187 0 R /XYZ 109.858 253.761 null] +>> endobj +190 0 obj << +/D [1187 0 R /XYZ 109.858 243.037 null] +>> endobj +1186 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F19 516 0 R /F55 716 0 R /F34 719 0 R /F50 672 0 R >> +/XObject << /Im20 1184 0 R /Im21 1185 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1215 0 obj << +/Length 1413 +/Filter /FlateDecode +>> +stream +xÚÍWÝoÛ6÷_¡G ¨XñK¤¶§%ÙG‹véRoÐöA‘™X‹l¹’ܬûëwGR²"9ÆØ¦Èû¾ß4Hà4Ɉ–:PL‘LÅf‘wpòó‚zŠ˜S¢5,ñŒ(»Û‰_^(“ f$ÓR~^|ø”+ö¸D¦ƒX'„‰,Ø,„ÌSÚW‹÷‹ß)îLƒ¨™A=Å¿0)Vè–†ßÁ¿³åâåO, ì÷ò6ðž`¹ú^™Ûˆ‰Ð4f[˜èÓòõâÇå ‘&@ÇÕ©€õ$'”bØ•c­K£˜1þ¾-;·Zž]_Ü¿‹8 ó­©ÚˆÒìòm²â4ÉÒå šÎèGQ‚M­–\&å)«{’™Õ: ‚p‘öv#\Ò,!’R«í—Ò4yQ‘ +׸øê,”ÉÁBGBtÂ,Ïò<Ši¸o»zÑð¼ÞFàm×ÔðQÍ"¾iFƒTjˆ}]KI°ñ+ø¡lŘÃ1C$“\„î_9>¯¥Ôù§B•±!:c‡àxëè=»ÇÞ¡˜ÇË›(–*üÓÝÌW‘Ð`¤f–¨4%hÉÁ‡ÿ0L­ÄéhxšI4–‘–¡ù ¿;ø¼ÄÅ©¸0"¸F +çqa$¥ü˜„kz:0žæQ`XžÛ²xSBT¶÷ó@Hè-<)8JÙ7 D_{±Ì ºÂ1‡$$)ázšé7¸:x3é(Ø–í´ESîº:‚¥ÕËPÆqp'f<à^Ë +¿îƒó4 ËiØöz7vQÁ +Ú”=êêi\UDB$ç´ô9ï9ã« ÑÈô©ôG¶ç{¦B3k|L%$Õü‘MÓ\÷4'µ+aï˱ö‡²[»pÁ/ ‹Ëåö¼* ìS÷nÃ|ÁãÚ³ÛÚùþuٮ͊@Ͳ4|µuÒòÕ +ŽJ›@¾ÀMm |íUT%xñEnÓ 8K; ˜•ÖDKX`Œª=¬V(€sè î·ÜäwvKàœ»íníé,gŽÖZcOë~÷[´Ò4΃”žýaÝox–Ávг©÷­_{¸ñÄêÆ wxºƒŒê°n!°Yo—^c]H‘³éMöÎÊ!™¸°ÞÒ>(.o?x ¹c]A½ $cʇ<¡®ÛYïÈ$4ÀÔ«dò9}ÍsÆ#Ö)ʦÒLJfÏ¡Ùw—‘kò›¼ký3Ìs"Áç±sÌ;šSÖLå 5/|ž|€Úýng+¯nºCêŽÁæsïp³ÜÞy1›¼¹³ð± x1€s€RÝ Xò‰¾í¿óÝËJŽtEq™áôÍIÊÝ„x^åmëC˜ ßî«®¼¨ ¸îgݦvЀâà±ãýF¥ÎskLQæ•G‚ÕBz€²Eê­î1¾ޱEÈ4Ìo*Ócžú)õH“w8æ‡Îý¼¡‘Žï”‹Á†,¼jXä0 &é7ºüFž¼ü¸Ê¥Ó»Ïæ~­ÍÙÈæ“·à[Ó­ëÕaÌ£&É^™¶üæ²-o0ˆ•=f±I‰æ  A Ͻ­æoOˆÝs€=zÄX×= š´k"–„uaVûÆ88…Á?R¼ñ²7ØÐx‘8ã?&2ùÕàîÃ{O÷M¸j:sg  ßχ§ê‡d¾ì¯,ÊA™ûõ…ZU“ûb—wAÕög¹ïy3¾Ulñ6þVĹâ«+/Ø À—Ê—Ûyƒ·¤|-}÷Þv…¯þ;|æP6wQ 7ÉûÂÖQ]U¦yn(`smÍû7<Åfã<”5d™H¦mÓ >‡·âjm²ñòÕsQC]‡ÒâÔN¦1™JlÔÏúG¾?üŸ‰ÁEendstream +endobj +1214 0 obj << +/Type /Page +/Contents 1215 0 R +/Resources 1213 0 R +/MediaBox [0 0 612 792] +/Parent 1167 0 R +/Annots [ 1217 0 R 1218 0 R 1219 0 R 1220 0 R 1221 0 R ] +>> endobj +1212 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxpagescroller.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 1223 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 21.00000000 21.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201301-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 1224 0 R +/XObject << +/Im0 1225 0 R +>> +/StandardImageFileData 1226 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 1225 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 1227 0 R +>> +stream +q q 21 0 0 21 0 0 cm /Im0 Do Q Q endstream +endobj +1223 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201301-05'00') +/ModDate (D:20030406201301-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +1224 0 obj +<< +/Filter /FlateDecode +/Size 2644 +/Length 1228 0 R +>> +stream +H‰¼VyLWÿfgOX–ëT´U\–Km*rCE¹´Ö–°»³ :ìàî¬g)žØ4mW‰ÆFÔª€mªQÓPb“¦µjQ+±´ ¨ÔpúæÍ쥘ö¦ßä½÷Ýó{ßìûÞNMÉΕFOð ME6²K´• l=âÊÛ¤‘ئqG$­¢¤~X”¢1Ë#½e²Ë*g!Dùˆ–¢<>¼,èqdæ³`ŠÙŒ,4šåb” Ùµm»K£Çó<4;5ñxžìÖàœO0_ À IäÞüßÛðž•®Ú£}Jf +C´vUMGñù– ½@¡â#”‹,E») P`GZ0@£‡B¸êéIÄù^èषÞê i´HxhÆa5Ùó Œn{¾‘qn¥© £«Å™&‡2³žr +ËTˆ2†‘o)c=d¹.7Röb:ÇÎç÷z Ûp-XÈNóÈ­°ØG¥—JÎØÊ-åVÊê¨@’:½€ÊÃ:$û•:X&“²R¶R–2aôË*)ÑÙGpæ5¼%»Âö?ìŸtØèÂô¹…ÞÅ÷ÖäÚ-”—F^J³…¥/ÆH¡8j)›mÏ*ÌÍ10 Í”Nµ—³ªŒ±-O¦Ë-ÎJù ›Ïrªùêš(s©ƒfy÷Å”½ةöv÷5XRš±yW+¤dº <Œ7+¿ªX¦2ÏÁÚ)ÏÂùШÏiÕ†E}Nï‹>qÙ³îø”i1Kˆ=)Kü‡zžšÉÄÂ8Ï +*”J‡ô4Œ‚»Ì]‡€72²3€¨We¡.Ðêdc JRsAÂuƒK`ZÉgâÚ`-¨•J¥J©V©ÔZ__mˆ¿Zí2"(($(h„VI\†&ÂÏ××Oã Ñk4š`~Ò !Ú“€û´J´P’‰– µwm]Â&’JI, ‰6'•ÉJ•/ñ¬‘ é4!%H‰T"SÈ•2R‹ŒZR:60F–<»4(|Ñ*½³è7¾úxQs×÷Õ·F7Nl~2ïì@ÿ‡M{û-¦­1¿väë­§èƒTwEÁýcÕq–ͬϼwíʘëº×Õ\»ÝÈAûÎÚ]Ý9fpí¸ŸºuÞ5¿“Ñùñ丹qöQó«rªÍÛVߘ±áÖ¤I;Zô÷·O½Z´¡m£ñ`yÃÅËW;âwš.µ›h}ºùŠŽ·óf·V%åT¿Þ‘¼¡ÉÚ7®¹çÝ®ú¨’+\¿;±¥cpÉþÞcÇŽÙ¼´ñðœÔ +Ÿm%GûÚWTÿXÜ\Ñ{öÏÚŽåí–žuƒ“­­¹¿¯v~¿ÿ½zÊß?ßšØÚWU±3ûx"—Â9¸ÌÁÀµû‡«…ˆÓŽÐø:ӖƳ%ú‘i{Ï̘’¶ë/íGIµOë¹_ð™‹sE©E½’Á„®<ºðÂ`”!žEÃŽ¹JäôaÑ ×?“pü£ŽÌÍ…Wø +"Àÿˆ€2±ˆ—\üb‚胮E"_Ž|7±z_³¾\è-hì@ã;4JD¯¸K„Í*cXÆ^†.ŽÄhèuºØéº¸éº„0½nz âcð¬#„÷q@Ä•7´Žtóâù”¤ˆMæÆOŒöÄú˜˜ƒˆ”¸s;)K”ñú·Z¦2endstream +endobj +1225 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 28 +>> +/Width 28 +/Height 28 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 1229 0 R +>> +stream +H‰ì•¡Š„P†0(X  + + +lÔ7š8Q}ã|ûT} » ‚ ‚ûï¸+2vïŒeÁ?\\ÎÇîûÏóLí­ù¿1§iÇq¤š¦Y–eÅ–Ù÷}Ïs‡çyQ9ŽveÖu†¡ëº¤@ß÷ÑDZ®ë’$»2«ªŠ¢·iš1“$Af´, XÞ‹ ·ow ‚p0æÁÜID[õ«ORàò/‘ÎŽïqóáêspÏóQyé{ûøÀ4 Ã4ÍwdûÿzŠz¿ÝEyiGž‡Ã½Óñ×+Ün³#Ë2۶ɰÐéf{>#ã[&2®( +`ó> +stream +endstream +endobj +1227 0 obj +34 +endobj +1228 0 obj +1484 +endobj +1229 0 obj +322 +endobj +1230 0 obj +0 +endobj +1217 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 645.052 187.397 655.015] +/Subtype /Link +/A << /S /GoTo /D (ttbxpanelobject) >> +>> endobj +1218 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 623.134 183.43 633.097] +/Subtype /Link +/A << /S /GoTo /D (ttbxtextobject) >> +>> endobj +1219 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 602.96 186.93 611.179] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomlink) >> +>> endobj +1220 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [216.553 530.502 271.68 541.351] +/Subtype /Link +/A << /S /GoTo /D (ttbxlabel) >> +>> endobj +1221 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.117 506.592 274.565 517.44] +/Subtype /Link +/A << /S /GoTo /D (ttbxtextobject) >> +>> endobj +1216 0 obj << +/D [1214 0 R /XYZ 109.858 727.97 null] +>> endobj +964 0 obj << +/D [1214 0 R /XYZ 109.858 507.588 null] +>> endobj +194 0 obj << +/D [1214 0 R /XYZ 109.858 496.865 null] +>> endobj +1222 0 obj << +/D [1214 0 R /XYZ 109.858 343.404 null] +>> endobj +965 0 obj << +/D [1214 0 R /XYZ 109.858 289.536 null] +>> endobj +198 0 obj << +/D [1214 0 R /XYZ 109.858 278.813 null] +>> endobj +1213 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F50 672 0 R /F8 369 0 R /F22 363 0 R /F41 556 0 R >> +/XObject << /Im22 1212 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1233 0 obj << +/Length 2626 +/Filter /FlateDecode +>> +stream +xÚµÛ’›Èõ}¾‚·EU†ÐhúÑc{oÉz[©ujw‰‘ˆ(€<;©||Î¥ÒLâMR®1}9}úÜ/-$ðO"±qžæ‘&¶&Øn’`;ßÜ)ç9 q/6´Úˆ¾Ÿ “ ’±Í-Bþýæç_“` ؾ‡SÚæÁŒ“Xjntjcir7¯o>ÜüyÄÂ{&Q]ä!þ’"ƒlåðù»]ßüákiš¯ïáÖÛŸÃ÷åýJê°ìÊfS®~]óf=b À)óœÀ<È3—¢ØMªç·þ"e¶Š¤Ìÿ4ÕÀ£õíÇןޭ” ‹¦¬û•a|,z¤‰Ðå±Í2ħ…•Ôp?¢ÒjIuªL,Óô9ª=ÈÕy t¬tæéFsÉl§BÐmßVeWt+‘†›• ÷8xd +Ód¢#‰óDÒ™õO«H„ÕJ„Í«¶Y«Œ»¶¾70–KdiOšRÜHƒñˆ…aEhQ¨žØ¦lY± +øÏ°ýLÓ÷gúd¦£L›ØX9ŠfÎß(C\®‘ËÛ+iÃW§~hïpXìÊൖËnɱ !ƒÙeº²&VVÌYùÝBñŽ2•ŹRÏ3'Ó87úœ9¾Cz®`^3W ÛA È¢ã¯Ë~ÓUÇ¡õl°~2-[‘À‰r·Ýâu½qò®ÚàŒ/q­‘Ò)™UÏâÁ¯‹z(»Ö‹¡úŒÔ–¼?´¼?ìQ¼Ö#Ê¡@è-Úu¸e˜µgóé»5¯¡EÛpaÄ«H®÷•#hã¬ñ™}á6ïÀëMHøK’Jà!è9%Al˾Ú5åA™~üâIb +'ǺØÒaÅW¶–&A7Y¤™ŠS£¾À#üÉhv”Œf¦Ä%ö¹_Ù ,øïÓ*ÍÂâ®fxcjüô""(‘AtÕgT_¦,†y޾%¤Õ%Óð»IÊDò"6,â,<¢•Ï¥œ†SkæPÐÊ£Ûö&†&ÃØÏL¡çC…û>8#EÀ_LÖÔĉÉÀ 2Ê0_äiö|?{@Ïkþt›ÄíÁÍŽ' ÈGbº¥-·AÆš‚‡.Bþa'ÿààæïd(¯'ÂZd«¾mÑ~ƒñ?‹ºnÁCÕìØöÏì¾ØÐ¹’HA2ÍÞ›)¶£=º}½õ+Î ÇÄâŽ<ìˆA˜oXÚÔUé iN>O‚*²rgë¢ÛW„Çè\ÉR`Û–Ùaøö~ ¦Ã#i GÄÔ<ÐÕC_Ö÷ñy|ë°£M²>»p&ÈX‡fj'VpÜ·§Ei߈*¾#="÷UQóÞ–«_¡˜’²ñJCá#ªªa@Ï ®‘ÁHÎ#oR cYzøÝ³!Ôå½L‰ðëUréx·ü­8ëÒ±@©ŠoQÑ|¸—Rçq…EƒZS]qö¹ÂÛw µ°\ñ¾H(Ýɇ +¤í—5ïž±7 r„ïx­pœ bºá24øn㾪½óÙ+Z k¡‘­KCE³qŽïY÷g‚^š4ðç*TN1&å³â¬Á2`[ºY±‚ÝÁ­«ró³Þ™¿"?Y\é¡-°ô¬ä›»/{AàW‡5Egjª1T¹mu¥eð=®‚66“âÓ/Ï=Ù/K›ÇY&¯÷Ëd«(5ádÿ¯†Ùß•ò]€7å ¾~ ˜s}Hæ…s4/n…)—Áʘ×àT“%0ã.ÅFÂG†SQnJ„~Q} è–oàZ†zÚœ«zÜœ.˜\µÎèÉyiµKƒÐ WúQ£ø’· w2š½R ìDÒ“/¹Ë¬ßí/„²Ø@Ì›»Œæ9²$xO’fgdaõ³¼NÙXËß#òY"Øgõ¯¬Ç§1_ ]JÄšØ$öy‰8˜g‰Yàá'Êt"7àyâ¬üø+Õ¨'$UÎj ûÄ&íôɽ…hs¹áÀüá*_([a*ÿ]ÐfDÊõ{u}^eDÞ-ÔuÊ®­—úkqª.ªµQ®ûÕš½•¢ˆ°“<¬ ½«SÞ"Gm»‹`©7…C7'¾úÇCüLÕÜÄÀ\{ ¹l½ K@65Ö?noê·mS^£*„¸•¤¼º¯Hש.Œ7¸4tDéŒr¾õ;ùÝ1üàbelõyÁ Û¹yâ{E¤3""õ}Õóâ]á|B\מ¨†²>Ë2(ëñ4ÁåîkÂ1 R4¦"R#ma`¤/FZpñ7Þº›v¤’“{v!ÂF%ù’fTìrÉé²'ê¹;mJw¸j®í¯ËúHÔ³YWƒÝ¡# ®{F”m÷iê§©üÚ–ÎX&!Ží«âÓa&Bt¼¸ÇÞ—\eö׺jËÑÅlüêGWìx+õ´Òqof#x‚k,=ÝŽÍ’ „ºr[-´_ã+CþôÃEŸ˜Xš4”ÑúJ¢ÆßÉ„ÅßÉø70ž-ê+š!»¨ì2™ïCi½yÿáÞÜþ¹øæíkWýMÝóô†¡Ç‚Ï… ¬z ZJ²EÿÚ-U)ó|‘ñ±o¶†dn¦§#<Ž&Ì{‹7t^ܲmÒœé¹1LFìU€ëôP‡/U¡r ª¶ ŠË³ÿJW4CvñÚœ§±f¼åö_{^~÷vÍÄ^QÒ>¾›u$ uÑßv +õh´EŵC€¯Ëq&ò3%=TuÍÞ„èÚáJÐû_|íD‰Ž{ÞYMï×yôþjrsŠx9Æ¡öDï ¾›?ÿ•+äTAÅzõg^-ñG.ÿ+¯ÛüÚ N?endstream +endobj +1232 0 obj << +/Type /Page +/Contents 1233 0 R +/Resources 1231 0 R +/MediaBox [0 0 612 792] +/Parent 1167 0 R +/Annots [ 1235 0 R 1236 0 R 1237 0 R 1238 0 R 1239 0 R 1240 0 R ] +>> endobj +1235 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 645.052 218.208 655.015] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustompagescroller) >> +>> endobj +1236 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [223.368 560.639 317.931 571.488] +/Subtype /Link +/A << /S /GoTo /D (ttbxdockablepanel) >> +>> endobj +1237 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [480.496 438.099 538.252 448.947] +/Subtype /Link +/A << /S /GoTo /D (ttbxalignmentpanel) >> +>> endobj +1238 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 426.144 156.932 436.992] +/Subtype /Link +/A << /S /GoTo /D (ttbxalignmentpanel) >> +>> endobj +1239 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.882 233.427 217.731 244.276] +/Subtype /Link +/A << /S /GoTo /D (ttbxdockablepanel) >> +>> endobj +1240 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [238.432 233.427 298.706 244.276] +/Subtype /Link +/A << /S /GoTo /D (ttbxpagescroller) >> +>> endobj +1234 0 obj << +/D [1232 0 R /XYZ 109.858 727.97 null] +>> endobj +966 0 obj << +/D [1232 0 R /XYZ 109.858 427.14 null] +>> endobj +202 0 obj << +/D [1232 0 R /XYZ 109.858 416.416 null] +>> endobj +1231 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F50 672 0 R /F8 369 0 R /F19 516 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1243 0 obj << +/Length 2122 +/Filter /FlateDecode +>> +stream +xÚ½YÛnÜF}×Wð‘ìô²/¼eŸÖŽ²Ø ÞxãÉ:@’j¦GÈ"µ$G‚ÿ~ëÖÎEŠl Ã`OwuuuÕ9UEJG üÓ‘NJU¤E”›\•y´¾¿J¢[XùÇ•‰¥Õª(`ˆk*§ÙDdøÓA2‰–F•E‰’ÿ½úõ÷$Ú€¶ïa—+‹è Ɖ2®Œî¯\Z*“ò»¹úpõïI ¯åѤêÌ  ñ +“–9^«€çt¿7««¿~gʈ~¯¶‘HˆÀjókü“ß.Œ‹}ïÛµ_ü¾úþêz5iÔ ÈÙü%‡‘E·ç©›Ÿú›1ÙbiLÿÜÖ#Vo~ùöîýš¸j}3,´ŽÕC5 M¤®Pe–¡>§KeƒóQ•s§V§6W&M_²:ˆœY]DÚ)ë²`7Â%+•jM§½ï:»ß/–:‹ÇÚ ÔZ• v"8@-hχû +¤­ÇïÐÕÝz/{À'Ó¥–.S6à *—Ú÷Ð/Rw£_¤&^ócs"©Âš(s¥*“# ÇJd—3a¾¶9 +]ZDēȥa0~bóžvY§Rg$"|_—à}mB÷ýîï\ü¦ë_µãýEGd–n/ +–ÚÒd¤æç¡noáÀÌÄãBÇ;ÏcÔŠ p$L1z“ÀJ FÒ¤ïÇ<>¡Ø_`&Ïâª}/¢cP¶Ey¼†`Æ{Ø>à †A8ù†Ö=Nï`ºB­u‡ŽÈà´mÐk¤ÒÆ(敤iü¯k£×€?î|+‚µÓ;ìO!œ¶À/µ G—ÿÁ²s…ø[5¸ÕŸyy“Šx%Õvò¬ËÅ ]»0e<ö]ÓtëÇc$7tÑM…nßðü#¢BÑsàùÉNœ‡2=x¡ÈÓ˜ïÜËùxvÁgS(\^p0x}sо€ Ü-RˆêMîEÙàú!\Ž¥Azs»Nó#_>Õ-k±'ºlµ¥5|+[胚Ôß"2„ ‘5;–{†¤EÇ%àŠÁpÒ³Cç’–÷´Ý( ßQf†Æaä©5*ÜuõZDÁh=ÏXò ?ÕM3·ÓW /€ l€‘òÈIHbË”‚Ýw÷ì 6÷UÝŠ ûúŠ'-¶´ÀJôæ¾1ŒÚF±¦*ô^ݵ€Ìdñ·{Ö‚'b ø0øGï«A€KÑsIy°æb²À…‹É‚Vžp\]$Ó®M1Âû5]‡jÚ“QI¤\èÑõ*ˆåt?<m²ñ¿b2éÎù]8HÆV¨;öû­#z­ò"ð›|ç¢w{2ñ­÷rZÛ·útg^ò^¼œÑÉ·,@á”8áѬ$<¿i„15)dg!ŽO8$„%“ Âó)äáqG{u’© z³yDBÞµ:8—À§“ðÁY O>äwõºë€ µ} Sœ^ðº·'»¦…ðixî©w,öÊ k ɶÊù5¶—å"68{ä¡`ÙÈ> endobj +1248 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [244.674 358.87 362.732 369.718] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustompagescroller) >> +>> endobj +1250 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 239.895 203.329 247.422] +/Subtype /Link +/A << /S /GoTo /D (ttbxpanelobject.onmouseleave) >> +>> endobj +1252 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 159.261 202.866 166.788] +/Subtype /Link +/A << /S /GoTo /D (ttbxpanelobject.onmouseenter) >> +>> endobj +1244 0 obj << +/D [1242 0 R /XYZ 109.858 727.97 null] +>> endobj +1245 0 obj << +/D [1242 0 R /XYZ 109.858 681.914 null] +>> endobj +1246 0 obj << +/D [1242 0 R /XYZ 109.858 527.423 null] +>> endobj +1247 0 obj << +/D [1242 0 R /XYZ 109.858 413.618 null] +>> endobj +1249 0 obj << +/D [1242 0 R /XYZ 109.858 309.758 null] +>> endobj +1251 0 obj << +/D [1242 0 R /XYZ 109.858 240.891 null] +>> endobj +967 0 obj << +/D [1242 0 R /XYZ 109.858 160.257 null] +>> endobj +1241 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F19 516 0 R /F55 716 0 R /F34 719 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1256 0 obj << +/Length 1350 +/Filter /FlateDecode +>> +stream +xÚÅWYÛ6~÷¯à£DŒxIdûïöHP`7Ž Hò µåµSÛr$m7ù÷á!É–×h›´Ába9œ{¾Iá–ª•&9Ï©ÉÉb7IÉ=œü2až#Œj K<£¹Ý­Å/g=gJN6ÈùiòîCJ– íÜ’F“GX§”KCv© å¹öôvòfòº“âÎrÒ‰8þ†IIŽniøíü›Î'Ïæ†Xz¾"žÃ3Ì—ï¢Y¹Š¹ŒÊºÜ/ÊøÃüÕä§y'‘¥À'òK ,”bØs%‡ZßsžÅ ç:ú}¿iÝj>}{ýÇm,xTìËm3ÑCÑ MVœ¦&ËPžd† +.A?Š’êÔj%rÊ•ºdu`Y­ “TÈl¬Ì¤T1f•]m‹¦ñ悽³b¹©¦m[홚°Ràm¨$¼¼T¡ÝpûEœ!¢nÅ,ª’Ñ,AnìÝù"N,ÁMÔÖÕöÔ=0KC²L€*´œ|"}U¦® O6ž¿ÜqA®+(=òú¨`PTÒËG!4M&2*·Žüº)뢎™[óh‹/.*íó„-’RºÐͯЭ‡¦­vàëú§Ñ? F.2ȰæŒd©¤™áOö˜í¨”ìüJB±“K\B N©Q®Å¨ î?wÔ“³£Âv~'Êš ÑEgèb` +<ÖÑ9::} ŽÝ¢XÍ7wq¢òèc¹hG¾jˆ+Äh fT®YFђއËÑð<'јÇZEåg¤±Üopq).œJ!É@á8.œfL|óÀè £/ÆóÚüʶŠ‚‚€?=¦ C±-h:Ç)M,¿EHBZ‚'Â\v TŸ¦|æ¡nÚ!œCó!À LäÔìuÙ,ê͡ݜAÔâ.%œ¡×¦¨ ÄwXœpÅ#TŒX­´ Û*¶hE‰Wê=F»Ýü‰-Zºã¶rìÈ´.ݺi‹=Ê.ê¥cªC–,åÑ;è\XCg·4N$Ë£7h NW+ÐŽ;4/ØæÈŠ¤pT…}‘Eƒµ‹ö†ƒø0Éuý…âôUó€p]GXAuÛ¸;M +<´Aµ{Ö‰ÃÁvÿ 6ŽvE}AÜ7~£À-ݪ]w‘s;û@?:zè¢}@ýeƒ„@½ôŠmšlI 1VOÙrñÓÔ‹Èã{Kdà2¸Š~æQ…nX?aŽúJp#´·vìžÿ؃ 4úÜ|ŸÇ‹¾D>·7w¥žój8æÝßíÂX/l @M¶Uív0dam3® ->6n÷ ®µ2Ý'õLSQ‘ëah•ÿkf øNH!"ßuJ ®hªøEÄ +<_1³jþÙÝá°€ü¦æò—ˆHe06ÿñì=ƒÊ$НeÐ*@k{;m}}CgÒb þîç®hJ\)=–³ôíÇ+·F¥ßëa©3M»ëÍ“ºvä2@Ãû”IÀ²qJ¨òÄž!ÛÂQ®}Q{oˆùˆoçyZÚŽ¤æ°-Pù‡µº˜žÏ …omûVtžep©ì_GÁ—9àíÅvs¿ß•{Ÿcx†u%“È PŸ¶˜‘ûPÇ +ã[Æ8ÌÜÏrÜéÕ‚–iš½ZÇŸ#ž5éyÝ ƒ½±p=‡·‚§ÞOX´§$ë. I•äþعø„UÂ$ø­\µ³Íýºýq\¬þf=e¸òÅ•ÐÍ3?OÂG®‹-¦Ò*±è!{†Mùd>_ÓþSI@FϾö%|ÁDô}ø‚bÒendstream +endobj +1255 0 obj << +/Type /Page +/Contents 1256 0 R +/Resources 1254 0 R +/MediaBox [0 0 612 792] +/Parent 1263 0 R +/Annots [ 1258 0 R 1259 0 R 1260 0 R 1261 0 R ] +>> endobj +1253 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxradiobutton.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 1264 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 21.00000000 21.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201305-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 1265 0 R +/XObject << +/Im0 1266 0 R +>> +/StandardImageFileData 1267 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 1266 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 1268 0 R +>> +stream +q q 21 0 0 21 0 0 cm /Im0 Do Q Q endstream +endobj +1264 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201305-05'00') +/ModDate (D:20030406201305-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +1265 0 obj +<< +/Filter /FlateDecode +/Size 2578 +/Length 1269 0 R +>> +stream +H‰¼VypU/›³IC¶i)P¦¤…¶¢Iz1ýÃÒ–©D  ãtrl“à6Û&›:U +£Ãt¯A`€‚ 3Jÿ`8…V`œŠ" T +µm¤¬oßn.(£8~™÷Þwïï}»ï{™Zh±JÓO:ðME6¢W´Õ>X ú‰+o“¦c›6‘¿Xˆ’ÆbQŠF2–GGËÄ],«‚qPˆŠ,exbxYÐãÈÌ—)uuÈB£Y.F šMk> +iÌx~ÍAM6ž'…58矘o€–ˆßxóoÃ{V†jö)™& Ñ–ªš á9bN½@cÅA¨,úÙÁBà6àÀ )€µ ð +OyŒà0Ùžè$]Xï Ð4Z$<0;ð:ý3íóa{…ƒ57RÅ4hÆë +¦™AÕ±‘r!ËÔ‹2†Qár³²ÜO{”¿†žáçóG=G†mˆ‰CCËôˆÜ +— 4D©äŒÏãòx)o IšâJ>h&Ö!9Ö`™RÊKùl,åÄè5P¢sŒàÌkx‹¥ÞeøöO|tUñܪèâGk¬~¥‘Ûh¶ÊæŠÒiŠ£²Y•u†ahÞ  ª£œUnÆ÷jíq+5BØ|YPÍW×IÕÙ4Ë»7Q>v÷š :Ú]mw14ã‹(.)–† <Œ/¿ªX¦af€õS‘…‹¡Q!Ójì ‹ +ú˜^^±ûQw|ÆHÌB±#Åc‰qBÇÓð"Q&&xVP¡TF¤Œ;Ëý tå%–%u*äÍõM“±SµEV á~Z,çb>w,¥R©RjT* ©ŽQ“ #4š £ôú½~©Á$.ÃŒU«cµ±:­V¯ÕjãùI/„ÿ&wJ´±L$ä.¢­K¸Ã0¡”ALb ´9©L®PªbÔðQ#"hÔ(…„D*‘)äJ¡ÉDF’¦Ä™d³múÔÆ³<~Õ¦…ã'$T´gfù–œ,R¤­®¼uù¶ÃŸ=²mçÒôéïV9‹mfsOU_¡îìZöÍ÷«wK2ÞÛòæWïþá—þ¿>rúךº¦ålÝÝqæÚ`néׂnkïìêþƒ B+ŘrY6†bŠ“"©z™¹eU<à`ÅÉ[™ì—}KVU&8üY·Óä<Ezö¡SÄæDgquK] Ax2‚Œ0îÐø™$ÈÕ‰ó^ÿÚR×[†4ÇîšîýÒÎSL=/?ŸtóìzÇçvWÀúî»Í[yŒnÿéö³­Ûï-ZÃ|v¦³sϽK×nô7'Õ-o.H+Ý6{pZ#qé•gÞg»Ð÷Ý® }=ÎqàFùò7¸Õ%­ëL¹+‹®ïìZ› t7g¼¾ª=÷áùúò;–‰Ýû¾²¹¿ëí®½m7·d²¸z..¸¾¾§÷|Ïý [jöwç[†Vüå?o¿ÿÜÖ®æI?-¿¸cϽ>{í<ØmìîŸÈlooêÛ’ÓÛŸoíßßX;TysÃÚÁæ}³u‹ã®äµŽ9a.Ÿ»÷“–Ñš¶Š«Ûf );Æç@5¸ñ™JÁßLµpêP¯èââ¯- +À,àF<yù1×€<ôÿàa¹`20‚ÐÿŠTüQ¦[­ài¾ÅŒC0Àÿgdây¶Ã¤?>%ú k šðåÆw4‡øå+¨PxǰQÊ;v#æÅó%‡„ˆM‰Ž ã‡É‘øQsÀtI8w‚ý ¯ 0äà€1endstream +endobj +1266 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 28 +>> +/Width 28 +/Height 28 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 1270 0 R +>> +stream +H‰ì”1Žƒ@ EáÀ eJè(  ¤LÚ½ +pÚ´”4tp €°?X²¬, Ý!Ñ6q1²<Ö›o{fæyÖ^mó‡ùa®Ù4Mã8Ãß²,Ó4 ÃPf­ëºº®9èû¾ã8ûä-&€ E?MSŽ“Ç1È[Ø-fß÷yžAædY†5I$ضý{&D6Mƒ’Áü™PUUeYzž·*u•É"yW×u™LØ-©«Ì¶mÑIfPæi®ëþ#óµóŒ´eÄO»j3b©pÂ0A±îˆÜaÒ§v‡Œøè¤Â×ÄÛŒ¢ˆƒ(Y¾MÊ#_ëÁ?äÑÓ Oëë~çV(ÿutšp¹^Á<ßnh¨Ì$…2Âj0ó…™,4²ƒÌwÔþ¤ö%3’jµ?Þ%û`,7V¼ endstream +endobj +1267 0 obj +<< +/Length 1271 0 R +>> +stream +endstream +endobj +1268 0 obj +34 +endobj +1269 0 obj +1418 +endobj +1270 0 obj +311 +endobj +1271 0 obj +0 +endobj +1258 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 590.993 187.397 600.956] +/Subtype /Link +/A << /S /GoTo /D (ttbxpanelobject) >> +>> endobj +1259 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 569.076 183.43 579.038] +/Subtype /Link +/A << /S /GoTo /D (ttbxtextobject) >> +>> endobj +1260 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 548.901 220.847 557.121] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomradiobutton) >> +>> endobj +1261 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 322.312 187.397 332.275] +/Subtype /Link +/A << /S /GoTo /D (ttbxpanelobject) >> +>> endobj +1257 0 obj << +/D [1255 0 R /XYZ 109.858 727.97 null] +>> endobj +206 0 obj << +/D [1255 0 R /XYZ 109.858 703.064 null] +>> endobj +968 0 obj << +/D [1255 0 R /XYZ 109.858 453.53 null] +>> endobj +210 0 obj << +/D [1255 0 R /XYZ 109.858 442.806 null] +>> endobj +1262 0 obj << +/D [1255 0 R /XYZ 109.858 200.743 null] +>> endobj +992 0 obj << +/D [1255 0 R /XYZ 109.858 146.927 null] +>> endobj +1254 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F8 369 0 R /F50 672 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R >> +/XObject << /Im23 1253 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1274 0 obj << +/Length 2537 +/Filter /FlateDecode +>> +stream +xÚµYmoÜ6þî_±ŸÐ剤^SôCœ¸‡í];H€¦”]ÚÖeWÚ“´µÝþù›!‡µ«#¾CK"‘gžµ|À?¾âAÆÒ(]%"aY²Úì/‚Õôüã‚b-9KS¸Å>–èÖ tû®G«µ`Yš!ò?¿ý¬¶0ÚðV˜¥«¸˜³Õþ"Œ2&’”žw׿v£˜¾dÕ uFÈ"žAià²R¸v뻼¹øû÷"[éç›Û!p³ýÍ{§n}zªVåFù¿ßüxquÓÈÀÉdÎ`23)š=‰BwÖOBÄþZˆÔ{_­¹»¹üøöË/¾^^ª]ãsî±CÞ '=\ʲ8ÆñBž1)B˜‡ +ãSÖ‘L˜ˆ¢9Ö2šs–AñF¹Ä™d<àz¶Ÿóú®(‰¬©#µc&ct ¡±‡Ú¤WµÊ„·1—홉yÌR)Vq‚×Ûs[ví€ m10¶&M""¯:¨,xí“¡òî-²(dQZã+-Ãл¿¼©Ê¶®vÔñ­y=]e°x©Oï¯Á3™ˆõ(ïÈÐÛë·|î5æ¹­ð*½¿æ^Uú"óppÓØÞ+ssÈ·ðÊV¿xgš>ûÔS­|‘xJá%ö +ûfèmpÌÔk•¹˜wór{Ãѯ:Âøå6¯áR(bXÝZ2ÐJð +ðQäý[iÚ-t°N™½d0+$, +Rm‚ëû +Uüðz³Q»7÷0ɼløWȆƒ6eöLÙôàIÙä+d£W¹«]ËÀ#]VÕNåå’t"=Ò[ÕjÏ¢SöxS “¬w`-ò+]÷£Žº!WKóÖ‰¬´÷òô´EEEc®Û¢9ì 'Gm=á$j«ŒnfNHfô(ð®á™XÁâ±£3ôZúzÝ<ëÎA5A‘ñ¾÷“ÄËw:3,6Ù}ƒC†¸j˜ìÉŒ¿AºH)¯ó5œîÁeÖF°j«¶¦ñ³óª¶^˜õsÐÔ6ÂÀ£W>Qð7øÃé-—Ì#¯êŽXk¸5—RçõXÄŸ‚¾}~67‰k²»œÈa’Ó×=Ó+3î…]Ñ;b‚ c F“R;èärÓ¯×C ÂgŒæÊŒÕ´váØq[Õ=➦kLNÚÑãž];ŠN#ykŠÆ(ŠÉ(XeÜhcl#I#Ìb§Z3òCéW#Ú‹B–ÆVT7¨½ú¨E}¦>¬g"Že¼5O"³'ñ}¨}PóáP”wÿû”“°„óç¥<<•ò,ä+R¬“´Ðn»ô9¼©|È}­  Üç0èr_ÆÂب }:¨³9yÊâÀÎ9=Ê0õ¾3ÔxûðϪT˜”¿1íÃU¹½ÚíŠC:tÛñC¦½í´“`ÄŒdp¢çfð~z5ÐÂm•¶ð0N»½¹®Pãiìz'&Skh~À¨ÓY; +BcY€‰Ú ­A< ôun.OÆjÕckš¶U¬4 Ò«¨ûSÀCº}(Ú{ÚAœ±0I諭ÙvûCɶ²Ð) ¯ »[46~Ò™ M4˜„*‹eJñÂÊÊd +ê‡èAH +¸üøN5ÅŸàóë6‡P릞š +™f,}=+`°W†02ÂåN‰°n.ÔD¢ª›³¦mZ0¨/(µ6ykélô!&ò;º«µ‚I—3‚-þ:…뱩6­;GvUÉ9Ïd'[-ž×Í"]EBHÀOé¶ô.¥ÀÉPØð~uæEH—<‹W2 iŽreþ'æ(Ø?ºÇAûæÚyUûÔ™ûtt¤ð¯W÷¶ÒõÛóÌ,Ò¹G>w§4‡m “š§"³˜3B o9gTÉÁ,™I˃CâÕcûC«ö=¬$Ñ@BNžqf¦ð2ÇöåÝOç§dÃkÄïOn޼fÙJ¤°9§Ò†šûãHÍ,ÛQjw€Ju}’ã¹TwüŠ3GšêHmùV‡‹®z»ŽaTdCöê ´èÛ¾êÅJ*’[}€Útã­ÉË v6¨t"–™ôõëQÇ-¦Ï/'ukoj…£™à¤ø +ú +"p‡Ûè’ÝD° äWSªaÀ ³Ì{ÈiÁm71ãIÜ ¤?e<9›Pd,ÎL²,ö«Îóª…Òî9CÇ4ä2„ЬrùƒøM…æªj-¥Ó`Kù¬™,f–„"è“ay$¼×x‘¶âBšÏg]¬†æÈ¦EŽX³ŸZ€¼7-mþ™÷Ô˜–MµÃrÂQBÕ¾×7¾Z•lRèÍ YCš–aå0=áKäpÊpLáöx1_VªK]Ø<ŽjC@Ų`3‹™e$  å€ÐP›JŸú‰U†2Áf¢ˆíäèškaóà±\pmšv-a];=áK\{Êp̵ÃkM[íßÖÕá­¶ÚC9ê×G™å¿¶˜Y:"J €Ò±Ž-ûàî¶“æK½ûöúë‹Ú«~K£6ïëÊ °z‘øµxamÖÑ<‹`ÏÍæÅà€&Å`1Kb˜™ðb8c8"—á¹®ÚWÛJ ëƒsI@IÏ[ ³” @b XÑ¥ô—qäk*ÈšP_#© v]úC‰ÞBfåBõ–D rèAÓr Ì¢¦'|‰NŽÉÁaØÉJ{ +œt*)¨žå¼¥,f–‡pªä§É~ç‹ÏE9êæ¼ ÊøuªJÐ-÷'ïla™¦iK‹¥­äˆrja®)…ÄpN‘ u¢šVa2=áKrÊpL!CG!K¡”%àüxÞP„™¥!‚€¥P¸4º$a’=ðÑ79¤‡êî¨ÈÉUþ®}V£hFýÝÒtÁ¿=hÚ¿„Yôïô„/ñï)Ã1ÿ: ÿþ¤¿Qcå­k,µ›ÛÁâ`vk‹™å„Ç‚8rú? rsÙéOê$¯¨Gó3Þ”BdÄÂ0\PHšVa2=áKrÊpL!CG!?¿C[¾ÿ©hΔÁ RΉ0³P5A0¤0Œþ ý>œ›_Iúg¼’°{¼wÝСèwåþã뤫EÀ–Š ™v³F,:yjª—¸xÈmÌÁ·q÷ŽV> endobj +1279 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 349.657 216.389 358.734] +/Subtype /Link +/A << /S /GoTo /D (ttbxdockablepnl.ondockedresizng) >> +>> endobj +1280 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 237.312 202.977 247.274] +/Subtype /Link +/A << /S /GoTo /D (ttbxcoloritem) >> +>> endobj +1281 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 224.111 225.354 232.33] +/Subtype /Link +/A << /S /GoTo /D (ttbxcomboboxitem) >> +>> endobj +1282 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 207.424 255.759 217.386] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomdropdownitem) >> +>> endobj +1283 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 192.48 247.676 202.442] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomspinedititem) >> +>> endobj +1284 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 177.536 224.734 187.498] +/Subtype /Link +/A << /S /GoTo /D (ttbxdropdownitem) >> +>> endobj +1285 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 162.592 198.732 172.554] +/Subtype /Link +/A << /S /GoTo /D (ttbxedititem) >> +>> endobj +1286 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 147.648 203.599 157.61] +/Subtype /Link +/A << /S /GoTo /D (ttbxlabelitem) >> +>> endobj +1287 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 134.447 199.929 142.666] +/Subtype /Link +/A << /S /GoTo /D (ttbxmrulist) >> +>> endobj +1288 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 117.76 218.618 127.723] +/Subtype /Link +/A << /S /GoTo /D (ttbxmrulistitem) >> +>> endobj +1289 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 102.816 216.651 112.779] +/Subtype /Link +/A << /S /GoTo /D (ttbxspinedititem) >> +>> endobj +1275 0 obj << +/D [1273 0 R /XYZ 109.858 727.97 null] +>> endobj +1276 0 obj << +/D [1273 0 R /XYZ 109.858 654.974 null] +>> endobj +1277 0 obj << +/D [1273 0 R /XYZ 109.858 550.43 null] +>> endobj +214 0 obj << +/D [1273 0 R /XYZ 109.858 456.642 null] +>> endobj +969 0 obj << +/D [1273 0 R /XYZ 109.858 424.059 null] +>> endobj +1278 0 obj << +/D [1273 0 R /XYZ 109.858 424.059 null] +>> endobj +681 0 obj << +/D [1273 0 R /XYZ 109.858 350.653 null] +>> endobj +218 0 obj << +/D [1273 0 R /XYZ 109.858 335.64 null] +>> endobj +1290 0 obj << +/D [1273 0 R /XYZ 109.858 99.827 null] +>> endobj +1272 0 obj << +/Font << /F29 416 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F19 516 0 R /F28 380 0 R /F55 716 0 R /F34 719 0 R /F50 672 0 R /F51 675 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1304 0 obj << +/Length 2120 +/Filter /FlateDecode +>> +stream +xÚ­YYsÜ6~ׯà#§ÊDˆƒ±ûYN2©TeמT\•äš¡$nfÈ IEÒþúíF<Çt”u¥â‰îF_ xÃ<à±aY’Zhft°?]ÅÁ=ì|{ÅE$9Ë2XâÓöm$nù~ ŒƒH0“¤üãê—ßâàÒ¾.e²à Ö1ʧ+•&tæžW®þÝK¡=ô¢ +yŠ¿ R¤Ñ¬ ~{û®wW_}#L`Ÿww£p»Ã/áûân#TX4Eµ/6¿í¾¿z·ë%òè¤^s˜'Y9Ý®5>õW!ÒM$DþT•­v×ß=wÛ®8µÎCvÎ[ÔNJʘIS”¥¸aR(8Å(=×8‘š‰$YÓØ“,4ή˜TéÈQ©‰Y¹=ìí1o[§*èú¶>Ö jKJf%ò†(™0!ï×›HJv5ðga}¼Ýð0oèe‰2`¥Â§‡Þï7B‡´w€çåáVÇ|Ü/-QïQ'¢‚Ý;xâá ‰óÕ›»'“,3&HSÅb™¡éÁÁé˜Ð<{ñÕö¿©·ÁÝÈÉŠF–~ô)—Ê”¥ÿ»²hÀxž€©h),^ȉI}"¡Z·ÔÚ½¢h°ó³S¡x9ƒ]#•)gÝ“YŸnÉ 'Ó&{uKÖǮ¿;XÓÖ²Œ°~±†œý†, º$[m`žfÒÀxøW+fBÛË 2ŒN¸0t²8ξHKþ¿G¨ó }ÝDry0¹iêóMÏOÕ%BÒ`8çBéŠafL¾ìˆ"’Œ Ø_5La!F”þ¸$¾¦Ìý̼"_7¯$æ•6NW,†C©JÐd?m…To옌É +†}|SÅrr&e1Üe¸Éìõ×ã9£ë|p˜KÛxƒý—°’Y¬Pž8ÄÀä¨åDÇåC4kÚH“0˜Œ'ÚØ±aÑha~´Øx½W<çšséc¯|À:ÒØÐÝÿP¶ÝB³LÛïk¾ð4«:ÌäÐLgg/ ×[Û£S{w5´»â‰×ô±Ê›ß[‡-‡±ré‘lp@=å÷–ÞÑ>ù^uàkè“öVg$5c§ ›ˆabß'á}fW–¸Â¼â<¡`X{ôãª#÷sîµùi´ãTÆcÏv¢óÖs;âýDe' ;¢43áw„s$+è²› ¾J¦Öt?¿÷Ú–”¹sE­kÇúìsGE +½ƒÜ4ŠÃsáé%§/‡Â ^ä'|Q¡^Ýñ…¨îà]†Ù2yON?)PüÆÃ¦•e'4wÒtÔÁ7ySäà-a¼"›æÙž¦wº"¯ºL9Îhĺ¨3évE=(<[õýB+%!OÌT«EÞ9šµó•‚«”“óÏT ‡h4eѹþŽ„¡±„Çv %,N¯RM⟼¼±ù¸wÐÆìµ4Ÿ ›?=ôúoF‹9z\{“‚P¾q ýP—‘äK4Ô9£æ¯ºg4b]Þ‹§Òg‘üÁeì–ðº0ƒœ±j‹–âhV•0xP%ö>XöÆkÑó +88Øyœ +—w+ó×`Áb‘Nj±-up] ·^ä–²÷™^ŸmÚŽÑ„uÖß„¤ûöÑ=|%w7æÊÞ¼„WLôµÛ.Qi!†½‚æ^z@½iõôPÌ)çßÍîAH•W¨\í$z +ZLNJ=Ú¥RU'²QÝ„ +”è8üùÁ›¼+ž»O ›fl:óuâ2¶ìÓ®´ái‰Ï}ˆ2'ͦ¤vÞ$ÀƳô쟱ëÍš§Ú¥Cb—ÿÞ·#ʾòBsL×ÀÅ™ +§]˜ ù¡Xþ‘@dxׄ«§Ìôkî#Ä ŒóÔ›JÆãD‡~}øü W‘­¯hÛªùóò6ÃwªÇúÍË€'YQEˆ„ÉÔŒuj:~VìÓÏîè×~»¨é¡*žìþ%-zú‘.Wå1xFLË <»T²Ð2œPbøz3ÎU Ïû .'ʼ:ô¬‹¿ó¸¸Ò~8¾à#%àÞdüŸ¡Üæÿ=·8™endstream +endobj +1303 0 obj << +/Type /Page +/Contents 1304 0 R +/Resources 1302 0 R +/MediaBox [0 0 612 792] +/Parent 1263 0 R +/Annots [ 1306 0 R 1307 0 R 1309 0 R 1310 0 R 1311 0 R 1312 0 R 1313 0 R 1314 0 R 1315 0 R ] +>> endobj +1300 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxcoloritem.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 1316 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 15.00000000 15.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201229-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 1317 0 R +/XObject << +/Im0 1318 0 R +>> +/StandardImageFileData 1319 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 1318 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 1320 0 R +>> +stream +q q 15 0 0 15 0 0 cm /Im0 Do Q Q endstream +endobj +1316 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201229-05'00') +/ModDate (D:20030406201229-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +1317 0 obj +<< +/Filter /FlateDecode +/Size 2582 +/Length 1321 0 R +>> +stream +H‰¼V{PTU?çÞ}²Ë²Ë.¾šx*X3ê²€ +)‚¼Œ‡9=†aw/»8w÷âÞ»d¢fòG3Í`&“9…©Ùc+ ÿ 4|V3Z’óE †i ‚·sϽûRœú£éÛ9ç|ïû;ß½ß9;?§°D6¤Ð|d#$[õØ&ÑOZ›,Ûtˆ¬µb”,‹24¢±<5T&±¬öÅA1*L°”$â dQ#ï`¾Ì©­EÍ +)JÔlg«_cÁóshöiÒð<+ Á9ïb¾~B"Ìÿ½ ïYå¯=Ú'ñ´8$[´¿j¢u¨»ÆêÈehÆT\ƒ³Øo`”2naUsL}™—c©à…ѨiµV†C}H¯A¯Øù ;î/f¡t‰ ¼8ñ´Ó +"¹T*Œ¯W —Ï>Lÿ™ÿè—äæH@tJ þÚl;c¥ªsKÁß:,ûZ!ß 6­J¥R«´jµÖ  Ó¢"´Úˆ¨)Fc”Ñ8Å Å$- ×hÂuázNoÒét&aÒ™ÄÿIÀ *´ ãa€¤òÑÖ þÌB(å“T@mN&W(Uê0 |ÐAúŒze$d„\©PÉIm +2HY\d²<û™cüÊu…©eûç9 ӣʻ¬)©žõ§r•36Uܺ|ÛÆ¦Múà‹×½UiÏ;´ƒ›;¹»ê +õgû†Ã?y¯æ'mÞùú¾·œ¾6´ëË£g®ßYVÛ°qˇÇÎö Ï[ü¬ã¥æÖÝûŸûõ/ „V†1)ò4 !.9R†¬Œ7Ê-ëZL‚®òS·R¦[/{ÖoÊ­ˆ²±©·g(ÊÄ´CÝÄŽÉö¼ª¹uÅáÑ’øó@Kâg@ÊÜuúÀñþ…뫪ÚÙfô´V¦mËÜWA5tÆ$œm,ö¾»pV{Ì÷w?ntFõ”æ?µ‡*ëìîéÏHb>í;s¬×õxäïÝûä@o?ûÄ®7-Wg]úã|_»íÅÎ ;IÕáô“¯¦'¼ ß3=«ètO×ú©Ûg+_ðÝf[³Ö¶æúØýƒ[$7Î(ø£sµw ­M'3[y¶æRL»kh×èó_G'ŒÇ/™wÁÕTú{æÙ² ­'Ævü0ØtéþþÇ¡¯ööÜk>ßQæºa¼3vf¼ÕÑ;<¾5ŸE 75¥Œæ vÙ:.6Œî=:v-“Ùšu‚éG²nÜ¿:t|dÎpußx늢>®e9øÜ[qøÛ©»O¸Ê²]^VtqÅ‚¥À‰x sõÈÃø±`˜ ÌÀÿß"œ‰%%àIá¨J‰>d€ÿÓ8 È¥¾¶ÂÇüü +8SòA×LÆ—œÐóhñó›ëÄ3mh|‹Fµ$ãw{ìR'Ã1¬]óf›ÅlNÉ0§f˜çÆZÌÉ– K:n¬6(>çh#üyMmd€—úLI ›"?œÀ£ƒñ£óHʉ@nH2^ÿ`0ƒïendstream +endobj +1318 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 20 +>> +/Width 20 +/Height 20 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 1322 0 R +>> +stream +H‰úÿÿ?¹à?ÅzÿüùóãÇïß¿x³°°prrrppp½_¾|yþüù³gÏ>þŒG///¯”””¤¤$\ïëׯ¯]»fooß‘ZZZ¢¢¢p½@KÏž=ëããsðàA> +stream +endstream +endobj +1320 0 obj +34 +endobj +1321 0 obj +1424 +endobj +1322 0 obj +268 +endobj +1323 0 obj +0 +endobj +1301 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxcomboboxitem.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 1324 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 15.00000000 15.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201235-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 1325 0 R +/XObject << +/Im0 1326 0 R +>> +/StandardImageFileData 1327 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 1326 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 1328 0 R +>> +stream +q q 15 0 0 15 0 0 cm /Im0 Do Q Q endstream +endobj +1324 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201235-05'00') +/ModDate (D:20030406201235-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +1325 0 obj +<< +/Filter /FlateDecode +/Size 2672 +/Length 1329 0 R +>> +stream +H‰¼VkPW¾›Í›$uª@œNEvD@*ø€€¥Ž¥y,YH6hµ#j©LëŒT¬e¬vÔ⣎Ój[…vLµŠN§Ö¥ŠT«ˆ/ž*ˆ•‡Û»w7/Åitz2÷Þs¾sÎÝïžäžM|rz&*`Ä<#ñЇws¾üá*€Á·2>~ò)<‰ëÙ,¾™|8&!{¼¯÷![âÊÃØ,)g +œå#elG™žf@ÎB.‹EöîøÌhÐüœ]ˆÍÓ=Úó/¤@*ø]ÆýßûЙÅîÚÃsòf³ƒóMrWµ'0žçfÏŠšÀò?°ê$X 5Õ âD€»žÞ‚²ß \âïÁ­‹.<†štXMö…†åF?ËHE¹Ž¢#‹ƒ-¤ÕìÚ&ƒ( ¼ídŠ\ÉÙˆF–¹ò²…vK‘‘°çZ2ìÌþ>Ï ª"d¤ÏñÚ[d¶‘ŽbHHÚŠÌEVÂê`j#KÍf’" Úr½ƒ"çV¦§bÿn1ÁKÙ`a<é+ÍÁÿÃùq‡Í¢K}Sç[|_$Ón&|¡ÞBéôfLa$`±šJ·§é23 $iabì,)$mk’,EfW¥Æ°‡OsÁLuMDÞa¡˜ðRÂFžë‚}Ãý æÒBÚ¼Š«d’ç¹ ¤•Y%Y¼ÐAÙ ïÂI-°Ï¡2IÁ‚>‡ûÁ¯¸ðÙptË”HŸžÄÞæ‹c{žŒ1ñ®0®»ò: 9 +ñ +0ú2}ø¿17}.ÀxìUi° tY’‰4ù)™€G÷²€i=³Ý +ÊL,KÄ2‰D¦ô“ú)ÇÈdcƒTª@•*H)CÂ-£ &÷ó“+äþ +…¿Z¡P¨™I¡fS”ÿfú Ãã¨q,ð”®Äè«ðè<ú –Y +0$\qx8¾@(K¤~سN ðp—Ó`| çñy‘P,ÀeÑЩÄù!Q‚¤ÅzUhÉP½uï7É/O Ì:eˆŽ±mlHM­Ê¾ãÑ®ûÅ·ï‡ÍÙ¦3¥ž®¡bÇ5æ´¿+ÿ±Éq³onø'û>8¶ýÌoíýûŸm¾õ(· tÓ§jë¿=7o‰yUEõÁºs—î,3¼Â´O ÂàåèßÀ&×+ ØD·¾›ÆÅÀW&…^œL±a·¾©¢ˆí;pì‚ã<ùœVÔA‚’i/„/•¸ˆH ‰ŒŒNˆŒIˆŒ ÖD&Di¢µè²îÁØçÑ4{xî}Õ{pÎÝ]!†sÜ„Þü±±þØ$oþ°Çq{`a<ÏÞ.Iãl´þ-À»dendstream +endobj +1326 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 20 +>> +/Width 20 +/Height 20 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 1330 0 R +>> +stream +H‰¤”¿ŽEPƯDAB±…‚’„D«¸­Px/rãî x¥â¶<€V©Ø‚„BABBb¿8»"®»{ª9süæ›3sÆ8Ž·¿®¾ï»®kÛv†ÓišfY–aØÖuçy–e0NYžç%IE‘ã8l‹¢H’Ä4Í‹y†a¨ëº °¡DZeYãÖÅ)ŠZú± ‚À0 H¯X-Aâ™ýPDz{잮뺰Íiý–¢ˆlWìj…Ö¤i +iÇq6¥—9xžQY–Ið6Ð_°¶m¿—k.a}ß' ãy?a÷®| »b7u¿¥) +徿^š¦á¾¾®KØçSUUEQùÝUDD0§j_Ñu§€‰"kf˲¼ÒâqbW97Ms<†íªª>çöV+?a±`/ç÷¤¶?, {ùßø`ïî-ö endstream +endobj +1327 0 obj +<< +/Length 1331 0 R +>> +stream +endstream +endobj +1328 0 obj +34 +endobj +1329 0 obj +1513 +endobj +1330 0 obj +325 +endobj +1331 0 obj +0 +endobj +1306 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 593.149 187.316 601.269] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomitem) >> +>> endobj +1307 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [309.61 520.926 394.265 531.774] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomitem) >> +>> endobj +1309 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 290.161 173.825 298.38] +/Subtype /Link +/A << /S /GoTo /D (ttbxedititem) >> +>> endobj +1310 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 266.5 230.853 276.363] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomdropdownitem) >> +>> endobj +1311 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [295.082 196.02 393.269 206.869] +/Subtype /Link +/A << /S /GoTo /D (ttbxdropdownitem) >> +>> endobj +1312 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [413.969 196.02 488.274 206.869] +/Subtype /Link +/A << /S /GoTo /D (ttbxstringlist) >> +>> endobj +1313 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [388.741 150.192 439.993 161.041] +/Subtype /Link +/A << /S /GoTo /D (ttbxedititem.showimage) >> +>> endobj +1314 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [317.579 138.237 389.56 149.085] +/Subtype /Link +/A << /S /GoTo /D (ttbxcomboboxitm.showlistimages) >> +>> endobj +1315 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [127.154 80.454 222.464 91.302] +/Subtype /Link +/A << /S /GoTo /D (ttbxcomboboxitm.onadjustimagndx) >> +>> endobj +1305 0 obj << +/D [1303 0 R /XYZ 109.858 727.97 null] +>> endobj +222 0 obj << +/D [1303 0 R /XYZ 109.858 703.064 null] +>> endobj +1308 0 obj << +/D [1303 0 R /XYZ 109.858 472.049 null] +>> endobj +1291 0 obj << +/D [1303 0 R /XYZ 109.858 419.167 null] +>> endobj +226 0 obj << +/D [1303 0 R /XYZ 109.858 408.599 null] +>> endobj +1302 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F8 369 0 R /F50 672 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R >> +/XObject << /Im24 1300 0 R /Im25 1301 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1337 0 obj << +/Length 1564 +/Filter /FlateDecode +>> +stream +xÚíXKÛ6¾ûWè(+RÔƒ)zHŠ´Ø Ú¬û’´¶Ö`[®¥½ÿ¾ó eÚ^{½ÆöVSäÌpß ‡”A ÿd c#Š´r• “ãÅ ¦°òË@ZŠ(‘¢(`ˆk"§Ù5Øá§eDJ˜Â å?ƒÏ_ã`Ò>—6E°q,”6Áb S#T^Øïùàvð{/…×ò u¤£¸@¥(G³ +øíí{7|ÿ³2}îKa F“Ïá§ê~¨tX­«å¸~}¼õe tI~ÎaŽä̦èö<Õþ®_”ʆ‘REøÇ²îx4z÷÷ûmwÓU‹v(e(Ve‹ú¨B˜,CYZ‘( {£]jœ&¹PizNcGr¨qØ%q#P2“KÚ«› eX £$Ñá¼n;a•+©E¢I»˜¤MB¿­‡2 ›UµF2 »ºÚ$¥0 ó(ÄóƒñÐ5?5‹Õ¼ê*fçõˆt& )Ê…¶ª­î@£Y5L“prC™‰"QA¦¤ˆãÌwÉq0-mäs4Õ^4É7–„XUl-…A÷ÈjkÙs%Z¤ZÙ°½&±oäðªÖỦ™WåòföÂYî‚oTJ2nW°UVcðmXCh¾ÄRƒƒ#eâpƒ“6^2ì`0#Õ +a¬˜fÜ,† àŽÄ4¼ˆ|À[ž©ŽL_‚ hËw¤­Ëù†½L2¨WE +‰!•ý ½xüãåõz¢+RÈÉ»£9^oÉ´¹³qÜEè6DA‹ãR/a}ʘu»á}Ÿë¶ão´¦#9 œH@ϲãû‡Ö¦H¶l™eSƒ-0RìQœ? ©PHPÍnþhEõ†€˜ Ï‘¥R³†âD^ä"9/°,Ü,'¦ÇöÄS +™Ë ¸#¹â½¾€ô­Å÷Ͳ«¦Ès—$ Æ%§eïî0kçkϫ՜SÃ]7K^©—.¬~ sƒRiÔïž©nóvGäV[žý‘"\‘ßíËXôXXW;LY¬,« cvOÁçCÿ±Üþ +õö¯zÛ/‡êòr¨ <éó˰âŸÂŠ#¹+¾WCåd=¤ÜçM¸zQ× D΃Í÷›ŸpV'asïÒwW6ŒëfÅ øA•rÓÇ? ˵Di‹g±5kSFÍ) ñI Œ…†*Ú6LŸè“ cRÒ:éÍQ !ðÒd†$Á Ô%ÿåÜ"í>ý6ÉqF+…ÕÛûP:Å©^Ú8~gG#b„–§Ñ¤,ÍÑÞ{ ЃJBÈÜ¡äϺ­ï°§˜WÜ&½ZsÄ"¹´rzÄ'³Á’\— l'ÐZ;ÿƒ¤ÈÌ®f…=Õ·5ðÀñÀ'=’A…5˜'€tnHà¡ ÉòðG”åùÚ–ÏÊjª¡¯Ù…–ÔXc1Ÿß•kf/WVÉrÝ2ÝfV-y´SÑP"6]9çªûN]{Hï{¢ Àpe>ð"%ñÖu9}Nv%ý#ö1¨¾¹ÙþlMïSéÙšþ'*¥ß‹PìŸB±#¹Åžÿ×ô—ÖtUîööÂ’¾ãÞèyäÁ}";¿õeÒ–|jc¨ñ¨XËD+—RT“;{iCQãZö–/uÍÒÞ q¡kƒˆý¤g+¨A*O^ Ž3òX8¥sŒö²‡Æý÷-t±¯Öñ ÓœSàP*ðÔ±i¥°ø‡Çm‡* +‚8m_ïB Á%)¤×EÙâŸÊGrM¶)hódäÏ=—-YÿüÄñüVO¦íáQŽÇüé“ƵöP±ùK|h(l è uOiÜ· |“Ÿ¶0)ÏÝ8[Û\Ø @¶®¿¤ö§“ÇrøHã^$v4´4âøíÒ^â¡Í“o«0•÷´jÿç^1ùendstream +endobj +1336 0 obj << +/Type /Page +/Contents 1337 0 R +/Resources 1335 0 R +/MediaBox [0 0 612 792] +/Parent 1263 0 R +/Annots [ 1342 0 R 1345 0 R 1346 0 R ] +>> endobj +1342 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 444.029 200.028 451.556] +/Subtype /Link +/A << /S /GoTo /D (ttbxcomboboxitm.minlistwidth) >> +>> endobj +1345 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 287.974 201.674 295.501] +/Subtype /Link +/A << /S /GoTo /D (ttbxcomboboxitm.maxlistwidth) >> +>> endobj +1346 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [480.302 222.339 535.484 233.187] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomlist.showimages) >> +>> endobj +1338 0 obj << +/D [1336 0 R /XYZ 109.858 727.97 null] +>> endobj +1339 0 obj << +/D [1336 0 R /XYZ 109.858 653.011 null] +>> endobj +1340 0 obj << +/D [1336 0 R /XYZ 109.858 587.188 null] +>> endobj +1341 0 obj << +/D [1336 0 R /XYZ 109.858 523.606 null] +>> endobj +1343 0 obj << +/D [1336 0 R /XYZ 109.858 445.025 null] +>> endobj +1344 0 obj << +/D [1336 0 R /XYZ 109.858 369.488 null] +>> endobj +1333 0 obj << +/D [1336 0 R /XYZ 109.858 288.97 null] +>> endobj +1347 0 obj << +/D [1336 0 R /XYZ 109.858 223.335 null] +>> endobj +1335 0 obj << +/Font << /F29 416 0 R /F8 369 0 R /F28 380 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F55 716 0 R /F34 719 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1351 0 obj << +/Length 2535 +/Filter /FlateDecode +>> +stream +xÚíYÝsÛ6÷_¡·#g*‚_éôÁvœ«;ms—è¦7Óô– ™©D*$Ûýëo¿@R¦ìzÒcª$yÄJ‘µŸlw[¯§” +rÐÒ˜ 04ÊHî²±E7¥J‚,Ò³ÄäA-ö4¨"; ³ú(ªä¡ˆ åe]µ]sXvuÃ^ÕË›23•À±‹Â8<÷£Ð{{WÙÆŸCëü5Æ[\Ö»}]Ùªõ-+Ëf`)‰PÙ\´Ía9rŒ§=W^ J¢È+ª7J_y°Ìø(¶åƒŒ|j¯Ç Ì@ê­×h[Nâ‚ÀäP +‚€_RD¼”æ…+H{‡}v»÷Ð.ÎA»Ä•þuݰྗ-šî¸C"Ô”.~mÐû‘P™§Å¸uŸaÆ:y:ONMƒú{Ï3ÚÝÐó!T¦é­p_w‹vé%uKÆVxÙPf è>¶÷XOJþZb*lœq‡&ÍêÊÇ®’fÌ“R4ãê|ƒ)„ÎS©7Ú;Ëa“͉å° × +ò c†ÞŠ)Ô¤p4‘¼_(lCýè¸Õ/†mÉ/rWöž&X—(*diOæÙðÙi¡‡S8`ÙÄ·ÀŸ¬ÌNϹŸÁ›Ÿ‰Rw"û͸˜YÉ>Np#§)H*[·ëÀSä]‚ gb`Gàƒ[QÚ Éüæ’~Y7Câí9Kiæâ@WOwÏVs²QpâÂ2$ÂÙ@;H|5!@4TžÌ 0=Èa>@I¢ÿ)†×ñÀœ†Ù~¬<†¼Àe¨6íÄ™ê òØ™ {™‰Ù#Öåø‹¼O³TÉåÖ Öâ¯G¸L±Ž^F¸FÂO.'òE„«Ÿßˆeýøoß„eÝ ¤JÕ}9ÇÒ!œ%õˆcÐîÏã4=Á° Œ'=/ùK +G 뀕ôGÀ½T†!¥¸„z ºÉ¢%q gŽ£^’½ówÀ!œ¶žžž|Cˆ´â£â19ÿÎ 1+´Í|æ î”ù0éŸp'8i„Ê1Ò×+ …¢w¯áT j‹Ã¶ku +_dO™Ld¾{ bØ/cötU,®nºc€G¾¾%ž ›‰Ò£zêr%c*~vø‘ØFÍ ŠÌ-.<G©¸ƒ‚+ÚpPŠFnÐÈ5üŽ»©¾b¦å¨`»}äÃ]ÙÉ îQ®/ÎXM1Øük( +,ëmÝ@õ4 U[JÊ8?ªO¬9ωln·üpt1YË”k~rÑoe­t´ül©³ŸÇ²³+¬þ1„pD¡”‡å=U*¥NÈãHçx‘ìŠ=©+Tï¥C\,©\ç‘wÝIG¯…ê^Ûºj{³u†…yN‚´<œäÄx†÷…£=H¥]÷U¹—&ÏòÊï J…-1 娊öÞ¢þ¡.Pß1=Ì™jÊÛš›˜MÁùJú +îçyÈ-ÄŠ?’rƒä OJüÈÔI˜Æ=´#&BuÙv.¿Wôzœ§/%I@™~ÇP†"o|@r vêzØ.eM†cO!"âóntˆ(ú3-à@VvëL{ ¿Ý0¦üŽ;×ܸ[™g1,0À²Nƒ8t7,€•)æ ìê¯[ëuá1-yºÖ„ŸªõNä‹jý¸"üå’ÿ]òŸ-ùæï’?*ùt5òZ 躯øts!§QhÒ)œªH’{ÅšQg|/ñzé2u/TcØ“#øî/gFÈh:^á‡ÀðÑÝŠß·©`X8ᮎ 2‘3:×oŠÇPµ/JW‘ú{êGP®©ò-™¯ —Єö¨¨µ£cžsÖ¶@”sàw +•5,Sf’—Árô–©ûâtÉÓÚÈéW|G×kq‹Ï»Ÿ¦Ëf`OÌ(qΠJE—c¹(÷¯pýbpNòuÿY±è:¼šä@å!Ÿ¨ñKU‹Hca9…2J¡áF„zh]ÈWx9•9‰‚M~;ŒÅ¡æù } 5ãÁ…¶Üí…Qáëê)°r!ùÈ2Î/tµmËM%nñCÌ´ô®kÇ!ŒnfL$cÝ#rpË%%3Š2_ÍÉ(¾÷TÒÆQüÒS`hŸÊ*Ôò݉¤Òq`´Kª&Us M“´Â 1Þ¤ÏkT.תóI ¶«ž¤2?k‹æî‰1a´MWŽ.í(´Õ8½ fQ: +í9ý|ìâ³'t9 ù/Nj—Â8“üˆþ\wf+áVÆ)' tSÔŸgàã]¹¢Ë#~£‹]lð ¤å—U ÀáOž’ìØI·¢&=º²E‚ GB¾r^·ÜC?rá°–ï>ÅD±úxîŒÈ;å²^FîÊþ„1öpšžý„ºJÞf¸÷åÚ‹Ðù'[´P­‘yÓßpåg¢ääǫY”»Ÿ˜åãÿP{ž±endstream +endobj +1350 0 obj << +/Type /Page +/Contents 1351 0 R +/Resources 1349 0 R +/MediaBox [0 0 612 792] +/Parent 1263 0 R +/Annots [ 1354 0 R ] +>> endobj +1354 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 446.749 173.121 455.826] +/Subtype /Link +/A << /S /GoTo /D (ttbxcomboboxitm.strings) >> +>> endobj +1352 0 obj << +/D [1350 0 R /XYZ 109.858 727.97 null] +>> endobj +1353 0 obj << +/D [1350 0 R /XYZ 109.858 681.914 null] +>> endobj +1334 0 obj << +/D [1350 0 R /XYZ 109.858 589.893 null] +>> endobj +1355 0 obj << +/D [1350 0 R /XYZ 109.858 447.746 null] +>> endobj +1356 0 obj << +/D [1350 0 R /XYZ 109.858 311.93 null] +>> endobj +1357 0 obj << +/D [1350 0 R /XYZ 109.858 147.61 null] +>> endobj +1349 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F54 713 0 R /F55 716 0 R /F34 719 0 R /F19 516 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1360 0 obj << +/Length 1722 +/Filter /FlateDecode +>> +stream +xÚ­XYsÛ6~ׯà#9S¢ÄE€ÍôÁ±Ý&´™&ê43Ih ¶ÙH”JÒqÜ_ß])J²“v2Žp,öÞ Ò(ƒ4¢YA´Ô‘bŠ*Z¬gYt;?Ϩ§H9%ZÃ÷ˆ²« øá›e¥Œº@Ê¿gï?fѸý§D¡£{g„‰"ZÏ„,SÚÏW³·³ß{.nOE=«‰Bâ *¥ +ÍÒðÛÛ÷|>ûþ'VDv>¿Ž<…'˜/ßÇoÌuÂDlS/LòqþËìrÞs¤ÐquÊaä„Pt»’b(õcy’2¦ã?êªs£ùów—_º—Y· ¥1Ù–-êcYiRä9ò´ œ ld¶¯±äŠ0)OiHhL))`Ç댩’œÐŒZi¯kTî|U-*ãON9°«W.9) Æ©""cöÌöîjUµ·&‘<^NÜKs¢9‹r…¿#m§~ö´é€Ø©ÍF޶J{«@“°,ÞlM^ÎâîÁ©-hŠ "óØÔŸ~HR.D<ÿmÓU×—Ÿ&cSwÏ`:·¦{.)ħ`¹åõ¢¬/W˜p¿†‰åž¤4 0! + Û<î6î·1-lA]oê%®2¿+b<Õ$X;òŽÌpT߸½ªö¬oaÑkÑèÜjÙ˜’ô¶ =V¶"2ÓÞ!¿š²½kÌ SÝÜv~EÐ)d/žôñÑ {’o +úÈÆt(ÈW£ öð>칰̺‡­™ˆÃªÍµ7e •ˆœ°×ÀV*̵0K875HM¥'ýÉì­©—h?Ïb0HòÜÊ=¿k»Íú$Á³$ŒÅg œC¦o›ÞekÉU<¯N§PfŒq/ó3Ò–ÍÔtA”ŠõF…^Ö¹1 hK'ÌsIXlsûàí‚:„GwK·uõ—Yt©Œ¡B|•«$‚)_®ÒgT †+êÆƒÆ +bŒÕq¹Zm€ëûç…+;,°²¾é‹èú¢šÊV=Žü"µ…Œ|uàk‹uk«OG \¼ˆÏV°²ò'<´nz["·ÏøŸ?>dÕ–wŒ§5UNãï`¡þ¶V±þ€W®êÁ!Æ2(æÞ­º¼T­Ã—;¯!ùí¥éL³®j³tëCöC˜ZÜ56È©ð¹ÞÔÁg0k«¬Q_cVKó¿]]’j"}ž„bâc(Hþ ŠY€˜]Ãä ÓÐ6ðæ\š2~€9¸øÉ&ŽB´š@´”G Ì’ïC˜£ lñÌOæqÈ +šúz3’Cj<sœäŠ˜Kdû08àR—…Þ§À¤¿-û ‘õ1 ãœ0JD‹üX_ÂTn!àë“) Ú¸ÎÃ4/M\Æö­‰-ÍE…Pà‰JÇoaããÆ÷b†Í @ÚMãÆöx¹@~·ò­"„kPeÊ'¬ÞtD4Á«¡ÊM¬J›õ°§ +å¡d +zU°ÑÒ!Õ€û#gä;,ó~ìª=}]Ç+oµb¼ÍÐfZ€ÈL+G_vÞXT{U}òøŽKÞX=Ÿà1®‡ªârØþQјC×À5Æ !×”þ³mi¸‚k¼î¹pêÞ’@Grîí|U¶­íô•|Ñàsb³½Øà³çÞµÈûy ¼$¤98q*Õ}—‹– #å7ÖÛUáz`sÙU#ƒvÌq4ºÀô§ñ…»áªŒ,Ë ™+¬}¢à®¤*Ó”ÖŽEb»{´–Ùî’Á+)#ÚwÉs+ôùåÒöôAÔø’KQ¨ñœp÷ä9øÔ¶ë,Zû‘€Ç4Ý{h§Î“ð\…º¦›ðÈý)÷žÞMߌ޷îb ”„«Ýå54,šyïÀ¸K0S10³ˆ,ò1ï¡ $FŒ +s¨™zz9Rmú5ÉÑœÒbŸªa»ï<~àdò¥Hhü„•ƒ_ÂÉ“*íq?à™44@Áô»O9JIhÆ +J¨<ü .Ф¢} ©uZÞóÝëM³ëì«Ú%ÖÚÁ0Þ}“¯n¾†Ò+ªO7‹ðQÐoþ øDövendstream +endobj +1359 0 obj << +/Type /Page +/Contents 1360 0 R +/Resources 1358 0 R +/MediaBox [0 0 612 792] +/Parent 1263 0 R +/Annots [ 1364 0 R 1365 0 R 1366 0 R 1367 0 R ] +>> endobj +1364 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 324.382 173.825 332.601] +/Subtype /Link +/A << /S /GoTo /D (ttbxedititem) >> +>> endobj +1365 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [361.234 250.181 459.422 261.029] +/Subtype /Link +/A << /S /GoTo /D (ttbxdropdownitem) >> +>> endobj +1366 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [481.99 250.181 538.252 261.029] +/Subtype /Link +/A << /S /GoTo /D (ttbxdropdownitem) >> +>> endobj +1367 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 240.163 156.101 249.074] +/Subtype /Link +/A << /S /GoTo /D (ttbxdropdownitem) >> +>> endobj +1361 0 obj << +/D [1359 0 R /XYZ 109.858 727.97 null] +>> endobj +1362 0 obj << +/D [1359 0 R /XYZ 109.858 654.974 null] +>> endobj +1363 0 obj << +/D [1359 0 R /XYZ 109.858 560.393 null] +>> endobj +1292 0 obj << +/D [1359 0 R /XYZ 109.858 455.793 null] +>> endobj +230 0 obj << +/D [1359 0 R /XYZ 109.858 445.069 null] +>> endobj +1293 0 obj << +/D [1359 0 R /XYZ 109.858 241.159 null] +>> endobj +1358 0 obj << +/Font << /F29 416 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F28 380 0 R /F50 672 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1370 0 obj << +/Length 1586 +/Filter /FlateDecode +>> +stream +xÚXKsÛ6¾ëWðHΔ(ž$ØNqê´é¡ÓÆj›™$F‚-NLR%©8þ÷ÝŃ¢HYM<™ˆ±/ì~û4‹(üc£ÑJG9ÏI‘G›zE£;XùeżD*ц¸Frû¶?|s”¤QÊI¡ ”üwõî¶`í7Ð’…Ž`L —ET¯¤*ϵŸß¯nVŽVÜZ¦‰¯)Íq[žãþ®Ö«ï_ñ"²óõmä%¼Àzû.~cn.cÓ™fc’ëßV×ëÑ"£ 'òK "œbÚs%§^ßsž%)ç:þ«©7Z_½½þ2¼LÝ'ŒÅd_ö5¥I‘ehK²‚.Á7šQl±9áJ]Š8ˆ,"Ö“DÈl’¨¬ D1f½¼/ûÞ‡ +±¾<ôC[ßì«æz[Ù°]´:* XFL¨ *Daø`äE“¤Bˆ¸j^ăIRw ‹›òÞ/Ôû{˜Û…Úþ:Ér¨Z¯ÛÞâ“Çk\…Hnö aÀï¶‚ ƪûôM÷E‰È + sYѯ•éJAÅ›$w8xtŠŠóŽp§DS—еu}u=º«È:i΢ŒJ’üÉ.±=A£Ú$ô›õHêò H#…rMBDäþ箎Ó7'Ðt힪B\ˆ±ÒÓ¡ 3ÙÞ[ØÜ5Ž.l3ç°Í"šx8ƒ7B©žÆÿìL„¬¦Js’çòòŽrà2¦NwP‹°;Ù߈»sÀh°Ë­½ŸM¿éª½Åäõ)Ôö™rĘôî¯Ð.¸×£û fÑñˆÙTd4®z÷,òª°í¢¡]ºDm«ÀâG÷¨e܋ͽ›zå[Xo»yÉ„Ê “Œ/û<Ít¢j³?mù™õéîo   DÕwQRJ¢ŠÓðg‚—¹ÈÜBÐñM¨ó‚ïet—±gä&h^ ifýRnR -Â2’œbó3h‡åó(C2R~Åäù£Êˤ¡yŒÌAÞˆ,ñÖmçR'„H:|ÕŽ™áÀ:Ó5)1Θ)áþaɶݰʲx¨Ìñœ Ûtýf„vÇFÿºÌé–<›-x$!n%ÔtßËý{Ùt"ìN>~rV#yt¾ïN}À0üñ Ù¨%k’ûCùk*hüüJO_ý¸¤ o ~+¸óúÏ.ÀÔr€ŽÚî“å­;Ç –¹vN Ä?Uí˲ٺÁhî‹›NTTr¯ûï5TlAhid0¥×µ'.<‡Ý¢eD¦ …DI–Àö7°‰WLš 29µYù;Ñ Ňe('®‘“P×[/rÉi¡`ȦN÷ûvÕ×pQ0ˉ–±ÏØ!$̸¢ ÎTbh}EžCö±˜X½­ët®3ÂÆNw—¥rëxÅZ{CÚˆŒ&GÀ*ñ¦µ­QÓõÐ@uZ1‘iæiâU­!«T‘LÉo(YÐL'ªóôÍ­Ï‹¶ÆÝÑÏ+ÈœÒ4´åŠ[»„€»š"šñ“Ëžù<¼ºoKl(Ÿ¢"îæôwNâ…­¥/aèÛ»¸Ú™á`/¬½¯ÆÎ¸ô“š"/p¹ÉO¸»k,Í6˜Ý:bE7­£Õaw¤Ø&ˆ•éO»‰½OÑu¤Þ9‡Qí/,›ª†èž O¡(¡R|}N„Ÿ¢Ï ò úô‘zÞ\û©ç̉«‘3 8LýÉø¸7 ãL“ŒãÁÂO#$ðA tÞRöšSRþýPcî?†æsÍ=~“ˆØ6ì]5ônZÞÆKX X³AE,dm‹ë¿|zkï…eWí×Õõu³éLmšá©Êò<#Åé—àÓ•?UÙ òŒÊޱúÚÂ×®i¶fûç¡#ÃÏcòÞS& ænØ@6¿LÆeÝ|óÂ\@±,_Ûñ*c‡Uä¡{;öh{®:ßì»Ö»Ôo_op¼+-q˜pë†÷H¹ÖlÛx ,@^ôîãÃMð†ÖŸ»øªêƒëñtvŒ;,è §„Û™w #S§vG>9ì=X»#X[ÜÆƒW,»ÎÍÝô“=OÐñ£ÿ8÷°Þù€Èòo&þóKÀïìý]úK!.þÉÕE‡endstream +endobj +1369 0 obj << +/Type /Page +/Contents 1370 0 R +/Resources 1368 0 R +/MediaBox [0 0 612 792] +/Parent 1382 0 R +/Annots [ 1372 0 R 1373 0 R 1374 0 R 1375 0 R 1377 0 R 1378 0 R ] +>> endobj +1372 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 592.737 173.825 600.956] +/Subtype /Link +/A << /S /GoTo /D (ttbxedititem) >> +>> endobj +1373 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [356.152 518.536 445.595 529.384] +/Subtype /Link +/A << /S /GoTo /D (ttbxspinedititem) >> +>> endobj +1374 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [469.565 518.536 538.252 529.384] +/Subtype /Link +/A << /S /GoTo /D (ttbxspinedititem) >> +>> endobj +1375 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 508.518 134.931 517.429] +/Subtype /Link +/A << /S /GoTo /D (ttbxspinedititem) >> +>> endobj +1377 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [367.039 414.676 393.385 425.524] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.value) >> +>> endobj +1378 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [267.889 402.721 316.65 413.569] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.valuetype) >> +>> endobj +1371 0 obj << +/D [1369 0 R /XYZ 109.858 727.97 null] +>> endobj +234 0 obj << +/D [1369 0 R /XYZ 109.858 703.064 null] +>> endobj +1376 0 obj << +/D [1369 0 R /XYZ 109.858 469.424 null] +>> endobj +1379 0 obj << +/D [1369 0 R /XYZ 109.858 391.762 null] +>> endobj +1380 0 obj << +/D [1369 0 R /XYZ 109.858 318.716 null] +>> endobj +1381 0 obj << +/D [1369 0 R /XYZ 109.858 243.179 null] +>> endobj +1368 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F8 369 0 R /F50 672 0 R /F22 363 0 R /F41 556 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1387 0 obj << +/Length 2731 +/Filter /FlateDecode +>> +stream +xÚµkoä¶ñ»Åù`m{bDŠÅë§^{×\€nÎ×HRX·+ÛBÖÚÍJ¾µÿ}g8¤DI»òW—¥ÄyqÞC™/ø/xbX®ò…š½XÝ%‹ØùÇwqÊYžÃ÷˜¶o÷â–?÷É"Ìä!ÿ8ûå·d±j?–4ùâë„ iwgR&tîž7gŸÎþÙQ¡=½èHMòÏ)Öx¬~»ó½»<ûþƒ0 û|y½pàrýKôsy½2*÷e½*—¿]þxöþ²£È€KõœÂ<È ST»V2äú«Ù2">×UK«ËwÿyÿÐ~lË»fÉyÄvEƒòXR93Y†´$7,x#%Æ«T3¡ÔœÄäˆÄœ3;Nft•̤Œ'Ürû©xø×ReQ±¹ŸjŠg,OÅ"Ó!ã©Êl“b 3Ëß ÿÝ~)’h»+÷ °$jI=’wX©dJ +§+®N¬¸o—q*eú-ëu¹þ aæ zM3v¨1è×e |nJ@K%QÊ%RZòȽl·ø›F›ê-ˆËö¶tïŠýMÙ,cµcE‰Œ³T§‹Li–²KôO“g÷¡w{Ì8@µj Ž1¦ŽÇÑS$ŸšMäŠ ¤›ËÃÌòÍ K¤ðmoeÑ’¶VEMªù¶Ó^‡e½Ço!øPWk€gdô`gÓ˜kÃ8d‡ÜƤ™¥ý©\*e©X³4[BKeï +nw®ðvâ®2cÜd‹L&,1üVð˜q€jµðS·ÞXÕ`ˆüxðäœeÆ ¤™ƒ™ð=¶\0•§=ç'ÂV™ŒI8Á³Â6>¶ä5a‹â~›°­jð¨ûŸŽÜ>°›;tF‹±±~Ù bÅd%ÙI%æEAL˜q€: â!õ§ƒP5fÄ3Ër=Ô¥ßoÄyÊÒ,wA¬¿i+h”¯ âõT{®¤ä&*ð¤GN)‡M™`&¼²JK2 +¤‹¥„8jÚ_“D<œŒd®ñ™8>Éä‘|±T½¼o]/Ós9“¶±CئÝWõÍ„žŒKïGÂJÏÑik0Ï#*¿{pG$l_m¯ñWG«%x¯uì}±j­Û"\ƒ»&:ÜVðà`,^±ƒ;8s•žq/¯[Ô.»ìØ &º¿ÃøB{¶Œej\^ Ü´záò$²) (­«f‡A^ ÷GÚ»Ç,Vµö`BÜ.c~õ%¥ H‡'è­JÕMmY—kz¸-]>9àq·hƒßmξ!„¤gnЋ +/~°Ë‡¡d0"ëÐg𑯅N£;¯b|°êÙÖä l¿hiýFh å ›7ô`Õƒ»Íã’¢œ¸Ý4oÐ8YT>¬¬Tk:”2ÉUô]ÂØw)C®ÌM}1ëæ™‡ÝR¬ðÿåÄï!,dâ‡ËOEW:÷«?w«7Ý*îV¬[}ß­’s†yûÊœ“ÿÄÂÀÈa^ÔùÃùÏ)ù#3Q±^[‡­¬BÑcÓ;]’F`…EÛÞîHUz·ó †r Íí·7kb^o[ZTµSéàý^ E›Wå9- +È‘ºzN œ¸‰’}µ®T9˜‚½º¹§#— ©ŠŽj|Ù9r³ò>æ£Ï oÐ;WÇ(œ§ÅÔÿöí°„¤/Ô«*i€zª’z×Ïôeô³ÏãU©©Š¨)¡lÓšJ0³RŒèP茙Î8ׯQ„ÜaDÝšng»ÍUùÎzƒ[Ê‹eštÉÔ&¼#£¤4zV3fN¬1£šYÆ2-^¡9/ºMÚû’òõ¤ÝÍY–™ùc;˜ Ï£MV +³•–²ç:Ó_¥Øœ§üyýU|ª¿ò ¯é¯œ¨GZ+ÅR8éÓ­ÕLg}'çÓÖJBÞµVø +K$þ®0›Ý¸WؘÒo·ÈðàPªz0È‚75p*()œNsõ‚äå1ãu<7©O;Α8àE,IÒ8“{o3ÇXBUOE:`¼Cmý€Ð~¸îZ䕟xªm<¶õ‘‰æ &3õ™Ø…1Lëü5}F€zªÏð ƒòúW×N–”Ê…â¹&%ÅÁL$8ZR„Ì݃~ªa~aÆê8Œ©?ugÈ5g¹ÌÒLÏÁÌòÕxc|‹ëÖ§w•°³µÌ*¹©|e +õõk­EÙÜ©ó|hë#®ìÑ-®ìÍë›ÔÖãÊ7¸Ý¥[Ž]pµñ2=y²ãl ƒƒHø+ ç1ç8¦N“ôj_Þ…Óáø+Ÿ€é\ÉYëy˜9æc:Èœ:?4&˜pƒ†à~³}U’ê°·êîɱ·âÙä2e:ƒ1®KÐZ«y;èZš‡Û~*¶/¼åÜ7Pý•פÌ+°‚gL´ýbô‚2ï0ãuRæGÔŸ +±TK¦aô¥™|nw0³|uÓ ðʼnúÁúO+¼;n +ã&Tð—«ÃcΉ5¦þ,Ç•p^ðœN<Ì,sЉ:w\'r}&åzëÍi†ß'óAËÞÔt¯ë/¡d¢ ÷°Å—nhXÓ=Ž+ÃLÖ#:§ÖÑÕg9§‡ ­áãóÚfCý%t}sÄw`:Kä‚Èî»Ü3=ÙaÆêÔ£†ÔŸôdüšÝE(ÍÄ“Ì_°S\ øbGu@³)¬Ž•+Ý^e˜Äe’YsQmjÝ]W&МÉ}Õ`hOu’Ûï4B¿$"dì].XáŽü­µÀصàPôÛ:Ì8@èxDýIÛB§,8H3±­ƒ™å›j¦ ùùúï×8j½}«9xÛt·Íãζÿ¼â?~ƒ¯ ’]'Îä ~씪U +=çQ¿Åé55þ¯¶Üæÿp­.endstream +endobj +1386 0 obj << +/Type /Page +/Contents 1387 0 R +/Resources 1385 0 R +/MediaBox [0 0 612 792] +/Parent 1382 0 R +/Annots [ 1389 0 R 1390 0 R 1392 0 R 1393 0 R 1395 0 R 1396 0 R 1397 0 R 1399 0 R 1400 0 R 1402 0 R 1403 0 R 1404 0 R 1405 0 R 1406 0 R 1407 0 R 1408 0 R ] +>> endobj +1389 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [260.377 654.094 286.723 664.942] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.value) >> +>> endobj +1390 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 639.094 182.695 646.622] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.minvalue) >> +>> endobj +1392 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [264.556 575.512 290.902 584.424] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.value) >> +>> endobj +1393 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 558.576 184.342 566.103] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.maxvalue) >> +>> endobj +1395 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 406.706 186.938 415.783] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.valuetype) >> +>> endobj +1396 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.12 406.706 262.493 415.783] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.spacebeforpstfx) >> +>> endobj +1397 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [265.676 406.706 289.665 415.783] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.prefix) >> +>> endobj +1399 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [395.925 313.781 427.999 324.629] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.postfix) >> +>> endobj +1400 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 297.232 209.647 306.309] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.spaceafterprefx) >> +>> endobj +1402 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.498 221.192 172.844 232.04] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.value) >> +>> endobj +1403 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [484.205 221.192 529.95 232.04] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.increment) >> +>> endobj +1404 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.403 204.256 375.749 215.104] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.value) >> +>> endobj +1405 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [430.169 204.256 475.914 215.104] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.increment) >> +>> endobj +1406 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.108 192.3 397.454 203.149] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.value) >> +>> endobj +1407 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [129.712 180.345 156.058 191.193] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.value) >> +>> endobj +1408 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 168.39 135.207 179.238] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.value) >> +>> endobj +1388 0 obj << +/D [1386 0 R /XYZ 109.858 727.97 null] +>> endobj +1391 0 obj << +/D [1386 0 R /XYZ 109.858 640.091 null] +>> endobj +1394 0 obj << +/D [1386 0 R /XYZ 109.858 559.572 null] +>> endobj +1398 0 obj << +/D [1386 0 R /XYZ 109.858 407.702 null] +>> endobj +1401 0 obj << +/D [1386 0 R /XYZ 109.858 298.228 null] +>> endobj +1409 0 obj << +/D [1386 0 R /XYZ 109.858 169.386 null] +>> endobj +1385 0 obj << +/Font << /F29 416 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F55 716 0 R /F34 719 0 R /F19 516 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1413 0 obj << +/Length 2257 +/Filter /FlateDecode +>> +stream +xÚ¥ZmoÜ6þî_±ßNº<‘"E2E?ØiÚ:@Ñ\¼×+Ш²«µ¬¥=INìûõ7ý¬^¼v$záÙáÌ<á6tÁº¢‘&J¨•d’h¹ÚÞ_D«[ùù‚:Ä:¦D)¸Å1"ÍÛ + îöc‡ŒVkF´ÒˆüïÅŸE«H{³¸V«¯pÆõêþ‚ M˜Tîùpqsñ¯VŠ“«VÔÈ 8äµÄe)¸¶ë»Ú\üó'¦Wæy³_9„lv³}ÈxUY±Í¿6ï/ÞmZ‰4\,—æ! JÑíRð¾ÖOŒ%áš1ü»È{·¹úãÝcsÝd÷uHi@ŽiöQŠè$AYœj3ºQŒˆO-±$Lˆ%‹=dÂbJ‰†g3¦J¢cB#j´ÝÓmv¹o²êC•}Š"ö8òMˆŠÙ*‘x¨;Îa×=°µƒ %–¹ñÊþ•–½ÝãÇ›ìÌuoªIŠžcN¥£>T>>mNmŠ‘ Ø4JI‡YÔk)6оGí%¸<Žy#¼/Bà5†÷]úVΟ@ð–ÝíÖ ªÐ€DDªËà+[¦Ê*ûrHÿºY&`D UüLvàY:Èk ˆæÇ‘5_t濌ŠbLE¦%*€7[“äWæß}٦ÇiP‡·MGN¦Õ49x?9—œ¢#g‰6ðLkÇ@s/‹º :’_§ÖCÂÌÝ·œ²k±o§ÉˆëF2¢¨:;" ;å}C2ÖŽåòÌdƒÍÁ™t>Í3e,‘+‘Àvñ—0ÜÍ\÷¦Ž8v"Ý0bò†òqÚ«ˆ$\ Ì¥»Ã,*>‘ƒŠ'i*aYzÀÒßC‘éá!›£¤€äJø™{bw3×½©fÉ=ݧÒÑ„_óH¨¦79EI¢õÀšqu±˜E½'rl{5QÊ”ä¯Yº›¹lÂPºYzúK7] &–-;‰_\¾ÇŒtOž»9v˜1¶›PcŸm1xÄ M’óZŒx®Åðoi16!yÑh×klnÞÇ\ãÑ3¡m<4ÞÙ2ìV>PJI"¯tR6r»}sù‰(ÓnJX´+<Ž|gÝÀO‡2m†¯~1×G˜M'z$gC¿Gºq¥Áb,³Ø¶fm3”¹ÎÅÔŒc[ßáU¹÷MM6îŠ`gáèBzgz#+0é±ÕÕÔ¾AB¡%Ôkó8ì¤Ì™äÖŽ¤…k©2û¡ßµÆÀ«»¥#m5®yÞéÌjGŸ«v±Dñ×»næ\­s×UÍ“A”R}[F$s%­C)Ó…N2A’½|Õnâ’þ¡l·©˜çé&6TI’°¥…;Ä©^¦ÀË$æI¿ºÄ ºMw€ù5kîÊ]=qÔÂïÌ05¶§¬·U6õ½ÉÕ4¦à0ËÅyõ¯ž«‚š¡ñª›êaÛ”Õ¨Aq-]îZ±Ð\¢3ûZ`É„;_ß–÷DzȊf¦œ8iýrâ–½vç)dm{´q]Z“íWa)1åbsõ÷íCÝ”æÜe>`šBðþÙåæÃóÔqçrßøN¹r‡;h§»2ÑÖ*n¿uÜuh¬'m‹³ötæMF„õ¨‘ãWiD¶™Ê—ÿÏö³ã³ä¾ÄñC‰kûšûšvr2ȽEõ›¹Î•±b9÷…ßõ¨=ÉÊûŸŽ 9„MÀcÌGþˆÊ‘B¦áØ/)äD+æï8óðȉLÄØÂÁáÑbú^Ð5·Å}Ö5ÓSŸV¨Xv…,jW1á’´›ã +¦Oú1¿½3ç˜÷˜u“ïŸàæûÙ`A[Ôy&Xh>Xól°æ~K°N,œ +VÏÀ»f˜1Ú."q½ì‡YÔ.cäï+÷±b³A¡ +zE–,¥š ŠÇ<”…ß”S '‚Ò7ðºØVYK5A©ˆ rÙ=³¨F*Vå>(t>(pdeÑ3Léæƒâ0Ïe^á·åÄ© ô ¼Á½#=Ž?@¿!–}b!‹ +…&‰¤…M9õ[¡RžóS%Œûç#ÉA|Ž^h>’ól$—:ÌHáT`zú6ø /{tY}úþýcvÙ¶ =yžæL’Xûÿàÿ‡-[Áendstream +endobj +1412 0 obj << +/Type /Page +/Contents 1413 0 R +/Resources 1411 0 R +/MediaBox [0 0 612 792] +/Parent 1382 0 R +/Annots [ 1415 0 R 1416 0 R 1417 0 R 1418 0 R 1419 0 R 1420 0 R 1421 0 R 1422 0 R 1424 0 R 1425 0 R 1426 0 R 1427 0 R ] +>> endobj +1415 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 643.96 136.757 652.871] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.prefix) >> +>> endobj +1416 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.57 568.307 181.645 577.218] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.postfix) >> +>> endobj +1417 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [138.551 485.852 187.312 496.7] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.valuetype) >> +>> endobj +1418 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 461.942 152.725 472.679] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.asinteger) >> +>> endobj +1419 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 445.393 182.695 454.47] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.minvalue) >> +>> endobj +1420 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.878 445.393 225.021 454.47] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.maxvalue) >> +>> endobj +1421 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 355.294 167.884 364.371] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.value) >> +>> endobj +1422 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.067 355.294 208.617 364.371] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.asinteger) >> +>> endobj +1424 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 221.043 181.146 231.891] +/Subtype /Link +/A << /S /GoTo /D (ttbxedititem.alignment) >> +>> endobj +1425 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 201.118 171.045 211.966] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.decimal) >> +>> endobj +1426 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 181.193 179.514 191.93] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.increment) >> +>> endobj +1427 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 161.267 157.347 172.005] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.snap) >> +>> endobj +1414 0 obj << +/D [1412 0 R /XYZ 109.858 727.97 null] +>> endobj +1410 0 obj << +/D [1412 0 R /XYZ 109.858 644.956 null] +>> endobj +1383 0 obj << +/D [1412 0 R /XYZ 109.858 569.304 null] +>> endobj +1384 0 obj << +/D [1412 0 R /XYZ 109.858 446.389 null] +>> endobj +1423 0 obj << +/D [1412 0 R /XYZ 109.858 317.75 null] +>> endobj +1411 0 obj << +/Font << /F29 416 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F19 516 0 R /F55 716 0 R /F34 719 0 R /F28 380 0 R /F14 372 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1431 0 obj << +/Length 2528 +/Filter /FlateDecode +>> +stream +xÚÍZëÛÆÿ~…¾™l­Í¾¸ù`»çÂAÓ´99(ˆ,ñîXH¤JQñÝß™}P¤Hét¶R†™ùÍìPlBá›0j‰ÉÌDsM¬ž,ÖWtr#½bb*1nqŒh÷¶’pûÓž’N¦œXc‘ò?W¿üJ'Kàö=Ì’ÖL>Ã=%\ÚÉúJf–pmÂóêêæêŸ-?¦'-«@‘â ‘¦Õ2pmõ{3»úæ·÷<»Š@0[þ’ü”ߦ\&y—‹<ýuöýÕõ¬åÈ(Ð }Ê`‘äÄ¢hvÉîª9Wé”s“|(‹ÆßÍÞüëú¡yßäëmÊXB6ó-ÊãXb•B^’Y"¸„µ‘M&%΄&<ËNII› “DHeFWQ–’Œ1·ÚõïyÙìebŒX`Äè ’0š9²Ë·U™²,ù=å ›N…H? ¬Ðª2•Š…ÛF˜2nê¦N3‘TMžfÒŒÞäåÒm0M@Y#m2/~»Û6ÕúfS”×ËÂ9ôPE¼¨ˆ¼U¹m†êeDš¨ÞëÔùGJùÃKPÄJxN3tÛ¸—¯†jeqò¶©‹òn¸'L²@3”Q‡8ê|y^XL…ÑDâ¹½’^ÔTÓägü3_íòàÚh¬åp äSë@dÒèmoç§ÜíMU­òy ÛÃK~e›ê|[›¤úôï|1´¾„³㘉…èNqN „‹‚8aÖ>lÑÌïð÷)Kr¼—pÿ6²Ŷ(¶Á1–Ô0Ðx¢|ÿÖ5žO¯[O¶A¡aß‘n[|‚ù«°JSyÊÅ }ròÇ>§xu³—@X|¤L´ÓD’É^"jƒ8DÐ6ˆ€5˜ \0ÞçžÝmµZUn¥pt}˜¯7«½¼R~Å[x]Õë î1A‘z[TAÌOûQ‘ i(Qn“4ð\»Á˜¼ôîER¬Šuà´miæåoxR” ätŸ;•_ÃäÌPk~&wˆar$y›$‡¼¼õ‡Çw)@R…à%k¡h¦‡@¦”9ȸÈÕâ4I¢•2iè“@¦ŒË¬~òÍ €ê(ažUϲ싌ŸdÌ>ÉFr¤üTwO,É4ë*v343”hRUºÀz†f¶+ѧüÂþ y<¿úÎ_û.Vé"Ä(£ ÃÉ·¡´2ý–ÑavÛÜó\ìêÚUø°øÚúÛ"d ¬ýݲXú›² +䮸8œ˜cˆ=lVÅ¢hV™¶Dјàï†ÖbÍ%»æ*n¶Ò„¶%Àßòò®¹wáê²›#˜Œ€jNóèhÍ}>²–Ðv?¶ lyb3¦P@,§ÏݒňÇwLÚ¾‡ûÇæÞ%T· •¿®×,#Ršã¦¶š˜~d?aé·Õz3¯óYʰ‚wía9P.Ã3I4ä‹¢|145Tc­©ÏØ<°¥0êìÍëÕA0ŒýÉ_°ÀqLˆO®{Ž™¯bÐݰKn±~1†FÉgNÿцct$˜'çâ>ÞóùðÄ€!º-Æà†f„~‰ 8 ÃíukZýd`\|{¿pw¿9ŠBú³— ‹/5åÿ0T¾.RÀf#•³Êv,q¬PèÝÆË4–°eF³Ð‹¸iòÍåÛ-BÃ9OˆóJûñ±Ò>’|Q»UÜ·WðéÜvŠ<ÞN‡PBíÛ)=¶ ˜á#íÅ@ v‰ö‰€½8vê€Åe•º÷e“ß…©#Íà Uìô™DŒFe\-{e>¬p¼Ì×íä9lj¿çHüùØb´cU$£â2 Ä1êz <‚Kë{.ràÑg¼.°Ap?wg÷@Ùv6à~™ßα°j<9Ë¡Ž»Ÿ»C{áŽò~ewŒ]gnÜAzƒÝ†2ÌEFMƒ½ÓØX€¢ ½XìÇs?ÍÍÀÙóz¾Î›Ð¬po]§®f]UZ¹±Y1˜©’€!~û€Ü^„îB+J¿ 0ÅeXìlÔ¡Ó´÷¡‘ñÛ_Pe´Ùç²Ëi€Á° +‡Ô+yïYj±¹Á%ä w_ýœfÊ£ëÅn; Ø:ÄÇ€-’|°õR¤¨ é$Ù S"ZT;{=ðW›`¤¥ú©µyF‹\Jè§Z̼Mð¨UOÑa—½Ô|eS™¶ŸoªÝP"p4!ÌhÑñÊǮМhª»Èz¬E·{tÙžÌÚ]fAô±úul¥nû ßÂ7gÛ†í¦Î›\-¼Þí{À¸wØÅ Íêyà8÷®iº[ãßNŸY÷{½Ê‰õ¾D‘<"}µó)“¸ÀÒ?&b%œ/}Æ™¥F$9Æ\!¤àï[²»@„˜ð‹mîú%f— €|Þxv¯‘¦J/áCx]lýÕ·|ç¥o=ߺDxlCÃ7°aŒ%ÃÅýñkßËÇw¾»Ž¶¨óÂ\CÞÉ8mͳO,±ï-ò(îÙá—Y—xÏB®u +ß…á¸2ÞGÇl»áŸÖfA§‘óW†ÙÆ;øuëUPnBÑ£o–jÔ»˜{þÇñ3v Èà +<ùý­çìÖñ"øîº 9÷{ÕöÐýë¥Kˆ®*Øz=\[mT_æªä<ÄZÛ³äÐ/‡ßZ¶WO@²vR¸Ï!6µÛO¿…y;|MpP‹H7DšøEÃ4µ+\N…ûä«õ"ÈÇÂ!ØìÝ?mŒ}Iy‡ÞÝÎp^>_oÂgŸ_"˜†ã >/©ïiåô@qÖgˆn?CüðÖÉt:ò=‚Òó¿GHC4×O}öyy/#Jñ¯J|Ä;•ø`‰¶_ûøFÊ*Œtï<ß¶þ{í~ù5§‘6JÀF&ž—^lŠ µbÛ$ØO?“bTåþzÀŽ~ï·RøÐ·ö¬ìM®· ± RØXÛe ÊÙ]—éÿ8ã\.ø»œV–ààöZùBâÎ)™Ãq€¼ùj2˜{§¦„ó†C胃³jb„Û1÷{)p÷_ûßLí»¿›Š§û™;+ðö‡`¨¬Ké˜S Èý…šæP>Nñ;hW¼CD¶’XЧ,@]cÆH$TàÂÆŸƒ…Áÿ8ë\~endstream +endobj +1430 0 obj << +/Type /Page +/Contents 1431 0 R +/Resources 1429 0 R +/MediaBox [0 0 612 792] +/Parent 1382 0 R +/Annots [ 1441 0 R ] +>> endobj +1441 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 82.391 205.756 89.918] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.onvaluetotext) >> +>> endobj +1432 0 obj << +/D [1430 0 R /XYZ 109.858 727.97 null] +>> endobj +1433 0 obj << +/D [1430 0 R /XYZ 109.858 682.147 null] +>> endobj +1439 0 obj << +/D [1430 0 R /XYZ 109.858 419.134 null] +>> endobj +1440 0 obj << +/D [1430 0 R /XYZ 109.858 327.195 null] +>> endobj +1442 0 obj << +/D [1430 0 R /XYZ 109.858 83.387 null] +>> endobj +1429 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F47 1436 0 R /F58 1438 0 R /F19 516 0 R /F55 716 0 R /F34 719 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1448 0 obj << +/Length 2138 +/Filter /FlateDecode +>> +stream +xÚÅY[oÛÆ~÷¯à# ”Û½sÙâ<4±O›¾­Õ @ÛYblžX¤*Q±Ý_ß™Ù]’"e%nµx™û|3È„Ã"¼dθ¤+‹dµ¹àÉ-¼ùþBŠ\ æ\â;VÐÓ„Ë_Jžä’•®DÊ?/~ûƒ'kàö#œÒ¥Kàš3©Ëds¡MÉdáÂýýÅõÅÏ=ÿ®HzV3…"Åg¨”h–ƒßÞ¾W‹‹¯ÿ+Ë„îï“@ëßÒ_ª÷™Ôiµ«šU•ý±øñâjÑsèTqÎa‘äŒPt{aôXêïRÚ,—Ò¥¿6u篯Þ]=voºj³Ï„HÙv¹G}ˆ•c¥µÈK‹’)©A6²1fª±Q“ÆœÓ8’œÐXV› 3¦Š-\´Ÿš·™±éòþP½¾[6·•W,ëÕ˵eÊb(˜æ’Nmw™QiÛU™‘éÊÿ¬gŽ–9%[àï‘ÞsÚ|Dì G.'õIPDò´ÝV;ð7O»'¯¾ý)¥™Ñ2ø­-øÈÚo²\i.®¯üýÕÇLš´jºoC˜ñyà”—L[C캧m5(³< +œ3= —þgƾÌe8ÌZUëÃn.A9æDL—ß¹á×U³F(žFƒ ñ^ö]»¹ÞÖÍÕº¦œ%‡*-¯UÛì»™8©˜.¢Aß¡ÿz'iâ¨Át3Ö1ÞÖ¾÷ö·7ÿ«VsQJ1)D  Úº¤„LT>Î0§5ä <“&Ä4iÈÝ\)•Ö{üÕà¡áÕ®ZûçðZ¤Àðäuõ¦òÄPÞͰBPäX ¹¯} +3•øÿ YÃí¶âÉ|t”zdΔ;Zó6s +\ ÚæÚ8É ÝX›i!Eš³rÁ‹¶,ä®2Y¤w ý¸GO±¨ÉE@93ÜM!d‘•EÚÒß +ø±ûœˆ'\A¥˜Ï„“øY8 $ÿN™À“þ§Ê »\Î’} ÌfäF˜óyò²\K{Š\Éì—"«ù €È0!>DšYó,¡´Dsþ…`E‘å#µÜÍÝ:”ª&¡œ‡Æá€ãC£éľÛÕÍí\mÉ„ƒ—æ©YÁÿ ¡‹¬<>Z¢úu'¡"‚ꆄu:dMK«GìJ¥M» €ÔÿÈ  võ_U ¸‹p)ªè~×°[‚\:X5¶Ý²«[í É@ÑÝщI‘kÎaV•‰±àù¼óáäö&¼?…¶Z&•«2›cÉ9¡Ò1áÄXè}ÕnÁ ؉:ôÑ“÷ÉÍèÚò›ÛmM‡€¦8ÕàGx¦œáÄî¶]¢¤å†bÑU»€è8I†tOš8Xw}¶\øŒ¤¢<Ù·þŒÒC +ÂÌ/c +~3Ci@wQZ˜Y d`ù‚Æ“ùè(ys${Ê=ô°,/}>vp ôŸ`zžl¥\³âXËY'õ$3u¤5˜Òv´{.™,}3{}¿ÜïÃôàw 10îË€‡áoV·°¡2%3ç¿ó1¤Rl7˜7”XM‡¥¤”ôE‰CLµ®¢ó7tIÙxò‡jÎ=¾öˆl³_¬[ôøß`wˆ›xÏ)æ'5 €x&ù3–Hî÷ÇɃ¯ßl‘.[Ø“aY̯|ÄlîæØ«µvPpŠôC]í–äÜUF£‹IC»6|˜6p¥…²{ËbþxuåýCqâw™aj,|ZÇÉæ´¯€¤°˜*trµl"_š1=ƒ{*ßôý#È}O<Éÿ#ïŒ6Ž 'Ì [ù!Láaˆ}øîB_9áþÛù”AÏ—ñcË*±ŒFé2|²Ùn6Uï´g¨Ý}`½º£ØE.½“Ž01‡%çoâzr_mFëÉ)Â…¤·UÓ›ŽÇVþñÍàyúL‚µù]о@0Asév-9Sã°"òuxO;ÐlÉÐôDB³5ú%­1žÌGGçËÇ1÷±«Ðö¡3b3ñNói+ÒXÀ¿@¨£>9P@Eq +:L²åéy"ä#šYÅsAa_gÑ~J¥¼‰Ú¶£¡×‡•âUyȇÜ[R˜BÞ5Õƒ:®K?BhÙ‰–šÉ8.^°Œ[åN ýñ;Ç ýØÕ}=4´”¶·‡øy² T>z¾Õ…áŽP‚=3£Ãî )`^0£³¶Ü’ÖDü·~r4ÒðJ•ñ_tÂË¿¤›#endstream +endobj +1447 0 obj << +/Type /Page +/Contents 1448 0 R +/Resources 1446 0 R +/MediaBox [0 0 612 792] +/Parent 1382 0 R +/Annots [ 1450 0 R 1451 0 R 1452 0 R 1453 0 R 1454 0 R 1455 0 R 1456 0 R 1457 0 R 1458 0 R 1459 0 R ] +>> endobj +1444 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxdropdownitem.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 1460 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 15.00000000 15.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201239-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 1461 0 R +/XObject << +/Im0 1462 0 R +>> +/StandardImageFileData 1463 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 1462 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 1464 0 R +>> +stream +q q 15 0 0 15 0 0 cm /Im0 Do Q Q endstream +endobj +1460 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201239-05'00') +/ModDate (D:20030406201239-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +1461 0 obj +<< +/Filter /FlateDecode +/Size 2660 +/Length 1465 0 R +>> +stream +H‰¼VyPg›Í !ˆ´ØÂä›}0•‘BqÔRFoÏÌÍšm i g»agE)m[žl)3»+È>Ó sÕ5Q%Å ùWR6f÷|7ìëîo0§ÒÚ6¤¸j> %Ãcàh¼I[¹UÁÐåÙÆN -œŸòTi TÐgpô—>íŽo™o ¡'ñ7ûâøž§äTr«P÷]™‰\ |Œ‚ý…ý‚^O×§!"P¯ÊD] ”É&Ú@¥fˆ½*¬i5—‰½kA)—Ër¥B¡Tûûù«C•ÊÀQMˆF3J­Ä",à àï  +R©‚´*•JËM*-¢þ7 Ø/A-GÇÑ’D8ˆÔ©&Økèè"¶HB,%¡€$:œX"•É~þÄÓFD¤Û„˜ Eb‘D&•KHe,2ªIqXpŒ$yn±&¼bNª­Ù~0å… !9­†Øi¶ªs©²ˆÚy=×ïíq#vz7rÖæ\SÚ‰FfúÈóy7¨¿šÖ~õ£ãfozÔû¯;¼¥íÂo÷v9ùÓï}ù%•ë?ØuôÔÏ·úã3 +ÌKª?Ü}ìë‹í÷Õ !¶bÌI&•Äa +a1ÁbÄ "\#Ñ­©Ñr ZsÎõÄN0\·UզΠ1Ú§Ýrd‘q'Î##MiyÓꆇÂóDy)°—AIâgª! nO}ä²Ûé¶Sž~œ¸£Š…ùcÚk6u²mYa˵úê‚^禼œŒ®ìkÖÖýË>ßU°èr×AP¾úÍ‚æKÇïœlémiÝ·¦î;ÕçåÑ‹U{íÕº}Æž=õ;š4šIõ«(×7äÇ?Ùû8òøO‹ +——¤Wæm©;ðrcàÙÉ}=o¸6šç4EÖçßšKï÷Ǫ·ŸD=xõhaëDy•¾aä“3›Þ›Y¡«Û˜ÖÉBû–¢ƒÎ…+·õöo:´²Þ1¿¹hþí¹]Ë]¦K]Îu3vvÖDœ¶Ò­}»ï97/¸vtå± ®Aƒ¾BusÑ£%G6ßè}Ç9qÐ>àºÏÂس}šŽìã–‡'Ú]d!¾¥$©¿å^ÙØæÄ+Ÿïpf~Áè–Ê+û]yZ꪿ïÍxØÒÏBÔçÕU[YˆüvÀu¨[¿âLíKãÙKøŽ†áß`‹Qïdü4 `(ÌR´gаã]9òÐüƒG(ÄÈÏ?•pü#ÌÊ‚I\ËŒ.àH@Œ‰Ð ÄXÏ~!ñ¢àƒ^“D ~Yr½ÃFè<ûõÕe|¯A£Óh :^q×SJ3´½½Hâ§Dƒ.::6!zZBôôP]tBŒ.!ö|Aþy, Ð òäÕ6Þ½p_¥)p“åOŒðò'Æ åúšƒˆys»%SÐñú·™ ¯endstream +endobj +1462 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 20 +>> +/Width 20 +/Height 20 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 1466 0 R +>> +stream +H‰úÿÿ?¹àÿéýýû÷?¾ÿþçÏ"µ°°°prrrpp|þüùùóçÏž=2ˆÔËËË+%%%))ùêÕ«k×®988äÚhiim<{ö¬¯¯/.322¢IE6oÞlllŒ¬¢ M1„{ðàA¸ ˜zqÙB¡^ á6€©öÃóPÝÍøÃÊÞÁ¡æh¬öb# b £¾¡M/1iÍP  Æ`½øÓ$0‘¿ÿþQRÈ^°.p§+üy¢hò­[·òòóz'NTSSSVV¦güy¨hòëׯoÞ¼yÒÓ(b¾}»ººº¨¨(0“¿|ùñ ÉA<<< Äå}ˆí@Ùœ ÌÂ@6@€ùéBS endstream +endobj +1463 0 obj +<< +/Length 1467 0 R +>> +stream +endstream +endobj +1464 0 obj +34 +endobj +1465 0 obj +1504 +endobj +1466 0 obj +296 +endobj +1467 0 obj +0 +endobj +1445 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxedititem.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 1468 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 15.00000000 15.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201241-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 1469 0 R +/XObject << +/Im0 1470 0 R +>> +/StandardImageFileData 1471 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 1470 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 1472 0 R +>> +stream +q q 15 0 0 15 0 0 cm /Im0 Do Q Q endstream +endobj +1468 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201241-05'00') +/ModDate (D:20030406201241-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +1469 0 obj +<< +/Filter /FlateDecode +/Size 2628 +/Length 1473 0 R +>> +stream +H‰¼V{PTUÿîÞ}²°ì¢“<°uY@‚!@[l(/™l†Xö²»Î•‹»wI%“gÔ‘2³¡B)ÓiL{;JšYjš¯ #­|›‚ÀÛ¹çÞÝe§þhúvÎ9ßûþÎwïùÎÎÌ1™¥ñÀSÜG3‘ôˆ¶ªáV ÐO\y›4Û4þˆ¬eB”4‹R4&bù‘@™ìDzÊGQA¢€¥DO/ z9€ùB˜^[‹,4šåb” Ù´ñMŸÆˆççÐìÕ¤âyª_ƒsÞÆ|=7&‘—xóoÃ{Vújö)yJ¢m¢¯j‚ÉsäzôâÐ@ T‹~XXÁx~P°@Èÿcäy¨ƒ—Âüú:7M£EÂC²0î:««Ø2¿Æo/©a“¼[(cêch¦ÎæMSDÕ²£å–Y ÊF‰ÍÎŽ’å.ÚQC¹*è"Ÿ?à92lCL8 +,˜fÊ­°9w}€JÎ86GUçæk£Î+僊±É!Õn–) ê(g5KY1úÅõ”è$8óÞbZ`‹ùöOºtY^eY`ñ5f— +ÐÈ«i¶¬Ú ÓÔP(ŽZÄš\…eæ" ÃмAéU8«ìŒó¥lÚaóV*TØ|¡WÍW×JÕV»i–wo œìî^u {°Å–ËÐŒsTqµB@NÏÀÃx–©ãWËÔ»Y5ºpA4*äZµ…aQAУWl¿ßŸ.-f ± 'qB¯Só"¹L,Œ÷¬d —Ho… @pg¸_!ìé|S>õ¨Btú= Î¶2ª*× îOÐ` ¬8× +@­T*UJµJ¥Ök#BÕêЈ :]„N7A«Æ$.c¢ ÓhÂôFÏO½¢ý7 ¸¯@«DÛÑ“DH´©%¸³hë®›ÈB(e&±€$ÚœT&W(UAÁÄýF$¤×„” %R‰L!WÊHu22jIilx’,{Nµ.nár£\¿nÓG9“&G”ì³$§8›å*â[K¯Ÿ»QãJ·yçË ³^-³æuu°3Æ/?OýµkÅ×?ºëÏO|íÝW>^ß}â÷›ï}²ÿäµ +_ßòéSÓ +æÚ^lÙðþgßœ¾xK  B+ŘrY*†›.EÆédÆåëô<‚}%Ç®'O¶œs6·æ–FÔ¸RnÄËyŠ„Ô®ãDÇxk^ù –:ïƒðp‰~\¨IüL-dÁÕéwû\.¦ûÀåk‡277s0/²ý⺵ž­Wvž}§enÓQkyI–§s{Õð5+½gš†zvä» é'9°SÛo¦o=Ý~hGæÚ®Ž-«¾/*ú qõ MOÆWö nóT~¹§xø¶(㙩'vOQm‹¼ÂìHœ·~Í©ÆÕoߊ}LÙlj~Æ®5 m«ócÓ†¯r¿t÷ÕŠ»Ì +=s¡³ôôÀÞ}—¯ 4™Ô?ÒdŽ?ºtWÔ Âó([ïš»MžÝ“eh8ÀÁ…¥ìm}>÷óž{oôXG¾]òKß¡¦6ÒF8¸’Åý0 »T¼›¾ÓÕ}÷4RvÖf vÞtDíÉìý"úRSá^Ö¤¢z?ì+¿ÝÙÖr¸¿àNçÅ4Gš~n|áº÷ÝpßNiÉ‘Ö'¢¹ŸðYŒÅßZ¹pZQltÙ1èÚ£ fƒñ,.ÌÕ#Ý?xÄ@Løþ‰Äá9Ál†ÇùÖ +"}ø€ÿ 2±Xˆ(?Ÿ˜"ú ëH—"ß#œ„Ñǯlq=64¢Q%ÊxÅÝ!f¶a—]iÓ `4’Ó )é†1FCz’1=% ÄvBxÇ´K|yõí¤ŸÏ¥œ ElòÑø‰q~üÄÄÑøQÿs n/Š2^ÿ`D>¢endstream +endobj +1470 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 20 +>> +/Width 20 +/Height 20 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 1474 0 R +>> +stream +H‰úÿÿ?¹àÿéýýû÷?¾ÿþçÏ"µ°°°prrrpp|þüùùóçÏž=2ˆÔËËË+%%%))ùêÕ«k×®988äÚhiim<{ö¬¯¯/ñgddܼy³±±1²^  œ$U/Dœ †^aÅÈØÈÀPV€Õ^üö¡é%&m  +4Á¬š&ò÷ïß?JJ²ëÁº Àœ®ðçˆ^ É·nÝÊËÏêœ8QMMMYY˜žñ{¨hòëׯoÞ¼yÒÓ(b¾}»ººº¨¨(0“Œ¿|ùñ ÉA<<< Äå}ˆí@Ùœ ÌÂ@6@€“ S endstream +endobj +1471 0 obj +<< +/Length 1475 0 R +>> +stream +endstream +endobj +1472 0 obj +34 +endobj +1473 0 obj +1465 +endobj +1474 0 obj +263 +endobj +1475 0 obj +0 +endobj +1450 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [257.029 644.513 283.374 655.362] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.value) >> +>> endobj +1451 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.886 561.887 426.231 572.735] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.value) >> +>> endobj +1452 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 534.933 205.756 542.46] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.ontexttovalue) >> +>> endobj +1453 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 404.517 173.825 412.737] +/Subtype /Link +/A << /S /GoTo /D (ttbxedititem) >> +>> endobj +1454 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 380.856 230.853 390.719] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomdropdownitem) >> +>> endobj +1455 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.892 308.399 257.963 319.247] +/Subtype /Link +/A << /S /GoTo /D (ttbxedititem) >> +>> endobj +1456 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [474.684 308.399 538.252 319.247] +/Subtype /Link +/A << /S /GoTo /D (ttbxsubmenuitem) >> +>> endobj +1457 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 298.381 141.849 307.181] +/Subtype /Link +/A << /S /GoTo /D (ttbxsubmenuitem) >> +>> endobj +1458 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [423.404 250.615 538.252 261.464] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomdropdownitem) >> +>> endobj +1459 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 238.66 131.056 249.508] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomdropdownitem) >> +>> endobj +1449 0 obj << +/D [1447 0 R /XYZ 109.858 727.97 null] +>> endobj +1443 0 obj << +/D [1447 0 R /XYZ 109.858 645.51 null] +>> endobj +1294 0 obj << +/D [1447 0 R /XYZ 109.858 535.929 null] +>> endobj +238 0 obj << +/D [1447 0 R /XYZ 109.858 525.205 null] +>> endobj +1295 0 obj << +/D [1447 0 R /XYZ 109.858 239.656 null] +>> endobj +242 0 obj << +/D [1447 0 R /XYZ 109.858 228.933 null] +>> endobj +1446 0 obj << +/Font << /F29 416 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F55 716 0 R /F34 719 0 R /F28 380 0 R /F50 672 0 R >> +/XObject << /Im26 1444 0 R /Im27 1445 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1478 0 obj << +/Length 2036 +/Filter /FlateDecode +>> +stream +xÚ­XÛrÛF}×Wàmª‚ nÉSäÈ»JU*^‹ÙrUœˆIì‚CéïÓ· R”¹.—Kæ\zfºgNŸî†rBø§æAgNªÓ Oåî&t60ó%~¤‚,ƒ&Î)v "Í“dèø:ȳ%ÿwóû¡³‚Ý~†U&Ïœ#´Ã@›ÜÙݘ8tšI¿¾y¸ù׸ ϥθՙBVâ +•üÍÊàw´ïvqóÝ{;Ô_¬‘Åêw÷c¹ö´qË®l–¥÷Çâ盻Ÿ£ +A.Jߺ0+òÆ¡xíilæ§~Ö:ñ|­3÷·¦¸µ¸ýt÷4Üå®÷”rƒ}Ñ£>´UäI‚{•‘6p6n'§ÇQè8~Kc+r¦qæ(D&±:#T’< b¥è´VeWtžŠÝ¥—º[l<³†q8iˆÀ€Ç‰xÍbáùʽ½[Užrɸ³;‹2­œ$Îè÷ž=¡³“–Ĩ4ùv/¶Ù6Wp4ͤA–蹚Ÿ@É;l½T÷änÐÂvËhéOe¿ìªýPµ ËfN“JúaÅ9ˆ«ÀèHNºÅ>ÝyxÊÿßc%6vžoÂЭzþ-ø§¯ØÔ$â×Ô+yj ±'ÔW–âäþ0 ,Q …~ã̆®­ÏOLäþÒö"Ò®=?ÊswØÊ®˜þ7Ñáð™¹å¶ÀåâÍ´HA›„5›mÙÑÅ‘J+ÞrÝáºG¼9¥‚À7»Š‹7Zº·eÝje' ©Ü•‹ä®ÚÂkù$ƒ#´oa¿ýSÐeþ“Zï-gÓCÓª¢®[4óˆ‡h¼;èl ºýªÙÈa[VŠÚÕ¦Ù•|»,A÷9I’í …™ýCù4 >Qää±gÜ=4 Ò¿?â¦m·b1ІÏ-ºb9”ÉÈx=U¿¯é•žé96<ÚÓoµ+6%ŸÐØ»|xnhåךB3ýHvX¯{(fGú@üÐîK@ˆJÜ¡*'³¦³™@‹ýXóý B&fòU߀£·ûi £ìuÕNc´ùŒL’ ‹´‡øv4ç¿sæY&ÌD¨_P7r…!:ÞM„Æ hÔ¸*2Al´pôhÝ÷p•Ƹ OÁªqô‡sÒå>DÚä·ßÄh\‡8¥ø"#ä ûMËB=#žD–Õ&žYæˆ#ôÂàèýéÅ  ø€^F‹·-zM½âéG»v˜pÃÁÿÏÚÕçP‹¨•xð ‘ÁfKJ¾‡.)W"ØŠ.Kq"ˆÆ–A [8s¦Ž´lëî .  “ð-¾ÇHß6ÃC9 àÌý·Ã›Ñ¥˜ëà6É^B›H|ØÞ{Q8·Ðbîtü:Ô½k%b ´ê^XaÆkÈ Ð¸ºz$*:'–éž)é„íÑ=¢U?‘a×ÎÝQd›v>zÄî0ú_YÒWfuÑwòv((‰!£ +1U‘Ã)§˜SwžfÊB¶’^rv›'{óÓd>ºP~tŽþL«<ÈJæjåÄ"s¦Á ì[4E™R„7Ò³i-=:ÂÑÃk[½ÛÂ}3Gˆ’$ˆS}'Ì„/¹‚ù +_øàw ­ý£§ÂÑXÄ1Æþu±Ø2*#Ô|bÏ™Q7‡£Å-å EÝnZñ r ³pêæ#)KˆWî; ~‹Úª9÷ž~(šɈ›-î(ö‹K-Û1̓Ñ/“âDzXýÚÔÏß,óðJ6œ _Ä€ˆ|¬qòÜ·m[—Esåc{Y„Õä±Û•ýÐUË{ö5LžP¢,£"»Â, ßyéÇÐïá‚Áÿ!ÞÅQ,,9îVrã#Ñ[ù+‚§~æñ k–-Þpk&¶ïÞ«|2'‚ÇÃL.aᥩÛlð|a¸Æú*A àèü¡Û¦Œ{i‰ Ô¦aÕÖ\ `Hð)ª§823ßXhübÔÙ?Ù3j$úmÅ£P•KEî_À°V޶-–ÍÇ{Êr¿˜5ÆâL]æ™ð%0[‘¯3Y‹…ÿ¢9Ñ~ -mt¤$ ©) ™†8ÏßÚ7AJ2. ’|, @zž%ÂÌ”%&Rym)…Á£,¦’ƒÊ è&RoR¦~q µ™å:8fv¢ÔšØl1(ª¦”ã×”#ì¸sOÁÖõ¯¤ŠH€0=IÝ7#ÌŸ„Û_Í8ª±ö$>.¹A¶;¡fºCë÷Tzõcžó"8¬È‡dÕjBå\—¾;ôC»»lfô¥ªëÈçÛÕ[•–øÈÀÅî Ãzöê•NÆ×¡~&| õV•Xšåôµdös¦p¦)p«éç0ôàñÿ Îr´©íâÖŽ€ˆú²[Ð!gµÜû@¨ê†éƒUü:I¯ø‹Ð8à÷ºDx9àÕø‘Eä­+ády²ç®¥ìaD&ÀZM °,ClÐy–cí„ì‹;¬¸ä³~Ûó(ʶ·Ö Â'ìUýª~„sFʼnßT´¹ìb·¯Ë¡eïîÊé kúó`”gy,B“^‰EXcç"e+ìÍ44‘‰C°÷fa€[ùŒ‚íÇI¬lxçécJ³A"Á±±@®j9“?,qÛ>´utÙ»jÎUKáJ}Ž‘JC.®Ó1Òâ  Î??Ëׇ‚ô«ŸÇ ÀÜ~—É¿¼!¶endstream +endobj +1477 0 obj << +/Type /Page +/Contents 1478 0 R +/Resources 1476 0 R +/MediaBox [0 0 612 792] +/Parent 1382 0 R +/Annots [ 1481 0 R ] +>> endobj +1481 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [423.654 407.199 480.358 418.047] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomitem.fontsettings) >> +>> endobj +1479 0 obj << +/D [1477 0 R /XYZ 109.858 727.97 null] +>> endobj +1428 0 obj << +/D [1477 0 R /XYZ 109.858 535.682 null] +>> endobj +1480 0 obj << +/D [1477 0 R /XYZ 109.858 472.801 null] +>> endobj +1482 0 obj << +/D [1477 0 R /XYZ 109.858 408.195 null] +>> endobj +1483 0 obj << +/D [1477 0 R /XYZ 109.858 345.527 null] +>> endobj +1332 0 obj << +/D [1477 0 R /XYZ 109.858 270.904 null] +>> endobj +1484 0 obj << +/D [1477 0 R /XYZ 109.858 158.34 null] +>> endobj +1476 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F50 672 0 R /F8 369 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F19 516 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1488 0 obj << +/Length 1623 +/Filter /FlateDecode +>> +stream +xÚ­X[“Ó6~ϯð£=S ÝlKtú :´lÚaxð&bãÖ±ƒí°»ýõ=G—ĉ³î0YúttnúÎѲˆÂ,bT•©¨àÑE´XÏht +¿Î˜G¤‚¥`ˆk¤°³@üðÝI£”­4"¿Ì>|¢Ñ¤½†]R«èÆ”p©£õLfšðBùïzv9ûc'Å­ÑNÔD¡€8C¥´@³üîì{:Ÿ=zÁud¿çŸ#ð€ùòCüÎ|N¸ŒMgš…I>Í_ÏžÏwœ(¾å°ùÆ¡èö"“ãS?rž')ç*þ³©7š?}ÿüvx5˜uŸ0“MÙ£>V”":ÏQ–dš.ál“Çg¢ <˾¥q€L4V“DÈ<茩’kJ2ÆìiÏ¿šfØëÄÑ À˜ °S( {Û\¬ÊæÚ8 ؽS>•9ÑiA$å¼Ù^ÕU¿2I&âåÄý,'Jð(—šhzÓ8xl:;³øA ¬QbèNãvc:ˆ‡;§¶d»]B’Lrïñ`Üã$RÆs Ú²ÜäÏÞ7ûS¿9ÕD晕0ÜmÌä ¦HNÇBA­BÅ¿LDŒ0ÊüoÅÂ,·ÝTºPD±3iF/M³Dƒƒ!‰¤ñÛ«¿Íb˜Z‘g$ËÃQ‹¶é‡É\Yì Hhc;<žˆƒæ¹ðØ~èªæz*&Ù^e6‘"‰Êµ´Ÿ—ZkÀÔ~A8 ÊyóT9Z`¸.p#@3Í]˜ž,—àžÇ$' +}Ââ‹$eñ +.48Q‚ïem +ßCë~;˜5ï7 (ga‡˜E NÀµÃºùªñ¸•"6˜ÛÁÍÞ¬*˜®Ã<ŒW~¼M¬Øã•©/qð¿» L ÃíjÛMÕðÑÀKn8fmPDH@Ã` × ŽÝ°w« !ÄÁ³D’ÃÙ +èÍÍ•~¦CT`@e×V{âÃ=¦$_›`É=Õ\Ôeß{ö„Kó¦¼25è$İY ɹ °W³uÁ©¯0¨Ý±–ÎÕàˆ³[[¢­Ñ•ui½êm/¤®š½í;`øŽN ¢´Ž2©ˆ(2¤¬èK´¯°Ô×£‰G¯Öà—g-”Ñh_IS/+ »ŸÖ3Náú¸Zô²2Î20­„'ÁŒî¹9j.ež¢ÐO/¶ýЮÁÖàôCö†³8Ôx÷÷6 +¶- ÑÚ$´ì¨MHƒ¬t$ÌZ7V1' ’ÔXÑ÷ ã•0¸‚ˆë3%ÜÐõ‰tCƒ  XW&ž™~ÑU›¡‚¼Ÿð%"Ïs&‰@á(3™ÉæOJ…Ö6ð·t?}µÞØë ã}òÀ‡M­Ã݇ÑQBjå®cÙ¸+›Í~·•än+’‘§!–N›¥ÛTÚëww³ +þðÔ%)Å{î0^‘ÉuA-;‡©ÇΖ=Ü]ÛX'´›­Ó¯ƒ»çö`œ%§# Ð¥®SøÝ¦¨+Ô h¹2ßoE.ÊQÄ~D'"$”B׉ŒÀ÷u"ò€NÄÛê·ÿÙ^5ƒ¹ö¯óòìÒñ¹YêøH™Ü³‡Ù±ÃPâ£ÚNã³Ã²ŒOPßZªCÏjÛü]S†¿-µd¡Ãô2Ê“Ü÷™å-VWðš-Ï(ÿƒYärÎÎ|¨ŽÀ÷…8@òPE#³½‘£«m“×àÛõ¤üðŒµ?˜ ÃÕmûin „ÇçOn §_¶~ó¿¶äƒ„z´úW¢¨}ßÀ¦¡Z”5æÍ‰Äõz÷ÂsŠeÇ:¤SW…¾Ç­Úþ¨ +Yvê=ƒ%LÿXä{kx +ë“Ì’„B‡¿eùÅÿ-Ȧ´endstream +endobj +1487 0 obj << +/Type /Page +/Contents 1488 0 R +/Resources 1486 0 R +/MediaBox [0 0 612 792] +/Parent 1496 0 R +/Annots [ 1493 0 R ] +>> endobj +1485 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxlabelitem.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 1497 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 15.00000000 15.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201246-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 1498 0 R +/XObject << +/Im0 1499 0 R +>> +/StandardImageFileData 1500 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 1499 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 1501 0 R +>> +stream +q q 15 0 0 15 0 0 cm /Im0 Do Q Q endstream +endobj +1497 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201246-05'00') +/ModDate (D:20030406201246-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +1498 0 obj +<< +/Filter /FlateDecode +/Size 2582 +/Length 1502 0 R +>> +stream +H‰¼V{lSU?§·Ïµk×µÄ0¶¹‡’]×­°,Î=Yuå±#"Î>îºÍ»Þ­½eÁÁ10D1l î¼!†˜ñÖH0" Ad"Ï0ÁÑÁîzî¹·/Ñ?Œ_sÎùÞ÷w¾{¿s:-ßb§ŽbÀc4 Ùˆ»‚­z¸@ôVÎ&NÅ6u("w%ŽÆ¢x,?)}XVâ %XJãñDq2¯Ç‘~Ì—€©55ÈB¡Y*DñšÎM5F<¿Šæ€&Ï“Cœóæ`G%â&gþïmxÏò`íÑ>E/ñC°Å«ÆËã9Ž(¢çI/ p€jÀ Ÿ,°¡•DkÒ ÂGÉôT‡Å„ônE¡EIJÓ>·Ó;Ë^ïÙËLz`tcE»]4¥d .ç3tƒ ce®Z&L–z©:éK•z¹üÏ‘`bbÑaÁR–[æòоÆ•”öÔ¹êܤÛÇÕFUTÎÍÂ:$GÛ| =ƒt“C:1ú·IÁ9Šwæ4œÅÒàJøöOø¡UÙiô ½½âÚÇÝqi1 …ÓˆïîÅñ§Š‰ÙBa½’ƒ\v"½ Œ½Àþ +b^.¶(‚è”*Aý¨òœ´¬.°Û ÔXÎe\&öXTr¹\!W)*­2J©Ó¨Tš¸q:]œN7N«Â$,£ŒV*£ÕÑ1juŒ^­Vë¹I­çC´ÿ&{håh;z&‘ZÈ^F[±Ç`.B)˜„hsb‰T&WD)áãFDDÀ "±H"“Ê%„*µ„816]’7ǦKjZn”ê×uîÊ.9®ì°=Ãäi=] Ki/¿wõ¾Ã›9fëîwR ×W8‹Žlc²Æž©ì!ÿܳâèYßo}ÅiïºrïÇ~¼ö`û¾ãç~÷Ï­Y¸jÃgûOüt½ß<£ÊÕܶ±ëÀ7ço<Ô‘¡cL2©$CHL#MI:‰qù:=‡àpÙé{Éö«žÖö‚ò8‡×t?EÊ¥f9ƒ@lë,ªÌbÈž „§#H A`*?S r_õñJý‹gZ}¯=<§ù2zðgÒWkºÒ& -˜¿àëí]—+ý¹ îÝïÝyxÎÕõº_³cú¦´øµëWŸ<à—­Þâ+]²’Jκ3¡ÁÚ¼•Ö+KXp´åÐù…ßW}n¿¶ÔzûÂôG3¿óÞ2县2sÿ`åÞ‹U]ýõ÷oÓ,8=tûÀƒæÎ䭖ޱ=Çsö¬Íi2n^Sœè7mÐ ÷ÞêÞÙÒ@çº>9Øñ×ä_6¶ ¶÷L8qþAïŽ7Óz_¹Þ?R>|c ûÌað›{Ì…ýÎk™ßýÆÈ©æ»›†rÖ\2»ßx³Û2R?p*9e×%÷Á¥U=#ž‰æS¯³`ó•á-~4 :†7Mí{ûä¾”¾ì’/ZØ‹¸·ñ·SÉww•å' ñ–fƒZÄ3hx1׈/ø ë ¦ãKŽëy4ùUmuüÆf4¾E£ZñŠ»=av-ÍÐÞZt˜§€Ñ`ÈÈ6˜² Y FCvº1Û”…«òÏcY:DÁ¼ú"Ä }&…„€MŽŽ á‡ñáøÑy$䀩¢Pî•2^ÿ`:m‚|endstream +endobj +1499 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 20 +>> +/Width 20 +/Height 20 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 1503 0 R +>> +stream +H‰¬”±ŠÂ@†S˜  Å)¢•TH“âʳõ ¬L“ÆF ༰°Vö¶iR\+DQP°QÄBAA!Bî' Ë’˜#7ÕdÙoþýwfãû>÷×ðÿ•}>ŸÇã~¿#I¥R™L&N#IÂÞn·Ãá°ßï=Ïãy>ŸÏK’”Íf“°—Ëe»Ý꺎|<¬Õj¢(F¥£ìétZ,Ëå²Ýnãs2™T*•R©•±ðÖuÝù|Þëõ°2 4M{)ba†h³ÙEðÑh Qi–¥¢Žãôûýétº^¯ÇI³lHTQ”óùÜjµâ¤)uÊJU«UUU!MÛMÙ¨,Ë‚  àñx4M,Ë* +år™¶›°!Qô¥X,bl³Ù eXľ/Ž{ŸÍ¨:aC¢ðw`áàn·3 ƒ°oÃ!%„mÛp‡âdN>êuÖ;*Ôƒ T—ÌðõzÍårt† kìg@‘`Ù¸·CjÂ2Ýév_ž9.HM¨¯V«ïFƒ{uW¿u„œ}’IXê9û+ø`Y×iö endstream +endobj +1500 0 obj +<< +/Length 1504 0 R +>> +stream +endstream +endobj +1501 0 obj +34 +endobj +1502 0 obj +1421 +endobj +1503 0 obj +415 +endobj +1504 0 obj +0 +endobj +1493 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.597 259.039 310.301 269.887] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomitem.fontsettings) >> +>> endobj +1489 0 obj << +/D [1487 0 R /XYZ 109.858 727.97 null] +>> endobj +1490 0 obj << +/D [1487 0 R /XYZ 109.858 681.914 null] +>> endobj +1296 0 obj << +/D [1487 0 R /XYZ 109.858 608.564 null] +>> endobj +246 0 obj << +/D [1487 0 R /XYZ 109.858 597.84 null] +>> endobj +1491 0 obj << +/D [1487 0 R /XYZ 109.858 377.601 null] +>> endobj +1492 0 obj << +/D [1487 0 R /XYZ 109.858 323.733 null] +>> endobj +1494 0 obj << +/D [1487 0 R /XYZ 109.858 260.036 null] +>> endobj +1495 0 obj << +/D [1487 0 R /XYZ 109.858 195.9 null] +>> endobj +1486 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F50 672 0 R >> +/XObject << /Im28 1485 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1508 0 obj << +/Length 1982 +/Filter /FlateDecode +>> +stream +xÚXYsÛF~ׯ@íPLæÂWlÅÞulW6•rUœˆ„D$Á å×o3 Hˆ²²¥1˜éééóë¨@Ÿ +”,DžäA¦3QdÁ²¹Á¬üûB9ŠØ(‘ç0Ä5‘Ñl$nøñ@)ƒX‹"/òÏ‹_“Á +¸ý»l‘÷0–BÛ"h.lRåî}squñóȅײ`d5ÈS ~Kû"Å38cýL$’­½[—ån¨Ûí9'$y*4¸õYN˜Ÿs‚'Av]¤eØ.«Õ¾«ænPBç…#QÑN¹ÿ$¹òÑNÞ1ÔFØL;’_¢L†åf_~™?æE¥¥0*unLˆÅU5€¯¬.Âa=âD +©L¤ ož2&:ôŸ1.^§ØäwÆ“­d͉<§Ü)ªPpÿ#¾Ì-`µ>’eæCGóä©y!úpr*øŽÜB±"€¨6Ì}¹n÷†&MAŒÃú—(IÁüõ +ÊâþÖ!¯0,PÔo<Ó×gÅ™Ñáu?’“ék焆ˆ†5ÊâäáŠç×>%0Iv=ó˜Šdyà§qÀt€wÖœ7ˆÂR%5%$¨ùÒV—ÂÞ‡¸LF…wNŠ©†HL&©xŒL +Þxcš]×ÄKSt1[Œ­ÂýŽÉw(è¹w Öõ&r¨aý^ƒìa’lïëÈá ¿Ô}}³ñ*x䘢¼¤‚o CæxýðîëðþÓöåê÷}?¼ÁºÙn]FB}‹¢cµ>΄•šj³©{;1áê*Ù\ mÒç¡Ò„ø*y’ *íça0<Ì€ÄX‘X$%!–@I'@Fx¼ô¢,' /fð;žq!lÊ17<ìæ 0¤ åŽ~ò îB†ßÏNʬ°#P>À&LM)¢.¶ _–B²xu Ƕ νˆâ¤HÃ_ê +ÙÝGJ†‡*™¥R#Ý#nëÄzÄÝ¿»å«àÿͦ¼ë¿ã UZ‰ Eö²$àÛíPÝUøLi]ˆ4wŠ`!….3lo~¯–ó*a Õ'¦}¤€ýr›Õóaæåa §Úà“Ñ¥ûÃ¥[_7õ¦DàÜ<0ÁОFº¶R(›Öarõê‡ßO¶ž"ù)wd‚ Ñã)7XJbOe3R‹šˆ©l³ë£™Iq+®Ë¶Ø÷Zvãå¦ì{×çB›óác¤’ðú}í úD @$ì8b]ñ’íISë\ø[s×+·­|€ùç×ü¾©ÇÞËù’·wµÇÅþÔ }^&F(@FÐ0ø38\{$ßxN&¾}ÛdþÐÂÝ&øùèF‚¼â ³ó½¶n'Í&þSWÆRJgXì’Ð!V"@‹À "ÙÕ j"_mÁ½× ß{_uúa¹p¦§°Kè|ÎÝâèÎ&ƒÆ,ÜÓÔÉ.ö¼â 3Òr*ꨤ2B:·:?„NèC@œÖ)èp]ùCÕ/»zloóR'{ëCUƒpÃS>"ãýQL$Д`'ô ôÚùÐÀ’¼)¹]KrîwÝb³Ññ˜ 2 \êäNšçÐm\­ßº(„Þ'Q´œ ° ôdšÍ a‰–Ròâjl–ûIƒ0”1§Ó|ÒÞ…¨×Ó£i»I‹²ÅyèQJOIØÀ÷¶š3«âo"_ï$þK‘ËÅV¥ Hõõ¶â]‚VèWëúökm…z~[¡rgež×VLˆÏµžäÿh+ÞEj$na%][ኜ+³ ö]Ää–‚í24ž:MÂwÕÃöžõ-·ã:M+°4íñÅrìaŽÔK\YÓ=ô®bâÁµ¹8æV²ÁßÉE£d<*-> endobj +1505 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxmrulist.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 1516 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 21.00000000 21.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201256-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 1517 0 R +/XObject << +/Im0 1518 0 R +>> +/StandardImageFileData 1519 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 1518 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 1520 0 R +>> +stream +q q 21 0 0 21 0 0 cm /Im0 Do Q Q endstream +endobj +1516 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201256-05'00') +/ModDate (D:20030406201256-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +1517 0 obj +<< +/Filter /FlateDecode +/Size 2660 +/Length 1521 0 R +>> +stream +H‰¼V{PTUÿî¾–…å¡H +49á²8LI€ k®()v÷²à,{×Ý»b–øÈ°¦?J*˜ÊòI”Ù8¾À|D*…©‘/$2CMQKM@‡×íÜsï¾|LýÑôÝ9ç|ïû;ß½ç»wJºV'Š–à!š‚lÂÞVüÈ¥ÑàyššDfTÈG´ +=E£‚>¢÷E¸ìaw|¶T˜%øNŒ%öÁqNÁŠÂM|aœgJ®Fú7 ægæÌÈÒf! P‡ÊFg¿iFJOgè@ÀÜ%–À¸’ÍÄ\€5 Édr™B.W¨|}|U!þ +…HhPPHPP¨J‰_O„Ÿ¯¯ŸÒ/@© V*•Áì¤ æBTÿ&ó-¨dh;c…DT„PE0ÑÖL ‘ŠPŠ L|…hs"±D*“ûø Æ D„P ˆ¥™X¨H@F•P4.0^œ6§$(jñ*$xݦéã'„äÖ'L¶­>!®É»sù®Áž8jó®×c¦½—oÌ<²…N}¦à +ù×î5GÏ:~¿—ûþÖ7ö|ÐrîjoýÞïÚ¯õÍ-]R]ûYã÷ç»û“§Ï3U®­khjí¸~_B+˜¤q"†0.>P„,Ž +kV­ fÎ=}'a‚þ²muMF^ˆÁ>ùn´„ Iéóò‹•g_¼õ[ÆvSçÄãM“*¦ûïf`Ma’£ª¹ #ipaëœþ»ŠŠ´¤Ž|99n¿¦«©ý€¿OGÞ:Ëè?;#Úrk6Ì2Í»I½:ÿä¶õ÷ÂNÝÑÆVï™8uï _\¶âP§õjÜHSVb­¥wû‰AõTᘂäúYz)b΃Áæ­íÔ™áÄ_wÝK7¶µåæ1§nu³psëòO®ÐµÅÕ Ô·ì«Û÷IÓÞfíñˆÝ) Ïïï¾QôĆÕG;ì#;®ž-l©ïl}[\vi_“!\ó|gxWwíÚ ;è6}Ñx¬÷zi×k=oÞfàÇÅ…Í%!Uç{XOmù&™ú)§ò:… DœêÚÕ£ƒÎöZûªjuü›Ç#ïΩjyçôåL'wzÇá·±€;Ϩ ABŸE"a6”!žFÃŽ9+òúHH†8PƒëO% +¿î1:<Ã6OèhþC" Ä|§ÐO¹øEÄÓ¼ú`ñø³Éö¡qñÕk˹®ƒÆz4Ž¡QÌËxÅý#rvESö2ôIIŽSƒF­NHQONQ'EjÔ)ñš”Ä$|T7Üý`£À•wìF¡›çO®„òØ$žø‰QnüD¸'~ÔáøDŒÀÛIÙ¼Œ×¿²¶³@endstream +endobj +1518 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 28 +>> +/Width 28 +/Height 28 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 1522 0 R +>> +stream +H‰ì•½Šƒ@…-,l 0EÂ*h‘"öÚæ16å¦H™Òø)cákä’r@ÁBKZlaÀ€‚{È€H²ìÏLX¶Ø[ ןù +&+ƒ¡=/`Vëõh4šN§ãñL:¯;ŸÏOšÖ¿òl¿p:OF¡üÁ‰{¥‘w;bMÔLÒ…—å’Ôn …,L¬]H’äu>ç®õ„!kš6™LÐw:&Š.@mÇišâ*©ë:Á,gQ‹ywpplç&Q‹ywÀ!`é‰Þ endstream +endobj +1519 0 obj +<< +/Length 1523 0 R +>> +stream +endstream +endobj +1520 0 obj +34 +endobj +1521 0 obj +1510 +endobj +1522 0 obj +379 +endobj +1523 0 obj +0 +endobj +1512 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.017 563.352 185.879 574.201] +/Subtype /Link +/A << /S /GoTo /D (ttbxlabelitem.caption) >> +>> endobj +1514 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [239.151 440.448 303.604 451.296] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomitem.onadjustfont) >> +>> endobj +1509 0 obj << +/D [1507 0 R /XYZ 109.858 727.97 null] +>> endobj +1510 0 obj << +/D [1507 0 R /XYZ 109.858 681.914 null] +>> endobj +1511 0 obj << +/D [1507 0 R /XYZ 109.858 629.983 null] +>> endobj +1513 0 obj << +/D [1507 0 R /XYZ 109.858 514.241 null] +>> endobj +1297 0 obj << +/D [1507 0 R /XYZ 109.858 441.444 null] +>> endobj +250 0 obj << +/D [1507 0 R /XYZ 109.858 430.72 null] +>> endobj +1515 0 obj << +/D [1507 0 R /XYZ 109.858 212.418 null] +>> endobj +1298 0 obj << +/D [1507 0 R /XYZ 109.858 134.64 null] +>> endobj +1506 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F54 713 0 R /F50 672 0 R >> +/XObject << /Im29 1505 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1528 0 obj << +/Length 1691 +/Filter /FlateDecode +>> +stream +xÚÅXYÛ6~÷¯Ð£T OQlŸrlÛ]4Ý8h€$ެ]+°%G’³Í¿ï K–Äm€"Èš¢†Ã9¾¹Ä" +ÿXĨ!¹Ê#Í51:*63=À›_fÌS¤‚‘<‡%¾#Úî¶@â—w%RNLnòóìÝ-ÛopJšÄzŒØÙ>àùÅþ"Ü¿oQ{\yÃA²h—nžäP…œœXw>b&9¥Lij,îG¸m”ì J¶„»¹¢VË IÑ.²òx“·þÅ=ìa(º[]2±ý^›ýÛù›ÏÇ’:Kú0–4Å’V0+aéßZk9ã” ¿g‹20nÏ]²°Nuôî7h ðùlhéª~pT>ƒŽÂâfÏ`s*aLpë3V€3¨ïÚÒv‹b¯f@æ$긒„Aã#UNØôÛ“B8™ŽŽNcqÊýê¤ ¸€ƒú@¼£ÞÓ\dÊ!'Š"A2¬³b¨H¯l_ÓlK.䋾*‡F5@ÑU1à#\ÆÌ@GçÜëÚ 9ÔÖTBCuN5‘ÔõOÛÝGH!a”D5A¤4 h”ÎÆV8îÏ=m:"v-?hб¶+@›pê•„Eï»7Éö§„$Jr߉ƒ~’:ý~tIé%lþtTåS>…îÃpç‚WˆçÂz Ÿÿ†`õ¾˜ðwá~¾$*‹ëêÈP<€í«€n)Sì4û“éèèš'ܯF37ÒN†cñ¦þ 41š¨‰ Ä¿Rñ§²èO›åšhÉ€}[ö«fy ̹›„ÚrÑ—çP‰+õ¨ŸCe q…»îúvWôY§x”ØkG'â{ªèÓDÐøÇ «€ÎçÍf‹´vž›Cg6V;µî´ð óÜP/l pYv<Ì WÝŽ:X[ÎOúÇ}ˆ€£$ó)d2¾ÞVõͲºzø,—Õ‰ ÒV‰Pñ¥--»}ÇÑVN/$óá¶siïÄàÉA)ù“';?yŽ˜=q`2B^=z懣'ØÔì/ žL)(aòÿ<™„¤ÀÔÅA-ÐLµ;¨œWSÈ¡?Üpâ +¡4ÿ.£ç· œ>✴„§9=‚C1껜ý²Âa0ÕÐê®=ñE Ó&÷Zåßg4g8½sYO +¦Ê§yâÜ•0× û=á„BÆvaÂHÿòí‹Óóendstream +endobj +1527 0 obj << +/Type /Page +/Contents 1528 0 R +/Resources 1526 0 R +/MediaBox [0 0 612 792] +/Parent 1496 0 R +/Annots [ 1530 0 R 1531 0 R 1532 0 R 1534 0 R 1536 0 R 1537 0 R ] +>> endobj +1524 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxmrulistitem.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 1538 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 15.00000000 15.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201258-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 1539 0 R +/XObject << +/Im0 1540 0 R +>> +/StandardImageFileData 1541 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 1540 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 1542 0 R +>> +stream +q q 15 0 0 15 0 0 cm /Im0 Do Q Q endstream +endobj +1538 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201258-05'00') +/ModDate (D:20030406201258-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +1539 0 obj +<< +/Filter /FlateDecode +/Size 2638 +/Length 1543 0 R +>> +stream +H‰¼VyPWÿ6›  V[ +ˆØ)S†R-rU–K["I– YL6hµŠÕ™v¦3R[kµ¢Å£ÇŒõhµÖ«¢3í((¢8Žõ¤¶hµ*¶oßn.Åiÿèô˼}ïû}ÇþÞ·û¾Mrz®^< +8 ‚Ç$ÙÈÛ‚­ô¯: ÐO˜9›8ÛTžˆÔÅ|”8«b4°þŒ¯NvaÝÏGðQþ‚‚µÑ<NçqÙ×9[^Ž,Vt• +Q<²qͧnD‹¯o¢« IÂ×—<Îù¯«ØA…ü•3ÿ÷6¼g¹»öhŸ¢ ülaîªñúpnENu³çE# 5¡ô3À<¨;8Á +p Ä‚…0pWÓ[ˆA²=ÕÁ%AÜæ´ZÑ$âˆh§ÍäÈ7Ì2zìF&Þµ‘"º*ÜJÛÌ®4“©rÆ[OgèJAÇ4 +ÌŒ—.uX-FÊQbìàòûÜG‚mhŒ† +¹½rËÌvÚYåIi»Ål±Q6'Wef!”1¤”9:›²Qö2†2aöoWQ‚³?ïÌ!œ%·Òþ?ìŸtÚ­E™ÓŠ|‹ï‹èfÊ‘–Y™¢2³¦2R(ŽšÇä:rŠô“ 4må rìãìWAÛç§Y-fW¥ùÍç¸`®º&ª¼Ìie8÷jÊÎ â^â‚}Ýsm¥í^ÅUóéÙnG#¶q³CWå;å]8+*ä¨Ò@3¨ Oà +ôˆ+wÇgL—„Бø“À=8¾ã)9•\&ÆuVÆ!—7Ã0 Øóì/ôZVn"uªÔnƒ2ÍD¨Ò =ˆØ; Â˜s™Ø‹P J¹\î'Wúù)Õ +…:4P© 2L­Ä"Lƒ  P¨‚Tª J¥Òp•†Qÿ›ì!PËÑv4$ "5Aª öÚºˆ=F¤"–‹P@mN,‘Êä~þ +âq#"Òe BL"±H"“Ê%¤2Õ¤8"8^’özYHäœ%Z©fåÆé#£B íK›3d£ê +ï^¹gt$ ù|ײ艙240c‡¶_¥þl¬=zÆy­+kôªMï~óѱ³×ïoÞýcëî’òêåoÙsüÜÍ]öTóÜ«·îmjëx ‘±cN2©$ Sˆˆ#s"C$Ú%+5ƒÃÍw¢ WìKë2 +CŽÄ{£¤YtÒ‘D¢a¨)³x,C]uSx:ƒÑ +l;(I|O5¤Âý)—'}q¾íú¹¶¢žÖ™c‚Ãú~–ÇBmcëvcꕘ M½§NÛ§µ]»yföŒ®é3šv: kuV¶/ªßÚ«¯ß÷í¶ÍÝ#cbt‰ÚÆ•6Û«™Q,èò/èîô°0¾÷`þƾúŠš[1}YéŽïlù­Ûw>Û7¢:SÓzK;óÀ™’¼¤} fµÇXØóGÉûÖm?Õw,¬¹ûÖ'«jÓ¢N+îÖ¿Ñ–¼&/«!¨wõíq;š»/ôŒ_¿µ]°väÜ/[˜OïŸ?郾l= Ç/v^¶ô—v²`ìË;z¿¡smìÃS7j*£ö­˜³»ÿ•¯ÛOöÕ=úþ‡U,¼<@÷±p¶†=Ý]¼¬{O`gÛ@{}ã‰K{«ïd÷ƶĮkIŸþÜžß÷¶.Šíˆèz§y€~ô3 'Y(}ðü–Ô“5»Ð6;÷”&lz¯‰½ÀŸÏü¾ó'õHÐèHA8L +´fÐpàUòùpÐÁˆ÷’HüBGëõð"×AF£—ð! †ƒDèb„{=‹xAðAŸD"¹>a'´îõò¾¯ ±h” +:žq‡ŸRA3´£}4tcâ@——˜76\—¯MIJƇqÁße6ˆÜy5HÏZ8›R‚¸I½ùC<ü‰0oþ¨‡ 9ˆh‘'·KrÏ 0_q£endstream +endobj +1540 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 20 +>> +/Width 20 +/Height 20 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 1544 0 R +>> +stream +H‰ä“¿‹ÁqÇ GƒÁÀ` (VueÐw<%‰$YÎx7Þm×í–û.I"Y ëýŠB—Ÿ¥Èo¹WßOér%wë=ççyž÷óëó|ŽÇ£â¯rügÜÝn·^¯÷ûý,{Y¹ R©<£ªÕjÎÙl6™Læó9¦N§C!Ôf³Ùn·D€xÆ1Z­v4 —ËU,1‹E(*—Ë~¿_xV*¢ R¯×‡Á`ø”Åãñ€çóùH$‚’Édâñ8‡C ( +áp¸T*­V«X,V«ÕœN'©{½^·Û…+Äù[.W*•Š6ƒÁ àŠš³Ù,]_æÒ—^¯gt>Ÿï,o.—‹F£œ„B9õ;;ŽÛíÁdæ’$¥ÓéD"q©—Ëå}2ùªP˜ßßm6›ÅbÁ°ßïó4L^Ìy.‹xŠœÈ2NŸžŸájS)»Ý×l6³WøÿÜ ±´Ðl6ï¼ÞïïKI.ûòN’±ÑhÔ% ýEf ¹†KI,O»ÝnµZpõooôkµZ™óe.õ³Td§ò¹òÛj•~;|Í?Ù‡Ã!ºÉdˬ¸îŠìÌ]£ÑˆO„þ%À®mö endstream +endobj +1541 0 obj +<< +/Length 1545 0 R +>> +stream +endstream +endobj +1542 0 obj +34 +endobj +1543 0 obj +1483 +endobj +1544 0 obj +463 +endobj +1545 0 obj +0 +endobj +1525 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxspinedititem.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 1546 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 15.00000000 15.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201311-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 1547 0 R +/XObject << +/Im0 1548 0 R +>> +/StandardImageFileData 1549 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 1548 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 1550 0 R +>> +stream +q q 15 0 0 15 0 0 cm /Im0 Do Q Q endstream +endobj +1546 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201311-05'00') +/ModDate (D:20030406201311-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +1547 0 obj +<< +/Filter /FlateDecode +/Size 2666 +/Length 1551 0 R +>> +stream +H‰¼V{PTU?wï>ÙeaÙEM&DHaŒTä•n/S§aØÝ˲vÙ»îÞÅÇ„ˆ™ÄXãˆÏÍ× 1jh5j†E3V&$†d¤à#&Êv;÷Ü»»¬âÔMßsÎ÷¾¿óížïÜ©©Ùza`)¬¸*. 5Óc`a¼JYÙUFS¶'í †΄…|B«0P4,èz9ü‰KwG§L…XŒïIÜI`8®ç)XßÎÆ}V¦A—ƒP_ÆŒù‰ù¾’‘0{Uì}@‘b¢ DQš˜[@‰$`ZÁfbºÀ* J¥2©B&S¨ä~rUp€Bj¸xãa·a킎G‘g Å\˜“3P=«“Z—¾§ÍµïƲ£}÷oçë)ïÎéÈõîâ¢ö£ÇëÄlëÌ鯿ʀfW&óÃ=õõœcäà©–‡çØ\’|¿yÀr|zבq×+³¾ ³edy×þî‚ÍuÕßõg6_Kd@”«òçå[ñ×é¡î¦¾ì·¾¯}aÓÉÜñèŸXÀeØ@ +¼ +)x9 Ì¥§áp Î=ÔÿàA4ÐÏ÷J8ú«Gêõ`Û8 ‚Ç ï$€"¾K°¿{ž÷—%¦CW&ÛAìX¬‡_]má:up|G/£õް9¥M9Jáu’­±Zm\’vJ’6!,V›¤‹KÒéÐ1Ýqïcv> +/Width 20 +/Height 20 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 1552 0 R +>> +stream +H‰Ä“±ŠƒPE,´ØÂB[AÁÖbË}m +"|Bôò-iµÜÂVÐ2…‚ + + +îÅaeâšl±¯º¼ç™;ƒs§iâ^=Ó?±Ã0ô}ßuÝ8Ž;A$IE±iš¢(ò<‡ØÉ*Š¢ëº¦ieY&IÂ{ªÛ0 mÛ†cÇ®ë>œçùÕn‚ pç» $¢(Boá|<ÏÛ`ñ=÷ý vév›]ù’Ýòôûß楑‰õ}ÿây>uü›ïÏ:4ìc`áˆÝ³«¢¨àÌìöNbÉ뺾З™¢Ãæ½Úα¨œeÙé|ûv½š¦iöy;ƒ`Q¹ªª4M?ܼßn–e©ªŠíÉoÛ¶44%H–en_öÉsASraè/ô’?S endstream +endobj +1549 0 obj +<< +/Length 1553 0 R +>> +stream +endstream +endobj +1550 0 obj +34 +endobj +1551 0 obj +1507 +endobj +1552 0 obj +303 +endobj +1553 0 obj +0 +endobj +1530 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 592.837 187.316 600.956] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomitem) >> +>> endobj +1531 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [335.349 508.424 406.721 519.272] +/Subtype /Link +/A << /S /GoTo /D (ttbxmrulist) >> +>> endobj +1532 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.182 455.622 324.553 466.47] +/Subtype /Link +/A << /S /GoTo /D (ttbxmrulist) >> +>> endobj +1534 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [223.903 363.717 295.274 374.566] +/Subtype /Link +/A << /S /GoTo /D (ttbxmrulist) >> +>> endobj +1536 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 143.219 173.825 151.438] +/Subtype /Link +/A << /S /GoTo /D (ttbxedititem) >> +>> endobj +1537 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 119.558 222.769 129.52] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomspinedititem) >> +>> endobj +1529 0 obj << +/D [1527 0 R /XYZ 109.858 727.97 null] +>> endobj +254 0 obj << +/D [1527 0 R /XYZ 109.858 703.064 null] +>> endobj +1533 0 obj << +/D [1527 0 R /XYZ 109.858 418.466 null] +>> endobj +1535 0 obj << +/D [1527 0 R /XYZ 109.858 326.561 null] +>> endobj +1299 0 obj << +/D [1527 0 R /XYZ 109.858 274.63 null] +>> endobj +258 0 obj << +/D [1527 0 R /XYZ 109.858 263.907 null] +>> endobj +1526 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F8 369 0 R /F50 672 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R >> +/XObject << /Im30 1524 0 R /Im31 1525 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1556 0 obj << +/Length 3107 +/Filter /FlateDecode +>> +stream +xÚ¥Z[“Û¶~ß_¡·¥š +!ÀØ7;uÚÍxš&–;žI2®D­XK¤*R^oûç{nIQ+Ûñd¼ààà;WDÏBøOÏt˜+›ØYf2•g³Õþ&œ=ÀÈßn´P,"­¬…&Ž©Œz@"ÍŸ{Êp¶0*·9Rþçæ—ßÂÙVûfŹ=B;T&Îgû›8ɕɬ|ïnÞÜüäWá±læ—š0ä(>ƒ¥E†Ç²ðëÏ÷ryóí÷&ŸÑ÷r3 +!X® ~.7s屬Wåü·å7¯–~E]”]˜#¹²)Š=Kâᮿ“ÎÆØàm]uÜZ¾|÷êcwוûv®u E‹üÐRVåiŠkÅ:W‘‰ao\& Ï9N¢L™$¹Æ±#™plg:VQœ:ž*iªDkÚí¯e»:V‡®jjfÌÎrà+BúE¨¢$Lh¥…|¹|9_èàÝ›¹U _­áOEGœ/â( +*øn¹YàÁ/ dA¹ÂvUìx¤\#uÇUWâàž¿6Í: ÎzÂìæòuÄYõÒÐiNaœÆV¼ÿ‡y’ÅîT¶j¾ÈbÜÉVÅn×à´Gat-L#›:Ø8öDÇ“MŠz♉D´V9H%Gè;&·A5fõ¡u]S;!(>ôŒxÅpLœÒÔž/¢0 äâpüqެ¡ã}ËRI¨@žM<ÁÏ «=Híò]rïªØ4N$ÿ/ß$¡›bUíhÏ‚a"‹ú.ß0jÒŒ¯Aên”¸q+¯’¹c䉻 IF pËŸH¾‰ ‰•퀸ÓÈOb–69ÕÄ‹ôJ[‡¢”mG˜„¥zÁ§ÚŽY:z^¢\; t„^”{YÖ úÎpñ蘪º®$Ÿj„ƒ—hKwƒ×ÝÔ2gW½wH€¯ßµ2¼æ^Â8ìý†"Ù­¾åF±kY0äµ5*Œâ"<ºá2›}ÉfW L0Pl˜~œsly¦’döÉæp¾=JcòÖ 7Q"˜úGB‚¨=òí“¶´²jRÔHƒÆuˆÙèD›šC¯ÙH‡JÛ^ŒŸ>•kBʸï•}é™Ã!ç°ýPÖ®8Ÿ”Z\Y傲H»Ø| 2¸>¹ ]¶ŒŸÁ"Ö‘Š!ÝNt¨ò<þüº™‹ÁÔs°œ¯> +rúÝ©íšýNå^Í%ÞFñ°ž”b[;bvZG`škl¯Ã&à@ ª€hdÇO.œ†4»aÙ·çæ7z^ö>„H? ØÊGîø¼m¹Ñ樤Æbg:SF'TÌà*^騲¥–i^Wm׺ú̸^ÄU“¥H§ŸQ²’°jö•¥´aånZ¤b¾q*«/ž÷È(›²Zý„²­(0õ>~ãMKY÷@²L¾^…jš¨<æ’Ð +ýaÁ#{Å¿<+Â0QYò‰Óx: X!¿¯6‰ÒYê–á¼Yg“ÝL®2]Ù-V¹5®úø™^8VYšLÙˆÅÑ Ø[.Q/ß!xY[_û”xý…V…YrMJŽääz!@°ñ?¸gÈ^àÁp +Ó<Ji ¨WeK¹"~m¸&”ÕµÙÝÒS¡åå+ƪY{À¤ž“<–³p¨íŽÃÏUiºgu+ÊJ¬¾ŽŒѳÐp4ŸÂÆ• ¿/ cÈ¡‡‡Þ8½v¢|$Z¥qrUbŽæ*?&~Àj ùãÄ_?0#àê.—}€‚|û–‹4@¹åÞ,(ÿ¬h©]¹ò%$Dz¤ƒ àEÐ%µ—Á|©#¯(ܑѹGÏ?À׳ðÊrÎôðꉞ‡—Ð|^Ïoø5ð:çð¼àõ¶^7¯/I(·Ê†Ùu ÍÕýs6ËGûœÜÅM±µqæhPDÜ9'OED"£š°[€¡„ F„‡5AbÙ­æ’¶=Ž,´‰TŽúÊŒOðÝ®À¼—Bˆœ g9Ž{MO*@ +yO~ÁÞ•£óýžð±±%gÉz6®Âƒ%Hosñ¬ÒIf×:Åî²(20½òŠ€#¤CR,†øhç‹ãÉpzjÀ[šcê¢2“ׯ †ˆ Ʊt§‹!€¹:Å3Çg–r}j zfÀ€¥FEɳaAál/-Ô}-Xè ?“üKÉ©ºÁP.ÆN ‘£¹ìÆï( ›Ò¦*2³ÁúmJS + Üÿa98‘r… +ö½z0Mq}^XrŽØ'_ódØg,¯{wB|Aч.1}<ÂöÿÈ^Œ¿äËhFüŠòtÒaLÛìœÖs>$ïhƒ'¡5Uc1°¸’ÔPÉÿÀ]’Wžð 1ÎL°ÜV}48ÀåçÁó÷tj”·§0éô-}ѱÑÞ`ñ-ÓÁã¶ò^5¥"ö·(Õ©×>ñm¹e@åìv`¯ð]*^1ÅáèrïcWQ–ÆXéÂ›Ó 4Áñɇp) ¯¬Tð#ÙèmfZÕ•k‰ä|íq?x‹ºPGK¯ã [{:ÌÝ“rstõˆÊ½^.ÅtF×׉Ñ*°Þ3ÇÜ«²½TÔ£·zÞÝóâôÈ*‰öwÅ{_Û­ùuCÜ˸[àp˜þ÷¬&Ò±e§eä­7Ã7Ÿ +ä,o´hÿ *±½ 6¾òF;áâÂ-½ö·ÔÜwEU÷TwXlûÓàÇœSé^8}gÛ¿}RåµênÝEø· Ê€žúÀt(‹H¹È¾€—”¶AÇŒ•ÿW¢®v'3a$|— pÏ‘]éKb‚ Øa|.2Yÿ¦`RÍ&*ƒøÈ“7˜E¹Mý…ÓYßã ÀQ6¤gwøî3Â$µŽH(Úb/-zOG†¼UÙ»…ìqÜ„ÁÒ]L%󨸈ôÞR/¿¡iy(/=ÑÜnf`‚|ì!Ç™xDˆ ÁØHEöK^]ÜÄE?sRݯíË»/ÖÿFûÝvwÎÜ %sžQeÛ¢N*!¹Â‹É¬Šc;ä…ÞNü;žÛÆŒÉKiJ¹ŠÑ$i0Ù¸ôkÍãrendstream +endobj +1555 0 obj << +/Type /Page +/Contents 1556 0 R +/Resources 1554 0 R +/MediaBox [0 0 612 792] +/Parent 1496 0 R +/Annots [ 1558 0 R 1559 0 R 1560 0 R 1561 0 R 1562 0 R 1563 0 R 1564 0 R 1566 0 R 1567 0 R ] +>> endobj +1558 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [239.447 565.844 289.343 576.692] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.onconvert) >> +>> endobj +1559 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [137.413 536.952 208.314 547.8] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.ontexttovalue) >> +>> endobj +1560 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [230.105 536.952 301.006 547.8] +/Subtype /Link +/A << /S /GoTo /D (ttbxcstmspndttm.onvaluetotext) >> +>> endobj +1561 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [412.501 508.06 535.484 518.909] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomspinedititem) >> +>> endobj +1562 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 403.01 209.072 412.973] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomlist) >> +>> endobj +1563 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 389.842 202.642 399.804] +/Subtype /Link +/A << /S /GoTo /D (ttbxstringlist) >> +>> endobj +1564 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 376.673 199.804 386.636] +/Subtype /Link +/A << /S /GoTo /D (ttbxundolist) >> +>> endobj +1566 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 250.395 187.316 258.514] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomitem) >> +>> endobj +1567 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.814 80.454 276.124 91.302] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomlist.onadjustimagndx) >> +>> endobj +1557 0 obj << +/D [1555 0 R /XYZ 109.858 727.97 null] +>> endobj +682 0 obj << +/D [1555 0 R /XYZ 109.858 497.102 null] +>> endobj +262 0 obj << +/D [1555 0 R /XYZ 109.858 482.853 null] +>> endobj +1565 0 obj << +/D [1555 0 R /XYZ 109.858 375.46 null] +>> endobj +266 0 obj << +/D [1555 0 R /XYZ 109.858 367.71 null] +>> endobj +1554 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F8 369 0 R /F50 672 0 R /F51 675 0 R /F19 516 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1572 0 obj << +/Length 1701 +/Filter /FlateDecode +>> +stream +xÚXÛ’›F}×WðUfÂ\€Áy²·’Ôºì\¼²*Û¬˜Ý%F ²ÖþútÏ Pä-×Zt÷ºO÷tCþQ‡ ‘¡tb“$v6ÛUàÜÓßVÔJøœ)a‰ÏH¬ïÖ b—oÉÀñId‚’ÿ®>~œ ¬½-‘Hçë€0‘8Û•Âbi¯‹ÕÍê¯ÞŠy;½© NâH~Œ¯%á·¿—ëÕO¿²ÄÑ×ë;ÇJXuöÑ}«î<&\U«r£¼ÏëW«_Ö½E€Ï9¬9³)º=Åx×OŒEžÏ˜tß•ykV뗿Λ¶ñ(uÉ.mŒ¶#IEhHЄp&`c´Ñ)ÜÇ„…á9¸È.jà"K¢„P½×òÂÐUžÏ¥pÓ¢© 8.z-áeÌB{>s¤ˆM¢Þ¦Ž%wÌ_lâ9\ŽcÚiú#Ux´÷Ô:B¸*RϧnÓæP¸k¼ß´uŽËò}=…ɼ:`N=ØÉœ4µƒ€žÍ6ã!g?î«xÀ±í3yWf._{Ô=áN#ˆè¬G:™ &!4„‹èˆV%Q 5¦?k†nµS5@ˆÜ6Wë)% °4±Ô€nt®[µ½.3…Yû8ã@‘œ9£„²#¸ó̵²þHØÀfó\°"`W{,° aÑ~3rAPt¹Ðãåûøœ/„{]¶êõáÞÏF]: ¤9Gußêûî •2ÃmÒVé(‚*çnû€)É…»Ùƒ']¨a’ÖëÌuRµYèí¬dY‚‡`ª’,D?&¡eÌ›ôñ}Þä·È›B¡o›%„!¨‰Ë(0È.1ÀJ<=dµŸ@ƒÈÔál»Æiè³O +=%½Ûy$Ý- +¤(²õ@c¯Z 8’¸û-2å¬IW# +£ÅîWã`kîÊ逡€ƒêÁ>h4ŒºBÙâ6­zº³ Óº1r‡UšÕàbÈÛ´0O4s÷Ü[caÎA&t´Wä:ö†Zå1ïð^¯®9fÓÁ²–º´Ò—™gSI¸o<ô—Tѱ÷zxñ xù!ÏÀ…d$øel /ѱy5Ô'“ð÷ªÞ¦zé›'¹‹IS[C"¡kˆYòBG·Kv{;o³x¨°>äß+S¶ „Ûäßµ©ÐM‘mµMÛ\G-ÅM ØU˜]™Û×#Ë9}¶Ã½LW·{c°* ŠâA‡Jß3¤šý¤õ½²Ü9M¼YÍ»²ù®éRSïÐßøšfK¨¦)TÑi/Š4 8gØ4VÓ©jÒŒ‚8µ®Y !~ÀÿOЖ”*ðÌŽ}+snç©ÓYOaX5Æ}ýá&4•Y6j”ÑÇé¾ÍÛ!›«qEèv¸(‚·S$Ý×¼ªOe7ð’0:Îñ¼<ŸãADtê—åø ¼˜ãVä)9n¡>ý Qóa]%—Qw®^ØÂ[EМòdbÛ–)¼–€¹ÏcAdÂÆ`f®¶"ç¶%a”·Í”=Õ8»3}‰IÂq’Ò 1cÝÍC…ÓÛáz›Þ«ÅÆ„ FâH^Æ“‘ðO:‘'ðD;À–-/«ªPiyYcú¡ïõlÊÝ`!­0·ŒÕ¾]5õÒ.‡³ÔŽ“43‚,,εÇ:${5CÅð“ChŸ* Ý'Ë›]a2?†³kÀÕŽÚV×Þ9ä]ÕÎû—éØ0žn`NåDRóE$æ`~£Ú‡*ûÿ‘æªVØ×/Ð…AíŒÅ…t /Ñ¥Á7UÙ´õ~ÓÂI<% + Õ"‰­_ ÄOA¼ÀAæCiˉåÌúªÚîªR•-ÈÐÔ±ÖÆÔ±¯=Œ3iw˜–}ï––}Çfžéó~»ù‰vµo IÐSìÐõ]Ò³}Aò«Ñ@±*c˜lÙe1 /Å ¥ìFeûZÍ£@áèî;·/(ªFㄎÈÂx¹ mq9‡“Ø~m«“H-ïì'2Ý6ë§·èûofýb2¢rcT‡zZ…²ºÕ¾mòL‰>[y<|Àu +$¤†\h:ûÆ +é–ý ‚ÐÛ¾ïcd@7¡ó..ÍþÁrÒ´“ XØÔ•î\áMéÉÖ;=.UMn…¾zé_3ruxŽÆóQ]1O¾ÍdþÝÑ’æäwQ<æI÷YÔ>üD'Kendstream +endobj +1571 0 obj << +/Type /Page +/Contents 1572 0 R +/Resources 1570 0 R +/MediaBox [0 0 612 792] +/Parent 1496 0 R +/Annots [ 1574 0 R 1575 0 R 1579 0 R 1581 0 R ] +>> endobj +1574 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 690.555 230.831 699.632] +/Subtype /Link +/A << /S /GoTo /D (ttbxstringlist) >> +>> endobj +1575 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [234.013 690.555 317.042 699.632] +/Subtype /Link +/A << /S /GoTo /D (ttbxundolist) >> +>> endobj +1579 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [255.036 447.189 302.414 458.037] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomlist.minwidth) >> +>> endobj +1581 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.573 383.607 175.888 394.455] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomlist.maxwidth) >> +>> endobj +1573 0 obj << +/D [1571 0 R /XYZ 109.858 727.97 null] +>> endobj +1576 0 obj << +/D [1571 0 R /XYZ 109.858 653.011 null] +>> endobj +1577 0 obj << +/D [1571 0 R /XYZ 109.858 599.259 null] +>> endobj +1578 0 obj << +/D [1571 0 R /XYZ 109.858 525.659 null] +>> endobj +1580 0 obj << +/D [1571 0 R /XYZ 109.858 448.185 null] +>> endobj +1348 0 obj << +/D [1571 0 R /XYZ 109.858 384.603 null] +>> endobj +1582 0 obj << +/D [1571 0 R /XYZ 109.858 282.753 null] +>> endobj +1583 0 obj << +/D [1571 0 R /XYZ 109.858 230.823 null] +>> endobj +1570 0 obj << +/Font << /F29 416 0 R /F55 716 0 R /F34 719 0 R /F28 380 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F19 516 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1586 0 obj << +/Length 2511 +/Filter /FlateDecode +>> +stream +xÚíYY“Û¸~Ÿ_¡·UB\<¼µã+ž­dØJ%Uë} %H¢#‘2ÉñÌì¯O7à)'Î>n¹<âÑèn4ºûûòEÿø‚GKuºHD²d±>^E‹¼ùËwKÉYšÂ%¾c‰}Zƒˆ»|ßKF‹¥`Yš¡ä—«_~ÐöŒRYº¸ƒëˆ •-ŽWJgL$©»?\}¸úG§…Þ%‹NÕÌ!/ñ—– N+…ßn~/VW~#²…½_mN ¬6¿ïÍ6*0µ)×&üuõÓÕëU§‘G '“ÇæE1ŠaO´Zý(D.…Hƒ–EKW«ÿþkÑ´MÈyÀNyƒÎX=)Ëâ)ž1)F±˜º«e„ֹëEfî¦ ®˜T±wó$Î"¦9·Ö^5eÛûÄ9Ë@ c"ÀH™Z±wåõæómÓÞó¹)7ƒ{?‹+Y*Å"VË¢ÑÂÏìd—arYŒ"lv"èÉ©ET'SCx£ } ßïFIÅ´.šsÇeÜ?—R©`…ksîý. ½+K§u™1k«º}8™™qAÊ§ÎøEýáR'IðãÌ +\ºánªk³¹­ç–dÊRî“æc¤£ÔCTÀÌ/SÒÚ Æ«#fà!fGp}Óšã0™ÁMÙš<Ÿƒ8ò (wôª¤Q<¸oÇ–LB+ië 4N7zíD÷†.°ÖŒB€MÃEê(“4ù&ÔÚ:˜ª ?4ÉKÕGúºð}>«t3žÅ )ÆyJMòÖþO¨‘÷·ÃfîG.CmÝlOµ[÷8í +ÓéήÌüh#èƒ;u1ãLfÙÈÅYr23gF­Ð·!Ç,æ®­¼ÜçåÎ\ê€ZG¶ë>©„/u@/ò]\õ=ïçª-¶¯¡Š!ÊöL±øV7(–w˜™nÊ6É +—€#®àUm6.Qí’¬1[÷./‹ã™¢(Í]ŸÁ­uknìÃOø5 a² p•0y¸zy0yîÒ +©S¥O[¡ð¥ò"ß·BÞÛ!0ý=TÐg‹²®Õ%XR߀%1„¥¹öK ”ÀÄõû`?‡Iqpeý2è¶îä¦Õø©•×Áõ{/×^O‡8Ïq8pÍõ¶¯ßV!פÐÔSJð8&Pê›8¨XÄ3'ô +ú;H¡èÝ+ठ6¿=´ÎÚ‹ª‚•/Ï¢_*˜’ê÷?èä º—+iŠÃë¾J£,(°T`›ÀmAb ‚Û'ÈPd/=’,é·ÅÑw!YE¡ãÚ)¨dßš–ÔuõV>…Ô&’à?;„ÀêÖ"¬3á죂C×ÜË»¢u>âÜÆ‹lQ+„—Þ#’Àº:Tõ3¼VAUô`’ 2º>aÙãüwûýXԅЧ}…Þ |Rlé×ÏK¤ÜÅÑ^QñÒFÆŒUÑš d«È’ànoÊgx AxïT´æÞ™Ì]L¬1bV³S{ÂÙÄ ABéªÄ|U'÷ÀùZ5X*(•g£W†œ¤²®6.ÏÁœ %$¨-aâ;Ü’š$Ý6­Ge´&$[RéÅé‚p¥ëÕö™øgåXc-‹`ƒé’cæÜуÜy4&c¸N–à:üf}ÛàåÔe'òÐFtBBW(Pnu¦ø¢AVHØÔáïÿÄŒÜÈå`¨E›A%OµwØüªÎm=Þx,¸%"hÍbäÕíœÈcæŒCßš÷µkÆ{rfIoéf7sÍw;©œÓvBgýÌ^ +I­‚-‚:?šxÝñfÛ¡b'ï(í›À˜¯™uKä3ò{0¬qTø€>T·x)X•òHêy—ªRŽˆÎÆlsÌʃ{÷‰Ú.¤^…ËK„fÉl„P^xÆÀîc7ò°äI䦗½ÄmœÄwQ›!þß GÿÁpe8ê†3Ý´ÌãR&QGr"´}‰³ ß¶641±‹iUšI¬.hƒ’ñé½Ý\†ÎšëD{¿ïm„ì‰Á¥6/¡¥FÙØÃÙY°“yÌi–@I }1„Éh·ãïZ«î,ŵ=ˆ*~@±·ûuÂMxe|áô%öî‚ö€ëªÜ¸dÏ4Ëx9>?Ðæ´Èl”sÇ¢Û:ZÎ×y Á¨ÍTTtGf…;Àµ½þo†ÂxkÕþå"ñ”/ Œå­Ûí%^(" ¿O<—_b†^仨áÈã!/½øþC/ü¬¾ÅŒc£Î°AüØ¡“§³A}‘ jÏÙ âÔ°Qž±ÁÙ· «BÈo3´$õŽ]wF‡ûâkØéž‘ÑW›ŒÓ÷מ_ iB2•ˆË$MRËžBIú·¶Ø +¢Ý$8*ÛYíÉиçuˆ rýS¤•uPÞÖÞdÜ¡èêœQ£¼Æîp#\«jèv?Â>TÕäÇîTdM×,öIÁí¾xŽYŸPêÚ¹Ã-Ïq> endobj +1588 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 591.572 192.395 600.649] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomlist.showimages) >> +>> endobj +1591 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.926 408.995 209.817 419.843] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomlist.ondrawitem) >> +>> endobj +1593 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [244.336 311.369 303.088 320.28] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomlist.onclearitem) >> +>> endobj +1587 0 obj << +/D [1585 0 R /XYZ 109.858 727.97 null] +>> endobj +1569 0 obj << +/D [1585 0 R /XYZ 109.858 681.914 null] +>> endobj +1589 0 obj << +/D [1585 0 R /XYZ 109.858 592.568 null] +>> endobj +1590 0 obj << +/D [1585 0 R /XYZ 109.858 528.483 null] +>> endobj +1592 0 obj << +/D [1585 0 R /XYZ 109.858 393.055 null] +>> endobj +1594 0 obj << +/D [1585 0 R /XYZ 109.858 245.671 null] +>> endobj +1595 0 obj << +/D [1585 0 R /XYZ 109.858 151.09 null] +>> endobj +1584 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F55 716 0 R /F34 719 0 R /F19 516 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1600 0 obj << +/Length 1799 +/Filter /FlateDecode +>> +stream +xÚÅXÛrÛ6}×Wð‘š)âBH¦¹´;î-V¦™Iò@K´Í–ŠNš¿ï.° !ÑVc'M&㻋½ˆG)üãO Ó™Ž +Q0SDËõ,.áËO3NˆDr¦5 ñ+ìl¾‘i”f´Aä»Ùë·i´i?Ã*etôÆ)ÊDë™Ê …¦÷fv6ûcâ¾Ñ j¢G|‚JIfixö=YÌü(Ldß!°X½Ž_Ts¡âª«6Ëjþvñóì‡Å ‘§€“Å1‡yÈ‘MÑíE¦Â]ß‘Ï!türS÷n´xòê´Þõ»9ç1Û–;TÆÊÑÌä9 +RÜ0)lŒ2ry¨n& &²ì˜ºrƒºœ3_HaŒ“ÜHÆSnwûmóKUî®»êÏzÕ_MÅs¦¥ˆò"©<Üzê1Â&Øé ö\f5 j°íæ"ÛmÕ¿Ò¸ÿè¤ø°J*–)AîÙWøá<‘JÅ tr8ÿˆ¼½Þõí#çlªLüx€§åe¿Ÿ‹,.w¾?ëñ' ×üC°“M_]ÒFSÿ@¨²Ùéõå•ÝÔ;’å'Ðãy–Æt kP&¬3‹¡MÁN>ÝÒ°\“¬ö´.tÜžÿU-û©Ó$ÜïKÊëÈ@I{¸…bZ儚I:Ýç௚ +çq/Wõ_28¡v‹#¨ýrô£›î[÷ €Ãe}« T:yK{>nü¡^Áw@lÛ¹±]^.qúZ÷Õ'ÙnÞ¤\uþpW”¡ +Dé½0¸À`•RÆj*¥À@Å…kFy«#®`m倃t3VÊÓ¦Üí¨ãAù:ë»zs‰åk’¬°6ƒ\(S’S%± +؃МcDV.a$”ÝÖðQG¯†ðÚbØ”61v]:Ȳmšji#WCZØi V|± êÂÿ—´¸&X –]ÛØ]ÎçU6daZ2mL”eÐ{ºÑ»h$X©ãVNÖÐ<ŸµÀ¢¢‘H%$+ „¹¦‡o«ÔðBQù««\È3pú ÔY³t¤H÷Rh]µ;´ó‰k=`ã º~B `/n€qp}+O´¬0Ö4R =?`‰‰ àZ‹æÙìíM”Ρ[›Á+¡iä1¯0u•'¶üM­„EpüIç9˜jBí¿¡rŒ~Ü„¹Ù§µï2ýÔ@!˃M¦ÎTV>ß>À L‚P-Ž¥ ˆPyŒâ±«>08µµzÏ´ƒÜÁ Ð,ÓNƳj·ìêm_C˜ 8°-Ü>‰¢ÜWgØ©‚Øš2µ• Ÿå†Þ7¶e„Í–>ÀËz¨b®ìRI/­*@ÙŒ+Y(Î=vX Ñœj†­û«’F#{Øí/·q ëÔR;¿ßaUÅâ½ç·ˆÌ:G{>‡Â[Æf«¡§>X3Iì+(£©Öž`Û´p¼®¼¬¨Ãà ‡èò”ÜÞ¿p›³jžY*%5”õf×:¼T#=„xž>œ°Ê7y$!J3}§£•I°ÔÆb°÷¡tj†h+6D™Áõ_ )¾Ü¬ZžÚ¶5I4½^@Õ õ ÚÖﶸ{–VWãUt¼#b:(`.0.0 ÷Ý! ¡ì0iœ€JÔA¶×çpîWp`ÒQŽ›n“–Jñi·É|ÛmÒCîq›tfÖ@— çn¸jø{dpÕxr ÊŸcÙ à0þ6`—@TÄ9ú«êÖ|!ˆg-žb{r?ކáø%Ú˜é#WH¥£h[âfèŽÑ7~™7Ë’LK½–žšA$û«~Éna[®¦úNlKÞζa·'r„ü+±-ôk¶Å•bü?Ø–Ç܇mò¿ÛÒ÷òä…Plj‰ÇÜ›m›üŸlëóƒ"Mí—GA˜;°´=—9+¤‰‚­¦?€B+â_˜€jc›ç1Ë +ÍÜÒ ëþïÎtO“6˜o°CA{—Æÿ,Nÿð‘râendstream +endobj +1599 0 obj << +/Type /Page +/Contents 1600 0 R +/Resources 1598 0 R +/MediaBox [0 0 612 792] +/Parent 1610 0 R +/Annots [ 1602 0 R 1603 0 R 1604 0 R 1605 0 R 1607 0 R 1608 0 R 1609 0 R ] +>> endobj +1596 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxstringlist.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 1611 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 15.00000000 15.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201315-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 1612 0 R +/XObject << +/Im0 1613 0 R +>> +/StandardImageFileData 1614 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 1613 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 1615 0 R +>> +stream +q q 15 0 0 15 0 0 cm /Im0 Do Q Q endstream +endobj +1611 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201315-05'00') +/ModDate (D:20030406201315-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +1612 0 obj +<< +/Filter /FlateDecode +/Size 2686 +/Length 1616 0 R +>> +stream +H‰¼VyPW›Í !ÔÚ‹TÀqÔ& ‡ØŠ€\UD¢µUJ’%à„,&¥t$ÞL§Ó±R¯Z­XŠÐQ´ÞVGTªb-ž(xT­· )`”íÛ·›KqÚ?:ý2ï½ïÞßû’ïÛDÆ&§ðC>à%Š„6¼…³e>/üp'cã!›Ì½€â{!‘× $¿á.ãíH–Øã06ʃÌâñ`dV";ŸÞÉΆ#Ü…\«Ùôõ:‡&í3ànׄ¡}„Sƒr>C|>tŸ„?dÌÿ½ ÝYì¨=¼'o»8Û GÕXy Ãáô,)¹åt Pð£ÀO3È&`Fx22pÔÒ•°>r½ÖÁN>N½Éj4ƒÇÀÒ’V“Þ’ª­sÚÓt”Ú~t2ßßHš ö4‰lÊUŽ¥ÈÉ®fª«'²³¬Fæ7&™K˜©>Ü5vµ»»§ÖGI³Kqål@l¢ÃÀÀ˜Dš˜SB‘ù©VÊB¸Îà ùŠVª%)XÐWôžð+ÎyÙu˜±7ØN`¾8vÞIßËÆÞ+ïB—¡~0ú2ý;ðy?!9`< Ω$8Z€4FOj‰Ì¸À£ÿ2$ý&} ,R±X,K%©ÜÓÃSîç-•zû P(üŠr)"îè›0/OO/™—L棔ÉdJf“)Ùù¿I@r1¼ŽÇOŽárŒ¾¯Î£aÑ¥Cć—ã „"±ÄÃ{Ùˆn7úŒá<>O Џ4å8°¯Z3%K0gaˆP¹bÓŽØ·‡ø¥Õ†Ž2/:' +,™úäV›ÎÖﻋƒÆ•®¯)£Âû_ȸMü¹kÉÏõÖ;í Á+¿_º{Õ±‹w;Ê÷¿t¯S“=wÙêÍ{O4Ü‘8Í0¯xMÅ¾ÚÆÉÑò&‘P† Vûò!‚9 +AÈÂJÁÑ´óOB‡ho™•ÄMõÓYFµ +¢ °š DY}|F8EÜv@x=‚`'ú*âè™r š{wwn+_üí)µyØñòµ úkD•®"oÿÚ­UÛNn*¸dK¹~à·uW2›ú m 7¾tVvÄ”2Õ Õ"«ҵɢš‡7šP©«Ÿ¹ò^aëÉNLÛ^ßiÛ0ã­v81­aøŒîÄ­üî7ïØnÑZùáâǵu{V‡‡·&\[üC¼¦¾Wþ±µ¬±Pf|Äk×Ì›t¦æxYpÐÖƒÍ;Ï=ª:õ+y£|RÕª+" …Ÿ†m¡AîÝÈ#5æõ_ò¢K‰îëÏŠâ/·™t§V1ºîâ¸ù¡-áEu=©ÏRSçü‚‘Ý™Ï/õØ*‹Nï»pSÔdê(XÞñÙÐýÅsö¼Sqõ—ž’®C‡WÒ`t/ÙCƒ‹6ú\ËØ]¶ºVÍÆ®Ú§3Ÿ´ÆµŒ z¯º¢¢™ºÂ[[e‡wÅÓd88zë®Ç77÷VŸ­›¥*ñ½Ü²ofõ–6Ûhïoî/o·!{S»i°ÿ…ºw‹5]‡‰«%]†h¢é+¨ƒ£_hÛãp2 $|aÀL9§à² .z(þÁÃD€‘@ÿaP ¥¤€aÌ@"̶ @ÿ6¸é¡ÅÞt𳱡œ|‰bjô*e&‹ qðËŠsÙI×z¸N•ÉÉèD3ÅrI‘–øš‰©!*Uh”jT”*Ü?D¥R‡¡ö-ÅØçÑ4¥> +/Width 20 +/Height 20 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 1617 0 R +>> +stream +H‰¤”/Žƒ@Ƈ ˆ +XHX@T¸D/²ô=G%¢€å+@ € ™ývÈNØ-NÚ'È——ù½ïÍŸ¥”¼”±Ë²Ìó> +stream +endstream +endobj +1615 0 obj +34 +endobj +1616 0 obj +1535 +endobj +1617 0 obj +292 +endobj +1618 0 obj +0 +endobj +1597 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxundolist.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 1619 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 15.00000000 15.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201220-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 1620 0 R +/XObject << +/Im0 1621 0 R +>> +/StandardImageFileData 1622 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 1621 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 1623 0 R +>> +stream +q q 15 0 0 15 0 0 cm /Im0 Do Q Q endstream +endobj +1619 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201220-05'00') +/ModDate (D:20030406201220-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +1620 0 obj +<< +/Filter /FlateDecode +/Size 2678 +/Length 1624 0 R +>> +stream +H‰¼VyPW›û"žÕ*tj«!XT(—VDñ•’d ! ÉF­SŒ·Óq¦Žˆ¥Š”Ö8µ:[¡ÕÎHmµV©è´^€ EiA`ûöí&!§ý£Óoç½÷Ýû{ßîûv§ÇiRx“M>à9šmÜvÖ–Õ_ 0x±+mã#›Ü³–‰ây!‘Çx$ö”¹]H;ã0&J +H +aðHh™Ñ£È§ˆOS h1ÁYÀF1š}»v»4j4/³SŽæ×Ý”óOÄ@ KÜÚüßÛОE®ÚÃ}rÞdkïª#¡9î|z†”ìÈ$¼´`°3И@.°BpÕq(aÃäy¡ƒ“|Üz³Íd‚ ‡†¤%lf½5U›§sÛÓtd¨s DA€‰0iæàr¨Gù¬Œ`¤sÈ!²ÀjÊÕáÖLÓ+ßã>|dƒŒ/B$h†ä-„­ÀC% ,¹Æ\3n¶åCI–˜N¥"”½²m$‘„›qK6‰ëú÷ +pÖYÂ8ÓÚ¢É7üûçÚ,¦ŒÄEžÅ÷Ô¤X¸‡Fm"3²:¹‡qø*RcMÎH™£%m9ÕÎâ²:Ö”ktVÊ›Ù|²SMWW²m&ú¯À-ä0î™Nµ§»TkŒ'L„eHqL@\’Ë@ØK˜éUL©6ÒŠ-œÄ ù7­LK° ÓKá#ÎyÞ.b1¶1'~pL¯“Ñ"÷([çY™ ]¾„ú`À¨ê7àóÖlÍl€q0Ø£’áéo²X=¡Å³âS‡úÈ‘ôkéLT#Ød"‘H,’‰Å2…T"Uø{ËdÞþ£üüüýüF)dˆØex¼¤R/¹—\ËåJz’+™Å¿I@}"¸% ÆU`Ôm¸uu‹(ù"¶€\¸9_ ‰%Rìy#8\§Ñ`<ŒËáqøBˆÏ•…A£‚Ë ô åÇÎÏö *\§(·ï;7a¢ÚmØ4Ëú+ñÂIÅéïtê¬á#öWmNØ‘¡O<[IFŒ¼ºà.þ䨯s?ÙîuÍ)ùtÓW;Ï_»ßýÙ×ßþüài¦aÅæ¿p½©'2i¡qå–Rlj‹7šÿP¢å!LB?A õåA…A~|õºíJÁ™´+Ã&jïXÖǧûë¬Ó:' hÂàð³W!ˆÊ‘úÄ$~×áÅBܨ›@ÆE÷T€Ð2X]ôN[Ã8££ûò‡­»]_ÚuóHMoÅÅgygFè×X7EPàãêúò#uËTUOŽZ.éáƒk‹7”$®+‹Þ¡·uMtÄñ¾êÒô–-‡·‹»ÆZ”îÀ»'õߟ{6ºmïŒÉâ“ûo­(9“}¨§,ÆPäèqÔ4_ Àž¢©ƒyu×b ‰ Ý'VÏLêKØ9>ðV¾}nÛé/Ê«§–5ö¦v•7Q n ‰ú±=ú˜½¾#³¼÷bϲÇñí3‚gÕ:­pG«›­ö΃ÝÞŽ NÕ-ê8öè׃µ?Ô/Wû6´ŸXV{¨Óþ†wYÓ¶.ûeb0µ'Bß(í­Ão÷î˜Cýœæ@ôv.`Î7ìJ }µ`È< ‡qÐÃï<@$˜TÀõï„^ÿà”ð*ÝLó…G &€|¶sh±±.>{…õP,}Fé®bÁÔ.~ó–\¦ Á±ŽïàÈbe´¢~0/‡ küÄDNQµJ¥š¥ŠP«¢BÕQj:ºs?Š ‚ãÊ«¬àºyö$ 0.‹M0?6Â??ìxl,˜ãÎí¤dVFë_ ÁľLendstream +endobj +1621 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 20 +>> +/Width 20 +/Height 20 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 1625 0 R +>> +stream +H‰¼”-n„P…¹ °$P@TÂØÄl¤Ìf#caXP€ sæÑ¾’}%Ó¦×pÞÏwÏû»Ìó,=3c§iÇqÁdY–UUU‚³}ß×u]UU×uV×u˲LÓÔ4³MÓ”eEÑë̲Ìó<Ã08 Ó¢(â8FÇA˜–ç9’§i¬7Ùõá½3I’ˆÙM_®öû~Xß|Ã0$¢|¹ßÿôý«ý"ËQ’žÏgß÷Áâe~aÑ$ú¼‘etéût:9ŽcÛ6ð{vË–Ö-dˆØËÜÃûʨ%ÖìžZønÍâDQ·mûv8@¿\.®ë¢ŽøY‰kaÐ÷õ+žzý߸ +0è[Gö endstream +endobj +1622 0 obj +<< +/Length 1626 0 R +>> +stream +endstream +endobj +1623 0 obj +34 +endobj +1624 0 obj +1529 +endobj +1625 0 obj +289 +endobj +1626 0 obj +0 +endobj +1602 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [378.809 624.79 459.202 635.638] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomlist.onmeasureheight) >> +>> endobj +1603 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 485.263 187.316 493.382] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomitem) >> +>> endobj +1604 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 463.345 184.165 471.465] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomlist) >> +>> endobj +1605 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 362.593 228.228 370.12] +/Subtype /Link +/A << /S /GoTo /D (ttbxundolist) >> +>> endobj +1607 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 143.163 187.316 151.283] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomitem) >> +>> endobj +1608 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 121.245 184.165 129.365] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomlist) >> +>> endobj +1609 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 97.584 177.735 107.447] +/Subtype /Link +/A << /S /GoTo /D (ttbxstringlist) >> +>> endobj +1601 0 obj << +/D [1599 0 R /XYZ 109.858 727.97 null] +>> endobj +761 0 obj << +/D [1599 0 R /XYZ 109.858 615.768 null] +>> endobj +270 0 obj << +/D [1599 0 R /XYZ 109.858 605.313 null] +>> endobj +1606 0 obj << +/D [1599 0 R /XYZ 109.858 323.903 null] +>> endobj +1568 0 obj << +/D [1599 0 R /XYZ 109.858 271.731 null] +>> endobj +274 0 obj << +/D [1599 0 R /XYZ 109.858 261.276 null] +>> endobj +1598 0 obj << +/Font << /F29 416 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F28 380 0 R /F50 672 0 R /F55 716 0 R /F34 719 0 R /F54 713 0 R >> +/XObject << /Im32 1596 0 R /Im33 1597 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1631 0 obj << +/Length 1624 +/Filter /FlateDecode +>> +stream +xÚ¥X[oÓH~ϯð£#­§sõØûFé²-@•€“¸­µNlwÚ?¿ç2ޤ eBžÌœ9ç;÷3U‘„*R2™Ë"¯½È}´\Ïdt'ÎT HŒYK<žv[ Ë·#¥Œ-ò,Gʯ³Ÿe´n¯à–ͳ謥Ð6Ö3ër¡}~׳w³7;.|棫#@Å %ÕÊà»Óïr1»x¡óˆ~/n£@«ñÛòv®m\¶åfYÎ?/^ÍþXì8* tÆŸ3Ø@rF(šÝ;;•úIëtžhÅï7UÏ«ÅåÍ_U×ws¥b±-:C|2‘§)2²*F[ŒLÄÿ=ÇÈøóí^óÍdr•¬0ÑéûT©w€¶o+TíŽ4;D–ý2»‡ì(ÑÍY |ƒ{I•Æ×ö\•b«îU‰K²d÷ ,q¬ ví¤mj„ Nˤ:…HV"w) y`¯]´#/¸{q_Á‡Äô }Ÿ'ÆØ¸Fçaà ¦PT +iÁÜ÷ÀÃȤ×ßy5øÛ÷K8ÃTÎ(÷÷pPô¼YÔ5/h·dŠ’k«U8lŽiëQ >Ü"€ +TbÒ†¿ñ©†Ë~°ª‘Y\´Yñ€ÁЬ‹¾Z² J«îîkþ´r%BFCªA*G©Ã7±`|¥É\{áõÕõP ö g¨Ë•HMö„Úäpyþ¥š=mÇÕq%LÙÇ‚IlžGÎk‘ɽqñ².È1ÝèCGÁB¿±@ÀzS®øý¸á%ù· +(|«žl)ØÑÿTn“ôÝv ƆúÒú[ õ–×^ÞR¼PX‚“ñtä|»¯–Èø~„³F2¼U—´ qɯaÿ¡& ^!3ªËÍÞ%J%.­”œŽŒuͧe‹H‹]º@"~’NÂÄ ¬Ô˜ŠNä–®¾AˆÙÇã3¦Þí°€F8f!¬“c Úc·ÄøFŸßO*Ô©òÍHDQãÔ(Xi'”OwŒ¨‹Jåjh¶™9'а¡‡âI C+|êA81Í@4E¸X U.oØ+/‹ÍjWOÚCäZihÀš³@ ´«öMõ/¸Ûšø~4øx[èår=(ìßRàtº)Þö¤[¥Ò»¸u$:íÖ@óC·žø+n=Dø˜['÷Ýú/Ö¢Ô™<þ†¿¯ûÁÑë#G-4Œ»çŒ7М…¦&U{Ð~ÊÑ:&EÈÙªcøë±cí†CÈ/ ¸êõ”úêvšw-Šœƒ¹ŠFJ .eÈÏB)B¬K6Ù¬™F%Ø£¨„é>ƒÎb­„E³mô5,’ûÞÁÆÅõÚØèª½Ù{K ¯dÂìô l•Æs¦½¬Ê¶€² +Ílîqp0'=VG5„£ä–¿xNÃÙ» X'%´@– +ž™ÆS ¯N¿¾¨oËhV˜ê '¯dÂì8üƒŠÆÜôIEíÀH¨ª¿öŒÀÎ9ñ<‹‚˜}›óP¯xë 5tê‰>~èhZ0iLó:}eöàUAW‚J¯±#_ãDá,xØÆæÚ†á‘÷»‡mðqÆÇaCüñn'y’…ïw”Ú<´ü«ØÒ°³'™ðÄæ>~1Ï,1Ò© mÞ8Í…Š‡œ5]ú ÷-[¦,ùÆXC”A`xg >½Ï¦ðóÌ„¡¦Aë})Z-¥ÜÍ"£f«†üôèè3 ZadÆ7mxLO ~G¿+çΑf nQw ÓCBô@«ðd>Ol*TžF2À¨Ÿiáb2Þ¤Ô™H>àÊ$ K›> endobj +1627 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxmdihandler.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 1639 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 21.00000000 21.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201252-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 1640 0 R +/XObject << +/Im0 1641 0 R +>> +/StandardImageFileData 1642 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 1641 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 1643 0 R +>> +stream +q q 21 0 0 21 0 0 cm /Im0 Do Q Q endstream +endobj +1639 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201252-05'00') +/ModDate (D:20030406201252-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +1640 0 obj +<< +/Filter /FlateDecode +/Size 2620 +/Length 1644 0 R +>> +stream +H‰¼V{PTUÿîÞ}²îòV[IÀÃePjB@^„ñÊtŠaÙËîêe/îÞÅG)øžgÑr¤&4M¡1Ÿ3Yâ[§”ò-jCZ*£a"Å(·sϽ»Ë*NýÑôíœs¾÷ýïÞó”–“'ž´ðMB6²K´•>®ýÄ•·I£±MãH©¢¤X”¢1 +ËÃ}e²Ë*w!Dù‰–b<~¼,èqd/æ³aBE²Ðh–‹Q‚fóÆzƈç™hvkðü²Wƒsþ‰ù*nH";yóoÃ{Vzjö)™" Ñ6ÊS5AÁsd±½@âÐB9”‹~&˜•`X¡ 숣‡ðŒgˆ"×sܤõêí.šF‹„‡eb\v³3ß4»Ük/(gãÜÛ(bªô4c·¸ÓäRì`9e*EÃ(°XÙA²ÜIÛÊ)g ëäóûíŽO˜³„Ø‚±Ä¿8¡ß©y‘dÅÂ¸Ï +*”Ê€ô3 î +÷3h§eæd!!PŸÊF  Ô©fÆD•¦ç„»,¹–ÏÄ]ƒå V*•*¥Z¥Rëüýüu!ÃÔêa!áAA!AAá:5&qšˆÿM€V£Ñk4š`~Ò !º“€;:%ÚNID‚DG:‚û m]Â#RJI, ‰6'•ÉJ•Ÿ?ñ´‘ é6j¤D*‘)äJ©ŽGF)'K}£,(rî£âñZ[b[BÿÃ'w. +{«?ÿ4Së>=ÞWrbòïQÍÖ¨6}-Üj34\Úq¾wÞšü¾±1)_Œt8çŽ;¹ý›™ï‡ÿ•p}|Ò΋sšŸ„Þùº!óÄeFìé{eÀš»±ý»i5Ü]ý ™w g„éûïí=c[Ö7®µ§æK®7ÕÔwÜ;-ç¥žÒæöE…3NÏzçÞ¢éçî|дëäºY;¨Õì}¡{μ®+ôÄ_¸f^èÜͬ¾ÿðÑbn·LhîØùįuΚ¶¤³#÷X¶èá`{3uPL{uS-}÷ûɇކ‡£´ó·Ô¤˜²:»[¹v|þFãï«X8¡¨¯@*ºÚtÝQ ‡éè²cÐåÇ€sUÈ#è<ô±`Ï?HüGçåÁ8¾‚‚D;à>@Œ™xöMÄH?›+ú +ˆÃ!ß9„Ñï\eúŸ q +RQÆ+îúéV†eœVtI$ÅÀh0Ä'&&õFCrœ19Áˆß&BxÇl’xòFl"½¼xå)b“ÆO„zñ£ãG=KÌADK¼¹Ý”-Êxý[€yò—Áendstream +endobj +1641 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 28 +>> +/Width 28 +/Height 28 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 1645 0 R +>> +stream +H‰ì•±Ž‚@†)(4±Å(0‡ ÒKëcœåYXZ"ἆ/ å=€$` Åš`aÂýq’ Aûæ’Kn +2üÙý˜ÝYþ­ªJzvTÿÌ¿À¼\.çó¹,K$ÜY–»Ýn§ÓAæétêõz"…AàyÞ`0PU(0‹¢ˆ¢H„¹ÝnE±mÛ²,$`æyž$‰ Ïñ5P*cN&“Ær|ßo(Xàí0ˆ-ÌÝnWÿ4˜ …˜·â£LL¡×:³!¶3냉Iãi"ó¹k'½=Øô»â-ó[`Kü3 C&EIÿæ~¿Gò(Ç_­Iú\,4Ms]—ý›ð”šeÙñxü! +ƒ›½Îf`–Ë¥®ëŽã†AL¯C/¦YW@o6`ÎçÉØ¥÷~‰¥Q(ë5Y7“Zð6ŸÓ~ÂQ¡“Z¦éÇt*]÷†lšæp8¤¾s0©¨6ŽãÃá;9Ð ,rDZƒœ]’ؽÉ rvÁ!ÿ`ؤ§Þ endstream +endobj +1642 0 obj +<< +/Length 1646 0 R +>> +stream +endstream +endobj +1643 0 obj +34 +endobj +1644 0 obj +1463 +endobj +1645 0 obj +389 +endobj +1646 0 obj +0 +endobj +1628 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxmdiwindowitem.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 1647 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 15.00000000 15.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201254-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 1648 0 R +/XObject << +/Im0 1649 0 R +>> +/StandardImageFileData 1650 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 1649 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 1651 0 R +>> +stream +q q 15 0 0 15 0 0 cm /Im0 Do Q Q endstream +endobj +1647 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201254-05'00') +/ModDate (D:20030406201254-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +1648 0 obj +<< +/Filter /FlateDecode +/Size 2642 +/Length 1652 0 R +>> +stream +H‰¼VyPWÿ6›“„@Hµ­ì1bB8”"A®EŽÓR’, ³˜lÀêLñhõÎh­cíÔ[kmÇ¢E;þUÔv:ÓŽ`=ðëQð®< +ÄíÛ·›K±Ó?:ý2ï½ïÞßûvß÷2ÅTX,NŽ"á1š‚lämÁV5Üú +g'b›:‘µ˜‡cQŒÆ8, •É~,+|q&XšÈã ãd^#ïa¾&×Ô ‹ÍR!Š×l^ÿ©_“Œç7ÑìÓ¤âyR@ƒs>Ä|;"‘×8óoÃ{–ûkö)šÎÁ6Î_5^Ëqä[~ô<é„¡ Tƒ~fXóÀ +µÐ€†q4æ ü &b„ŒOuðQd@ïô8hqàÌ´Çiu—˜çXöR cðm¦Œ®‹uÐN›/MUÃË&†ž'ÈF©ÍÎÉR·£ÖB¹+En.Ès$؆˜(4dX(œ”[fsÑžº•”vÕÚj”ÓÃÕF•;› *Á:$‡W{:ŸrR®j†²bôïÕQ‚sïÌi8Ká<[ìÿ°Òãr”å¾^ZüPM±ÛF…h¤Õ¦¬Ú¢S[(G-` +ÝeÅEfšvp¹O⬰Ӯ…ÙŽZ›¯Rüæ |j®ºVª¦Úã`8÷zÊÅŒà^áS‡º+ͶÚA»‚Š«áLù~ã5ÚÉ­ +†®+ñ0n*¸paTÈ'´*3Í ‚>¡W¢WlÜŸ3 f ¡+ñ'{q|×Sq"¹L(Œï¬LC.ß ½ FÁžaƒÈWó +ó€¨[ >pTÙVÚLU僈½j,u1—‰=€J.—+ä*…B¥Q†)5Ñ*UDôh­6Z«­Qa–‘‰W*ÃÕá‘ju¤N­Vë¸I­ãC4ÿ&û=häh;:’ˆ‘† 5{m]Ä!²J I( ‰6'–HerE˜’xÜH€ˆô#¤H,’Ȥr ©2"£†ÇE$Ù³ªµñó—$Ku«7·˜žŸ]zÈlLq-íÌ‘%4;{©ÏâNµeï²ÄÍeÖÜÃ[™´˜®òËÔŸû>è8á¹ÒŸ7qͶ¿]{ä׫Û[žüý^EMýòOvì?vªç~z~¥­aź~8Ýû@"B+ƘdRI*†gˆ#óãµ’ä%«u‚C¥wÌ—\K›rfG[Ü)} R€,1õp±5Æš[žÆP—ýžŽ`b{T$~¦²àúû-5Tå†E,Ì1î°t¶lë~vúøþuÆk“÷>w²ík/e¿™/½³«rÖ—ƒÝ÷ZÚÖ§5Ï?¸§ðô;,tvýTÕ>ÈÂw­mû.µ}ôò‡kZºu2驦1ïžñÖ·×_ìÍßsgÀ;5Æxo»·r§eV}UùŽ[?wÞzë—¯K?ÞÚsì* ËöijÐÛÞèÍ:›©˜Ñ7Tª5¬PoÉgazÇ´&:*-G›“ +:ž-ê5šâÖ¬›ÊBÆÂÆá³ÞÝ76æefUDœ¸p­oüõ¨™}ê+sJZ›$ô/j|ñ‘{øâ¾`=>pþ½Þµ,Ì]eÊì?’¤MgaìªéƒÖC»œ\9ôÊσôÍ[ÃG¯(â&­<ç9w£=¦ÿã¿Úì,¤÷°€PîZubüÕöîÆ ÷ßÞ5y}W®…íæÏgþÞÊù‹ú dã ÏŒ.»X˜ vÄ3h¸1WÜEùϱI ÿÿ’xüA'ÃK\{…>~Àÿ‡€ ¡˜‰güüâÁ]‰„_Œ\ŸpÉ~~ùŠZ¾¯ ñ?¢Q%ÈxÅ"v¦fh·]éIzHÖëú” }Zl²>Ü‘š‚ã&‚Ëlùóê6‘^8›R‚°Iƒñ£ø‰qÁøQr‰¢@n2^ÿ`Ø2¥%endstream +endobj +1649 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 20 +>> +/Width 20 +/Height 20 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 1653 0 R +>> +stream +H‰œ”±Šƒ@†#XÐ⊱¼Â"Å•î³äEÔGð9,-Òê\a¡E ÍZXXDÐ"°÷£w2ŒrÈM!ÃÊ·3߬®”òõzã8 ’Ã*TU=š¦!a¯¤”}ß7MS×õóù\³†a˜¦y>Ÿu]_³mÛVU•eÙœCáºîétZ³(ú9E[¨’¦éårAé?Ø ò<÷}Ÿ>EI’Äó<°Ìš²èxb1ŽcÛ¶-ËbÖ¬nEû­Y]Ll¿5s8Å~ëå|Çý~ïºn¿µüý®€EQ–å~k°óâ?¬–Y¯;?( +ºy'Ö Ë¬7&&Ø7b½°ÌšÖEEÚ7v€¬–YÓº™xLÔÏĶXjÍÆ$'v³gjÍþeè`_×+òÛÍqœµfwÈÌ"Ó{€±›±lˆœÞ?ß ð½˜ö endstream +endobj +1650 0 obj +<< +/Length 1654 0 R +>> +stream +endstream +endobj +1651 0 obj +34 +endobj +1652 0 obj +1473 +endobj +1653 0 obj +333 +endobj +1654 0 obj +0 +endobj +1633 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [316.575 666.084 390.88 676.932] +/Subtype /Link +/A << /S /GoTo /D (ttbxstringlist) >> +>> endobj +1634 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 513.279 213.341 523.242] +/Subtype /Link +/A << /S /GoTo /D (ttbxmdihandler) >> +>> endobj +1635 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 498.335 233.285 508.298] +/Subtype /Link +/A << /S /GoTo /D (ttbxmdiwindowitem) >> +>> endobj +1637 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 280.314 258.971 287.841] +/Subtype /Link +/A << /S /GoTo /D (ttbxmdiwindowitem) >> +>> endobj +1632 0 obj << +/D [1630 0 R /XYZ 109.858 727.97 null] +>> endobj +683 0 obj << +/D [1630 0 R /XYZ 109.858 638.189 null] +>> endobj +278 0 obj << +/D [1630 0 R /XYZ 109.858 623.176 null] +>> endobj +1636 0 obj << +/D [1630 0 R /XYZ 109.858 495.347 null] +>> endobj +282 0 obj << +/D [1630 0 R /XYZ 109.858 488.608 null] +>> endobj +1638 0 obj << +/D [1630 0 R /XYZ 109.858 281.31 null] +>> endobj +286 0 obj << +/D [1630 0 R /XYZ 109.858 270.587 null] +>> endobj +1629 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F8 369 0 R /F50 672 0 R /F51 675 0 R /F55 716 0 R /F34 719 0 R >> +/XObject << /Im34 1627 0 R /Im35 1628 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1657 0 obj << +/Length 1568 +/Filter /FlateDecode +>> +stream +xÚ¥XÛnÛF}×Wð‘zЖ{#—y‹¶I€‰­¢Ò<È]³Ñ­£ÈÏw.»äêF;1‡Kòì왳3CÉ$ƒ2‘Y)œuI¡ +QÉ|5Ê’¿áÍï#é-…s0Äw¢ § @üð¦GfÉD‰Ò•ˆüwôåk–,ÀÚ{˜eJ—<Â8Ê”Éjdl)Táüýrt;úÔYáwEÒ™:!Ï 4)Ð-×ο«éè—ßT™Ðýô>ñ˜.¾¤7ÕýX™´jªõ¼¾ý:í,Ê pºÚ°X·½°&^õ/¥òñD)—þ±®[M¯>xóNlg;¤Aœ(óMY +­ ,‰³s{LÔêB(k‡ˆÈ Q—H#´ÉUTH^fÂJI«½­«fÖŒ¥Mçã"}ÀÁÌÐf=CÔÄ$S4g:Odzu½ßµ›ÕX¦ïÚju²¹à“S2É­ƒ5/êˆT“%+?2 y¤¢I ,4ÆB”–e$t‹¥¿½9»;ÉM!\)»M‰=ëöÄc"ÿ>U™²“ïZpóŒ“.‡À%‘ý“Àä9¸ZÆìz–Nrƒ*Õ°?Ê‚ô¡?2 þ‰75Œ×‹ zøˆ÷ì ŽV^Ÿ±p0ü…ÓdîMµ›7õ¶­7kƺ„C䑜â…?.ÁêlŽfÁ¶6.mü`:½ÂÇŸ?8Õk¸"—>‚œ˜á l7|7ãË{˜r·ªÖ8iïÍÃ#\!•~ K=2]H)1›µ¸à ¡6÷x-p£øÁßÒz-?xD;õ|¬ð¸ö1ìèrÉ;²N wDJˆ½åÔIƒ›²$× +]„«NëöGóÙÖ³ÚáôʴAëÓ¢‹0;ÚC?mÖò»fÏ»X¯h]Ñ1Ë)½!³Û +^)—uû„ã„'4¸G  Ï‚¡OøçºˆÞÜ<^—.¯.ªû£ õµTâ¢(£¢ÅPygÈgââdA½œÓC beV¡_}Þ×F¹=Ã0.Û3¸Y3HEiˆQé¨|Ǻ¦ÓלÅqÈ ÝKŠôd=\m—Ô+U½Ü£ëÅ ×)'xþ£8n.j 3˜â ô Ëð˜'5pyÁ—hà˜á9 D £Ö­Ï¦Ç‘Ï ¿ÈäàÌ ï°gŒ t‘§SâÙñ#Ì:ôp¾áæ¢Ùxø>ñTÇ·[®öMËO©t“(¡™«VÕÅ¡¡ÆØL‡?] À<þ_þ†gÂ3< ÿGðk¾>G¦]( %µ|"”=èr(=æÉP^^ð%¡§ÔÐô oVÀ RQÐçªâ€Éa4ÃéQF¯üÉìèqšþˆh Í­™ØÀ÷Ž-Òªy|9ú€„msB•ÐPj ê*B‹ ,5‹°J(q‘|ú-ìD%º YÎûëußÜ€ ¾ß7BƒSûjD_"ô¿w¶=j®T×Cßróüä™Ïa¡ó’ZÑð¡û#¿¢¸Ì—÷kJŽþ7”kß6l/ýš¢,HŸîËFˆŒ]üA#¤1?Ñ VS—|îð©Œâ°ÿ’©/endstream +endobj +1656 0 obj << +/Type /Page +/Contents 1657 0 R +/Resources 1655 0 R +/MediaBox [0 0 612 792] +/Parent 1610 0 R +/Annots [ 1659 0 R 1660 0 R 1661 0 R 1662 0 R 1663 0 R 1664 0 R ] +>> endobj +1659 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 646.895 187.316 655.015] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomitem) >> +>> endobj +1660 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 530.547 240.639 538.074] +/Subtype /Link +/A << /S /GoTo /D (ttbxmdihandler) >> +>> endobj +1661 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 416.652 233.923 426.614] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomstatusbar) >> +>> endobj +1662 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 401.708 202.898 411.67] +/Subtype /Link +/A << /S /GoTo /D (ttbxstatusbar) >> +>> endobj +1663 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 386.764 210.56 396.726] +/Subtype /Link +/A << /S /GoTo /D (ttbxstatuspanel) >> +>> endobj +1664 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 371.82 214.195 381.782] +/Subtype /Link +/A << /S /GoTo /D (ttbxstatuspanels) >> +>> endobj +1658 0 obj << +/D [1656 0 R /XYZ 109.858 727.97 null] +>> endobj +684 0 obj << +/D [1656 0 R /XYZ 109.858 531.543 null] +>> endobj +290 0 obj << +/D [1656 0 R /XYZ 109.858 516.53 null] +>> endobj +1665 0 obj << +/D [1656 0 R /XYZ 109.858 368.831 null] +>> endobj +294 0 obj << +/D [1656 0 R /XYZ 109.858 362.092 null] +>> endobj +1655 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F50 672 0 R /F8 369 0 R /F55 716 0 R /F34 719 0 R /F51 675 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1671 0 obj << +/Length 1765 +/Filter /FlateDecode +>> +stream +xÚ­XMsÛ6½ëWðHˆÉôT§M¦™ÜH™ÉL’-Ã[ITIº¶ó뻋(JYÓÉÄɇåÃîÛÅ‚À,UäÁ#Œ&Tlf*-˜Èrw½žÍgöVèYô¦F„<â Jq†ËÊá·_ßÕböÓ;Qözq8„,n¿„Í]$Th³]šèÛâÃì·Eo‘'€“ÙKó^ŠnÏR5|ëW!t ‘‡Ÿ¶UG£ÅÕçyWvíUÙ´ç!Û•-2²ÆrVhÖ/˜ +ÞŽ†´>æœÊŒ‰4}‰³‡Œ8çWL*íY£Xt‘°”sû¶_M»lª]WÕ["–ð’ˆ&ÓTÁAÒ‹«(æáçV÷ö¡íêÍ5Ë{3_6õzmXy&Ã*âa‹C–[üaµEdgš-<+ׄ»)[ãflvk³1h€e8¤eßÁEÝ{FBÅ­ –ðœ%úŸ‘¨ö—Caù™ñ`ªõØ`ýÇÖ‡˜ -­“‡ácrJk–Šn£T ÈK$ެ Å +>7#u+ˆ¬éþð3_¤rd}ì ss0¯!ƒ8gEª-ðEWqY0)§ÓŒ%ZœNK‡‰ c†\ ¦Pá‚/¾ÙÄRÊp¼P FRÔ¦´Ò‡Ôty9L˜X +¦mõú¿iXïPç\‡]eöùl›â<¬¤`DRexW=ý²®î·£EsÍr)‚4OY’Ëá¢Ç‹wØx¦E ÓÛCðÝ»&‰ã ƒî™Ø*ÞÏ’Š¥J¸Ú㩾')^ÕõÚ”ÛŸÇ•ÁÍŠ¡r œû 3Y&šŒ`îÂ’áFŠ™oËÝn¯«¥÷yKºäºE´|‡À¸;+4t[!úžÐ%Žoõ„KÆ#^aåÙÞÓãúŽ~»•£ÖÚjLã,CÔÎ6šùÿÔ•Å>Ëí,/†ØÇÖnž–°F&åö¾g :³+.—¶®µ¤Ãžf·¢5ðs]ÖTü –ºw‚ÒªÇJ—V.Eh=ϺÕ^Ó7亪²3|G¿´~@.lØ„`3–&”Ó¿o ž·“r™©sÕÚc'ÅJˆ ´J,R´Ù{TmwždÙŽýXÑúÝ}ò4„72”N£¦tA«Üƒ^]RZØÁÎj¬­Tïq/wKBiØe¨HÎM”¦–FŽaokÂKµwô\‚;¼ÅHiÆ ¨L°T¯¨ÿ~f<˜jc6x÷±u¤ðv]Ziã²Sˆ^PÛƒ#pÇu$“Ð^€Žù +h[¸8 {¬%ñ:ЯW“RPú4u6ðbáÚ‡¯mm„—ΕiØö›BŠ'ãÔ¹¬kÌÈ'ÒX†¹½/$ý±«ÿÚdN•ÇÏlèÚ~ +¢H³ñcwP•L'(Ðy@·è¿g»‡ÿ›Y‚ endstream +endobj +1670 0 obj << +/Type /Page +/Contents 1671 0 R +/Resources 1669 0 R +/MediaBox [0 0 612 792] +/Parent 1610 0 R +/Annots [ 1673 0 R 1674 0 R 1675 0 R 1678 0 R 1680 0 R 1681 0 R ] +>> endobj +1673 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [392.934 666.084 467.516 676.932] +/Subtype /Link +/A << /S /GoTo /D (ttbxstatusbar) >> +>> endobj +1674 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [489.628 666.084 538.252 676.932] +/Subtype /Link +/A << /S /GoTo /D (ttbxstatusbar) >> +>> endobj +1675 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 656.066 140.133 664.977] +/Subtype /Link +/A << /S /GoTo /D (ttbxstatusbar) >> +>> endobj +1678 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 471.572 238.116 479.1] +/Subtype /Link +/A << /S /GoTo /D (ttbxstatuspanel) >> +>> endobj +1680 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [291.538 405.938 374.394 416.786] +/Subtype /Link +/A << /S /GoTo /D (ttbxstatuspanel) >> +>> endobj +1681 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 390.938 241.456 398.466] +/Subtype /Link +/A << /S /GoTo /D (ttbxstatuspanels) >> +>> endobj +1672 0 obj << +/D [1670 0 R /XYZ 109.858 727.97 null] +>> endobj +1676 0 obj << +/D [1670 0 R /XYZ 109.858 616.972 null] +>> endobj +1677 0 obj << +/D [1670 0 R /XYZ 109.858 551.265 null] +>> endobj +1679 0 obj << +/D [1670 0 R /XYZ 109.858 472.569 null] +>> endobj +1682 0 obj << +/D [1670 0 R /XYZ 109.858 391.935 null] +>> endobj +1683 0 obj << +/D [1670 0 R /XYZ 109.858 314.345 null] +>> endobj +1684 0 obj << +/D [1670 0 R /XYZ 109.858 250.648 null] +>> endobj +1685 0 obj << +/D [1670 0 R /XYZ 109.858 188.887 null] +>> endobj +1669 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F8 369 0 R /F22 363 0 R /F41 556 0 R /F55 716 0 R /F34 719 0 R /F19 516 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1688 0 obj << +/Length 1646 +/Filter /FlateDecode +>> +stream +xÚ­XmoÔ8þ¾¿"ß.‘X_ü’Ä݇¶¤\»'q>,»nH“^6 *¿þfÆv6Ùì¶ $ÖŽÇóæyž±Ë£þñˆ§†éLG…(˜)¢ÕÍ,®`ååŒ{‰¹äLkâ+èk "~x¾“L£¹`F”üoöþc­AÛkØ¥ŒŽ¾Á8eB™èf¦2ÃD¡ý¼š]Ìþµ"êUM +pi^`X~ûøN³ß_Ñ|qy /°X¿Ïíe"Tl[[¯lòqñzö|Ñkä)ÈÉ⾄‘{ŒbÚ‹L ­~"OæBèøŸºìÜhqúî¢[vÛÍé²Ý$œÇìv¹AH™f&ÏQ›â†I¡À:*Ê‹}Ÿ3Y0‘e÷ùD&>ëˆ+&U¼ÆbÉMÊ2ÎÉÚ_¶»nÖ;§8gô€4–l•šä^Úîm"E¼¬muÒM²Ês¦¥ˆre˜IGÇ>M¯—„¯b”_òÔ‹ —ÛzÕ•Mí\U¼–’å™O¹©Rïæ‡4K}d;ÝJ²ÔH/¿jêM7Ñ($S…ð"o»§É\*/Þ&Y7ezyøØŸqo÷ÙÄ$”@…Ãñ¦À×ÃT‹çݨ­BÇÿ&y?uãWug¯lû(·t)Í%¹åMÍ¡þŒÈ·,™çRů.eÐÜzÝ¥WS7˜!¬ûÈÇí’T`¼°›â•v;½ømsKaÙšÁX0t»v‚.'P3_÷d°›¬Âvôw‹6h¿O ­µ]8:7nv'xÁ +j¤.«ÉÑB" EΠù‰0ÂÈÒ)ÈÏíê(̳\±ÂðÇÁ| | æAä‡`ŽŽ"0Nú/Ç10Dî;‚‰ìAH,ÝO*lÕ-ë«Ê×…«vZÚb–TÊ@õ“Bµ×~‡¯5Üz b•‘®bï“$¥÷ŠJk½«(†U—aÕ™ý’C¼Õ{ÑÚFáÖέÞÜv.†)`Z„Žx⪲¤ûÌ¥£iѵ²^vÖ×ÿ²@i@#Nû4BÀ@Îè ¶ÂÀᘞB:GìË#vpÀl. G;èЀv`ú‰œ p¶Ö”îYp\”ƒç_mÝ=ÜSßÔ'ëÏÛMwÖ×Ý}ˆSyÊ4χ¸ð1Ä¢¸6P®·²ƒîn +=Å2úᯤ.N'Kš¡×6è…ÝÝ­æY0zH5Oã?&Œd\¦ðÁ­ìzÛNmH Y/$‘ [¯1’zkžjb‘30ÜÜôW9Z~æ‹,’Nð> d?×ÞîWô´N±´ð2'.Í·¹,2–iå¨\z< ò©©œq‘{-Xßx_h>}öµ¶Ï°‚s/{€ h*FŒ¸ñ BN…‡úœu?çžÁ¨ Wp€Ïß68Ïžî;݃ÌñFsCØÿn½ Ç4ŽWc NC "ūʋR°F¶‡Û ’’äñ·…fŒë¥sÃYµA{`w¯}ÈyA]ãøãÛu¹B¿®ÝÔw}K<³¬ü€8¤óŒâg|¡Ø#wXrä²*¯ê%òƒÝ=õm½!ö>‹?ÇHFæ9R=ŽdÂÇH&ˆüɼHjàò>ÄïЋ:N/Á´ûôôB}äò·ä“Zÿ +n)¸¼[²lÌ-A|Â-$y2ÈI†ùaN(ZõŽ­îÞÚ;^>£çÑ¡+TÆ”(F,sH&áëOêë*@&ptP¿ã'ÅY”TÆ_|óñí«µþ-Û²ñ"a¦éû´ ª*é- +C[Cû¡³…Gó-ã¿Éùg ðŠ9ø7C Otÿ'C¿ø?$” ©endstream +endobj +1687 0 obj << +/Type /Page +/Contents 1688 0 R +/Resources 1686 0 R +/MediaBox [0 0 612 792] +/Parent 1610 0 R +>> endobj +1689 0 obj << +/D [1687 0 R /XYZ 109.858 727.97 null] +>> endobj +1690 0 obj << +/D [1687 0 R /XYZ 109.858 681.914 null] +>> endobj +1691 0 obj << +/D [1687 0 R /XYZ 109.858 606.626 null] +>> endobj +1692 0 obj << +/D [1687 0 R /XYZ 109.858 492.821 null] +>> endobj +1693 0 obj << +/D [1687 0 R /XYZ 109.858 408.069 null] +>> endobj +1694 0 obj << +/D [1687 0 R /XYZ 109.858 325.443 null] +>> endobj +1695 0 obj << +/D [1687 0 R /XYZ 109.858 252.281 null] +>> endobj +1686 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F19 516 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1699 0 obj << +/Length 1713 +/Filter /FlateDecode +>> +stream +xÚ­XYsÛ6~ׯà[É"8 °™>ÄG÷%‡Õ™Ì$y $:VC‰ +I7“ß]Yu<Œ#€Xì…Ýo`…,b4'F™HsMr­w }•?ÌS¤‚c`ˆkDÛ¯ øáû#%RNr“#å·ÅÇÏ4Ú·?a—ÌMôÆ”p™G»…T9áÚøyµ¸]¼ë¹¸5õ¬f +Š'¨”j4ËÀooßÅrñâwžGv¾¼‹<…'Xn>ÆïË»„˸lÊýºL>/ÿ\\/{ŽŒÐçHÎE·k%‡R?qž%)ç&þk¿íÜhyñá¶+º‡ö¢hÚ„±˜Š5²Ì ɳ ¹I–Á%HGF™™ê¬„&\©s:’:3FrXñZc°d¹ Œ2+íÍþm"x\ìËêj•0W—Õvƒ¯3×±ŒÁ£LãïH¹=m: v +ñ‘­:žÕ94 §q}(ð »Î[’õ»„$Jrï+Ô^Ò =lpÚÃàë¯I*¤Œ—·=Éõ? Wq¹ï^ú38ê’z¶iNd¦,ïîÇ¡œIg†d4H?ÉôÖ&þm&!“Äpãwz3×åæ¡™ †ÂáUô¶ÜoÐ#‚ÆÁ,­Ë‡¶«w}€Ùå—N|¯Ö€Üö+À—Í”äLØ`q¢ë;Ç­^ý]®»¹š‚pÆ<­w©‰rˆjá\š31àw>}]ìoªÔ2~8AÈû¾²¸‚ÁÕ +ÿ¿ SíµCÍí‘Âò—A]žÇ]SWîã÷-(îv?ç8©†Þ–»Úï­Skª5nW¶Óì5y)ƒ@b;úKuUaòáÅÍNdÑU ø½¡6òJÌ\ò}Ò_)ÄR‡F¯·efú¬ßãÀ#€¢G¼ÄBE‰ñ¶´qbsƒeÐQxös™Q2gV:[×h´ó# µŒMê\êªdŒ+tDDîO»rvœ¾•gwª˜&02xghbïOc ]¢¡p˜!÷mìöñ64•SC©Bf m axLGžíŒàØTÑŒP-Î%sEÜÈ(ORg,xäŠVn7]•íºÙº-ö vÀç`LÊè/œŒ{z.²>AŒ— Œ9Æ„[½óÔ€K8·që2‡…ûi&_U¬}Z¹àsÓÓœžÃyr=~°í²ÈŠo:pFÆ' ?ƒÎOúýgé‹wòOo†mÇø°z¾p±NÀ#fËv'óž_IëÊvMkDØ›®o«¦‚Â}Bªÿ§€ ˜=Z@xÎ 3Ùéâã*À3ËUëÂöŽ÷ˆrzí ,YÈÐð< +ßM(&8,åÎàqsåB²ñ,îÜï ¡×Ѐ[¶Dùév¦ƒ­ÓŒ™r?…€í‰¾}–º ½ÝPÍÙs€§9§„³ÐpjC…ÖuQjëz´ÞC ÒPƒn¼›Ï™Þû8¦QlT<}FV®qFþ>!g'ÁT GÄ!÷2ˆµŸÀM·1ìœ!ט÷Éc8ÕúqÈ‘tšz=МÏ! x6¿îÛk<ïÓH ø&¡ó¢Ñ[‹DîZÏ28°òø r|ŸÀœ>þ)àUµý²ßáÚÁ–<â@*3’#k+ÉØÃ +Š´> endobj +1696 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxstatusbar.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 1708 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 21.00000000 21.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201313-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 1709 0 R +/XObject << +/Im0 1710 0 R +>> +/StandardImageFileData 1711 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 1710 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 1712 0 R +>> +stream +q q 21 0 0 21 0 0 cm /Im0 Do Q Q endstream +endobj +1708 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201313-05'00') +/ModDate (D:20030406201313-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +1709 0 obj +<< +/Filter /FlateDecode +/Size 2614 +/Length 1713 0 R +>> +stream +H‰¼V{LSW?§·Oú€RP¦Î"l&¸¶ˆ³¤"TíªPð¹°>.¥Z{±½aQ|mþµ(ÎIÐTæ#ÑÍá|d1‹Ü0YÈ&Ûpn,(ó…ŠóA™Špwî¹·/Ål,ûÚïœï}çë=çtj®Ñ$XŠÏÑTä#zy_Ù³­¢?³>a:ö©Â†µ\–P‰U!â±X%Z'a]̃\V ¯`-ƒÃÃêœg°\Þ,/G7Å|gÙÓ°#dÑãqƒ–l6° +øÐlEìG’ I^î /¦ÒK‚¶{ün7š,(å÷8|fÛR{Ø_d§uÁEX¨Êd7åqËÌ!ËéH=—¦–ó:†Q䬠#t±Ïí²“¾R÷[?ê9"ìCB8† f-¬Ç¸Ü™ü?¬Ÿð{Ý–ü–èæG[L>'e[Ý´Åꌲ©ì$Ê#WÑF_¡Å4ÇFQnÖ! š£‚e”·&Çír;Ë-¾0hf»ë Ë­~7͆¯$½ô0á¥Ast¸ÜæÌ£Ü”7¢¹j.!· ä`a¼MyØYFS•f?í##ãF|Áª°Q4jè v9ú‰+žÇûKEÈŸF Xc8î´S°*Añ îÔ(™ïÊ$™_˜+ nÖLãLR…hÿ÷EŽƒ²‘ey& `îÖ€c-[‰ù l +©T*“*d2…Z#W'Æ*±‰IM¢F“¤V`â§á *år¥J§RÅ%¨TªvP%p)êS€9ÔR´œ1L5$Ôù-]Àœ‡„R1ñ $Ðâ„"±D*‹‘Ã爠3@!$BH"–ŠErª aJ¼N”3ϪI]±N/N¨ÛÓœ;.-±è¬-k’wýÅ<Éø­Å÷¯>°û²Gì=º!}ÆGGþ¹&zòÈö’nòá—[~ôÿñhfƶOß?öñùŸ®õí;þÍÏ×¥å+?ؾÿÄ·7ú§ÌwVmª?p²õÒÍ¿Ô@ @h…“D,ÊÆRtñB„`EªF¤_W—À"8[tñ~VšíªwýÖ¼âD»oÒƒñb€$=û\;Ñ4Ò‘_2™&»C^Ž # ù(üL50€€þÊ[k¦7^¨?ØE ¹†®oèè!Žv_Éý_·½: k³d¶ém(ù®e鱿µ (•·íÅO?¼o¸Ñx/wÀ“Ñtçéá>Ûjck ^×_sH?û¤ôié‚Egnlèm>ÝV2´9°“ó‡jwuþùlYµá¢ýzOÚæ‡{57wª2OíÌþbá±ì@é„Ì4sÁd:Ò5x|û÷‡ ‹“–,¼D¹ª;—O­_ñUס÷ví½o4ï´8¼ºl߉kþSïÔQo¿¡h=\Øßؾº®Íپ쳮gÝOF½;¸³·ànó­š-Uµµ Ø×óyÓÆ»Ôåk: ÌM§ªÆm6wõm¯ÜÌ€¶¡çÀâ-‚%óZ‰³G—²mÖ_w߬×ö$µ<©½}š¹ÌíÅün•p»“½êr€Pèb#A2˜ *L#öa©Ehþ!"L„þ{¤â—7ÝdØ£H`> +/Width 28 +/Height 28 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 1714 0 R +>> +stream +H‰ìÕ1o‚@pHp耉 hc“2Âê^¿DÍÕÁ~Wû4F „þëKÁ¶QŽ¥Io:.Ç/÷Þݽ+˲×u+ÿÍ?bE‘çy–eè´¦úý>ÏóÇ‘™¦© ,ks]ײ,I’F£™—Ëåt:±˜7›®ëš¦‘y>Ÿ·Ûíí´ý~'ˆæ8ÎóµU¦ïûõi¦i˜˜ü;H3;412Ù•Y>»Y]Å^;‰ýü)vœÕÆ¿dÚ¶Ýo€÷ÇþhûÖĵb1Ñ&ÝÍãñˆNkSÅúÝD ÁR£(J’ä!Õìu6s{=nµ’e¦¢(­kýÇñ‹aÀ|Z¯aŽÇcä°uMþ*ƒA}²±Û©ªÚÚDæß‡Ctì«FM¼–;“¶õm>‡/¨ð”R–ر­A|L§øÌ–Kdùd‰ö«õ> +stream +endstream +endobj +1712 0 obj +34 +endobj +1713 0 obj +1456 +endobj +1714 0 obj +375 +endobj +1715 0 obj +0 +endobj +1701 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 516.035 209.016 524.155] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomstatusbar) >> +>> endobj +1702 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [425.79 431.623 508.647 442.471] +/Subtype /Link +/A << /S /GoTo /D (ttbxstatuspanel) >> +>> endobj +1703 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.265 419.668 194.402 430.516] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustmsttsbr.panels) >> +>> endobj +1704 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [331.661 240.65 418.447 251.498] +/Subtype /Link +/A << /S /GoTo /D (ttbxstatuspanels) >> +>> endobj +1705 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [155.354 228.695 229.936 239.543] +/Subtype /Link +/A << /S /GoTo /D (ttbxstatusbar) >> +>> endobj +1700 0 obj << +/D [1698 0 R /XYZ 109.858 727.97 null] +>> endobj +1666 0 obj << +/D [1698 0 R /XYZ 109.858 645.51 null] +>> endobj +298 0 obj << +/D [1698 0 R /XYZ 109.858 634.786 null] +>> endobj +1667 0 obj << +/D [1698 0 R /XYZ 109.858 420.664 null] +>> endobj +302 0 obj << +/D [1698 0 R /XYZ 109.858 409.94 null] +>> endobj +1706 0 obj << +/D [1698 0 R /XYZ 109.858 191.538 null] +>> endobj +1707 0 obj << +/D [1698 0 R /XYZ 109.858 137.787 null] +>> endobj +1697 0 obj << +/Font << /F29 416 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F28 380 0 R /F50 672 0 R /F54 713 0 R >> +/XObject << /Im36 1696 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1718 0 obj << +/Length 1732 +/Filter /FlateDecode +>> +stream +xÚ­XKoã6¾ûWèV ¨X‘¢Üžšb·Í{èÆE ìîŽåX¨,¹’Üd÷×w†Zlj7‚À93œÇ7Š{üqGŠåIîe"c*ónw‹È»ƒßœ(˜³<‡GÜc™Ym„?”‘ +¦r…”ÿ.>}‰¼5H{\RåÞ=ºÄðþ@‰I|Œ„®‹Ê¾Ý‚kí€RÓx(˜¸Ó•ßÐóôÖlìvSO_“”²-+8e}FrYwå: ‰é1êæ,< #K]Zé–¡ü¯G™]ßêqQ"ŒŒÜÞ„ƒÃ˜]5àÙ 5ù x~ß^{Kxsnù°¼2`mP‘•ÄF»çø¶Ö«€'~U¬_¯~`%Ká"ŽˆÏБ¼„Æ> ûˆWMSº¾ ‡×ÆŸ%Äd4åø=>o]šÛÈ´®,ÌbDUƒ"Õ:&ÃÚÛzZU +ÐiÖ ‰^—^UN1v=âõkU<êwØQ! oоv¯Wtd3%—Å{D|.ÞŽäñ~ÄÑØHW}æë–¡ +2ü{Oá»=t}³+¿•®ÜRë5ÚPñ°[7AMjM˜1+ÓJTp[„/‰6s0ÙÔ‚¢µvȃç¦ý‡€h’¼Ü™ +¦ÛŠˆ dÌ%Ó›€cs;³ÅžýÏìÜ6¼Žg7Çœ&h#¿ÍdÛ äˆ4ã ëpÐÏn2 8RŒ•:‰,ÅüôG'")R&3áPB®e¾Þ½f]“Õ‰/Äù@|çDò"œË«IdL|Ò&ÍX¤í$$ÝŒ„Ôêpç@„¶ÕM +¾•´½×¦Û`‘õûÚ'<Ńà "]ï\φ•†Äj:¹ØëV¢¹ßþˆ­SAÙ g¦ŽZ|ít7)vÚcoí¨ +C›îÝ@èVwÓß˺=`Áù,»Wí9XÅ P…V½!ÛGrã"'e°úÍÅÁ¸äDó³„åœO•aÒ3cÅÆA`µÍ(Ö­AæP Ýh¤±ƒZØ9=ÉÒvo;ÀpV–O:õóA¿Þé»ò¦ÀNúðzýSd¼wáÐ>">Gò &B¿|pÝsºzáí Ã+yjEbü®íÐó`—1zø»¦ÆÇM *MÆ-3ïÃ/R˜a™³“P!…YKM•€–ꈉmi£Y!r`27 +6r;RpÆ/yæc£-m5|¤´´Å†¾X ÓÛÊÚ3GóÔ©"’,årrê0ɸ¦†á±| ”®$dÝýp×:NåüuRŽ«„I•^–r#âs)çH^rξÄ/(߮뾸37ŠÈ¿¬™ŸÿÔ¡2ªt*¥ÂOåÇуÍ+¤.ÎHˆ÷dü=rÎÓ +é_Û¡‹M‚4EÕYz“bFnß=;týµ‚sÙÚ•{sÍÆßàª6½•R<Øœ²ÃÜ,ë>‹À……½òÂ<ø0±Á¯ðs4ŒÆ“ØN ` õm¼Ö#íˆN¢Þòè‚VöÓ Ý][ÀÕŽî躞c.N2Æåi ù‘~G®c8âœ'ÝL¶ÁÂÈè¹&™d±Ì'ªœ|k&š'OÍàB³öøØfˆ)&ý½Cb7rÿø£ÙRt™2ð$G¯\͈óg;¾q[L B¨7ŒcU4¸° +™q0t UpQêͬ7¶Ž~Uv ‘ýê-¡(é£7mþd+›Dendstream +endobj +1717 0 obj << +/Type /Page +/Contents 1718 0 R +/Resources 1716 0 R +/MediaBox [0 0 612 792] +/Parent 1731 0 R +/Annots [ 1723 0 R 1727 0 R 1729 0 R ] +>> endobj +1723 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [464.612 451.046 521.316 461.894] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomitem.fontsettings) >> +>> endobj +1727 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.077 236.335 202.289 247.183] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustmsttsbr.images) >> +>> endobj +1729 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [356.194 160.682 375.344 171.53] +/Subtype /Link +/A << /S /GoTo /D (ttbxstatuspanel.size) >> +>> endobj +1719 0 obj << +/D [1717 0 R /XYZ 109.858 727.97 null] +>> endobj +1720 0 obj << +/D [1717 0 R /XYZ 109.858 654.974 null] +>> endobj +1721 0 obj << +/D [1717 0 R /XYZ 109.858 579.322 null] +>> endobj +1722 0 obj << +/D [1717 0 R /XYZ 109.858 515.74 null] +>> endobj +1724 0 obj << +/D [1717 0 R /XYZ 109.858 452.042 null] +>> endobj +1725 0 obj << +/D [1717 0 R /XYZ 109.858 378.443 null] +>> endobj +1726 0 obj << +/D [1717 0 R /XYZ 109.858 312.868 null] +>> endobj +1728 0 obj << +/D [1717 0 R /XYZ 109.858 237.331 null] +>> endobj +1730 0 obj << +/D [1717 0 R /XYZ 109.858 151.66 null] +>> endobj +1716 0 obj << +/Font << /F29 416 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1734 0 obj << +/Length 2448 +/Filter /FlateDecode +>> +stream +xÚÕ]ÛÆñý~…ÞJË%—"™Â/.œÂZ\b5)ä'íID)Q%)Ëίï|írIéÎçƒ_ +ãÌý˜™o©E ÿÔBÅeTdÅ"Oò¨Ì›Ã]¼ØÁÎßï”@,S q/Êiµþ4BÆ‹e•E‰ÿ½ûõ÷x±l?À)]‹ Œã(Ñåâp§³2JòBæÍ݇»ÞËÕAâ$-sd«€¯ãïíúî/ß'傿ëÇ…@Àzûkð“y ˜Î7&ü}ýÃÝ»µÃ¨b€KóçfAž¹ÅžgÚ¿õ·$Y…Ë$)‚ëGë·ÿþ0Tù[u}¨Tª)"dET®VˆM«2J ·#¢<žÓœ¥y”dÙs4[4+•°#T£²¬Ê4R±¢Û>Ô a†©–UK½ŠJxÞeé8!àÓù¡©û½ ³4Ø^IV­¢"M«¿2¯E,°K˜éM&2&j„èÂ$Ú“é@Àq0|f²µr§Re:QsY`¾ —©ÖÁûã`vx4ƒ¿òÉbQ¿)ñ+G—ðe²"ïÛPõ¦L¸TAG‹4ö!JŒÆÇ¶;T ŽÜ`ØûÐ>òæ°—…ž4‚Ç\u<>áøhš(\fe¬-|µÎÏÞp¨Â$>3Ä&ˆÚM{ ì:&.ì¨cøËÞ'\XÐX­A¡WGÜARM·÷<$jag† Ò°7Û?ã3vx\Ëé,ˆN˜ÍGœ9R`É|ÚÐÔ\©VƒJÔb¥5Pµb¿‘.ø/gß1N}ÿaO.½£¤hÞÃϱ#Ïÿ¨> ?W$MÁ,²)-W.W`ž½u†oœoIÅe +ƒ<Êâ‚{@‘ïïAr* êV¾Öž4cõf«Hú…f<?iÆò3ö¸Í„Û ¹»^߇Y þ~cŽƒØµG€³ë2Ò+¾ø|2WWª"ZÅöJ%ZT¼áOëŒox9î{_öÖØÀÄtš;Ç¡Ó"ØàzƒÞE ’l‰¶ªÑ\ùúÜ@[ÛËyëFplÝÂҹђÈXé¬=8´º„íÏ^ã ò ]Ýú¿t(,T=È‚uY=X=Èöi2ñyÖáÁb7ôì¡úÁñŒ®¤ö5Ò²“]çÉØ›ú.X[ÿdåi1¶ü%Èj°ÇÌg‘ø[–:\7žGŒCË@¿ÅJ7 kAñˆþ®=0 x7;E”Ø ÅF=“Ç÷uÇ”²ÿD§©÷¼©Ž§LC)ƒK ¬Ð¨bd¬Þí) Á*c›‹Q°!Ñh8 +ù/ ëÖ™kuã€9BÁ„†åÛÈÑÁ’µµtjËÑÀNû¹]‰U,2Cnª¿ÂŸÛ“Kïèܳα?ïÏ3ðþ¹žÒr•] Ìs·Îñ°?‚ÓàýÀ"³ªˆú°LË8‚Ù׊Ÿ"^AN1ðÀ[þn +YšÓú8w¶Ç¢q&y,íA7Ü ›zëöf÷n-i¥°\ÚãÎâð‰èŒ]%Üíúî!…øD*½ÀÝÈ68°$ nã,éÜÎü]¢ÐHNâ+kÃgI°íŒŠq÷}ÕIB27°4ÐFŽ;Ieä–J|”—Ä £©¯¨‚@~îâÚCkÐið!Ä«muODžx|$€zߘ?U7g‰ié|v(7›²c¶·²Œx’^¬Ã2ªÝ·K&À +¢´P/K&<à§’ òŠdb*€ªv¯® Ö!&å;>Y´¼ç±å/™ÙŒîq¶’³Äepè"ôŠ]œÝTG›@/Y³¬R÷Ði÷±<3´URFJŠ*¹EEêöX‰5p°seóÐà ½9¶ÒÊŽÍß7Bº£/¿iÀ¬²'¯©záŽ"$S8ªuš,ØÑèÈ€4z¡£?»P†g­ zDµ¾®=áŽö:ó(MŸÔž<‘„ÛÚ9 Ó½Ð2 ¶> 4æÌû|„„üí,&- Œè¦ßðScA^m1& A¦q¸åÚ¦á_üBrž½49ÿâE“”}¸üQ4\îCˆÄÕ°×4õ©¯û/¥òLÔßZÖ +?¨à¾Åµ‹2Æ7““˜7à¹ëþ„ª-;Z¸X´Ôá^¹¼u‘Îõ°nne½ËàLZ­­¨»öÆÞ?@„¶`ù5£¦ê÷ŒÌ%Ä£¹\ÃL[¬_aŽWÒbynÅ7G¹åä8é¥çe6-ÞV ðêQ¹v +·#qް÷õC3²ÚNÙ¿—Í'ñÕã`ÓD絤=yô$ˆ=)«^dü¹&{ùêžÔW´–“+»äeAÑ~*(ZWEdÀ.ÿçM)¯bÓ±×`‚êSKjSŸ –¨u£©N¤æà x„KpXaå…ð#ê|ÒР~Q’îêþúz¤˜“;M/õ´T¯ݘÞv«,žÊ1)¹ûu£C…­°4“(!1 ®ŠýÓ•ZB Ÿ€ú«U«ü+ÚöäÒ;:o(̱ócïFLçQ +æå3· óܵ‰Â¾„š\KMë¥ôÝà—TÜgžÛͦ¹ž—$¨€`Éšüî?,¬ÍENS5ÓR <ØŸ6²töÓ†ý$ã"¬æ¸ËZ‚b™Á³¯Q÷ CéFá¯|*ŠÓt¢¢ß¥`DuÒ*ž³ƒKÔ»´\pmAœ ^ …W€}4-žÜ^ +.Ý ón Ü8»’­n¼ ug¤Ö'XêÑ"„µäýÒVñXÎá1¶Þk³ðRK‘¯NV#rošÚ]hÓ^ó!‡¾ÆÉ~<í Š§zç=ŸfÌš¸ñ†?àæ¦× †ëBPãæJ+rpÚk¦=»zXX"=%»]Mûs7‰{¦3CUì5˜ùêÇžg\æ]ÿ>Í¡)K#]Þüý\CÐMKûó¹lþÑe«3endstream +endobj +1733 0 obj << +/Type /Page +/Contents 1734 0 R +/Resources 1732 0 R +/MediaBox [0 0 612 792] +/Parent 1731 0 R +/Annots [ 1736 0 R 1738 0 R 1742 0 R ] +>> endobj +1736 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [299.425 642.023 337.947 652.871] +/Subtype /Link +/A << /S /GoTo /D (ttbxstatuspanel.maxsize) >> +>> endobj +1738 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [463.222 544.951 501.744 555.799] +/Subtype /Link +/A << /S /GoTo /D (ttbxstatuspanel.maxsize) >> +>> endobj +1742 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.212 159.934 208.362 170.782] +/Subtype /Link +/A << /S /GoTo /D (ttbxstatuspanel.size) >> +>> endobj +1735 0 obj << +/D [1733 0 R /XYZ 109.858 727.97 null] +>> endobj +1737 0 obj << +/D [1733 0 R /XYZ 109.858 643.019 null] +>> endobj +1739 0 obj << +/D [1733 0 R /XYZ 109.858 505.1 null] +>> endobj +1740 0 obj << +/D [1733 0 R /XYZ 109.858 429.563 null] +>> endobj +1741 0 obj << +/D [1733 0 R /XYZ 109.858 247.869 null] +>> endobj +1743 0 obj << +/D [1733 0 R /XYZ 109.858 125.064 null] +>> endobj +1732 0 obj << +/Font << /F29 416 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F20 385 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1746 0 obj << +/Length 1507 +/Filter /FlateDecode +>> +stream +xÚXÛrÛ6}×Wð‘œ)Qâ ҧØmÚdÚ7VÚÌ$y %(b+‘*I×u¿¾»¸)©¶'ã"‹ƒ³‹³KÑ 4 ‰$EZ9ˉ̃Õ~‘_aæÇµ1§¤(`ˆs$×O[0±Ã÷£eÄŒÈB¢å_‹O_’` ÞÞÁ*!‹àÆ aBû…H%aya¿ï·‹_/f.W3@Îâ âUÀçp¾«åâÛ7LúûrX k°\ +ß«MÄD¨ZU¯TôeùnñÃrðH°ãù%œɅM‘ö<þ®ŸË¢˜±"üPW½-¯>Þöeß]•mQ’CÙ!"í¬ 2ËЛ ’p&`wt”Ó)æ”ç„¥é%ÌÎäfJ‰„‹“%“œÐ„êÝ~«ºê.¢i¸›SE3Rpdy˜¿ïœ3k{Æ;"MooMpûC±$lªÆ’°4ì:¬â‚¤‚Yn Z0Ü©WQÌ…¯šf§Êú;³®$Êq]lÆ@®d©^þû6¢¡ŠbÖ°]ÆÃ~«p Âö%LC´Ì£»²µsÛžWõŸð¿žKÃ5 ïíÒ¾1Ÿ­ÒNª«f¿š‡ÍÆÙqñ†%$gқ釪F— >z@/ßÀó<7°š½ÝéPÖÿ΂ܗËÃGsš;ø(Bµ:Z´­ÐóZÕ)ÂKîùÐçÂÁ97 ïì—CÛÀÚƒqÛöˆîÑÌà¡ñs­zÚWµõö€§­Vmk=á™k…°Ñ lÍApüwex…ˆYbb‰ osAgúN"è[¥©^]€§]×{.ÆœabÔæÌ«Y^‹ŒP™+å©Q!˜¿Ü(ÑøÕW#·2ö–ê,÷öžz7i«tToà|mÕhÂ@#˜ gààn¦p³Ëfmf0XÛ.2OS)´~#Žë]ÙuVšmºA±4±™Þ!()… #)J¸xmâir̦0„Bßš™McÃ.¼7x`ÜÈÌ7®Ç?L¾öNý#@ 2©+˜\oÿS¥ZLž`rÁÀJFšŒ‚Š•,!…•¸åµ»ÓɵB¸ Ÿ‰ˆäLš$ËÏ×@]ñ’`oGªTÀØùŠ=g:>>F§†Bæ$7b¸\"Ы€pMaC +OðçÌAÊ¥^þ½êVmuèíéŽÕ¨LJ6R¹‚3lco'ÞÞf·îLœJópÕì=tn·™RÚF! ¥Å3î•[{K5aÞ ¦Þ aWÈØÇ[Ôm°A%§7’cØ<ˆ³~ÉÚ\ÃÓ„$ù–1{KcU;'(D"H"_À“]x ÙÄ÷)–Ü}„¦d† J3&ì%~œÍE?ÃÔŸ˜g™¹ž¢/]õ©ê¡BëšÛ«µ™0W¡»²iêfê©ú´²ÚTêbܹ"7V=þöX¥°ræn_—ÞðÉ\càXÃ¥“ZæÂŒÂ²UþeÑKÜÓ·×S¶­j¦¢YØWjìÇo<8à†Ò·½ÚwçÚ6žAŽÙÓÚ6Ïø\ÛæL^жiœŸÞÖkñ$üǶnoë^}UíûÕ¯H"Ñ ?­«û¹êúî´/›(C¼ø/ÏvåU£!9‚œ€´›fÄõ÷çÂÀdFøñ›Ðù0xÆçÂàL^†k aðh¿¾ïúf<ý4î¯OݳÒܪ}3±iï³7 ÷€Be "Ï©veì-Uމ÷gj"O8Á÷YÛ¬d“K 8¼T&ò„©¶±-ÑÃ{a¿o6ou7Rw®·Ù§ôâ/‰œÉÎ/ªß6ëÿ—š7ð†r êvä\®CñáYñÄ\Ïæº5A›ûz5¶6~Šs’¥6à J«Ÿ“4y‚IŠ»„·_aš>OzôF~ö¿ÑY¿žFÇEaê +£¸tÎòÔ­Ù:ŒµhU}N¨pq}\ÚtíÛ‘ù†»”CŒOþ#@¾¸t¿¿ØÉÿ©mD!endstream +endobj +1745 0 obj << +/Type /Page +/Contents 1746 0 R +/Resources 1744 0 R +/MediaBox [0 0 612 792] +/Parent 1731 0 R +/Annots [ 1748 0 R 1749 0 R 1750 0 R 1753 0 R ] +>> endobj +1748 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 625.589 194.593 634.666] +/Subtype /Link +/A << /S /GoTo /D (ttbxstatuspanel.viewpriority) >> +>> endobj +1749 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [264.889 446.184 347.745 457.033] +/Subtype /Link +/A << /S /GoTo /D (ttbxstatuspanel) >> +>> endobj +1750 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [403.093 446.184 477.675 457.033] +/Subtype /Link +/A << /S /GoTo /D (ttbxstatusbar) >> +>> endobj +1753 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [230.185 273.53 304.766 284.378] +/Subtype /Link +/A << /S /GoTo /D (ttbxstatusbar) >> +>> endobj +1747 0 obj << +/D [1745 0 R /XYZ 109.858 727.97 null] +>> endobj +1668 0 obj << +/D [1745 0 R /XYZ 109.858 626.586 null] +>> endobj +306 0 obj << +/D [1745 0 R /XYZ 109.858 615.862 null] +>> endobj +1751 0 obj << +/D [1745 0 R /XYZ 109.858 392.091 null] +>> endobj +1752 0 obj << +/D [1745 0 R /XYZ 109.858 338.224 null] +>> endobj +1754 0 obj << +/D [1745 0 R /XYZ 109.858 236.374 null] +>> endobj +685 0 obj << +/D [1745 0 R /XYZ 109.858 182.506 null] +>> endobj +1744 0 obj << +/Font << /F29 416 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F55 716 0 R /F34 719 0 R /F28 380 0 R /F50 672 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1758 0 obj << +/Length 2228 +/Filter /FlateDecode +>> +stream +xÚ­X[o¤F~÷¯@ûDK¡.@1Ñ>Ø3Én"E;w4–’<ànl£¥¡ôXÖþùœKÐÐÝãÌF#OÔ©s?ß9…ð"ø'<e¡‰—Ê4ÌRo³»Š¼GØùו°¡1°Ä½0¥·-ØåÏ#eä2ÌL†”\ýú{ämÛpJgÆ{†uJy»+g¡L}®®n¯>\x/õV …Å+T +R4ËÀï`ßÍúê›ïeæÑóúÁ³–`½ýÕÿ¹xXIímQoŠÕï믾[Et*½ä0GrA(º=õTêoR&«@JãÿR—=¯Ö7w·Ïe¿y*Ú•ŽüpŸw¨±2a–$ÈK‹,TRƒld“ʹƱJCÇ—4v$ '`GÄG%& S)HØRÓUꓲfPöØyœm‰¡ÐÉ+âÇÉp +ý_y5MãeÄX¯ 1Q˜h38Àx¸Y¹‘î‰ UÌ1ûxX ¿Ü¬dêÿw(¥ü^«@ønYË . ^Áƒšq˜iöç¦RpÐvý¼=ëB¥Â$‰¿`ÎHDæÄb”,dŠ4QF"]”ªF]¨¡T¥+Gåñ_Ê!§aJ‡)0[j8ñ#šj¸^£WnîÀO·Ï¸,ai'3Ê»¹îYFY|ÙY–æ²*YŠäØYÿƒˆkå_ãô7Í4ÙC5d~SCÌá·gŠç§’2Ê䉉;§ùn/ÁïãÔÝܬ²~äSÍSô°÷D¹…"  P«:Tšô „„ +ÃÊ…ãX’Â謁ël¹Îê•8L’Š%à)ÃXòékNpJäf‡†¦ÖPC†*2t°G+q±‡EE–ºÊ@ƒ•ƒQàö„®Àbyä ²W9{‰I±€@%“e^œB`"BïoìHƒÆìÅ7?ìŸß7ÞÇ£f¼‚ ³׺âŠuÖä›—E›CéÇ>9/'k]¼Ägò;ö䉬™g1¼ÄA‰8IΠ^äíì +«RÌ@0p¼‚ ³e¶;#ôCúÊ›ù ­MÃH*:þ¾è6m¹ï˦^$RŠPsUýÒQ¾k "oAÒ‘HNF×7@›p7ä]sàƒ›¼¶ ¢Í¸~rG~oâšr!¼m‡<&Á7¸qÇý kgå–¬=p¼Êa£ÞòŽ£ØC O`ÙÔ–[‹ÉQ×ÔsùtYóï'J™mƒ"ž-9(ÈJP)FVmSïle‡nб×4éØû¶A ºè㊖-ŽŒ¥mSu¶ëãˆCóÁao{$ ­5š–GHÉ>‘M[4ñÿÙ2$ à÷sÙòÊŽ(ÖãŒÓá™O!l<}_åýO`sê(ö_†KC%ü¾*Ã'Äç2Ü‘|E†;#Ed­´ ¾^lØ\ŸˆrRÝÎÉý˾X& 'pɃmüòÏoQ=ìºë•‚í¾Á›ðÞ·c9"öŒïß—Û€óâDUZ¦Uù6iHÃÄì «6˜Ö‘¿k€­ñ·vr€7V%LškÙ…à,ÛÌEªÜ%.¤fÞæ“{ mã|‹Òljï!ÏéÙÕ¡c²M ´c6 ¦ÝWÐo÷ÒõØ^hMü{ýGzúöDÒPCS +8­ìPqãõ/v/§JÀãsYU¸Ò`ëKC/½†/LÛÔür#: !îÁÌÿÄ«ž†F;’4^"ðqQýørâ`]ÏVc2µ>a2–z +*Â-¤ ¸‚[ž°¬*>Îzˆ.¯ 4rá 0t?AQ8’£Ý›h™>µ-Òn‡; œ§ˆØx!5×Î>¸Å˜/Sø‰zã3Ä™y1âQ¶Yíê¦gr +÷¨ïNú þߟpZY;0¶^xýK6öÁêtJþ2Œƒà߃ÂàÅí•Ø9!>‡Žä+°“,{»€Eü†’X’®o±ãÎÙÀU[haiNÀ•IBî,\qt`°Ä¼°wL ØH)ÕLŠÊõ[¢nøwÖw'¬ +æt¿2Æ/Ë+Ká¯Á¾Õ„ïC·ÅýÊb+¡lÛ ÒDøŸžŠšw† +È·<ž >%ñ`æ4O‡L™Ú< ÆŒüzºŽPíÂkž0LÆ3ÄÎ>ÐW‡qל¸%Z¬Cꮨˆó¦/¶Ã9wà ’(ƒiÄðgÁr,V“ÑGÆ.]ôðá\ôRg 1BŽßOx§`ÏÆoã.¢ô­i;ÌXÓÛ(ž„ +TìÓ[T1§9*oí¸ÍpÝo­Ê‚ iK ìn÷t1-ëM….£ 0ÒÛi·ª&³ñkëÂ`wö›§ˆð¦¢.óœQ} =ù† ×=ßÑ|é›çE–f!púÍØ~Á<’/ß9º§êÿqÎV£BeÒ˦Ž4g-µ$_2ô’4gçLÚ 3§ÂàÝÐ(ìõ欭± +uvòî«¡i¨,=þlÿ'Ñ:¼endstream +endobj +1757 0 obj << +/Type /Page +/Contents 1758 0 R +/Resources 1756 0 R +/MediaBox [0 0 612 792] +/Parent 1731 0 R +/Annots [ 1760 0 R 1761 0 R 1762 0 R ] +>> endobj +1755 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxswitcher.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 1765 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 21.00000000 21.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201319-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 1766 0 R +/XObject << +/Im0 1767 0 R +>> +/StandardImageFileData 1768 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 1767 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 1769 0 R +>> +stream +q q 21 0 0 21 0 0 cm /Im0 Do Q Q endstream +endobj +1765 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201319-05'00') +/ModDate (D:20030406201319-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +1766 0 obj +<< +/Filter /FlateDecode +/Size 2888 +/Length 1770 0 R +>> +stream +H‰¼V{TÓU¿¿½7Æ`ð™*˜&¢vl) DLÁT2Î6~ÛÐ±ßØ~ÂLËÓ‹¾SK ÍŽ8ŠHž2Ló•$ˆh„JÂ|ðJ~Ýßýý6˜Ú©?:}wî½ß÷ïs¿;÷{ïÔYñ ¼ñ€&_ðM…6n+kK}°`ðÇ®´‚l²õLω<8F#y¸§ÌmG²Ø‡1QV@R(ƒGBËŒEv">L2 Å gÅh>ýh«[æ%pvi"ÑüÌ€åüñV¨Ç·™6ÿ÷6´g‘»öpŸœç™ÁÚF»«ÆÈ#hŽû’=C£Ø!z +HøÓ`Ù òz`8°1ù!ì1yþÖÁE¾z‹Ãl† ‡†¤#–4{¢n™~À>_O†»¶DXÍ„ÅèJ37ƒåY$‘ÁÊÆ|£‰$ ìæt=n_hžc§ó{|‡l‡ ñ³åm„Ãê¡¶tcº·82 $Y@%"”½µ’Ðàܦ%ñ4„þ5+Î:KgZC[â3ŒÿÃþ¹›9)fQ’gñ=5 v#î¡hÍd’Öè¡“éq‡çñö¸¤„9:‚0Ó‘Kíá,6¶Ü™æt£«R>Ìæã\jººi¸Aë0“´{n#ã¾Ð¥öt÷Ò£ 3aT\90Kã6Ð0æz“„5ÑAÚñÁ…“˜a!ÑJu úˆÞ þŦ‡ÝÑé’#c{‘’è?ŽéuR$®f ã:+°Pb%ÔÁ0€Q©ßï ±ñ±ã`°GÅÁÓß +¤3Óž8T! ¤½Ag¢êÁ ‰Db‘T,–ʽ$^r©ÔǘBá¯P “K±Ëã óöòò–yûÊd¾~2™Ìžd~Lˆüß$ Ž¹ng 9Æ•cÔ¸uõ=¦†(ù"¶€\¸9_ ‰%^ØÃF p¸.£/Àx—Ããð…Ÿ+UA£œË Οù’Vœ¹*BàWøéÁYcÇùÏÿN§šl{ó|´püºwïê푟Z2{}RZ̉"rÊÐªä«ø½’5'u\k ݰë­Ã¿¯¾Þ±»ôTMSçBCÖÛ›>?rúÂ]Qš—Ùk7ï);S{£[8ˆ–‡0 üH!(|"È Vð#VúѾ›þŽjœ®Ñöæºèþzûä»ã4aHä‰*¢hhZLò¿ê†ð÷B P—€”‹¾)jp;1Åji_¼<¡x÷·]Nç{ê[Úzž¾üɹ#%Ë[º¦½ÿÓÑ‚CûíŽÛ+(ðqþ/õ·.Ýnê/¸ØóœfwåbËŠ[ïŽL®®Ý¼®1ìâ’ìºèKÝÕ·N×m8»·¢üd­3_õV2³deyGýÊò+O—DV§â5¯XöÕòʼ¬òPÿŸ{CÂ*¾Èož²b"ûm[´[šªË +^ÓHs¾\D˜icOçìœýÁë'û×Ëlì¿ÙЙ]S¶BóM«)cæ–IN?Û¾huonå¡Ü^u«¦HQŸuNk¿_Ö)¹w÷XlUj^›Þdrh :Š¿*­Udýqpã±çS eaHÃÅöÒo‹ëC-×ʲ(Pä̸R–}£'ÿb²3źm_1ÿ•©9}g­©>O´œê-mð[A˜LHýR¿Ò2cQtjSmaÎÚ ÝÃòŠª"¯”(6$¨g¨_¬é ­³M8ucÛùܵ ¶n¨oß:B\Ð{£¿¸¥É!c鵩¿žÔQ“¼>»åÐÍ>ÍÞ¼}¿Zú +cRª:Ÿm{g‚(p¼_ÒÚ]~!¯ö½¦>‚ŸÕG8ŸÞáÓ’ÓÝ·c×ý3ónõoºº4ã䓇/ÿøŽá™ÒĽgª»z6_Oq¦6_/ïxuG;ÎÕõ<å\*¼tæÁåÞü=†Êùý›ª2®8oÕ©Ïå§/w”ß?е¬¿®¹µsdKÞðNµÊp»rɘëåuùÛº–îQÙæÔøç>7wô˜ɆûªŠãšQc ¢Úâ77Ýuvå‡^TÓŸ‚ÐyKf:ì³`&H¼úqæÁKŸ€—?Ÿ4g…ŠðQ (û5ŒtHB˜H_@ˆ ‡ W ÀF>Û uØH7¿ ›ÀúÀ'Žt'µanþíµéL_…c;gáHee´¢8ÏD„Ý/ͨ0%ˆP*UÓ•“§+§F(§‡«¦‡OCÍh'Æ|¢ØÉq絓;À³½I€qYl‚Áø±€üØèÁøags`!œÜ.Šce´þ%ÀÜ>=Äendstream +endobj +1767 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 28 +>> +/Width 28 +/Height 28 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 1771 0 R +>> +stream +H‰Ä–1ŽÂ0E‰¤´IAHPîâKpJJâKPä4案%HPlR@òþdX¯ã„@6¬v +3±ÆÏËc)¥õn“À¼^¯—Ë%I’ÛíÖÕjµ:N»Ý>NŽã¼EÞjµò<ÏuÝÃá°\.cÍ™QM&“ñx¼ÛíÂ0¬fú¾ O™BˆÌ 1Ï9'>}’Ù6—rQÊQñ˜ƒyÅÄ'FÛ¾¯¶¨VÅ¿ÈÌæD±u™~ ì/tjRJú +Óõ¼{°¯ÔÓ× ‚RfÇ4©#É"“Dckeð‡_da4ÞuR°”†NÔHh£esdV¡S7Æ„%2_O¸ÂÀ2QÊT:u«þH[WëÌånž¥jëèDpº¼pæôÿ¥žzî)3³L-§±¸µ´̲ïåÕ:u«¸ëpäJ™¥õ|j~þÊMsÐÎo6›ív ¿ßïF£n· ÁMÞ `RŽð© S[oÂDj”#|z-àÙÿK€Ôò§ endstream +endobj +1768 0 obj +<< +/Length 1772 0 R +>> +stream +endstream +endobj +1769 0 obj +34 +endobj +1770 0 obj +1754 +endobj +1771 0 obj +459 +endobj +1772 0 obj +0 +endobj +1760 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 630.925 197.091 640.888] +/Subtype /Link +/A << /S /GoTo /D (ttbxswitcher) >> +>> endobj +1761 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.084 440.245 312.506 451.093] +/Subtype /Link +/A << /S /GoTo /D (tbxcurrenttheme) >> +>> endobj +1762 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [333.206 440.245 400.648 451.093] +/Subtype /Link +/A << /S /GoTo /D (tbxsettheme) >> +>> endobj +1759 0 obj << +/D [1757 0 R /XYZ 109.858 727.97 null] +>> endobj +310 0 obj << +/D [1757 0 R /XYZ 109.858 703.064 null] +>> endobj +571 0 obj << +/D [1757 0 R /XYZ 109.858 628.136 null] +>> endobj +314 0 obj << +/D [1757 0 R /XYZ 109.858 621.284 null] +>> endobj +1763 0 obj << +/D [1757 0 R /XYZ 109.858 403.218 null] +>> endobj +1764 0 obj << +/D [1757 0 R /XYZ 109.858 337.937 null] +>> endobj +572 0 obj << +/D [1757 0 R /XYZ 109.858 231.476 null] +>> endobj +1756 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F8 369 0 R /F50 672 0 R /F51 675 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F14 372 0 R >> +/XObject << /Im37 1755 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1775 0 obj << +/Length 1988 +/Filter /FlateDecode +>> +stream +xÚ­XÝ›F¿¿õ ¤²e?€%UÚ(RU­Ò¸R¥4œÏ¨\À¹\ÿúÎììšÅØî5­¢ °;³óý›Yó <àIÁtªƒ\ä¬Èƒõþ. `çõ·±äLkxÅ=–›ÕHìë/eÄ‚º@Ê?ïÞH‚ œöp©Bðž0¡Š`§Ò‚‰\ÛïæîÝÝÛÓ)´—§£ +9Šg¨çh–†çɾïVw_}/ŠÀ|¯¶¥°«Íûð—j V}Õ®«èÃꇻW«Ó‰<:™ßr˜#¹!Ýž§Ê—ú»Y ¡Ã_Ûz¤·Õw¿½{¬Çõ®ê#•„ìP¨9J³"Ëð,Å &…ÙxL.Ï5NeÎDšÞÒXÁ–„½X*¦³âŠU”)qVHÆ~2‹« ]¤±KÀ‰1,áù‹ì×2ðÎZ +´4 Ú“ +çY:—‹ï"Ž}}7æaÅ<¾ Ï¡#lbP¶HòÓ™ßUQš"‡Ô*,›¡#.©N\’Vëí ÃTÆx‘Y¦á©(Ce@9eéôégªãŒ=Vc®'ûütTs ¬ÆÕÎ<÷‹œ ”0Ÿ+uîmGsKüù9(þË¥°Œÿ 8ÎÛ*ÌO·ˆD¾<öh?T-~ÝðF^°4ã·½aiª@áqÎ +È"[ÅX™JX¦3Rf"_vÇv\¤Ϙ–Pn +2È“»Ì}K{Ä$_Ì0ÄH·$(ýÐG" »à¸3Ÿ(}ŸÒW±T¹ô”}¯Tø¦«d–Iø5ñzÕ[æ§©Któõvì[ø^©Âqï½C7Ì·kŠ‹ÔæÑìó½EWŒÿtïð¯9Wg_ ¬IÒbUÌptp“ ú vqÀΫD„ÂIÓæz·8¢‡Ÿü¡•ÖÏ7øÎÃuS4&>»¦ Ñ*Lü­¿&&s@‰ ðD”Û®§¥¬*p kº´´ÅޮǺ3 ¡©IÝe@ôL¡±³6QEòñæˆlµI¶l†è‘MÚ,ìÚæ‰ÞÎ5/ÔàDdj0å“p.RÆ¡Ï9šºÞwB-Üo Ï»ÁÙËèRCÏ=ŽÈ×på —‡oÆjÿcI^uÇqy¿ÒLH~ÓWŽf¡É¬³Û_>D–3®-`E +ˆæg ‰8\‹Äî@XyŠ*&—Tt-îÉ,üyíÚ#6ªz×…Þ‘œi“ÞIPV‡ßÐã÷$MÆûOÍ·Hq„BS \WÍ.¿nž»«íx¾¶Š¸™€Ÿ/[x2ŸW¶R]Ür7üÂvi3ÊÖërœàʪjʱv}kºD ¬Úý¬+öÙâ-# f´:AʾtÓBݺû]Å:ƒ¥]s_Z|@¨ eö®'sa<“dàxÁQèDÄ”±[øÃN2>¦ÑD“ç'¥ðu gC¨ ’E£Aé<óï…M‡x$†uy@Ä'£óŒ¬ƒç4õÆ)kðŸa˜ÙKþέœ"NoƵÈ`zÝ$me¯ùòøÞŠM§\FuL´ÔÌ•ïv6p“¶•~y=Âõt£î»Ñ: Ö§†'—Ž0ç4¶?,œ1Íl‰5tQÌÌO—~ä_›`­  ¶dú3²à—‘ƒ—âÔÍì`—¿ÅŒ´ÖEøéfQ;ž¼cýùÒÏ o ¾(G†ÇCoJlgêësÝ°Š +ˆúáÿuAIéoßÿw—›Á“ù—R¥lh ñ z$òͿԄSiæØK-ÑþL<’ÿl²Ÿóendstream +endobj +1774 0 obj << +/Type /Page +/Contents 1775 0 R +/Resources 1773 0 R +/MediaBox [0 0 612 792] +/Parent 1731 0 R +/Annots [ 1777 0 R 1778 0 R 1781 0 R 1783 0 R ] +>> endobj +1777 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 665.648 202.812 674.725] +/Subtype /Link +/A << /S /GoTo /D (tbxsettheme) >> +>> endobj +1778 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.994 665.648 280.558 674.725] +/Subtype /Link +/A << /S /GoTo /D (tbxcurrenttheme) >> +>> endobj +1781 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [472.926 537.926 531.65 548.774] +/Subtype /Link +/A << /S /GoTo /D (ttbxswitcher.themecount) >> +>> endobj +1783 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 298.082 209.227 307.945] +/Subtype /Link +/A << /S /GoTo /D (ttbxitemlayout) >> +>> endobj +1776 0 obj << +/D [1774 0 R /XYZ 109.858 727.97 null] +>> endobj +1779 0 obj << +/D [1774 0 R /XYZ 109.858 666.645 null] +>> endobj +1780 0 obj << +/D [1774 0 R /XYZ 109.858 604.497 null] +>> endobj +1782 0 obj << +/D [1774 0 R /XYZ 109.858 488.814 null] +>> endobj +686 0 obj << +/D [1774 0 R /XYZ 109.858 434.947 null] +>> endobj +318 0 obj << +/D [1774 0 R /XYZ 109.858 419.933 null] +>> endobj +322 0 obj << +/D [1774 0 R /XYZ 109.858 288.355 null] +>> endobj +1784 0 obj << +/D [1774 0 R /XYZ 109.858 257.515 null] +>> endobj +1785 0 obj << +/D [1774 0 R /XYZ 109.858 257.515 null] +>> endobj +687 0 obj << +/D [1774 0 R /XYZ 109.858 102.028 null] +>> endobj +1773 0 obj << +/Font << /F29 416 0 R /F14 372 0 R /F8 369 0 R /F55 716 0 R /F34 719 0 R /F22 363 0 R /F41 556 0 R /F28 380 0 R /F54 713 0 R /F50 672 0 R /F51 675 0 R /F20 385 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1790 0 obj << +/Length 1850 +/Filter /FlateDecode +>> +stream +xÚ­XK“Ó8¾çWøè,¬—m±'fØœ€ÉVQÅrð$Æ»IS0ËŸßnµäwœa‡¢†ØVKêǧ¯»Åƒþñ€Ç†e: R‘2“ëÝ">ÁÈï î$"ÉY–Á#ޱÔ~=‚ˆ{|×JÆA$˜É J~^|øXí5ÌR& ¾ÂsÌ„2Án¡´a"ÍÜûvq³xÛ¬BciÐ,5RÈK¯«mut¸ŽÂ¥O CþÚ€™šE¡{ûäÊõÖþ‡&áƒsçà À£U¿ Üé¸Å]ìֳ˭Ñ^ˆ7nYØŸçgcR™¸‡VÈÆAóvc.4ãiÒ,dOQÌÓц[&ç6T@6Š è/%,¶¯]–ßF`˜A‚†Œ¢Gf‘Ð:‹/s 3> # 'ÐÕ°‡„/§ºÚµxaA@b–'ÉÀÉÌj"$dM•õ4ùNQz±oO~“’(ìó-Éà$.Øݼµ´)nuz´¡¨ÏC  Ü3€Fæ<HäbüÏîö”ðÔ›Š~«Þ8øPC$¶†0DÄmáØa2EHÃâXÏùÏ‹Ì)(”`1TÖ=&(¤Ä»Ê"Ã~É¡Fµ]²¸ónS‰}¥rÅÛp>üjÊ8¹ÿVè<œÌEœßð)j8…ކ xÑפ-ã†1Ç6cÞgNdV!,b-z +õƒŽqëò•¡Å-¦¨o}è)£œ&ö8qÖú:Ť²ª‚‡%àêøM\»Þæ§“k> û¸F²q­‡÷Z¯|‡ò_sË’L;Œ¿è”Øè÷[¤2WF—d!ÙML­u0–ÓÔ=›n±.\¥¬7öL² Úe€x¹MÔÁç í¡cênž½Ú½/+èc‚¶•‰ÜZQg±¦akÜæOŽJcSÕÿGYÁB®AU4&+{ {…+±ö +=3–Û±¹&rý¶à`Œ÷/]àž«LÓ¨#Ï”§»¨~ã¯zm=¾oš¤Jýù?ä®"³ëìˆÖ6È^X°›–îðwSžl!—#³=ô˜­{Љx]°sÜVòGXÍŒY­ogµ©[»!ð8w¬¶ºý”Ò ÿbB_6y»'¼ï°u(ºr›£§ð?kÛ… {®ïÉh¥’žçñ};¡[ ÿÕž™ò_Œ€?г«€ë¯T>ù]F甀òÜ4æ=þäû™QgêÐyÃÕmÅXß´§z¨P¢p°º +.fÌìÖÀžz°õóduðn„ ÕòŽ­ðö*‚®†%Æžw  :ÁÇâÎÝÔº«0Âkñ­.Ž{²qáÜ$%pTÜ^>>Ê·~fÔ™:4p¸ú䡽¦š;HÐRõôUt$2«@ +ÅQÂ{ +T€Q­Ã¿‹uÍ& « +‰XÚkVÏTol}P +8B< ë²h/½ÿ‰ a_ŒYã¨P-óF*a1™2åcþåv[žøh\F$,ƒË¡Œˆulã¾ÀÉFaªDïºÉ‹8Љؙµ«ofA¥®•p÷é׎ +ãð9–ª*\µ_~¿›A^2‚€zãnÉ©!cwƒ‹@”‹£x'{<]?Ùƒ±¥ÙM'Õ»öåáYZÖÒV$SmŽ-cÒþ}ø×¹Æ6endstream +endobj +1789 0 obj << +/Type /Page +/Contents 1790 0 R +/Resources 1788 0 R +/MediaBox [0 0 612 792] +/Parent 1731 0 R +/Annots [ 1792 0 R 1793 0 R 1794 0 R 1795 0 R 1796 0 R 1798 0 R 1799 0 R 1800 0 R 1801 0 R ] +>> endobj +1786 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxcolorpalette.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 1804 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 15.00000000 15.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201231-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 1805 0 R +/XObject << +/Im0 1806 0 R +>> +/StandardImageFileData 1807 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 1806 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 1808 0 R +>> +stream +q q 15 0 0 15 0 0 cm /Im0 Do Q Q endstream +endobj +1804 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201231-05'00') +/ModDate (D:20030406201231-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +1805 0 obj +<< +/Filter /FlateDecode +/Size 2718 +/Length 1809 0 R +>> +stream +H‰¼VyPW›Í„@ êT¬c%\jQ¹A¡X2’IȰK’(£Öâ´ã?ÒVFi+ŠŠÖ©*¶ã´µÒªãJÛA¬biÅ‹«†–íÛ·›„(NûG§ßÎ{ï»÷÷¾Íû^æÄ¥¦ ƒKžà9šmx/oSÿY0øð+k#›Ü³ž‹º#QÇ$$w–ñ>$»Øâ0.Ê•ÂáqeeN"ŸB + …„³˜â4»¶ï°kÂÑüœmš(4¿æÐ œ ¾fLÂeÍÿ½ íYj¯=ܧ`7xÛ${Õ8yËáËíè9Ròà ä5 á£«!O#Ü—r²Ü{^ lŒ|/u°‘§Co0“$\,4-e6èLÚ•ù{f>fÛJ6U@R½-MQ@–ãhª˜—ŒL}!=J›È¢|´„L3±ùÞ#B6T $HHM•[¢7Ræ'•˜2é‹ „Á\ %Yb”tPvטi*™0F Mèú5%ïìÊ9³Ö’Z¬øö›dvâ²lçâ;kÒMzÂI#Öt¶F邏ç0ŽXM§šR²ÓÓ´E²©MíäìRHËcÉ"½­RÜæSlj¶º:¢@c&iÖ}a¤Çp_bS;»»iõñIGWÁÄ%Û ,Œ7(»ºÐTI†™6£ çJÂB¾ •i)ô½üÄ…Ï»£S¦@,Æ÷$î$°Žëy2VÄ[ùÂØÎÊ<èrêÀ˜›Ìmà¹0)5 ` öªØz,VGi u|:0I@·žÍÄÜ›€L*•ºHe..2…›«›ÂÇC&óðñóööñööSÈñËØ„¹»¹¹ËÝ=årO¥\.W²“\É…(þMæ[ Âí(q,®À˜ŸáÖÌY,¢aˆøâpsB‘X"uquÞ7b@€ÛŒžb¸@(IÄR.‹€F.œì&Š}SãXº!\¬ÜºëhÜ”©>™ÍÚˆHãÆ«ñ’ ª¬Ç]OòMQãv7¼œða¶.ñt=Ë·5çñôئ3×Ì¿ô%…|´ç½ãŸ½~·ï‰ïnÜXR°ªrÛ¾Æsm݃³“—êË6Wןlùñþ­a’ˆEQÂä0/!DPè- +ß°UÉ"hμú8bª¶Ë¸±*>Ë'ßù$HÌGn… ê|u‰9³hâŽÂË„8 0@†£w*@ èYw²ÂP–Pz¨Á¿ê‰¾^½¿­RÜØ”táÕþNbKCKûˆ×ÎîœSÑ·ßV-ŠÀ†§²ÊŽX‹×–åõÖ·–YkÎ$GwX×Mìm½œ;-'wÇ•e͹ë®R=…sÉckçÏÿlßÀE³á‹¶#Ñm¯ u=èIk'r–_9œ¼wÑò­Ö3†íþ}ço#Õ×GŒgR~µüü”€î£][,+¦-üò¾,oç)ËñË}ͥ®œ¡]ÓPz.ï§‹OÇ—–móžéÇ€‹¾ƒ':û,ƒÛZ¨[MºáºOO V„Þ³ªo¦ ¸$óxV?¼Ð²´ÓA£þÁòÒžÞÎ Hd@njÌþ7žîf@>gÀ¡¶;Õ#Á?4ù^­a€‚'Gê/1€¹Ò?¯³½•ÇËkÌ«¶·4]¿õÀêŸa> +/Width 20 +/Height 20 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 1810 0 R +>> +stream +H‰Ä”±nÂ0†ÏH0tðH ‘1CGò<#<cì-Œ Yû +E‰5<#<@<0€$÷'&©ih©XzQ¤Óï|çÜ/ŸµÖôlh­ÏçóétŠã‰ …‚Iò +¢T*‹E(`Çãn·Ûn·‡ÃÁ¬V*“äD­V«V«år¬Rj³Ùt»ÝlU2ÆÃp0|)’q~U–Ëe§ÓᜃŦ«Õª×ëc×/ñ +áû>Qª$ÒEa4ŸÍ]×ÅÖÿÈš~#ϳýG¿J oE!ñæ|Žn}æÃ¡²•++Ä[½¶Ñh<ô3ŒÇvTð¢vÝ÷YJà™Ï2ùußœ™$î±Ù)†e–Z\ؗɤÕj5›MÓïÃÄï÷û~ùëbÑn·Q#ü—Ù7,‚¬á¥äÞ G‘'ëÒ@þ)ÀÚ´iö endstream +endobj +1807 0 obj +<< +/Length 1811 0 R +>> +stream +endstream +endobj +1808 0 obj +34 +endobj +1809 0 obj +1558 +endobj +1810 0 obj +392 +endobj +1811 0 obj +0 +endobj +1787 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (colorset.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 1812 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 142.00000000 88.00000000] +/Resources << +/ProcSet [ /PDF /ImageC /ImageI ] +/XObject << +/Im1 1813 0 R +>>/ExtGState << +/GS1 1814 0 R +>>/ColorSpace << +/Cs6 1815 0 R +/Cs9 1816 0 R +>>>> +/Length 89 +/Filter /FlateDecode +>> +stream +H‰*ä2TÈTà2Ð30V°0׳´0Q041Ô³45RÐóŠR¹Âò¸ô݃ Ò‹¹ +¹À +,Œ €¢ÈÈÈ„jOÎåÒ÷Ì5TpÉç +B€ÍÜ +endstream +endobj +1812 0 obj +<< +/CreationDate (D:20030406193524-04'00') +/ModDate (D:20030406193524-04'00') +/Producer (Acrobat Distiller 5.0.5 \(Windows\)) +/Creator (Corel PHOTO-PAINT 10) +/Title (colorset.ep$) +>> +endobj +1813 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 142 +/Height 88 +/BitsPerComponent 8 +/ColorSpace 1816 0 R +/Length 228 +/Filter /FlateDecode +>> +stream +H‰ìÖ¹nAQÆ|sÿÿ…D]"A$+y¬­–&èdv¶ÓÑeåÌß—rƒœ¸EJ)=¤Ü!å)Hy„k\ã×´yMU/ƒ¤fÕuÃK9ñ„”Rž‘ò‚”!R^‘2‚k\ã×´yMU/ƒ¤fÕuÃË91AÊR¦H™!eŽ”w¤|À5®qkÚ¼¦ª—AR³êºáå9ñ…”o¤ü å) ¤,á׸Æ5®9_sõkí¿ŸôÕuÃË +9±FÊ)[¤ì²GÊ)G¸Æ5®qM›×Tõ2è’“ø]G@ +endstream +endobj +1814 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/TR2 /Default +>> +endobj +1815 0 obj +[/ICCBased 1817 0 R] +endobj +1816 0 obj +[/Indexed 1815 0 R 40 1818 0 R] +endobj +1817 0 obj +<< +/N 3 +/Alternate /DeviceRGB +/Length 2575 +/Filter /FlateDecode +>> +stream +H‰œ–yTSwÇoÉž•°Ãc [€°5la‘QIBHØADED„ª•2ÖmtFOE.®c­Ö}êÒõ0êè8´׎8GNg¦Óïï÷9÷wïïÝß½÷ó '¥ªµÕ0 Ö ÏJŒÅb¤  + 2y­.-;!à’ÆK°ZÜ ü‹ž^i½"LÊÀ0ðÿ‰-×é @8(”µrœ;q®ª7èLöœy¥•&†Qëñq¶4±jž½ç|æ9ÚÄ +V³)gB£0ñiœWו8#©8wÕ©•õ8_Å٥ʨQãüÜ«QÊj@é&»A)/ÇÙgº>'K‚óÈtÕ;\ú” Ó¥$ÕºF½ZUnÀÜå˜(4TŒ%)ë«”ƒ0C&¯”阤Z£“i˜¿óœ8¦Úbx‘ƒE¡ÁÁBÑ;…ú¯›¿P¦ÞÎӓ̹žAü om?çW= +€x¯Íú·¶Ò-Œ¯Àòæ[›Ëû0ñ¾¾øÎ}ø¦y)7ta¾¾õõõ>j¥ÜÇTÐ7úŸ¿@ï¼ÏÇtÜ›ò`qÊ2™±Ê€™ê&¯®ª6ê±ZL®Ä„?â_øóyxg)Ë”z¥ÈçL­UáíÖ*ÔuµSkÿSeØO4?׸¸c¯¯Ø°.òò· åÒR´ ßÞô-•’2ð5ßáÞüÜÏ ú÷Sá>Ó£V­š‹“då`r£¾n~ÏôY &à+`œ;ÂA4ˆÉ 䀰ÈA9Ð=¨- t°lÃ`;»Á~pŒƒÁ ðGp| ®[`Lƒ‡`<¯ "A ˆ YA+äùCb(ЇR¡,¨*T2B-Ð +¨ꇆ¡Ðnè÷ÐQètº}MA ï —0Óal»Á¾°ŽSàx ¬‚kà&¸^Á£ð>ø0|>_ƒ'á‡ð,ÂG!"F$H:Rˆ”!z¤éF‘Qd?r 9‹\A&‘GÈ ”ˆrQ ¢áhš‹ÊÑ´íE‡Ñ]èaô4zBgÐ×Á–àE#H ‹*B=¡‹0HØIøˆp†p0MxJ$ùD1„˜D, V›‰½Ä­ÄÄãÄKÄ»ÄY‰dEò"EÒI2’ÔEÚBÚGúŒt™4MzN¦‘Èþär!YKî ’÷?%_&ß#¿¢°(®”0J:EAi¤ôQÆ(Ç()Ó”WT6U@ æP+¨íÔ!ê~êêmêæD ¥eÒÔ´å´!ÚïhŸÓ¦h/èº']B/¢éëèÒÓ¿¢?a0nŒhF!ÃÀXÇØÍ8ÅøšñÜŒkæc&5S˜µ™˜6»lö˜Iaº2c˜K™MÌAæ!æEæ#…寒°d¬VÖë(ëk–Íe‹Øél »—½‡}Ž}ŸCâ¸qâ9 +N'çÎ)Î].ÂuæJ¸rî +î÷ wšGä xR^¯‡÷[ÞoÆœchžgÞ`>bþ‰ù$á»ñ¥ü*~ÿ ÿ:ÿ¥…EŒ…ÒbÅ~‹ËÏ,m,£-•–Ý–,¯Y¾´Â¬â­*­6X[ݱF­=­3­ë­·YŸ±~dó ·‘ÛtÛ´¹i ÛzÚfÙ6Û~`{ÁvÖÎÞ.ÑNg·Åî”Ý#{¾}´}…ý€ý§ö¸‘j‡‡ÏþŠ™c1X6„Æfm“Ž;'_9 œr:œ8Ýq¦:‹ËœœO:ϸ8¸¤¹´¸ìu¹éJq»–»nv=ëúÌMà–ï¶ÊmÜí¾ÀR 4 ö +n»3Ü£ÜkÜGݯz=Ä•[=¾ô„=ƒ<Ë=GTB(É/ÙSòƒ,]6*›-•–¾W:#—È7Ë*¢ŠÊe¿ò^YDYÙ}U„j£êAyTù`ù#µD=¬þ¶"©b{ųÊôÊ+¬Ê¯: !kJ4Gµm¥ötµ}uCõ%—®K7YV³©fFŸ¢ßY Õ.©=bàá?SŒîƕƩºÈº‘ºçõyõ‡Ø Ú† žkï5%4ý¦m–7Ÿlqlio™Z³lG+ÔZÚz²Í¹­³mzyâò]íÔöÊö?uøuôw|¿"űN»ÎåwW&®ÜÛe֥ﺱ*|ÕöÕèjõê‰5k¶¬yÝ­èþ¢Ç¯g°ç‡^yïkEk‡Öþ¸®lÝD_pß¶õÄõÚõ×7DmØÕÏîoê¿»1mãál {àûMśΠnßLÝlÜ<9”úO¤[þ˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ +¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿ ÷„óû +endstream +endobj +1818 0 obj +<< +/Length 86 +/Filter /FlateDecode +>> +stream +H‰4‰± À@ Ù‰<‡§x‰m¾LA‘"û¤X‡Ðá羺;r¬|åü6‡Äà8bí½ 2¨¢ÍJ£×Z={¡§Ÿ•ˆ C̓ÉW€Z@<¥ +endstream +endobj +1792 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 614.742 212.837 624.705] +/Subtype /Link +/A << /S /GoTo /D (ttbxcolorpalette) >> +>> endobj +1793 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 599.798 197.091 609.761] +/Subtype /Link +/A << /S /GoTo /D (ttbxcolorset) >> +>> endobj +1794 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 584.854 228.372 594.817] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomcolorset) >> +>> endobj +1795 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 569.91 240.001 579.873] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomtoolpalette) >> +>> endobj +1796 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.768 554.966 208.976 564.929] +/Subtype /Link +/A << /S /GoTo /D (ttbxtoolpalette) >> +>> endobj +1798 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 426.394 187.316 434.514] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomitem) >> +>> endobj +1799 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 404.476 215.095 412.695] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomtoolpalette) >> +>> endobj +1800 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [443.453 219.168 483.11 230.016] +/Subtype /Link +/A << /S /GoTo /D (ttbxcolorpalett.colorset) >> +>> endobj +1801 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.037 207.213 271.336 218.061] +/Subtype /Link +/A << /S /GoTo /D (ttbxcolorset) >> +>> endobj +1791 0 obj << +/D [1789 0 R /XYZ 109.858 727.97 null] +>> endobj +326 0 obj << +/D [1789 0 R /XYZ 109.858 703.064 null] +>> endobj +1797 0 obj << +/D [1789 0 R /XYZ 109.858 551.977 null] +>> endobj +330 0 obj << +/D [1789 0 R /XYZ 109.858 545.239 null] +>> endobj +1802 0 obj << +/D [1789 0 R /XYZ 109.858 170.056 null] +>> endobj +1803 0 obj << +/D [1789 0 R /XYZ 109.858 116.189 null] +>> endobj +1788 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F8 369 0 R /F50 672 0 R /F51 675 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R >> +/XObject << /Im38 1786 0 R /Im39 1787 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1825 0 obj << +/Length 1950 +/Filter /FlateDecode +>> +stream +xÚX[¯Û6~÷¯Ð£D¬x“Äô)I·ÝX4/P éƒb˱[:•äž“¿s!%ùvpºNL‘3ÙáÌ7CÊ(ƒ2’™¥-£BÂÑæ¸Ê¢o°òËJzŠTKQ–0Ä5QÐl$~øi¦Ì¢T W:¤ükõÇŸY´i¿—qeôãL(ã¢ãÊX'TQúïÃêóêã$…׊hu¥P xJif•ð;Ù÷v½úágå"ú^ï"Oá ÖÛ?âOõ.Q&®ûºÝÔÉŸë_WÿZOetºxÎaä™MÑí…5Ë]¿(•'©Reüß¶y´~ûû:qEÜu‡‰Vqu)cñP ¨‰,…Ës”i¤ZÐÅöRs« ¡¬}Nó@rCs)…ƒ¯;†Lî´™¤ÝÞu‡®ÿ\¬6i•š\88ä´&SDüpúzh†}Xo¯ü+sQjåþž©yíhO›.ˆY_uæiÒÖ“}¢²¸{¨{psßYm#'.m„5Ê»2÷:Iµ1ñNåÝi»cXø‘ùËÈÕš¬öR8§róö;ð—%˜,ã:Ie¼ƒAu:Àÿã«$5™Œ÷u‹DEü :\ƒÃÈk}½ó±Iòš$©=ÍØñd ¼ÍÁ‹GÍU°A°ð!«õ8zQ'˜d1^fÓ"ÉX÷(§:ð䆨i›a©×c3îÑ!\ØÛ^ÿÉò/™40në-p*oÖÒþ6Yü~ÇëßQ‹î„šL")›l……Y{þÞÐ!ù1ê<𘔿Øu]Iøð +§ìrkïq=ø7Îúmx{?@0iƒ†‘×ü2|ï=)Ì|œwœÕ¡¨‚‰úeaèh¿þîY†ÖÆ[l}MÖ3s×¢·´è›'ôÇüó±itÍqÉ´c„Ïh;¥ê )­9¨?C[R¥4OÓk3§€¼’>•^_¥;Àƒty”ƒÌ,·Œè:â¿‚Q}þ\"{àL¬”ü‹½/¥S6*:_  ÙŒ˜: I‡GÄ©t¡¬RF ~©ì%&š+µT êmò%*Ùp¢`XüO=î»í ì3âbaV]ÎpÄeáó*ó·{8jPr/ÃÑñ= $¨ÉîÔnÆBæ +>µË³¥º—õµ¨ï—ÌfoÈé>,³8à+ÍÀº|í}±ÐœRÊMÃØ{ËÏvWJÈPo@³Ì ‘gÒc³ŠŽÂÓºÄK¿ÁO¯ŸÉt<§vÇ#&6Î'ÈÁqÈ?ßÜ5 ¨FÖµt9D! däÞÌ×OÍ”b%η?G2œ¡”®°´ôÍÂ?¸¿asˆqˆ=)$–ugôØ挿žaj;Úƒ `»iË+XÅz‚Yø pÀ†CÍå â5˜'É5Í„Ö@ŠÒ:)5GФ¸æí'ÌD§j„ùëPTûú©ÚÖ›†÷f|B¼þˆÞzÍÈWd×#á+?ìVNø=A(–§ÛIZ›ù$íëj¬ï%¥±¹Ð¹zYR.ˆï%e Á7] yqÚŒ éefW„Ä$§<üí±­/óðøÐµu;b.ÞH$/mÙãx³S:YµüÛ€RÛÆ¹zÑíxñ™¾ò£t6~Þ‡¾'ÀQeHÄ=§´Ã2ÄR/’fB¯cB±š §ýOÑÞ(о#ZÆqK¡fKj ª-µq0CÉŠ–S³f™¬m:âzH˜™Û7˜Ü7ä+pÊž—¹1àÞw¡ (·õ®Âœ8ŒW·ÕXqsU§%ÈÓ¾ö*zA-ɧ!Q>Á÷á GÖÜêV–(¤ÇWnU.ƒ>·ÂBí2R qòJ¼çL¬”‹(¼”>7ìgmÖYÏ´€¿3…®Ê¸§ynëK9¸õ-dHᢤ=ÇŸ›vû®¨½ƒ:/邸"„XßCˆ@òâ²|Y扉…"ß´7/D${Ys?Õ¡hž&@ס„詟_*yõÇ?r@K\ê;Œ¿GÔˆ'(ÙPäáþkªqðW\ãw¬9Þ¾¦P™Ó¾ ÑµDóµNÜѳoÈ– À%¦öVµÝÈ*寂©˜ÊÃÄâ;­‡REÅèN„Ü»å-ÍW2M}ý7n=¦Ìt…@¤<=ã߉Í"Ouèe÷ꟄèLCSz¨°£¦G ¼Ÿ½,â8­¤6YØœS濆Çp ©§;š±ofOkÀ<<™É"ïõ¯+nUžø“ƒ@_Ü1/Ò®(Dé\¤Š\ä%õìÑ_Ñü®•ñ“ÖÅÄï&‹~êVWÑdz''”•.„Ý¿(ã„,øYâßMÝWpÂtEÜ—6ö/6›T°Ï ô/k¾³¾À9ï9wzR¯„‹˜’€B²¸ûHGOrYtô##\)/žèR>ÎTf°îŸº·,È……AðÍÒÀÉ5ž†Ì¤kv .žÞ^øqäÆ5-SÂÀe±Év–Jä¦\šð;#8° J‘sÏ%á—›k›&knV¬éò¥A±›¢j‹váMÔ/þ°&¬endstream +endobj +1824 0 obj << +/Type /Page +/Contents 1825 0 R +/Resources 1823 0 R +/MediaBox [0 0 612 792] +/Parent 1833 0 R +/Annots [ 1827 0 R 1830 0 R 1832 0 R ] +>> endobj +1822 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxcolorset.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 1834 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 21.00000000 21.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201233-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 1835 0 R +/XObject << +/Im0 1836 0 R +>> +/StandardImageFileData 1837 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 1836 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 1838 0 R +>> +stream +q q 21 0 0 21 0 0 cm /Im0 Do Q Q endstream +endobj +1834 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201233-05'00') +/ModDate (D:20030406201233-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +1835 0 obj +<< +/Filter /FlateDecode +/Size 2902 +/Length 1839 0 R +>> +stream +H‰¼V{\SU?wïÁؘ€¢’"Z&PQ‘‡ø(åöˆl»¸Ý¡QˆšYVæø±0ì…J‘•Ê$?j>ÒÌp¾ßˆ/DÁG02nçž{7˜Ú§þèÓoŸsÎï}¿çww~王IHâùšÜÁ4Ú¸­¬-óñ€Á»Ò6^²I{#¢—0Q<7$òà‚äÎ2· Éb{ÆD¹°’F0x\h™Ñ£HâãÁ˜ìlhÑÁYÀF1šÏ6~ìУyœíšP4îÕ œŸõLâÞ¦Íÿ½ íYä¨=Ü'g"3XÛGÕyÍqSèòa‡¨@& áO Až:8ŒÀp¨Ž:ö%ìyþÖÁNî½zƒY§ƒ ‡†¤$̵)Y9_ÕkOU‘Aö-¤y¾: ±§Iijɾr IèYÁHÕhÉ>²À¤ËQᦠ]¢‰Îïô>²A¦B$$¼Ò'·Pc$ÌyN*aÌÑäpƒY%I\”ŒtPvË2“ÄÜ€³H\³Î.Œ3­¡- zïÿ°®Ù¨K›•î\|gM’Iƒ;iY:2=K㤓ªp‡/"LñéI‰J‚ÐÑ‘]íä,ÖÆ‚Iº½R2fóñv5]]5žeÖÑÿ1q>n$ŸážaW;»»*5±„Ž0ö)®œ ˆ™â0Ð0¦z“D^²™4á} 碃…|J+Q$,èSzWøŠµOº£Ó%G,Æö"O$Ñ/Žéu$³…±ŸX(±êÍÀ`Ô9ê*pŸ:9a2À8ìQñðô·É$5¡Ä3c“‡º¤Hê%t&ê"X$"‘H,’ˆÅ¹«‹«ÜK&‘ȼ¼=<¼<<¼åDìòlÂÜ\]ݤnîR©»§T*õ¤'©'"ÿ7 ¨Ÿ€\·ãÃÅüGŽqåunCÆ¢!J>†ˆ- nŽÇEbWìI#8\»Ñ`<ŒËáqøBˆÏ•„@£œËÖ/ˆ?)%ËÃoÁÒ`gñgßÇ Þ+õ€2d¬qÙ©X¡ÿš´U¦ÐþŸÿðvÀ+kÓÕq¿ Üžq ÿ}ÇòCgÌ×Û&X÷å;;×>{£ý«]?×Þ´edç¯()¯:Rw«#|ÊLÍÂw7l±­oúC8ˆ–‡0 üPaXP?D°Àσ¼´Ø“Fp õÔƒç•ÆekbÓ¼T¦±ý4a@èÁÓÄÔq3ÂHüšÂß#Ñ º$\ôL9ˆ¶Áß~û~M‰·véá5ÓVåΉ:ñæ¦vïÚÅõ…‘ ògÆUýÍò¢5qß´ Uåêˆý)WŽ„j¹o‹ŽËlN³ «ëo¾\ëY™ÿã†q‡b[ÃBOä¯6eV•MÞ3Ѝ°Î»ßÔ?t¿¶(¥yvµ§êV£²®Ëñõ¥|Ëå3ÞÕ\±ýüèÊ’‚4éHÜ?;BèU<¾`kçð6 +¤µ<ª»~\öÖµcgVÅ5ý™5D\ðhѾ¢X‹fÖâç*·o»^ZpeÎ\ѹn@d«Þ°3öv~ëúž]3$Uws· ­û>‡0Ô´µ®,ó¿u.°ùÑÞðŠöžµ?©½7¬¬ÐöZ¬V¶ñ×1ÇõKtn)v´ž¾qfå´¬§/¶T}·Ïº§½§4ùXBk㻣j‹>½µ¿& F¿]C¼×iÓ—_ØQ¹­¾±eñs"owZv}÷çåQš‹«ô¡E!šm·;{V-Ä ?Þµru}žu¦?~Óø†ŒMï_}<åüìÝÇ}îVì‘Öî=²ðÂü}eÉ-=Û+;oiØ‘Ó0øM«+wxÏü‚¦ÚöÈ4ÿ‡CmÍë¡n–ûÐ{å­×Öð“U8ê³°Mu½;úRã-²ovÏ••gæÞ±½nØÓ17àj9ªßr²AÿMá‡í^ÝÔQv†åÝa¶S°w î°lëxÑ}qÉý©ã.·Ÿœ°ƒ5ÖsÉ]êÂ^)ò½žÜ†öõ™]C)ðIw‡µÃ2 ¾µ±’ƒ¿4ïìÄW¤¼°ÀúÁ©‘‹—«d7)PAê<Ó­†¡Ó7ƒé_°ë‚I@ /%¼ú}Át …< ‡ qyÐÃã<|A8 +àø6óCÇ; ) ¼H_@ˆõƒ­ oB€ |¶3*±Á~>6’õXúL ûª vð+ÞÍaº,¥püG&+£õKßéZ‚$LZx…†*@°B¡¡ó VDG„„ Ö´cžGQlæ8òúlæöòl§`\› /~¬/~lH_ü°£³9°Non;ų2Zÿ`>‡?endstream +endobj +1836 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 28 +>> +/Width 28 +/Height 28 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 1840 0 R +>> +stream +H‰Ü•±ªâ@†3   …‚‚ *«  ……¶i,.ì-}‰½…`Óka _ÀÂò6i÷T¸‚ +ZÙß™uîd&ʲlµS„$3óå?çügâ8Žö¯‡ó¿0¯×ëår9ŸÏ¸á/}>_0 ¸ùs&Gá: ¤Y]×#‘H, ‡Ã*Ye2Úñxì÷ûìaÒÓ4[­Öx<ŽÇã*Ybx:ºÝ® EØR9NþBG(bX‘É.aäNÐLÑßæ ‡…B!•J+2½^LBX€Ÿj*•JÅby€TΰÓé0 «IÌ[* {íÜeC*êX.—3™ øŒ ‘»ÝESØd:Ju1Ûív¥RA •1U‘"“PˆPو؇C2™”˜Ùëõx&‰IwÝõzVÉUS±Íf3ŸÏK±o·[ø£-p8L+-`^Â!R­‘Ä$4νJ&•my`ƒé'N«^™Dpc¸Œ.æ D£Qˆôô<ò9NmÛ¦uÆD `#t<êMÔ}¹\ŽF£ßRM»ȱ–e¡"‰DÀ'gü‰ð‘cJj¯f”‡ˆáËÀ[ÐGÜŸŸg~À‘ˆ÷üD{áÃ.©˜°P™Ä +‡1«Û6’Œ„pj÷öœL&ÕjUÄšk¸c“ª¾f2`Æ, †Gžyq©ëõ¨Õjš×q-šÛ¿¿¾ºf5íÛû{6›UÏO`çóùjµj4âÐÐ×Üä¸Úº~ ÒØ€Zˆ÷<ç?èØl6ûý|V4¹ßïÇwñõoo`h/À *SþGH/„á†O¡"Üä,ÿ‹ÅâçË ¦ÎÍ&>”Ë夨Uò“_0[ìl6ƒa0ëY£¿È š‰Â=÷Ò/K×+ endstream +endobj +1837 0 obj +<< +/Length 1841 0 R +>> +stream +endstream +endobj +1838 0 obj +34 +endobj +1839 0 obj +1766 +endobj +1840 0 obj +692 +endobj +1841 0 obj +0 +endobj +1827 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 615.068 225.73 622.596] +/Subtype /Link +/A << /S /GoTo /D (ttbxcolorset) >> +>> endobj +1830 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.542 409.593 204.199 420.441] +/Subtype /Link +/A << /S /GoTo /D (ttbxcolorpalett.colorset) >> +>> endobj +1832 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 205.562 203.465 213.781] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomcolorset) >> +>> endobj +1826 0 obj << +/D [1824 0 R /XYZ 109.858 727.97 null] +>> endobj +1828 0 obj << +/D [1824 0 R /XYZ 109.858 575.975 null] +>> endobj +1829 0 obj << +/D [1824 0 R /XYZ 109.858 500.134 null] +>> endobj +1831 0 obj << +/D [1824 0 R /XYZ 109.858 410.589 null] +>> endobj +1819 0 obj << +/D [1824 0 R /XYZ 109.858 334.936 null] +>> endobj +334 0 obj << +/D [1824 0 R /XYZ 109.858 324.213 null] +>> endobj +1823 0 obj << +/Font << /F29 416 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F55 716 0 R /F34 719 0 R /F28 380 0 R /F50 672 0 R >> +/XObject << /Im40 1822 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1844 0 obj << +/Length 1949 +/Filter /FlateDecode +>> +stream +xÚ­XÛrÛ6}÷Wð‘š)Qâ¤OµÛ¤éLÛ4Qg2“ä‘蘭D:$Çß]\(^dv2ŽHp±XìžÝ=MrøGš[b¤I4ÓÄêd³¿È“OðåÅ §ÄxÄoD»ÑDÂãë£dždŒXcQòóÅ»y²m¿Â,aMrÏ9aÂ&û !-aÚ„÷ÝÅ›‹?-þ›NU ƒ¢Ä#LÊ4nËÀï°¿ËõÅ÷Ï™MÜûú: A`½}—¾.¯WL¤e[Ö›rõaýëÅÏëA#ÍAŽës‹"gE·k)Æ«¾gL­2ÆLúW]õþi}ùv½²:mšÝ«gi±ëV”¦ä¶èÐ.§Ò«êÔÎ؀괚[.¹&LÊs–G‘…å&¡‚p¡¢íes")u«ýTv›¶ºí«¦ö†™Ä‚]峜pipÀøz}¹Êhúv{¼jvMûfEÓ6ÍO·åûœŠGP¨ £ð^ô…¹†—¦oÉœXÀ“R–äÔxtðÄÿiãë%qf6šê6>ÚÆ\ûÉ}€]¯ð¥Ø•}¿Àç€+'.²-Èœ3e®M!+ˆK_'Þ‚%mƒ¦|©¶3Wö7~Ÿk9ìñÿ€9¨Ç,m®½nÉé¹i(0:[/¸Áñfw€‘}í` þd‚ +@)±R9«äùhu.Òó™Þ}[}õÏEçïVL§ån7Lú²’ +|}o$ó@¤.öe‡ßˆ3 jUÞ¦õ LCÓm…æ£XYwb§KPãü ¨³ƒ¨“*zô/Ú‹CEë @ù®oÚrÆ» 4hÃ%rB™zDãÌl4u‹™vÜ"Àòª9@˜mÚ/¬–H=1fG/rvUɉfr²jQo‹i~ÿ–û‰gM˜êvEüZØ?ÄÇ!}áÁr’çæ¬¢Ì9  žª©ëo]îÜBZiÏQSy¤B¾*+(K€2Ê#ô\6q¬½¹Ù$n—'à³ Ö 9‚!ÆéÑ3°-?³§/ƒ–í½ŸU¹ävVíîãnW‡O7“çÁ6zKfÕô)Ñ3³ÑÔE¸gÚÑ! Å/ÊÞ•á—µë‹`K¨›ÂL¬Z’ /sn}!5‘jº~ùñåüJά{œ!£¬«ôDq_¼¯vE×…–=ÿêUdïcÙ/*2ì» Vx8üŠkåÝ£ A_„âYíow1Îûh%H®e;WñùPÐcíʾ;±ˆxÉalê¿Te‹Ð’ A§7øpï'ÊüÈR$BÌsæ ð•[l¦ažØ´©Ëӵл1 XLnˆ¡âAŽéežìÓIg 3‹º²‘2㱡‘æ«áW†~æ^¾E ‡ 9.2Äiê$ج& é?“¤"b‘#Z‘V¨$PÜïI àÇ¢+ñI¥›7¾Æ0ã×QÔñµóK`™€‰ç+#ÒøÍuÀ&Ô‡ÍÓg\»€r:\?]Ô¼‘C† h-Lò'Ô†83M]äæLû š–…²j4“ª:ñî€Ò  +9²=MÞ¢L6š8×ãÉ›Ï90¹5 dÅÞ”Ø"°nC,à$ÐøI\ “8`žÑpx¶Ø€P„ZåZWO©Éqf6šê¶5Z{®=”5×W°ïH‘ºäò¶âyzáö +Ñêè²CË‚Ós jõÄè¹×£Ì¼“Çn ç•÷û+W®š[$½Èñªòx®Š°ðY jb­ö„êDRÄp¤Ê¦&Lb‰“ ›„½ÅlrDtö‘À(Xì…‡>ÔWAD + M}þ"}Y÷å'Çïóô‡e +S3(Ž–ù|xÈ‹+˜åx2+pŒØ3ŒSgˆ¡£p$+‡È¯µF;Ûè<&ЄsÉ‹ïÎÆ…ášö£â2~(.Qäâ‚æÊ`î7ÄFýŸ± ç;ÞŨ8®´Ì(F™ìWrºçHÁoeÓlÏe•/n‘¹==j¡j +ó¸è„Š^Áµ¯õæØ”ÇA†&CÌ¢ïs™ÃÃwè|#9 "ˆÐ0²¾ +^;U§œp¯CïS@3:)¸XØc†Xæ›7·£ ®;:pl*Eli[?Ë=ïÊý˜«:-1ò– i_¾â‰…‰ôòÞ· +Øø‹Ò ¼"rÐwSmß[ºiƒ•[Ú±ææÇãfOž(†À©œ(õ”Ë83M]4å™öÇž(¨Aš©'V-`dή'©¦ë/O>)›ÀÑãÅÉ"êÓÕ_’…sÁ„žÅÛ ÎÍšNXÆKwï£ éÞÚ²Ç +ÞÖîȃü½nè ê\ËP-”ñȸõÕ¦`òÀDF +°„?é ff£©Ë ‘©öo¹³ƒÈXÍ'..I‚ÌYSŒ†ãž˜˜!Ì€Òý]nzﹻʵý ú·é½ÿCíö/ŽWß u»BÁO~Ná%6±”b—ÔDk5¡¹1–}~E¿„Pâ7í.ázÀkºªÇ/MMJVÉ¡œ¼Äн¹wøáã¿<”¤Íendstream +endobj +1843 0 obj << +/Type /Page +/Contents 1844 0 R +/Resources 1842 0 R +/MediaBox [0 0 612 792] +/Parent 1833 0 R +/Annots [ 1846 0 R 1847 0 R 1848 0 R 1849 0 R 1850 0 R 1851 0 R 1852 0 R 1856 0 R 1857 0 R ] +>> endobj +1846 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [249.953 666.084 335.272 676.932] +/Subtype /Link +/A << /S /GoTo /D (ttbxcolorpalette) >> +>> endobj +1847 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [306.786 637.192 350.567 648.041] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomclrst.colcount) >> +>> endobj +1848 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [372.934 637.192 421.004 648.041] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomclrst.rowcount) >> +>> endobj +1849 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [382.863 625.237 455.244 636.086] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomclrst.ongetcolorinfo) >> +>> endobj +1850 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [489.351 448.257 538.252 457.168] +/Subtype /Link +/A << /S /GoTo /D (ttbxcolorset) >> +>> endobj +1851 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 436.301 133.575 445.102] +/Subtype /Link +/A << /S /GoTo /D (ttbxcolorset) >> +>> endobj +1852 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 419.365 240.193 426.892] +/Subtype /Link +/A << /S /GoTo /D (ttbxcolorpalette) >> +>> endobj +1856 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 159.672 181.243 168.583] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomclrst.ongetcolorinfo) >> +>> endobj +1857 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [299.65 140.798 384.97 151.646] +/Subtype /Link +/A << /S /GoTo /D (ttbxcolorpalette) >> +>> endobj +1845 0 obj << +/D [1843 0 R /XYZ 109.858 727.97 null] +>> endobj +1820 0 obj << +/D [1843 0 R /XYZ 109.858 626.234 null] +>> endobj +338 0 obj << +/D [1843 0 R /XYZ 109.858 615.51 null] +>> endobj +1853 0 obj << +/D [1843 0 R /XYZ 109.858 380.271 null] +>> endobj +1854 0 obj << +/D [1843 0 R /XYZ 109.858 326.404 null] +>> endobj +1855 0 obj << +/D [1843 0 R /XYZ 109.858 224.553 null] +>> endobj +1858 0 obj << +/D [1843 0 R /XYZ 109.858 129.839 null] +>> endobj +1842 0 obj << +/Font << /F29 416 0 R /F28 380 0 R /F8 369 0 R /F50 672 0 R /F55 716 0 R /F34 719 0 R /F22 363 0 R /F41 556 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1862 0 obj << +/Length 1941 +/Filter /FlateDecode +>> +stream +xÚ­XYsÛ6~ׯà#9S¢ÄAt&±“¦éCâÆêLf’<Ðd«å¡’T<þ÷ÝÅ!A¤¤ØžŽÇâÅ^øðí‚4Hà4)ˆLe³œy°¨gIp#ïgÔJÄœ)áÇH®ßv bo?ï%“ f¤Jþ;ûú= – í˜% +<À}B˜(‚z&Ò‚°\Úçjv3ûs§ÅŒåÁNÕÄ!'ñ—âÃ’pÝÅw9Ÿýú+ý<_V +Ì—_ÃÏj1ªN5 }Ÿÿ1{7ßi¤ Èñü\œÈ£˜ö<¾ÕoŒeQ̘ ÿjÖƒ¹›_~™GE¶muq–UQ’MÙ£_Z¥$E–¡NA ™P]ž=OyNXšžó܉ñœRRÀˆõ!“œÐ„jkïÕ𱬧ɢ‘œYŽ×›Ó¬YÙØ6ÆÙAÚ´i+‚¦WÛf1¬ÛÆ$DÐ0ç$Km6¬ß’4¹j«_ »¹ ?·MÇ‹(æB„šAÝ©Dè…M®o8#\p«­ºus71È¡‚Z™WfX¬Çá˜f ÀÜÀ;–Y¬E1 ‡ˆ†Û®ßœ)²p¸Wæ¦wÃ`~ïÌÛNm:Õë©M8AR'A¯à±í¬&¸wÊ8¡­¼Ñv…×Ô˜Ù`ZB­u±þ–P‚úii„ôtUU$Š3NÃK||4CKµ*· ^ [î×6”zá} ¤Ó¶ÖžÿÀŸöüUÓÈ"kŸá^;1ÆÀ3¡Y ’™áXýŸ.Ø?ú|àfÆÞT2o¡ÆÚÑO˜}@ §í>4:Ã¯Šœˆ$=ðj‚r+sÎ>KÀkvh_éDù+sÎá5×öÊuc_›¬Á½/:Œ®û]m |bñ.*æšMâ"!2“šþEÁµï~¨fØ3Ïžùa&—6W~¢€IÛS¼æ ŒÐ§ñ‚'|Šœz±é"–„íFAÔp3$Amï J::/Ä&oÐudŠç´¶h@7BIÎ÷¥ØÍ 9/À/°¡‰òâðH”ºFxú'Õ-Ë ÔÂ÷þÅyp9¹„Póü|ïÁŠ@¼1Ûc 6 *ÿ‚¶vnðÐøÝ++ßX9C†x-û¹IuM‰Ø‡ÔmÙ[q½…0’RÓl·Íhýx +ÞÁ®æà%£Ïi3ÝÌØ›:nóÆÚýì"ÏMäÒã +ßCÁà›ôÀÃÉqÙÊœóe¬}Ñm~Þ¨©ÕTÂ"ç/È‹›yÖ—‘ö—äÅdÏåewØ=ãËn»À•ÙÆråøµn»}›ý¤¦:9 ×kM¬¦C¥pR[«Ÿ÷ÖP«®ÚmcûŒTìwv,€l2üä æÅÒéIY¸0—å©^œA:h–=­÷„OõâN佸 Òuà¶u¯Ò~§gÛï,qVÆjM÷Ú\( &ÇñF…߯Ùâ¬Ig[ãïí¾í°XÑm¬àmµuý’;ïkôLnwˆ®õ’œÀDNÒÄ`Â~Â}ðI³mÿtÐ磃f‚$Ðã? žð)t8‘ ã:Éa¸'úsE]Hc©ÿ 6ç­8m©.ðö’²hXLœˆœyç·aÓÚ.£.ï€"³öŒ|lßàÁq;´7Ð(/<­C-œ +ÎÁv×õû0m7¶—·ø|@\®Øß; ›"‹ m++Vn"ó ,eW"ÀÍG£ƒþšûû—úKкí•Áý®Å<Ûý€2mÆð¼é/®Ö 9Õ%vØ}k乨£ š(æŽdÄÃN¡EÈÏIfº¨§6”vfìMÕø÷lµÛoKˆ·]‰ÎÕNKUáj›ÜdPO4ìý›~Dèo©N—ò˜ŒÎÈ~D·ƒÿò §òendstream +endobj +1861 0 obj << +/Type /Page +/Contents 1862 0 R +/Resources 1860 0 R +/MediaBox [0 0 612 792] +/Parent 1833 0 R +/Annots [ 1864 0 R 1865 0 R 1866 0 R 1867 0 R 1870 0 R ] +>> endobj +1864 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.02 643.96 198.401 652.871] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomclrst.ongetcolorinfo) >> +>> endobj +1865 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 390.74 187.316 398.859] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomitem) >> +>> endobj +1866 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [350.491 320.22 431.632 329.131] +/Subtype /Link +/A << /S /GoTo /D (ttbxtoolpalette) >> +>> endobj +1867 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [457.111 320.22 538.251 329.131] +/Subtype /Link +/A << /S /GoTo /D (ttbxtoolpalette) >> +>> endobj +1870 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 115.131 215.286 124.209] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustmtlpltt.ondrawcellimage) >> +>> endobj +1863 0 obj << +/D [1861 0 R /XYZ 109.858 727.97 null] +>> endobj +1859 0 obj << +/D [1861 0 R /XYZ 109.858 604.866 null] +>> endobj +1821 0 obj << +/D [1861 0 R /XYZ 109.858 520.114 null] +>> endobj +342 0 obj << +/D [1861 0 R /XYZ 109.858 509.391 null] +>> endobj +1868 0 obj << +/D [1861 0 R /XYZ 109.858 269.171 null] +>> endobj +1869 0 obj << +/D [1861 0 R /XYZ 109.858 205.839 null] +>> endobj +1871 0 obj << +/D [1861 0 R /XYZ 109.858 116.128 null] +>> endobj +1860 0 obj << +/Font << /F29 416 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F28 380 0 R /F50 672 0 R /F54 713 0 R /F55 716 0 R /F34 719 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1875 0 obj << +/Length 2288 +/Filter /FlateDecode +>> +stream +xÚ­YÝsã6Ï_áGifÍEêë:÷Íì]Ó™»îmܹ޴}PlÆVW‘r²œ\Ú¾êÓv²éN§+š~¹à?¹A&Ò(]$a"²d±¾¿[XùÇ…dŠ¥’"Maˆk"±³ ððSO,–¡ÈÒ )ÿwñÓ/Ábܾƒ]:KO0D¨³Åý…Ž2&)ÿ./n.þÝq¡µdѱš)ä(^¡Ò2Ác¥ðíÎ÷~uñ—¿‡ÙÂþ^Ý-˜‚ V›Ÿ¼OæÎµgS­ÿË껋«Ž£ €N%ç æHÎE³'‘Jý9 c†©÷CU´4Z½ÿqåg‰W×åG_…^^î})=ñïQ/Ë2Y#O-3¡B : »$j©D„QtNsGrDs)E+¬;ºLœ)!I&«Q¯§«úPµ¤®Ól©c¡b¼ ¡ƒÐnxhüHyukü(ôÖôÙÌl-c‘ªp'ø©<7:Ó.Ĥ{8²ºÕœIX‘0ðêӀɯ}&õµìv)-"²Yñ ô¯þRií­º¹ÒNÃWÓË]2‹e&tY>íóƒ™I’©ˆ'iÊÔKRïoô‘L°¤t‘¥••Ä,–à YH¢.AM¥¼Ê‡:Üã¿·ÈÄ3þRz -Öwôm|éÕ>,>íqB{LT´Öî ¶M±iѹ`‚ÔJ¾1¥»Ý\™²|Á+ä¼"P"N¢WzEO|Ò+˜ä ^1<¨óŠ~ŠÎ†·äüÁÞRlY\WhÓb·ö^Àü*`s˜48VÞúÐ4ô ¯$̼–hö8 +à” Ù5¨"üe JÜ ¥wEô°*½™§jbšÕ1áuy¸¯p,½¼ÚÐãN::ŽJØQŠÿÒþßGlÀèÎWàÈMÎøöJò@ø:¡*‘xbø0ŒtmùLHPlw%}ì—Ö%üeEÞ5³5…cL>g½DÒœ¾f.ð…©…oŠ +þí/× þVf›·Å#n7ï`*E^ÒÛ™Š×ë™V4ñT”¥ ¹t!µP:æƒ ­3e·ýÓ´»z³?š°IQh^5u"´tšˆDë×…Ö€øTh9”¼®«}ÛÖ-ØwT€:K8¨HÅŸƒ(¸ôUà}ÿTa4ÂÈEØU}ÿPW¦jF‰2æ6ÄB>6ß%`YÎàf¯ÙFR›ãÐF„ƒã +ç %ãe\öm}o'üT{ì1¥á“—ÎÓÚÖˆînc[ ïÑ“¥ö6æ.? [´è>2í€ÿý®d6ýô$TIk\øõЀ¸çôÙÕ¶44^w¡¿Ô*¡ ‚w˜–GZƒf_QYU˜‚z-€ú0¤ZL-èÿ„ê±þç°&s;—ƒ­Ös—7ån/2!AßD8Žâ‘2³²‘HÎIÕ:2“#©ˆvSaP€ª7Ýí<«Ä„;—•ßõÁædD„Y‰DBGg­À$ç€ô-¢tb…†]ˆ²•Œ7™Š$T#àjkŠù2X}x„à}«¾¯®òr}}ŸoÍMñšæëW*¦ï« o@| +òɪ‰éy#Ï8È[}Ä%7û§*ÍD¦®Òs³ +Í)ï(qæÚ >ÒÚlÍœ½JE*)"ø©6ôNLH DW¾DVž:@ÈÔüIï +°Ö ÅF^¾w;dzs#HhLBð'ÿˆ´ù<×€SJ1Ñ%kÿ)6íî?ö.¿5P\´,òºjÍÖ4˜gŽ˜Â%NÖæ”ã0c`™^ßþ +uáÜ< Ÿ”,úX⊄¯&.ªc¤÷Œq`ÖÄ.éqtI-Ò¾vÝ?(X6cš5î#¸Ùöí\ŠÈÂ\ç™yû®eã·¨™Ê>ˆmÑw…VL¨쟉¨+ÅíõÁºØ•mY?ÛC†Øiy™I¡d¼Á€*‹¿¤¼äËÁÖYy9áNáìÞÐ觇:|=<#½ƒžÊ@Mušyd“te­ô0 ÇŠ ÔÑ1Àé'äØQãDUóÊ­u¬ft ö—Ú>%lhñð@mME?-Ü#ù?¦š‚¹¬ñ] w¤¯Ÿ¶B1ÀIw‡ú‚Vˆw.[g­Ð„{÷àD½»èðegæP¸3NFúͺ#¦9§‰•ȤiR° ]abŸWÈrبÚKØ8%R°÷„>⚮ےæûÒÿ`œ½c`®0z˜òûêrôÚõîV’ 9nɧ‰½«d`<~ŒÝîùŒãüc´u± ë·ƒq^¶¦±5ÓvÎùÒ24j],Ùe[Ÿ4ù½i»nûhA!”M‹Š ɯ[MÈ8‚6à•Ï<âSõ„#y[AÁY‰*‰Õmq÷üÁÖøæµo¨c;¶yÈ/u¡…?ÎÛÈí3†7M¶Å½!ò§]ÿÎJKîšañÆ­ ²C#ï‚P¢Ô˜¦s*˜f¹äÖ1, ºø„eø4|µ œZB_¤é—äÞ¹l¿yŒ¹áŜŕ {=Rl†+LsV… ¼:¨¡ +6k£Ý¢ññ¥‹P!MDœ$ãF`PØw¨àÞXH© Mó3ꮺï7TîŸÆp@Ç/l!!æ$‡”ÐÙÑ?Rj`•¹¿Qòâe÷ìéendstream +endobj +1874 0 obj << +/Type /Page +/Contents 1875 0 R +/Resources 1873 0 R +/MediaBox [0 0 612 792] +/Parent 1833 0 R +/Annots [ 1879 0 R 1880 0 R 1883 0 R 1884 0 R 1886 0 R ] +>> endobj +1879 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [394.276 447.949 438.057 458.797] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustmtlpltt.colcount) >> +>> endobj +1880 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [458.377 447.949 506.447 458.797] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustmtlpltt.rowcount) >> +>> endobj +1883 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [490.32 229.909 538.252 241.864] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustmtlpltt.onchange) >> +>> endobj +1884 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [367.89 217.954 422.463 229.909] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustmtlpltt.selectedcell) >> +>> endobj +1886 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [440.767 142.855 495.34 153.703] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustmtlpltt.selectedcell) >> +>> endobj +1876 0 obj << +/D [1874 0 R /XYZ 109.858 727.97 null] +>> endobj +1877 0 obj << +/D [1874 0 R /XYZ 109.858 645.51 null] +>> endobj +1878 0 obj << +/D [1874 0 R /XYZ 109.858 519.749 null] +>> endobj +1881 0 obj << +/D [1874 0 R /XYZ 109.858 398.837 null] +>> endobj +1882 0 obj << +/D [1874 0 R /XYZ 109.858 314.085 null] +>> endobj +1885 0 obj << +/D [1874 0 R /XYZ 109.858 207.549 null] +>> endobj +1872 0 obj << +/D [1874 0 R /XYZ 109.858 133.833 null] +>> endobj +1873 0 obj << +/Font << /F29 416 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F28 380 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1890 0 obj << +/Length 2809 +/Filter /FlateDecode +>> +stream +xÚÅZKsÛȾëWðV™0æ—S9Øò®×{ˆ½¶*qÕî`‘€ ‚’_Ÿ~ 0(­”u*årƒéééî™þ¾™¦Ô"‚j¡¢<Ìâl‘ê4ÌÓÅzw-n çÍ…‰•Qa–Á+ö…)}mAD^? ’Ñb¥Ã<ËQòËů¿G‹ hûFÙ<[ÜÁ{j›/v6ÎCfÒ®/>^üÒká¾tÑ«šä$aÒ*E·2xöþ½ººxþ£ÎÔ¾º^ˆ„\m~ >”×Kmƒ²-÷ërùûÕÏ?\õUr&}(`Nä̤Y˜' Îë<ŒÆÓ¦ùt®Ø¤¡Žã‡ær"gæR*Ì¡&s‹œä&T‘¢ÙÞí_·Ë4(–*î.˺~»+nÈÛç?Æv0te“Ð$ÉPÃzàÐC»ŒMÐtå2ÖÁš›YœTfF/’4 s;ZÈyÀDvå ³º_¦ÞCt4‡²]®à¥ûÆæ[Õ26Œ­†Yz—U>ƒðàó‹åÊX\]½?ÛýV꙲­«<´ILª»o‡r6¹â~žü>õ0y–M’Ea”§2X]—›S;ŸÇda¦¬ˆþÅÑÇr¿Á˜˜(çâDÁì¯>]žŽ]³»Z*TÕÔï—Œ©Ë®W—ŧ¹]ê8(Žnäø«ˆ¾üP®;'ïô]/—0çeS?C#aauZ­8R–ì{ù¡¡-'Q»ïʱt(Ë–›gÜü©éäí‡}ñM©ËŒ~~”Å|V³*Ø(Q¤$,Í5ëh>ÿ”ÏChB­Ü>‘Ï9$¡×Z…*QY˜hΠl—*€õSÁt[tx—'è8bÄ[™>hk‚Šž6¨–8n’4–Q/1yhrNšÐ,øÊ74}œs#WÞPJ!Ï‹©vtâý,æ]ðî&uU³?NÍ2‘…ð¤#³f,!20ÕƒàÚÂ&ê0˜.6å-Z%¡ÕyÐC×Iàñm®‹µ´î¶Ú,Ümåejüe¼.8ê¸m°¿ÞȦÍmhâa‰¬üŒ»ç4°ù/ØÛ4„Ÿèà[ÕÞU4OùŒe¿¡¨_“³)NÐÈ‚ÓQÔU÷v ?7ˆipÇÔ1„¤%—±ùíÈ<–‡àW )xoûî#ÏedWü‹†í¹ëuc„¨OÂL6:r@’÷âRWÇ.ÒˆûlB™„(e>AĤ(³°ÕŽ Ë;dœ´Ë¾3&Ry²ˆó,Œcý„¤p#WÞPÚ“ÞÜS휆 ‘B‰ÏdmÈYvèH…‰Û7Í'3³ä,OÇ© +u’ i½);d‹Ÿª}÷ýé9ŽãP©ôqôì ßGÏNä¿¢gÏÓ”½‚Š3:4ôTìÇte´>CÀIÆé8¾—€­yÀ¤=!O•¨bL•Ss5`kjÝÝ¢¹E;@lBïÙš'þÚ½˜i…ð*‰ü±kD¦:µU?ñY*Žõ“ˆ eM®ød> îáfmB›>ÀÍ&†3F:¢æ·ˆgÊÀ–{S:¼$dÆeïñåzÂñ?!øû bmÙ₨Ôse<0Ç-mõï’ù8-Õ Ö µüY7,VL0EëÞ»"¹ØE,Šè{±FÕ[þRuåŽeªý¨îá<Öämâ’ U9þÅî3ü‹ŸïªÃÁ¡Ñ:CoˆH‹¿qßo‘²ÐjË ¶ Dæâwß&t Ã[sס Ð3RwÛª.Ý`ù¶kzz—/·¹™” Ëù1JxîKN½µìn13Xí¦ë}¨D¨oâx F06cPû{u¬>c:×ÿƒK–‘AÕãPܾÅÈŸAqv˜Žë30÷úþÓ탘ž¥sL÷ts^Ì¡=… ²ïqµ²Ê>ÙAÖGv­FÈ®ì#ïˆì:w ;Ž=NñÐM £ašXô1÷%u?&[8ÀÖ¾÷ºd’lHþ$%?4ñTÏñã6<Û’¹Ï?zÙ°ºFÔ¬ÛR¦RxÃ0iÊÇlÐ(V³d{ZzÆ(œn¶Ü.z!:\ßÉ ¨T&%œhjT´Û÷F~99ÛŽ0振Zmx»Å5CàªÁRHø\ Ù`2b}JX__9dLCtÀoöx1°Ø2¶e˜[ +ß"Á´È¡(LðƒáçP-˃“£ž GÂØÑâÂèÌ… i‘8@er¯ºeT *ÏiÚkt¯å÷ ÑÍÀ¹Ú HÃò°+à¨í¯ 3:ùX[£hS‚dhÃôe]ñv “`>_-“˜Y[·§{´Ä +ö:´1ky9Ðmfô¬7„ Q|ïWûv‡Úí˜DøÈÂ~b€ä³kHf îÔF«¸/¾,†ÊlÄEÙɇçowÔ¯›‹_.Cv%ªVƒ.& +?ŠŽ* Þlt"ʲÙÖKt^„-âh ;$È8àF¯_1‚‚wo1N3šƒ¹`ÅtQÑô¾ú2U“£ÅNÞl˜gjR]^ñú­T{ð)çï +¶0Üp†ú†ïšr2žƒŸð Å^¾¥óÌÜË záéŸqx’€«¹oýÿ1XyŽÔÃq™óq¸Zf ¡XŽû[¹Z”ËŒR7«¿kØ‚Q>¨>¦ÜÒïß#LnëAš' ¥vWÁM'³cwáî·ÌâÀå±çd*£ÄÂô€“ZÆùº<®Û +‹û9ËF\§Ò*4™y™™Àƒ «dx*³p®ll¤ EòwÝÐeÃßð4€ÏyÜŸñ½uÑ–£²~’9 nòqýPP±‹xúŽŽ:ˆÙÔØòàoÈ ]µvÇ|бnÆ‹ˆ”¿Ä¢nK¼ 2=o Ï +{>¾j£~û‘QÚô— x-øq§jé%)‚=!=診Ëe”;0h¥4r? +¹h¤9Ô`/Ü5X_çäÅÎ9/šz¢ÁËR+æÓ;«åÙ+╪ê<Äúxæ¬RÍÊÔ +vœÍ°2‡¿'eOA¹ò†N«ÄSíœM¯Ð¾OÁÔÒ*G‚vï‰Yƒ>C °ÀŒ •æXä!‹&ZРPjÅQ—=ªw^m½[(Ù)õVø´éK²‡¡ŠÛ_¶é~ªùD“ÎÒ*| U´rn>Cïýó0h¹n©+åiE?Îõ Q©z +º‘+oè¬Î?Ñî¯ zãhðüšY3þ¤éÛ6û Xd²bª‡–Íÿ9†Ê m#¥—V ™ ¨.ã1šKUpP4y:JŠMy9wª;ª )wŽNƒ®ìÁUG8-£nb׿y‹â7%õà­¿Á{åö 7ï(©·Ò‡X½)¿²¶ˆæ×ÃüGšuÇ}žŽQF*78~ÏýO.ø±¿æ`ƒj_Ô‘ÉlC!І*™´ìÈ™°G Ì‚d´Þ=#¥ùÉÅ.OÄOÊ…ÒKi +IžˆSðrÓßæú»2¬ÊPˆâ¥ÔmE·œ€ X-#%úqZ÷Y’ÇgÀÍF:LãEŽ¥˜'ä… [õãfÛÑ×{>#Fìý ÷ôÏà¸aMî™:û둸ߪ±ùAÎÂÒ"Èž:NÅp^W£RÙ¦â~äË 3_ÉpÛž¡6§¥;<¸JšwÛÛ—w|Ù‘¥Ük({küòKƒ¡³ð·­N)_#¿ó?Þk>.endstream +endobj +1889 0 obj << +/Type /Page +/Contents 1890 0 R +/Resources 1888 0 R +/MediaBox [0 0 612 792] +/Parent 1833 0 R +/Annots [ 1892 0 R 1893 0 R 1896 0 R 1897 0 R 1898 0 R 1899 0 R 1900 0 R ] +>> endobj +1887 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (c_ttbxtoolpalette.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 1902 0 R +/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] +/BBox [0.00000000 0.00000000 15.00000000 15.00000000] +/PieceInfo << +/AdobePhotoshop << +/LastModified (D:20030406201212-05'00') +/Private << +/RoundTrip 1 +/ExportCrispy false +/SaveTransparency false +/ImageResources 1903 0 R +/XObject << +/Im0 1904 0 R +>> +/StandardImageFileData 1905 0 R +>> +>> +>> +/Resources << +/XObject << +/Im0 1904 0 R +>>/ProcSet [ /PDF /ImageC ] +>> +/Length 1906 0 R +>> +stream +q q 15 0 0 15 0 0 cm /Im0 Do Q Q endstream +endobj +1902 0 obj +<< +/Creator (Adobe Photoshop 7.0) +/CreationDate (D:20030406201212-05'00') +/ModDate (D:20030406201212-05'00') +/Producer (Adobe Photoshop for Windows) +>> +endobj +1903 0 obj +<< +/Filter /FlateDecode +/Size 2616 +/Length 1907 0 R +>> +stream +H‰¼V{PTU?gï>ÙeÙe_)"!4Yº»¸@Ô´‚PŠˆš£Ì>.»èe/îÞEÓIÔPÿiÆ‘L315|ŒÕd¥¹e£ä+mµ|™Z3 ¢  ÂíÜsï¾§þhúvÏ9ßûþη÷|g3² +Å£Gðe Ñ!ØÊÕˆ>ÂÊÙÄÉØ¦EX–òQâh,ŠÑˆÇòÐH™¸‡eE òQQ‚€¥O'ózÙù|0®¢Y(4K…(^³uÇA Ïo¢9 1ãùÅçü óÕ°ñ'gþïmxÏò`íÑ>E¯ñC°Å«ÆËÃ8Ž˜DÏ“^Z`å€AXˆf}(´++šI¬'ù§n„@DŒÅ‰E™T.!T©È¨%Ä£b’¬)V]âüe&©~ÍÖ/³ŸMŠ+9dKïY~&G6º~êkv¯yÐÇ_½“<á½RGîáF&mðÙi×É»{ꎜóݸ——²vÛŠ½ïýù÷®í_ûåš•ëvìûá|ëýô‰Ó V­ßé?~¡íˆD­c’I%f a”1VŒÌOÔILËÖè9‡JÎÜIM²]ó,¯Ï™g÷Žï-åȒ͇Ï"ƒ¹ÓÒòzÂÓ¤„ °—ŠÀÏÔ ¸•é/ë÷™äÊØŠÛEN7no8n>½äÁ·W>ùnwÆð<J‹w×ФuÆÝ._KScצþ5?úÚ4íëüÚ /ÿZ”¿}÷èÎ8wöÒÍÞ}í}§ïÔž˜êc/vøgü´³ö¥˜­«ïÕž¢û‹{XðMŸ±ÿ¾õ›ÈËõ7%•YØKüI…߬iüÙDdºàlèRK“ ñÜ•çÅ\5òÐýƒGHcÿ}$âW7¹°<Ï5B ƒ±è5ø_€Ã€D8õ6øLŸ Ÿ|Ðåø +ä:‚š‚üÊU•|A£h” 2^q/H˜ì¢ÚëB×CúX0 ©™†ñ™†´“!ÓhB_|ì¶@þy, ÀQ0¯~ â…S(…„€MŽ +á‡ñáøQ·rÀdQ(w€ò¯ 0zû—‚endstream +endobj +1904 0 obj +<< +/Type /XObject +/Subtype /Image +/Interpolate false +/Filter /FlateDecode +/DecodeParms << +/Predictor 2 +/Colors 3 +/BitsPerComponent 8 +/Columns 20 +>> +/Width 20 +/Height 20 +/BitsPerComponent 8 +/ColorSpace /DeviceRGB +/Length 1908 0 R +>> +stream +H‰ÌT±ŽDP5‰‚„b …‚Ä$”Š-ù_1¥Ÿ@gÊùšiù%°…BAB!y{fn"²$f§Ù=…ÜwÞ;÷¾{â>Æ÷.cóU„­vÝi·ý~Ün–e™¦IýÎ ¦þ|].ˆ?ï÷óùŒÌáWfŸ´·^îùnpGX’s«Gñ·“ý¦ö endstream +endobj +1905 0 obj +<< +/Length 1909 0 R +>> +stream +endstream +endobj +1906 0 obj +34 +endobj +1907 0 obj +1458 +endobj +1908 0 obj +310 +endobj +1909 0 obj +0 +endobj +1892 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [237.993 636.465 305.213 647.314] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustmtlpltt.paletteoptions) >> +>> endobj +1893 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.199 596.006 202.632 605.083] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustmtlpltt.paletteoptions) >> +>> endobj +1896 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 258.123 187.316 266.242] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomitem) >> +>> endobj +1897 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 236.205 215.095 244.424] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomtoolpalette) >> +>> endobj +1898 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [120.485 142.111 211.726 151.023] +/Subtype /Link +/A << /S /GoTo /D (ttbxsubmenuitem) >> +>> endobj +1899 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [359.596 123.238 444.251 134.086] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomitem) >> +>> endobj +1900 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [401.754 94.346 516.435 105.194] +/Subtype /Link +/A << /S /GoTo /D (ttbxcustomtoolpalette) >> +>> endobj +1891 0 obj << +/D [1889 0 R /XYZ 109.858 727.97 null] +>> endobj +1894 0 obj << +/D [1889 0 R /XYZ 109.858 597.002 null] +>> endobj +1895 0 obj << +/D [1889 0 R /XYZ 109.858 493.656 null] +>> endobj +762 0 obj << +/D [1889 0 R /XYZ 109.858 386.824 null] +>> endobj +346 0 obj << +/D [1889 0 R /XYZ 109.858 376.325 null] +>> endobj +1901 0 obj << +/D [1889 0 R /XYZ 109.858 83.387 null] +>> endobj +1888 0 obj << +/Font << /F29 416 0 R /F54 713 0 R /F22 363 0 R /F41 556 0 R /F8 369 0 R /F55 716 0 R /F34 719 0 R /F28 380 0 R /F50 672 0 R >> +/XObject << /Im41 1887 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1912 0 obj << +/Length 1679 +/Filter /FlateDecode +>> +stream +xÚ½YM“›F½ëWpDUfÂð9w7vb—íÚd‰½U¶¬ÄJd‘Py×ÿ>Ýó¥bÀ¹¤|XÄ<æÑ¯ßL÷`êøð:ÔÏ‹™“)ÉRgµ[øÎF~[P‰ˆ`$„!lУ~H2?q¼4")Ë8†¤|´¨¼üÓx" +CF™ã%qH(£øÈu¾øåMÀœ'IüÑQ(Ê×_Ü«ÛÛ×}{¿ü–¿xàÄIÓá  B˜3à©H ¶xkæ8LIÇNâû„…£±z*X/¡$¥ÁO„R˜ãù$Êxôÿ,¾|ó5Lýn7™ó ×> ˜Ý"‚WR&׋»Åz*1“Mf‘&/I‚d\´sÈœØM… +7Ûb¿YzÌ-»¡jΈ$‰³ÿ+ûbÅ£‰aßÉH–„*‚¢0r¢f=0ÖOË,vËvIÝ®jöK/d¡¥G]*~<ÀŸÀ-ûFêîWËÄõ‡b ˆòYßaZ…£ Éh6Ä Äƒ ‘¤ŽùžƒøêÓô‚0£³pšPb.™Á‚U’øŒïcù ц‘›ç×(Õýõì{.`º+¸˜Û·MmÓ!Ì`º,šÖÁYuP˜9& •CÂL>­ÃUì*öq'Tè·å®´ÆëÎOf|`€ìñKÌlüS„:þáXüß-†[ì!ômP‹¸X2qìþ­n¯úN¨„Àf¤î³v8ŠÂKn7m/•ÃõXì»CѪIðÙ^ü°*§„Fጢ']Q‰™UtŠP+: SÔà{SAœ/<âµÐoìaAuUו¾è÷n«å½Zq@YÃNÞ +ÔÛFȩ̀Ae{ÌßÙ4”fÇŸ•™hà æ6õfDÎUõ%Çtâg±__.{µ% +k*e3‰:쉒˜ÙDMêD Çeð]­!Äu)#ÏQŽüúÿ9v½Ðð}ñ ô®É›%Ô¡åêØÝà(Š• ±,’é±ÉHám²9¿Ÿ@v%fVÆ)B-ã€pLFƒï\Æ»j‡*Ô<ü[”§Ø—õÀew€\]æK¨·å‹Ü3Z»¶¯J¹ã }¹©û¢?J»pN«9ƒ š¹$VÕYUU˜9U' •ªCÂUM¾ª“CÏU5¿ž…Ö¯~+Wù+iñ³ÁÓM^ÿßó]êÉ€"ÝÍV—tòÇ6xùb•ªK3òŸ@vù%fVþ)B-ÿ€pL~ƒï\~hÄÅÕ±oîÔæÛoS×Ú»X…¶­¹++ç|‡17Q{7\Þá¬ÐÏÚô…ZÓ9{Ÿ@v}%fVß)B­ï€pL_ƒï¤ob×Åûˆ®Â¸÷.6ƒ +¤t:Ž«ýúSÕUèݺªó=¥Ùljå\± +ðqlùßcDkÿ@tû^0}Ì|÷çÿ\á»õ[}×ÅïeµÙòÊø +e‚à=JIÇJŒæß«-ûλ:;AL’0™IÞ dOžÄÌ&oŠP'o@8–<ƒï²ÃÑ=^×[åd¹fD)(ž–q"ÌŽûõ|]ä¼×†Ë¼s¨} ø1Ó錊']E‰™UqŠP«8 SÑà»T´ãFÖ¸g¨¸Å x¿¸)ÐiíE¿Á{nqféÏŠlànËÕ³C† `äÞ¯JÞ›wŠHͪÛȃº*qET½µâRa±W k>f.“„*C‘|˜|ç[þ_{íé ¶í­,“¹.ˆ;iåGÌšîè{TúB›RILX2ã\dWJbf•š"ÔJ Ç”2øÄ–ØH‰M¯ÙjÚÔÏÏÆVЖûµ’¯–{¥*,:¬ÅQGü¬rVFÏ„×'—}i® £zP]8þà'ÔM[È ‹‰Æg%TÍüTÿþ¬ä*¾$ñOH¾º:n ¨ÿÜ$JâG3%ÜÙ] 1³.˜"Ô.޹Àà3Ö ]ˆ? ñº:øñt„Lg.×âÏQh'L²šfUä +êX +Sàs”&µîÏÇ䲿æ;šJïou)À|kåÈ™ïoÅßï•Úqî¢wù aEÝSÈ·+xÝéŠU_}çMù€E„ÎTN« $dÎSlʶ d— Ò‡«R_›ÇóCF~:C7õgžÛõé‹’E¥8TÙ§¾+Œødœ9 ^œÿAè‡$ô4øâÌ·ý'Á%׿nÔŒ?endstream +endobj +1911 0 obj << +/Type /Page +/Contents 1912 0 R +/Resources 1910 0 R +/MediaBox [0 0 612 792] +/Parent 1833 0 R +>> endobj +1913 0 obj << +/D [1911 0 R /XYZ 109.858 727.97 null] +>> endobj +350 0 obj << +/D [1911 0 R /XYZ 109.858 703.064 null] +>> endobj +1910 0 obj << +/Font << /F28 380 0 R /F22 363 0 R /F20 385 0 R /F14 372 0 R /F8 369 0 R /F29 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1916 0 obj << +/Length 2493 +/Filter /FlateDecode +>> +stream +xÚµZÛŽÛÈ}Ÿ¯ò$Ãû%@|‰ƒÙÀkïz’XïGäHŒIQ!©Oߪîê‹Èn¶_Š<ìCS]UÝT°ñá_° üÂË“|“…™Wd›CwçoŽpåow!öQàå9â5/cg€ÐáÏ +éoö¡Wä"ÿs÷˯þ¦‚Ñ~€»â"ß<ñï…q±éîâ¤ðÂ,§Ïíݧ»Ÿä(üZ¶‘C-H ¾ã‘ö~­þÊï÷úáîOïÂbÃ>?Öãîׇîþú Ç +üØ ¢dM*1Ðå^‘¦È—„…çßæÁœ+‰2/LV¹b¸Áµ}{yZXž‡»»O‹È ü@>Po +x (a?Ü >Ñ?Èß<Ë£6Ö’0 Â\ãƒÎÒä†ï]³ ¶ßêÝ>ØV»}EÛ œ(›ó.Ì·6ç#?ß?ñ¿#3ÔPNý#^‰Ê‡]˜mOp¾þmèéÜx}„ÞZ³±¯ì¾…Ó\¶4ƒ'ÌR‡´ +d—–0Ni×¥´3B“´ßRÚ±+Û–²Ó¨Ý`R°éÊcÍO•-špê?wE²­Ùƒ4̱<Ú†>¢Ï?|ñ?ð8Þ¾º¯#@'þ1ôý.V/ÃÈ‹ÒÐá¥Ù½$ŒÓË5BéåŒÐ䥯÷ œm«rªÉËé¤ä? R=GЩ'¸Úb>àåŽM™©yİh› Ý|á€çFcG;›f–èèëó1Ã[ê,Š˜EÁ6ðB«ô~äÅQæ^ìÒÆ)ý¡”~Fh’^ã[N£R%ª¡l¹,¹01ñïšrù[Ͷ/+DˆÔ&¦ÝÃÃëϘ»Þô-›•÷ lÑ7É#/ ¡­¬ú +ŒKßUB¡ïœÐ ¯Î·Ô“ÈsÿÔŸEbBµ(‰‰ô/T««Fd¥IzA÷=²P®…%Bð’y2á)Ԕ랦š,ÂäÖ0ªò‘Í—3ü¤l‡§Z=˜Ë¥¾lî˜Èîaœ.­J—f„&—4¾¥KÏ¡ååbªÑ<õß””–U†£ÌX úI«Ï<¿õ,Ëk]NâÈKÓÀ!¥Ù¥$ŒSÊ5B)åŒÐ$¥Æ·”Oð,Aj "Ž1êªzPÑJAÎÁˆ¬Y33R@O\×±ïHá±{ŠD›4/ãd¼)Œq@p>…¼Gâõ¼a7jT9% d7„0NCÖ¥!3B“!Ÿ!ß¹<Œ×Ú’Ú+^*YÃù•²=ËÝ|6›ïßÞó^”;»šPvòÀÞ +dW“0N5×¥š3B“šßRÍÛ©md±½v(eg’ _í­©2Ž—†,¡ƒ­Jú"¨-ªÆPlò¼°ÚÒg¦Cö÷#ŽP¼â8ÙÙú¤jfûVD?ñì[•ÈS"®e¦(½8pM²;G§sk„Ò¹¡É9ÏìÜ{4£š·;Ñýë]íó‰g¶±Jª8­xȳ͊‰¼ºé‰õ…‹˜w¬õ#¶‹V4ª93›’àRâtÉi³'„oY¸&–Ùí!ŒÓž5BiÏŒÐdÆgÝobÛ"³¾˜¥õ¶pì§ò愚ÅmU™¹° ÁhÛÕä5.IÝ´²kL§Æk„Rã¡Icï¾»´uG+lzÑ`{¡çx²Ÿΰ†ðoz^Z¬ÉÉãu’Mi„&Šx@X/Yý¡ø¥ñº +cuƒ .3ÖØ„36ƒÙ¢“ÎBµ ómÓG~Èäýˆj€J½`æéµÞHu¸p•µß™¶¯zýÖÔw÷´nüßY+éao1Ëàk¼“¿6j&¹©ˆ'Ÿq¹¼²]ÊæÜ¡lÛCÛ|*qhµË™_–ð§bÏÎ'¥ÍîÄ÷\/¦Æn7‡8í^a“vß²™ìVd–ÍÞã8› %ßðeóOÛyåó/”E‹EJýmú!’$Û‹i|˜Ä>N¥í ‹U3±õ¹*Ùä•ëùTÿ+îë§æ¿õ_Þ!Gيȱ;ù^¹f¢Ù½!ŒÓœ5BéÎŒÐdÆÇ°N“Ûç*B‚ïæˆ™sÛ!_[꫞)» ;p +àß8äGAüM+{¯Ë"֌ئW²›êÿÏ>G¨ö92~øŠ­Äq„†‹ð]ûAx~èèI45,Æ«„",愆°Ðù^‡§½bl±}/Ho_-–ìUýcÓò9–‚m‚¤0náHaÈ.aœ‚¬JAf„&A4¾ëçeÓJ+½¯àº@¼ÙĈ/È\Ñ¡@v1ãcPŠ1#4‰¡ñÝ.( +;Ú $Ñõ°Ò[âmæï÷ÚfœT[%êþâ½’Lí‡^ÛKîg Y¦îÔ^ ÚÌ/Œ­­²›A§k„ÒŒ¡É ïe„æzü¶Ÿe‚å-Ö'±1ħ¶­‡?îpé¯^j&™,‡õ_-ñ2ˆFK6YxúTŽü€ÛU×ôC}.;ð%|øûê:õ?ËŽ¹Ä•®ü*z$8Û˜v »~[ŽçÂDõÇ“ØwÔší¡.[=jjžmn ‚¼ð"×òFa¬!@W¬±‰˜±ü×È>b;ÅÖu¬ÆªÝbûúDŽý4©wòG78ù3uƒwß©¬:ñ\ˆí=W«]ã×ÄoÛ|ýâïWøendstream +endobj +1915 0 obj << +/Type /Page +/Contents 1916 0 R +/Resources 1914 0 R +/MediaBox [0 0 612 792] +/Parent 1918 0 R +>> endobj +1917 0 obj << +/D [1915 0 R /XYZ 109.858 727.97 null] +>> endobj +1914 0 obj << +/Font << /F29 416 0 R /F14 372 0 R /F8 369 0 R /F20 385 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1921 0 obj << +/Length 2672 +/Filter /FlateDecode +>> +stream +xÚZ[œÈ~Ÿ_ÑÊ­¸YŠ;‰47g½;¶7žÖ®¥Ý}`º™n44t€ñØV~|Î¥ª(.IdÉ@Õ¡¾âœï\êôˆ•ÿÄJ8‰ñ*r#;‰V»Ó…³:ÀÌ?.„”ØxÂŽc¸Å9;¢ÑDäí§NÒYm\;‰”ü×Åï:«=¬ö¼å'ñêîÛõ“ÕéÂÛbù\\Ü_üS¯ÂsÑJ/õjCJâ¿ØÒ&Âϊᪿïj{ñÃ[7YÑóöq%%¤Àvÿ»u}LËCÖ¬ÿÜþtq»Õk Ç·…Ì©J‰ŒÀÅv†ˆ¸‰íôcwˆx‘í³X>Ly0·ñ|;“‰ý°u7aâÙÂzCÂ_%°!7$\XÀqWJwô‡#¢Wßboe¬õPʼŒ <Øp=¼·ùZX_³õFXûõÆó<«†znªg¼ßá}ÆsM¤Oë ´Ò ú®Pò|{ÌNr´yAQœkwk7²Ž$vxm[VTÁž¢pA™Ð´2¥Ì¢2çµ2€cÊ4ð.÷ðûL*r‹ +Ø^}¾ÅѼ}×f'û¾MQ§­ËK¸Lë$ð€‹ *Ñ2Óa‘E…Ì i}ôÑÆÔѽCRø‚åù¡u“=¦ðô\´<—¢ö|ßÂ}Ÿ×  3P-@¬Ö|Ž@oôt’ÓùË—k7±žyö&A÷ŒZg|s¨Óµ[ßð?í¾o½3½¨MÏgX¡Èwi›W%‹åª0ü +a'6Ù4%¯i‘ó_xñ)»Âö¢k™i³È¢gдûhc6îÀúŒgeõcÏJî‘êÕ™ÇÒRûEìÃäÇš^­yðŒO(ŠÊªIqšMÚJ¾»½ÂÑÏ—d‹Cy;Áí/ø?‘‰Þ*&ÕíÛ÷—|ªšV¸”YÔø VùpLçÞë˜ÌGý¢R8¤ÖªG¼ºÖ¯?·çz˜³ Ü~Ùàé²A$X6pIÀOý¢aÃ+Í}‚ëyvǽO¸ý°½…}~â}> Ÿ~ã{°ð综|R¤YëT¶GS_3Ê*O0M£Ž~í1͵Òý^1b?ň v ²¸!4É%³ÄˆY@ň!à#L¼¾~,o)%£cdõQ‡·_)á°i„ãKMx¼B¦˜R];HüÕuBÓª“2‹ª›ÔªŽ©ÎÀë;“vyÄ #ë²@µaœÑù¤Å™ÐX2YÕ-§Z#䫪îÈ-ŸÞ xúÅá«>“¯˜ÂR„8L+H[Ü¥ŒUØk(A]k{̹˼U4?e¤æX=chôhPμûª–´¸ÊoPï+ŠÂÒu`“ =4Ò»$Y^Ö´›ÉP‹åv$–ØÑ M³CÊ,²cP³c8ÆïSvÒÑ…f˜ê®iž™Q"'¤zžKÃáö™Ìlβr'ûrÌw¸ê‘ÅH¥=[aÍQg_t}ÂîÊs»êtÎ YVóûy+Wºñ'Íâ &â³tBÓf‘2‹f™ÔfŽ™ÅÀë;­ï@¨Ç Pºz®zny,«ÉUk~Âj_8rjÑùç0_âµeW«Þè#¬K9ÐÑG¯S4—ƒ¸$xŽÊå òu,ÿñΆùK,]àJ™²)"ÿmÄ}a7”Û€—Ï¢A¶N§¡ X$q"yå£È¯ë$€/G>r¹ +™k#žÃðE!³6ÅGß<ú‡8®¼¿Év°eO(ÑZ®â8°ª ’bŠc¾ÛÀYŠu2“ “"K›CSü ÐËÛ^¹?³ºh-({‚A {“hz8ÓÒc$’BÁéœ+r*ÇdV˜Ò” ¨ÉB=jMëJÊ,*kPkk8¦.o2H*îßåMûo s™Gjò:T¥;³˜}¡tv4Jä~+Ê<`Ëåé˜Q³##Ô¤²ØK ChZÙRfQÙs€ZÙÀ1exŸ²2=uåJ¢K *&˜x«B˜<+ã“cm8xa~Sb;1öïpõ¿³€¹Šv!§U1rÃÅÏ ™ü¥|×ÕŒÃÕ Ülic‘uÝm +"ó]ÎyRP15¾/3¶%ÿÛ¾HÕ‰–[m¼–ðã^0•j1Î ˜©üÅâÛ'¢±d(%ȹ‹´‘éù¿åÈ©ªeVßU¥ú>`£Šï¤ô¢ÐvãRB“¤T2K¤œT¤ŽÒÄ»ælzèxéÊïÿ®ò«úRùÙ‘’ô—S²rÚÅëžõsT=­ƒÀJ±oSdüþ™Ž¹YÑð#&«&“seöÒ Õ½ÂœÂq&_ºé!t}aý–ãÿí‘*ðˆ#K3)ªý˜å‡#YóÍHž~‹g…*móòðÖ~{:H`Ï*1]Aßâ'‘ ªæÇL5JåÚ˜Y!S‰k}`ã× äüÆw»”2º+ý)ãÑžúôžYNv17 +ª:ÿ^1)Ó‚§÷æ·6îu‡Ê‘’äØîO ZÑà´z?q?'ÿnô“]N•PØ“Þâ¹¶x ÞÒ M{‹”Yô–9@í-À1o1ðºÓº§©Kßs,Ìd%U•79R:'àxÓú IoW|Å@K]7iŒ‚ûÀ>@}=K-™1Ì0„Q$U öŒ¹áöNaý‚' tN¶ìc%{ ÏÙìK©>C³Sþ™ÉJ˜sþþ ‚ªlÄzAÑgè¸3ÍÈA´ÄNhšRf‘s€šÀ1~xïÙ÷9û]kãùÖ¦O|·Ï8JÊ9•ùðÊ>oÉ0ªÒšÏÂå®xVg{_þ¼ƒGΦ­äËGƯž~îšôN¿¥Æ#|Ñ/ñã£B—Ó´×ìL¿~¤m6S7Aâ!­‡'Z,$¸~”©f’nÛa²pþ0„&I d–H0 ¨H0!‰7L©Xƒäª§W¦ÅàǺ”U[S48úw53ÕøÜ™ƒ}C¹‰¹‚¹ycœ›Úýÿw u ÀTÜ ÀbKD<õ>]ƒ.¾é~Àl3@$1øøBÐ𤂒Y¢Â, ¢Âp„ +&Þë–€?8ó“Ó=äsCùçT-ª>êT/5y®ó‚Gõî'°K± ÷NhZïRfQïs€ZïÀ1½xW×WØ|Vˆ畺Í  ®^…N‘u)VÆøç ]é¢*#|_g·]‘ÖF$…©\^û•Q9ù;$UA úWµ)á¥R.Ñ‘7£ ÐüUkÖ´"²Ý…¿•èd¦ Ë"‹vAÓfí£Yµÿ3 ³Aú±¤C*kSaÉN,:`¿žLŸ¬“Èö¼…ÖZ'3©%)²¤¥94¥¥Úˆ– °ûJwˆÍ¿³üóÁ÷fìräiKë°ÙÕUÑûé@•äùé\÷ÚÜÔÐ Šmºé`OýâàÙ~2ÚoPI嘓ÿàcÈáendstream +endobj +1920 0 obj << +/Type /Page +/Contents 1921 0 R +/Resources 1919 0 R +/MediaBox [0 0 612 792] +/Parent 1918 0 R +>> endobj +1922 0 obj << +/D [1920 0 R /XYZ 109.858 727.97 null] +>> endobj +1919 0 obj << +/Font << /F29 416 0 R /F14 372 0 R /F8 369 0 R /F20 385 0 R /F11 520 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1925 0 obj << +/Length 2220 +/Filter /FlateDecode +>> +stream +xÚÅZËrã6Ýû+´˜…T5Bà{éWÏ8㎓¶&q*É‚2i‰IôPTÔNÿüÜ‹ €E©tW¥¼ à€ç>pAšO<øãî¥, “I,b–Æ“çí…7YAÏ¿.¸BÌ}Î’~b‹ek õóc‹ô&sÁÒ$Eäÿ.~þÕ›ä0Û70*H“É~{Léd{„)q¢î7ß›Y¨/ž˜©Î¤bIó+«y¾«ÅÅ»÷"ÈûÅËD!`‘ÿ<½^g»U±Ÿýºøæâvaæâ^À¸ŽI¥!=t K£ùB‘2ï”0ñ»\¡3ŽrÐåCßÜX¥ë!ëΣÔgÜãfA<˜¤° ÄLà‰‰ÆàŠ~ñx|öü°ð8ñ'Ö\ç„ +sF˜X|°à8 +Oø._g|ú:›‹dZdu¶ƒ»çÙœO l +§Õ ^ƒiíå>[nŠœÊçj·'L©®8¶šÁDGºÞ5uµžMÓªÑDz¦5Ýd¾E®§Üµâ-ë™\ ,«)Çù +”çTHŸû,(ôBëÁðh®zÿqs 3¾¿ûö–.ïg‰?]Ü~œã0 º„>É9KÁpÌ·—s÷Ãí™i ‚O¢„3Dçè›ä) ݆ß\Ï5·&;3!MØÒáânîá.¯P£{|¶›î"øF +û5©ç[¤ðq‚ðd•‹Ÿîo{,ç3á¥Ê4«3Ã%Ì÷´YËÝlîû`†«'tƒˆ”ˆ\õé»ÅºØJ'aèÍYO¡pŒ"΄pD¬Á ,Aœñ:ÂfÂõ”­/Z[²‡f­£¡&1¶¥Œ:u÷<ñ!”F¡ ¢k—ã1] cE°êî>Q®…4éµ¼sxÈÔ‹Õ•¬÷Ã, §†â¾¬Ðœá:Rá-Nz"¦®Y-ó°®©Wx´ñAÛ@À^ì0N ¶ŽÂ8Í3FhìÓ!ì3Åw‰‰2/r媨øë#f»¬9ìefÚZÕ–o…6,(Y©¦@’8\× ª£1.uF µ:]Âul¾Ç +t«¶ôÃS÷ýk;=4l=”{_à¡aÀYäÚð-а Æiƒ1BcƒaŸ ,>LŸRaÁ<Ì–\Ð-zc֔в,7xiÐßµœÅïТ k¡0N-ÆÂ>-,¾þh½—NùÛ?U«l¦=çz]ÈûÛ•¬s>BeX„^=}Ìò²ºBGnšj§Óò+#>5õÐàÊž8dmAò*ŒSÖ1B#k‡°OV‹ïê´C¬Ì ¥BF—=ŠÑÈB3—A¨Å»–*m¬|ðZWmqZ+”=ª–„é n*º–¦„Å©ùÌ$Óøïª¹/WkÊ·´¨7Z–Þ]·¶á6@1`®*œ$uD4—ƸÌ5J¨ÍÕ%ì1—Í÷7eåÀª|êz?K£i±Dü!«ß¨óhV ÚôÓb†-@§FØŒþ§l}ò·d‹+ñá¹¡èæ¶óaRF?‡¤,Ý}4)\0-Zа +ãTcŒÐÈÑ!ìÓÃâ{_JS§ÅÐó¦Ÿñ§·w2þ> £i&·¨|!åÀ «Cb¦Y”MŸž }®l¤bÏÓ8bqâ:ÃÉäÀ"§¦ø«Lß­¨ “ LÙJÞË]n¿rR1=®‹õ>cóZf¼΀ÇLïä|Ù–õtŠÜüÄc"vØ Xc\%ÔîöØæ;5°H¥ñr¬e%¼Â;4åæù°¡’͆ù:®Íº P‘S©"oäO¿&MZþ¡°dk¸gï#ÔPžŒ7^‚Ã¥Kl6däÒZ¨´lsÖfŽ-½K€“u˜žXúX6k +o9h77ûN&](«ÕvøÒÖ Ö¾‰Ï2ä–S—k´ a×P§kŒ×èö¹†ÅwêøØŸÕ&„[ÂJiK)ÍIuv_îö€š^«HS{™œ ê‘”~ÙŠ®Š]Qg2' i*D޽Å kª0NMǦÂ>M->K™äÈ»ôæÞ¦Î¦é¼[¸ Ì9U'PPk)ßÏ96"ßKXè:X aáÆ)Ü¡®CØ'œÅçzÛÒF¾,Œ¾JUä[gÕà ª"&,v Å ê¯ .ùÇØ´ú¶ñ-²óªÈûËU‘ðxGf´@Ãb(ŒS1B#G‡°O‹¯“ÔⱤ„¦·#?¢=ûW›7<=­©´ñ#nò&t~¸¹#´L¬pTÅ®=5Ñy@Xø ¿g'óËÚ'¡“Ú2«Õ tX•L ¹xxŽ"«°y£)åvÓÚ6çÉgˆÁÝs­“?ÊåªâzúNŧ|½†=å‹&Þ7j×8ÒÇÍæ¨£6µÜ踆–±T¸ü© û“Â8ýiŒÐøS‡°ÏŸ,¾öÕGàÉ7øäO üΡkÛ¥<ž³;,gðÍöÕ²RÙ¿f泌9n¿ÑTèxÍäGý=(ðàü}Ø7Õ¶üCVѪ¼;³áïPE§Æ+,ÖfíZú1zŠê®Ÿ˜“Ç!ó‡9-Р95ÆeÎQBmÎ.a9m¾Ó7YT+nQûƶmý.êÅÚÀÒyov÷º8«8åׄܜldù¥¦zqÂ#yî’Æ 8X_·ï¬jãG™ÔQ)† Óä݇ÛAÄ!†Õ—6ŒÂ8 3Fh Ó!ì3ŒÅw^ÑÊ/Ÿ*ý,äǬxz}Ðv€Ñ‡ßcc­¡säÈ«±!}XŽë%•ÖQaœ:Ž;„}:Z|ç:¢v÷Ù’$Ø XÿÝåE- ‚Ýà1‰ó WIo†ÅP§c„FŒaŸßGrŠ^‡àó+MÔ÷$ æÃ«Šâê ƒNWþèOÕÖz#ZÉ> endobj +1926 0 obj << +/D [1924 0 R /XYZ 109.858 727.97 null] +>> endobj +1923 0 obj << +/Font << /F29 416 0 R /F14 372 0 R /F8 369 0 R /F20 385 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1929 0 obj << +/Length 2491 +/Filter /FlateDecode +>> +stream +xÚÅZMsÛ8½ûWèHUY‚ßÜ=ÙN²•ÔÎ&k“TÍÌ–h‰e~hH*Ž÷×/ºA™$¦f[©Šà|Ýh4ó•+þñwS–„É*öb–Æ«]u客åW\"6>gI"¡ÅXÛ +ˆ|ü< ÝÕÆci’ò÷«_~sW{ÑÛñV&«gñì2/HWÕU¦Ì‹Y.¯î¯þ­{¡¶x¥»z5 …øCÚÄðY‰øÕßw»½úé—®°¼}\I„l÷¿8wǬ>äÝú·í‡«·[ÝwÆýpI*™ KXEÀz)sÇ„IpÉú1óÂE®@4ù¢mã,‰Ò™ñu7Qê3îr= ¬R1 Ä=Ñë­Fô«ËãWß/'þÊèë5¡Ä¼"L >1à8 +G|7k/qú>¯ñ·hê5wþ¶ÞÄÜsîó|½ ¢ØÙ7ëhÝ+ Ë(Ú"§i ÓÅ‹ˆOœg‰gî<¨ƒç¢ôZäõ£¨mÚÊ첦.kÂsÑ–Ëb—×ì!;´y^A«Ó5¨3s– +Âǵù¡èúVô $¢[ß÷¬ÞÓÃ+Uã„ב £ˆ3ϳXYcæL«Ø´‰ÇlSÈþ•?ÃçNQJ¥è…!Aæ~=gíM ‚êªø!^*ê©Þs>ŠˆºË¿}¢¶þ˜Wù¬ŠQZd@ó:JŒUÈ%B­äá””ß ¸Ì>Wþ#§(ù´#'{(sÒú$pY—uCjØ˘ðß ÒwOÔÍ)ÓŽÞ ŸUÐãÌ-j̼~±Ê·À¦Õ³M‰7Úqá+¤]SRñ”i×±ÃèäÇÎûGB¼€ÊÍ™ +Y›Óù#Ïäè}ô°…···ßà…;pä›¶ñ¡ü²N|çp1Ú¨DʬÃW0eìÑvÙ›ˆZzÀÙbÏ1õ,›‰°ó ¨F_$#t‡-q4Bmåú\”%=‰*è¤_µyÕûwŒ°Ò 9ƒ!’žû3t% ¿ë@ÜvÚg£\˜¤,H,‹™šõ/…±9Ø"¡ò°K 3ùÆóÝä8PæíUdÐj³ºÃéÚ¢P".¦NOjÂ¥üô!Ò€8c%K?‰xÆÕîHލo*£º)qý›·K”²0 +,v@óv‘«]–µ].§ìbð½ƒ%öê«T[crÂý§Ã†· )àú¯Ç¼þ²Né¹PUì²r´ùÂû iN•Xˆe͈·ªu˜I˜–4íÓ0[T_d‰ +Úå Ì¹×@=¾Oä!Ñ)ÁŒKÑ; Rù¶ù5€æí(1V;.j;^NÙÑàÛscjõ`šó®?·¤?(BY„¯ÓAL<ê®ÏP #Ý€™Z´ùŽfô #_!µÅeõˆ3í =gNZøn›"h^Z‰±J»D¨¥½ œ’Öàû¨Ó‘©*ê‘‹K“C{JÆ ¸”ïóg†±râøÐÔõ/Y§¡“ƒ:2ŽX!9ƒq¤ŒC‘¦÷¨éƒ°ˆ`î½asL fâèŒe”Â{Nÿà=ÍJïŠ/Hm¡tÍK/1Vé—µô„SÒ|ƒç{A‚›©·˜  Ö¸íûœgû¢ª._Äÿ‡¨‹Î¦e|¹enh´›S³Œ‚ˆL¼óû¼” Ç;Ì>ºž†¡Òy5¤©=…3¤ŠU^ø¾§¬“½¡iô†\ þg¡s}áÆÓ È—§™%Ìç[ Y[+ŒÍÖ‹„ÊÖ—„¶6ùîa›UÉYpïuJ×A½Üz Êö9UÁ® +~Ó((>àž½Þ«#)|»<àŠ[ôǪ£~@ÿšZñœŠ¦*œSaßÇáìN ¬l·#až0,ä'*õ„Gˆü Æq­Þ¬7R_•Ū½‘Ã$i:èæýÂXà'¿@ó~!1V¿X"Ô~qA8åßÿ!Õl©. ÑõRJzßä;‘€Q”=xM¥»|)Ýõ’ˆE¶ÒÍZHalZ$Tº$œ°É÷ŽÉrÈðarPðlñ˜ü 3LÈQŒ—1žìgNs˜eaä< +„{Æ[5nž±Ó*{’j(éá²xŒ§F%Oî +0 ªǀ“ÑÔÂ#nô-aåØOEHªdïX0"ï‘çõßÉÓÁ£Íàv2ºÃ#yõ à¼mþû¹ÀTwÏÏ9J(tlŽ2€æEb¬Ž²D¨å‚pÊQ ¾›²j:yZ†Ç`(¹êÎØ¿:z““ü+Šº§¼)vž;u‹ð½èΙÑËóÎ ×p¶µÒÍ )1V!—µ„SB|·çƒ:÷ÈÎémÙn§,/š‹£Ú?=èãlu +¦’J=ÏL¹ ’&?ý Û ™×4à~âäbí!k³Ÿ”ZŽb м-$Æj‹%Bm‹ Â)[|tʺNYè4ïýý£RaœÐoü ¥å^¼Y©è‹}„\¦¤rt³‘‚FîÃB>ºê„÷iWÒÊeÊèA¢C_&²…:â‡Æ®Ïh‡w"¢â=£¢Â—hµÙ¦ûYÅÕ> endobj +1930 0 obj << +/D [1928 0 R /XYZ 109.858 727.97 null] +>> endobj +1927 0 obj << +/Font << /F29 416 0 R /F14 372 0 R /F8 369 0 R /F20 385 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1933 0 obj << +/Length 2139 +/Filter /FlateDecode +>> +stream +xÚ­Zmã¶þ¾¿Âe$VDê½ý”Ý»+·×ÞæHòAkkmµ²åHröèï ‡¤hZ‹\qÀY&ò¡žgèe«þ±‹Ê°H‹UÎó°ÌWÛã]´ÚCÏßî˜Dlb_]$T¾jÎøªÉgú*låÇ×SÝ¿—…b‘¹„ù:0Qà )úØV®Òœdn‚A»WÂhStÃ<“ͧÊ9 Ó4÷¨<Ü*KŒWå%B­²E8§²Á÷•ø$w—Ž›s><Ûò2¸È] û¥O¢KÂç+ea3XÈ-–ÄxÅZ"ÔbY„sb|˜5Á[îm¹*D{EAi+·s÷BòÔ»FÊvåj8Ý­Pî6Å“‘B€Š0'ŠÇ;ÏÂÛkåêfürY’Ü<Ê<˜@n HŒ×K„Úᜠ¾ÇéMeè> +Wíz¥§ˆ¨h€½ +šÕiGÒ=›˜vû/ÎÀòÛ ì}‡é×øßŸÉÄ’ê‘2^6•ršJa|¦Z$T¦² gLeòy2±ìOgbI‡{æÉS [‰ñª³D¨Õ±çÔ1ønãnž•ÁGv•8ñð8 +­tñ¤ÌÀá?‰lcO__tW*ƒB‡b^ÎÔTï°ÌHtP‘¿‰9Eþ†;÷Ž)zÄÆôñ‚Å™dæ„mÂzb=°3ù¢ýz®Ä±+’±Q÷S|Êp©lGaTxXä6´Äx ½D¨ mÎÚà³Ò8Bú‡jJË|ðž©©ñºi&AäZƒd‹ƒGÔÚ8ˆÌLçé '¹ÿù-ŽoÆïF>.mY2_9c€ÜÚJŒWÛ%B­­E8§­ÁgiûmûŠŽV¡†Ÿ•ƒ}TÞݪ‡íøN””ÿ‘rglèä¡ÚËøC©¶Ê"/œ¨Ìþ|‘)ù¨·Ï\*y}¾A§’%:ì¡Å8…æ —QÈcÏ&0@NC)ŒÏP‹„ÊP6ጡL>ËP÷”µªü"oÞµfŠ®ò¦ëd|R¯Pê 3†04 iv•g5*q›¶¥&‘*ŒÔ,S¶þeò ¹›° í°ìÛœVÉ£*UU&Û*ãµÊ¡¶ŠE8gƒÏK¦7ñš½ºõCŽ2çÓ¥C3*—2ÝK‡Ðvl6­ŠÖ8p[GŒ|K>—ÀšJOÎa€ÜbJŒWÌ%B-¦E8'¦ÁwÙ«:_êùQ?'ãŠpPW±Ý¥¢Ù”„ËzUT.¹ \¹Ï÷&[.‰ñʵD¨å²çä2ønåz×|RW(Uéõî7ÝG1™Þöýu +ÕJßËÅH˜ÇëÄ®¾¾â–Ó¾6¢Õ݇ÉqGºáÅðsÕߤßNó@¤.ÏÅ—r›Gb¼æY"Ôæ±çÌcðYæ‰Êà;ˆg\æ]B‘wA©FÒGP.³]u5@iTÓ¯øpÒ?‘ÐÿêDQ fìF?ö@ù$ZÏ•¶¼²067p¦ ²Àåy&j[1Xß4|& dç·'¦hòÛŸsÆ« +ªþÒ¤/’>&³¾GåØcgå{ÐáIùX\†,÷œÖÈék +ãóµEBåk6ጯ™|ê’{™vŸÎ÷_Õάé¾è?Xa[—Ò.uXòÔ“ì ·:ãUg‰P«cΩcð=T£¾eÖÕê…Þ^œÁ®~¥Ówžé—^5'“·æ>gÐ[5!ËŸý« +õ‡‘Ùù_¼–Åkendstream +endobj +1932 0 obj << +/Type /Page +/Contents 1933 0 R +/Resources 1931 0 R +/MediaBox [0 0 612 792] +/Parent 1918 0 R +>> endobj +1934 0 obj << +/D [1932 0 R /XYZ 109.858 727.97 null] +>> endobj +1931 0 obj << +/Font << /F29 416 0 R /F14 372 0 R /F8 369 0 R /F20 385 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1937 0 obj << +/Length 1433 +/Filter /FlateDecode +>> +stream +xÚ¥XÙŽÛ6}÷WèQ*V\´õm² ¤L›Iäela,ɵäNó÷½—‹DË’¤`D‘‡<ä¹ ¯L½þ¨G£œdqæ¥,%yêmªUäíaäçÕˆS’eÐÄ1’ÊÞ3@tó~@F^ÈHžåˆü{õéKämaµ·0Kä™÷ íˆ0‘{ÕJÄ9ai¦ß««ßûUÔXêõKÝlÈ ¾aKaŠÇÊàÙŸïÅÃêÇ7,÷äûã§ð°ýä¿<õ~×_Þ®^?ôkÑHÊã%© d‚.#y’ _Ìr]fɘ+æ)añ"—€!c!$Kò™ý(ë†IÎ h¿!*¼6ÄqC”Áó wô9¢éÍùaãiÆ=k­[B¹!Ì,>ØpšÄW|Ý: >{ +BιÏxŒjn‚úMu*:/×%ü?–]À2ÿë­yÔY“–M‡h^qê±DØë1"œÒÃâ{qÙ¥€ãþûS +!üûJÑ6—3tJYv(‘ðlR¿x +âÄ/öºµª•Šï^ý¢•œW£~Õƒ¨NN¯ÚYEcÎè´ÇÌë© N9Øz5¯Ù¦ÄÈî¶pÆín«…üµ¬Ên·UÇoñä?‚¥~sîÔÀ#ô5gÕ>6(س’uÓMÿ©èµï:Ó +×E+’±äxB@s²ÌÐHÂín^vÎ wê>€æ…×§òK„½ô#Â)í-¾‘øwJ€î°«zÖVx.» ê|(k˜²¿ŽeœZ¹n‡€¤ Ô!5Òþ‰Ôyìï0\Ú²ÁHȸO .ÈÕËç(F5 -üÆ~' ¹·*ó­a˜á*r‹" +³èœÉ⌓˜²e“Y Y“ŒËd‹„Ædc “Ù|·¹çcgG!›ZÛnH´ëQ&Ý×CÑ .´h ·7öÇ„CUߪÔª)Ï㫵‰&ÓQY¹_£!¦RXÓlgeœ$ uÈ>€æe×§ìK„½ì#Â)Ù-¾[Ù_£Óž!o€Kšœ ³Ü¥Gn»96Æm‹Z_ï`º¹;×Lá]S3”ø~°2XcäG3ŸKåïçÖ•­G¶bC¶b:[Ý]öp ™¨ðÕ•–TZ™È–­kf­k0.ë.ëŽ '¬kó™›,Ëb¿½`¢VQÕœ•Øÿˆ—³`–ßëÜ#ý ýý"U±ì¼t`T0Ô¿;1ÿá¢Ïjª]9ÉY™ +bâ{5¿kÔÈT€3ȹÒÁ®†QI/Œsˆ’éñæ÷ÇÈüùºèþendstream +endobj +1936 0 obj << +/Type /Page +/Contents 1937 0 R +/Resources 1935 0 R +/MediaBox [0 0 612 792] +/Parent 1918 0 R +>> endobj +1938 0 obj << +/D [1936 0 R /XYZ 109.858 727.97 null] +>> endobj +1935 0 obj << +/Font << /F29 416 0 R /F14 372 0 R /F8 369 0 R /F20 385 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1941 0 obj << +/Length 4968 +/Filter /FlateDecode +>> +stream +xÚÍ]YsÇ‘~ç¯À#¡îíº«MJòÒ!ù á#ÂöD`A¬‡X²ýfÖ5u¦ØM)bÃa +$òûò@VUÖ‘v±ÀÿØ[ÖÙ*{a¸™Wsñþã‹åâ¾óë,HHøŽ€o-½oNñ»—óºèžÌr1©yQÌ}o6î_A$|ù6cl¶öbZf¹Zÿç‹¿þ}¹¸Êß¼ðÿø|½Ì\®_HµÎÜØð÷Ëw/þ¨ÁW÷LJ/êq¦feDâr1þÿÆÇéü×{Šu${&ØN¯É=J‡wßãŃ/]qç‡Ò³Õg¾ ùSmò£bïG†k⪰¡É CiKù!øy„üxÆ‚ýø½?~İn‹2¾³Ø¬PE%’-kN²]j +nW¡Ùv¥YgŽ?âÌ‚v¥ñ2¤²˜*0´lo©9~Ä5 +VøóVšq¢ˆ»`‰mC¢ä”A›D©Øû‘á’C™. +šD 2”¶”(°X‘'ÊÛ뇻ÛΉ–š}l9ÑòÈ)ƒ¶'Z%»[qÛR¢0¡=Ðr"¤®˜‹œWió‡ßÛÝݾ{ÿx<:*®í«0‰fË´á‘Sm§’½®¡¾X׆vÚð2”¶˜ båóºÙàýï¤ÔyklÉœ2d› ÷(@Hñ‚6¼ ©,dƒ°Ìíh>3"ÍŽlÈ £lÈgCnÃ0m)ìm¸Söêx¸isö~Üš(·!p:#JnWUµ9 µ»+É hR ˆPªbH3Ã<ä3àk<Ï8úšêÝíét»Ó»§þr¹BÍEK$ØRk{ä”AÛZ»d/ %YaC[k{R[üÙ 5‡C¶WÇÇ›X*<âFäþ?ƒ²Æíº¬»mN@àtFö愌{tãÁgkxn@oJ@JUÉ2¸î° ¾ÃS#µçÌÎOÓ–G Ãég¡4żçbæê³Oh"ÍŽ3š ::¥ÉŸÓä6 Ojm)$ŒÍ¢È—GW#ú#‰—J_^—¶âŸt Œ›;ŸŽyKŒª…›sÚEÂËÚbf€V9<”úäº1Òì¨3è¨nÌ×¹ ú‘Жò´*^çÅÉfƇÚº„‹è-Éá‘Sm“£d ¥XaC›^†Ô“Ö¥íç.­‘fÇÒšAGKknäxiÍm.­„¶”ÌÌZùÊæõõ÷'œ.:‰˜ÂCÄ·Wzä”AÛãÊ’Ýʵe–^\åÛОWzR[ÅÓ¯(ñtO›=$mBÉîî‰Û5Óà ãJ;dHm1ý5ëµ¼<ÿæÚŸ¶ÝÆçl*|± ¾í¥ "§ Ú{i’³÷öøŠ„VØÐ{i‚2”¶ +¼11ò󟞯ÎÈÑ#‚ÌÆ67âû€Ì€á‚±ª8 0Ë ,ªšÞ!£ ÁB°¡H‹È ã# § Ú>ù*ÙÝ\ØKC¡ÈSØÐŒ Cj‹I¡!¿Ì>#PïØhœ‘£Ffv£¸‘È î5ƪRžà½’ yo„ÝMyç8Já±áš0[– œ2h»d”ìƒ.5/lh— /Cj«xK†…ì=6 à<€Rˆ3A{dHeOß[+g±°=î$iBÅ>8xYå̵¤2¤¶8HÏ-ËŽêðŒ‡™…ãÚ03`XŽU¥`Ü¿©Ï}iv<É £!¹‘ã'!¹ Ã7!„¶Îçem.ß^ßÜ_Å él-}›C$Ù²µôÈ)ƒ¶[Ë’}pð„×øª0¡ÝY:JWZ ðÕ™òÊëãáõñÙÐw;Ø·GÀ¶Çˆœ2hï±CÎŽæÝ{ì WSØÐ{í€2¤¶Šgp-\±±Ãá€$M¨ØÃSi¬ú,íp!µ…ä_í¼¬ÃçaÇÃñ1½Šê<20Ý@IH¶·yàtF¶§mwÿÇÏq¾Skn@{ÖæEU1V»ò´ ÷öëF{y<üGÄõù…Ç©ÚÂ¥…zäÝ2W:Üt¶3eÎÜO®@†‹\}|€ÃÃÜPt¬5QÄã|2¤–°¦g’àøF«ìpr Ô„E€aÒr{ÿRDRE5{ÿ*Oh|tL÷/ER[ÅÓ8„‘³ZÔ‡’4¡bwoZšlP{Imh‡ƒ ©­âé;¼..zÃIšP±»ô—µ _ƒ2K:eHmø<]—mQ›n®ñ•ŒÌZÜ>=IuÙÔìýt—¤ðí1ÑÓe(m)£žðoˆÞìrå\îèæ‰Hª¿¦fï)ŒûaSÝŒ›wÎé0T•²!k„qþC)%/ïNx +ùp×Y=ô,Ö=ý9IuÌÔìƒ, ÕŸeHm1úý9›ÒacwÎ9F]3%óOä°;çœ +#=)²Î—òR¿ÍØ)œ£7·âD$ÕS³÷{Ü…)¹’­8Q†ÔVñôK&¨¬µ0{HÒ„Š½ý V¢Ýu¤¦˜ðmßѦ» û?ÉÔöΣ$Ú*î~0$lŽqçQ!TÅpäM<1º­E÷ßá‹¿ƒk¡Àó·ãçB¸óîîp;¼Ã“†Ív1;ú"’êªÙûƒDâ Œ^Éþ£(Ci‹sDÞâóÞÏÿJ]{©Ëß_=Í®î¾ï¬ 8¾ÕŽn¤ˆ¤úƒjvWr/í +‚£žîFŠ2¤¶˜¬ëçõãíõ`µøtÄÚ-HIµÕì.'X;q‚”"[‚©«dì¬Wxl·I[P²;oy;sƒ”’´»A†ÔVñ vÖx ®ö8¤ »s¸³³)E·˜EJ[ÍÓuX2˜;°ûb³ÃIšP±»öÖaŽó§2¤¶Š§ï0~~6àlw8 iJvç°î–œšÁQ†ÔVñô–r^½Çá€$M¨ØÝ‘@;Y+¼&Zi‡ƒ ©­âé; ÛG¶gÎ +@Ò€’ÛyÛ–6?¢@ÐÞRYÅÓ÷–6Îäw’6¡dwD[¤è™C;dHmOßá•Ï‚íY#’4¡bw7DÔÂgNÏÐA„ÒU±t½U‹u§†Û½HÚ‚’ÝyÛä³bøî”^£ ©­âé;Œ»\¾gŽHÒ„ŠÝíMšK ÙyÃA†ÔVñôKŽðªw{ëvDRÍÔ5ûàx.¼¦Z·£ ©­âlÅ!*b—ÃIšP±;‡m[çÔÂi‡ƒ ©-î?³VðÝ'PÛ{ÕÓÑ?^³ÓçPT·z:‰"´¥€ü,ÝêR±Y²=ÝêIõ×ìƒÕ?¨ÐÐÝêQ†Ò–"“µ‡·÷àþi1ìÇBŽÍœ›ÝëIu”×ìƒRB†Oª¨öõ(CiKÁ û׿¹:uF‹€äÛѲ€TyÅÝ_¤³1‚lX2”²ƒ¼G|G÷ V‰š™mìIµ–×ìƒ ]feV²‘=ÊPÚRHÈFöOÿXiÔ¬¤ØÑÑ‘TyÍ>*Ž•{?@u´GJ[Š^çÅŠŸñÔf†ê$oÙ09à”!Û SÁÝ_¥¡E´&/C)K!RffÜþ¬Òqñcœ%î-³¯GN´}KöÑ6ڀ벰¡}½ ¥-ÅI*Øoñ­½-xÈa­MðmG(ˆœ2hï%gïïÀ\U£ +º'(ŠÔ•ó>‡Y.Ä·o1[þøMºHÀ™æc÷„… žX¶° rÊ ½–œ½¿G“JÎ˪ +ÚÔð2”¶倿Í“K œ¯¯OG¼0§ Äݬgª-añÈ)ƒ¶a)ÙûGåR”Ò… mX¼ ¥-…eYg±˜&,ÏxÃä?gÜÝ©<Ó*#Qm ⦠Ø%g…J“Ì•ÑYÊPºbHøj`ÏÇÛORõîñðë(ïœ<Ã„Ž­Î¿åäÙ#§ Úž<—ìý»…ø )·¡÷‹ÜÃ(B[ЬãøK†±ø³»Q»ñœÙ)ma÷ÀÖD³¥¶õÈ)ƒ¶ÅmÉ>¸}WŒå… muëe(mñ^ã5Sx +óú3áÑ‘SúdþÎ-Œõ²&ì–[œ2h{ S²»8´%íöcódfC{ ãeHm1YÓö—þc…ïãœqÝ{  Œíè$Hª·»fï ÞÏYØÄPäQ†ÔGÙI¾½ªßÞRžªz¢É»fïÇ&VìTKyªê m)=`–ÑÌÈ_Þ?eÅé¯\sÌàí$ƒµ {¢|Ë$ê‘Sm'Ñ’}°ùã …×™ í$êe(m)M˜¿·üÌýp¤Ù±Π£ýpnäx?œÛ0ÜÚRv,Â}6ŠË¿»ë|÷߯Yåa»×Û°ķíz[˜ða·fp¨S±÷›kñZ +ІÞõ6ÊÚBº°•¹vœ_b³¹wlö2èh³—[Þ‰SØÈå6 7{„¶˜Cø¡¥fý©úó=þyúðEïÄ\I–h¶¤ŽGN´M’}”:ØŠ! +ÚÔñ2¤¶˜:vˆÂü2©¸÷¤Î:LÌr"u2Æ©3Ö–RvHÖú"úËÇã÷.B˜'GŒÒò\¿³N-³]ubÚ²Nyä”AÛuªdl|øâÎæsÚuÊËÚ*žÁ3=¯Òìq8 iJö~k³ Åh½¥+ ‰(eö6z»Ë#¨"ͶqÈ)ƒöÆEÎ>v³ VØÐ(CiK!l^ ÿ9N"ÕæÓ€ Ø? ÈŸäú‡§„®4UÀàXÂ)Õ`ªø6å‹ÞôΕLbSmŸÃ•ìƒaÒå64ñ2”¶”"°E\4ÿìQhöŒš3t8j2#‰Q“Ù05cm1E²®Ú¯þ¶0~ÇÖ­ç§Èîâ¼ÛÍ´bÃ1ßÞõDÛoÅ=83‚ÚteŠèû¢¡ªb¼ÍÄOÛ]@JÉí\½‡™«Ö¤«A„RU² –KëZé·»€¤þ‚{P2áï–„¡L¸ŠùË”û¨×Y~uLü]•0eʬ¶¾Ö³ ö4ø»7ƒÚcMûɸx=óD]ÿGß9fendstream +endobj +1940 0 obj << +/Type /Page +/Contents 1941 0 R +/Resources 1939 0 R +/MediaBox [0 0 612 792] +/Parent 2054 0 R +/Annots [ 1943 0 R 1944 0 R 1945 0 R 1946 0 R 1947 0 R 1948 0 R 1949 0 R 1950 0 R 1951 0 R 1952 0 R 1953 0 R 1954 0 R 1955 0 R 1956 0 R 1957 0 R 1958 0 R 1959 0 R 1960 0 R 1961 0 R 1962 0 R 1963 0 R 1964 0 R 1965 0 R 1966 0 R 1967 0 R 1968 0 R 1969 0 R 1970 0 R 1971 0 R 1972 0 R 1973 0 R 1974 0 R 1975 0 R 1976 0 R 1977 0 R 1978 0 R 1979 0 R 1980 0 R 1981 0 R 1982 0 R 1983 0 R 1984 0 R 1985 0 R 1986 0 R 1987 0 R 1988 0 R 1989 0 R 1990 0 R 1991 0 R 1992 0 R 1993 0 R 1994 0 R 1995 0 R 1996 0 R 1997 0 R 1998 0 R 1999 0 R 2000 0 R 2001 0 R 2002 0 R 2003 0 R 2004 0 R 2005 0 R 2006 0 R 2007 0 R 2008 0 R 2009 0 R 2010 0 R 2011 0 R 2012 0 R 2013 0 R 2014 0 R 2015 0 R 2016 0 R 2017 0 R 2018 0 R 2019 0 R 2020 0 R 2021 0 R 2022 0 R 2023 0 R 2024 0 R 2025 0 R 2026 0 R 2027 0 R 2028 0 R 2029 0 R 2030 0 R 2031 0 R 2032 0 R 2033 0 R 2034 0 R 2035 0 R 2036 0 R 2037 0 R 2038 0 R 2039 0 R 2040 0 R 2041 0 R 2042 0 R 2043 0 R 2044 0 R 2045 0 R 2046 0 R 2047 0 R 2048 0 R 2049 0 R 2050 0 R 2051 0 R 2052 0 R 2053 0 R ] +>> endobj +1943 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.577 605.253 226.532 616.101] +/Subtype /Link +/A << /S /GoTo /D (page.25) >> +>> endobj +1944 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [160.336 593.298 172.291 604.146] +/Subtype /Link +/A << /S /GoTo /D (page.30) >> +>> endobj +1945 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [176.386 593.298 188.342 604.146] +/Subtype /Link +/A << /S /GoTo /D (page.45) >> +>> endobj +1946 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.437 593.298 204.393 604.146] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +1947 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.488 593.298 220.444 604.146] +/Subtype /Link +/A << /S /GoTo /D (page.68) >> +>> endobj +1948 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [228.192 581.342 240.147 592.08] +/Subtype /Link +/A << /S /GoTo /D (page.30) >> +>> endobj +1949 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [202.954 569.387 214.909 580.235] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +1950 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.739 557.432 227.694 568.28] +/Subtype /Link +/A << /S /GoTo /D (page.68) >> +>> endobj +1951 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.331 545.477 225.286 556.325] +/Subtype /Link +/A << /S /GoTo /D (page.45) >> +>> endobj +1952 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.079 533.522 211.034 544.37] +/Subtype /Link +/A << /S /GoTo /D (page.30) >> +>> endobj +1953 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [228.192 521.567 240.147 532.304] +/Subtype /Link +/A << /S /GoTo /D (page.30) >> +>> endobj +1954 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.225 509.611 183.18 520.46] +/Subtype /Link +/A << /S /GoTo /D (page.32) >> +>> endobj +1955 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [240.922 497.656 252.877 508.504] +/Subtype /Link +/A << /S /GoTo /D (page.32) >> +>> endobj +1956 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.437 485.701 204.393 496.549] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +1957 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.538 473.746 229.493 484.483] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +1958 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [156.821 461.791 168.776 472.528] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1959 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [255.866 449.836 267.822 460.684] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +1960 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.324 437.88 190.279 448.729] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +1961 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.735 425.925 243.69 436.773] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +1962 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.071 413.97 176.027 424.708] +/Subtype /Link +/A << /S /GoTo /D (page.35) >> +>> endobj +1963 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [250.94 402.015 262.895 412.863] +/Subtype /Link +/A << /S /GoTo /D (page.35) >> +>> endobj +1964 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [161.193 390.06 173.149 400.908] +/Subtype /Link +/A << /S /GoTo /D (page.35) >> +>> endobj +1965 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [250.94 378.105 262.895 388.953] +/Subtype /Link +/A << /S /GoTo /D (page.35) >> +>> endobj +1966 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [135.29 356.187 147.246 367.035] +/Subtype /Link +/A << /S /GoTo /D (page.15) >> +>> endobj +1967 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.782 344.232 208.737 354.969] +/Subtype /Link +/A << /S /GoTo /D (page.15) >> +>> endobj +1968 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [161.913 332.276 173.868 343.125] +/Subtype /Link +/A << /S /GoTo /D (page.30) >> +>> endobj +1969 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.964 332.276 189.919 343.125] +/Subtype /Link +/A << /S /GoTo /D (page.37) >> +>> endobj +1970 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [228.192 320.321 240.147 331.059] +/Subtype /Link +/A << /S /GoTo /D (page.30) >> +>> endobj +1971 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.445 308.366 239.4 319.214] +/Subtype /Link +/A << /S /GoTo /D (page.37) >> +>> endobj +1972 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [148.021 296.411 159.976 307.148] +/Subtype /Link +/A << /S /GoTo /D (page.29) >> +>> endobj +1973 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.707 284.456 243.662 295.304] +/Subtype /Link +/A << /S /GoTo /D (page.29) >> +>> endobj +1974 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [162.965 272.501 174.92 283.238] +/Subtype /Link +/A << /S /GoTo /D (page.35) >> +>> endobj +1975 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [250.94 260.545 262.895 271.394] +/Subtype /Link +/A << /S /GoTo /D (page.35) >> +>> endobj +1976 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.392 248.59 179.348 259.438] +/Subtype /Link +/A << /S /GoTo /D (page.30) >> +>> endobj +1977 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [228.192 236.635 240.147 247.373] +/Subtype /Link +/A << /S /GoTo /D (page.30) >> +>> endobj +1978 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.819 214.717 161.775 225.455] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +1979 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [165.87 214.717 177.826 225.455] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +1980 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.212 202.762 220.167 213.61] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +1981 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.739 190.807 227.694 201.655] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +1982 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.148 178.852 200.103 189.589] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +1983 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.445 166.897 239.4 177.745] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +1984 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.203 154.941 163.158 165.79] +/Subtype /Link +/A << /S /GoTo /D (page.30) >> +>> endobj +1985 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.254 154.941 179.209 165.79] +/Subtype /Link +/A << /S /GoTo /D (page.32) >> +>> endobj +1986 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.305 154.941 195.26 165.79] +/Subtype /Link +/A << /S /GoTo /D (page.37) >> +>> endobj +1987 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [228.192 142.986 240.147 153.724] +/Subtype /Link +/A << /S /GoTo /D (page.30) >> +>> endobj +1988 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [240.922 131.031 252.877 141.879] +/Subtype /Link +/A << /S /GoTo /D (page.32) >> +>> endobj +1989 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.791 119.076 265.746 129.924] +/Subtype /Link +/A << /S /GoTo /D (page.37) >> +>> endobj +1990 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [156.738 107.121 168.693 117.969] +/Subtype /Link +/A << /S /GoTo /D (page.76) >> +>> endobj +1991 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.789 107.121 184.744 117.969] +/Subtype /Link +/A << /S /GoTo /D (page.77) >> +>> endobj +1992 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [235 95.166 246.955 106.014] +/Subtype /Link +/A << /S /GoTo /D (page.76) >> +>> endobj +1993 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.564 83.21 259.519 94.059] +/Subtype /Link +/A << /S /GoTo /D (page.77) >> +>> endobj +1994 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [357.457 605.253 369.413 616.101] +/Subtype /Link +/A << /S /GoTo /D (page.15) >> +>> endobj +1995 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [373.508 605.253 385.464 616.101] +/Subtype /Link +/A << /S /GoTo /D (page.47) >> +>> endobj +1996 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.559 605.253 401.514 616.101] +/Subtype /Link +/A << /S /GoTo /D (page.74) >> +>> endobj +1997 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [415.462 593.298 427.417 604.035] +/Subtype /Link +/A << /S /GoTo /D (page.15) >> +>> endobj +1998 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [426.227 581.342 438.183 592.191] +/Subtype /Link +/A << /S /GoTo /D (page.47) >> +>> endobj +1999 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [436.882 569.387 448.837 580.235] +/Subtype /Link +/A << /S /GoTo /D (page.74) >> +>> endobj +2000 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.294 557.432 383.25 568.28] +/Subtype /Link +/A << /S /GoTo /D (page.75) >> +>> endobj +2001 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [436.882 545.477 448.837 556.325] +/Subtype /Link +/A << /S /GoTo /D (page.75) >> +>> endobj +2002 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [395.398 533.522 407.354 544.37] +/Subtype /Link +/A << /S /GoTo /D (page.75) >> +>> endobj +2003 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [436.882 521.567 448.837 532.415] +/Subtype /Link +/A << /S /GoTo /D (page.75) >> +>> endobj +2004 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [366.59 509.611 378.545 520.46] +/Subtype /Link +/A << /S /GoTo /D (page.25) >> +>> endobj +2005 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [382.641 509.611 394.596 520.46] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +2006 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [434.419 497.656 446.374 508.504] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +2007 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [470.81 485.701 482.765 496.549] +/Subtype /Link +/A << /S /GoTo /D (page.25) >> +>> endobj +2008 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [396.588 473.746 408.544 484.329] +/Subtype /Link +/A << /S /GoTo /D (page.10) >> +>> endobj +2009 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [362.491 461.791 374.447 472.528] +/Subtype /Link +/A << /S /GoTo /D (page.21) >> +>> endobj +2010 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [378.595 461.791 390.55 472.528] +/Subtype /Link +/A << /S /GoTo /D (page.22) >> +>> endobj +2011 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [394.699 461.791 406.654 472.528] +/Subtype /Link +/A << /S /GoTo /D (page.24) >> +>> endobj +2012 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [410.803 461.791 422.758 472.528] +/Subtype /Link +/A << /S /GoTo /D (page.34) >> +>> endobj +2013 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [426.906 461.791 438.862 472.528] +/Subtype /Link +/A << /S /GoTo /D (page.36) >> +>> endobj +2014 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [443.01 461.791 454.965 472.528] +/Subtype /Link +/A << /S /GoTo /D (page.40) >> +>> endobj +2015 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [459.114 461.791 471.069 472.528] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +2016 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [475.218 461.791 487.173 472.528] +/Subtype /Link +/A << /S /GoTo /D (page.53) >> +>> endobj +2017 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [491.321 461.791 503.277 472.528] +/Subtype /Link +/A << /S /GoTo /D (page.58) >> +>> endobj +2018 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [507.425 461.791 519.38 472.528] +/Subtype /Link +/A << /S /GoTo /D (page.59) >> +>> endobj +2019 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [523.529 461.791 535.484 472.528] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +2020 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [367.392 449.836 379.347 460.186] +/Subtype /Link +/A << /S /GoTo /D (page.75) >> +>> endobj +2021 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.443 449.836 395.398 460.186] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +2022 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [436.882 437.88 448.837 448.729] +/Subtype /Link +/A << /S /GoTo /D (page.75) >> +>> endobj +2023 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [450.414 425.925 462.37 436.773] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +2024 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [440.23 413.97 452.186 424.818] +/Subtype /Link +/A << /S /GoTo /D (page.34) >> +>> endobj +2025 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [432.814 402.015 444.769 412.752] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +2026 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [469.62 390.06 481.575 400.908] +/Subtype /Link +/A << /S /GoTo /D (page.36) >> +>> endobj +2027 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [474.546 378.105 486.501 388.953] +/Subtype /Link +/A << /S /GoTo /D (page.53) >> +>> endobj +2028 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [466.244 366.149 478.199 376.998] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +2029 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.125 354.194 458.08 365.042] +/Subtype /Link +/A << /S /GoTo /D (page.40) >> +>> endobj +2030 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [426.892 342.239 438.847 353.087] +/Subtype /Link +/A << /S /GoTo /D (page.58) >> +>> endobj +2031 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [443.136 330.284 455.091 341.021] +/Subtype /Link +/A << /S /GoTo /D (page.59) >> +>> endobj +2032 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [444.797 318.329 456.752 329.066] +/Subtype /Link +/A << /S /GoTo /D (page.21) >> +>> endobj +2033 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [442.804 306.374 454.759 317.222] +/Subtype /Link +/A << /S /GoTo /D (page.21) >> +>> endobj +2034 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [416.265 294.418 428.22 305.267] +/Subtype /Link +/A << /S /GoTo /D (page.22) >> +>> endobj +2035 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [437.823 282.463 449.778 293.311] +/Subtype /Link +/A << /S /GoTo /D (page.24) >> +>> endobj +2036 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [397.612 270.508 409.568 281.356] +/Subtype /Link +/A << /S /GoTo /D (page.26) >> +>> endobj +2037 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.914 248.59 380.87 259.438] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +2038 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [474.546 236.635 486.501 247.483] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +2039 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [414.77 224.68 426.726 235.528] +/Subtype /Link +/A << /S /GoTo /D (page.36) >> +>> endobj +2040 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [469.62 212.725 481.575 223.573] +/Subtype /Link +/A << /S /GoTo /D (page.36) >> +>> endobj +2041 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [394.375 200.77 406.33 211.618] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +2042 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.125 188.814 458.08 199.663] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +2043 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.544 176.859 405.5 187.707] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +2044 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.125 164.904 458.08 175.752] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +2045 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [409.9 152.949 421.855 163.797] +/Subtype /Link +/A << /S /GoTo /D (page.21) >> +>> endobj +2046 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [425.951 152.949 437.906 163.797] +/Subtype /Link +/A << /S /GoTo /D (page.30) >> +>> endobj +2047 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.872 140.994 458.827 151.731] +/Subtype /Link +/A << /S /GoTo /D (page.30) >> +>> endobj +2048 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [442.804 129.039 454.759 139.887] +/Subtype /Link +/A << /S /GoTo /D (page.21) >> +>> endobj +2049 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [403.258 117.083 415.213 127.932] +/Subtype /Link +/A << /S /GoTo /D (page.30) >> +>> endobj +2050 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.872 105.128 458.827 115.866] +/Subtype /Link +/A << /S /GoTo /D (page.30) >> +>> endobj +2051 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [394.956 83.21 406.911 94.059] +/Subtype /Link +/A << /S /GoTo /D (page.22) >> +>> endobj +2052 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [411.007 83.21 422.962 94.059] +/Subtype /Link +/A << /S /GoTo /D (page.23) >> +>> endobj +2053 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [427.058 83.21 439.013 94.059] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +1942 0 obj << +/D [1940 0 R /XYZ 109.858 727.97 null] +>> endobj +1939 0 obj << +/Font << /F28 380 0 R /F8 369 0 R /F29 416 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2057 0 obj << +/Length 5179 +/Filter /FlateDecode +>> +stream +xÚµ][s·‘~ׯà#Y•™ nàQ’eKY)òŠtœªlŽÄcê¬yñJG±¼¿>ë E ™JÅ"­þº=€Æ¥ar2ÁÿÈ ™ô¨„:‘TŽZž|¸y2\Áßüð„x‰‘Q)øÑüÝ(í¿ý"þÇw‹ät2ÐQ+m$ÿïÉ?þ9\‚¶¿Škuò;ü<”ë“›'\è‘Jå¿~rþä¿£÷wò$ª* +÷pi¦Y +þŒí{vñäÏßS}b¿øåÄKx‹Ëœ¾º½ÜŸQ~úõìŸyòâ"jÓl”’c±òsjÔólì ªÇ)7¨ÔÚ’`r¤B`¦‚ÈÚ–:Ñ`ŠSLIÅNfp‹LÄÚº¸xv6Ó¿ww6Pyúá þñ뙘Owï¯ÏÈéÞüågTînïæßÿií!¥jäœDÝöS°÷é>ÇòkúIrH kÏ×Ú笈e 5ñ̇u˜‚ f-ÆI‘‘ð9‹ÓÅ™b§.Vw×ïwŸj± ZB‘ˆ¿,rH …w+íÆ;J‹XL ÅyæC /ƒZ ±˜õH4iÇâçƒ!ÈåáÊïzL#a:ªé¡‡C ´¤G®Ý†„•ô©‰f>”ôp2˜µ0FÎzÖÚ‹Óî÷6¶“\š`ì/KnÌtœ(ànxä@ ×VÚë ’À`:g>¬dPk\ŒTmï&¾¥—Dd³“,®UúÈâ@»‹´M:062êé`úB2‚>ý?ïÞín¯ö•8ˆqÒ<*è „C ´ŒD®Ýs +2󡌅“A­JP22™QÂtç_>ïnÜ|rµ?ÿðéîúzÿ©-à^KÇ`áÂ,ÆŠ\w#3$9Z§Ñð"ˆ©È ø““:3.«=|“ŒÀFxä@ ·VÚ[³.*2òÜ…bŒp"¨-ϡ帚IÏM—Ø¿|¾WzAæQÂ(äõt0‡Y0"×]¥ó8CÚš8P0‹ ¦#„ð x•ÿ~:?š üÿåç’# RË ©ƒ"8$ÈÂÍ\·ñRÒÚ°%'–yP0ÄË ÆE$ƒ¡Vùýp´YéÇ‹êdB':©£–†xä@ Ь´×#B HA–šúPÄË`Ö"Kg?{}ïÒ«çûëëÊpÁ ;Q¾g¸pÈ!–ÃE®Ý¶]”ÃHÁ ’úPŽNµØÀ§q–´œAî®ï>Áˆ¡Ow×ûãÑ¢2Z˜äME%=Ã…C ´/ríõ€Ph ™åˆád0k‘ °’D¦dpa¸ÝW1OÐÝhõd™9$Ð2Ë̵Û2Ë„…þÌ3Ê,ÓÉ Ö#Ì0=Ó{Ï!ŸëÔ€¥Â<‹¨­o!bC­-DRíõȘE†¡êCm!bd0k‘Õ¨ñÚþôúpu[Ï,بõé*´í ´6T¤ÚíT:׆ +mzFâCm¨Ð¶g Ö<1¸¦ÚH6Ï ?žÕW"”ò 4uÂ#‡Zb¥½›—BWH}(Háe0k\MŸzR\ïŽÐî7û[—/¶×¸ü¢²ÜDhÄ÷$9$Ð2³Èµ7R H@R +†xÔZ`ȬFÍÉS‹ eCj‘@[©Eêc;µH}h¦ˆµÈ1Ûå½cÇÝÎ0âp{õr¸úh˜q¬f›ˆèC ´¤F®½¾ÇG4'E2ʬÓÉ Ö5`]?±ÿÌ^hнa/4¶öBSÏÛ{¡©ͽPÄZ$ ¬ù'YægøópyüX§Ë4R¥#´o$1È!ÖF’T{‹. %HæCI'ƒZ tÅ>¡ÿ!ºxÝ[è²@›tI”Ç‚NµèA§QÉÇ8ý š6œþ$ÐÖéOêg•p²“úÐ<ýA¬EŠL +2uŒ"ïÌû’ÈÙæöAEÏV‹C ´Üjɵ7H¢@jR™åV‹“A­y’˜sœøp’MH’@[$Iýl“$õ¡IÄZ ‰¹æ3Mn÷óÉ?~3ùç¿™ IvÂuÛqUŠÌ”F}1È!Ö(’j·{’¤F¡xæC"Fµ(ëûI´(ò,l\w·õM|X*ÕôlÒ:ä@Ë]Ú\{=$”” ™å>­“Á¬E~À*Òž¦WÜ}ù-leØ (û¯•)F“ŒÐžÆ‡YN0™î/$1–yPÎ/N5¶ÒÓØ¥åö$dCs=ua¥Ý6¸+5'Ó°{ÔZè\Ûcä‡v¯fKGX ÍŽ8‰t„ćvGh[‹!a¬Î¼Û]îž…˜T.3›„NF%=·™rH åuæ\{#t)‘¹PÞg¶"˜­8.yqkëåá¶}_²cFùŽÞá‘C-¼YiolÝØ{û$ó¡è^µ¨0qÈ:ôÃ7o‚¢ ›7 ´µy“ºÙÞ¼I}hnÞ Ö!,c•/–»Ù]ÙÆ¿jÏ0)ë€é™ ,nX€åüjnM #Xj¾œœf)×Ò˜è8øÒßPÄìçºmSy91¸Í'¬©^3•k©7U»í‹þ¦z j?ÓÝ 4,fÁ‘¦ÂG ͘ҿ,k[)ƒï*1W#ŸëE”Ó$çrT³ÚP/XãZ{½/pRŒ õ’A³CR©—L.8n­F‚Áejmº«%«_\k¯wÎÝ%[¬Z2È`Öb$*Õ’]³‡ÉÍ”Ôô×K$VÁ¸Ö^ïTæV“ +­— 2˜5FÍAl^/§‰òªƒDDñyC…d@b5‹kíõžÁ¤¹u¬Ñ +É ƒZ[驎žÌ_`ÝÐ`D]Xi¯w¦A +¯õ"¨­\K½µf_‚«-­õH܃\{ý®5Ÿ@Š´¹Aµº{Y»e*è­ƒ]f‚fqêJ÷7ævì2 4MÅ`$…¦fî"Øeh—¥®µc@Š`—Y m-F+‚½Ï¦#Ÿ§qV´¿6‘âÔ•îFG1ãL…t»6ˆ ¦âœ¾ºýðiܲ(¤}zCl@b…©kíö6H9(â­‚ 2¨5ψJl³¹v¸uw†ÌxѼ%Ã¥gýÕ°ˆ”¨®t×ãÂm9§Àªaƒb*ð"­3}uþ}ñ̉˜¤i¡iþœ ‹ÏÉmž“qOŸßòÇd†  +He0fÊ9óê»WçOŸ½6_æ»òcL–ÜjC%n@bάµÛ{lÅõm èÆ*qÚìð5’Wìk,õ«ð5ÚŰák$^½|{Q-ÌÖØPÿ¨+íõ¯ÀHQ‰ÖÿÔZø3…þv¿ðbó%e­/‘xõÆt‰¿þôüíë·ïÊŽA§Q •úwߎᑘ7kíŽÁ@Š’Ì‡¢kx´íá“p=ÎìÛË=Î'Y”µ>IâÕ?™…æËßÕ +¦…}|+QyïäÛ!QoVÚŸF4n £ÊäÛÉ ÖÂ'a™o÷/ö8ŸdQÖú$‰W禗¼~ñü¢þQø$É$õðÞˆCbþ¬µ·&"<ó¡œBœ ÚúðQ(L7Ô÷“ãîÚä3ª÷•¬,&N#¢ƒ’9$П•vÛú¹Ür)“Î$>·—A­…40{kÞæyßÛ§nM­~ZâR 'óÈÍ ætPÁ#‡ZPa¥½ NAÊ ™‰¼ f-Ra"£"ÊSaƒ@J>E"¨gwÈ!–Óx®Ý¸Ä+Ó¸9ä™å4îdPk+=íXO3º¥Á‰º°ÒnWy¤6"-ÐÔš§?‡†«¹R +rwc"€»gö©¸¯íEŽ °œ"Q[G_ðÈ!}a¥½Nnê$Ë|("ãe0k12æuÉI5÷F>+#l4õÎÙ³/bC‚,·E2Ý vp×ÅSÊ]'ƒ ãŸÍMG–•]`sŸ^,Ò=Ó‚C ´œríõw:Ø R”d>”Ó‚“A­…¯ïŸÇxØ &œi{ƒ.hëa„C ´¤D®½n*_&•ùPrÂÉ`Ö"'Ìý7N3NØ'ͶØîöóovl.ÙLâS:R™A)0qÑØ3ƒ:ä@Ë4×^{“SjžÏJ]('P+‚ÙŠ¬åɤd÷óŠ&]£3‰øžH8ä@ËHäÚ[‘)Ê3ÊP8ÌZäɤF2»4î¿ö˜ÎóñðË©nRÛæéÉ$rH e&‘k·Ûd•LÂÐEg>”™„“A­y*˜Ó JòÊ¡7ö./á§×‡0fTf +}pQг·À!A–+ñLw=vªYyP.Ä f,0Áœ¬Q'îõÎ>fcþq÷åX=PÔ°HߢA ´v ˜j¯šÚƒ@M3ªŠæ2fm¥§y ¨Õ–ö: ê@®»q|ªAˆ3¼µ^5x?S˜”|×"¨Ùp–@[Gl©“í3¶Ô‡æ!b-†D€¿Í+‰í¤Ú¼=+À{’‡h™<äÚë}ÁŒH™ùP&N³‡ó.‰çõþ—Ê ¨ÝÍ ‚=¹¤C ´Ì%sív&Ôå R3Í|(sI'ƒZ ß߬ÀeåûûÇ4ìuíë765¸:Ü~®.¯˜Zõ-¯ rH µåUª½»tâsæCuye.u Ö"&> +á’Ö7»_m¡àߟË{<•±RÚ‰<@{K‡h9ZæÚí*³rùBÚ¬2õ¡. jm¥§:9ð &ÙYnhp@b.¬µ7–”¤Ìœ‰48È  ö!­Øí[V÷W‡e5RÚ»Ò/«±:⸬FŒÅTêˆã¡oߟ Bœþo­ÞËÚZn(!H¬¨w­½ÞÌpOg´‚Ø‹`¶Â0æÆ°’‚Ýí.H¬lw­Ýf¢L Ũ”B‹„ƒ jm¥§‘’Q›ÿ’Jƒ=ua¥½þ¼Óæõu7ØË Öë“Rä ÍÛË+Dn¨–H¬‚y­½Îó~¥€ V/d0k1$•zé{¼¼b–á–BÝ…Ò‰•.¯µ×Ùa %Ð:i/‚ÙŠÃ@R‡Œ$Bl6E bCQt@beÊkí6’µc³©ŽEÔÚJOc€¡iš·4Ø#QVÚí€?׎=Ô¬ñ{ÔZ }¥ +ü©ÉúW·7îÙÛ¢º’›÷ɆBð€ÄJ³×ÚëL€ÆŒà Áƒ f-&©³Îv÷_o!11hì™'1'¹¡< ±òìµö:WÌ©–h-¸Ál…Q!-±~³3e?ûí‡pQŸ_ÚŸÍŽš·’HëqzöW„$V£½Ö^¶“b­2˜µÀ–´äú±ž7µKyJ6‹$V¾½ÖÞˆ“¹ðbñ ƒY‹$Jê°ý|0OZ?V¸£FʶT‹$V¿½ÖncR.¾ H™7jñ ƒY‹ÜIª”;ÝõÕ wÚÏkí8î õÕ wÚÖ"w’ÒeÇX †×›ŒaZ’Ë eÕ‰:¯µ7NÃ'ói@«ª½j+ð¥UT½é–@uu¼%€T<¯µã·°òêxK±BÍ­„ ç‡ÿoì^I21DÏ— ²Ì%3Ýõ1æmO(¸üÛ@ ÂF*ÅÃËæ‚¢ es ´U6—ºÙ.›K}h–Í!Ö"&`MØð7“¾í®¿´÷4MmƒyþÀ!; 'ì›Y­›XtÛu­–Mž:P­š0Ç ˆ)Ï +¥G6‹G+šðê6M,ÈVÑDâj•P‘8PÛë™íƒÝféSIÌJši™2ÿ·Ä¿endstream +endobj +2056 0 obj << +/Type /Page +/Contents 2057 0 R +/Resources 2055 0 R +/MediaBox [0 0 612 792] +/Parent 2054 0 R +/Annots [ 2059 0 R 2060 0 R 2061 0 R 2062 0 R 2063 0 R 2064 0 R 2065 0 R 2066 0 R 2067 0 R 2068 0 R 2069 0 R 2070 0 R 2071 0 R 2072 0 R 2073 0 R 2074 0 R 2075 0 R 2076 0 R 2077 0 R 2078 0 R 2079 0 R 2080 0 R 2081 0 R 2082 0 R 2083 0 R 2084 0 R 2085 0 R 2086 0 R 2087 0 R 2088 0 R 2089 0 R 2090 0 R 2091 0 R 2092 0 R 2093 0 R 2094 0 R 2095 0 R 2096 0 R 2097 0 R 2098 0 R 2099 0 R 2100 0 R 2101 0 R 2102 0 R 2103 0 R 2104 0 R 2105 0 R 2106 0 R 2107 0 R 2108 0 R 2109 0 R 2110 0 R 2111 0 R 2112 0 R 2113 0 R 2114 0 R 2115 0 R 2116 0 R 2117 0 R 2118 0 R 2119 0 R 2120 0 R 2121 0 R 2122 0 R 2123 0 R 2124 0 R 2125 0 R 2126 0 R 2127 0 R 2128 0 R 2129 0 R 2130 0 R 2131 0 R 2132 0 R 2133 0 R 2134 0 R 2135 0 R 2136 0 R 2137 0 R 2138 0 R 2139 0 R 2140 0 R 2141 0 R 2142 0 R 2143 0 R 2144 0 R 2145 0 R 2146 0 R 2147 0 R 2148 0 R 2149 0 R 2150 0 R 2151 0 R 2152 0 R 2153 0 R 2154 0 R 2155 0 R 2156 0 R 2157 0 R 2158 0 R 2159 0 R 2160 0 R 2161 0 R 2162 0 R 2163 0 R 2164 0 R 2165 0 R 2166 0 R 2167 0 R 2168 0 R 2169 0 R ] +>> endobj +2059 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.445 690.167 239.4 701.016] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +2060 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.585 678.212 209.54 689.06] +/Subtype /Link +/A << /S /GoTo /D (page.22) >> +>> endobj +2061 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [219.143 666.257 231.098 677.105] +/Subtype /Link +/A << /S /GoTo /D (page.23) >> +>> endobj +2062 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [161.027 654.302 172.983 665.15] +/Subtype /Link +/A << /S /GoTo /D (page.23) >> +>> endobj +2063 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.585 642.347 209.54 653.195] +/Subtype /Link +/A << /S /GoTo /D (page.23) >> +>> endobj +2064 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.098 630.392 206.053 641.24] +/Subtype /Link +/A << /S /GoTo /D (page.36) >> +>> endobj +2065 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [250.94 618.436 262.895 629.285] +/Subtype /Link +/A << /S /GoTo /D (page.36) >> +>> endobj +2066 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.511 606.481 162.466 617.329] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +2067 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.739 594.526 227.694 605.374] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +2068 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.744 582.571 196.699 593.419] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +2069 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.182 570.616 213.138 581.464] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +2070 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [152.448 549.694 164.404 560.542] +/Subtype /Link +/A << /S /GoTo /D (page.75) >> +>> endobj +2071 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [218.202 537.739 230.157 548.587] +/Subtype /Link +/A << /S /GoTo /D (page.75) >> +>> endobj +2072 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.505 525.784 171.46 536.632] +/Subtype /Link +/A << /S /GoTo /D (page.71) >> +>> endobj +2073 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [219.669 513.829 231.624 524.677] +/Subtype /Link +/A << /S /GoTo /D (page.71) >> +>> endobj +2074 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.002 501.874 164.957 512.722] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +2075 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.005 489.918 252.961 500.656] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +2076 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.016 477.963 190.971 488.811] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +2077 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.182 466.008 213.138 476.856] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +2078 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.122 454.053 192.078 464.901] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +2079 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.445 442.098 239.4 452.946] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +2080 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.292 430.143 191.247 440.991] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +2081 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.445 418.187 239.4 429.036] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +2082 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.733 406.232 184.689 417.08] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +2083 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.55 394.277 233.506 405.125] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +2084 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.662 382.322 181.617 393.059] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +2085 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.713 382.322 197.668 393.059] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +2086 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.764 382.322 213.719 393.059] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +2087 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.815 382.322 229.77 393.059] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +2088 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.538 370.367 229.493 381.104] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +2089 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [202.954 358.412 214.909 369.26] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +2090 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.212 346.456 220.167 357.305] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +2091 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.739 334.501 227.694 345.349] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +2092 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.771 322.546 159.727 333.394] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +2093 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.739 310.591 227.694 321.439] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +2094 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [154.898 289.669 166.853 300.517] +/Subtype /Link +/A << /S /GoTo /D (page.76) >> +>> endobj +2095 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [235 277.714 246.955 288.562] +/Subtype /Link +/A << /S /GoTo /D (page.76) >> +>> endobj +2096 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.396 265.759 204.351 276.607] +/Subtype /Link +/A << /S /GoTo /D (page.25) >> +>> endobj +2097 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [156.254 253.804 168.209 264.541] +/Subtype /Link +/A << /S /GoTo /D (page.77) >> +>> endobj +2098 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [235 241.849 246.955 252.697] +/Subtype /Link +/A << /S /GoTo /D (page.77) >> +>> endobj +2099 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [166.355 229.893 178.31 240.742] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +2100 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.005 217.938 252.961 228.676] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +2101 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.349 205.983 187.304 216.831] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +2102 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.005 194.028 252.961 204.765] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +2103 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.625 182.073 187.581 192.921] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +2104 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [228.192 170.118 240.147 180.855] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +2105 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.074 158.162 179.029 169.011] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +2106 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.125 158.162 195.08 169.011] +/Subtype /Link +/A << /S /GoTo /D (page.37) >> +>> endobj +2107 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [228.192 146.207 240.147 156.945] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +2108 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.791 134.252 265.746 145.1] +/Subtype /Link +/A << /S /GoTo /D (page.37) >> +>> endobj +2109 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [134.322 113.331 146.277 124.068] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +2110 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.739 101.375 227.694 112.224] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +2111 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [165.594 80.454 177.549 91.302] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +2112 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.645 80.454 193.6 91.302] +/Subtype /Link +/A << /S /GoTo /D (page.34) >> +>> endobj +2113 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.695 80.454 209.651 91.302] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +2114 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.872 690.167 458.827 700.905] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +2115 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [435.803 678.212 447.758 689.06] +/Subtype /Link +/A << /S /GoTo /D (page.34) >> +>> endobj +2116 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [434.419 666.257 446.374 677.105] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +2117 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.85 654.302 375.805 665.039] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +2118 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.901 654.302 391.856 665.039] +/Subtype /Link +/A << /S /GoTo /D (page.34) >> +>> endobj +2119 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [395.952 654.302 407.907 665.039] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +2120 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.872 642.347 458.827 653.084] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +2121 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [435.803 630.392 447.758 641.24] +/Subtype /Link +/A << /S /GoTo /D (page.34) >> +>> endobj +2122 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [459.685 618.436 471.64 629.174] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +2123 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [377.383 606.481 389.338 617.219] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +2124 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [474.546 594.526 486.501 605.374] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +2125 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [404.741 582.571 416.696 593.308] +/Subtype /Link +/A << /S /GoTo /D (page.18) >> +>> endobj +2126 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.268 570.616 387.224 581.353] +/Subtype /Link +/A << /S /GoTo /D (page.18) >> +>> endobj +2127 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [419.962 558.661 431.917 569.398] +/Subtype /Link +/A << /S /GoTo /D (page.18) >> +>> endobj +2128 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [394.502 546.705 406.457 557.443] +/Subtype /Link +/A << /S /GoTo /D (page.18) >> +>> endobj +2129 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [406.955 534.75 418.91 545.488] +/Subtype /Link +/A << /S /GoTo /D (page.18) >> +>> endobj +2130 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [356.046 522.795 368.001 533.643] +/Subtype /Link +/A << /S /GoTo /D (page.16) >> +>> endobj +2131 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [415.462 510.84 427.417 521.577] +/Subtype /Link +/A << /S /GoTo /D (page.16) >> +>> endobj +2132 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [378.185 498.885 390.14 509.733] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +2133 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [394.236 498.885 406.191 509.733] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +2134 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [450.414 486.93 462.37 497.778] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +2135 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [432.814 474.974 444.769 485.712] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +2136 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [357.762 463.019 369.717 473.757] +/Subtype /Link +/A << /S /GoTo /D (page.71) >> +>> endobj +2137 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [438.349 451.064 450.304 461.912] +/Subtype /Link +/A << /S /GoTo /D (page.71) >> +>> endobj +2138 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [411.782 439.109 423.737 449.846] +/Subtype /Link +/A << /S /GoTo /D (page.22) >> +>> endobj +2139 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [416.265 427.154 428.22 438.002] +/Subtype /Link +/A << /S /GoTo /D (page.22) >> +>> endobj +2140 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.82 405.236 383.775 416.084] +/Subtype /Link +/A << /S /GoTo /D (page.58) >> +>> endobj +2141 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [422.934 393.281 434.889 404.018] +/Subtype /Link +/A << /S /GoTo /D (page.58) >> +>> endobj +2142 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.933 371.363 375.888 382.1] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +2143 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.984 371.363 391.939 382.1] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +2144 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.872 359.408 458.827 370.145] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +2145 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [436.218 347.453 448.173 358.19] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +2146 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [351.203 335.497 363.158 346.346] +/Subtype /Link +/A << /S /GoTo /D (page.29) >> +>> endobj +2147 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [450.387 323.542 462.342 334.39] +/Subtype /Link +/A << /S /GoTo /D (page.29) >> +>> endobj +2148 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [386.82 301.624 398.775 312.473] +/Subtype /Link +/A << /S /GoTo /D (page.44) >> +>> endobj +2149 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [402.87 301.624 414.826 312.473] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +2150 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [432.814 289.669 444.769 300.407] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +2151 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [436.301 277.714 448.256 288.562] +/Subtype /Link +/A << /S /GoTo /D (page.44) >> +>> endobj +2152 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [364.929 265.759 376.885 276.496] +/Subtype /Link +/A << /S /GoTo /D (page.35) >> +>> endobj +2153 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [380.98 265.759 392.936 276.496] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +2154 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [469.62 253.804 481.575 264.652] +/Subtype /Link +/A << /S /GoTo /D (page.35) >> +>> endobj +2155 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [426.892 241.849 438.847 252.697] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +2156 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.859 229.893 380.814 240.631] +/Subtype /Link +/A << /S /GoTo /D (page.27) >> +>> endobj +2157 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [384.91 229.893 396.865 240.631] +/Subtype /Link +/A << /S /GoTo /D (page.46) >> +>> endobj +2158 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [452.075 217.938 464.03 228.786] +/Subtype /Link +/A << /S /GoTo /D (page.27) >> +>> endobj +2159 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [432.011 205.983 443.966 216.831] +/Subtype /Link +/A << /S /GoTo /D (page.46) >> +>> endobj +2160 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [408.073 194.028 420.028 204.876] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +2161 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.125 182.073 458.08 192.921] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +2162 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [407.243 170.118 419.198 180.966] +/Subtype /Link +/A << /S /GoTo /D (page.39) >> +>> endobj +2163 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.125 158.162 458.08 169.011] +/Subtype /Link +/A << /S /GoTo /D (page.39) >> +>> endobj +2164 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [397.751 146.207 409.706 157.055] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +2165 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [450.414 134.252 462.37 145.1] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +2166 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [370.16 122.297 382.115 133.034] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +2167 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [434.419 110.342 446.374 121.19] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +2168 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [377.355 98.387 389.31 109.235] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +2169 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [474.546 86.431 486.501 97.28] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +2058 0 obj << +/D [2056 0 R /XYZ 109.858 727.97 null] +>> endobj +2055 0 obj << +/Font << /F29 416 0 R /F8 369 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2172 0 obj << +/Length 5092 +/Filter /FlateDecode +>> +stream +xÚµ]]sÞÆ­¾÷¯Ð¥<îá~\^ÖNÚ¸7­­Ót¦§ŠõÖV,¥Ö›ÆÓ__`¿ˆåî¢YF™LdÉ€xb±à‚–#ü'/ä¸ +;Ù‹E-b].Þ}|6^¼‡ßüî™ ƒ–ÂZø'÷·Ÿ@$|ûf“/%V»¢ä?ŸýõoãÅ hû= Ìj/~‚ïG¡Ìzññ™™V¡~¾{ööÙŸ’ÿ»å"©*Š?Ã¥aÁ˲ðgº¾WÏþç·j½p?_ýý"H«›¿^¾º¿9=Wæòóó¿]ýþÙWWI۪Ų.VA¢bΊužÑÞ¤V1æíº·4éE¨iâLE‘½-{±‚)¦â‡;ƒ[r”ÎÖëëÏÏååŸoŸòò¾ýþîôê|úˆ?>~±÷CÚUH¹$ .àúÂÿ¿ø o?ÒÀGä@ …;í蟱…+lÍ|Ø#ʰÖvzÐZqÁjœ„œ\pDr.ìµ£ ³,| ¥Ùë "ìåÏ j¬ÒÌÎÖÕÕ üœÿò\ÙË—Ÿ«åòûç|}xñ€÷˜€˸h%-“¶Ž¸ä@ E\vÚëDPF ¸à̇"0A†³–"3ýVYFæÇÇóÃÇonÏ_´>š€ìˆBüÀ6d„\wƒjãš{PÄ ÈpÆRj˜ ‹è‰¤†ïnoàëùC™ f-Ô¼&HG.È@ ‡vÚë—/Ò*ó¡ÈA†µ)`&¡ìxà$`ëóß\b>þÍ|ûÓoZJ¾ÖB«ðáãZpÿòîöt8}º}ÿÁ}WY¬0“JðžEÁ#-…\;:§×rQ)9e>”‹‚—a­E"()ô’áË—ßa–üÿçÓ|yýýÄÈ%È?bd®ïãø÷%S˜72ªî J²àJ®»#¥Ah4Ô‚,A„1•Èb4kdù~¼½9¨…AÚEÌJ%|[”Ͻ g-­ +ØÁÖ²²*¼r' ®ßŸ^ÝßÄFýç*CÐqÐUu†»,Z Ñîšpk-,JÍ™µ°  km§§ž3¡Ð×Ò¹à€d]Øiw·„ªm#ðÈ{ÁA†³–n Û¹å©EDmú±ÚêÇR_+T½VêC³ËXK‘‘FLêÈ¡ˆˆìo9d£å@½ª°#´¨Í–c,e‰Q‰iž¶,ñòúîFâÕGHooÿÝØv®Ý§„p ȲÊt£gK¥Ž!Œñ ,¤¼ k,pA­£˜[T¸re4Ü(öòáîXM_ß¹¸œ±I]2PÌQoÏÚêpÃ,WVª¹ž d”¦æËeÕ‹0–"IÔòóDIâî⃋—ñ1ï­\iT£%)éiT{ä@ e£:×^‡ÛŒ¬™ eŸÚ‰°¶"WæY,¿UœÚL‰¸Q’» O’í6MZfK&#CYòáúþý©úäÂÚ)É÷=¹@ä@ µ'T»; kO.¬±™µ'(ÃZÛéi>¹Xõ|ä‚’w!×î.x©=¹°ëÊ_pa­íô46ÚZ¬v9rÁɺ°ÓîÊérg1‚ÔÄ^oálí´47Ú£¶®6"YvÚ[eH’¿Ü ÃZÛéiTɳízä‚’w!×ÞH\¤&Å_paÉs:ÔKë¹ôË'¿¸…*¹’Áa‹*ר¥'‡{à°!Ë,žé®ç3Ü#[+©µm4Š0¦R0ô(¬6 +ãˆì/Œ ²QS¯Ú…1õ Y3ÆR ¤¶Éˆ7×7·/°Ãr>?ÜWŽ'á0E%=ÇăvõÓ6C„ àuÎã²`^Åp4[Pn¥‰JzZ-~#ÈÆ*F¬,˜„¤Ê<(-^†3ËAi5ì¾ )=%\3²ÙgÀs‡Ë8'tO­ä‘–µR®½ÞgV‰y¶™e­äeXk;=õZÉZ¸—#¼ ¹özîÄÓã ,1ìÖZ¼ *§§:µh9h«åD}m·œ¨Í–c-EfZ…œr‰Èþ•• ++õª½²Rš++c,%³i,I þ‰ö¿ð‹ãfˆsu(6vÞ7“ƒ»F‚¬äÝ.CšÚDŽÅpj9ÖE1É !ú«~²ÃQßÃÚ: I½-c:Rš‡!k‰$ +'›I¾ôåE:@¦Ü¼9=Þþ;ÎvÞ¿¯ ÑèyÐÕw&D»¸lÐÚ¡ªÝ%Y;¢ÕœùP;‚2¬µÈ)…²úW™Çˆº dhk"ƒz^‰S˜· >4g2k‘?ë +!¥ôùt‘ø‰t.Óc° +q`ã¸F=´q¸a–¤¡š]]Z®9#n[55_2Æ‹p–að4ꢞ¾nzûËö Ø¨Ú‰Ç•à„‚œ˜ßg†•È=±«Íúå´?ž< +*m«½M®˜t>Vžñ©M" ùa†Z¹¼:"¹‘ç½öú¡™e‚7_eXkðɘ™°æÏ_œß‡’±¢:"¹ç½öF(p=^v¢:ÊpÖ#ÈìrΈVô*ºæÀDuDrSÎ{íõzÖŒR :7Se8k{=Õ­Mb_÷oœä\ȵ׋W#—ìãª^paÃï2³}|kc&Ÿ”æË#’›øÞkoPG<ÍΗGÎZŠL÷|¹ÑX+÷Ï—3õkn0Ãøñ f¾<Š0–R: #Ü!<üàËVL +ŽûZí¥±‘‚CÙÝæÉ|ïµ»Na‰¤ ÛqæQ†µ™P˜oLp?ÇÆi-"˜„ílûgÉ#ðÞén„¸nµäfÉ£c*ƒLk;büît&Eè×·÷õAa3ŽX õ’ 7Û½Ó]¯´ð8ö´f/3§—áŒEVTÉY!jfÈI¦Š<à˜Éî\s#< ÈŒš›!"Œ¥È:°]aIþ£/j•Ì¡òˆäƼ÷ÚñP %v¨<ÊpÖ]Ø¡ò_—îqóD˜öü÷N÷¡ 3l¾q¦m,‘†Ìu'Ò<Ü=|zuÿwøé¡’S`owiÿ°yDrà{í.KÉUã^BÆ›GÎZâIkÜÜ?¹Åp¼ÝJ–Œ˜—ùÀ˜yDrƒß{íˆÌÆý–32œµD 2ÑíhËЗwxFËVÎhéuj’FÍ#’þÞkwı¶àá6Ž52¬µHŒÖ¨ù¡J½ЗߊޟÛeš.ÿqzw®?Ált>q¹rƒV‡í`š3jOCð©4c+‘Câ‹ÆäøÆûÚŽxTÙÕ|TÓÇDZcÕÞfÇl–̇;P†³–Ø1ÎîYÒqvGرA›ì îµÙA\h²£m+²»ÐJv„C §;nG +÷Žíë‹+ÿæ„­õÅ©öúp2ö¼ìE¨µ¾8ʰÖ%´U`uþ#ÛfF*«¤©§‡å‘–M¬\{#* Þ&ó¡ìbyÎZbÈj)+ìøò{ø‰áˆKÖËœ4ôµ=9h­íIµ»hØZÛSê5ó¡ÖöDÎZâÈd…žž„#AÓŽlÐ&GˆŸ•¨DŽÚi[K1øJ*‘·çÓeÎÀ&,ú¤;rF@Zø²Ó^?§±‹WN|(ÎÖZäƒ6Â4›üü3‚f™Äd6}¬È@ Vì´×cc\×Ê|(Xd8k‰°O3ô†{*^gpö ØwlšQƒª)©ê©<”«Q8J™ ïe6h“2Ä[†2ć6eÚÖ"eÔ +’îÆÕÿÏœpV_.Öxtšaá} ‡ Y[gˆn÷Œ@×–#gê@m•AÆTdˆ²³˜UÎ|HòÓíÙ"ý6rÕŸâMkÒÒÓùðÈ@ËÎG®½à‚}õ¡l}xÎZâÅ‚Oj6^„¤ñc ÄK IušÙŒICOñÀaC–ù#Óín‘©ö@ÍþmÔž§ùÑ¿¦©DY‰E>]òˆú$m%êm%2!1PšÉƒ±–H2¯s›$~½¯&,Bçêí… íÀг![ ñ´F¿–šËMÛT"Œ¶ÂŽæéô!Ìm†xˆøÐ&LÛZ"Œš… ǾÅ\z{òÁðÁÚõù¶~J[œV6 ÝQÆä@ …o;íî ÔTÛ~/ã’ùP”±A†µ¶ÓÓ8' +‚SöÝ‘œ {íõéG\…—ɲeØ Ž·¦Üµu[ø-îûÓÛwŸîîN•~)nŽä’ÔôÜ 9hy7äÚë0Ê©eÍ|(ï/ÃYK!•Xw'5~ƻٌZ`ñ² ÞSnxä@ e¹‘ko°C/8F](« 'ÂÙŠiAZ)Æð†'Ï„»Óù|ús%&…ÇJ7luG°"²§æ‘–7i®½qL'kä’ùPvü k-ÐAΫç_á@`TÜÀ‹ ¼¨Ó•…Ã[Ôƒæ/ÆX"Ê´))Q²A®ú‹ñ-‰Ë"¸§ â‘–]\»ëÿÌe‡kuæCÙñ2¬µÈ3 ù$]±¨é@WŒ@[]1êg•Øñ¢>4»bŒµD­…"äxtø ¿øtã_Àô©’KðM2 {2‰Ç XæªÙeÒ2#,nö5Z/sˆ—`ìDV( ÷ätð… ø”Ÿ(éYVp ÈÚ ‚ƒ•Ph%¦Ue”«Š—áŒ%:àû4×·Ís^Ý¿Ñ =)‡ YfˆL·«-* „à·Ä2?xÎT Nâ6^?»Ö +Z”Z²UiË`Ä"Š8Ь³Ú¦" `¦‘ Îÿ7Jó¹N¬Î#¤‡7$`Iª¹þïçh׌Äzíý4Ö¿5Óõ/*2X¿é5þÉá—ÿïÉVØendstream +endobj +2171 0 obj << +/Type /Page +/Contents 2172 0 R +/Resources 2170 0 R +/MediaBox [0 0 612 792] +/Parent 2054 0 R +/Annots [ 2174 0 R 2175 0 R 2176 0 R 2177 0 R 2178 0 R 2179 0 R 2180 0 R 2181 0 R 2182 0 R 2183 0 R 2184 0 R 2185 0 R 2186 0 R 2187 0 R 2188 0 R 2189 0 R 2190 0 R 2191 0 R 2192 0 R 2193 0 R 2194 0 R 2195 0 R 2196 0 R 2197 0 R 2198 0 R 2199 0 R 2200 0 R 2201 0 R 2202 0 R 2203 0 R 2204 0 R 2205 0 R 2206 0 R 2207 0 R 2208 0 R 2209 0 R 2210 0 R 2211 0 R 2212 0 R 2213 0 R 2214 0 R 2215 0 R 2216 0 R 2217 0 R 2218 0 R 2219 0 R 2220 0 R 2221 0 R 2222 0 R 2223 0 R 2224 0 R 2225 0 R 2226 0 R 2227 0 R 2228 0 R 2229 0 R 2230 0 R 2231 0 R 2232 0 R 2233 0 R 2234 0 R 2235 0 R 2236 0 R 2237 0 R 2238 0 R 2239 0 R 2240 0 R 2241 0 R 2242 0 R 2243 0 R 2244 0 R 2245 0 R 2246 0 R 2247 0 R 2248 0 R 2249 0 R 2250 0 R 2251 0 R 2252 0 R 2253 0 R 2254 0 R 2255 0 R 2256 0 R 2257 0 R 2258 0 R 2259 0 R 2260 0 R 2261 0 R 2262 0 R 2263 0 R 2264 0 R 2265 0 R 2266 0 R 2267 0 R 2268 0 R 2269 0 R 2270 0 R 2271 0 R 2272 0 R 2273 0 R 2274 0 R 2275 0 R 2276 0 R 2277 0 R 2278 0 R 2279 0 R 2280 0 R 2281 0 R 2282 0 R 2283 0 R 2284 0 R 2285 0 R 2286 0 R 2287 0 R 2288 0 R ] +>> endobj +2174 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.12 690.167 200.075 701.016] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +2175 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.171 690.167 216.126 701.016] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +2176 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.735 678.212 243.69 689.06] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +2177 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.134 666.257 226.089 676.995] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +2178 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [162.273 654.302 174.228 665.15] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +2179 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.134 642.347 226.089 653.084] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +2180 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.456 630.392 199.411 641.24] +/Subtype /Link +/A << /S /GoTo /D (page.39) >> +>> endobj +2181 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.445 618.436 239.4 629.285] +/Subtype /Link +/A << /S /GoTo /D (page.39) >> +>> endobj +2182 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.626 606.481 198.581 617.329] +/Subtype /Link +/A << /S /GoTo /D (page.39) >> +>> endobj +2183 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.445 594.526 239.4 605.374] +/Subtype /Link +/A << /S /GoTo /D (page.39) >> +>> endobj +2184 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [161.166 582.571 173.121 593.419] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +2185 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.538 570.616 229.493 581.353] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +2186 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.134 558.661 189.089 569.509] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +2187 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.735 546.705 243.69 557.554] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +2188 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [156.738 534.75 168.693 545.598] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +2189 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [255.866 522.795 267.822 533.643] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +2190 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [160.336 510.84 172.291 521.688] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +2191 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [176.386 510.84 188.342 521.688] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +2192 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.538 498.885 229.493 509.622] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +2193 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.134 486.93 226.089 497.667] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +2194 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [155.409 474.974 167.365 485.712] +/Subtype /Link +/A << /S /GoTo /D (page.59) >> +>> endobj +2195 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [224.456 463.019 236.411 473.757] +/Subtype /Link +/A << /S /GoTo /D (page.59) >> +>> endobj +2196 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.133 441.101 152.089 451.839] +/Subtype /Link +/A << /S /GoTo /D (page.16) >> +>> endobj +2197 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.782 429.146 208.737 439.884] +/Subtype /Link +/A << /S /GoTo /D (page.16) >> +>> endobj +2198 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.556 407.228 224.512 418.077] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +2199 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.005 395.273 252.961 406.011] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +2200 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.41 383.318 189.366 394.166] +/Subtype /Link +/A << /S /GoTo /D (page.18) >> +>> endobj +2201 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [193.461 383.318 205.417 394.166] +/Subtype /Link +/A << /S /GoTo /D (page.58) >> +>> endobj +2202 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.512 383.318 221.468 394.166] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +2203 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.538 371.363 229.493 382.1] +/Subtype /Link +/A << /S /GoTo /D (page.18) >> +>> endobj +2204 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.005 359.408 252.961 370.145] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +2205 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.212 347.453 220.167 358.301] +/Subtype /Link +/A << /S /GoTo /D (page.58) >> +>> endobj +2206 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.267 335.497 220.222 346.346] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +2207 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [224.318 335.497 236.273 346.346] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +2208 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.735 323.542 243.69 334.39] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +2209 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.134 311.587 226.089 322.325] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +2210 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [191.054 299.632 203.009 310.48] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +2211 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.564 287.677 259.519 298.525] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +2212 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.531 275.722 179.486 286.57] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +2213 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.564 263.766 259.519 274.615] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +2214 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [160.889 251.811 172.844 262.659] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +2215 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [176.94 251.811 188.895 262.659] +/Subtype /Link +/A << /S /GoTo /D (page.37) >> +>> endobj +2216 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.991 251.811 204.946 262.659] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +2217 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.042 251.811 220.997 262.659] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +2218 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.093 251.811 237.048 262.659] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +2219 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [240.922 239.856 252.877 250.704] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +2220 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.134 227.901 226.089 238.638] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +2221 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.791 215.946 265.746 226.794] +/Subtype /Link +/A << /S /GoTo /D (page.37) >> +>> endobj +2222 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.564 203.991 259.519 214.839] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +2223 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [202.954 192.035 214.909 202.884] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +2224 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.71 180.08 183.665 190.928] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +2225 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.76 180.08 199.716 190.928] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +2226 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.735 168.125 243.69 178.973] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +2227 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.134 156.17 226.089 166.907] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +2228 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [162.854 144.215 174.809 154.952] +/Subtype /Link +/A << /S /GoTo /D (page.54) >> +>> endobj +2229 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [255.866 132.26 267.822 143.108] +/Subtype /Link +/A << /S /GoTo /D (page.54) >> +>> endobj +2230 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.367 120.304 208.322 131.153] +/Subtype /Link +/A << /S /GoTo /D (page.41) >> +>> endobj +2231 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.445 108.349 239.4 119.197] +/Subtype /Link +/A << /S /GoTo /D (page.41) >> +>> endobj +2232 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.094 96.394 207.049 107.242] +/Subtype /Link +/A << /S /GoTo /D (page.79) >> +>> endobj +2233 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.564 84.439 259.519 95.287] +/Subtype /Link +/A << /S /GoTo /D (page.79) >> +>> endobj +2234 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [396.616 690.167 408.571 700.905] +/Subtype /Link +/A << /S /GoTo /D (page.18) >> +>> endobj +2235 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [436.218 678.212 448.173 688.95] +/Subtype /Link +/A << /S /GoTo /D (page.18) >> +>> endobj +2236 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.528 666.257 402.483 676.995] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +2237 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [406.579 666.257 418.534 676.995] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +2238 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [450.414 654.302 462.37 665.15] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +2239 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [432.814 642.347 444.769 653.084] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +2240 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.987 630.392 405.942 641.129] +/Subtype /Link +/A << /S /GoTo /D (page.32) >> +>> endobj +2241 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.872 618.436 458.827 629.174] +/Subtype /Link +/A << /S /GoTo /D (page.32) >> +>> endobj +2242 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.563 606.481 411.519 617.329] +/Subtype /Link +/A << /S /GoTo /D (page.79) >> +>> endobj +2243 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [466.244 594.526 478.199 605.374] +/Subtype /Link +/A << /S /GoTo /D (page.79) >> +>> endobj +2244 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [409.858 582.571 421.813 593.419] +/Subtype /Link +/A << /S /GoTo /D (page.79) >> +>> endobj +2245 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [466.244 570.616 478.199 581.464] +/Subtype /Link +/A << /S /GoTo /D (page.79) >> +>> endobj +2246 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [404.019 558.661 415.974 569.509] +/Subtype /Link +/A << /S /GoTo /D (page.77) >> +>> endobj +2247 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [453.68 546.705 465.635 557.554] +/Subtype /Link +/A << /S /GoTo /D (page.77) >> +>> endobj +2248 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.255 534.75 401.21 545.598] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +2249 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [450.414 522.795 462.37 533.643] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +2250 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [412.031 510.84 423.986 521.688] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +2251 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [428.082 510.84 440.037 521.688] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +2252 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [450.414 498.885 462.37 509.733] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +2253 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [432.814 486.93 444.769 497.667] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +2254 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [411.2 474.974 423.156 485.823] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +2255 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [427.251 474.974 439.207 485.823] +/Subtype /Link +/A << /S /GoTo /D (page.63) >> +>> endobj +2256 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [450.414 463.019 462.37 473.867] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +2257 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [432.814 451.064 444.769 461.802] +/Subtype /Link +/A << /S /GoTo /D (page.63) >> +>> endobj +2258 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.162 439.109 411.117 449.846] +/Subtype /Link +/A << /S /GoTo /D (page.44) >> +>> endobj +2259 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [436.301 427.154 448.256 438.002] +/Subtype /Link +/A << /S /GoTo /D (page.44) >> +>> endobj +2260 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.688 415.199 411.643 425.936] +/Subtype /Link +/A << /S /GoTo /D (page.44) >> +>> endobj +2261 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [436.301 403.243 448.256 414.092] +/Subtype /Link +/A << /S /GoTo /D (page.44) >> +>> endobj +2262 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.268 391.288 405.223 402.136] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +2263 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [459.685 379.333 471.64 390.071] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +2264 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [409.18 367.378 421.135 378.226] +/Subtype /Link +/A << /S /GoTo /D (page.68) >> +>> endobj +2265 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [459.685 355.423 471.64 366.16] +/Subtype /Link +/A << /S /GoTo /D (page.68) >> +>> endobj +2266 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [366.285 343.468 378.241 354.205] +/Subtype /Link +/A << /S /GoTo /D (page.54) >> +>> endobj +2267 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [474.546 331.512 486.501 342.361] +/Subtype /Link +/A << /S /GoTo /D (page.54) >> +>> endobj +2268 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [402.538 319.557 414.494 330.405] +/Subtype /Link +/A << /S /GoTo /D (page.54) >> +>> endobj +2269 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [474.546 307.602 486.501 318.45] +/Subtype /Link +/A << /S /GoTo /D (page.54) >> +>> endobj +2270 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [409.457 295.647 421.412 306.495] +/Subtype /Link +/A << /S /GoTo /D (page.73) >> +>> endobj +2271 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [419.862 283.692 431.817 294.54] +/Subtype /Link +/A << /S /GoTo /D (page.73) >> +>> endobj +2272 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [403.922 271.737 415.877 282.585] +/Subtype /Link +/A << /S /GoTo /D (page.55) >> +>> endobj +2273 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [474.546 259.781 486.501 270.63] +/Subtype /Link +/A << /S /GoTo /D (page.55) >> +>> endobj +2274 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [402.538 247.826 414.494 258.674] +/Subtype /Link +/A << /S /GoTo /D (page.55) >> +>> endobj +2275 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [474.546 235.871 486.501 246.719] +/Subtype /Link +/A << /S /GoTo /D (page.55) >> +>> endobj +2276 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.748 223.916 395.703 234.653] +/Subtype /Link +/A << /S /GoTo /D (page.35) >> +>> endobj +2277 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.799 223.916 411.754 234.653] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +2278 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [469.62 211.961 481.575 222.809] +/Subtype /Link +/A << /S /GoTo /D (page.35) >> +>> endobj +2279 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [426.892 200.006 438.847 210.854] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +2280 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.858 178.088 410.813 188.936] +/Subtype /Link +/A << /S /GoTo /D (page.77) >> +>> endobj +2281 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [466.244 166.133 478.199 176.981] +/Subtype /Link +/A << /S /GoTo /D (page.77) >> +>> endobj +2282 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [361.774 154.177 373.73 165.026] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +2283 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [459.685 142.222 471.64 152.96] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +2284 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [395.924 130.267 407.879 141.115] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +2285 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [421.633 118.312 433.589 129.16] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +2286 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.97 106.357 380.925 117.094] +/Subtype /Link +/A << /S /GoTo /D (page.36) >> +>> endobj +2287 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [469.62 94.402 481.575 105.25] +/Subtype /Link +/A << /S /GoTo /D (page.36) >> +>> endobj +2288 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.712 82.446 375.667 93.295] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +2173 0 obj << +/D [2171 0 R /XYZ 109.858 727.97 null] +>> endobj +2170 0 obj << +/Font << /F29 416 0 R /F8 369 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2291 0 obj << +/Length 5353 +/Filter /FlateDecode +>> +stream +xÚµ][s7r~ׯà#UeL—fmÉv´ÇŽ©ŠSµÙZ:–¸Ë‹CÙÊþútãvÓbÉå2EŠýu÷ôùÐh4€‘¼˜á?y!çmZ—õÂ)7mîâÍݳùâüæÛg2J-§u…oñw“óû"ñÛO’ó…PÓ¶n(ù?Ïþú·ùâ-hû  Ì¶^üßÏ“2ÛÅÝ3³l“rküùöÙÕ³ÿÈZÂïÜEVÅJÀ%áð±Vø3?ßW¯ŸýË7j»ð?¿þå"JD×oÿzùêþíá¹2—Ÿÿíõ_ž}ý:kÛôäœéÅ*JTÌ­Óf-Ú[Ô6Í¥ÁmÞ[Z´›Ô²ôL%‘½­õbSMI0åV}aÁ-9Koëõ믞 yù_ÏÕzùâÃÓñáîê×çòòæþkøúö¾_(r÷ÅÞ+µØiµ'}>üú"üïÂGpú‘~ )tïí^;z»(æƒ)µ>ìC“dzÖñí*'i¬·öÃ#<¾öÿž¥ï?²H£8›`< )”9µÓ^\@JªÂ‡}’L×Z¢‡Ý&¹}FzD}çÐãmÒƒxÛ¡ñ¡M¶µL£ÌioíÇëûw‡ +#ô¤æ%KŽ0" rF”ÚÑm9#€çv-|àŒ2]k‰z™´\Œø¿½~w¸zóøp{{x¬AN›vYÍR('B©½eal[á'BéYËDPzÒV"øp#âû{øzû¿ÏW}É™±¬“›u†0#"2ÇvÚýxà̰ëdíRøÀ˜eºÖ3¤œÌì +f„Ôp„¯¯ðçcJ¢• 1ëi[²’^  HF‹Rw=J‚¦NâcE”éK¬X¶m2 eÅÝŽŽßðËá5þÅûŽÃ¿?oâÌòÆ3èxó€üáq‚šKÍ[V?¨ˆÊ"µÓŽÎ«…ùs‘t²ð…*Êô¬åP­ê@GBõës¡Üåáúøòp{k #idV00Œ"R(so§ÝgÉ|XAj6…lE™®µ8Œ·L‹Qëþ€sí±ÁP#¡:Njø‘‚@?vÚë!Q¤YøÀøezÖ2?¬ž r5~Ü`ÞqbØyšW›‘ĈHA Ì¯ö1€>3TlÔFŒ(Óµ–ˆ“›Õò“‰ÕœCŒ´I âd‡ć61ÚÖ21@Ö:[#Æ«{ŒÍñðøÛóÅ^^ß~Q·ZÚ¬c€")”y¸ÓÞ ÈË\·>0ŠD™®µDXï9õé‰jÎ¡È Ú¤q²CâC›"mk™"r™œ¥yºù§ÿó?qÉò„ßÝüŒ•Ú!¯÷‡Û§Ju"ae®²¶‘ò$ òú¤Ô޾¾~šcÖ¦ð(A¦g-“ª¢U–dùñáöˆ‘yùCi…jÆÓ?ªl‘¸|\²ž˜D¤ P“öFLHÍká‹I”éYKl1”ýKdËÍ»÷>‡Ô^š–L2F–v)”/íJí¾ Ûø"¤”)|àK» Óµ aüÏ!“bäáö»küóÝÍ}eŒhåWAÍH]p"yUJ5׃¡Œ‚•Š%ÖyE$Úv2 ¬›6àžg/ÚñxÀä¢Q©8Ô4ㇱ#G@ +åG©=s|Eç`ù u õWA¦km§­Ujï’ÖrÎGdß…R»à•Ïá ëýîG™®µ4–eÚ¶Æôùâáöáñ*-ÙŽþ#Ø&%# Å ÉG@¡»þñ+¿\6êA¤c*LjÛÒÆk\…âá&Î J¬CZâ‡. Y'È@Iñ@€P$ P©»Nµ€Ò…,BQ¦g,ç ¥&)Cýï;^XF„ȼð!¸ÇÀ„heá_§x‘ž­L¨êG{‚ø,r›r±{üÓûÃýKÿk²”ÃöóÛj_ـʤz¬¯ŒHA µ¾2ÕîóîVë+³>ÔúÊ(Ó³–y£!+í:f~YëR,°5ôómÊı~¼­÷H@'|:I÷H$ òI©½'üíl +x$Èô¬e:);Çèä·lî®k›v4o3pdV +HA |V*µ7¶¯ÜóîVøÀ§¥ Óµ–ÈãxÙõΆ·¯’’ñí+‚ll_QÛÛWÔƒæöUÇXæÄ¬`â[šœxªNŷ͵Íèb¤ PNŒR;úf+}÷mš¡2£>pb™®µH ůmõTÿíæ©6áí2pdºñ8qòɆj®?¿R <[ažO5A¤c)ñ@AegÆxn?"^u¸°ÂS›¬a¤ HA ¼)µûi——®ÛUº+|à•HéZK\°vr•ÙN'?û™åá+¡í³0ØÍÒ2êì“éxHÅ5ûdYs="¾ ¶ib½Ú'óähÙÉÜXÌäbsæ +{Æwa ¦h¦Ws„‚/¡Çr"ÖrÕîLj­åCž •#P¦k-ñbæZ£«ãõñCÚkøêºÚ @ó¬’¢‘5LŠ’¯a +Ýõˆø•±5Ô¾„ "S™zžV5f„Êþø\V;©aúO:Î(.´U\Pm³¸ >4‹‹žµÄ¹Nëç!HÔtCNÐ&EˆŸŽÚ$i[Ë,™í´)Â’ú6g„Ƴš&Ë0""2ovÚÑikgùfë +#¢L×ÚNO½·npƒs9ç#²ïB©Ýo¨Ì|w ¤äÚà(Óµ¶ÓSà4*Ç8ùŽ ;í¾‹37Ç|ïó˜ïX‹c;›cþß× +ýà«Ã1ž[iN››œ[³‚`D¤ PæÞN{îjvþìõ õ(Óµ–‚±í¥)`ÞKùÕ·²®˜ùÚu“r@¤“ª‘•w@ +å+ïR{}P(í¦Ö‘Ô¾ò2=k9,NNó²±°à„ðô‡Új4½dE#‹€Ê—¥öúÀQ°¸¶ÛZøÀWA¦g-M >cÌz?-|ûˆßÿúEõ„³²6r–6 òôUjoÔ >êu+|àgiƒL×Zâ…6šõ3Ô IÓõ¶êêg»^ >4ë…ŽµL Ùw‹Ä¸óÏ}üæ´aðæÃSebq“†õ}‚ŽL,)”O,¥v¿ä2|b)å +øÄdºÖ9”ž”.ɶJ`¹õ}n†×ú°À•.+I)”'‹R{=ØáÄ’¸Às…éÙÊŒrRkbDÜ7Â6ÝûÓñ¥5ö¼Ó^[y +¬ÒÉ[''³æ‘Nž +‚ä¼Bw£»‹qtªð€wò‚LÏX¢Ë¶ùý‰?£ UŸÑ?![-pâv»Nh6ÀÛ¦‹V{.lî]áƒ_W&˜Ô­’èÈ +$Å É …îÆÍ.ƒ'ÇêÀ³°²Àîî´­EKƒßÛ„‘µ,0œ¡BÑõSÇÚ@øìç» hü1ïs.&dïÊÞ^{=†f©¹A0Éô¬iLPº¼ ‰ƒ»m±5êÇЛz’ÑxÔÚ3î +&dïöÞ^»¯ey4fRk÷®`’éYÛë©.ð 5˜Æ8!û.”Úý³©ÇHHˆnë?p”éZÛé©?°Z¦Õ®çþŽÓVÙ…Õ°4\ý×€È )”ù¶Ó^¯Ì0Ϭþíɶ”2]k‰%f›¬Þþ” +6é>£‚%ÐVK=oW°Ô‡fÛ±–YÍ®Œ1?ݼõ­µ*WæÅfÜW)´ÆªÝ'Ù¹:ãÉ­ð¡Æ”éZK\–SW¢îs¸r‚6¹B<çqÊ\!>´¹Ò¶–¹"ñ½V±{ôyÇxlSíý» +[6˜óuFް% r¶”Úë§%ñžÞ§¢>p¶™®µÄ–ß©´žyxoÕ%#­É;…îz8ŒV;Uá±D +¾éDŠÆÕ LÓ0"`€ )”¹³Óî³'›oµ…â VpÔÆ…(Óµ¹`ðµqskïîÅûCÈñ˜ 'ƒ!Î[V3À†ˆÊè°Ó^‰q …÷‰ŒQ¦g-óÁâµÃ‚ž|dê­íV'$áh‘‚@™W;í~W[ò4Rx{ŽøÀheºÖ- édýÃ[ýõ³!Fo“6KÖ6²š HA |9Sj¯GÆ@¡á§>ðMéYËìÀÍäø2ÏŽÇÃÑ‘J¥qV6Cˆ‘‚@™C;íþhŒãä\ v] 1¢L×Z"†Æ·É´ í¥ +.=¥ÉðÁu­Ä ç'huaK´×CáKç +jk[”éYËLÀ¶‘®1áüáÆ‚)5¼ÊÔú0û/2+é{¤ PÞ÷(µ×Ãàfû¡>ð¾GéZKü˜­àÙg„°Ç½•¤h„))”3¥ÔÞŠY&È»…œ)A¦g-1EofRŠ2å&ìòÿáXŸQð͆*ãFf”€Êg”R{ýL^C¿œúÀg” Óµ‰¡W5©øº˜¡†FZ²=)é¤ PÞ*µ×ƒaðF–’…¼dzÖ2!¾pIRBt"€™ß ”Pcóˆ÷Öæª½~çð…héYËYA›É¤xdò×ð‚¸‡Çâõ ûw]5Òæ¼àÛ´“Α½7É·Þ +ÝÞÄ;oºð€ï¼™ž±L¥&ó'íè'Ýgô¸´Õ㢞·{\Ô‡f«c-³h†¥nì%ùíë/‘4ÏGpñª¹ŒïɶÏoùÀá}ó bøAá[5¢î‘9x ïÚ8!ù\èö3ðZ;¡«³Â>™ž±%µâùÏõ¥ëJïo™al²ìH¿' ò~O©½^Šj RÒ>ð~OéZ‹£H9;ÙØ]ú¤ú<):£>'ÐV}NÝl×çÔ‡f}Þ±–É`ÍäÒË ãÔ,/§_¯Ÿ*¥¹ž¼U!#¥y@ +åÕQ©ÝSÛÁX`åO}à¥yéZK¿¨É¥—ÜÐ%=¦‡^¿?ÜÕÛ¢FÍ~Ë#©™ŠR(ŸŠKíõ—<ûåºÜ +øTdzÖrH øºíñòûò4ùmíÖÊÅ@rYÙHÖ HA ÔN­áÎlÛZ „ÜÉvˆ«Ãñô6ý»ú bå ¾N2i©ÝR(/ÞKí„*AŠðyFÆ‹zmk9,v›fËHòûMì$#Kû«H™dÔ€Ê3j©Ý—cªVlÒ>ðŒdzÖrP¼ÝºçÊþ¡øÿ'›ÙMz•YÝÈ0 +HA |•Ú}htíøš6¦ð£ Ó³–Ccèušò=„P¢äM¹>y¤AfÒ:Bž€ÊÉSj÷2µQ=¯… œ;^¤g+ÇGë)Î=/®¾=ýkp_a½öËCõñíâ"hìá'2°öè'ÍþÁ]íÁ­"Æk7¤šVòCƒ Šoyý2¼Xðæ®ò¯`ç_Î6Æö)´¶¯@µûÓ²¶¯0ۭ𡶯€2]kéáçmJ'Ÿ^þð‚¾PðGÿì°ƒS™PðoÒ02xœ8ùdB5ûc kusÜijžÏ$A¤c)…aƒ’®q¼|¼¯?óõÅõ»”3kÍžêvËjlR8¶Û‚@qBÖ6[ˆîV§„æ:PÛjA‘Ž©—u™4éò>ýŸ¸5ûáþMó.2³òƒ|dæ8‘|Þ šý 2r%ÖÙño‚‹ÿ¦euZÁÉzKÿ¸düåÿdëçIendstream +endobj +2290 0 obj << +/Type /Page +/Contents 2291 0 R +/Resources 2289 0 R +/MediaBox [0 0 612 792] +/Parent 2054 0 R +/Annots [ 2293 0 R 2294 0 R 2295 0 R 2296 0 R 2297 0 R 2298 0 R 2299 0 R 2300 0 R 2301 0 R 2302 0 R 2303 0 R 2304 0 R 2305 0 R 2306 0 R 2307 0 R 2308 0 R 2309 0 R 2310 0 R 2311 0 R 2312 0 R 2313 0 R 2314 0 R 2315 0 R 2316 0 R 2317 0 R 2318 0 R 2319 0 R 2320 0 R 2321 0 R 2322 0 R 2323 0 R 2324 0 R 2325 0 R 2326 0 R 2327 0 R 2328 0 R 2329 0 R 2330 0 R 2331 0 R 2332 0 R 2333 0 R 2334 0 R 2335 0 R 2336 0 R 2337 0 R 2338 0 R 2339 0 R 2340 0 R 2341 0 R 2342 0 R 2343 0 R 2344 0 R 2345 0 R 2346 0 R 2347 0 R 2348 0 R 2349 0 R 2350 0 R 2351 0 R 2352 0 R 2353 0 R 2354 0 R 2355 0 R 2356 0 R 2357 0 R 2358 0 R 2359 0 R 2360 0 R 2361 0 R 2362 0 R 2363 0 R 2364 0 R 2365 0 R 2366 0 R 2367 0 R 2368 0 R 2369 0 R 2370 0 R 2371 0 R 2372 0 R 2373 0 R 2374 0 R 2375 0 R 2376 0 R 2377 0 R 2378 0 R 2379 0 R 2380 0 R 2381 0 R 2382 0 R 2383 0 R 2384 0 R 2385 0 R 2386 0 R 2387 0 R 2388 0 R 2389 0 R 2390 0 R 2391 0 R 2392 0 R 2393 0 R 2394 0 R 2395 0 R 2396 0 R 2397 0 R 2398 0 R 2399 0 R ] +>> endobj +2293 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [255.866 690.167 267.822 701.016] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +2294 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.853 678.212 152.808 689.06] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +2295 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [255.866 666.257 267.822 677.105] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +2296 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.209 644.339 154.164 655.077] +/Subtype /Link +/A << /S /GoTo /D (page.36) >> +>> endobj +2297 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [250.94 632.384 262.895 643.232] +/Subtype /Link +/A << /S /GoTo /D (page.36) >> +>> endobj +2298 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.706 620.429 169.662 631.277] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +2299 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [202.954 608.474 214.909 619.322] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +2300 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [230.212 596.519 242.168 607.367] +/Subtype /Link +/A << /S /GoTo /D (page.25) >> +>> endobj +2301 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.745 584.563 181.7 595.412] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +2302 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [228.192 572.608 240.147 583.346] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +2303 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.09 560.653 171.045 571.391] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +2304 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [228.192 548.698 240.147 559.435] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +2305 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.32 536.743 191.275 547.591] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +2306 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [228.192 524.788 240.147 535.525] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +2307 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.075 512.832 212.031 523.681] +/Subtype /Link +/A << /S /GoTo /D (page.42) >> +>> endobj +2308 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [210.149 500.877 222.104 511.725] +/Subtype /Link +/A << /S /GoTo /D (page.42) >> +>> endobj +2309 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.165 488.922 151.12 499.77] +/Subtype /Link +/A << /S /GoTo /D (page.29) >> +>> endobj +2310 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.707 476.967 243.662 487.815] +/Subtype /Link +/A << /S /GoTo /D (page.29) >> +>> endobj +2311 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [161.027 465.012 172.983 475.749] +/Subtype /Link +/A << /S /GoTo /D (page.76) >> +>> endobj +2312 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.078 465.012 189.033 475.749] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +2313 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [235 453.057 246.955 463.905] +/Subtype /Link +/A << /S /GoTo /D (page.76) >> +>> endobj +2314 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.564 441.101 259.519 451.95] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +2315 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.763 419.184 191.718 430.032] +/Subtype /Link +/A << /S /GoTo /D (page.36) >> +>> endobj +2316 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [250.94 407.228 262.895 418.077] +/Subtype /Link +/A << /S /GoTo /D (page.36) >> +>> endobj +2317 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.531 395.273 179.486 406.121] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +2318 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.564 383.318 259.519 394.166] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +2319 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.056 371.363 195.011 382.211] +/Subtype /Link +/A << /S /GoTo /D (page.46) >> +>> endobj +2320 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.331 359.408 225.286 370.256] +/Subtype /Link +/A << /S /GoTo /D (page.46) >> +>> endobj +2321 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [230.489 347.453 242.444 358.301] +/Subtype /Link +/A << /S /GoTo /D (page.39) >> +>> endobj +2322 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.445 335.497 239.4 346.346] +/Subtype /Link +/A << /S /GoTo /D (page.39) >> +>> endobj +2323 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.21 323.542 176.165 334.39] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +2324 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [202.954 311.587 214.909 322.435] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +2325 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.14 299.632 180.095 310.48] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +2326 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.134 287.677 226.089 298.414] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +2327 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.938 275.722 196.893 286.57] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +2328 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.735 263.766 243.69 274.615] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +2329 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.499 251.811 180.455 262.659] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +2330 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.005 239.856 252.961 250.594] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +2331 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.21 227.901 176.165 238.749] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +2332 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.005 215.946 252.961 226.683] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +2333 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.108 203.991 144.063 214.728] +/Subtype /Link +/A << /S /GoTo /D (page.16) >> +>> endobj +2334 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [148.159 203.991 160.114 214.728] +/Subtype /Link +/A << /S /GoTo /D (page.20) >> +>> endobj +2335 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.21 203.991 176.165 214.728] +/Subtype /Link +/A << /S /GoTo /D (page.70) >> +>> endobj +2336 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.782 192.035 208.737 202.773] +/Subtype /Link +/A << /S /GoTo /D (page.16) >> +>> endobj +2337 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [226.117 180.08 238.072 190.818] +/Subtype /Link +/A << /S /GoTo /D (page.20) >> +>> endobj +2338 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.739 168.125 227.694 178.973] +/Subtype /Link +/A << /S /GoTo /D (page.70) >> +>> endobj +2339 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [152.13 156.17 164.085 166.907] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +2340 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.005 144.215 252.961 154.952] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +2341 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [166.368 132.26 178.324 142.997] +/Subtype /Link +/A << /S /GoTo /D (page.44) >> +>> endobj +2342 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.621 120.304 229.576 131.153] +/Subtype /Link +/A << /S /GoTo /D (page.44) >> +>> endobj +2343 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [207.713 108.349 219.669 119.197] +/Subtype /Link +/A << /S /GoTo /D (page.39) >> +>> endobj +2344 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.445 96.394 239.4 107.242] +/Subtype /Link +/A << /S /GoTo /D (page.39) >> +>> endobj +2345 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.536 84.439 148.491 95.176] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +2346 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [474.546 690.167 486.501 701.016] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +2347 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [392.769 678.212 404.725 688.95] +/Subtype /Link +/A << /S /GoTo /D (page.22) >> +>> endobj +2348 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [408.82 678.212 420.776 688.95] +/Subtype /Link +/A << /S /GoTo /D (page.24) >> +>> endobj +2349 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [424.871 678.212 436.827 688.95] +/Subtype /Link +/A << /S /GoTo /D (page.39) >> +>> endobj +2350 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.125 666.257 458.08 677.105] +/Subtype /Link +/A << /S /GoTo /D (page.39) >> +>> endobj +2351 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [416.265 654.302 428.22 665.15] +/Subtype /Link +/A << /S /GoTo /D (page.22) >> +>> endobj +2352 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [437.823 642.347 449.778 653.195] +/Subtype /Link +/A << /S /GoTo /D (page.24) >> +>> endobj +2353 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [407.16 630.392 419.115 641.24] +/Subtype /Link +/A << /S /GoTo /D (page.53) >> +>> endobj +2354 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [474.546 618.436 486.501 629.285] +/Subtype /Link +/A << /S /GoTo /D (page.53) >> +>> endobj +2355 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [392.078 606.481 404.033 617.329] +/Subtype /Link +/A << /S /GoTo /D (page.44) >> +>> endobj +2356 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [436.301 594.526 448.256 605.374] +/Subtype /Link +/A << /S /GoTo /D (page.44) >> +>> endobj +2357 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [416.458 582.571 428.414 593.419] +/Subtype /Link +/A << /S /GoTo /D (page.53) >> +>> endobj +2358 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [474.546 570.616 486.501 581.464] +/Subtype /Link +/A << /S /GoTo /D (page.53) >> +>> endobj +2359 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [382.89 558.661 394.845 569.509] +/Subtype /Link +/A << /S /GoTo /D (page.39) >> +>> endobj +2360 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.125 546.705 458.08 557.554] +/Subtype /Link +/A << /S /GoTo /D (page.39) >> +>> endobj +2361 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [382.06 534.75 394.015 545.598] +/Subtype /Link +/A << /S /GoTo /D (page.40) >> +>> endobj +2362 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.125 522.795 458.08 533.643] +/Subtype /Link +/A << /S /GoTo /D (page.40) >> +>> endobj +2363 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [388.037 510.84 399.992 521.688] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +2364 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [421.633 498.885 433.589 509.733] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +2365 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [356.323 486.93 368.278 497.667] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +2366 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [459.602 474.974 471.557 485.823] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +2367 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [377.3 463.019 389.255 473.757] +/Subtype /Link +/A << /S /GoTo /D (page.71) >> +>> endobj +2368 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [438.349 451.064 450.304 461.912] +/Subtype /Link +/A << /S /GoTo /D (page.71) >> +>> endobj +2369 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [364.929 439.109 376.885 449.957] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +2370 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [436.218 427.154 448.173 437.891] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +2371 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.055 415.199 410.01 426.047] +/Subtype /Link +/A << /S /GoTo /D (page.70) >> +>> endobj +2372 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [434.419 403.243 446.374 414.092] +/Subtype /Link +/A << /S /GoTo /D (page.70) >> +>> endobj +2373 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [376.276 391.288 388.231 402.136] +/Subtype /Link +/A << /S /GoTo /D (page.16) >> +>> endobj +2374 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [415.462 379.333 427.417 390.071] +/Subtype /Link +/A << /S /GoTo /D (page.16) >> +>> endobj +2375 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [364.154 367.378 376.11 378.115] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +2376 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [380.205 367.378 392.161 378.115] +/Subtype /Link +/A << /S /GoTo /D (page.63) >> +>> endobj +2377 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [450.414 355.423 462.37 366.271] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +2378 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [425.868 343.468 437.823 354.205] +/Subtype /Link +/A << /S /GoTo /D (page.63) >> +>> endobj +2379 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [404.974 331.512 416.929 342.361] +/Subtype /Link +/A << /S /GoTo /D (page.40) >> +>> endobj +2380 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.125 319.557 458.08 330.405] +/Subtype /Link +/A << /S /GoTo /D (page.40) >> +>> endobj +2381 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [414.494 297.639 426.449 308.488] +/Subtype /Link +/A << /S /GoTo /D (page.18) >> +>> endobj +2382 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.958 285.684 361.913 296.422] +/Subtype /Link +/A << /S /GoTo /D (page.70) >> +>> endobj +2383 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [434.419 273.729 446.374 284.577] +/Subtype /Link +/A << /S /GoTo /D (page.70) >> +>> endobj +2384 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [372.567 261.774 384.523 272.511] +/Subtype /Link +/A << /S /GoTo /D (page.14) >> +>> endobj +2385 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [419.06 249.819 431.015 260.667] +/Subtype /Link +/A << /S /GoTo /D (page.25) >> +>> endobj +2386 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [413.58 237.864 425.536 248.712] +/Subtype /Link +/A << /S /GoTo /D (page.26) >> +>> endobj +2387 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [412.612 225.908 424.567 236.646] +/Subtype /Link +/A << /S /GoTo /D (page.46) >> +>> endobj +2388 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.295 213.953 405.25 224.691] +/Subtype /Link +/A << /S /GoTo /D (page.60) >> +>> endobj +2389 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [392.908 201.998 404.863 212.736] +/Subtype /Link +/A << /S /GoTo /D (page.64) >> +>> endobj +2390 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.079 190.043 411.034 200.891] +/Subtype /Link +/A << /S /GoTo /D (page.25) >> +>> endobj +2391 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [420.167 178.088 432.122 188.825] +/Subtype /Link +/A << /S /GoTo /D (page.65) >> +>> endobj +2392 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [409.955 166.133 421.91 176.981] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +2393 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [406.385 154.177 418.34 165.026] +/Subtype /Link +/A << /S /GoTo /D (page.73) >> +>> endobj +2394 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [410.121 142.222 422.076 153.07] +/Subtype /Link +/A << /S /GoTo /D (page.74) >> +>> endobj +2395 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [410.661 130.267 422.616 141.115] +/Subtype /Link +/A << /S /GoTo /D (page.77) >> +>> endobj +2396 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [376.11 118.312 388.065 129.16] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +2397 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [428.414 106.357 440.369 117.094] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +2398 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [415.85 94.402 427.805 105.139] +/Subtype /Link +/A << /S /GoTo /D (page.18) >> +>> endobj +2399 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [401.459 82.446 413.414 93.184] +/Subtype /Link +/A << /S /GoTo /D (page.70) >> +>> endobj +2292 0 obj << +/D [2290 0 R /XYZ 109.858 727.97 null] +>> endobj +2289 0 obj << +/Font << /F29 416 0 R /F8 369 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2402 0 obj << +/Length 5290 +/Filter /FlateDecode +>> +stream +xÚ¥][sݸ‘~÷¯Ð£T5ä’à£åOœo²–r©JåA±ÎÈÊéx壨“ýóÛ  qpí™JÅ—Q_?6€ˆgüOœ‰aéÍhÎf9÷Ë|öñáÕpv?ùñ•ð½1ðGüY?Ûÿú"þN’ÃY'ûÅ,(ù¿¯þö÷áì¬ý´ôbξŸ‡^êåìá•—^ÎÆÿ}ÿêêÕÿ+îgóY0UD/©›1-¿‡ü.¯_ý×[¹œÙ¿_ÿ|æ%¼ÀõíßÎß=Þî.¤>ÿvñ÷ëß¿úá:X[T?ÏšÃÊKTÜ™~™&ô7Ê¥R‡‹È=jîå8r®H$÷eÎp¥Ð•W³Qg„%a}]__^tâü¯Wâüxs|þòÇ iÎoá¯;üÁþð]ŽS?«1²¸«3÷ÿÙaúkŒ?iv‘jfn܇"9õÔQCŽ ÉpÞ¨â'#z¡'ÊÛýÍñ=Aðx!—óg Ð…œÏ…?ìí +\„g0ÌÁÖËq!Í.R-"ͬ[\dÃ2÷" !‡Å‹°¾•iéÅâKåí…Qç Çñjw<Þc•Ü}©CãÈŒ*X…×ì"Õ"¼Ì:†'ÆÚã0bJb(°ð2¬·Ìz+†[½%a¯É†Y· OŘTo¦™M˜dXo4QŒPq0ÑÛåa[&=N½2®HÚkv‘jFf½ñ”§ ªyLb(ž²—a½QÒz쥱ÎÞö‡§JÒ Ì* ®ÉÙ)v'Í2åÄv+cšd@™°á\Q¾JõJ:tßoö÷+0b‚èš”f©–9§Öëµ-&“ʤ­ë‹’–¢WnµýÆl>‰~€ÕË®HÚ+v'Í"ŽÔv#å„„‰(Rö"œ+J¦t-¼W÷0sÿ³ÞU¶êèPH~ÍÃvš]¤Z>ìÔzëaC»·È$†òi;Ö›Ï}„ϯ˜WGHýéþlsvx>^T/Ó°Bzµ5k—SìNšåÒ•ØnäoL¯Mì¿\·¬çˆr7c?ÂÒžþôxK]Ͷ1÷¡Ï«b µêë@@Í.R­¡[oÃëUC ”a½ùnfœU?ÂÃv3Ÿv­qS¦Q:H¯ÈÜkv‘jKf½ÑÅc?CÇPdîeXoT0ߌ‹.Zþ¯÷ÇØÔ~ŠË¢ì÷ Ë第è÷½f©ý~f½Ž4ЬŠ$†¢·ñ2œ·P VH•Õ›óko+ÃAöÓ|R[3œf©–Ã!µn!Påp)„ Š¡N†õFE[ÆÉüÇEá­l)Š“j³(¢KDBQD1´‹¢í-…„!%³¢øR™!ÀIñ53„Óì"Õr†H­7Š:EØê'1”3„“a½Q1<«Pÿi1x+[Šá¤Ú,†(F¦¢ÚÅÐöŠa°ísMøµÝú^tÐ4ðHÄâsÀâÛqÂ8|~†ÿú¹r"0ôŸ’·µæDÀiv‘j¹1M­ÛUt.w¦`IB(O¬ë+µÒØO½žÍ–l½&AjCå¹ÐRXLº$ÃzóãB¨†)øÜß<9Þí˜x¨‘A›Ë<©¯9"sš]¤Z‘¥Öë^Jè¡Aˆc(Èœ ç-@g£ƒI  êÿ åÿ~÷ˆÈ<× qã}²±§ÙEª%©õFiȹ‡"Jb(ñp2œ7š ô4ö˨¢ âsu7¡do`”’øŠQá5»Hµ&³nS_ÊKB¯˜„PÌN„õE…›¸e1å˜8Ø8âqØ¿¿ÁßïîËTBÐóp2´¢¼f©ÕY¯C"!ßiš’Šjð2œ·P ;hé@±§è»§t€lj-%ôïhƒ×l´f©–íÔzý]àÖSC¹Ñv2¬7A ý`ÜÆõ»@~uõzë‹6F÷£õúkÖI§ÙEªå:™Z·XTÖI’cC¹P:Ö[f§ºTÊaè¥Ð&M.„ܺMØ”sòmÕÄ&L2lÂôðaU‚éÈ=ü«Ë×·ÿ„Ë$M ny8~Ø}Ä’(‹@Jp1NÁÎ +L¼f©˜dÖ1Ê©\31M±$1˜xÎ[ÀdÀ“ç¹Àäí…Ñçf4,"è® ¾=iÖÆBd»Ž–°î8Ž 6P†uæQP +e¨Œüãð§Ù³ ÈØÃGfÖb»H³$±Ý„àIÇ”€8ÖYf§17ˆ^I±!]ÒäBÈ­Û„+sƒè%,õ\Â$Ã&L`d/'ÿzõ +ø›O7w»Ó£çVÊEõÚ]2²îÝjv‘jíÝZlCÇÚ»5aCíÝʰÞâ"ÄM'4°}:þÀ ¨'µ,ÁÚdœf©Öª5¶n‘Ñ%2 5‰$†'Ãz#dFÓ«1.•«ãîsQ(ÕS:Ø‹1XX·ÛÅ.Ò¬m¶#Ûu,p—,„J"¨m¶Q†uFXhØ©q•؆Åà–‡Ûwü½Áƒ‰ç_0x¹BCoL†×]Ý@Í.R­]݈­7 +FNP SCíêÊpÞHJÃv>.Ç3­0þø&Aßü¼+o V'Õ&VQô•i‡°ŠbhcÕö°’öû‚Å +ÀøõóE'çÖ«!œÝ`C@¶Ö 3§ÙEªå8K­[\ÊãÏEö˜$†r 9Öá}îèïЖö5¨û»Ç_ yÛR)À–7¶¦`œf©–“Z·ÛÚÊ¡HÉ%‰¡,'Ãy£½¾\L?º=4³¡Ç÷ÐxÁÊK¯y;⻓fùr$±]O[Ñ“Š(_8Ε¯i¦~’i5\ÚwÅÇÃc%y<]—AkMöN³‹TËôSë­üÇ~2cC €“a½³î§¹<á ˜w7wv¼Ãq»ûV9äq‡«ÞÔš3§Ø4Ë#žÄ6†©+'<J8ö_žïX ÆQÀc’ý,ÆO;ûzä—ô¥ÀwµWÙ¸&;kæL§ÙEªåœ™Z·5bÊ9·«&‰¡œ3 ë0!Ö©r +¸?àDñÎîòi¶|¨B2‰`f"“­ Y$²mëc®á1PƒE8W4Q*Ó•¿8F’nŽEª­«cq•œýŰ8†æå1ÎÕô†®TTŠÀ­™ûÝñØè%¼¼­‚5§ÙEªå&µnÏÁ*RSC¹q2œ·ÜN}s/`'$õ†„I“ !³n®4•x)ð7ö2,¼TúЙ˜åE¥ï%·”þIµYúQåc¥ÅÐ.}Æe=È~ñ—5lÖW4×5.•)赦 ¶¦Kpš]¤Zv ©õúƒFA#¼$1”]‚“a½yp+»˜èÁ_ÛcÍ«ã^0|¼û®v;}ÒAoÍh·Š]¤YöÄv£ôTA9Ö ëŒ˜{ŸÑ"ð´»iMs4&H¯¹Kj»H³¼KšØn¼±û ‡Ï(uÜÕû>=õ•}ŸF$NªÕ¾/²n¼©ö}ðÓ8†jß7ÞA!;_¸xé kÁI³µD‘”ûâ°D´×Æå ë¥ô÷,`¤?°§tg”6܈‹T[7ââ´©Þˆ3KCõJȰÞ<øšÄ_±xƒÇò?Ý¡>ð/÷·øÛ§ê@þ‚W^7,ñá¤Y«ÿÈv»ü—qŒ¨U?Šp®<¸„ú›ƒ?; °üÇ~GuQ¹ >ðV‰7°æe§SìNšµYd»Tø»Ü(€ 1è~„10Ä?,‰ÑZðqæâQÚôzJ¸ïm« s„RÁÆOµÝƒÞL¹Õ/ Üê +å¶J¿€r«_@¹ (DDÖ?à|.b­ÜÜíÞ+ߪ°è¹7“ÙÀ¸%MŽ›[¯O§z)%XÊ-ÉpÞ,ÇÓÂò†ˆØ{ßl¨´öýêz*irÄÐÜz Kå¬Y*ÉpÞ ÿÓòýÓ½YÆ¢ õ²—JšS4·ÞFAgÜØ +ú7X°…%Ô‚@É¿ÙßD4~© àîn­&ª’"ÃÍl×{M-AH-Q•DW€ˆjx¿»±K ¾º|ÚýÎÂq÷©~5@+ K™ÜÀa%MŽWš[oà¡AJð$V’á¼DNìÑ + ´œT¡R®'¶’"Ã6Íl·qÌÈ[I„qPˆ‰­¸xž®þ„/p]+fßWÕ¿U %,ïj ã•49jn½±¶*xÆ+ÉpÞ”’ñÊ|¬A™±`0¯æ»’"CCÍl׳WÐ_È.i^I„s%‘aRé¦ëéözz4¸¯¤É±QsëõëéZƒ”d©¯^„óÊ!b›^ŽÇÃC¥æ~‚‘»žöJš5·^OZÁ³…lXÚ+ɰÞ(íˆRúÓîçrUP³´wµ×3[I“ãšæÖIioVsÌV’a½QÒ‰ôƒ]k—›Ôlúyš6ZI“£˜æÖ[™KKä­$Ãz£ÌcBk›£f7Jm`®’&Ç%Í­·R‡emYæ*ɰÞh΋™«Mí’ºùÕ}~4J« ŒVÒä8¦¹õÆŒ§q5±ŒV’a½evªç°Ø_3oIØk²!dÖ1%Ë#H|¾N„óŠ?"ǾÞßßás~ˆnUWGžAwµž¶Kš‘6·nQ(›AŒŽSΰ"I†õF¹GlD»Êá“·ÇÉx€xxz÷ø3þ^=?]´ØÀ•$M޽˜[o`¡p+­X®$ÉpÞ-1ù, óM@\š'¹l L’&GaÌ­7ƶq‹` “$Ãy£%0&'–K`ý…®Î—MºW0׳)I“c8æÖWù`ÕÇ[ŠŸ’d8o ˆÅ¸âs»?‹ŒŽÕKÒäH¹õú¿V€·ä(XŠ%ɰÞ2;õû JÚ/ÞnHØk²!dÖm¦v‡OÙ„½ ç&‰˜ÈùzÿÕ~9ÀŸÙ[‹Wñ?Iæ^áßÞãòK«a”öÆàzî)ir|ÐÜzýÌöÕôû”d8o¢ˆãBò·þ9.< ”Ó*irœÐÜz d’IžJ2œ·€EÄs|áüzÚe8ƒg¨¹õzút¾Î/Ã<çÒ¸ŽCô»]ó¶mÎ×Ó-öž!@æÖ[Ϥ˶ô"œ¯~Dqtéÿ½­Ó§è*ÒzÒe¸èÄ!sëüí5&Žté/:qž(ûˆß˜R§â¤¯ºLHþ]M¾$MŽ™[o¬Ð9/HSfÈ—$Ãy#("ŽcJ"Yì5V3/I‘¡Cf¶[€Ç»tŒJ>"6ºkþáû#î¶[õª¿æb5Û’9vcj»5 âŠc[vÒàÍüÞÉÒS­H-sÊÈüYá„ endstream +endobj +2401 0 obj << +/Type /Page +/Contents 2402 0 R +/Resources 2400 0 R +/MediaBox [0 0 612 792] +/Parent 2054 0 R +/Annots [ 2404 0 R 2405 0 R 2406 0 R 2407 0 R 2408 0 R 2409 0 R 2410 0 R 2411 0 R 2412 0 R 2413 0 R 2414 0 R 2415 0 R 2416 0 R 2417 0 R 2418 0 R 2419 0 R 2420 0 R 2421 0 R 2422 0 R 2423 0 R 2424 0 R 2425 0 R 2426 0 R 2427 0 R 2428 0 R 2429 0 R 2430 0 R 2431 0 R 2432 0 R 2433 0 R 2434 0 R 2435 0 R 2436 0 R 2437 0 R 2438 0 R 2439 0 R 2440 0 R 2441 0 R 2442 0 R 2443 0 R 2444 0 R 2445 0 R 2446 0 R 2447 0 R 2448 0 R 2449 0 R 2450 0 R 2451 0 R 2452 0 R 2453 0 R 2454 0 R 2455 0 R 2456 0 R 2457 0 R 2458 0 R 2459 0 R 2460 0 R 2461 0 R 2462 0 R 2463 0 R 2464 0 R 2465 0 R 2466 0 R 2467 0 R 2468 0 R 2469 0 R 2470 0 R 2471 0 R 2472 0 R 2473 0 R 2474 0 R 2475 0 R 2476 0 R 2477 0 R 2478 0 R 2479 0 R 2480 0 R 2481 0 R 2482 0 R 2483 0 R 2484 0 R 2485 0 R 2486 0 R 2487 0 R 2488 0 R 2489 0 R 2490 0 R 2491 0 R 2492 0 R 2493 0 R 2494 0 R 2495 0 R 2496 0 R 2497 0 R 2498 0 R 2499 0 R 2500 0 R 2501 0 R 2502 0 R 2503 0 R 2504 0 R 2505 0 R 2506 0 R 2507 0 R 2508 0 R 2509 0 R 2510 0 R 2511 0 R 2512 0 R 2513 0 R 2514 0 R 2515 0 R 2516 0 R 2517 0 R ] +>> endobj +2404 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.739 690.167 227.694 701.016] +/Subtype /Link +/A << /S /GoTo /D (page.70) >> +>> endobj +2405 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.211 678.212 198.166 689.06] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +2406 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [176.857 666.257 188.812 676.995] +/Subtype /Link +/A << /S /GoTo /D (page.15) >> +>> endobj +2407 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.908 666.257 204.863 676.995] +/Subtype /Link +/A << /S /GoTo /D (page.16) >> +>> endobj +2408 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [155.216 654.302 167.171 665.15] +/Subtype /Link +/A << /S /GoTo /D (page.15) >> +>> endobj +2409 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.703 642.347 170.658 653.195] +/Subtype /Link +/A << /S /GoTo /D (page.15) >> +>> endobj +2410 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.291 630.392 169.247 641.24] +/Subtype /Link +/A << /S /GoTo /D (page.16) >> +>> endobj +2411 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [160.059 618.436 172.014 629.174] +/Subtype /Link +/A << /S /GoTo /D (page.16) >> +>> endobj +2412 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [152.033 606.481 163.988 617.219] +/Subtype /Link +/A << /S /GoTo /D (page.16) >> +>> endobj +2413 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.521 594.526 189.476 605.374] +/Subtype /Link +/A << /S /GoTo /D (page.16) >> +>> endobj +2414 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.244 582.571 189.199 593.419] +/Subtype /Link +/A << /S /GoTo /D (page.16) >> +>> endobj +2415 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [144.838 570.616 156.793 581.464] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +2416 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.182 558.661 213.138 569.509] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +2417 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.682 546.705 183.637 557.554] +/Subtype /Link +/A << /S /GoTo /D (page.73) >> +>> endobj +2418 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.182 534.75 213.138 545.598] +/Subtype /Link +/A << /S /GoTo /D (page.73) >> +>> endobj +2419 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [148.768 522.795 160.723 533.643] +/Subtype /Link +/A << /S /GoTo /D (page.73) >> +>> endobj +2420 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.182 510.84 213.138 521.688] +/Subtype /Link +/A << /S /GoTo /D (page.73) >> +>> endobj +2421 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.431 498.885 191.386 509.733] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +2422 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.482 498.885 207.437 509.733] +/Subtype /Link +/A << /S /GoTo /D (page.20) >> +>> endobj +2423 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.538 486.93 229.493 497.667] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +2424 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [216.237 474.974 228.192 485.712] +/Subtype /Link +/A << /S /GoTo /D (page.20) >> +>> endobj +2425 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.831 463.019 143.786 473.757] +/Subtype /Link +/A << /S /GoTo /D (page.29) >> +>> endobj +2426 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.707 451.064 243.662 461.912] +/Subtype /Link +/A << /S /GoTo /D (page.29) >> +>> endobj +2427 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [154.967 439.109 166.922 449.846] +/Subtype /Link +/A << /S /GoTo /D (page.70) >> +>> endobj +2428 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.167 427.154 195.122 438.002] +/Subtype /Link +/A << /S /GoTo /D (page.77) >> +>> endobj +2429 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.218 427.154 211.173 438.002] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +2430 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [219.06 415.199 231.015 426.047] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +2431 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.914 403.243 195.869 414.092] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +2432 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.274 391.288 196.229 402.136] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +2433 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.325 391.288 212.28 402.136] +/Subtype /Link +/A << /S /GoTo /D (page.68) >> +>> endobj +2434 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.437 379.333 204.393 390.181] +/Subtype /Link +/A << /S /GoTo /D (page.55) >> +>> endobj +2435 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.402 367.378 206.357 378.115] +/Subtype /Link +/A << /S /GoTo /D (page.54) >> +>> endobj +2436 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.154 355.423 191.109 366.16] +/Subtype /Link +/A << /S /GoTo /D (page.54) >> +>> endobj +2437 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.407 343.468 227.362 354.316] +/Subtype /Link +/A << /S /GoTo /D (page.54) >> +>> endobj +2438 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.407 331.512 227.362 342.361] +/Subtype /Link +/A << /S /GoTo /D (page.55) >> +>> endobj +2439 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.229 319.557 193.185 330.405] +/Subtype /Link +/A << /S /GoTo /D (page.53) >> +>> endobj +2440 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.47 307.602 225.425 318.45] +/Subtype /Link +/A << /S /GoTo /D (page.27) >> +>> endobj +2441 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.104 295.647 182.06 306.384] +/Subtype /Link +/A << /S /GoTo /D (page.27) >> +>> endobj +2442 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.726 283.692 186.681 294.429] +/Subtype /Link +/A << /S /GoTo /D (page.27) >> +>> endobj +2443 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [230.821 271.737 242.777 282.585] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +2444 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.179 259.781 199.135 270.63] +/Subtype /Link +/A << /S /GoTo /D (page.28) >> +>> endobj +2445 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.622 247.826 199.577 258.674] +/Subtype /Link +/A << /S /GoTo /D (page.47) >> +>> endobj +2446 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.703 235.871 170.658 246.719] +/Subtype /Link +/A << /S /GoTo /D (page.47) >> +>> endobj +2447 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [198.277 223.916 210.232 234.764] +/Subtype /Link +/A << /S /GoTo /D (page.74) >> +>> endobj +2448 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.328 223.916 226.283 234.764] +/Subtype /Link +/A << /S /GoTo /D (page.75) >> +>> endobj +2449 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.703 211.961 170.658 222.809] +/Subtype /Link +/A << /S /GoTo /D (page.74) >> +>> endobj +2450 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.54 200.006 184.495 210.854] +/Subtype /Link +/A << /S /GoTo /D (page.75) >> +>> endobj +2451 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.644 188.05 208.599 198.899] +/Subtype /Link +/A << /S /GoTo /D (page.75) >> +>> endobj +2452 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.684 176.095 175.639 186.833] +/Subtype /Link +/A << /S /GoTo /D (page.75) >> +>> endobj +2453 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.374 164.14 184.329 174.988] +/Subtype /Link +/A << /S /GoTo /D (page.75) >> +>> endobj +2454 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.257 152.185 193.212 163.033] +/Subtype /Link +/A << /S /GoTo /D (page.75) >> +>> endobj +2455 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.809 140.23 223.764 151.078] +/Subtype /Link +/A << /S /GoTo /D (page.47) >> +>> endobj +2456 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [226.753 140.23 238.708 151.078] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +2457 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [198.249 128.275 210.204 139.123] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +2458 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.684 116.319 175.639 127.057] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +2459 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.431 104.364 191.386 115.212] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +2460 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [198.996 92.409 210.951 103.257] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +2461 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.046 80.454 220.001 91.302] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +2462 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [415.739 690.167 427.694 701.016] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +2463 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.872 678.212 458.827 689.06] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +2464 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [410.315 666.257 422.27 677.105] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +2465 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [410.453 654.302 422.408 665.039] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +2466 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [409.18 642.347 421.135 653.195] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +2467 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [431.956 630.392 443.911 641.24] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +2468 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [431.126 618.436 443.081 629.285] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +2469 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [423.543 606.481 435.498 617.329] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +2470 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [384.08 594.526 396.035 605.264] +/Subtype /Link +/A << /S /GoTo /D (page.48) >> +>> endobj +2471 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [430.462 582.571 442.417 593.419] +/Subtype /Link +/A << /S /GoTo /D (page.29) >> +>> endobj +2472 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [386.626 570.616 398.581 581.353] +/Subtype /Link +/A << /S /GoTo /D (page.29) >> +>> endobj +2473 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.128 558.661 383.084 569.509] +/Subtype /Link +/A << /S /GoTo /D (page.29) >> +>> endobj +2474 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [377.77 546.705 389.725 557.554] +/Subtype /Link +/A << /S /GoTo /D (page.29) >> +>> endobj +2475 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [370.436 534.75 382.392 545.488] +/Subtype /Link +/A << /S /GoTo /D (page.29) >> +>> endobj +2476 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [426.947 522.795 438.902 533.533] +/Subtype /Link +/A << /S /GoTo /D (page.29) >> +>> endobj +2477 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [441.891 522.795 453.846 533.533] +/Subtype /Link +/A << /S /GoTo /D (page.32) >> +>> endobj +2478 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.941 510.84 410.896 521.688] +/Subtype /Link +/A << /S /GoTo /D (page.30) >> +>> endobj +2479 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [437.684 498.885 449.64 509.733] +/Subtype /Link +/A << /S /GoTo /D (page.30) >> +>> endobj +2480 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [400.518 486.93 412.473 497.778] +/Subtype /Link +/A << /S /GoTo /D (page.30) >> +>> endobj +2481 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [405.998 474.974 417.953 485.823] +/Subtype /Link +/A << /S /GoTo /D (page.30) >> +>> endobj +2482 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.808 463.019 401.763 473.867] +/Subtype /Link +/A << /S /GoTo /D (page.30) >> +>> endobj +2483 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [429.825 451.064 441.78 461.912] +/Subtype /Link +/A << /S /GoTo /D (page.30) >> +>> endobj +2484 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [423.183 439.109 435.138 449.957] +/Subtype /Link +/A << /S /GoTo /D (page.30) >> +>> endobj +2485 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [414.231 427.154 426.186 438.002] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +2486 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [405.679 415.199 417.635 426.047] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +2487 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [404.199 403.243 416.154 414.092] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +2488 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.775 391.288 395.731 402.026] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +2489 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.858 379.333 395.814 390.071] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +2490 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [413.912 367.378 425.868 378.115] +/Subtype /Link +/A << /S /GoTo /D (page.32) >> +>> endobj +2491 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [408.35 355.423 420.305 366.271] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +2492 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [397.695 343.468 409.651 354.205] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +2493 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [417.925 331.512 429.88 342.361] +/Subtype /Link +/A << /S /GoTo /D (page.31) >> +>> endobj +2494 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [439.677 319.557 451.632 330.405] +/Subtype /Link +/A << /S /GoTo /D (page.32) >> +>> endobj +2495 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [455.728 319.557 467.683 330.405] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +2496 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [409.83 307.602 421.786 318.45] +/Subtype /Link +/A << /S /GoTo /D (page.32) >> +>> endobj +2497 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.808 295.647 401.763 306.495] +/Subtype /Link +/A << /S /GoTo /D (page.32) >> +>> endobj +2498 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.494 283.692 411.449 294.54] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +2499 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [376.248 271.737 388.203 282.474] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +2500 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [433.755 259.781 445.71 270.63] +/Subtype /Link +/A << /S /GoTo /D (page.76) >> +>> endobj +2501 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [449.806 259.781 461.761 270.63] +/Subtype /Link +/A << /S /GoTo /D (page.77) >> +>> endobj +2502 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [395.343 247.826 407.298 258.674] +/Subtype /Link +/A << /S /GoTo /D (page.76) >> +>> endobj +2503 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.503 235.871 405.458 246.719] +/Subtype /Link +/A << /S /GoTo /D (page.76) >> +>> endobj +2504 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [394.859 223.916 406.814 234.653] +/Subtype /Link +/A << /S /GoTo /D (page.77) >> +>> endobj +2505 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [423.944 211.961 435.899 222.809] +/Subtype /Link +/A << /S /GoTo /D (page.77) >> +>> endobj +2506 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.633 200.006 411.588 210.743] +/Subtype /Link +/A << /S /GoTo /D (page.76) >> +>> endobj +2507 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [463.366 188.05 475.321 198.788] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +2508 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [416.292 176.095 428.248 186.833] +/Subtype /Link +/A << /S /GoTo /D (page.16) >> +>> endobj +2509 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [431.236 176.095 443.192 186.833] +/Subtype /Link +/A << /S /GoTo /D (page.18) >> +>> endobj +2510 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [431.043 164.14 442.998 174.988] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +2511 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [408.267 152.185 420.222 162.922] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +2512 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.858 140.23 395.814 150.967] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +2513 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.771 128.275 411.726 139.123] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +2514 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.941 116.319 410.896 127.168] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +2515 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [416.016 104.364 427.971 115.212] +/Subtype /Link +/A << /S /GoTo /D (page.18) >> +>> endobj +2516 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [416.541 92.409 428.497 103.147] +/Subtype /Link +/A << /S /GoTo /D (page.18) >> +>> endobj +2517 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [384.855 80.454 396.81 91.302] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +2403 0 obj << +/D [2401 0 R /XYZ 109.858 727.97 null] +>> endobj +2400 0 obj << +/Font << /F29 416 0 R /F8 369 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2520 0 obj << +/Length 5324 +/Filter /FlateDecode +>> +stream +xÚ]Ûr7’}×WðQŒØª-\êö(Q–¬‰°Wä¬7bfÚdÕë&[K¶ÆïÏo&€Dãš":–šRžLà4H pJâb€ÿÄ…Ö~—‹YÎý:_Ü>¼.îáo>¼΢S¢_øˆ×ÏæOŸÀÄ}üt².:ٯˊ–ÿûê¯.îÀÛŸ¥×åâwø<ôR¯¯ô¸ör^ÜÏûWׯþÓ{±7_xWYƒÈâMêfìÖ¿ûþ½½yõïïåza~¾ùÇ…³p7w}ýññn{)õëo—¿ùÓ«n¼·Uõó¬9®œE!ÜÒ¯Ó„ñF¹öCp•i¤QͽG.™¤±–‹B) % Ô¼¨‹ š%abÝ\.êõᲓËëÃþR¼~{Ù ø~üöó¥\_¾|ýüoi‹ä0ôj”Þ—¡^]ØÿgKÿéÇð+ d@Ó–¦Þ±¥bÎÚ ÀJŒQRZȆ‹Fƒ~ZD/ôdy¹1Lü72qõõùxxøÍ¯†¦í¾@†ì')¼ƒ2,²  9±wlžR9²µ!'ÃÚ°Ñ?-ï°Xúi–çtØ!ù&ÄÞM‡uÖ Vjä;ìl¸h~VLk/V;Ö®ž¶›ã@Öu1é~Z¼õË{î€]€Ìšû.÷[Ì`¤UÔ‚´ßdã~8€#ŒöþrÑ.Übï¿ÂÔÆW‡Gœ GøùéO“k‚äC¾XqÈ.€f-M¼W&ÀVb‰ÚgÃF#^ôØËÅûËãtÜŒ‡'ø°ß=Ò9ó‹˜ tØYËbßeÄFƒ +gÂ…"”ê•¿ÃÂÕax*¯²pD;7m‰q0Óå-%ÆÐ{%O@B”ˆÚPJŒhÃEó«„½šk‹Äîñ·b]`j·Ì ìNÈ|zD¾+, `4NaòÉaM¸P4,€ -,ã6÷f|Äñp·ý–w~™ú×i‡jè½Cv4kSâ½’5ש×Pf…mÈæ…³a£9ÆuîÝÒä x.,S?¬’¬[ ìNÈ|±ˆ|× 0uØ€|­°&\(7ôÇeìÇAWÇþó±0ð!Å £‡¶Œ|‹ìh>ôcïØ°iÈÇþØ‹iŽÚ~kÃEKý`´ÿ+¥v1í&$Û„Ä»ép¾J°‚ï°³aé¥Á>«~„¨/+Ⱥ½4 +•Ò(lÉ$j¥QØ‚jiÄ£~O¢WËòÇãöá;Y6¶rö –,g‘]ͳ\ì½BÀ +þa›¶!ÏrÖ†FèêgK÷Ÿ7¿á\ßþ×îy÷ë¾^-°Ÿ„‡¶Ð`‘]Íiˆ½×h+©£6ä4X6Ñ{ëiÑŽ†oÐw {¿ƒ¿î·46ž DÑÒ{h)€,²  yBн—Ù¬`‚‡mÈ kÃEólȱŸå°ñË+ÃãçÂ`P¦4!HË`°È.€æƒ!ö^ `5ÎQòÁ`mØhÔ}‡:ÊvÀã/øëÝñs±ðƒ§ÄèÕ€Ev4g ö^c¬dÔ„œcÂÆ¢þ¢_„Ý~ü„ÉðÍÝÿÀ¯P|4“Š¡§Â·â¶\ LSÎUìpÈ.€f³"ñnHÉŽÔ¤«QDmÈf…³á¢-2Ó2©-WØ}›Çûmq\,°ü¬m\ ²  ¥qz/S€_:~ÙaJmØhDžKB_*6¸Eühk‡‡B¡(! 拉P´È.€æ…bì½2&`C‰+b؆¼P´6l4"dûu ÆÄ»§ ®¡¿³,ÌÓê‘m, ²  %Bïuf%£6”X@6±0ª~]ƒañçíæ™N—ž¶?*v÷Ÿñ¸ùX8jÔ½œ¥÷ÒRO[d@óz:ö^aDjsZ¶!¯§­ Í3¢¥Y·+ŒT—S Ù°ßÂ…Ev4ç"ö^Û[€l¹Â6ä\X.šçB ý°Øc‹kL—æáÃï¦ÔÆõ3[eúŒ*3€ÖªÌ°mõ*3lCµÊ䢹ݵK/”¬ì®ÆÀÇõíÓa¿ß>åƒCטó›†Áá]ÍGâÝ7ŒY´è×YGmȇ³a£%~Ê!ôß’<§ÃÉ7!ön:l·÷´®‚9àÄïfá.9j»›…È.€–îf…Þ+‰¾×IÏQJw³Ð†‹F›#‰‹ií©û§ÍÝîðÖ¬ P6vFº_ ”w>Z6FØù¾(ò]!Cƒìƒä»"kÂ…Š½”÷DãЯBÑUäâǾMWó;yÓÐ/°Òs]u&L(?&ÙÏî™þÕçíí¥œ_Û§Pw…ÔU; "´¤>‹ìhžúbïåÞãÎwùaòÔgmØhÔ |¶+îœêsó£MµÇ3lÝ&‚¶,€Øùúù®p°‚ÎØSòÕÏšp¡ˆµô‹{ÐÝp¬N°3ŽÕhíX=lT‰{d¶¡z¬ÎE£ÔÅóâžyç¹ïGÄîñ¸YlB¾ 6õ[¬½ ¯˜åæhÏ Â,Q8&ÐàÊ{j9%0À.@懑ï2#¸ÜÏZE-ÈϬ Ìs2̽ /¤IòªºoøtjÒÞE ÙМØ{¥``%§¨ 9Ö†‹Ft¬c¯ÂK)vˆÜ äÇŽ›cù0É|“ÎYû 9+c$hf‰ûõá«#¤‰ ¥Üã|wzüÛ tñŽšp[¦%cX`wBæ #ò]Y9f0SØ€¤ëBú¡…¾º¿ÌõºRÁ;síQòÎ C~¢q‚Áçü¨AáäQŸ¡%$§ÊL½—YRP>j1³P²a£æðÚ<}ÊW5Ã$„­n»ú‘œ1õ^é÷V¬öÑZ°‘¨ÏÞÐ'lÌþbû渒ø‚âç§mu¶h¹ôÃ"ÏE’“*¦ÞË[.­À +6Óœ0’l¸hž–@nÒòÖ0‚Üž¶QÉiQ3̹3d‘ÈéßN E(­XQ$ÙpÁ<''é![z+¨dVØÒ7Ë Èhß厫eé—iæddÂ…¢n +ðß7x ý¯/—ü–“ (q†ú‘œ1õ^JÉ@ÈYΆ‹¦` +Žê;êÇëãæh$Ãoý}ßœ …ˆ/äÄybâÛ\ÛËJ +gÎbå”dÂ…Š½O!5lçæ3:j`lìÀ¯éä’…† +cÂËtÒ™0üð¤•ïw¸¼Ùïî‹ ^´ÔZOBrêËÔ»éü”Ï;ÙÓÄj=Ɇæº(,?lö"¦×>ïß”¡ô0š‹oÍÒO2zÌÄ·aaÎg>Ö+'ý$&”ç Hø´½-P ðîßJH䤉‰ï +xÓF(VI6\0OB >dT¿jÉ,ÏB’'¦ÞËs/ÎJ³RH²a£Q×Ýa¬ú¡WClíoŸ )¥Ñ0Ê^ ˆ¸YIHN±˜z¯ ˆ Ÿâ +VI6\4ÏJ CŒYyo6×eMƒvëÚ5’„äT‹©÷ÚܰWò8$ÙpÑ<ÑPáRÄvµßÝâçߊ Â(µšÕ‘„äôŠ©÷zŽ£dÕ‘dÃEó<bʇw¿âE† 5ÀîTž!–$$'_L½Wꨠ†I³bI²á¢y6abºf”',ïët†X’œ€1õ^KœÒësjI²a£ +ÑÜæ6"IÜNî·~hª‡ÅœT´+$ ÉiSï•2J,v,0 +I²á¢¡1e"9½.ð¡Î”K’0¦Þk|Ø·¹qrI²á¢y>-bpÏÿÃ~.œ:á•”å5 $ ÉISïµÊZÀâ’dÃF# +!â_žÍ÷ ÿ—})S<ð‹)l_4”‚í’IBr"ÆÔ{…V(áb$“dÃE£]v(GÌ·ÙÑ;ûÌ[ú6û-1V¹ayÄx†Œ’œ°1õŽížó¥Ï—æ…•Q’ -ñSÞ|C'!GŸÑa‡d›x7^³6ÌÒ¨~Ø;.šŸ.2óê°¿:|­Ì µN½‚z­](JHNº™z¯|ÛX ’Š’ :ˆ1™›? +sLgCSj&¾M¿—œ{¦Þë©s\+³$.šç!2^o÷öf±ßyÝ‹ku%m×Zú•”Q?¦Þù•”ÓZú•”‰F¯PÙH¯wó|·RO¨eì©ÎP\’Ó@¦Þ͋Р%çydb—dÃFKü%f¸¿_yçËŸj/ß}¦ÞM‡×ÒSíEÍl‡É†í°›ºÓCØÌèï@Ù}–}¬moïŸlª¸+>äE/õØ®H% #M|WšðéÌ)RÉ„ E³"”zgÅå8…2ýô¤·|cæ7jÉšEª„äd£©÷²R ¯ÐØÅs"U²a£%~ʰÅçˆrm@ìãkQ|7(¾·Î† æ'ÍIúöðt·}£»ê>æõ(t»0•€ŒZ4ñ]ù®!hüwDêÂT2aBù¾‡ÂÔÍ—#V‡ÇO|3ùXï3ìŒÚ婄䣩wÃÁRﳬ<•l¸hž…“ôû'2Í‚T:©‹DcÏfÔµãFŽêOc˜HÔã@ùùŽþ¡\¼ô×÷J;|[ÇçJ))Æ^b~jÖ©’SަÞ+£AŽæ “Ó©’ ÍsÈ!ëÜT_n‡k5ìjÛ5›„äT”©÷%`%y*ÙpÑ<%6ò‡¿ B¹ú‡ÆI­Sýçð{\0g5 8 ÉI*SïõQ‚o{`ô›Î„‹å D“ï÷‡Íш—ïÜîÜL)Óû:|ñA³š“œÂ2õ^£aí'Tö3zN²á¢¡‚2 âü­ò*a<EzÛ¥„äÄ–©÷ `•ÈKs¬ ÍÓÈ(­°ñt€Þ/H¨t…M^»ê“œ3õ^[^ÁjäUŸdÃEóädªÏ"9õŒ +­Óx†”œ(3õn8YKœ9³P²á¢yN2 èÕ~箞²H±ú`“Ó.%$'ÎL½×¨+^ êL¸Xžˆ@f™Á½ïtIüBšE „äd™©÷SúpFêL¸Xž‰Tz*>üÛb>mŸwPy¼/œòŽàv=C JHN´™z¯ìÏ4X)Á*DɆ‹æy Ä—É›uaËâN{±"û¼}Œwóåìèyè‡Uœ!%$'âL½WFÎV#/%.šç(Pd^?¸;¸®W°ö†ësu§ëîB´KIýM FÜ™z¯ÐänHpRRÓ‚‰F4M'Š{‡‹½¦cznËï(ÅûP|«ÍòQ2ªÎÄw… ‰ÿvœæ¤d„"Á¦Q„íwÇ锫úsº]Ö¬$õW×êÊÍÄw…w)­®$íøA±i%ì² .rjcµéÿ«µsõendstream +endobj +2519 0 obj << +/Type /Page +/Contents 2520 0 R +/Resources 2518 0 R +/MediaBox [0 0 612 792] +/Parent 2054 0 R +/Annots [ 2522 0 R 2523 0 R 2524 0 R 2525 0 R 2526 0 R 2527 0 R 2528 0 R 2529 0 R 2530 0 R 2531 0 R 2532 0 R 2533 0 R 2534 0 R 2535 0 R 2536 0 R 2537 0 R 2538 0 R 2539 0 R 2540 0 R 2541 0 R 2542 0 R 2543 0 R 2544 0 R 2545 0 R 2546 0 R 2547 0 R 2548 0 R 2549 0 R 2550 0 R 2551 0 R 2552 0 R 2553 0 R 2554 0 R 2555 0 R 2556 0 R 2557 0 R 2558 0 R 2559 0 R 2560 0 R 2561 0 R 2562 0 R 2563 0 R 2564 0 R 2565 0 R 2566 0 R 2567 0 R 2568 0 R 2569 0 R 2570 0 R 2571 0 R 2572 0 R 2573 0 R 2574 0 R 2575 0 R 2576 0 R 2577 0 R 2578 0 R 2579 0 R 2580 0 R 2581 0 R 2582 0 R 2583 0 R 2584 0 R 2585 0 R 2586 0 R 2587 0 R 2588 0 R 2589 0 R 2590 0 R 2591 0 R 2592 0 R 2593 0 R 2594 0 R 2595 0 R 2596 0 R 2597 0 R 2598 0 R 2599 0 R 2600 0 R 2601 0 R 2602 0 R 2603 0 R 2604 0 R 2605 0 R 2606 0 R 2607 0 R 2608 0 R 2609 0 R 2610 0 R 2611 0 R 2612 0 R 2613 0 R 2614 0 R 2615 0 R 2616 0 R 2617 0 R 2618 0 R 2619 0 R 2620 0 R 2621 0 R 2622 0 R 2623 0 R 2624 0 R 2625 0 R 2626 0 R 2627 0 R 2628 0 R 2629 0 R 2630 0 R 2631 0 R 2632 0 R 2633 0 R 2634 0 R ] +>> endobj +2522 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.356 690.167 211.311 701.016] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +2523 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.625 678.212 213.58 689.06] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +2524 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.676 678.212 229.631 689.06] +/Subtype /Link +/A << /S /GoTo /D (page.34) >> +>> endobj +2525 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.684 666.257 175.639 676.995] +/Subtype /Link +/A << /S /GoTo /D (page.34) >> +>> endobj +2526 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.659 654.302 204.614 665.15] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +2527 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.244 642.347 189.199 653.195] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +2528 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.072 630.392 213.027 641.24] +/Subtype /Link +/A << /S /GoTo /D (page.34) >> +>> endobj +2529 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.197 618.436 209.153 629.285] +/Subtype /Link +/A << /S /GoTo /D (page.34) >> +>> endobj +2530 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.519 606.481 197.474 617.329] +/Subtype /Link +/A << /S /GoTo /D (page.34) >> +>> endobj +2531 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [165.095 594.526 177.051 605.264] +/Subtype /Link +/A << /S /GoTo /D (page.34) >> +>> endobj +2532 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.209 582.571 206.164 593.308] +/Subtype /Link +/A << /S /GoTo /D (page.60) >> +>> endobj +2533 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.153 582.571 221.108 593.308] +/Subtype /Link +/A << /S /GoTo /D (page.63) >> +>> endobj +2534 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.684 570.616 175.639 581.353] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +2535 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.431 558.661 191.386 569.509] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +2536 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.065 546.705 200.02 557.554] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +2537 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.046 534.75 220.001 545.598] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +2538 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.198 522.795 194.153 533.643] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +2539 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.261 510.84 192.216 521.688] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +2540 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [228.192 498.885 240.147 509.733] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +2541 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.814 486.93 192.769 497.778] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +2542 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [191.635 474.974 203.59 485.823] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +2543 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [191.773 463.019 203.728 473.757] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +2544 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.276 451.064 225.231 461.912] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +2545 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.446 439.109 224.401 449.957] +/Subtype /Link +/A << /S /GoTo /D (page.63) >> +>> endobj +2546 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.065 427.154 200.02 438.002] +/Subtype /Link +/A << /S /GoTo /D (page.61) >> +>> endobj +2547 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.015 415.199 242.97 426.047] +/Subtype /Link +/A << /S /GoTo /D (page.35) >> +>> endobj +2548 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.066 415.199 259.021 426.047] +/Subtype /Link +/A << /S /GoTo /D (page.36) >> +>> endobj +2549 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.997 403.243 195.952 413.981] +/Subtype /Link +/A << /S /GoTo /D (page.35) >> +>> endobj +2550 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.119 391.288 193.074 402.136] +/Subtype /Link +/A << /S /GoTo /D (page.35) >> +>> endobj +2551 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.89 379.333 194.845 390.071] +/Subtype /Link +/A << /S /GoTo /D (page.35) >> +>> endobj +2552 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.684 367.378 175.639 378.115] +/Subtype /Link +/A << /S /GoTo /D (page.36) >> +>> endobj +2553 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [216.016 355.423 227.971 366.271] +/Subtype /Link +/A << /S /GoTo /D (page.36) >> +>> endobj +2554 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.023 343.468 225.978 354.316] +/Subtype /Link +/A << /S /GoTo /D (page.36) >> +>> endobj +2555 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [166.175 331.512 178.13 342.25] +/Subtype /Link +/A << /S /GoTo /D (page.35) >> +>> endobj +2556 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.993 319.557 196.948 330.295] +/Subtype /Link +/A << /S /GoTo /D (page.35) >> +>> endobj +2557 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.215 307.602 182.17 318.34] +/Subtype /Link +/A << /S /GoTo /D (page.36) >> +>> endobj +2558 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [162.134 295.647 174.089 306.384] +/Subtype /Link +/A << /S /GoTo /D (page.36) >> +>> endobj +2559 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.688 283.692 211.643 294.54] +/Subtype /Link +/A << /S /GoTo /D (page.36) >> +>> endobj +2560 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [233.865 271.737 245.821 282.585] +/Subtype /Link +/A << /S /GoTo /D (page.36) >> +>> endobj +2561 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [249.916 271.737 261.872 282.585] +/Subtype /Link +/A << /S /GoTo /D (page.37) >> +>> endobj +2562 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.128 259.781 183.084 270.63] +/Subtype /Link +/A << /S /GoTo /D (page.37) >> +>> endobj +2563 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.999 247.826 198.955 258.674] +/Subtype /Link +/A << /S /GoTo /D (page.37) >> +>> endobj +2564 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.814 235.871 192.769 246.719] +/Subtype /Link +/A << /S /GoTo /D (page.37) >> +>> endobj +2565 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [235.941 223.916 247.896 234.764] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +2566 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [250.885 223.916 262.84 234.764] +/Subtype /Link +/A << /S /GoTo /D (page.55) >> +>> endobj +2567 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [176.746 211.961 188.701 222.698] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +2568 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.684 200.006 175.639 210.743] +/Subtype /Link +/A << /S /GoTo /D (page.53) >> +>> endobj +2569 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.16 188.05 182.115 198.899] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +2570 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.628 176.095 190.583 186.833] +/Subtype /Link +/A << /S /GoTo /D (page.51) >> +>> endobj +2571 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.6 164.14 190.556 174.988] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +2572 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [176.663 152.185 188.618 163.033] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +2573 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.779 140.23 194.734 150.967] +/Subtype /Link +/A << /S /GoTo /D (page.54) >> +>> endobj +2574 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.531 128.275 179.486 139.012] +/Subtype /Link +/A << /S /GoTo /D (page.54) >> +>> endobj +2575 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.784 116.319 215.739 127.168] +/Subtype /Link +/A << /S /GoTo /D (page.54) >> +>> endobj +2576 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.167 104.364 217.123 115.212] +/Subtype /Link +/A << /S /GoTo /D (page.55) >> +>> endobj +2577 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.784 92.409 215.739 103.257] +/Subtype /Link +/A << /S /GoTo /D (page.55) >> +>> endobj +2578 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.957 80.454 176.912 91.302] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +2579 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.458 690.167 391.413 701.016] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +2580 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.141 678.212 387.096 688.95] +/Subtype /Link +/A << /S /GoTo /D (page.52) >> +>> endobj +2581 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [427.085 666.257 439.04 677.105] +/Subtype /Link +/A << /S /GoTo /D (page.53) >> +>> endobj +2582 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [436.384 654.302 448.339 665.15] +/Subtype /Link +/A << /S /GoTo /D (page.53) >> +>> endobj +2583 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [377.908 642.347 389.864 653.195] +/Subtype /Link +/A << /S /GoTo /D (page.53) >> +>> endobj +2584 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [400.324 630.392 412.28 641.24] +/Subtype /Link +/A << /S /GoTo /D (page.53) >> +>> endobj +2585 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [439.76 618.436 451.715 629.174] +/Subtype /Link +/A << /S /GoTo /D (page.65) >> +>> endobj +2586 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [454.704 618.436 466.659 629.174] +/Subtype /Link +/A << /S /GoTo /D (page.68) >> +>> endobj +2587 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.607 606.481 403.562 617.329] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +2588 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [404.96 594.526 416.915 605.374] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +2589 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [413.954 582.571 425.909 593.419] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +2590 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.775 570.616 395.731 581.353] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +2591 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [451.162 558.661 463.117 569.509] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +2592 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [416.016 546.705 427.971 557.554] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +2593 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [413.193 534.75 425.148 545.598] +/Subtype /Link +/A << /S /GoTo /D (page.67) >> +>> endobj +2594 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [429.105 522.795 441.061 533.643] +/Subtype /Link +/A << /S /GoTo /D (page.68) >> +>> endobj +2595 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [381.7 510.84 393.655 521.688] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +2596 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [407.105 498.885 419.06 509.733] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +2597 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [402.815 486.93 414.77 497.778] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +2598 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.735 474.974 402.691 485.712] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +2599 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [420.499 463.019 432.454 473.757] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +2600 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.319 451.064 458.274 461.912] +/Subtype /Link +/A << /S /GoTo /D (page.77) >> +>> endobj +2601 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.263 451.064 473.218 461.912] +/Subtype /Link +/A << /S /GoTo /D (page.79) >> +>> endobj +2602 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [395.343 439.109 407.298 449.957] +/Subtype /Link +/A << /S /GoTo /D (page.77) >> +>> endobj +2603 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [382.364 427.154 394.319 437.891] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +2604 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [429.659 415.199 441.614 426.047] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +2605 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [406.136 403.243 418.091 414.092] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +2606 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.494 391.288 411.449 402.136] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +2607 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [433.699 379.333 445.655 390.181] +/Subtype /Link +/A << /S /GoTo /D (page.79) >> +>> endobj +2608 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [419.489 367.378 431.444 378.226] +/Subtype /Link +/A << /S /GoTo /D (page.79) >> +>> endobj +2609 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [429.783 355.423 441.739 366.271] +/Subtype /Link +/A << /S /GoTo /D (page.79) >> +>> endobj +2610 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [418.783 343.468 430.738 354.316] +/Subtype /Link +/A << /S /GoTo /D (page.77) >> +>> endobj +2611 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.633 331.512 411.588 342.25] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +2612 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [406.136 319.557 418.091 330.405] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +2613 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [384.827 307.602 396.782 318.45] +/Subtype /Link +/A << /S /GoTo /D (page.18) >> +>> endobj +2614 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [400.878 307.602 412.833 318.45] +/Subtype /Link +/A << /S /GoTo /D (page.19) >> +>> endobj +2615 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [450.248 295.647 462.204 306.495] +/Subtype /Link +/A << /S /GoTo /D (page.19) >> +>> endobj +2616 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [426.2 283.692 438.155 294.54] +/Subtype /Link +/A << /S /GoTo /D (page.37) >> +>> endobj +2617 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [441.144 283.692 453.099 294.54] +/Subtype /Link +/A << /S /GoTo /D (page.41) >> +>> endobj +2618 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [400.518 271.737 412.473 282.585] +/Subtype /Link +/A << /S /GoTo /D (page.37) >> +>> endobj +2619 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [426.753 259.781 438.708 270.519] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +2620 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [382.364 247.826 394.319 258.564] +/Subtype /Link +/A << /S /GoTo /D (page.40) >> +>> endobj +2621 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [414.3 235.871 426.255 246.719] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +2622 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [413.47 223.916 425.425 234.764] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +2623 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [414.881 211.961 426.836 222.809] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +2624 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [418.728 200.006 430.683 210.854] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +2625 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [417.898 188.05 429.853 198.899] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +2626 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [427.998 176.095 439.954 186.943] +/Subtype /Link +/A << /S /GoTo /D (page.38) >> +>> endobj +2627 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [427.168 164.14 439.123 174.988] +/Subtype /Link +/A << /S /GoTo /D (page.39) >> +>> endobj +2628 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [426.061 152.185 438.016 163.033] +/Subtype /Link +/A << /S /GoTo /D (page.39) >> +>> endobj +2629 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [425.231 140.23 437.186 151.078] +/Subtype /Link +/A << /S /GoTo /D (page.39) >> +>> endobj +2630 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [434.972 128.275 446.928 139.123] +/Subtype /Link +/A << /S /GoTo /D (page.41) >> +>> endobj +2631 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [469.094 116.319 481.05 127.168] +/Subtype /Link +/A << /S /GoTo /D (page.39) >> +>> endobj +2632 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.319 104.364 458.274 115.212] +/Subtype /Link +/A << /S /GoTo /D (page.39) >> +>> endobj +2633 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [412.695 92.409 424.65 103.147] +/Subtype /Link +/A << /S /GoTo /D (page.39) >> +>> endobj +2634 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [402.815 80.454 414.77 91.302] +/Subtype /Link +/A << /S /GoTo /D (page.39) >> +>> endobj +2521 0 obj << +/D [2519 0 R /XYZ 109.858 727.97 null] +>> endobj +2518 0 obj << +/Font << /F29 416 0 R /F8 369 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2637 0 obj << +/Length 5453 +/Filter /FlateDecode +>> +stream +xÚ]Ys7’~ׯà#¡ª-uàQ¦åµg­WÔØ1;-±‡j¯m6G²÷Ïo&€DãL±:Î/ÈJ$ÇWgü'ÎÄ`úe\Îf9÷f>ûtûb8»†Oþó…ðý²À·øY?ÛßîAÄûþ(9œu²7‹AÉÿ}ñ÷ gW í/€Òf9ûß½Ôæìö…M/çÅÿ|óâòÅ-î³ù,¨*DÏhR7c·øú÷݇ÿñƒ4göçÿ<ó^àÃÕßϺ»Ú¾”úüëË|øË‹7‚6£úyÖœ¯¼DÅÜÒ›iB{£4ý4*·4ª¹—ãÈ™"‘ÜÖrfÀ”BSLÍ‹:› YbÖÖåÃKq~³;ü_vWø÷ó«ÜºXt¯@žpÖÍêÌý?;WŒÝMÈ.‚­Ê´c«ôP´Áè^N:iCî’a­‘Ñ =9¿ß£¶/;q~ß|¿]Î?½„þ??â…ƒä¾cPú|²‹ y“síuI1÷â(nCî ’á¬M¦Æ=Ž¿:ß\mÛ‹Ï»ðÃÕÅýÍýþ±ô„0ýx¯p„v²ðCª»áh¾6i +7xÎ%Âiç«ÑZûðá;|ü³A1SP@xl¯ÞomdìþÜÝw®+~üeLP·Æ1ÙEÐÒ3©vëQº¤&™´¡t“á¬×è±—Kê™=ôþþ^ùr÷Óa{[u…Ђàë<À9"ÒMǚĠãÔÜ€"Œ©à¥z%Óyƒ#d‡‰äþ ßlî®·eb5S¯ç£Ž‰Õ#»Z´0Ón½1—¹ ¤tÒ„ÂN„µEÞ¢WsÃø›Ûê3HMèuó »#²6½Dºë!!`Â0Ë7 œ\œg*Õ‚¦þ¯´„3ÿrBW=µŸèn=oR‚ë*‰p¦h–€ç®…‹­×7»kÌ~·ö)ßa +À§^yÚ*•9`×ðϳJÚP‹”a­‘ fÞ2ÖÚ/›Gûè¿à÷÷{¬(/>oö¯jYAÀz€ðëÒ"»ZË ±öV0€¬Lâ6Ô2ʰÖÈ“èGã<ÿÞ¦„ ößFÆÍ/UóÒO0Ýt…<²‹ EÃ2ḭ́,ð©HÚP„„—a­‘´é'åœ~‰ƒÁÕFèŸn7Õq1ö²/׌ ‡ì"h9.Rí­ô8öô+nC9.œ kœ‹Óiq.¿ÄIa³?øº`_¹QÎ& ×%GDv´–cííô(µHÚPË(ÃZóÅÑ(Ç~–&©Žª%²˜ÀµÓ°¢óÙEТ9™vlŽ0åX)•4¡ˆ'ÂÚ¢® e“hÞõŸ7¸ˆúæG\…^ÕBQÍ"hXÙEÐ2RíÖ•𠤔NÚP‚“a­‘7œœ–Â0+î7w´Ñð`GÊöîS=]J©úAÌAÝŠ¥”Gv´XKeÚ±±RmP¸1—4¡ðŒál‘cô_§4L~Þ|´ËííMeœ˜~XD€­'ÙEÐrœ¤Úë«j1ƒ”VIÊâdXkäÜ€–† ˜%”…ª +ð5³†Cv´œ5Rí­j +¤ô˜´¡œ5œ k-ÓƒÖ^µÆäú‡‘Ê4!×n;¼”[c/ÍÄv˜dØûiRCf6£‹´‹Íƒïï*et æ_S&9dAË2)ÕÞxÖ HA1·¡,“œ kº>ÂÚÙ8G_ì·ç•¯a– Òk¼v²ï‰îú#3i•´ îN†5FýÖRƒHèu‹&Dv´¶hе·¦?Ìr2iCmÑ„2¬5ï …ÇYR'081Ô½ Ù/úˆ\3':dAË91ÕÞšAj˜’6”s¢“á¬Q=¤ÙËijÔCïö;:® Ž6Hª'SÑAߺ£)Dv´v6ko$Lx²bIj‡S(ÃY ¾©Z ‘úæ5î²üþDkˆƒÝeÀ3쯥O”è…œ‚ž>ñÈ.‚>É´c+§r¡dÇ%iCá/ÃY >!kY¼ØM†Õ« ¨K³²œÀóÊZ­'"í­õH‰1iCµ ÀSbÎõ_O½²˜xKƒdóø´§ïÜî®?ÛAS,S/”­,ÙEÐr°¤Úí`©œäb†”IÊÁâdXk™žújBá`;¥¿È6 ÕÝ $ß[/à a t¯õôŒ0ø ÇÕásuB¸=b‚¶5qà]-ã ÕÞŠ‚Â1nCN†µ–éiÄèqŠ[ß_dê¶q jéPÅ÷ÖËpÆBHÙk“¥ƒ_°˜ÚìÜŒ‰û°ÿ¶·¾ql«òÙ˜ qM±é]­­ùcí6Yš²À)œ@£6”Ŧ“á¬åzê±á¹Œ'ô×Ù¤º9"v’ï­—a}K± `-–ÝeÁ”ðýO?nî°j¸±!°o=ý³˜×±îé/6E¡µ§k·þÐÕ§ex܆êÓÇrž³æý!a3.wüfWÞW¹å&ñt|ѤfÍî«vGd™¬Ý @BQzŽPî½:ÆTðÆ2õ“,£ã=îÐÿÕ–P® ¬.¾ð^iX·øBdAk‹¯X{c_ÆàE%iCmñ…2¬5¿ø’Xr¹•Þmÿ°w»Ö(@r˜$!ÖlÆ9`wD–{q‰îF×ý —¨åNœ¿'Ø¢0˜d?‹g„Aýr×0ö£œƒ–u»²ˆì"hmW6Önýajy[›¤ µMYál…@¡¥Ó3÷%½ðúmÉ#°±+5c4­MÉÈ|sO’±D=V ¬ÎÝ¡èÛ÷˜á±?Öê•A~Mä;dAËÐOµ7z#Y´¡ ~'ÃZ£è‡Å¢MýO7v3>¿üªq¯ˆÔ¬™%Ým£YN’‰n[!•5Ëî%mA9G:ÖƒÐý’ÜâxÜýi¿þRÁÜ…—»íMåZ°zcæ mÍ\é]-'ËT{Ã3 +¤¦¤ åliE8[!PÙ•Š+«¯­w.Á%Ÿ¨šº¿¹ÙÖ/ýàìí5­Û¼µsúYÛ»t·b„”JZPÛºEÖ˜÷ ž›ây>yþ¯ÔX¿m¬ˆ ì"hA™vì*/ 5Ф …¿¼ g-ø …e-†`½ûø²Çóß·Ÿêûþ“‘AÁºÐAdAk±k·Á£jÁ3:iC-xP†³–ëi,Åt?Ã쵾Äd›i·.«m RÃÈwØË°îõ™OšåäíÆñ~Ý=î>ÞÐÎLõ˜D€®;äGdAk‡ü±öºp©†¥d܆Ú!¿-79kä†qì…¿^b¾ÞÞ‡½ëí·QIž8‡i˜Ë ¾¦ÐtÈ.‚–A™joD„€ÅÕ4%m(+M'ÃY ®Ðªþ¢IáŠŸÝÆúÃíÖT]bŽZÖy·“"dÍ!&maÝ &ލ5,6µÀâUúË—·ËÌrç¡® +{z¬Œj½€\3@,°‹åøHt·†ÒðTÒ‚rx8Öù@+¸z;ƒn_?ÚÛÕ˜+v®}U£Ì)a‚Š5³„Cv´œ%Rí4,¹eÒ†r–p2¬5š2‘ g–rʼxBï¼ÝÚŒñT¯Íç^ Gküá]-ý‘j·×å†*SpIJ8Öšãö´­;Ž#ãÃÂ:Çna}=ôªv‹C’T­IØ‘eÚHt7|"ðPoŒPf '˜¢YT¯–”ôÞ^<ßÝ÷t8´Î!KKAàu©ÝYK‘n;NÆZêÄ vQ2!!*´g9ûKr¶TP~Î\{”„ +U- ß–m¥÷s?"·v-o™€ ™8ÓÝê:|µ0Ã[&Îu<¢¿Áxß·à®êñ>ôB¨˜Ë„ä¸Ä¹öº 4¬¬†yd™Ë$ÃZ#'DÜà5<Y2¯™’ãçÚ¾À}9±Ìe’á¬_Daë‹ýæ–‰ˆX5«HË„ähĹöö€PPDs¤e’a­‘"vð;&óƒ3T'p• ɱ‡sí¾ÃúaY&–«L2¬5ê{Ä ¶w§-UÛ^ª\¡ÖÃõöxO™s8×ÞŠBZ)ÃS&ÎZð@D ~»ù +=¿ôg¾•T(,Gr=S™{8×ÞJ… ¥5KU&Öu?â?gm¸ž™Ö† W8×n«¿æÚc&‡µ!gú‘}-QoŸûÁžÜÊùüó/ø»ÝÚ0/ü ²²Xz3ŸBM&$Gε×}£åbO¬9n2ÉpÖÈ7 97[7ו˜úe6'0’ Éq„sí­˜)-YF2ɰ֨ß1#û½ýzpLu¼s÷©yf z…êÕ]Br¤Ù\{#HiÅRtI†³œ±bÝm¿üb H÷{v0@3êèºÈñg3Ý 'à›óÅ’uI†3œQd¿qd «^ŠS»„äX´¹öúYf#…áì’ kÍo–ĬØ›%Zàbï¯rÄÚLwcAâQ²,^’áŒ…àˆ˜³?¸‹ÔáRKuë@ ó d^BrôÚ\{ÃÞ{0,™—dXk䀈/‹Û¨öÒ\e¦X S'pw ɱisí±€¸î.ɰ֨ç?Ö½æçðôhÇÇf__H/°('°v Éñhsí­§Ý‚z˜cí’ kÍ'‡˜›$‡½[FW¯Ò¢^,CÖw ÉQisíuæ‘ 5–¸K2œ5 +†˜ +ëJInA-£Ýü_OÏ%$G˜Íµ×= ðVè'†žK2¬5 +… +=Cá ïËÚ´p¼­Àœ±ÂÒuOàè’cÍæÚ§Ž +¤ÏÑ%ÎZˆûíSÇõì\:udè²™nþÔ‘ãæ†SGÎõ;¢€~¿¿÷œ~÷N¸ùüKxgâý-†…ã¸ß¿ª:,×Ö“U ÉHsíˆÐ 2"GW%ÎZ*º*•/»ƒ[wR!UGp£Ó¨Sh›„䨔¹v;È2}‚ßÌÄ7I†µ–é©_EÀ<Œî_ßaä›j·.ç Rzæ;ìe8kapD\È|þo¸ípé–Xá—•\©a!7@Ù$$G£Ìµ7â@i{Œ#m’ g-¸%¢Dþp³9D—ÜlYá|²­îÀLb>°IHŽB™koøBZÒ!Ç×ô"œ-òDÄ…´·c?Ðëe]‰½½øl×[×õÉóTÅëÙšd(”™îÆxÁCX-8¶&‰0¦‚3b¶æçím{õ­õ ÄL䘒™îz`¨ÉÒ2I†5FÝ>!C¯/îŸïGÒþVÝjj&¾d¦»•#ARCÍ$ÆTè|LͤÞWV–°bS“9ƒIHŽ™k¯w\ùwGq$L’a­ùú ¢?Ry@[‘ï`Ì®L ¬…‚E»\OÏ$ ÚÌtׯwb™=è‘#h’g*ÕR¯ ðõAJÐUdí'ºmW§2Ïš~@žÓU/˜ +!±?×^GYÏK ÷Q¦h®½ñÀí…Ž•ꯤp–Èá3¼ï±z'e^Ä ÜSBr|Ð\{ýá£sIűOI†µF]Ù˳_™ð“Û`½°/šßW!¦ñê)!9:h®½5&@J²ÔS/ÂÙ +N‰H¿¹ë x_»ñ§gðÜ_˜Sx¦„丟¹ö†šX¢©amùÉ Æ3 ìX1ß|lm7ºë9¤áîÃê̵7ΞÓÁqHI†³–ë©ßODÎÀ)œYdê¶½UµÁ'µä{ëeXßúКßÞ8ZÏ¥#†¾™é®¿›6…8®hØ8âŒQ¿#Jæ›ÿ„ò•Î.yw“ý›\­[¹Ë<ŸÀ%$Çä̵×]bÙ> endobj +2639 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.305 690.167 195.26 701.016] +/Subtype /Link +/A << /S /GoTo /D (page.40) >> +>> endobj +2640 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.219 678.212 218.174 689.06] +/Subtype /Link +/A << /S /GoTo /D (page.40) >> +>> endobj +2641 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [218.534 666.257 230.489 677.105] +/Subtype /Link +/A << /S /GoTo /D (page.40) >> +>> endobj +2642 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.003 654.302 223.958 665.15] +/Subtype /Link +/A << /S /GoTo /D (page.41) >> +>> endobj +2643 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.145 642.347 223.1 653.084] +/Subtype /Link +/A << /S /GoTo /D (page.55) >> +>> endobj +2644 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.482 630.392 207.437 641.24] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +2645 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.028 618.436 194.983 629.285] +/Subtype /Link +/A << /S /GoTo /D (page.55) >> +>> endobj +2646 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.972 618.436 209.927 629.285] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +2647 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.261 606.481 192.216 617.329] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +2648 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.587 594.526 201.542 605.264] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +2649 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.814 582.571 192.769 593.419] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +2650 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.17 570.616 209.125 581.464] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +2651 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.632 558.661 189.587 569.509] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +2652 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.135 546.705 196.09 557.554] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +2653 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.283 534.75 201.238 545.598] +/Subtype /Link +/A << /S /GoTo /D (page.56) >> +>> endobj +2654 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.071 522.795 176.027 533.533] +/Subtype /Link +/A << /S /GoTo /D (page.19) >> +>> endobj +2655 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.375 510.84 206.33 521.577] +/Subtype /Link +/A << /S /GoTo /D (page.17) >> +>> endobj +2656 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [222.021 498.885 233.976 509.622] +/Subtype /Link +/A << /S /GoTo /D (page.22) >> +>> endobj +2657 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.084 486.93 180.039 497.778] +/Subtype /Link +/A << /S /GoTo /D (page.41) >> +>> endobj +2658 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.286 474.974 200.241 485.823] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +2659 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.337 474.974 216.292 485.823] +/Subtype /Link +/A << /S /GoTo /D (page.58) >> +>> endobj +2660 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.745 463.019 181.7 473.757] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +2661 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.684 451.064 175.639 461.802] +/Subtype /Link +/A << /S /GoTo /D (page.58) >> +>> endobj +2662 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.587 439.109 201.542 449.846] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +2663 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [166.175 427.154 178.13 437.891] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +2664 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.336 415.199 209.291 426.047] +/Subtype /Link +/A << /S /GoTo /D (page.58) >> +>> endobj +2665 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.993 403.243 196.948 413.981] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +2666 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.847 391.288 213.802 402.136] +/Subtype /Link +/A << /S /GoTo /D (page.58) >> +>> endobj +2667 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [218.202 379.333 230.157 390.181] +/Subtype /Link +/A << /S /GoTo /D (page.57) >> +>> endobj +2668 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [230.129 367.378 242.085 378.226] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +2669 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.656 355.423 175.612 366.271] +/Subtype /Link +/A << /S /GoTo /D (page.41) >> +>> endobj +2670 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.213 343.468 227.168 354.316] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +2671 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.264 343.468 243.219 354.316] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +2672 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.383 331.512 226.338 342.361] +/Subtype /Link +/A << /S /GoTo /D (page.50) >> +>> endobj +2673 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [230.434 331.512 242.389 342.361] +/Subtype /Link +/A << /S /GoTo /D (page.63) >> +>> endobj +2674 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [198.802 319.557 210.758 330.295] +/Subtype /Link +/A << /S /GoTo /D (page.49) >> +>> endobj +2675 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.853 319.557 226.809 330.295] +/Subtype /Link +/A << /S /GoTo /D (page.62) >> +>> endobj +2676 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [198.83 307.602 210.785 318.45] +/Subtype /Link +/A << /S /GoTo /D (page.64) >> +>> endobj +2677 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.388 295.647 232.343 306.495] +/Subtype /Link +/A << /S /GoTo /D (page.64) >> +>> endobj +2678 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.329 283.692 196.284 294.429] +/Subtype /Link +/A << /S /GoTo /D (page.58) >> +>> endobj +2679 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.066 271.737 185.021 282.585] +/Subtype /Link +/A << /S /GoTo /D (page.58) >> +>> endobj +2680 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.531 259.781 216.486 270.519] +/Subtype /Link +/A << /S /GoTo /D (page.59) >> +>> endobj +2681 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.684 247.826 175.639 258.564] +/Subtype /Link +/A << /S /GoTo /D (page.59) >> +>> endobj +2682 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.335 235.871 187.29 246.609] +/Subtype /Link +/A << /S /GoTo /D (page.59) >> +>> endobj +2683 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.223 223.916 202.179 234.764] +/Subtype /Link +/A << /S /GoTo /D (page.42) >> +>> endobj +2684 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.001 211.961 231.956 222.809] +/Subtype /Link +/A << /S /GoTo /D (page.42) >> +>> endobj +2685 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.474 200.006 209.429 210.854] +/Subtype /Link +/A << /S /GoTo /D (page.42) >> +>> endobj +2686 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.592 188.05 259.547 198.899] +/Subtype /Link +/A << /S /GoTo /D (page.35) >> +>> endobj +2687 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.695 176.095 209.651 186.943] +/Subtype /Link +/A << /S /GoTo /D (page.43) >> +>> endobj +2688 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.746 176.095 225.702 186.943] +/Subtype /Link +/A << /S /GoTo /D (page.44) >> +>> endobj +2689 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.065 164.14 200.02 174.988] +/Subtype /Link +/A << /S /GoTo /D (page.44) >> +>> endobj +2690 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.407 152.185 212.363 162.922] +/Subtype /Link +/A << /S /GoTo /D (page.44) >> +>> endobj +2691 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.933 140.23 212.888 150.967] +/Subtype /Link +/A << /S /GoTo /D (page.44) >> +>> endobj +2692 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.294 128.275 198.249 139.012] +/Subtype /Link +/A << /S /GoTo /D (page.44) >> +>> endobj +2693 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [193.323 116.319 205.278 127.168] +/Subtype /Link +/A << /S /GoTo /D (page.44) >> +>> endobj +2694 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.312 104.364 208.267 115.102] +/Subtype /Link +/A << /S /GoTo /D (page.20) >> +>> endobj +2695 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.356 92.409 211.311 103.257] +/Subtype /Link +/A << /S /GoTo /D (page.20) >> +>> endobj +2696 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.325 80.454 212.28 91.302] +/Subtype /Link +/A << /S /GoTo /D (page.45) >> +>> endobj +2697 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [424.871 690.167 436.827 700.905] +/Subtype /Link +/A << /S /GoTo /D (page.20) >> +>> endobj +2698 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [440.922 690.167 452.878 700.905] +/Subtype /Link +/A << /S /GoTo /D (page.21) >> +>> endobj +2699 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [382.364 678.212 394.319 688.95] +/Subtype /Link +/A << /S /GoTo /D (page.21) >> +>> endobj +2700 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [370.713 666.257 382.668 676.995] +/Subtype /Link +/A << /S /GoTo /D (page.20) >> +>> endobj +2701 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [421.08 654.302 433.035 665.15] +/Subtype /Link +/A << /S /GoTo /D (page.59) >> +>> endobj +2702 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [406.219 642.347 418.174 653.084] +/Subtype /Link +/A << /S /GoTo /D (page.68) >> +>> endobj +2703 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [414.494 630.392 426.449 641.24] +/Subtype /Link +/A << /S /GoTo /D (page.68) >> +>> endobj +2704 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [429.438 630.392 441.393 641.24] +/Subtype /Link +/A << /S /GoTo /D (page.71) >> +>> endobj +2705 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.941 618.436 410.896 629.285] +/Subtype /Link +/A << /S /GoTo /D (page.68) >> +>> endobj +2706 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [388.425 606.481 400.38 617.219] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +2707 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [386.515 594.526 398.47 605.374] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +2708 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.116 582.571 401.072 593.419] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +2709 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [408.267 570.616 420.222 581.353] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +2710 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [386.377 558.661 398.332 569.509] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +2711 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [372.927 546.705 384.882 557.443] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +2712 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [404.199 534.75 416.154 545.598] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +2713 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.085 522.795 402.04 533.533] +/Subtype /Link +/A << /S /GoTo /D (page.69) >> +>> endobj +2714 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [370.713 510.84 382.668 521.577] +/Subtype /Link +/A << /S /GoTo /D (page.70) >> +>> endobj +2715 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [417.98 498.885 429.936 509.733] +/Subtype /Link +/A << /S /GoTo /D (page.70) >> +>> endobj +2716 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.883 486.93 381.838 497.667] +/Subtype /Link +/A << /S /GoTo /D (page.70) >> +>> endobj +2717 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [421.384 474.974 433.34 485.712] +/Subtype /Link +/A << /S /GoTo /D (page.70) >> +>> endobj +2718 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [408.544 463.019 420.499 473.757] +/Subtype /Link +/A << /S /GoTo /D (page.70) >> +>> endobj +2719 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.222 451.064 395.177 461.912] +/Subtype /Link +/A << /S /GoTo /D (page.71) >> +>> endobj +2720 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [418.423 439.109 430.378 449.957] +/Subtype /Link +/A << /S /GoTo /D (page.71) >> +>> endobj +2721 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.111 427.154 410.066 438.002] +/Subtype /Link +/A << /S /GoTo /D (page.71) >> +>> endobj +2722 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [377.687 415.199 389.642 425.936] +/Subtype /Link +/A << /S /GoTo /D (page.71) >> +>> endobj +2723 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [397.225 403.243 409.18 413.981] +/Subtype /Link +/A << /S /GoTo /D (page.71) >> +>> endobj +2724 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [405.942 391.288 417.898 402.026] +/Subtype /Link +/A << /S /GoTo /D (page.63) >> +>> endobj +2725 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [384.08 379.333 396.035 390.071] +/Subtype /Link +/A << /S /GoTo /D (page.63) >> +>> endobj +2726 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [422.879 367.378 434.834 378.226] +/Subtype /Link +/A << /S /GoTo /D (page.21) >> +>> endobj +2727 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [382.364 355.423 394.319 366.16] +/Subtype /Link +/A << /S /GoTo /D (page.21) >> +>> endobj +2728 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [429.825 343.468 441.78 354.316] +/Subtype /Link +/A << /S /GoTo /D (page.21) >> +>> endobj +2729 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.937 331.512 411.892 342.361] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +2730 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [415.988 331.512 427.943 342.361] +/Subtype /Link +/A << /S /GoTo /D (page.73) >> +>> endobj +2731 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [423.349 319.557 435.304 330.405] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +2732 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [417.621 307.602 429.576 318.45] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +2733 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [429.382 295.647 441.337 306.495] +/Subtype /Link +/A << /S /GoTo /D (page.73) >> +>> endobj +2734 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.443 283.692 395.398 294.54] +/Subtype /Link +/A << /S /GoTo /D (page.72) >> +>> endobj +2735 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [410.287 271.737 422.242 282.585] +/Subtype /Link +/A << /S /GoTo /D (page.73) >> +>> endobj +2736 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [387.373 259.781 399.328 270.63] +/Subtype /Link +/A << /S /GoTo /D (page.73) >> +>> endobj +2737 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [412.086 247.826 424.041 258.674] +/Subtype /Link +/A << /S /GoTo /D (page.45) >> +>> endobj +2738 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [428.137 247.826 440.092 258.674] +/Subtype /Link +/A << /S /GoTo /D (page.46) >> +>> endobj +2739 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.941 235.871 410.896 246.719] +/Subtype /Link +/A << /S /GoTo /D (page.45) >> +>> endobj +2740 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [388.784 223.916 400.74 234.653] +/Subtype /Link +/A << /S /GoTo /D (page.46) >> +>> endobj +2741 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [421.661 211.961 433.616 222.809] +/Subtype /Link +/A << /S /GoTo /D (page.46) >> +>> endobj +2742 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [396.201 200.006 408.156 210.743] +/Subtype /Link +/A << /S /GoTo /D (page.46) >> +>> endobj +2743 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [396.339 188.05 408.295 198.899] +/Subtype /Link +/A << /S /GoTo /D (page.21) >> +>> endobj +2744 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [411.283 188.05 423.239 198.899] +/Subtype /Link +/A << /S /GoTo /D (page.23) >> +>> endobj +2745 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [382.364 176.095 394.319 186.833] +/Subtype /Link +/A << /S /GoTo /D (page.22) >> +>> endobj +2746 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [414.881 164.14 426.836 174.988] +/Subtype /Link +/A << /S /GoTo /D (page.22) >> +>> endobj +2747 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.633 152.185 411.588 163.033] +/Subtype /Link +/A << /S /GoTo /D (page.23) >> +>> endobj +2748 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [431.707 140.23 443.662 150.967] +/Subtype /Link +/A << /S /GoTo /D (page.22) >> +>> endobj +2749 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [412.695 128.275 424.65 139.012] +/Subtype /Link +/A << /S /GoTo /D (page.22) >> +>> endobj +2750 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [437.214 116.319 449.169 127.168] +/Subtype /Link +/A << /S /GoTo /D (page.23) >> +>> endobj +2751 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [412.778 104.364 424.733 115.212] +/Subtype /Link +/A << /S /GoTo /D (page.79) >> +>> endobj +2752 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [447.149 92.409 459.104 103.257] +/Subtype /Link +/A << /S /GoTo /D (page.77) >> +>> endobj +2753 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [417.897 80.454 429.853 91.302] +/Subtype /Link +/A << /S /GoTo /D (page.23) >> +>> endobj +2754 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [433.948 80.454 445.904 91.302] +/Subtype /Link +/A << /S /GoTo /D (page.24) >> +>> endobj +2638 0 obj << +/D [2636 0 R /XYZ 109.858 727.97 null] +>> endobj +2635 0 obj << +/Font << /F29 416 0 R /F8 369 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2758 0 obj << +/Length 2416 +/Filter /FlateDecode +>> +stream +xÚ­ZÛr¹}×WðQ¬ +×WËÞ·¶*N$Û©Úì%1 +³”èPtlçëÓ¸˜Æ <ÊÖ–W”ا»qx¦»­ø­Ø`©‘f¥¹¦V¯î/†Õ¼óã‹ddÔxéÞ£Úÿõ&ñå_ϖÊpju–ÿ¾øå×auÞ~”°fõ^” »z¼ÒR®Mü}q}ñ—ì%¼§WÙJ(Y|GJD»eø™×÷êæâ?p»ò¿ßüc-¢ÁÍý/—oŸî·k..¿®½ùéâÍMöfGªµèq-á µJ¹x’[:Ô­˜F’£¦\Ê^¨d2eVB.ƒPÚŒ+i±ùXWÇíæ´]vù‡iP¦U&[{rÇUø§Áç_K’#H”JíÛeÂѪ™#1VL—lºÁÒº £L(íÍß6nïÜÂO»5»üÏš›KÏÃÕa8®[|XMá_v³€ˆ$%9ñî)§9ð¬T•”‘hÒ•Qbú¯Ÿ`Í›O¯áÿ»gOËÆýÅ3´mp!éÀXö°„‹€$sQ{o˃„.ª0Á¦-±!á ¥öþÓšp}yÏÆÕ?w{ âÞëâ1Á™¥ò þ~""Èifß34@úÂÖ ¢M/X*ýJHÊvsóÊ}ü{ï”pøÙ=(AXFRftB/ÐC’3eVûv™©±¥HÝ£HÕŠhÒ •HG:rY±ð!/wëž’½ûý´™|ƒ7k3^öÛ·¡ž>b©€S%*9_ •ˆ$‰eâ}F-ʤUH-ѦmâÇEà Й%É‚#²ŸBíÝ/X¢ÜtÀdÁѦ-W ÎèúôÕáÉuÓñŸÿ¾Ñ? 5#Kˆ%ý3ɉûg廽t¦ ÕV” àöLz¡Ò#?K„SûöëÉÿ<~†õ?ÝmN»ÃS»qP„Yö°¤Y$) ¸YÔÞ]~zÀͬƱÊ7‹`ÓÙЮc—Îd|ôdø6úɈ§‡f™ÔlLðeeÒÉÙ*“…o—šP­2©´,h•IgÒ •X€r‘†wW›ýÝõî¿qA0¥él¿`ÝI +(ÊfâÝ+À`êÁj°UhéѦ-­¢Jè&ií¾è»IaµßݹÂð[ƒÂ»„‡€$óP{ŸãAÁ“®«0Á¦-ñ •6kàµ\WürµÝïß>nÚÛ >ŒðÜêŒ_Ð"’PÔ&Þ=o`%ªPQ&½X™ hHjÌŠøq{*Dñ§]hÍi ·(,) I +(® µ÷6Ì‚lLËpe6Ýh‰ Ø*#Úd|Ø=ïnÝ«9i tP<ûX"€$K£ö>' °â¢Êk#Øô¢e>TgÊòû§{·öã~÷4Ë“†ŽÐƒn&"’P”ÕĻˊ©ÖãÎeÊ&¢M7ÚÄOsXt;ùÞ|Á‚#²›ÂÄ»KaÄ›Vî!è-8Út£ÅaQB2,l`o~ð;¨öòt½=ü‡ÿðÜþô¡õjÇXt°ì¬AûÏã m5”ÞÛŸ¾;HЂU9´œM7Z$CXO‚ªöT®$^}~>ÞÜ–Û\nñ Í9‡&¤³ƒå "IEå`â½­ >‚LeˆŒhÓ‹–ÊÐð§¹b0e8ì`Lj^Ò&Žd n¥gÏ>³`3È":nÁ¢'‰Aih«òÿCtð1œ¡³b(ÒÃDd19Ì‹a>Zƒ”ÔZtð´ùä&OMX–Ë„à€äŒl)¡ðí’’¦%SÅoIÁô%)A‡±–B€ÌŸ¦y|0¾dHHR@ñP{oÓàèì=ËðlzѲ@4ƒYxé¦2åË^Ò*œ‘¸ST¾ç¥-•Ê” à>L:¡&^ÚJÐrÖÅKMÀ^üÚ÷Üa+1Û]j4é…ª½´—:2ªý‚¥F`/~íÛŸàÁ¨ÒÝ•‹ž|Ò#ÎÊ&Ç©¯^àwn«øÛZªËÍyGðε‚Mî‡ûV/äÜP£Gò½¤$) ø#ª½Ïp4‚Õ ªp#6½h™§ÁP¦lÅS8Xö\ö·›™«)C¥a¿¤$) ¸ÔÞçªX Qå€Ë@°éF‹\ŒVQÎÄ<wáZÂiåKCÀ6lQ“›%òHR@±ƒM7ZT · ì¿›H¢»h䌜“H‘ê¼BŠf2*éƒk;¦¨ÝöË»£?®8îNŽœok#Z§¼îŽUfì’SÞ€$ŸòÖÞÛwÁÌ Ð{t•>å 6ÝhI@™®ÄáZ­ë&Ïßµ‘awI{7KF°€#ˆ°ÒóÌÅ8ÔHeM_Áb>N„T‹$ˆgÿ5™ýÌõ†p[à1C–ô’€$÷’Ú»_:ýDR í¡Ì÷’`Ó–tí[ÛßAÁÏK”‘³R8çˆ ÉZ8'0/†ÙPY °G2šûX]18¦ïE¸{æ…—´<Ö]x9$) ­ ¯ÒûÌ·#XÁÃ^æÐºðr6ÝhI°ÍµLã=ìöëéÏÀÂíšHyù¯ø=Ô† ÜU“Én–(" IÅ’¨½·)áv\¶Jaˆµ0mA¥d\ºo+ÍËtåæ@àǘ橒àÖômîøæÿœH«Lendstream +endobj +2757 0 obj << +/Type /Page +/Contents 2758 0 R +/Resources 2756 0 R +/MediaBox [0 0 612 792] +/Parent 2755 0 R +/Annots [ 2760 0 R 2761 0 R 2762 0 R 2763 0 R 2764 0 R 2765 0 R 2766 0 R 2767 0 R 2768 0 R 2769 0 R 2770 0 R 2771 0 R 2772 0 R 2773 0 R 2774 0 R 2775 0 R 2776 0 R 2777 0 R 2778 0 R 2779 0 R 2780 0 R 2781 0 R 2782 0 R 2783 0 R 2784 0 R 2785 0 R 2786 0 R 2787 0 R 2788 0 R 2789 0 R 2790 0 R 2791 0 R 2792 0 R 2793 0 R 2794 0 R 2795 0 R 2796 0 R 2797 0 R 2798 0 R 2799 0 R 2800 0 R 2801 0 R 2802 0 R ] +>> endobj +2760 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.684 690.167 175.639 700.905] +/Subtype /Link +/A << /S /GoTo /D (page.24) >> +>> endobj +2761 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.201 678.212 208.156 689.06] +/Subtype /Link +/A << /S /GoTo /D (page.23) >> +>> endobj +2762 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.015 666.257 205.97 676.995] +/Subtype /Link +/A << /S /GoTo /D (page.24) >> +>> endobj +2763 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [218.534 654.302 230.489 665.15] +/Subtype /Link +/A << /S /GoTo /D (page.24) >> +>> endobj +2764 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.191 642.347 196.146 653.195] +/Subtype /Link +/A << /S /GoTo /D (page.63) >> +>> endobj +2765 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [232.205 630.392 244.16 641.24] +/Subtype /Link +/A << /S /GoTo /D (page.24) >> +>> endobj +2766 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [248.256 630.392 260.211 641.24] +/Subtype /Link +/A << /S /GoTo /D (page.25) >> +>> endobj +2767 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.835 618.436 179.79 629.285] +/Subtype /Link +/A << /S /GoTo /D (page.25) >> +>> endobj +2768 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.974 606.481 201.93 617.219] +/Subtype /Link +/A << /S /GoTo /D (page.70) >> +>> endobj +2769 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.716 594.526 196.672 605.264] +/Subtype /Link +/A << /S /GoTo /D (page.46) >> +>> endobj +2770 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.65 582.571 184.606 593.419] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +2771 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.418 570.616 187.373 581.464] +/Subtype /Link +/A << /S /GoTo /D (page.78) >> +>> endobj +2772 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [202.981 558.661 214.936 569.509] +/Subtype /Link +/A << /S /GoTo /D (page.79) >> +>> endobj +2773 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.771 546.705 200.726 557.554] +/Subtype /Link +/A << /S /GoTo /D (page.79) >> +>> endobj +2774 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.065 534.75 211.02 545.598] +/Subtype /Link +/A << /S /GoTo /D (page.79) >> +>> endobj +2775 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.319 512.832 169.274 523.681] +/Subtype /Link +/A << /S /GoTo /D (page.16) >> +>> endobj +2776 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.37 512.832 185.325 523.681] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +2777 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.782 500.877 208.737 511.615] +/Subtype /Link +/A << /S /GoTo /D (page.16) >> +>> endobj +2778 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.55 488.922 233.506 499.77] +/Subtype /Link +/A << /S /GoTo /D (page.33) >> +>> endobj +2779 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.146 476.967 193.102 487.815] +/Subtype /Link +/A << /S /GoTo /D (page.34) >> +>> endobj +2780 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.55 465.012 233.506 475.86] +/Subtype /Link +/A << /S /GoTo /D (page.34) >> +>> endobj +2781 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.921 453.057 193.876 463.905] +/Subtype /Link +/A << /S /GoTo /D (page.58) >> +>> endobj +2782 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.212 441.101 220.167 451.95] +/Subtype /Link +/A << /S /GoTo /D (page.58) >> +>> endobj +2783 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [198.609 429.146 210.564 439.994] +/Subtype /Link +/A << /S /GoTo /D (page.23) >> +>> endobj +2784 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.66 429.146 226.615 439.994] +/Subtype /Link +/A << /S /GoTo /D (page.24) >> +>> endobj +2785 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [230.711 429.146 242.666 439.994] +/Subtype /Link +/A << /S /GoTo /D (page.40) >> +>> endobj +2786 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.445 417.191 239.4 428.039] +/Subtype /Link +/A << /S /GoTo /D (page.40) >> +>> endobj +2787 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.585 405.236 209.54 416.084] +/Subtype /Link +/A << /S /GoTo /D (page.23) >> +>> endobj +2788 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [219.143 393.281 231.098 404.129] +/Subtype /Link +/A << /S /GoTo /D (page.24) >> +>> endobj +2789 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.643 381.326 223.598 392.174] +/Subtype /Link +/A << /S /GoTo /D (page.19) >> +>> endobj +2790 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.072 369.37 198.028 380.219] +/Subtype /Link +/A << /S /GoTo /D (page.19) >> +>> endobj +2791 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.894 357.415 193.849 368.153] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +2792 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.005 345.46 252.961 356.198] +/Subtype /Link +/A << /S /GoTo /D (page.66) >> +>> endobj +2793 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.303 323.542 151.258 334.39] +/Subtype /Link +/A << /S /GoTo /D (page.53) >> +>> endobj +2794 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [255.866 311.587 267.822 322.435] +/Subtype /Link +/A << /S /GoTo /D (page.53) >> +>> endobj +2795 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [161.719 299.632 173.674 310.48] +/Subtype /Link +/A << /S /GoTo /D (page.53) >> +>> endobj +2796 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [255.866 287.677 267.822 298.525] +/Subtype /Link +/A << /S /GoTo /D (page.53) >> +>> endobj +2797 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.938 275.722 181.894 286.459] +/Subtype /Link +/A << /S /GoTo /D (page.70) >> +>> endobj +2798 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.739 263.766 227.694 274.615] +/Subtype /Link +/A << /S /GoTo /D (page.70) >> +>> endobj +2799 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [144.617 251.811 156.572 262.659] +/Subtype /Link +/A << /S /GoTo /D (page.71) >> +>> endobj +2800 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.739 239.856 227.694 250.704] +/Subtype /Link +/A << /S /GoTo /D (page.71) >> +>> endobj +2801 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.596 217.938 169.551 228.676] +/Subtype /Link +/A << /S /GoTo /D (page.46) >> +>> endobj +2802 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.331 205.983 225.286 216.831] +/Subtype /Link +/A << /S /GoTo /D (page.46) >> +>> endobj +2759 0 obj << +/D [2757 0 R /XYZ 109.858 727.97 null] +>> endobj +2756 0 obj << +/Font << /F29 416 0 R /F8 369 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2803 0 obj << +/Type /Encoding +/Differences [ 0 /.notdef 1/dotaccent/fi/fl/fraction/hungarumlaut/Lslash/lslash/ogonek/ring 10/.notdef 11/breve/minus 13/.notdef 14/Zcaron/zcaron/caron/dotlessi/dotlessj/ff/ffi/ffl/notequal/infinity/lessequal/greaterequal/partialdiff/summation/product/pi/grave/quotesingle/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 127/.notdef 128/Euro/integral/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/Omega/radical/approxequal 144/.notdef 147/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/Delta/lozenge/Ydieresis 160/.notdef 161/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis] +>> endobj +1438 0 obj << +/Type /Font +/Subtype /Type1 +/Encoding 2803 0 R +/BaseFont /Helvetica-Oblique +>> endobj +1435 0 obj << +/Length1 797 +/Length2 909 +/Length3 532 +/Length 1480 +/Filter /FlateDecode +>> +stream +xÚíRiTWU8,FpAEd&–€U@±Ê¦²é0yÀÀd†‰MÅ—â^7ªuWðXVÑj‘¥¢%ЍU±BQ(Z;€Oñgû«§óþÌ÷Ýûîwç~õ˜dç.‘ECoÅØ¡¤$C­°é áûû‹Å¡¶ƒ[ÀæaÅ+å ŸÈ5ú©f3¢‰Žðe‰ìùø9dÖ +—I*„Ž£iLÉAX)P–£€ $0ÀÖ0ŸGÉö +`“I12šÓ¿T~4á„1L?ö¡mÿ¡=¸Æþþçßèá!KYng;vŠ: ““Kê߉!‘¨€b/ DÄŒWÐ4¤˜‹ÍïcC°™C˜qŽºA†»®‰ßsa]öÊ9Gjs´ø#^Wä=Uë\Zxqå~B’$ÌœoËm?ÜV°õŠQÂ͉~¸ë®qt¾ñ–¹›£º¿—[~èøÂ •°Œ×d¤LKß­ßg;­]|%1ôÛkÛLDeôƒ}­f¨»­VUèeJžx„)í½Û0ÒÀ&p»å$'u–NËð FÊ–ÇõoM,F¤e†Þ+²Ya¹ueú¡ð1íž YϱÓáVu{AcïÁ“ñ‹´-ý.¾þx¹ª§E}Ë2÷ìeû©'`<á7Å´FPõî•£@ûbŽã}ñÉ=bllkÈOâ1§_Щjo¾¦ªv‡µ¯\ƒkõ¦ÉhBõW¼•õ]IoK©–‹L7¢þÑ¥WÑã]fU-ŽÜl 6PŽoݪ-|ÝDå;|üŸÞ²ýLÜù°.¬eWuÄdž ÎÙÚ”1³?ë<»1ìåÍP¬2Ä7¾rKu±ß^\l™œXSµ‡Úp‘?gùw:ï©Cl|ý~~_²ÿ²WZdL‘šL_vtø´›äFízU¦ ­£õ-;Kwº¦à'Þ]òX³ÝÒ°q¯ïn]‡]ï3¹³=«Pã¨o<Ö´,{ÙuÞµm½_Ž2Õ,q+vY¯×Íi[¯Ò÷ךTñÌ’¹ãZ^}5ÜÀfÏÚœ¬ó«¶¤^ð8¶ZUö"¿ÌRç´|ÖF¬Rã2uQG ~;ú•ñcóx ëͺZ…f~EQÄ3Å7Ÿó±™!EÅ~ï;¯õ”;Ÿ›íÞ¬•6•cÿ°7rôøGÕ•îO=ì¯Éon˜üÒ!‡C&-INó +7kÞ¶6÷kÃüžŒÜ»f>¢ÀŠ}ÏW%7—$ÏÜüE^ï©`íÔ3æ…þÅ=<1ÇÕ)&i˜ãoo|͸Qhj·ÒÓf×]Q?dˆ²ûLsUšúMºó-æ9zpÀWÛéI«^*ú´mk˜%Ú^9ò.-ñ‰Èk7n‚®ÙÖËé’EšoôOuG”tãÛz¦eÛ^T6åàã3Õ:ÿì¾^ýÎý#¬—½¹©·ð» <3"ÿLV­×ÕãÚÕÍ¢Û-†yorsN½ÛWú{ÔäѶU7¹Gêz¦:t’È?|8ÿ ü'pb4#“btç/´"!ãendstream +endobj +1436 0 obj << +/Type /Font +/Subtype /Type1 +/Encoding 2804 0 R +/FirstChar 102 +/LastChar 103 +/Widths 2805 0 R +/BaseFont /KHTIIV+CMSY8 +/FontDescriptor 1434 0 R +>> endobj +1434 0 obj << +/Ascent 750 +/CapHeight 683 +/Descent -194 +/FontName /KHTIIV+CMSY8 +/ItalicAngle -14 +/StemV 89 +/XHeight 431 +/FontBBox [-30 -955 1185 779] +/Flags 4 +/CharSet (/braceleft/braceright) +/FontFile 1435 0 R +>> endobj +2805 0 obj +[531 531 ] +endobj +2804 0 obj << +/Type /Encoding +/Differences [ 0 /.notdef 102/braceleft/braceright 104/.notdef] +>> endobj +718 0 obj << +/Length1 1459 +/Length2 8934 +/Length3 532 +/Length 9786 +/Filter /FlateDecode +>> +stream +xÚí”UX\˶¨ÑàîÞ¸»»»»;»$¸Kp‡àî‚‚»;Aƒ pz­}÷Jî>÷>ïô|éÔ¨ÿU5)IUÔE-œÌ€RNŽîŒ¬L¬|qE5+ <%¥¸+ÐÔÝÆÉQÂÔÈ`ååeˆzXØX¬\|ì¼| $€¸“³«•µ;€Fœö¯$n€¨ÐÕÆÜÔ hên t­anjPw2·ºû0DííjÍp¨Ý€®ž@ &xVV€…¹;À heãÏü—¬£¥€û_a çy]Ý@R$-¤háähï°ZÂ3+9jA&ÿ?¤þsq){{%S‡¿–õ迚:ØØûüŸq'gw +@ÑÉèêøŸ©ÚÀ©)-l<þsTÖÝÔÞÆ\ÔÑÊ`ùWÈÆMÊÆh¡bãnn °4µwþ:Zü§¨m+0«(è©ë*Òÿ½›©˜Ú8ºkø8ÿ³è_¹3ëoõÆÕÆ ÏÂÄ +J=ÿþgø¥$Í,lAÇ“ `êêjê: âø²l-€Þ 7È—™ÉÑÉ4j‰?ÀÒÉþ¯Íí7³åß±!mþA³¹“ƒƒé?Nž¿"ö }ÿw„‹À,ú›¸Ìb¿‰À,þ›@s%~/€Yòâf0Ký&†Ìob0Ëþ&P…ߪ ø›@”~¨‚ò?Ī ò›@Ô~¨‚úo½µÆo½ŸæoU×úM êÚ¿ T]çuæß}ã™ý&™ù靈€Ô,þ@ОÿÀ¿öä¹Zý Yë?dkó‚tmÿ@“Ý’²ÿAV¿‘dåø‚¬œþ@•óÒpýAn HÃýixü Ï?¤áõljixÿ Ÿ?¤ñþoüï7PLÌÉÛ—‘ ÀÈÆÉò×˳¸9YüÿïDMG ¬€“………›÷_—ÐÜÃÕèèþ÷'t»ÿÍ–6 oè 4‡_Yt2çµMo ¯,𮄦³jû¨ÔÔ7ײœn_:&ïB·Ù¨óT•…|}Hâõ‹À-ºËOuBê"ÈåcÆÂë¡§ÉaÖûÏ:×YŠ>Îd÷!§(­ó·gœàʳ›ã)ºÅC¹—ç*4ßaÖIÁúõ=›û³C¹¸u¤²ì5#©ØIÕP3\*"9"6¼PS’ 6¦Bl#`Ûé×®œº<ПŠ`?%¿ÜÏŠècç,p:N.,Y/:Ø[›ÆÄÊÐsÄÅgîøõT“Ã,<ÍÞJõ1Ãq^0'Ù”K²l¼À‹aŸ¬“È5¤ÆJ(SvfSrFT)D’7é¾8» =r°T)TÐ1—†7Ó;%ç`á!z~¯üÜËá·Þù¤•ö»c eи°ˆ• Qªäʲ +ÎOçíÇà;ðv^#5/Cø_KkÑM8쬨êÄÅãòzÚøø&iXû*)ÑF'˜ì('€$àZ<>É(Ò ›ð¬=?~äh4)PÇÛ^Âò UD¢3‹N¶]¬?pVçë|é´¶7ãG3Vì„¢Lˆ¦¡ëë pq~$çÌ>ÿî]ëé·sU›®iA™ÆK³e«X3‡‘¢5,†ÌŽ4¡Gãè¢öú9URxœý!½å¼VQ×dC@QÆÍ_°TÓlÝy.„ˆ18(A³{ªGZèÏ3äŸj¸.rî1ÐÓ¾û¢ræéª”³®OËž‡¨o\,˜=j:°nCÅôÎO‰Ä#í6ÐW|¯š§n?ƒC°"’Û¿ÑÚÅí¬O¡«¼h#C¬òƒ%§ qÒHfR‚ûú«¸ÊŸ© ¸ëŠŠ¯P¢> ï$‘Žþ›})ª>-”ôFO]äö¥¦hç,{ú{ _©|pÁ0Ί%¾g_Ù +ƒÙÖ«(Î/dË„ÒËM ¨~`,}’à áúU¥°¹M¾™(¼x´,ÕtOÛÍ…¢n&6Áì{)“š;¯7÷9lÚÈPŒYΚۨ´¥§7F¬Á‹Êf1¶/ZŒ6¶úMLN†oÕg;Û(B “鄼odÓýÉlÞ˜+e‹ŒR.ƒ¥lçä¦SµÛæb!1cMï³Æ©ª”4ˆeŠ5™’ a¨j§UdÎö/¾”eì„6?Ôα˜}çÚ¾¥wVÚ¹ú;`ŸC°À!"Ký®åñš¥š!SÐŒ²w»® 8PÈçß-“³8•³K€·ìî|J†ª~3~ëƒÔ_$̺?<õæHA…È,¿Ø–3  ƒ„]ˆº£×uò3÷}Ùü5o ƒ¬´Qê|blÑåƒý·˜Ñ 1;}*"«p)A45¸bÌ;Xä^mf÷°wâÙú*·øø¤9àâER`+—80ÇRmb»¬2Y%óß‹µþ< N•e¾@Ø|³Õ~ýT’$²´Í:ÝmGïòè6³Û7“è®Ùê‚Æ_è„ ü.©s®¹šM ³ÒƒcºKcÅ|¤‚ È– H· Þb ÷¥ÉÚÁwÔVY‘”-|ètÏ;ƆC­à¯ôÀI.~ßÿuà¾:<ÂÍø ¡,¿Bv™B"™‰ÚÄÒçqS@€‘#N¬cļݮ.úâÏT‡F1»çLYˆñ„ªæ è”áÿÂ$‚LÜ9LçµX8ÿ*[b’o¥Í¯7œp Ç<ÉW¿0„~9§F¿êþþJ½*[ÙîjäiáBõ]çIŠ‹ñ÷¨Uj_óë–!]—L ­ûkU²êïLÃô½ÕÜß°sˆ8~,Š®=Ìò›7óvØMæ”h‡ÖLV\ߦŸG…ß4­2kÕq`^¿×ɶgAb_ÚEŽC‡ÊÐËF-&f)É.…Ó¯)åÖ·Ç+9èþu´ÈùÔƒMƆþù§©®dÊžËk=uó8í[‹ <-ßÝÌ©OQ£œ,–à™íRî…DCwB³•ŽP¾•âöª·¼&—sIØŽ„ ¤=i±Ì>å¬çz2íw8 ÂÜÚø‰÷ ãm1c­K<øû¶ˆÉ÷1ެ„/çJßóêvzôST?Ê]F^T9.45uÔß|îï› Ôj?©^U›Ð”bÆ{F¸µÊŠq5ä¹T T¼¹¿…(eLxc0äéÜ)qøx'æü²ηž^Ñ®»Ãà?ÐEÊþÅ̰UÞ÷aœ `[€ýùª;®D;àuu­ai<·Ë'fpÙN_`­< 5€ÜãƒÊ*¶§¼WçMÉ yzye;f^º¼Gç _†¢qù»¹†Ö Q­ÒŒ¢šIºÔ +jr ðêõ’$Âþ˜ s¨´ßSûA_àW'¡k´à \ñØ´Á‘:ò"­Î.7×ë̾# +1\b‘\` ÏÞØÒ«© ó“HAZ)ÌÝ",Õ¢Å)xQ^¼aҗ΄ʆü¬6¶Ñæœa&ʹ}öc¿ÈWI£ò²*òm/]p73;ØN´‡š9¸¤š©t=ÓE›W›¡§“èÑ2(5†Ò‡šh€€†Ú€ÙZï7ʲyºñ=4_‘„ šÃ½p:MJy·=·%náìÔ¬óý+ýVšg Ë#ƒÙ©T§hÓÆR›‰eR3Ð@†¿ØâʹL…ëà×=ˆ¿Ï;sŸ˜›–hÀb˜òÊHa‡ îÎSß!Ël˜ƒå­Ý¹:yž¦   ¿Æ (µæÈù9V‡¬§E컌t€ùC’ù‹$*f%˜ª~RåéOØäyÔÔm1å_äÙ!ÛõÕoÑûÔ¤X€„¶^’“Š^‹ahK'¹MƒŠ”¾xÑ Ë%3Ÿ­äjqÆÁŽò+šåÑ^úAãEò748ê‘;æéDè£ÒºQÝñàs¾iÝ‚·øpÝÃ@‹£#¾;Q6éÛS’\ ['”Ñlyg8B§VšÉwô¬ ÕTùѧBQÈ+îxˆÒ÷€wUÊ<Ø0n†´Ò]è3j‘¹…KÃFŽMu‘%B³IWÊÓõGi6JX­eIYÁR_2£Â‚´Ï÷£®Z1ÙÇH5ãO#²ÆÝy“i¥,ôÖŸùæpÍ{iÒ É±hø_òŒ Üñ†´/åI—Wx yÌ/v9 üF7`:Ý÷+ŒvŸ9}Ý\‘N’V&qI ˆœü­²Ó Ö±*܈çe!^ÏV6Ðãc¹`ŒÊ’¬¶,oýCbÜN>”¾t#f5¢y™õèô¶‘×pRU”b©{1ÞÅû§×Yª~ö—+ßãº;èµ+ŠóNJY'ž]:Vñ.6ÀwïXc¹ó¼˜ª£zh ßpŽËÃAÉ]r=à[=Åx$ÈEñËà[hœlÅɃÝ΋)ÕÅÇuäuÔÿiˆ€¹”5K¸‡p¡jlܯªW¿ÍnÀÑÿ%ªù…%·Å¦Žq5ÈoËNáá~¢IsICò}wTÊ ¹©¾w®ÀB’:† ܽRlœmäÉõâ–ìŽÖ’­j{;­Ækêj&™ï(W"Y'%Vj8 xÚìV¯J÷ûÏ;–píEU÷x¦¥ã‹6ªàc_'óAõ‚tˆo^1’Á{&Õ-ì<1—º7ùÖÁNó&Œ¸_ûÔTÅ£ìhSïyÆàŽŽÊ½^Ì+Lú“3IŸîð$ö×T^ëò_ßn¡ ¢—‘lÚc•ÇÈžÙ½i›Üâ#ï½94°+õéW‹Œ?ྶ$~Š'êˆ>µœ³è‡-oºX¨·ù%˜¶¡—‰åòZÄg+´Ñw6¤¶ŒWG‘‘¹¤VaKnKÇ¥·™wÌumÔ îºhëÐ{õ†KÍϨ%^Y£$7‘o©>|ˆxÓ©Å¿èSr¼úB çTSƒôÄ!TÄdZýzçL&°ìò}pe‚ÕÀâ +7::IP@`c­ï o¶ß{¶u-'9ÜχµuƒëSTÑÆ>cï\HÅþ¤Ã(LFÉPJ "ê—Cy +Æþ%[­aÁ< 6XäÜXÞŠ’ðÊF¼zÌ z‚p¨˜3ñJ/¼„¤ß5vœô2ä¢ö§¬×¢Ôw;· ¶tÍæ¬ßMH©²»ß^K¨Löº:¨ž¯q„ÙÇ Œ]ðaÙ-ë @¯âQn/pÚØÍârÚºé!„ŠÏÚ«K˜g–2½E¶:q¡îcc;öYШ¶Ø¶Úäƒ<ö5O˜)Ñ)ƒæUŸãJ>½]³(&Ò0A#'¼è$€h•²½®Gsc?©ƒ—޳ܹ/Lû™;†ì“K„`/ªÛ"u²7ãËñ±žˆõY¥¥ÿ°‡—™/ZãÅÂíÄ·Œ²•|7œ$gÕué5À8Ï ÑTþN°wEû7ð®×ElXk$Ä‘‚ËhçØàË:'%´èäù(`w¥×:0ÀeØr Êpc‰ÕÃbµ±%[ö’Ê*)au|¨ê鱨’ðhÉû’µß ýÕÍY+i¾ežÎdÞº4VMΡ`Tê‚Pÿ¯(c + +T‚,<üøþE¡pÕ/Î[ßôé{‹ý³™¾'ò4 &8™¢[=ó²ú{µ–Ÿ,Ñ1ùçüÒKWïxò'8”…Ïí/ |昩ûþÞ‰½z^Mýl^C +9Ö°›äö#ž=¢$X «N¶±cýžÔÕalouwœY%g¬Ê$$“}Tƒj¼ÖŸ¾H‰øðí#r`Üi7 p‚á~g „ïüœ üba{Ï ›µòvƒ3뺬p¶A4СŒG#üº©Ø®ËawM õf&~ÍŠ0#åÛh¢¥-ežÄ9qš²²)c7ý.BZÍC[þ`s5‹×àʨoȧq)×H4ô|­rnÔÊú»¢j†mAo¾ÉAˆÄbh>8–`€þiÉ+¹ »LG%Æ.挵h‚ ­.lS9¨ã«³ð¶É±êÜÕLˆuù±ZùúaÕK§¬¤Í™ü:r<ŸK’_uë4GN ´qÏ{§ë/¾JAu¼E+R×F(P¤ˆ/ä† +|ŸUã´9ÛïׂŸ·ÀSD5½n3¾Bæ¦-7âñcŸ¥a­ÜM˜Âk˜ÄÇa/!íuªú‡ð¨þSˆ[ɼ]! Á®Ö ‹+,ß[M®`hn%¼â‰Œ¼UŸÃÒ6Mb”¹¡tpòôÚ-µÍ +ÀYû¾6ò}EïpÆÌx5ílt¼²\#}Ïð½Çpm1Ñ×Ozˆ«‚íw¯1 ÞQ$=¯Œ{¨áCdWŽ/5f3´Q|2Uï>uîÚØ?Ý'W©‘[×Út®Nï×78ïÿt^Ì#m¿=e«؉·¬ìÖ; šˆù‰ÛmøÐ÷Ά+ ‚4[eü€Xh÷Ù(Y%fGø”%"šê¡ +¦ý‚![œ¡’ëösÔ‡ò®æº:üÑu<Ñe¥ÌkÖ1þ¾<€Ùƒ‚4Š:ZÐ~GÄÂY=~¬¨ôªG£u˜8À§A—NØ^ÓÚC@Ènñ@d©Öx¼xhr$ +šÌDéŠòàƒxš[D—’WëÏó'^þú¼ÈT~7äy7áV#!×!úAXF×°EÀ¿¾‰6Å > B¯Ã#PUu"ˆLX”Ðçx"CS —-F“P>ŸÂ°““ù‰Ú. Vw —YÔhvGß9@K¬ºNÂ×±‰z–ªV°òÔC/Þ °Ö PR}¶ÉR”l…íohÓº{{< §œBs""®I1”\HA7Vçꄪå†D:ŽÅ¸]á°-^?fS™Ü=-ßP±ˆ É œüp'12(Ž4µ„—õKZ]蚊7ç½ðn–‹ÂTþxÍ eP)þ`˜Àº7éGí)Cr ôÍÂÃ処¸ S1Êyž_±î[|JªÚ¤›¤iÁX›ëuèœS'd‚ñú9h›øâß…@óZIÈG”ÝKÖ 9/ª×´#ïœ1y(@ °r¬¯,sˆ)×ǧ!egØš•mÄ—>îG/OãžØ£…ó~REò±ƒŸ)4`àº]Œ%Ó· +ŸÁÕ™'­ +Ê +èýœ+Ç5EÁÆ,¶&NHîív-Q]O IuÔ*¤[Â×§Š_k6}îú•‰_Zû€î{ýËàxÙ&Ѝç,ö(ÄE©k=v]æ1 Gbo´l®ü¢“ÿ +Â!I&=³[Ï”~’G‘|:ìý²ã72l±ƒ½ì¶_ÈóÐß>=BlfCbD©åSȹj•*ÐÖ$;ÔÁ®Ôƒßhs±ÞûÁŠÅŽ®L&¾Ó•» ×w»sá>ÞB?+n +G’uùqâg>j|´C~© `áö›™¹¬úIF-ØÓMLju¯Žv£ô%·cErŽV•H6¥4ãÓTèŒb˜°©ˆÜzcKm•Mø‰‘³èâFßãKM±j;õQl¾ha,“ Ñn³¾v6wÏ\.Ôeí 5åWnõV@0Úg6MÇízó@UáØÇi‘|C Æ^W†`Ÿ©Á…Ú˰½W(°éìÑÐÄÿE¡±ñ ýÄ+ð[\e›Ý6n¼X„üGÒ¦Yd'm*èÔŠ\sk¹C~»TŸ…àHñ d Lß3æ¯ï„¯•Ì'!N‘q4œPYtÁü}•êÇ<НÊìì¦$0¯­¶$3“ò·6×Á:Ÿ¬eÆæÒˆ¾¾&¥å·­.úƒ5´’JCpëtàú¨×(j%\K·DÄÊ!aü˜6o–¾)“ÅŽõOÃÖA+0¨üF[FÀq'ÊT´%m+¾ÿn£såtÖÕ8п=]¿;Š âÐ7O1õ|jö›ß¬Œ$ÜôèL´EÇ¡O¹õ÷AÅ +!ja MRhÖ7µbQÏ–7î^7ÃúÃù¹åÝéœb¤lXqLÓv/ob~ݢڦ̴øoÈ“Á0ºkñìtÒ1¹ ´€Ô•(û«ÀfÓM‰qÜX"^Ý…GV/ñÅÊ|´»ôï)Jˆ‹ÿ¼þ™Cï˜øýÃR¬}óiÞ·ãk‚ùð\2kçaÅk¾³¹¿Ž/õ£­¤'¢ðþ)]¸x̧4ˆ“ ޏþN|ƒaËvd%®ˆ:-aëq~ÿ¼Ÿ¥ [ +/|ÍÈ/!d¹`)=JMwGç¦h‚ÑlºzJ“-ñ…h05Ôêz¡¥TìD>Íœ¸]Ë{HvQ=[Ú‚5 +œ»P¢X{q£™‚F®j‚?S†¦¥Í¿ïôxÕ±+klUj2è{…h›\‰(§ÖÓG†%±=¿³»P58 ¦¬mÜú£œçé°aÆ…öÁvd‹sâ-÷b¦=©%‰µGåÒ3K€3oÒ>­AäñW¢4‚odÇÌwP]jòG}«ë¯;„'b¿›ßä–_œ³l ‹/“™þÂz¼(7Ýö³õ×…±„û—7½Ä¡³Ú‹;|”…‚Î-²ÞÞ’ZixWË¥òjYä¢X)ŸöÆ™|_¼•ª(ØæŽ QwVg-¯á–æñZËâç_L¡ÄR„ÆÁ¯•Û«ö˜ç´äIDùb¥ÂPÊn_ð‡BõÜ–û˜ yMÃižäv#2ôÝu‘P§á«0t?ªçÁ•:6ûÙ7KÔez‘û£—­R9Xç´/nšÂ +=éfú¦Â1VÙ[½ÛÌRü¾[€¯YÛÍ¢PoÃAóÅØÁO/‰D9’€7D 2í­tu€–ìjwÄ{UŠáSï%ž) ëÜxË$0ûé°ØÙZê-Æ5ä»s:ÌÂóLöë˜þk¯Ìš¹t ¨6ÜyYFÏ» †x_0ù”Ž'YÕE’£ÝñÕw…¨òs˜ÝèTž)Ñ]ÞÝܾ±­ªYv9ôÅZøöSGS=rø—¹OÒ˜° ÒåÈ Ï©;²@âþºxi?óåCÀ»äÏ–4ãã=ßÖh‹È0æøRHÎ‡êæ³ÊÙ(L +ç£Ä(j‘­_wÐsÕW)¬(©²ƒ9 ×5²Ú3„{Ä!”Öì.©ÓÅëFX… •îGÍ¢óÑ¿O€]D}~WÉ„^ŠÎ{Œ ¸‚óîÓž÷”}3á5ÝU*^ŠñÑ7uBŽÄï³¾ôÌŠÄÿ`óW6·º¸ +Ñ®2¸cgسšUà?}:0)b‘ÌÜQ +ÛIpòun2g>GO_œìǧ+Õ/zIþš*H’¯6èŸ=Âà>3%ò>žÿ½à‚èd‡ +·÷–]Ø$^êEû÷´GÊÙk‹üKo—Rµþ(LJR:¥³Õ˜3iÍæt‡82ÌüF¡«W>€:ÂDÜ,ެ>mLƒ„|°u$F£ŒG#™y ÏSËh½y.q’T\ÌBßQZ pÓ}vb'j–.§Øû'/Üe™“`ܰ‘…Žx–z”!$½þ4¹ó=cÉëYXT&C=×mìëaZWË3eˆwà2A#¡æýÔËO+¿èMÛ·º1 YI^âZ—ÏL¹rÎEÌ¥èëÏ,X"ý¥ïLŽÐU´¥ÚÆe›ê×RÊ~>«†³)uŠÈv3¾››õ¦Ü]çë'ù[àpnŒ•Ì–cÃÌËhÑG_V^ÙcI^Ô뤰M5Êd#úâ¾Ýñ,´¬XÖ°tˆa°;iÉô‡”MÙ¼ÛJÌÌÄÛ–Vò÷–õö¯ÆŒÚº³¢j°¾&jBf@Üjxg râÞ(Ì7ø»Œ4©_ì½íãNßZ?Œ.„¸°ªüø™šOÑÓ$)u¡%”ƶËÛ²çosâow*£ÜéVÌŠ ŽûµT^u¿;þÈ»9õ¦-G÷²G–÷s¨|fs–ê mœ”ã ÆIÛJ©mnÁ¸ÃWæ´H×!£ºÈa³‡£Í3 lyðä ë­ÙN6Öê<5j‡ÐÂ|lîPL¥£Òõé;{°ÙY?/¶aÍÖ%–ÿÇüÿ.ð?bs{ ©«»“ƒ©«ü¡ˆendstream +endobj +719 0 obj << +/Type /Font +/Subtype /Type1 +/Encoding 2806 0 R +/FirstChar 11 +/LastChar 122 +/Widths 2807 0 R +/BaseFont /PLZSYM+CMR8 +/FontDescriptor 717 0 R +>> endobj +717 0 obj << +/Ascent 694 +/CapHeight 683 +/Descent -194 +/FontName /PLZSYM+CMR8 +/ItalicAngle 0 +/StemV 76 +/XHeight 431 +/FontBBox [-36 -250 1070 750] +/Flags 4 +/CharSet (/ff/fi/comma/colon/A/B/C/D/E/F/H/I/L/M/N/O/P/R/S/T/U/V/W/X/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/r/s/t/u/v/w/x/y/z) +/FontFile 718 0 R +>> endobj +2807 0 obj +[620 590 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 295 0 0 0 0 0 0 0 0 0 0 0 0 0 295 0 0 0 0 0 0 796 752 767 811 723 693 0 796 383 0 0 664 973 796 826 723 0 782 590 767 796 796 1091 796 0 0 0 0 0 0 0 0 531 590 472 590 472 325 531 590 295 325 561 295 885 590 531 590 0 414 419 413 590 561 767 561 561 472 ] +endobj +2806 0 obj << +/Type /Encoding +/Differences [ 0 /.notdef 11/ff/fi 13/.notdef 44/comma 45/.notdef 58/colon 59/.notdef 65/A/B/C/D/E/F 71/.notdef 72/H/I 74/.notdef 76/L/M/N/O/P 81/.notdef 82/R/S/T/U/V/W/X 89/.notdef 97/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p 113/.notdef 114/r/s/t/u/v/w/x/y/z 123/.notdef] +>> endobj +715 0 obj << +/Length1 837 +/Length2 1937 +/Length3 532 +/Length 2544 +/Filter /FlateDecode +>> +stream +xÚíRy<”û¦"FÉZÔàE–±ÍŒÈîdß5†Èn̼4Œ!“¥t¨}Ɖ“%$$Û½Ù—’¬"dËr„JT„;tÏ=çvþ¼÷¯û¹ïïŸ÷ù~Ÿßó}>Ï÷'%޲UÔÑ"r8&V“B\®Œèž!¤|³`1†ö\X4훡ÕZÖ­¤½´é2wÛÊagJØXIX£8XEàãJÁ® ìƒ:ž± 1Lq±Éèv}0µ-w¢léíºß[%Ÿsš`ÊîäB4!±î̤a¡š±ãÑœ\ýˆ¬4™mLj¸Û°Á%Eé<Ëf'…fìIñCJüùtV‹V!n£j‘×l¥¢>×0ÙS½œ}-ùïje¸ oì¼ñÖˆ_;¡mâ¢ÒT¹á©í–*w…¶3Þ¿*b·(’8|˜I¿5£’*ñqþÙAõ¸8O_n'ÏZ;®êÀaºï:¾³^È…•SêôìÖ#¸ ¦Õužûƒ¹âÈk‰‚º3F™ |GåL=õÍóónДd&õQ¤çÓ¬ ‘þœ›¯Æ`mSò^0Í®-þÍcÒ’Ñ{ÐUWïLø­÷l–#ù§îŸõ½N,)n³vÕ;Ê8‚Mß²Ü.“í%ÿ¤½L·â’ â*^Ç™ ~áHDOÕ\ Û,z{,©|g¼R¯QS/•Sœ÷Ú£÷±|¾jdL#è›»Ð(­æKüù5þm…›ÍÄ“Ø,¡*7³¯ïH:òBƒ:¡& `­°’oj +ãÈY"™•Zë^üò%­úÔ|JÒ lÁˆ¹¾ñòЯEÙç©c—ƒ|ùwÇ"e”ä¯Ô’ÐîŸàáÜ8 rYgJˆZÐâXj>-jZ€Kþ!ù“ë9Dÿôƽ”«›eܽ Gͪ”:¥*²|vø¶OÆQ¥‡ñœhøKÁšy”•…õæÃ;ÕꙄ+Ó;i]±·fyÜE|~[¤žntrD}’ך+ʶnâö…ØËݪÓYI]WüW8$ ÒÛÞÐ;D¢yônæŒLïJå_t‡J¤óôO®×s,WGÎ/Ú–¯öÔ‡ ·mW-Ë{Ô™=ú +Ū»};`[JÏãËlM8'[>é!Þr_òýîóÑ'©JîõÝ}š´#_dzU £¥¿yÒÍïi‡¦<ñõ)3ÈdokÜÄ>óL÷#W.ÅC­ëC¡•Мòa™*Sßò¹-Œo',Op—žøË«¬†š±~J,î×hÅ)\ä9Õw¬Z÷¸ Wb*-Þ¦ Ú¥?ÿŒÖ`Ö‹u‰yÍ#БԾ eÇŸ™ ¹ŸðBEò¸\ɺÂPËü‡Œcbazäºu·&ïG…VÔA·ü¿$­nÛ8˜/\»Ÿ.‘œË[êsº¤ð²ÍçSËœgÃûœÛUÃ}Þì˜ÖµJlÙîW6TêGºÛ»F¤éós(~`©p :U*e(Š‹QÝ;£Ó¡ðÑhY+$qcÖ³b‚qhjc¤G¸Ì—SO³-:DãXŸBØìÕ¼FEÊ`ñÇâ“'Dc®MÜèy·«¨_2-Ckƒ§u{Šv1~Í©é‘ôû8öÚ0Ý|ô¸‡e¥³–¾]Ábž6<§ö3Êw¥#]˜¡:Ïg¶Ý2@nÊT‡ñf÷/u$?ÔÎwÿ›gWÌIûHæZñØ®íÞÏ GJŒÎðpŠ¿Ð¾¸ˆ}íeô¶ÂÉeÈ.ÂYÎЩlAcaYÂÖ+HèUš‹Ï"¼…—Ó¹lÈùRG4ÁüÝ…‹þJ“ ÙÊqs¿YìØ/¼ø|Ò7¤Q9€Nà‹êÜ0êtŽì «ÞÊÕÖ¿-a†Üò©L)sçC͆¢ÔÖÇë&_,— QÛ®w‡‘‡r6Y“*Ýuo!òÌf5{˜4,ö2JÌ©›q×^Whº{5©Ë²·¹g0(9‚Ñš?Ýpã… }-ûkΡq–°-ðfjÿ©­ç} j™3bÑddȯŸñmý‚¢ r€é²w½¥§ë4»ÈáŒÞ!|Dv®[ý…“Ð;E §Ê–iö³YÕ0…$º[¸úaÄÊìà‚E»Ï™és?I¶´~jÕasé·0#ƒ­Œ+2ˆÿðƒü_àBK1d +ÉCö…üÏ@ôendstream +endobj +716 0 obj << +/Type /Font +/Subtype /Type1 +/Encoding 2808 0 R +/FirstChar 83 +/LastChar 115 +/Widths 2809 0 R +/BaseFont /PTPQCL+CMTI8 +/FontDescriptor 714 0 R +>> endobj +714 0 obj << +/Ascent 694 +/CapHeight 683 +/Descent -194 +/FontName /PTPQCL+CMTI8 +/ItalicAngle -14 +/StemV 73 +/XHeight 431 +/FontBBox [-35 -250 1190 750] +/Flags 4 +/CharSet (/S/a/e/l/o/s) +/FontFile 715 0 R +>> endobj +2809 0 obj +[603 0 0 0 0 0 0 0 0 0 0 0 0 0 549 0 0 0 494 0 0 0 0 0 0 274 0 0 549 0 0 0 439 ] +endobj +2808 0 obj << +/Type /Encoding +/Differences [ 0 /.notdef 83/S 84/.notdef 97/a 98/.notdef 101/e 102/.notdef 108/l 109/.notdef 111/o 112/.notdef 115/s 116/.notdef] +>> endobj +712 0 obj << +/Length1 942 +/Length2 3267 +/Length3 532 +/Length 3916 +/Filter /FlateDecode +>> +stream +xÚí•y8”}ÛÇ+Dc_‰+»Â,LÖìD²¯‰4f®a33–†J!7²„"B²f_"”5[!Ù²&$[e{ÕýÞïÝ{?¾ï_Ïñ\×?×ç<Ïß÷÷=Îó<ŽK⸹•œ6–äˆ9„#aÑø) ‹C <×h¥YÁB9[YydÒ“­—1 ޽Jkid÷|>;$2åU~ryXl}̧ŽáÙ¹y„R†Àbý“wowV¯z\ëb¾‡›N€8¥UŸ‹mçÆ¢Û|>CÊ$ =~uL^çÞhüÐë1š¤r;Í„n éôö¸Œn¢‚Hñ²OU1Ü+£íq¼®}´<½q§È݃º2Ó»ÙØ»œ`z¦$Õ•k!œ)Sò¢sž–íÕP‚¸!^šp’jžŽ¬æ±±œVÎà¯Ó×úë3s +RãÕ ý®²ìëÂÚMO(÷¿àÌÇÎ]„ÇÖÖŒ‰^J¦Ôgo$]Ê2N‹KÛ>qbâŠ`¦];±³Õa¨ÿC úyÂip)iK©Zûj–E'ætôcÀᢻ«øaj½ò‡š[é{zsù&ÂêâW°¡jèù}ê˼czqîô.¾™£ëfÛ‹šŸ.7MËOœM£Š §³Ä$žv9µÌÞoâ9j’‚Ä5U¦ôÝDÕä´ÝgT¼¾•(Û ÝË¿‘Þ§×u³¶õõ•äב™!-êÀ³Có‚—úUßn©Q±B5Uű )Þp]ûùN«›´²ÐZ¡‚:¡ð›o¤CŽ’Ì}œ Ö»#G×aVNeÕÑ/jäë©ãu7ŠW#è(®A#M‹e¢Ìd¥ò75³5êt¿ðTÛ9<µ Ð3§òY)Y >—›¼æ&!å,+5 ®þ0,Q¹Å›+ß¼â±ÇÃV)ºŠÁU<8¯dc~W4èe(­ð<ÑU#8Ïá?»2RñVpˆóà;» + Z!ÐÒa©ýÐ%¯7²fžÂ²;Í9 +3BS‹õÚ;Š;h CP¯è7ël‚ü“²¿{ÀýÛ|óŽí%}þ1ìî\¡®Í-lY†|ð|Â;¸‰ Ü&ÅÑ‹yãö²Òâs‹–úY·{÷í”›éÖGN±ÝàÜ”‹aey¦H.¿Ñ¿\‘ÖH‡n ›= ±+¯ë´~¸µ]?•¹z€Ðhtq=½ìêñMš­,«,'‚ñ&¬¤dò=›SÈû¦Ö §xM-+ÿ6*öšëàèÁ=º¬‚=›þ•Óˆgˆ¾R^kv­¢Èž:—Rï(ÍÑaO¹²IÚƒ áץ͌¶2qŽäËÓj·Þ7ú^Êž­œŸzê1nÙÎï/5¥V¼T‘-œ +s“Ap¾ÓUIu§ßV— Z*L®Ø«Û’í‹™†D!ɹ+BòáeÅÜå"‰s^•³W晋ùËy655Í;ãâ¹KÚ2Xý k?ñEÖ»ïYn+Cq‡º’;Úv‹Õí ây™-÷`f=¥°ÒÑRÚ×±‚">ZÂ=üÛÖ÷îQU³ª&„VÔNyk;‡i=ž,õ;ŸkŸ»\$¨ß¼Éã¨i ˜~ô­;WR4ÆBÎþBÀ½¦íDçšm Ác¢+Ó¹¹ù‹g¼VJhÓ×?ÉœÆÅ³ X…U4½g?Fkä0?Œ ô A|­Ìø(š¡k‡"Æ[zá,.“· ”EèpbP ·:Mª\V.}ûcUÆK½»*³.Œ÷O«ˆ@†;»Ô2—£pÉ}ƯÝ8qâ`£¬ÿ9±í]qWÔ”åí5ÎÊÆ ß_Ý)²½iÊ2ó>Ä4—*¡Ù”°Ðß-ì ŠŠ‹\–ãÚ[H +^•„]œ:’¥0ieRu«²á±ÅðD Ü\D-® ÜÑ8ô˜×5k­Kxé–þL˜¤#ñÚÔuEyÔ£'Û[Ä|û’6‹aÞx0¥ +a=ŠŒƒ–Âä2Db‰K'\n[HÈQâHLLqgšy8&v;ß~âMüº†s·¹…Rà÷9Z´l1­bh[îÓ6IëÛ°K÷-£wãÏtdc^W‡JÜÊ>ù´ð9ÙÕ*¯y•—·9Ðlô‰æ¨Ðväa‡ni º]K”5‡ý±ê»tÙý%S# y„‹j%W¥ ÞŽM¯aW†¦ä}²ñFq¹^Üêí_½R©ZwðpžGmãVÒoÑ"§tŠ´˜ßZÙ'@¥½ò]4ï“nI4ÁÅLlåæw–á°3ñ«¸ +n²øŽ†Úd˜UªL¼lù0ûúd£”Ø™´‘Ò$vÖ6Qï‚U>÷Þß/ià=§” Yæ9$æQŒR}Òòœ^³êÖ´‚3îÏQ{æ|†fó©­í}¬A?^ 83Û_ÊNšõ~¢å{ìXBèªÂ„¹²Ìä`¦UCËNÉKS*ë}Ä +t΃ñ‘º 0›è²hvÇzsC|€ åCê:YÊËÄç³.LñË1d“Zyý¦u—ÕsvòqÃÚݼ6'Ì9w笠-O‚GbuM*Y«÷îÎÄ{ò»Á{s"‰ ÏQ;<·O-î)=8CùWãL™¨çÝÜÓs£zuÖ’“Ù¤Û^Gd%:Û}exTd¡^©Þ¤¦ÜO©.•¹ÉwW{f?I*Ù<ëðM^>vÀTtæüY5¸Úó”€Ñ’üi‰ »8nÏ’;—Ѿ(S.]0Ø«{ÍÀFG¬D¢"a~ÝÚÄ ”ݧw—YšþØ¡½4üÝ£â¬pçNMòѨ~‰ò2 ³Æ¨ ¦’à¡ÀÖŽ‹LwÎA¶ kã—ÑUƒ£ äú¶¨ÛØÌ.ÿ[_ò€&}ù£?Ø +‡ ÛeÃÔ$¿FЯ´ˆ[l¸z›¸ ì×<\ïgQo.æW?³‹?¼~çÙumÆY?ì•÷f;:D<9îÚ¸±¼8­Q;êäú- µÙ6}A³ç¹ÕYÝ~>ö«UˆìK»‡Ò¿ÙÄã»3¯žÂÞmŠ‘›—1=q™÷2232ŠO€ý@÷h—¤vÇó­ÁØFZS6]-·P«Z•'Ò}eáfV¤Ã÷Òë¥;ùY 5Õ½½iöZGïD‡¼ó4ØfhHæœS~À'žÈ¬»Î‰)²¼ä¬©c+,WË5íýÎ"ay”Rk•r:­aŠõëÙ¸ùÁp|SGS¶Ü +>2ÐD|@(¿ùÕ™t´C]ø­«×֘ƙÊfü¤m©ê\A0ò˪¾ +–¹»#Ëîö=׸ƒ2;©ͼ6;´[Á‡³ú%°” «U—UÁ/Ê©o–»®(øË:™Xãv)+ôÊœ“××˨~6|¦ýR#}ؙΞ€¸ŒK›°Üª¡U/ Ù_¶ôü©¦ßzò²^©çàj{œ!ÖQØC %•Š]ž •pŸÙñ^WNg,ÿAáoVóž=Þ4W ?%–œç{'T pŽ~‹¨»s5!'ûICu{쑼œ +”?‰ LTBùŸ/jÿÁN Täσ‚ °_Z³I\bieãRª*,®ö-’’P誼ÜŽD>fô s/\pJPÜ"ûî™}B äÓ +U{¬¢5¤.Ns…ç>ÿ¡’y©åûMí\Dº7VÔ÷ÚÉÄ…^™DŠÑÌyU“¾i<[ ’±Å„TM˜ŽXw)--øC%´z«y¹rÛ@P(' RL:z‘òŽër=ÔÅ Áéè\GGïjl\Q!õ–!V*ÕŒ¾´j€|ÄúàŞ˕ùªX.áéèH¤äÈþ™¹6] ûžjÍÉážû^CÍž:Gðh(cŠV뮓HDp’±3ëxJÅÔþÁˆc­Þÿ:ÅöÕº('ßÎKò Ùm†ðNñ<‡†”§Å꣹ÕßçÓ“2H¯†âÍSL™± ,•exÑâÈ…¦Ë»ê4 ãqMÞÖ†­ÍxüC=ñôYè‹,þR†ðÈ©øy|VíEƒ¢/—eôº Þ°ÞÝP;Ò}¦©mœ+dËÆ]ÃŽ³Ãs·å‡ó4ÖŒ½£ûÆè +'¥¸q¨Ç.MÀ+ƶÍÄ|ĵ:d¹|ò^ⴱ̓¯š±QÄ^";Ìü]a¼.9ê‘%/,K¾Cvê½ÞÛ€Jk+û%\R%$!zí~}ŸYXFòÒåÖÃ#¹•þLÝSîðÜZÞÌÈjä”-7žT:6µÞKø\¡m¸©1Ýe ê¼ì8;BL§ð µnÞ9OR—ªGKX!\/KeiÒ³W<(—ÙSÓ< |åÜ»]vKÎ…{âÜú„€òçJ/Z]é…ÒÀîûžCa !9ú[ù )tñE +ªê±|“5L—äý'Å?°ÚÕ¤k0Û+ŠØ +%Ú¶‹‹þãY- +ÔóVnéòÁÿä?ÿˆ&SHžh²ä¿¿âàcendstream +endobj +713 0 obj << +/Type /Font +/Subtype /Type1 +/Encoding 2810 0 R +/FirstChar 98 +/LastChar 117 +/Widths 2811 0 R +/BaseFont /EKSNOW+CMTI9 +/FontDescriptor 711 0 R +>> endobj +711 0 obj << +/Ascent 694 +/CapHeight 683 +/Descent -194 +/FontName /EKSNOW+CMTI9 +/ItalicAngle -14 +/StemV 70 +/XHeight 431 +/FontBBox [-35 -250 1148 750] +/Flags 4 +/CharSet (/b/c/d/e/h/i/l/o/p/r/s/t/u) +/FontFile 712 0 R +>> endobj +2811 0 obj +[472 472 525 472 0 0 525 315 0 0 262 0 0 525 525 0 433 420 341 551 ] +endobj +2810 0 obj << +/Type /Encoding +/Differences [ 0 /.notdef 98/b/c/d/e 102/.notdef 104/h/i 106/.notdef 108/l 109/.notdef 111/o/p 113/.notdef 114/r/s/t/u 118/.notdef] +>> endobj +674 0 obj << +/Length1 769 +/Length2 586 +/Length3 532 +/Length 1136 +/Filter /FlateDecode +>> +stream +xÚíRkPWÕq”m§ÃCW/bF0ì–˜ ÌðJŒ¡¨ËîMØ’ì†Í†&0áQ(¥Tć:XÁ +uäG*±€P3R:¶‘A*ÒRí ÛŽmíÊ8ÅŸí¯Nïýs¿ïœ{î¹ç^¡¿ZE2™PÉÐ\*F &A³OP1" +cXˆsCÇâTT.GA”YP 2…TªÊBí,¥Ëâ@`Lƒ$QÈRNƒœË‚^ƒÀõ@Ãä¬b¥×ƒ$ÇH‚&ÈæBR,@Q@R2¡Ž¢‡!­e€l±MšKP.dM¼)È› ¼E’¡õV@B­@’ÈðgAÞÉ¿aj¹¸Ò¬×'⇼#¤ç`Ü@é­ƒÑÌA$0$déåÔ½pÑ[$)³a9ªâp=EDÑ:=!h˜ Åʤ¤,TS‘´¸Þú&—[áÓ[0"IV*£_M-¾ê¦Æ)šK¶!@ž‘jôYÍgÄRŽˆå‰ü\Ze,;+Ž&’¢u@Š…œeq«á¥¤òQ@Ñ$´há KÄ4Ãñ[ŸŒ hVàxTþ3I2ù`!çè ž¿Gt4cÉ E@ˆÛ +P4,Èd2Û߉)4•c†ªX€!²]¼*afYHs ÿ‡Ïh©ÖR|®Z !°ßfˆˆÃoT}zôジº[WKœímüÞîÔ‘ÚRðEÚ4XÍnw~úÜxsy§Göç"â=W¶iÃ;‰eûçj]/5—~x!õDv]üÆÃz¨ôýÿmžVuæì9}æÈ¸·â:{¿úx@°}. °w] 9V×þóÝÛk]¶$ܲÑKfop]¹ÞÃ::9üÊlKaUÏvâÇÁ;ñ*µ‡IYºyH¹6s> endobj +673 0 obj << +/Ascent 750 +/CapHeight 683 +/Descent -194 +/FontName /TFFBGM+CMSY9 +/ItalicAngle -14 +/StemV 87 +/XHeight 431 +/FontBBox [-30 -958 1146 777] +/Flags 4 +/CharSet (/bullet) +/FontFile 674 0 R +>> endobj +2813 0 obj +[514 ] +endobj +2812 0 obj << +/Type /Encoding +/Differences [ 0 /.notdef 15/bullet 16/.notdef] +>> endobj +671 0 obj << +/Length1 1529 +/Length2 9419 +/Length3 532 +/Length 10309 +/Filter /FlateDecode +>> +stream +xÚí·UTœÍÖ¨‹»Kphw ®Á-¸»6î„àî ÁÁ‚»—àîî¶û[ëü+9k_žsµÇî¾égVÕœOϪzÇx©É•Õ˜DÍ@&æR W&6f6~€¸‚*€™‰šZÜÙÜØÕä aìjÎ`ããcˆºYØYlÜü|ü\|HÔq£—³µ¥•+€NœþŸI<Q{sgkSc€‚±«•¹=8‡©±@ djmîêÅ µ³¨þ³Â jîbîìnnÆŒÄÆ0³6u˜˜[Z; ±üã#ë`ðü;lææø?CîæÎ.`)X’V49ØyÌÌ-XAàZæ`“ÿ?¤þ;¹”›¢±ý?éÁ=úßFí­í¼þŸq½£›«¹3@dfîìðßS5Íÿ­¦`nfífÿߣ²®ÆvÖ¦¢–væÖ‡¬]¤¬=ÍÍ”­]M­Æv.æÿŠ›;˜ý·¸mÿR`ÑþøAELŠá_»ù¯!eckWu/Çÿ$ýgíƒ{ãlí ÐeefeeOÿç—þ•’t0™Y;€7ÀØÙÙØ |.ÀÄðaX;˜™{Ì=Á¾,Ì Wð¸%~ 3Ò?› Þo‹Åþì`´þrrX¬¼­Ìþ„¸,Žà-™ý'ÄÅ +`qõýa^‹)Èôg78è§ûC<ñ?^+ñ‡ø,’ÿ!p©?6—þC`q™?Ä`‘ýCàzò\Oáë)þ!p=¥ÿ/¸žòWPýCà +jˆÀ¢þ‡ÀÿVã«üCàêš\]ë?¾,Ææ‚TšZ)MÖ.ìË:ï?ÊS¦“P߃ÿMÑ¥ë^×õ5˜›GK*ÃN#,¤††ƒ\#Í©4œ3lÅ#9fe"è“MBÃò¨Í ë±!7éUï7Ó´ŒCuˆ£º'|\R†^ýÖ;X)ò`©æ Ø…]BP– ÊÆ­Ìò&”4üuŽ7.®à~ÆØÜ¦EþBÍ­¿Z´mÈÁ`hUøaáëyb¨¢ÁkB«åez‡äe§™ÐHwžþÐK û¢ˆÀ%˜Å­‹Ó Ýf?­zNýŽ ‰ZeŒØr ™ˆ|u–TùP•`™H²À¨mö°²¶>eeåÖo8ˆÏV*z‰Ö7ƒ„Ȭ‘cO"€öµC[gýÐ(é!”Ç;ù˜WO=–S,ú +K2ûýç˜F‰ÕŠ)f†¸ã=;ãÈqø×îbÊÜç¥Hû.‡8«Ø¼Œ¥¨1OæçßO^2ÌZ…\H™‰3ð"(â®EßQ"9ö𠤸Ck‰ô2µ2åÃ*R<]N¨Iû+˜>Š>ÒÁIͤE¬ eá¢yÞ²jÙ§Bˆr`z&¹„þž?ùBCY-¯õ` ±PQýñGiÛœø¤#ç¯Ëšç^‡ãJ ^¹µ,ÇíÚŒ±äËnI]ÝÚä +iŒ¶—Î-5×±Vä®Ð¯9êa>TÜ8%ŸÌ<hSNE½žŒ)ýÜ:‹˜ ¬£mQÂÊc‹Ô¼ˆÚY‰çÅ¥ÁÁy„ÅÐ>9–Œ/Ø}aƒV‡ nú(ܘøM«€¤Åð éLŸ)$ ¶4Éä+ž¬HeA¾ÝZΩ`¸ÁvO}e0ÔüôèÃàäܰ;ê1b~ú˱§öœ8ìÑhu>d£¯þG Q®ï]grçõl½ž€Âþ°ŒïFêè*&¶ÍÃ÷ºa߀ ]?Q+ûvÕÏ{X%¿LÅja@f{þ =ö´`Ôváñ!nýôÝ£'ŠFVŒŽ¹/‚ÈTè$òJÛï¦Oì·µ=!Vǽ +8O‚——[—ËwpÝZ§Iþ7{· "6¥¬›¥©T-:ìß6š¸Už˜ÆDbOHaé êÄÜêãü+ésàÇ‹±ôהΥMÒ‡Ÿtßë^±;gû8yhtÕèâ¼÷/ʈ0oÄ΀iœ$©F]#!¹Ó!½¾ÌYæ)AùA‹ªSŒO‰…fz¥e}QW©ÓjX:öÛõê,Œ16Ij=©iø*µ‰R°y߬/Mß}15Ué°:ò®rÚ død{÷¢Y6u/xíÝ5O¥½%Š<°M§å³ÿΛÿ1ÇWATŒ®V®µñ$&éL;û†Ú·p…ðš»=Ç•öèýI`«Ü +–¬µ8¤—½p€«†–ÓïËPÄMƒo”õ辶\1' íôa$È\|(Á_¾W6CѤ8¾ð,M‰µ6xÜBgR7¯+¼ uƒ6dÔ³W)}AÊ^?eøß9eP Ç|\ò˜‘3û5ÎtóB$$j”GŸó6â¶¹Båõ +¨:Ÿê|5˜yVžzIÍ °­—Dñí÷v*·–,Õ!À› ¿Ô0 Šƒ + +Àf¾<„ŽæL +ÞãZ÷{е;ŸŸ +¨´Ç©ý”½ep|ƒŠ@KMTØRÚj™®–´pÛ6a+© ~ŠäŠnZΤx!Dyå~t•YÓ¯rYýÌ|àn%Ñ®çúQÄe¡Ï41žÔ$ãT±ß$“ÒýªƒrÖÁM·#Å᫲3qiÕ¸XP¶™ž²O%jÓ`ò;&ÒþaòOu5ôcnÓ™Yþ‹ßPkÚ9³½4ìqOÙJàé#8Î;’Ft>z82ž‡¨ùP°+äÌ/½zw]@n)î$è 3 ð'tœŽ¦¢ƒÄÜc7­L[æ>K¥£LÐú±Ø«¿ß*ÄÌo_Ôº-†çy–殺Šsw=[â¿PiÛ²Œãe˜ +{¸‹9°ílŠÃè<׃¥ìqŒ±cÊ"ôŠÈÎÛ;G…äzØ6nØau«×2ÆÞ?àíÊ} Ù׺a…pógd£öÂKtêsç½no 1’-ìvòñ`ç¿®»ÿ¹oÓ•ù 7­Ym y/•yT©r¶¿¶:=§cü 3RÑNó½þì|»yÿ67ÔÝšÙ×Ù¥|“õ|»ïc¶ï{X':ÞXGa3©Yï_q,Zr)Üý,ž(Š81{ôWíºX‘ß_rYõál*TT$• „gì0^‰(×:›Ymæ±µýx ¶F¯S‡¬ƒÂ˜”ófÛ /_"ή3ÚyÚÆB×x¶–Ie&sb; k*¥KaFú¨ÚJ~Ð’›³ïã/¼Œ +¯è—wŸ7}.gÜY={K]©ýp#¹¶ä6ìˆ4.[ïá´ê9K1é»Ts"w-nCsˇڼØ ]Z +ĽùvtW*«!È'¾ŒPÒÓêÔ7ltÍ2Ô0²R¼pZ pQÁ%ïÃbpí¼KKÀÆE²®SëL¯r¾…?µ¢(# a Cá9ÄO]諦¼¹µóa%÷4h†ç¥&ÜGÝÇB)©é`Ì Ã~µTKµù½°UàÞŸ›Grr/2LE²á–ú†½ñl7¢;Üá·@|wÈ}²‡Ö™h„Ë ‡³‹ay¤”0z3¤/ ñ‰lºø}¸åiT0Òæ¹­v«F—3« gkœíþÉtcÖe³B1—ŒibŰHx¥Ëµ{N1ÁèNœAì¨(;£”y‘âðó=ÏyÒØß#:`¥H©/tpWÏ!Šy¿ZÎÍÆÄdÛÛaUT¬ ‰›jTZ÷ÞD ‹{ß©Â9 _']¡yXÀ$óËY³”Çý_´gè×iw0ãIqG~iÀ¼'J?L„VjEÏè[g™3„!<1…1Ý^çzø±ÊZ-MP™c]@ÂQjžM-¸æ^ZÉE¾ïL*¸3V¢q’Ä=ÓüyþÝ’zAÈ)hMðy È(xTÍ?ãnÁj 3ŒÜÛÄþ@Ê–Í@]Úú0û1æçu¨x°bßêçPÔ²®Q±ÄĽÐéCKÔèré¤~Š_ÃRÞa I@âL^ +m÷ªEŠ I”cߥÅJöŸh!ïm¹ŸÍË p«¸º.o9]&9á_õg¼ +œ“(F’¾b­ 2fa®y= ìþR9ø!ÄUt6s‚ðàøËDÌaj@²xáb«.Dñ,v†ÖîHª_­”oñPÃqTt•ægø‰kîEÂès¨„F'=¢±@-ý%TÛ2rýD–É$äÝIç˜Ú<¾iÉ>JBÊ|$õéð\u™ß~ Ú¶žk§~¤/xñ® ÁD!ã²l²œ¶Ù¦žÓw#8~y"_åføx›Y]„ªês.ä…œ3†Öއì €¸Y :8´Üõµ­ebª½9ù¶¹›;w—Ïfªº¦xYÜÎþ[zfùIˆƒszù!yŽÉ;Çuþ&ÙïcníÞžÿÚ…RÚa< €S‹jœX7¥/ñî0±a:“NFÊv‡wŸ½”¯¡SUw›‚xä„q¥.oå4aE[7^g4†w~j©çŠøiW_»fÄ]ΡšçÁDËdjW"ÛêTJµÀ·-œ-€âD cìëŒS²‡™°tØhz~@¹ì¶¨w‰q«aK›7F+(Q3¡8^Îx𓈂‡9O9ÎÂS|ý[š¤ŒøvÀo ¤C’ûÙT¥é|ÍqG*AÜ¡­ë’>²œÎ¨¨Þÿü*S™u;ʨùs&›ØÉ%\”;÷ØBu¸µ\"…!¬Ä)nGe™ew¢Ý¡­)¶-Ò4§¯m©)Ø&¢V  ¡MöS9úôÍÓ¬s´LŠ©­%ëݱv¢w 7‘(Ãý9q’µ¥ƒ, + 'hN%0~;ÙX_ݦùëcâÌÈwYÊ€W9“»ÇVÅ….ï/'gÂ}HüËF7\†s÷ù~Aöbc|¨iùÎÛˈó}ßj¿¾š«Äñêˆ8szEw€´0¨ˆVm+ã"¡ÏBÕÍm1= +-{Ü“Ü"wÍ; ?¢j²9¨A!3Èð½(t v\'-Ó~tâFíN÷€ß‘ÏCTFáeUAt)ì4s›JûÃoU 'ìmíª&˜Ë[?<Ýãô£ +†U^‚r>‘Î6òìYëyö' °«ê~Í,Îb„U6e@ŒjïÞ7¥e'Ò*xrÌ{ÙôŠü^>ð—=»õ +bœ©XÞKê]=3!ütaB”¶•Þ ›Y"™FOb©ö""þM­=™pKe›~ê&^Á;•ÉîôÑÚqÓŸ? QˆIU“\IÖo•ížñ·“²ð~]Ú¹]óæ9mDk1`‡_{u²ì*"›ÙŒXhMW9>ÈH,’“L¸·oŠfÿ1ìÉ,D‹à~e€ Ö.D˜(çÓãõ9–ý»úrÅú=?Ÿ6 okñ‹SŠAIöe+i3Â\Hí5ʇÏI*´Y39ÖCýÊV_?-€~æ‰"`BaŒl†¯)ÜøÀëào`Ùwß- k‰ÅI0 +®tY[E:'/€å?ÎJ ³Æ™'‘ ^†ÃÑÒiN T¿«~¬bí•åÀQII ×îÆÞ«k»˜56‡¨•ôÔ#†Ý¦ãcÞDZOD˜³`ð Ó|×{°1—¦\aËÓ8›do¤³8&@¹ÎÝT=Ýàò¾Bùú­PÏA>ŸEÓn—3Éõ±Íøò·Y Ö{‰·t×Òj_Ì'˜0×=š[ÏÙidb–ÏS~sõ!”p²¦?;îж®Ùb ³:H—¸U¡Ë}ÛÐѤÀWx7æ&¾¼‰–þùh<ZQo14ìDvÛOÑ÷b²jÁí]À¾Ú—ctÞ÷¨›÷.Cô©¢[™if´dÆ÷˜ý•JkD̓è©[2_¾z ƒb^uJÅ Ò\÷Òo°€säÐMk¢Vcù6eÐü¿Wey!´VŠ„ÉmÕ­9ÃÚð[Âs£×uSº+ÌUò‹GËi76ËÆ€Ü-9èÆ£\¨EÍcg¾?1ߪ’P$òiÝ'%`ý£hLáäõõR±ºbÔ£aße~R‘WMMZtùÌNyã1`°µ8®Ó^ö¢N¸X„¹•IìiLÔà/"9¼Ÿ §¾›»¢Øøò¸2î-iŠW㥓lpɽ#6iãäBÔëûaÍZ|ZöNÚBœ'ñ×ôOï~w—¶‹4yòç-(¯~¡é¡!hT¢µT|Yxí}ê¡6W]ú%OWî·1ô“cƳ…éºl3ÛO tÈâ í¬A]dLø29Âs©Å½¯œÁö«Òñ]!¨IìðÜ€}3ï]EøZñö›Ù´·¼)öÍÿÈ–#ýð¸hy]ü,Ýë3H+ß½ <~,°ê®Çæ‹l&âåD‹rÍsÕ¥g8*ªxn„±Ð®…ü)ýéFf½¯ïg+'VÍÿ¼üòE={tA!¹|©Û•è$ÿtR^¦iìµ€2•¾ólœžZ6Õ9\bñ0ìÖ„i6òzÎǘçàÒ0€˜>ÒØÅ›ïïÉ+Æg”݈’¶.{6Å6T„\t«Þâ:µ§½ã?0¯@‘öI4ËàÈ8iJ†jPPdq…ôó!1,ûVÍ +,¶­F4ÌhÖw–âp»Üì¬aèx¼&öÏTF]1\vt@©¢:‘{ø^ÂÕFž—yxÕtV) QPªÅÐüEÍÄÁן«*b…1;¿Ò&wæ{}wzN¯íô ß¿cfõIˆ +ŸTºcDD„ªèr9BÐŽ3☚–,¸(Öc9ù•ª©þŒŠÔçPWŠÑ¢¤cö%[Ü'¡Ãd3¸ß+Ê3ÃÅÞçŠNÈ„„5( }•Mç\'TFä¡G«ÄeyOpȺð±µ~ƒ +z‡ç5ï¡’¸ñ «09®”÷ÛÒ—8¥ë:_wG„F 9 tb„à„Mù¦6ÞéÕª“u¦XGE XõsšÑÁ+ÓÖÛNW¿f¤sŽ×ZSDÎKcxuWU!¢лœQ¹‹!‡¸]?ì§ÖJmm½¼s3ÇÛqŸ7H¤  +Gôú*ÌÞ2uÛºJÖüc T:©Xƒp ÑŪtzhÅâ+ù¬©Ò%¤B+Ïÿ‚ +c4c 5®Ì)UW-óHQÏCJYŸZñ|‡ŸZ<šÐÁ ¿2Nžï>AÐàõ@¶\MŒ|µrÖeÿ`¹Àtl -ó°B»(Y¾@ +êf¨¸vÃt¨aŒ$fîg3ñÎÓÂ>žî²?ÐÈÏ£Ø.W VAæyéÌcHë|T4†i‘YH–õQzÚ +‘´Š5 +È£GÃB›DRàÂô`¥šè•.#¦øá˜Ôðì “²‘®"7}ú¬Þ‰,_#ˆCØìÐŽ~ž=1 ð{j1¬”ò:ωBUÊl÷ñ_þ*h«#o4³—YM‹\µñ£ ? «Y\Ðzi…†›™IúÍÇOõ|0D Ç+nÊ}½¾Ï5”/üé]?õÞ9¡î¸ÍJ«¬ü‰ÝqaKrb‚ëN+*äI¼ß^N=O Î}KnÙÙuEYOçnMž:…´ …2Ë÷x*®¡D´Y•Ñj†DT “@›ÇD:å{_5GÈq‰±Æ‘ú¬qöö¾…Ðõ–ß5:ÍJ¶-íÎ)嵱鳰êö8Ð.*¶$٨ͪ¶¼¹i¤‰æ•Æä£2²õn${  gÇŽíCl³Ö¼¼¶ÿyÏÝôZ ‘kP#·¶HøªeO[›DÏÝŒFAÛülÃf³ýJæl‰ÃD‰û•].ÓU¡FƒÙ£–Å„$šƒH;$$Ǩ crº|æäµ×ÈLï€@P?–[Tѹ{¤×#Þ¬‹×B—ÇÐŽádÂ#àÓñªhm ,Sζ#•r©îè”Îg›:ßA49â°†@‚‘Ó¥ÁÕè¡‘0û½«”fH¬¬¢ÅÇ‹IÄlýÕ¸E5”E9}D––ÙUbÂû¥¨'iâ¢0¤RŽoÒ¯âr*¾?î{pCÜQè60‘«òÖ™\©8ì;É*· {Ò†e=ínÍ÷oA4ȸ¬ +às–½rÓ:Á‰cêû}!!•§ú©Ç­Ö×’EA^„zE±(û3,\–³<¤¼ON]Ôô›ä›ÆTð'·ü¦¤qœ#49ß'XІïåÁç…/Œ~mÈxëüÕ¢\±¯+«7Ã"Ú‹à†i¶Öl¼|•¾:T)í2pþ€ чj-…P¤)ÀªTS=c¬i^¥¹Û ç–Øm‹ÁåG“ËJóå×Q%nu*T1²Þ“Úrd|qÞ$qMb³‡Ãӻ˟8ê:¦+0!ÙÆao£bzâþq²™„:X™2ó·%ë­û:ê~.ô››¢§ +{Ad ’þU>ü£quDh¤ÿ‹iƒ{ét¶Ëµ< y±[x©Õï ?+&ß¡WcÚ×ïùoJxýD ÉäÓ¢ÊÅâ…Qé&-·»'¬½;51_ÚÍAó½Nâ—؆ Ôá9€X D9âÅú­w¢~”<;ñ,á9éø©¨b7và‡x8k!GwØY+ÄOe“ëcB°¿ú¨ë£¹ v/‰v飚Bè] x&R£ä ¢¡ÒÊbùGý"·ÐÍõR Ýbaȵ…ãiå•U @ìŠé8÷—…ZiŒÈmàkH2ãÉk: 3±éuÇ Í틤…] +Þz^H¯ ¦TL=øËXÊ$€øR(f„¨|À _,—ïµù›€¸~šÍÕ—Úøó;I—cîGòQ—W4”f?¢÷æ—LÒ…òàìBÌbñRÚò3+Ú 'Dqå»p¬˜upúß‹™þ,pêÂR^]íÔ¬tÂ]&Šãѯù©'#p‡ Tè@’mGDü°Xg$ ì8j Ûn¥k®­_4“1“ªf’Õ}aíËtød]©Ù˜w⮨ƒ°ìg³VŠ5 x#6,ÑÒ¯BeŽîì·öI;Ò¹“ã ò;¹šQé „RnP­×upLZû µU—eq4ÄðΚJë—ÅÞŽ"· °E°Älè’s[¶@Æèöì½ Îóƒj«Vìý'e²IĎ㎠ô¢‘kŠKJ¶êî`ùý£±ÏQaÂÔïŸb²/±Ð«¾LÉNè=á,…5µÆ2ü>x•Yýå¸-îඤŽ>bu…ÂÑÌ¥˜È:“žŠ—0¬ÒȈ$ñeŽkŠ·9Ÿº@vNºÛþèG[“Ý*¬ÝÇýä`Ô[èŽÙ¶ŠÕA¬6;myãïe^<²šï +ÍíMi±¯¾­…Ôî/´)wò5XÕ3ÖfÕ‹¸²UŽ é YŠÛº¾dÊo‰sH·ˆ/B:z¹ø=‡l;k¸âá¯ï›y3JÞ%ç %Œ]ˆuÉ¿…ý"ÐËͦ1/óû|•Ä®Ÿ*˜9Ê$޽ +{Çb~2Ýa~‡»¶ë\|ÊÈÍn¶”¢É˜È6ÈáVe¯i9Y“C~‡«Ùc¾^ïE1â’›vaŒo—Ÿ¹Ê-†‰d$È(Xÿa΂;tÝú6¶A髊Ì‚3MUt‹(S7BÿðXû`¢¹S£íëGvfšnœíϘ$Å‘Ç2”›Ü»ùc¶#ɳ L4P#ÉbÁÝnÀÂ6ÇB˜X kÅM—­ˆû]£J2?AŠÉ™¾Lˆ/í·óœ@Â` ,¯¦+OôÙpÊwò&ÞÏól"Wù1ª4Bߥ Ã,ÒsJ}‘FT´ŠùÝ[£rØÇ]¸¸-¬ ճŶá)7«ŸERöh'è—.±¿hÜ$5¼M±òÏIË¿5¯Ï¢†ÇŒ¼Ñ‚¨Ëiû¼*ú¡×+½‰‰5Tí`XÄJup0K¦ØìÃ,Èö*`ýÝ×ñgVÏÜG¨v(¼²„ˆ’ÉÕä¢B“ïQÌ‹äè0ä$ŠQCC ÊKV™´HPLa¢®Í ŠoÞûRZö¯[“BK«?9/èŸ™Þ }xYÄÿ2_¡¶„UÊS›¸böÏaû$Ó¶c†Æ®îá îmÅ.ŸÿA8¦Ö„o+Ô©‡æ½oÒrù öo×£!HB—È€xeKlmLÇ”ƒD”7†²Íd†K §¨eøEKE>Ó÷ôç +Â*‘ùpÁÀû¹åBÆU¿=I M8ÈiîÊ´/žgwtÖ òQÜHÞu¤–šZ KîžJ)©÷,3ö9‘2Ðü„3×ùX1Xú ?ÞwåËþŠË«Î'Áÿ|mjg12É2w£;¹4ƒ¹¨PŠÈ]Äþ‹ùöøõÈ+×)|×óROO×±7¾å :S¸ý¥d‚/¥Èüö¬·s%H…ÿFHýõ ëÞmdÄ"AÏžð /NåaÛ[„…¸ïžõ[\‚DšÒ¤† ñÒúH–ÊmF[V©Ï¶J”ôH.?m¸©l‹|IbANÛ9¶¶)ãŒ9ZCK(»&NkX½ÌgOàÓ”åŠDç/ÿÈ›¸FÕ + Yÿðfs•›Ç{gÕ[YWrcO­76Õýåw\ñ¹ß §Oi/~Ô­18` +ˆyË¢Á«SΤXXh³_NQúYX^fgqçWòÀÉòB)*CQ݇ôwÍíG>y^á´ÒrwèNä1Pr +‡oáý‘.×qŒ—,íßs<Úâÿƒ:Ìx ³"Y-pz^Ïl=¤Yð{²ŸÖ(¦+G¦&çå!¹àZcòömØhLÞ!ì®§2 0(Þò‹´WÂŒzÇ"®¹*×±Kó#»º‘šWs«5|ŠY×i°,‡^¨äì—®‡/¹¹m¥-ãÛxskRð,?²'tÓÓÃã ö‹fÝ"¿8ÍN´m% hgÈ»GzšJžÍ¿|­~tú.~!úkΰ!±äžj*Ã=ïH½ç†~€7ƒbÊQ·€åü2ëmr6s'wŒBÔbF"ÉwÓvc)cãFRjð4{ÒIŽx·D x4PP(~ŸFöEwKjöõÿãéÿ&ø?"©¹±³+ÈÞØÙé¯Çe$endstream +endobj +672 0 obj << +/Type /Font +/Subtype /Type1 +/Encoding 2814 0 R +/FirstChar 11 +/LastChar 123 +/Widths 2815 0 R +/BaseFont /YVJQBF+CMR9 +/FontDescriptor 670 0 R +>> endobj +670 0 obj << +/Ascent 694 +/CapHeight 683 +/Descent -194 +/FontName /YVJQBF+CMR9 +/ItalicAngle 0 +/StemV 74 +/XHeight 431 +/FontBBox [-39 -250 1036 750] +/Flags 4 +/CharSet (/ff/fi/hyphen/period/two/colon/A/B/C/D/E/F/G/H/I/L/M/N/O/P/R/S/T/U/V/W/X/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/r/s/t/u/v/w/x/y/z/endash) +/FontFile 671 0 R +>> endobj +2815 0 obj +[600 571 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 343 286 0 0 0 514 0 0 0 0 0 0 0 286 0 0 0 0 0 0 771 728 742 785 699 671 807 771 371 0 0 642 942 771 799 699 0 757 571 742 771 771 1056 771 0 0 0 0 0 0 0 0 514 571 457 571 457 314 514 571 286 314 542 286 857 571 514 571 0 402 405 400 571 542 742 542 542 457 514 ] +endobj +2814 0 obj << +/Type /Encoding +/Differences [ 0 /.notdef 11/ff/fi 13/.notdef 45/hyphen/period 47/.notdef 50/two 51/.notdef 58/colon 59/.notdef 65/A/B/C/D/E/F/G/H/I 74/.notdef 76/L/M/N/O/P 81/.notdef 82/R/S/T/U/V/W/X 89/.notdef 97/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p 113/.notdef 114/r/s/t/u/v/w/x/y/z/endash 124/.notdef] +>> endobj +647 0 obj << +/Length1 788 +/Length2 1257 +/Length3 532 +/Length 1831 +/Filter /FlateDecode +>> +stream +xÚí’{³ÞÖó¼¿÷y¾ïïyõv{z›8ñ°`ĉM˜4¦5pær>öqg2“Æ ëé9ã$F1‘ $F¬ÓÊŠ œ¢CÓ0ÙÖfÖ¦„8cq8*†ÎÔU8 …!àBâPDHÔ€!ðÆ`ÇÑ€“@¼VOD/$ +ÁcÌd +‹A0‚ŠÈôU&wì·i^tÄ»­" €!I" âá“é‡0¢Bü/ Þ/î-‚„«åóé$Dq¿i0aD´Áã!¸è}©òƒ >hä.†(ì$ + À„iFc˜½Í£Q®h,ÂóDÅp(àC‚(d-ˆxïsî­QÐ;yy¸1ú÷`×¶=!T$ö‰‹@ãwýZÌü=&lÂÑXÀ 1LBH¬wAïµÛ'‚1* +,s á8G&ž™ƒx&@E<$ ±3&ÂÄÄ@8“øN^«¹% Ã˜€)‘^ËX2 òµèÃ{q8Xl¼ Ë +˜°Ì‰.,¶`››%ü§ÐW„FF#î.ÀœÁ`°Ùo¯Gã8"¯½'³w1%lFX&Kû0Ø&%ì¯ ißßwþ^åj”vþ…”;Í©—ómhC6jñÆ»>ÈÎ9ÕTÕ0´êOyS/Òy|ó'š NŸßŠ÷¦§ö«ÞÚ´…z®À[ažüd}GñͶÍ¢Ìé®çF3:óÃ1Íj<ƘìRÍ©òßþØ·üòxxb÷©òYžŽ,TÜäñrdtøt×â¤v“–wP æÕßH5Û{ÃoÊ·Ê*æ~t0Yh6zL×ô¨ê‚3¥ÃÏŽeÏ-E­‹¼ò·U*ïŽy1¥“ˆö85] +ÝOÁšú´Ãœè+S+ê5“¬ê£æ×zü‘ù<žF­+_uoM§å¤ÿæŸsõýÕ>i8®¯·0Ïœ²¯Ëõ.—«$µÞ;iÄ6©÷ðw¿åÝÀJÐÄi÷½Ý¶Íaæ=Zü—׸Ù×C z8Ð9VÊáûéK·|J+ï(žŸùøî–œsŠ¢ðÏÐ_¢ãûwlÑv(œW˜nË.Q0LÍxÙ—‘Ö­O´é}sgÖõ‘ŒÙ«U¾&©ªø\lw¹5å”pu–ȆH®1¥+ëä4šžg±c:ôK‘›ÈÖÈÄDšÄö³‰*ixÀòáÚ‡âšììL&Î`§»ªj‹æyU¯jÂGÑe«Sÿvê€z–m…ÄÚÄY¹ÙYº+‘¬]ãõ:°rIºn˜Ž3¹MÙÓbšÛ–×B-}|ãj•}‰Cö„\Q‡õÓ몔£aÆwÇÆgxNm5ÑI|30§[­ÔÉ÷ÔÜøÝÛ}Ô’ ¹çù)±ž"dž¸óÇÌ4%‚îÝ*~²sRíE+ŽW‚Z É\I÷G­6m,/7ãï·Íä§^ìÎO]`lÁê¡ nnã2O—uÎ5PÕ¿_¾báçX> endobj +646 0 obj << +/Ascent 694 +/CapHeight 686 +/Descent -194 +/FontName /QARLDV+CMBXTI10 +/ItalicAngle -14 +/StemV 107 +/XHeight 444 +/FontBBox [-29 -250 1274 754] +/Flags 4 +/CharSet (/colon/Q) +/FontFile 647 0 R +>> endobj +2817 0 obj +[356 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 855 ] +endobj +2816 0 obj << +/Type /Encoding +/Differences [ 0 /.notdef 58/colon 59/.notdef 81/Q 82/.notdef] +>> endobj +627 0 obj << +/Length1 773 +/Length2 1036 +/Length3 532 +/Length 1602 +/Filter /FlateDecode +>> +stream +xÚíR{8”Y.±jJQyÒE’n3ø ]ÆÐ$—d\ºÑ~3sŒo¾o|3£±†¬¥´*%”T´¡è¢MEBwµ¨‘h+º)ûT[žýh{zVîþµÏžóÏùýÞ÷¼ç=ï9æÓ}V\1!„‹ \aŤ39€çååî¨%ƒA37ç‘Q îŠ( 0íÀR%X6€aÏaÛpض4sÀ#dQ$* U€9¼¹ý${À•B!8ðB¡PJiˆ  +QtÀÅ0àÛ¿C|¡’‘PL§1™@ŒŠ@%(N³î·äއÀþs[¬”}"!)§L96çʤ˜À±( †!4ko‚: R^þ [ƒÅ+1Ì‘öË÷õ ŒHQ,ê/!•)^„’ø`j üìÍ ŠQ¥t0ê®@0TÄÅ%VL[:Ãös•/FUPìƒ*D¡ Áäp qñ`'T|>¬—ù/uãZ|~ØÌAq…_” ÆWò@ÍüZS‘¨ +¬fÐ &E¤æ—UР³Üp!Fq `±íB’HAI±ØlÍ(.†*U”ak:N(¨-€ +&„$­ÿUíXÀZÒÿѨ¬(€öíE\\U´ËX±Ø”2“ÉölFÌ߉þ8¡„Íp°·q°芔$ qÅÀ¢BúR‡ T®ª ˆ¦m$DNÃöœIÈ‹uË®Ë×›+Ÿ’~dãõrÍét'ú˧±õdñ-?8µËHc†5L}åQ`-a?œx†«®‰XkîÕŒŸ{0C ß)z¹&X§6«ºrŒ43ñ©vÚY±Eg“YOkd¹ÞqÏçLûC_mÑÍ»Ûø©;6|ý‡Ú‘ib³¶TZPV©çnð¬uûµ|"›Ð®°&£g\Ÿvbåƒ;áÍéŽ[³¼†5æþ¾š|w眼ËÈýæ´*u¯ÏPÓ‰Ïíð3ŸŒçs Gå Ç>nÐ:n—¯ßÆ’ÚFÇ6óv\iuÕÑœýhœ9:­Þ<ù²jçƒ^زaV^ØÍ&.P%Ï8Y—5~Ï®véíc–NÕ}—3…„‹º¡pŸ_Mo²ðá^TÙÖ>ï€æ×›\WÍs©XÚnr»o²QÞ­¬üi,$zeR›Þ&ãNÆòGsz­¡á¢‚ô#Ü.~uœ~{ÒÆç·ë.¤ç­‹Ù|ä×›w^HÞ"ÏÎëî~Úä@pêĈ"¥âqyðeÿãÏ—†MŽO¸A½“HHÝðyvº÷Þ ýEa­´Oüª”d{¶²úêŽ'ÒÍ-3Ûã[ª<_lyçX°XŸåsÏÒÃçZéH»t²ahw½‰p¡“ èJû}—Æ¢¡Æo£3õãAƒr–kÊw¼²÷n…z—{¼êŸ,Óód¹ u‚kö›¯´ëci»fð]9{Eçt"üT¶nI¯oy‡]•ëHÿ°ÎŽ7~%êÒ#‚èk†/+ ù6œÄD;n¦F­íÙ_NdkK–Øì¶ ÷lòøÙm2î5NöA[v´¸+âül‰¶uê*¢P•0¢ÅyIý’j¿˜´ õM‹u&¼Æ¬ƒ½Œw—/ló8ºPR*q$u õÞ?^may®f“§Ñ²ÀƒšÚgƒëy ãR¼"¥ó—d×Ôž=î—:i³CÁì]\íá—Ø´GXZ™ÎZ6sfShîìÂyïî¬É‰cVºäó¼.ÝRâ‘?!áÒÖc¿ô$Í:`¤)ÒŒõ´€¶Ý7LBŽï’™rn}$'»:`x[Ûp³a³c:Æt>´ˆ}Çw -ÚSм'Û¿N¸jʧb–j§?yÊ\ÕxzV-Ù 3 ü-ª5 åà¶-LuzΤ؄ï­T–óMCkdº™‘5e¤_ûŠºÓ}Ág¦"LéÛOññ×˧•¼˜þvSâÈŒØçi‰¦ÃÝò×—5|ßñ̳÷†áÕršË‚¸è¦í‰íët,£8ÅkOßÈL,,4ºâ<K¹î*où¸«K÷Ú‚ƒIU+*9ŽuŸÆ¬dwµAûs¯˜v$ñå‘êÃOjóöu߯¨Ïm(ló;yvØOáfR3ËÀ}MIš®g±Äza ·6×~ãÚÿÿ RAH2œö'7µggendstream +endobj +628 0 obj << +/Type /Font +/Subtype /Type1 +/Encoding 2818 0 R +/FirstChar 62 +/LastChar 62 +/Widths 2819 0 R +/BaseFont /WOUJEA+CMMI8 +/FontDescriptor 626 0 R +>> endobj +626 0 obj << +/Ascent 694 +/CapHeight 683 +/Descent -194 +/FontName /WOUJEA+CMMI8 +/ItalicAngle -14 +/StemV 78 +/XHeight 431 +/FontBBox [-24 -250 1110 750] +/Flags 4 +/CharSet (/greater) +/FontFile 627 0 R +>> endobj +2819 0 obj +[826 ] +endobj +2818 0 obj << +/Type /Encoding +/Differences [ 0 /.notdef 62/greater 63/.notdef] +>> endobj +556 0 obj << +/Type /Font +/Subtype /Type1 +/Encoding 2803 0 R +/BaseFont /Helvetica +>> endobj +519 0 obj << +/Length1 776 +/Length2 1036 +/Length3 532 +/Length 1599 +/Filter /FlateDecode +>> +stream +xÚíRkXUFÅGÊ@¼ZgÓ VÜevaYvpAV7Xâ²^PÖ™³01;CÃì¶Û"–‰™”™JFÜ4I1•Ë#ˆš²HZІlå…ÀÌD¼5`>>ÑÏúÕÓœ?çûÞ÷¼ç÷||^tœP‰ÓË¡Š¦X¡X$V€0F-F·GQ„Ïc Ž%hj®Ž… + –ËýÁ+FH|*SH}RÂatº…!RRYà&$É€ÒÓQ@£cS¡ÓÀt$ˆ£1²P’$ˆ<‘badL!b1À ŒËa +A!>ƒžÔ”ž²Çmܘþ2A&ƒ3¼†l +g§)Òp¨G|¢hî6Èyù7l WI2Jg”Jêo¸Î@–?´!ÝÈBhh2Ôpê"øØœâ„Ñ0U³:’À”T + Pì'Bý÷‰ a†x4Áb©@¯#3àPRøp'\~C>|âÕª…qÞ>í­#(VkI‡}ʪÅOk.$†0ƒT„¢bŽÈ­'»¤a—…ST +HýŽat„"®’«Íš9Ç>"Šf¹#€KfÐÓ 2ø®þà“28j\X€üýOBCi³Uè+B‰”SFý€LŠ®ø+qE¼n„ê¹@ŠÈ|¤C]ÌÈ0b‡fˆKéI­'¸`!4C ±·ÒXàê×6U­)Ë +/=U>Z15ûê³÷劮]–©þN _¸éšíú±Ó%ïzÄ—>¸^zɽJ™i³Æùd·¹Úž (þ4nLv-qéÈ¦ÂÆ#Ï +Þ»b±3½Ú»ç‡é}MG*–•¸__çXv®õÁ­¬´•'/Ù7ãÓ/ç!I…"sáÂ_/nøf k]JÛ·5MNü´Ïí¡ÝýÈù–´ŸžÍ—çjF}Ÿt,*0ëÛO"â-i/Ú.%Ná4Õÿì¢|àð|/qpmM„¦Û©ã´@ÞÁ˦E½jEÞüEêw<Ê‹Çcedмmî#`å‘% †`êð»•1«Æ§Už’}"N¯ÎåÇ&÷?àßœñãí¤{÷.üþ(ǽ¡³ò¦ì¹È;`KˆÉËûšàê>úÌZ/^—úñV2ÿ‚óœœF÷!홵w5`±üû·&´îX;Ý.A®*ú ›Šfi–xUcÛ˜nvÇ¥f·—ÜøíhCÎÉRUXÂ…ä:í9力ý‡JçºU¼ë˜d«Q©JgÔ8Ñm¡“yÁnS'º(;µ u½ýp‹yCWj}æxé@ÿ´ +ÿ‚–û—¿Ë[`«¾¾ÝZÖèËïx¤­uigZºGŒ¨H¶œ +¨Øk;>És®ÍÆlJÛYQ¶Æ`é•Í-—WÞ*ʬ¿­¬9¦/d6€Ý^+ûf +ùËš+zY— Ñ÷J’EL|H]Ê¡:wõ[M’ºW—IS¶oݺÍúáÊžÞs~ÓÞ[†(œÛÛ:äîéáoæe=Z}§mžÑÙ5¼æD‚ºRžþø%BÞñNýVWãô Å_¾Üà¾ûÐÏwçÄ%®z­%ã½×hàãµ%†Š ||BgS¨.ÅË>ŦqûZ}{ +e«MÏY£bù_<Ø[š·Ð'«³mÎ>y·DAެ®"g:Œ<ïx÷VÞ”Î>æí‚3óeû‹Öã!?G/¹S<tñô€ñ-·æëëNþxÀW£×> endobj +518 0 obj << +/Ascent 694 +/CapHeight 683 +/Descent -194 +/FontName /YIFVKS+CMMI10 +/ItalicAngle -14 +/StemV 72 +/XHeight 431 +/FontBBox [-32 -250 1048 750] +/Flags 4 +/CharSet (/greater) +/FontFile 519 0 R +>> endobj +2821 0 obj +[778 ] +endobj +2820 0 obj << +/Type /Encoding +/Differences [ 0 /.notdef 62/greater 63/.notdef] +>> endobj +515 0 obj << +/Length1 1399 +/Length2 9741 +/Length3 532 +/Length 10598 +/Filter /FlateDecode +>> +stream +xÚí¶UXœÝÒ®‹»kðF‚»Ü!¸»Ó¸»»!8Á]‚»»»»»œìžß¿æLö\‡{­ku÷Á{?£FÕÓ5jôÕIU„Míöv. ,Œ,Ÿ¢rªÒ,ÌFff„E€F.–övbF.ÀOV€Ðôú|âàüĉð jïàédiná ¥ùW@Øèdibd3r±Ú‚r˜ÙTìM,.žŒa€ò¿v8”Î@'7 )# ÀÔÒÄ` 4·´C`ú—'i;3{×ÿȦ®ÿ^r:9ƒL¨ÿ±I™4µ·³ñ˜Í˜äíAÕ€ /ÿØúïä®66òF¶ÿJÿO§þ·u#[KÏÿaoëàêtÈÙ›ìþ;Tø?æä€¦–®¶ÿ½*íbdci"lgn0°°32³ÿné,aé4U´t1±˜Ù8ÿÑv¦ÿíÔ¿|0IŠª*‹ˆÓý¯£ýgQÑÈÒÎEÕÓ`þý³üaP“œ,=:Ì .³€Aï?éýW1q;{SK;s+'ÀÈÉÉÈ4D âx³,íL È1£½ h Ô_€™½¿ÎtôLfÿhÿ €ÉÑÕÔº:ôo™ÀdbokkôGá09€¢ìMÿHÜ&/ “ýf“‹û_Ìý¯,6 ñù·ÂÉö¯r@ç ú”Zäq˜DÿC\ ”´]úöÉþ!P1ùÿ7hŸâb0)ÿ!P•?úªªT]ãrjþ‡@SÍô§!< 5ã?ê£Éˆ…TÞô/5ø‚ì˜ý… ?æ!ÈÅ_È`²ü A&¬ÿB ›¿dÃö‚fÉî/Ù°ÿ A6þBP]§¿T×ù/5Ûå/Ùpý A6ÜþB ÷?È +ªëùþï÷FDÄÞÛ4 ¬ ù¹àðpòøþ¿#Õì,Ac#-1ffnVîTW'' Ë??Y Kùo6³Ýc Ðh‚°¼`oÂbõ½!¬ÄOˆŒE““¦{irª«1”=Ѓj›y¸L²çÐHw¹B~¿éÖ]%{Ì•‹wU²¸ðvëgí?¾µŒ˜bJ¾ŸŒ —Ý*û ¨~´?ú|&iŸg¿\0„«›vù¾Œ×³>c½†œÊó%[r>•ÿž™ÆÃl{%ÝšdY3‹GêwuÝ!*)ã°Û‚bê’<2WQ‘c/‘ÕŒ4&Wé§(lÖÙÖp™j;£ÞHÐÔ\ùàSÝ×R¨¼ÎÏ 0gÛa,zo£øG³GÌT㟞ãçÌŠFPM'ÕjYŸç؃\bærF…FIôÍñè‚p~,½3?]é\áÜ×a"ÈÀ&_À¨~ajQë8î\΄’Kñê›áê{CDgT›ðæ +Ê“éaäßÅU[®ºÎ’FŠmÒÇ=;ò/nÆ + Æ¡˜QàêMúÎàrp&âäÕ…˜ñùÓì +!Y»¥‘Âʽ*٠툾ܸÜÓëtxYã‹4³¸òÂ@?‚·ëÀèã™»å--‰ w—SËÆ°{ÒÜ1 +5-.‡vÆrÙB;­rðžfe¢ò*a«©rmÖ¼›-"^blÆteEð) ‹qP=×”šW¯BÞGŠ´þfø£ê1â®CçxJ@ZìðkêFr˜¸Cyµúé*…\WAëœÚ¶žK ‘ò¤bu§/‚¿émN1Ây£we½ô;‘\46WêÀVdýü‚>¡<(Ò&É3ùXÞ7]¹¥PkV„Ýz{šo¬ªÏª+•(sîá¾xm3±iõnÕ'pŽo`ˆ†‹¼|ªm°§Ã®¾t¬â™©ÜF}ÕËÑ"´èöò¯(#‘N6ç*»æ1Îl& W•Wï¾/<¼+ù<…ù½É†¬%ð'ÛÞ¾G¼¼{¶7‘¡)¿õm +¿±P‰Ò&û)Ì®.ìaB§i>«ÙÝ2'xÔûà™LwœQYеŸ|Ôˆ¼”'ß>½Xý¦†yǸ>ÉS©LKÔ³¦,ew&;²£‘ØÑá̤ƒY?vxÔ“³öó„;B@Šà¤^ˆü|¹5éÐù¢À½¢'ˬÌ7 ¶Þ(ËóFdRùàC9r¥(‹¢Ï*ÕI–ÓÜÑ2î}Êfµô`Ô‚¸C±JÃmÏöÁ•rÐúF#rÅ cŠbÛð©1,V + ›š–•Í(îžÿͽAK"KûÁ´‹dòH *Ë{½éwC +б°! + çžA}ÏKàae³¤Â¶08å}“³ý2|Ö…K¤Š·ïBm¶úDã+»Ÿiž1†Ûç.>\¥ …‚ñg‘'åË¿–bóloü–«‡Å:Áa ” =޽¾Íã&K§"]ËP_ºM½;L /—$UFã½è'ÏC·^ÜÓ—Oéœì¿_þúÔÎïï¹? •]ÊËÆ§tY™•ü3˜ñËçÖŸ½i¦Ôà ½Æ½œðÏ7‘0j“*Iê¬ThíÕ(ÑÂÚàà¡aŸ’V~ô*gk¶øŠ†g™4-ôÚ¡¼ÕÑDN¹CÀ'V-õÉ·O%Ôò=‡ !½± ×ßòCÞ`– KªëÖ”0²Çâp +[a¤VÏ[gÑBG4þ¤¥ +1:Õr¥rþ0Ûq#f—ª5±ëÍØšJxlHϯÙCy7”pç]9LÚßhîh÷åŒ +ËTÎP[ãRkY>8ºNƒˆd«dL³çKø$˜ºí+SÃ1¡ j€Fz´à#áj³ï +V( µ‡£â”aç*‘O¢Tç‹¡º{´‹ý­úŠÿ†!±\ü0U‘Xã ¦z¬ƒïUwÓgÕÛöŒpxD½Öml7àfP;t<ý½K¤=þÅèÕÉÒ¼.Lû3÷]Ƈ~Ïë¢1)1¹Z(C_ó}‡)Zœ’ד¿R&[e(…E[­‰gÅI]çÍâVîýŠSœoHu‘ÏÜ{Œ•YjÉÉŠ# -Ä÷NèûÄiú5¢Lâ#žh?LœùÅu™¼BñëÔ^ÇU,º¿µÏaDí9>$Bü3¡$ÆI?ã^éMtx~9 „/&̆æ`1ÅP~F¶ x?!‡+â I˜ ¾Á3K +àL‹º“oOŠž#8ÕH?µ †½jbÆÝAOT@AÚ,N|³FbIH ˜P4@ª¼[„]ÖŠ‡;û(Ä*¤6BeÁ—ÞF8Ì2î+1ðf´À0™FlýÆzµp•q§ÃÖ´ºð "šmDæ%# / ^œôz`¶f‰4P¾u}á¹` [ˆ#°î»uHÿRÈ1E)SØ7Îú+÷P׈ÆMj‡®x[ÇGŸ;hyÜáé† §hÐræCªKdüô‚<9·«|ì95U“®frºÓ'9²‡JÌõM@Rëw€u¤Ùµbg­ŸÐcßrÚ—(ˆkÓâù”fÔâ*ú)žÖmnÁo{Söç Qn³^ev2 ~ª¥ìCÓ÷*߀.K™|“<Òâ%Ü[<ækÁ|-ŽEÑyÅ@éxñÂ@®lÊ&iøø .0æ|E»A)s.neX~›¸&’¯×ó|'X©:-a±ˆ÷vï->•­Ÿ÷ó´Ì‚+Mg€1ËTH®Ë£è{&ÖU£Þ…[:\A›:‚*ngn¾,GY©ôÅnŒ>ÚÑý°)•\Pqv§IÙ˜{^³%ðˆÃh« /u¯ &óÌ\D&Áƒs?ŸŠÞü¨tø‘©%½BVŽŠµ]d±²~ÚîÖy•–t­…ß¿4cÇùù&¶QY&´ÈáFCôøwˆã„œ$ûD~€Ró†¦Í’Ÿ˜œ[‚Ã%zŘyqõȶ9vºôªñƒ Ü%'Fááé§]§DˆŽþ‰‚nk¯[eüw‚ãä/ŸU‘O\2ß‹ê‹ÀÕ·a9½…w» +xÃ`åÊ ç:"ⵡo]J'¦Iaðõ®[{Š¡åég ¿&yYâJœûC~ à8ÖèQ±'0¢Špg«0GC¡5¦ ¶ûr%8âŒÐ§(þÜ"n¿žU+öDâܘéóVx@é„ä$êë¬m—A›h7))ΙÅjrÃówˆ§äzrØ“‘äì ^Y¿ÿäjÚ{A>ürcc3D¢UOZ¿ ÙH5ùB7ÀKÊú>JCã¥YŸ–~ÕëÒ!œm…Ä…Iý~£$7öøk uÈæO5”Ñ7Q»€’æß½”>ƒí8yp’£Ñ€×bVÐæ=åÏu§Ws5>ŸéþÔx0‰o*mÚjL‹0á%pßûEã)é™Mx”Ze6)Ùà\©¯‰µ¤ Œ8#ÏB®ñèõ•‘@và¾Ù”Ũäf@iŸœOµ|«ë@À øÜßì•I²€ô2MðÝÏc@ëâ˜$e;™ iqŸß˜ošÞïûÕƒžÊN­.w~¹YÕzÓjÅ"–êw¦^Þàï< —ÝüFë*ñàØ'T™¹P_ÇiW¬°„ ÉáóÛEØð@Ðec:Y +£™%Ll¦¾EIbziK1ýZÕ®¡Â 3®d =Vå- ó$7cn‘8»×U³ˆw›§€*t .ñÙ ^8¡¬“KšbÒ +WÅÒµ˜M.’Pÿ‚*/ØOÍ¡¥ªáY§9O3ŠpPŒø¡·÷{TWµþwdÔ}¿Gý8îñîðÒ㻩̔ς­¥¼ðˆÐy—RíÏRâMŸT‡ÕãëdØ¢Hý2[„äüø"Öj! ˆÝ“ó& ì NI«ÜŽ~ 7pvNÁŒÉ2¯ˆÖ`Ý6#u#LY…9]}±ˆ?é‹`I.[^Ný|à5žfAÃs‰ì‡z)|iߨ`™« ßµ)…s2°Ù·Qì«`êÌD{ÎÔ*¾'zÙÉÈY Ó`‚eü¾ ÂÂæöö¦´ËYù¶) Û†9¶›î»ÁÜótž0œÒ½¸È É~r%Û8c.Ö³XÖÞÕôQaøWyç™1°ˆœFãw®€ú€Éä;4LÒ¹ôÀÜE$Uy¢t“ ¿&–$cg ?&ào5ä|/®Ê)+¦ÈoÊ€ …õþ]Íà RW9Ñê€{‰vràøÖ€RS±d —«—/ä!6r¬s.XïÍ(™Ü[ùɦ9<Æiظb… Á˜ñ¹>{¥ÈO†2a> /ò¢Iâ¦ë.çл%M¶¿ý–(Ì~¿ö9¦­©éÕ\¦¶úB>ꛕî±ü⫆²ïSŽ•}j a鱺AæÙS¬9k§Áš£^5¦e`Œ½=&JÉs±/-R¬ðÜIÀ’r bQ¯T +»uk¦!Ê•²ª]#?+#•÷ø¤IðC·oŸ7áý€Ÿ/À¯cŸûÖVÄŒúùèBZë°(–Ýè|Ô®L7©É<Ç&ÆÃ!GÊb®ì(ìJø£J_ÁqHÝ·æÔË»iGÅ.‰žK¹3Œ]9פ2-¤1€±Çƃ.A +0Çݾ˜<äÒ«ÚVfU-ˆ:¯km6Çê¾N.3m¹“[,©,ëGO›´cÒ*È<妻%ÚI¾BÖrÓ?ˆ—æçFÈÈÙ‚l+tw¤MBPå³  Öß0Àd¹M™c¯{=íìKhxÊ_”1·îñ Aÿ¢Aœ„…±s‰&·x@½ ëŸXÕä°;2w;<*”‡è5 ¾S¦«5ucüÝÏ!9SÑVS1ôê‘T°EÍ%)¹#ΩÃãp°ì)‚#æÁÈÖýÁ‘‹í‹žåÝí5Ž*ªc­Ó4‚¡°Ë¨žõp †Ò¹°ÞPwfu‡N‰[Æ ôlkù¹«F ›}‡zÚ¶è¢;ClÀ"ñÑìÅì\VgŠ‰Ê«v»šˆØˆµ'`k…F@sú\r͸:j¼äFÙG°¼p«ÿ5"÷ÕÉZEVëê×3ö)g[+«®·þ|áN9¤Ô,pƒBƒú‘üýÅEzÄ£ %éRÏÓ›,G‰ÚGBœÐö±‹Î^øÃdåŒó¶Dœ1Dô˜ø¬´Ž.šã>$lO‡ªC"2þÞÀÑËÔ[JnKšbxÞj‰¼\±Ú˜ª¿&CŒ ãë­§ýͧÒùI3›iã:jQkËþl®Iv<Õu³™Â»¾ÿxö„ wΘÑ!qÒvyK«>ê‹2¨ää.rõ!Öâ´T¥S°×žXr| nKhë‡Éjª39a–£Á·”ÂVSïc+Z4·H0tC¾#¾°ÏÒtç[X¦’ÃBÉJ³®é[ÙHG¢0ðþÓìÑ9åºî„^Š×n(xÍïÐk „”‘fzôòì*¿a·ÀÞdp“Q È2†îª˜wÁ›r;Ãddzв‰|OO‚ô…£%’¿‹+¿0þ|õù<®zlZÓ#A»(4`àí?qMƒ±€ù¾ òêEàWÝ”®Ëç‹øo@ûsR–¶ZJ˜è½„)7i>Í™­jWz퀂ÇïTÒI‚Í2 ³;é\Ù'´ª)kàÞýª‡mæølb|jäÈÉiA^ùõi “ãÇg2©ZiieÑáNz¢:Ì#›2—ÀfÃ*ÜwøZDåâlÈdÑÈfu ¢i8ÿåÝ«]ôIª¤ÓxÞLSH"ï'­Ëý¸êG¼¬º<™äcÒÈ+EõøÄL2´nö¬ž®m×¢v©žGVièveˆ?ÐühõÓåšñ ½èƒüбb«†Ó·Ë/Ü&…BÕ»‹JÁE1vÍiÅ"ZÄÈ;ÂWo—”¨µúudHià³ZŠQ'í‚%ãdêNÊH"•ÂH¿\âØì-²©‰G ‘@³ßØrW×ÁQG“Ò‹ KùÊM Ö ê{p`:lÏÖTùªTœ[pëõM¹{l¸ô…Áøiì-y½ðSY½›á"bª.Äû B…*ú*OB@GÂG­PéÖÖN.¾dÉ\Ÿš îÆÛõ=šX^_‘ªÅ&Í#f3ÍJ&†6mê¥(Íãof? Ú‚"ÛÅíòW£zõv)´Ý‡LáÉÕ¸[ZxÔ­³ÄGÂå ’ðŠà€€¸†"1ÇyÏTýÁîà+U™U42sxWã]E„|4A ´E:4,/!ìáºòW⨞¸Úð¡GÃÒszMò0ÕçÖyƒo¶.!A/¿´,Ÿ%¤5 –ÁJ0 +‰³Œ—ˤÃvFÜ3ç§ê‘»9k£š’“J³¦ùWJñ‡¼ô‚UÔ?5¹¨ZÊß¹‚KÛ£–Z_H«ùfÞž*¸$JJqâò_èR»a6:§2qþßfÚeæU‡»KA-ËÆ4!JAÀ3§}/Fú´~°pyAp×Öéûö{ŸLðNÉfãúcH8–g×Ç BêO‰‰K·®?س¸-»4¹¦­û„#¤xkéɃ²G¤WôªW‚‘e”~ÉÜ„¸§"’1!ñD!nñ,*Y0È×*¸J"ñÛYÂR¯^mž†[s•|ÓY¼øToÂmS˜ÃåIÑòœ„S¡G¡N¢d¡ 1ÂMhA²¸Ýh‡?Oš7ªÆv{u‚xAl]c’%Ø®h¾ ½o“/¿FìÒzl¶ [ÿ#$8§ØÑæ­½J …)hrbì q§t9}:ù”pÏ‚:»ðÅdE2ÊÚOƒŒf·{£ÜCX‡yB#!cèAÑ0|¿ÖžX¦ASL’²$[QÆj± 瀄ôAO+ãœÎšíã9ëõ­Ô÷Ä›^¹±ë–»Ã¶Â`Òëú¾oÅ’ãì/NñðzñÜÏÛŠ¶Ì¯_zNùFÍNôØÔŸ#Çûg¥x6ƒ%ãdIšÿÊ”èæ€á+m8“ÁÛÇx +î™: ЇÒZ³—’x ;¹Äî~Y‚vÊ/ÊzVÝ¿4»ªî&y·ÓÖ‚(”» K޶ˆ¯‹Ãåö,ìŒm¯ZG1YYNÁ•=]7VÆPâÊ@ÍÉäÿe=1þœ£àÀeÿ`/¬Qý+vy dêcÓþ×ߜؿ‚Õ?¬ËÆÓæp¡š‡Êo"ÜÚüX…sïÍßšÀîö/›ÿÖa…j;r)yÿEÜ L™R‹i2RÏò‘cù2Us[)dçÂoœŸÞ5~öS¾A R|ü¹íã:!m?f+þ§G¼\s2GìÈ—ø{•ó;nj0ôüÂ÷ä=gŠuŸ.ž +p;2ÊÔñÉ-ZŸÍüÓhG´O “ÈlmA™Y Ô”|·ÂóOsc嫆}]ãîÊÊ~êª[—3E0¾2m÷zëZcöU$›rÇ’ÏOrýÐ-jœip!9Ð\´Iª?¨†*|ƒÒEš +Èú¡®!¨W;ud"Kä<úáÁC¨• ˜Ð¸\’Àê ›I-•ó…ÛEì‡íÛ™Õ ¤ö,>çspKoç{åEsì%”ÂWPGØÒ~C…bsè˜~,2:7ã]tó£KœTGšË›Â3H “3†Ã%º}5[HÅõ§,D{’ËÑÅ•@':'UÈ!.#”¥”¢²^êujPÙ!_á—#r~‹WÑ‘²ú1žâ:Œ ž=èÕѧ` …o@-="‡áóp`’‰¥"i{>{R,?ØÿÂù:&)qXô¨›ßÑöpŽ•ø1ñ,Ãê`iÈùÙ¡¸‚7ŠnL¿ì#ÊnøôiÚ†H³¸áÅviÉè¶Á/sü²éjfÓt›ÙAôºÕì·s©†Æ˜ö§çÄ“³”ø›·ö|ÿIO2U4<î—E?U(~`‘Ùfg`’,ö÷´²laý§/Ú¬V³Ó2ßtÒb´}"Õƒø_/4{Y©ˆM‚YúVé_4bb„"äec¨…¡f¶%îÇ¿Ž¤lÓ³õä^™6ÜØ\TšwTMô?#ޝŸùÔóùH}ïk bÝç·¸rAåLÝûYMÍŒežÁûûg¤WsZëŒLi[ÇéûÛ¸DµDÔb‘Ÿ&/J>ÏÅ(|'$ô@ϧʸJIäWÊ\«…‘‰8Ø&®U5ì1K¤ùPRçµ»³Ÿ’Kˆ¾¼éŒ¯¶>ýƒÛëC¶ iŽ”ºo³räAˆF¾V¶À%Ýq•L¹ªÅþ”†çkàrãð„-– m]›ïÀüü»/ÓQ]6˜N=<ÁO·{—i‰äéÙ¯¨ÄñͳF~áÂÙÎø[VY†FIŠÝ!ž¡²p¿I÷ÓÂB.êq‚¥)Í>Œô¦}.É_ìã½µyø%.-gÖs+¡‰ î>÷ [‰T1ÏlPH÷à6ºS5•IœÐêY§ìO‰$’¢Îˆ£KìI©IŸy=׊8|’Ƙß\]ö¹ÙÍ Ö&Å¿â{ê¸lš;ÚX–rây^hU›÷f„Ê=¬Í°µ§Ö?DÚáKK¶/¿ï’.Wí©ð=a%=&b’¶˜`£éãub +±Ô0sµM à.ê‰ò\ö + j´% Z®GH®3â?0SÂñàú¢àj˜8ÅLÀBÙIˆòóÞmA)^o~x•ÑW®ÝÕ6¿y—”±²abÕ2ª7Daæ(jêOÜ÷ŸR€ø5¶ýÒï7R­t6¬¬Ýuã*[`ß‹íWaÁæ&~?Ì)úÚMNÒâÑÅÜl*){Å‚<Ýs»ß +ÖxãTè9DU­QÁ7Rë‘XêßÁÝÖŽAÍÝv¦Œù +¹ˆãx5`¼Î…Ü+Eó™¸YARºÓfŸá–Wˆ–eÚ4Â)QxêM4Ï„CK½¢]2ëM)‚E¨¦š—`Pu\Þ:.Y("6—çíl$ g!–n· ûºl†¼ +ž¼¦w|Ì4$½›’÷¼çä ý"ÐZkW”ðˆÖøæ WͨflwÛcÊŠöËÚ£ýn´ÏùEþX}©Gs„&ŸcÀ@+F[éwQ~òe6:ÍÀ±¦Vœ®%Rh¿ë‹Ûa:ß‘j­Òh‡¦µ—× +<«ØS7>£‡£¬4Ñ>´âGÉ)îÃ_ù`›‘(|°q„0I®¹Ç#Käð8EŽŸÕ¸Š]?ýk¿b¼”4ŠA‰bN  ›Þð-9`™À¾»Î@|K­^P¢×r"±·ÓÓ÷ +Òô,!9aÀëÝm‘ø=¬=µÿ½Í¨à9×ßN;: ׈õmƒÂúnİÓSÞ%„ª°¥¼±0’¾Ê´sµy½_±ir}ª,CXùf°Î¬ªö§O£K ¿Œ>ðºeÏ &Áö6§£iütÜÙÑ¡©J’óÊ † ßÛ´1#9î8ZáûÉ´aŸ¯t:ɨ,pØ¢‹õÅû7Íõ~>¤IyÀL0Û¦¼¨£1v©S¦¤´¨-YO¦ãË],wu6­ ñt6‘ÉqšfZãI²‚KIä#¤‘Êeh(þ¶ ƒ•ŠÞvUÊɳ¦ÿáüò)n,ûEAŽ$˜ÖÁ7 ‘ÜýK)sGíµå„çx@@®7ªYʂٌù7O¸Rés¡\ôþú4ï» øÝ}äŠÂ -×­q´ôòÚ½”kËDöÂò£>é´áÚE(ðŸNÉ%ßLÞvèá<ÄqK.ôë¤ùŠÇcΪFéJŠϱsîâópò®1=/¬DH Yk•ÁϘ³O*ù€Š/ÚÇÔÜPÒØc¾›>d†][åø5Ôô›°½ˆ¸nýÏ˘çed„fEÀ5SK¬Ü/G8æÓpøá*©OÆB=ÊÔÞ¸µGå˜ñ¨Ìà†.Ž鬖ä¹3’êçQ\ÄpÇ|ïÐîÚ,p4æ=í¼Ïž¯Ìÿ_ÿ7Áÿ Ll€FN.ö¶FNÖÿ‚–+endstream +endobj +516 0 obj << +/Type /Font +/Subtype /Type1 +/Encoding 2822 0 R +/FirstChar 11 +/LastChar 121 +/Widths 2823 0 R +/BaseFont /GCTRBE+CMTI10 +/FontDescriptor 514 0 R +>> endobj +514 0 obj << +/Ascent 694 +/CapHeight 683 +/Descent -194 +/FontName /GCTRBE+CMTI10 +/ItalicAngle -14 +/StemV 68 +/XHeight 431 +/FontBBox [-163 -250 1146 969] +/Flags 4 +/CharSet (/ff/quoteright/comma/period/zero/two/colon/question/B/C/F/I/L/N/P/R/S/T/W/X/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/r/s/t/u/v/w/y) +/FontFile 515 0 R +>> endobj +2823 0 obj +[613 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 307 0 0 0 0 307 0 307 0 511 0 511 0 0 0 0 0 0 0 307 0 0 0 0 511 0 0 704 716 0 0 653 0 0 386 0 0 627 0 743 0 678 0 729 562 716 0 0 999 743 0 0 0 0 0 0 0 0 511 460 460 511 460 307 460 511 307 0 460 256 818 562 511 511 0 422 409 332 537 460 664 0 486 ] +endobj +2822 0 obj << +/Type /Encoding +/Differences [ 0 /.notdef 11/ff 12/.notdef 39/quoteright 40/.notdef 44/comma 45/.notdef 46/period 47/.notdef 48/zero 49/.notdef 50/two 51/.notdef 58/colon 59/.notdef 63/question 64/.notdef 66/B/C 68/.notdef 70/F 71/.notdef 73/I 74/.notdef 76/L 77/.notdef 78/N 79/.notdef 80/P 81/.notdef 82/R/S/T 85/.notdef 87/W/X 89/.notdef 97/a/b/c/d/e/f/g/h/i 106/.notdef 107/k/l/m/n/o/p 113/.notdef 114/r/s/t/u/v/w 120/.notdef 121/y 122/.notdef] +>> endobj +415 0 obj << +/Length1 1653 +/Length2 11610 +/Length3 532 +/Length 12498 +/Filter /FlateDecode +>> +stream +xÚívuPÜ]“.nÁÝÜÝÁ‚k‚0HA÷à®!¸»»{pw î„àA.ïûíî·õÝýkwÿºu§jª~§ûœ§Ÿî§Oס¥TÕ`•4›€dÀvVN6!€²•­‰³“ÐN‘Udá,¶3¼9xQhi¥A@ˆØN t@fi)€‹ À)((ˆB Û»;ZYXB Zê:ŒÌÌ,ÿ´üµ`âþïž·“NVvº· ØÞdyƒøoÔKÀÜÊPÕz¯(/`´š™YÙdß¼ªÎ&6V¦E+Sˆ`vØüc0}ËÒê¯ÔœØÞ°$@€“=ÈÔ +h¹™‚ìÿr±ìA޶VNNoß+'€…#ÐòV`egjãlö7»9øoBöŽà·¶o¾70U°ÄÉÔÑÊx‹ª*-óžK 䝨NVonØüm§ØÔù¯”þö½Á¼y!@+;'äù+– `fådot‹ýfïhõ7 g'+;‹2`8‚,€Žf6 '§7˜7쿪óÏ<ÿ){ ½½ûß§ÁïúV'9 +'×[LSÈ[l +;ö¿šEÞÎ àäø‡ÝÌÙþß}. Ç¿ ÄðWÏ0¾‘šílÜf sve0ä-$€á¿§2ÛÿžÈÿ ÿ¯ü¿"ïÿLÜÕè?]âÿé}þWhge í[ücÈÞ¦Œ@ðל±:þš5q6û¿m­lÜÿ‹£ÿºQôºÿ†ø¯nyð­,’voÒp°qüÃhå$cå2Sµ‚˜ZÌ6o5ûÛ®õFÆÑÆÊô¦íße°rrpü‹OÓÒÊÔÚî/xÿá½Ë!ÿ&×ßÔÙ%å”5˜ÿ« û÷NÕ·N€hºÛ¿‘û·t”Àfÿ±ø çý{°À“•“›ÀÊ%Ààâòrzÿ!ÿÆáüçZ q´rè½åÍÁùwöÿöÿçÊà_`>Ø™‚Íþj ÐÎì­ÛþÃðoE°rpÉK¿¥ÎÅ!ÈÉý·ÕÔÙÑñMú¿ÇÂ[-þ}ý÷mÜ@¦(Ë `SáÀ/Éi)j‚¬1i½ÞnNØ û¢:Íü\¿Jp—orè¦`™ñSU[ý„ÐK‹ûü‘ýó®ÓÞP7¾ }Wè4‡Ô›š±'k®Ÿyï+»aZÊoHϳ9Å 8]>í½­15uÃÂ'²‰6nG¤³;F?j—\?\š[{tÓïµ1xí˜õPØÕyG¿éïnéû†ú».à{vI˜3ci…]àÐè"ü2IÄuµÊ<#ë™áðz1)9‡¾Tƒ·©Åñ¯bAŠè£–—V‹f¸>ÎÄ·ŒÐ>‘èâ"ø@1•mYDn ýœˆÅìø.TÞØýáQ>³Ö&_̸ë:(=1Ÿê*Å(çì«Xo®`ê¦Ë¥¦E”]ûÞ…Î,ý˜P\¸×QO[f­uŸB.ú¥$2qÆ#eýÐëÔþ®V-ÔB꩘ý0ïpÆ1®‚]ãÆ ü Ç0§†ø.>äéšgzol’ä}åv³oÖ¥½Àì5a[×—Ž̼¶»å£ø¸ªQî[‹ÌH3Y£ ׄÚѰ —BaHؘj:XÛMx«Ê¥ˆ5( 7_ÞׇëØâ kï÷7R@kP!_^NŠƒà@'Ç_@|2ÓÎŒâ¿ÅndŒíq2T¶„XLe“ {æ’7×Þqµ‘Ï7í° ŒReöѸà.}#„5'Ÿr¥C?ÿÂ4²}Å:.M¼¡òµ‰ÇXÿ-g†¯—0ìu@ÐG¿&Þ‡*>2œº6Øj0_NjðM/Ù™]µm|­!B5>kk (pâ.4D7‚Ë!ãtLsë2×b(¹¡ºë|ç`y³W™àø“*áÞp"ß­ÂÙ%„;«ÅÉçk˜ùAãuÄðF*ƒ!ù$W·idYÔ¸ýW-Umq-»®ÒãøDä¢Ð5Êà«È;O!im0"ܺt€E‚Žv½hì¶ú3üÍÀTä!¯‹.߻ѿÛ*Qcg“Û‡Ù¾—‚²Š©÷åëWÓô c“ñLîe3“¸:øU˜ÏÎþ«”ò€i}Û+~¦ÁØvRªVïåùnŸ`ƒ¤Ån©²-Ž} 6Æ ±+ÈXùèו–Šd@·Û¥9[O‘ ðÜG­7‚ôû&Çf,ßcDÄ-%NÃXà ñ¡¦'v„mT48 %ðsŽh1ÕR’Û¶..&î÷Y<Œ‚Ξ4÷cœ×-Wh÷&D¦·æÂµ|º¢–•ŸÕàO•ïÖ–?ؘ۲ŒÎsÒK)•Ά@‹D H²ó×iìÔwì»M9Ð"õÎ%¸R9Û“¥×®WC×–>N㇠Ãç…«år æÕb/ô\©ÐöØ=SIìê¨kFí¦ÃÛ³¢C šuùúèûQ¹…Á”S°Uˆ'b­°r·Èv®‰19[ +hZ%sÊš^Õ7 Á<¨Y©“ix˜ |§üA¢°6.ÜgdEü“ýö'«u jÑt¢ˆÈ‹ë÷¯dŒð¼&Sp(¢O§¬umBÊÅëÑu ÅÎÜvk›x¡D¯ôj +R‰^OS+œHnQWY¦ÕÔ`‡½v‡Ïf˜÷Œ_ø‰œi¿›IŒ…}#{% +Á–þÎ-íâ6ß#´(ÞD OÁrª¯”MGCßbé÷])3Ýÿ:ðÐ^ôZ2öì9êTm+0˜z‡ÈÐOáC¿Ì73O™"n¿Íàpøg¨8:,ìš(ÁwÀ¨[â§q2Q‰à…9ûSÄ1£9ÝRÁ­Þ`Wò½Cü¡5ÌZJ»‰‡‹Dâ±í¨upJ–©ßåñ¿g²>ÑBÒ³»W†L¹ –›yú y³–dÖˆóŸÍÕtŒ¢ïo]tvy̨òZ¹'¢2A‡îX,ÕQÃ2Þ#&¿fŠ/Þ'r’U޵Œ“žbtN€åZÜ8$üØÐ¸ÎÐî'ØD0‡|ElI3zÖ¿"z„¸tý!EœA+ŠTéûÕ'¿%kЕ”uï¢K7ý¹Ôþ¹ðÅkjd¡©aM4Vnžä'÷àÙýc™@Cþìí2µoؤòŒì6ºd}Â-ý´€ôÌ Úì¬z:fº˜Œ¢£_{zsñ´Þ $ßÚG[jÁ² Váp;†—ºêÖ§‘f!-'A‰ñÎáÁªUÅÓ’ï¥kóínú‡•å¯[2dÂ#-! ³nèãø¼cë9ºÐ*ûßDßgá$Ht{iËj,!¤‚²Ñ¸ã½^ð“³p­¨Zøç}fÚ3©w¨+ìÛ½#®B¾Ršm°!a³oú}2¬$.ßÓí¥ßvñHsG‚sÔ/7ÉÆ©5%“0ò»ìü’Ò.GFH6 yHÑ“Øë7j÷_>eÂ*cå½ ÔdKýö{OÔȸ áºÿ¹1¶(PÃHݽíT8­ŒtÏõô; +³!´õ(‚¦¸£ÐöCYT°üÜ_:µøs‰³bE–_Èv0ÕX›HO\w¢Ë~-÷s#øW6yûÒTé}²níw]ƒóUΗ[iç}ö.Äö$‚æF¯±÷jòd ×eû_éM˜¦Â¹+mhõ³]zÍ[F{w´Æû-s;R^÷œò¿‹ôÿÜz½ÏÔt|?I¢/­ê(vr› \”já6eø²×=ðÇ1.6}Û%†-œµ+—5´ ŽæWbOŒ9^NĽ$‡Êðm© €Ä˜8ë+*¤ÿK$Ósß;ÛÉÈö‰Aí›é#ƒ"™Ôôý:·Uh#¡µ¾Ú°iOqçaÆc®å‹FŠwn½0ø]wEˆ=££Fž‹w!±Û¥Ÿ ܶ›~‹ÈŽ}µollv{ÚÈ q©ÛÔ ßm” –62È­jZ˜Nòƒáá˜X£¨¬Òú„t×í°° è^|†^ŒýbˆÁ8õÁõ;Þ¸÷áÔ|(†WÖQ#Ê¿ª×{…LÒBß}˜zrĪ÷]’R¾—¡ô½F1‘´€ÌÚËÕâA“ˇ‹ØÐª* +Ãm8¢ÿ0Ï—¡¶„„)%#è5|âùî4œ¾Êâ).“0/¤Äð¬æwgxìt|L³…2bµ2=—A\M*´ ä·6øKW¦+3ôvÌ!ˆã*†õ½òžùRYÖ/“ù&§>Æd´2ƒíjòdï·êõ‡a zÅò;LÏfZ©V&`­öž¿3bˆ1[”A¨þ ?‰±kƒJáÃÿÚȣ͖Ô|iÞÕ%ß×_O®lvñ}}Ƀñ"TÙë#Â,Jv:*…Ã2±t²õ0ÎùŒËè%Z†Ë0%ÌG­'Û·&£+jú‚0LÝñ>Þ/›(è?ÕSKDŒålj~>‡µOŒäG”#;ZÐü‰t¬ˆ®à‰‘UDa_UꀓËóÇ;¡^mÿúÛoÇj¨œaƒ¬Ì؉ÎÍ̪÷H +&^4~o”ÙÕËl#æ†wò,Äó4$ÉŽ¤¡+È@ï„V¿¼÷=Ú& ÖÙêÅJžçÌé:"•X%>ŠíþÏEE¡0÷|û[ڧ΃#á¾=äX³o³IÏ|ZÈÅœ)9Y;3ƒ¹PÑ’}å{ÍÔC ƒ±®Tã¤Ú"v™ØbR3aª¸ðH Z³ü«„½ÂpTHWî¹Þ™Úï7ÌÏ^Bã{&}¥z¡‰ «‘xø]™ H˜>ÂxäâêÃ×NÜʃT·¸OC… ÝÔMóaŠ™âtóE<‚.Üë¢ñÑó­OW¤Xüw•¶²vQ§á?‚{p²¯T]$K'Xd~‘Uw¨GWL‘YÆF 7>ßãÿ4ÕÓŠÝÔe Vt ²5Qò7 ßæÀBtµ•Û¿HÒ‡yd1ë/‡í£t„SÆ€SÏ'ëR;<4Aú‚îM83ÀÞ.3ÝIs`Â8¤¥þÎb‚îxv7u,{ +“”r°êqZ‚Dsëä˳Üo=¥ÁËÛd'8—lAíœÇ–gaÒe^²Ÿ¯]YÜ}™€1ã ï¨éœ9®®æŠè$‰ÿ{M.?]ZÌÀmÛùi0æ²SßkOöo×BÔ¥{ñ»¦†ëä®Â\•ÑwGX‹w±Q-à'0G¿ óóžòE¦#9-)ß |0ehU!FŸ®(—˜‘´dÄQ3L³nòŸ‹¦†\P’´7¥®ïÌpY<"di¬½”`™µk³y<Ízˆ«Z…KÕΓ™¾¨_¹”G|ÌJÙ¡è,æ¸JózAúiòÎnÌËÀ^wçI¤2>£­q²“P&p÷,]Ž|NhÈ#7E^®Á¥ßªµ"^Ÿ 8¼½â]£"Êw-<ÝRÓæ< ÐÆ&'/(Û&&Æ]¶ªž +5Ïæ{€Î7[“ó{¸ÆØç½ñ³ô†Š²DÛf½ßUÀfê¨wOpB fL+ÆwI°ÁäìAÛŒk­×î¢ 6ŽV µ³²#UA|o[7¤xÄoÑsU +Iõú<¢ˆ ‘w)/—1“a`w:mÔÊcáË2£ÄÈB”"לºÉ))øôŽolt&®þ‹{§ÈÇÅLå>-r×YΆcN?Žþ§¡Ÿçñëõƒ£u&' šd¡d _°‰îŽÕÅÙ*_–¸¥w ”)“"xÇÅ{ö¿ëyðpe@&ÇÍ­°˜Ö@O^§±º&øÔÕoøWq@irlÅð‡P#.lz~·ød± ÂéRôU™ mðg­éGhàCÕV7—´íÀ +â™Ç«ÒÝ0·W|büŒ•¿Àk~ΨÚÝ„Ùs´ŒbI/ëûŒ09ð”²ÆŸ©ú°›Ìàú"&¢ô°`Ræ… ô§ßj?Úʼ‹jÒ¦P~¥© >'Lg¥£X3cmOZƒÙÚ×;Q«G¡õÈ—Rú^µÇ\LuIþõö1é-Gûåhv¦¤¿Åp翽½*6·ãšÛ“§ +rF÷(zÝÏ­QBÏ/¯‡&ƒBNªC>¨m™LjL}Å~jª:5Ao:8gÁêi`ùÖØø…õâÏVzç!È\¢å9jqú‚s»wâÍû'h].cv·QÄíF}ëN!lñ¢&xÚ¨`Øã!¦àm‹˜Dȼd連Dõ>J=Cga]&qw7Bw¾öm¹e‘ñŸÁ5$P+Gp§_þŽìüȆK+êÖ,õ»–(ÊØ8æØJ8o(¢cʶ?•î’w´#D¨mtŸÛ [ƒjq{+r˜J/næ.]3Ì‚.âPe´Û X¨ÆgÿÜXZîq°ÃAœÈ­AñȧpNz¹w]›ðnm6„y+À’Ã’cºV1»Öºæí½˜U–RÜ…˵ˆEô{iXÕ3.N¾u'Ù]Էܨ,\ÙI(é™Èqup×ZÐk3ŽL¯ ã6ÆóýDJ6Œ2=(Z˜hµX*«š”Gk"ÔÒJÇÇùJRâkdÌÖ›}³þɤáyL×·X%^Í0ä‰ON+åÝf=‡º£î6ºM=¨±˜¸û‘ð³ÏóR¾…ø–ÛMK­fHýÅBЬÍUŸ¿ƒÑÌŸåðN‹µ4å#6ºÊ\Lþq|¨èâ—‡$Q¼\òÑnÎ[ŸÅÈîû|–ËÂPÑS¶æì&fs?{ðWë„l ‘nßÇ‘×ýJ‘Y]ÎG§] ´µËç,§‡[etÇۉ,¸Þ%ùJ¸é8¸ÚÙ¡ s£¨d0”0L%ÿ|Ŷ£6N-G§¢îÚnxA]*˜†Yúµ$=o÷¥',½z¦w8 +¦üáÈRëë†~‡8zü†¢ôŒ‚î£ +ÿ­´Ô÷a@ý£ÑBÆMsu ƒˆÒoÜ]¯µöT ¨äçR_ YC º…ÓrP-ä×6ìˆVÉ$n&|´oGGùØ©è£Û­i¹¢îÜ^»Êà&Am{]n,I“¥9¢)òÙ"­—’Xо‘J¡ù.q®˜Ìè™r¾¹âÜ|SYKø£ +ª´ë$-Oä¡(¬2$}†¦ƒYxîúº4ñËË·Mz蟺䟂Êè;/ÛïTjv) À‹xI[/ H¬¸-ÞGaUà ú™—ÕÁ¢®ƒÙ¡bÙ­ ,‰ÍÚ“¢~­-ÇuÔZ<æ:‚Ïý“Y9|ôLWc5ß,»g=elBo"o1ŠÐ3{$»…öü*ôÈa˜3ñ°ZÒêx'xÕó'¡9¡ç +Ñ «ß„ÊâŽõ…y$î7çb[-E0ûO98¸‹¯GØ{.™RøüPPH ‘Ðæ¢ºÃá4Î$ê½ãÈÜ}¦é&AfÆ¢ œ +ðþšéb“?)QðV‚Ê¥Û¸Ç gôe×Õ2(Uj©‡áµîÉÔ‰Ée«>6O†G‹&Nr™[6oc²2Ùœ•÷’ùOùú9Èì±dQsk%…'^Ú”P$nÊÇ"íN3K/>ÍÅ™ `¯‘yWª Ó¢ã=KIJÉ÷óQUsKÌ2w1+L0ÏŵjªŠ!)¢Áï&µ#oOœ‚Ÿîû hYa–*zŽ$”«"è÷éª÷Ü%8"q3'y½;¾å$³ÃrÍ%‹5-hŽ!½Ô²¡bQ¡èI~Df0çdf –^1g£Mpr6¥;¬RèöC|A!ïaµ°Û§ÂùÚð“1ØW­l)•o¡ŒPݬu‡{ oE[øëÄß 3oÃQŒ œ#”ßq#šù%W›Ã‡›DCëpŸ?­tOãKŸ‡8qØ3ù}ä„C§Ü54EÙc럔Î4†žuâta—?Ác§VioÅ6ºaÝ $p¢¨RÃnççÉÅ~ë[„yĪ59ÞA&&uöáazidJ¯oM—dtB£F̬xJ¬^2Ø…ð!*ÑQ1\½3ƒJñò…&ËæßÆz=Žú7$¿vÈb•%]Zuº-¾ÞZX'T&Э9n(æHCÁX¨Y7TЧÕ V}¿Ì–Ú`¯Ÿs6ú¢¾Kúf´I©c6YDù=”þ“*à;øã/­æ˜­ŠUs4™/G"Ðræ¾7›nØÚ?_Ñÿ¶±eV¶ë+Ž@”z®‹Î/j\ËäJ1M‚e…‘à1„“/6cMÀ´yyt$š~$:B£[PPöyšÂÑu£È¾.”SŸŽ¸Lt…ÿ§ÐNiVø—‹¡ÛþOA´üR}Åï¬á㢄œ÷<… Œ½ ä*[ìê„Lk +}"fI´<©7ú./3—ZNéÙ¾£Ò¯.H½$eU5rò!˜åéoS<äl†¥GŽOÄ}´$fi‚c@Xmý +GX}q:/ÐölÇôä3Æ'ã +j*ƒß<Ù…5P§.£ò ÒÓª4‘û!3eÌÑÕ”Æí¸þQ; ¬ãøÐÇY³àºðÇPŠ> ÏŠûHuùçVž¸Ä”60Í÷Cd«4æÄc&‰Ï@Œ÷¼h4¢dG&—‰®óú®ŽŽ¢ŒŒþ%0NO òNï½Ø†Ym—8k@ÚÔJeñRÚ´LÄנȄϙÉ^~‰°[WÎqŽùIKÛpeFEøxˆB¸c.KÚÔDb_£ÐùxÌ8.aæmU»ŽÆµˆó¬–6U"ðH{¬±Â·*¯K0{Ê"7hKk šG\–¥Ÿ™³¶'äßÞkBwÜ­ÕZ™µtzp(’»Ì+i©ÙHJ6æµ{>-~ÄþãV«ªHiƒOaÒÜç\¯ ‹Z¬A yáÉ*%Jï aèôÔæMŽu×~öÏ×ô›[ìÓóM™ +œ¿S7´Ѽ·â^78ÊO‘o÷”Â9ËjXFîñÚZψ}x¯U0 áì÷|°2ÂwZuØåX¡BËË7ñJ-]Õ…š¸&¿ yaZ`÷w¦oAòë[§Û"óÈÜVcRèo—E(­±„Ž +äZjÎ…†“‡Ý¡FÕ¤PÛ0gŠBb_fKh7¤ë^•)©aò^ì’àãó€½2s}›_s1_Ü >V¬Þ7µ<é`"îdZ$fXtê•Du¶jLJÉBpèªß¯À‡3OFV[g-Žð¢ÌªîÛå·díш«Ÿš½£å?T‡¿Êî5£´]Z>Ï{GžÂ‘ÚÑGYü¦ê…¸%¬œÏ‚0ÿ@^H02¹W_D⿾`Ö–@¯"ôyËJëSëЕëv|v’g(IŸ·ÌÔ->ñZmS𱢃 +Ü Q:ÉJ-1sûÒzæ IðvÝ~Wì#4¦°4€Ž o¸\>_ï`fiK¹à#çà]h"ûhýPÏ [Ћ‰QŠÑÆkMÅ"sÿÉ‘JÈ +7çd«WKxEË,[B³¥|ˆH0ÇßÃh±VÎóʸ„s?Â$ZÎÅ„|r˜Ÿ"•(tˆ#ñ5Üq-ú¶èÆc%@FftGa;¹¡ëæïfUðsàáÂgËñô¬C€æƒ«R^t>×9Ýbkl0°p•â”ÓÕL³½§Èï©íi‹¢œn‰LÃ;ùv Â'§ª߈ÚÊfìîâ6Ô|a=§"×iT²'Td®áôÐlÎÅ>™òUŸFèC¥h•òKWW”y@i˜4/ã%î«öj¿|"†T¤£0jBŒ•ÙB¸®{&|ÚôÚâ'ÓtKÁMÕü—r1Фãi؃~½Æî±ÄC9::ýÔ©”B%FD{ô´pÏ9—¯ ‚Ë£tB;R¡)ß"•Zxø¯ˆyí qd`HãÊ6Içç"åñÂxÍØ‘LÑÚp½#[œÁ¸zÿ¡EE '*i}t?c>Pª[ņlœ!0ü+a±Ÿö0©·£1F6~‘ÌŠ¸ pøóQ³œó ©7O{q°w7¸T}[2mÂK3Oí­l=XoŽÜÌ­R>šB¥W'÷kðäKDìª}»¥©¼¥9lÔÁ ~iÝÇþO%sÄ!Åëmïŧ(ÍÍ4±Û‰!åH³ä4‰µA g„°¶gøß{ožfaQ(®~.õhGÎÔƒ§’¯`þTRà(¸:9–£B°p ž§ñ­Hv>"Ò«äÊü(”hJPþUÒ„ûNŠÞ…³XÄëf3»ùQ§çàX”Y14ð4ˆ¢¯Ñ#zxp{ áVY$‹™V­ègLëæÔ˜Ÿš¯~DÆ5FQF•S Y,Þ³b¿Â›1‰¹¥†âf{qlºÄ©‹ÑWÉz Ç™—Þ3>ÄÙ/eãS‘âVH# Æ£æé›ÎûM{VÒ²—ûgþçèψŸb$¯n[æaSbpEwGÑ•0H—Èp +"D‚ÎÇÈy‹òÝLÂþha/ýš¸F^ 8™ð@Œ8|FÑ–æJæjŽ/[6ãˆWÝ’è8 ^òŒò«ÂÝ{f —üüà@9w4laú¶! ÉëZN +Õ~Ú$w„x³žL!;'dRü± ˜Lƒ#£oÛ¾ÿá‡b̧È|£÷̳å´tƒŒ:›—·)†äñgÌP•á+[\±$C(4ƒgX$¼d£|£óH’µfÁ´ ñÕþæu#ñsÈøV¶-%$ûÀÀDÜ^v 3u#˜U‹0?ºâJ˜ùN®îä»Õÿpçx”½W|Ù¹°åœõn°„Ÿ0™æº§lD$·ÂŒ#iáÉTØn›¤³cûÜŠ·Ü#^ÐtwWs§þQ6¸¤4ã3½÷ûÚpÇboµSk9‚g|*{†8EÉrï8U1ƒ0˜®$¦žÂÈ,†×ßG`á®/†36ƒTnv}ÍVæ6BÔ¡µ |ëœK¤â4ÁR¿Æö‹<ÏvKvZºÃ¤Ž,®à&Ø8¿\È”%‚ŒÍUÉ.XÛ|kÐm.,>MG7î^ìÀ •’~X)vÝ0ø– ?i#ºj1†Ëõ>TÝ)Wt š€j¾¾‹¿ÕÃwB +J}Æ?)ò4}' ²)&k:mÞš(¨ó-[IOP-¸º¡ ±rÚŸûULåÇ´T"2=šLÁf. / Û†é|=ò§7F¸lÈayÖâÈÖmJAª»‡}Üq?ºep¯¦|\bµ€š™›†:‰64.O³¶qG W® ñzámõ*ª­Â ýŒ%¾^ˆ>Ð_IlSM#ë7¸ßç—¨òŸ=}“¨Ïäê{×}/¤|Y™n+SwœðÁÒù³°r “¦ª-mªõy…ç…C‹#Ï×\šz*߯Ÿº}DS“b +ñæÀéIM1avÁGÜ'6G/ÍmÌÎ0ÌÔ8»r-Ũð¢µËÕXW%ñ0ˆUcÌXOŒ‘j;¥…Ÿ+ƶ'k¤¼„¬ÝÓCQ±âc{Žéy¿j•ñ ÐÏ•WxO¯Á€¿//Å¡0ãÚŸ;&”÷ùEô³cºx¢g”Þ«uIÿ5ŠÂQB6ãÝdåVb–þ.¬t“ ޵»{ÅWô¬Ù~=EÃõ̇¦ô‘þOI]¡µÇ%„áìXùȘ ¤•á…åMq¤ã¥eܳCr0PŸ4#p%û“Ùê°étw%3ÒÃ(}¿å_7¸WzT.u°Uø`xåÖD<Ç [/3~é…Q!."¢gìH#ïÃL¦ÙøiXuÛ8D7ø›ÏiKÜIJ1Þ!2ªÕc¿†~ÂjNÕ]a4:e¦§©ÿjIÉ—ž$#F°ö‹žõ¯8Ðè/Öç/t$«$0Ø"gðâù‹ƒ'`Âöò~Ao óHµ6Û×¹Óz›öÖ +ïœtg•Ì6¯Sü@µ«{}r–fìkcW›wõŠÇЪ£Î_s͹õö†X8áhò—ñ¹I—´æÏþ@l\bUÝ itïÙÄRV×¶ÖôKÛw Á“·³½JŒU¸é|³¹Í·n«rÙÒ-rTT›Õ5½ã{?9þ‡?”ÿðÿ€© èÛ­Qþ‘ÕRendstream +endobj +416 0 obj << +/Type /Font +/Subtype /Type1 +/Encoding 2803 0 R +/FirstChar 2 +/LastChar 150 +/Widths 2824 0 R +/BaseFont /ALHNTJ+NimbusSanL-ReguCond +/FontDescriptor 414 0 R +>> endobj +414 0 obj << +/Ascent 713 +/CapHeight 713 +/Descent -213 +/FontName /ALHNTJ+NimbusSanL-ReguCond +/ItalicAngle 0 +/StemV 73 +/XHeight 523 +/FontBBox [-136 -282 820 951] +/Flags 4 +/CharSet (/fi/period/zero/one/two/three/four/five/six/seven/eight/nine/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash) +/FontFile 415 0 R +>> endobj +2824 0 obj +[410 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 228 0 456 456 456 456 456 456 456 456 456 456 0 0 0 0 0 0 0 547 547 592 592 547 501 638 592 228 0 547 456 683 592 638 547 638 592 547 501 592 547 774 547 0 0 0 0 0 0 0 0 456 456 410 456 456 228 456 456 182 182 410 182 683 456 456 456 456 273 410 228 456 410 592 410 410 410 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 456 ] +endobj +384 0 obj << +/Length1 1809 +/Length2 12776 +/Length3 532 +/Length 13807 +/Filter /FlateDecode +>> +stream +xÚíµUXœÍ¶p‹»»$¤qw·àîîNãÚ¸»Ü]ww·à \‚»%kí½’ïËs®Îsºû⳪æ%o5%©²£ˆ¹£)PÒÑÁ•‘•‰• ¦ ªÍÊ`ebaE¢¤M\­ÄM\|V^^6€$Ðüþñqrð±p!Qļ@Ö–V®1Ú:qDì k3€‚‰«ÐœÃÌÄ æhf tõbˆØÙTÿáPºAî@s&$VV€¹µ™+Àhií€Äü“Œƒ…#€ûßas7§ÿnr‚\ÀRšiÒÀ’æŽv^s ³¢#¸ìòÿ†ÖÿL.éfg§hbÿOú­Ôÿj7±·¶óú¯ŽöNn®@@ÁÑrøŸ]µ€ÿ–u´û_ed\Mì¬ÍD,퀖‡¬]$­=æÊÖ®fV ;à¿â@óÿ©^¸ 0«hI©ŠiÓÿמþ«QÙÄÚÁUÝËé?iÿéý/fýÃàÕY{ôXÀËË +îþþ÷“Áÿ(&á`æhní` `ã䘀@&^HàÓ&N€+ÀÚÁè z‚™™]ÁCà%ñX8‚þÙPðž3[ü+öod£Ý ÀlîhggúOˆƒÀìd:Ø-\ÿDYÿ+úïýþO˜ ÀlâÞkÛ?Ap ';7—?³™£½½ÉŸ'€ÙÊËÉ +èð'Vq'r4ÿâ0»Ø™¸Xý‰ð˜½ Ç?^³£ð?Ì ¶wõøÓÎ övµÿêV¶ptû3aΖÄÚý¯`]ðîü‡Á².@÷¿\Á;Á ü¿‚¬ê`ý·Ï?s¶sü3ˆ œFäSˆþ!ðp±?+þ‡ÀS”øqƒ'(ù‡ÀÓ“úCà©Iÿ!ð¼dþxR²ì"÷‡À.òì¢ð‡À.Šì¢ôâ»(ÿ!puÕ?®®ö‡ÀÕÕÿ¸ºÆW×üCàzÚÿ!ðÂüçÔð‚ÛLÿØÅìÏÁf˘ÿ…à•þ…ÿìú_¶³ü ÁzV!ØÏú/ Úü…`'Û¿,e÷‚­ìÿ øV`vø ÁVŽ!ØÊé/k€þÂÎÝ_Öpý Án!XÃý/kxüA6°†ç_Öðúþï‹MTÔÑÓ‡‘¼~Œlà· \–ÀËÁå÷÷Ôp°vvʈƒ_8nðý'jæß®ÿú3ßšÿÍÖà;ôš!­.9šñ‡Ú¤·„—ûKÏVÀÒAŠZ¶&(6ö-t#‡¬$BÚ•NÈ9Óm6h?Wfa£À|ðx%v‰îòU™’¼rNÈøöëÀÝø Ë»Xû:KÁk߉ì!ä½³eñö''¤ÒüædyŠÎçáÜË‘ÓBeqõCøuRˆ~=÷¦þìP.nmÉ,;ˆ°*vRUŒ çòHŽˆ Œ”$˜™›„6úïWŽ]nXÏÅÉ¿Œ žÌàbb\ˆ"—]‘Q×Έ…‚ýÚ·š¸y9Âwó«ò[Ê›§˜kˆûöu·é_%Å<=ÚïõÉw;šHžwÅ7Æ+‰&ûL‚VG5Ÿ¾õüš$`¬ÛÍL¿6_Dè†w– ù§Œ} +Íj8ÀÎãUM%þV•­™ÖC« £uÌÆ7MiÌïZßq1èàÁýØÚ*ž˜øÚõе8îµYúÕž&EŠ~‚ÿU A\aå]mÿ}ÍYÑ+çYf¥°æ†)†–¢+Päê@qZXm(é§u–[5S~j°}ã½{|X &D{tT Ô}Æ¢”‰ïÆ>q,6b³Nààë–R‹J&:Zøœ+⩇ •ÇDØVƒuqŸw© a7:ÚͰ`kLa8R£"MÇÈã÷wbû¾ñ­$Äx&Ѿ‡nè‘UdÓÜc +½¸¸(èv2å øbEº<®Žü¢¾ìú»[±Š£†B,§†þŽ=TUº¼±Œ×4pt3ùšš¼H¸!¾²™?¹…W\f.˜(bÄ'°%“Ë‚uf­éz?à Mý,MBëy€ÁÀ$èRÓÒ»¦f=|pöâ¨vÖä7àòj –<˜@ZA›»×¤ªWdŸYsh66E4Ñë rùMÛý:!‡y‡j»òÎût4K¡'),¸b ûrN‹áæž6xÅ*¾r¢)dSmR.3XF^Ù– ›|Ä9eë^P¦2½÷Á$IaÐFR£°^žýù&œ‰eÄŽxXh¿Ê‹ªã€‘·S_Ñäõð\¬êUÝdUJÑCõº÷îlÛR'Ž8Æ“¤9Õzwö›BÜóöÍÙŽ©—‡M.‰è—TSpãv¨ÌçPÌ'£èÍß üYFt ÷ ¢þzëhæ$U 6†—O]¤p¤eWˆš¤¹îý¶û,i»¥‘¡Ý’eu¸Ú238øòè& z¼°J°°ÊwRv'r,«ú½ÄEŠ}Îõ/Z“\äò9÷ïJËü XÅd[”âWIù¥¼ä¯1¬)´ç @¯‘Œ©ML7C¹·€9üÅ{›Üë;K‡ƒ%ÙtüëAˆ½YÜO¿ªÇ¢"+¢µNu¢ÝCô¶èIREñv儽;7g„´?>çɸøv†ù`#±èÿl$kÌ–·Ï«þ–ia§Ÿpâ­ ¥= ¸T¯ð…¨—4ÈágÙ’O£²Þgy¹°­î(>_ +MT¼P8yzš?ñ¥niÆ ¶KˆH>q“5rýô-Zœ@ÔQa” ¨’q¸C±V¯ؘô¥ÈÛÅB4aUG0¢R’¶¹z#~D õ½Sâ¹ét@tÿT@Xø;È_p#¢ÔsœvcóĪþ$Æïþùþ´³Ý|„¤n“&ÿå‰â@á#P€®ke)Ïœ˜e•ÐRð›§!:È|€HÖ+ìÌOËgV×bÃ&ÆH d¸Œa×jy#²g(„·˜BÆunZ!é–d«E"¿ ·žÓ-Z/ð¾AT¸‰å½tÈ÷Ø÷[Ù¤¦Ýð‘¼Ä2ó‹ÙídJ‡”ë>~LÆh¯\¸îÉ%îl÷F§Ÿ–™²Ã­°‘<øšà+>i„Ù#¢‚~äo›*†ùÖáE—…ýbù%mâ:éö>PyùþâLG]ë=цá}-†¿Ü/V¥fVÅc¾ümëU9}ÿüy\Arã÷á{çóK>F"×SÉ/Þ]‡°Î˜o‡£uâ6=ÊW1’®“4UacÖÄ!ã.N’sæF%M­sÕ¯Tó`“¨0^´¥!ÇZû® 5N̯ü›Y}w½Ís¼Ñtp†¦"‚JäköÁCFŒ{‹â"¢„SˆÝSÛÜG2F7²”ôÙþÌøÚx†¡¿3@¨–ÆÄÇÄæH‹h*íøPH\¸,öþj" ê*X´' õyþ\1B6vBæ:Jô¥½TS(=wÝ-DèìP>QM{rªÉ+gÓ6’Þ5{’`]/šlʉ¨p×{„¤7©FI,®²¯š›zØRfÄB™” g¯¹Xß‹z +ähBÐÑÛ(%ü¬K)Vv’Þ¬lS1T Ó/Z_7-˜>q³U U%3tZÊ–Å•ð|ȶcU¸ÏEý¡O<ºÛ%eÐu”9ŸòÔò%â 4`ÏÑ–ê[‘?€O‰_RâE·aš(„.(ÛŠLZhô†Þ73þ2…ýlå_¡~&·Zpý3ó¤×̈B%ZZMŒa£4ïÒ‡Jˆ¯ê|}ÌÊÍH¬”CL¿¾¯Èü<'ùã+çi6žã/̺(õ–ý…Xï ß–• ’¨®íþ'ì‰öWÓúÑ‘Ã÷™¬•˜ç§"Ø +>¸Š#ÏÇýø}Ç”í=‡ëDÛ³&>e ØþµÇ˜ÜŽŸw•m ~hÂÖ£Eó² +ˆÅ½Œkn‰ìG 6 ‚ƒâ¬Ú†“¨0ã8›„ŒU7šš2g°ª?¨´ÏÃ¥Úd©å‰’kb`Âσ-Jˆ÷¦J‚°F>q«PÀ”¯®Kg£‡fÌCs71­å1šïYª“•Ò“ M :šþú#GN Ç<£,,NÝËê^4ÑÏ÷àÃ÷›1âå6ÃoÌÁÎíÅ%ê>ÒšÙØRcŽðáèHŸmEÊœ4kï‹Tªäå­µ ~Æ÷š/ïúÏf/ì„T4­™¬¨“f• +uñŸÂ'wÈC&©&Èi[LßS‡µ-EÈL®ÖÄÆMYºè5ºjç"G |K”"7}0Ñ{ÑŸ²0ûÀêÇÊÔ/܆Ä#Õj“Cõ™ wãvãùkceøgV±[Á[Ðrfn…õ|ÞxŸxç›ÃP9aƒGܬdNThS§ÌÆO­«Ø^²m¥.æó[‘WäÈsêÀ¯4Q×…•A0))IÞ"b _lÎg•íewi·¯FH¢¾ôçGsi+9¶Ç8SÖ§IþªkÏÚµÏÍo?ÏaÛ)y0—ìÈñâAÙ-^Y±›ën¾é¶„Û].´—«Q‹ßäÆûÜè½|’ÆütteãƒâouøNãÕõ.#y÷(¬í¡‰¼9yÌ Rø~¦×~†ã¤ãwZÝ| ê.ÂGOG9¶Ì“åa†×NE†ua¡Ä!µ?^®'I)¨&0”&JÏ%¤ÌMd +4Ná~oöyhâ¯}ã(ó5ÎÊÔ[~}Á^Bg|z¬¡ßtµ¡¥ûñ[¤›Îùw°±ÐÊV!+}à)7© ›1±4;ˆBìÓÓDí]£ßÒ¨Æ[[yóÌBšX“0f¬Ö°‚Â,C[.ñ6‡H?·í>ðJç!'q+ÎH}Àkq|ÄÌëÑcQãŒ%?©æÖ{QÍz9\†”}áV[ ^{dR ƈlq'øêd‹}iI×̱¦Žoqm¢x98.¸.š6—w­ÞQ·â}«OqðO˜©{B¶í¸Éžç_JSpjŠ➟† Ò4K¹4—lœ[y%‹pŽ'±WiÎ×ýõ³ÃÇôzCüœ$½¢¢¢6ßýæ:ŒÊÞÙ—mg_¨ ÀÅoYc½Ÿ–xM:QSö_mn/éPmØDÁ¾ÉØw¬‡F2¶Œ›=Wf¨íq"Q«ÖIp=w +iaÂêHù Ç}Ó¢¼P]“&5]duăµÙƒÆ£Á,6µí­m0ÿvÓÆ04Ñl‚6Ï +ט‰?¢MY¾oÀ!WÑÛQ•hØ÷Î"ôÇɬøM\¬šI@Ÿ/d$ q.,kÔsBl¨P›M[+c&ÀÞ˜e„ßÓP!u"KÚ¤Ã]As»Ú‹ŸÈ²£—õIsœ~ù3þX‘ŒçÞײÚ¾ ±û‹iYè@ëäéÕÃ…ƒfËK•žòwœÄ3<š ¿9v “­´üö †±"=eœœûªîè w«sŧŒ˜íÖ=O*T,øWƒJï(œÃɲýˆ”}²WÅwåHɯ ñãAh&ê’ ³"ÐÆïÇÂPÎ{’u¶@ +CÚ!½ñÜÃ6®ÖçŽÁcÏÂÍÞž  $ÛgЬË")ið~4~bZ%?–ÓR\Q’jVï}E¿ÐWŽ]L Œn9†ì4L?ybeqê6-éla¦X¹õ$&„-ÎâW}ãé>Õà‘µã“ Ì0¾Ï„œ?÷ð¡GWJHŸv;Ý@K i#3fìÂ_’?`ek#1vŸ€úT…͈ 3Ø®DB3#$*d7R!ÑÊ •αNð:›Û…œrî¨ô·F4%ÄÓ—ö„¸{bÊŠÀÖÜm¯™˜Öz¦F 3¬íG÷VuOo£Éó’ ù'' l°#‰ð®óIºžQš|ר¸YhV+†ãŠû³ˆÌ¿†B§Î 5>& ;ÕBs–f‘ÒVxgnÎ@Ë f·%—É«']¼d²tÜ­QQ›0’ sû§‹Öú³ Vx´‘„´îz«zÁÒM*Vڣƈ0(2Ö옻¡ëU4»òr0ú_Šƒ²ýÏT -•! +éEIýp3ãY‘û +ÙVޤŗì¶~Ì—çäÊéÊÚnèpîr¿$AU |?ÍðÊR¤}û¶{Mõß.ð›…wã¡GcÆÐ4,ÍwÀç”fÕN®€h ÜÂr-*Ì U-áƒuÓè(ϼ¹·Ýk~á¢^½AâRŸú=5]œÒ S/:Ҩⓙ³V%k§Rì…¯LnjÖ&ùüл¹Go#ñ“Ú¥A8´~õÏx¥n”´#¶QÔ/ޝН:JOúáe£dýÛ¥fÕÄ‘ãäJc¦§ » æ âaQI{~èc‚¬g{Éx&_¥~×¾õ]îqqðg²ò¢ v‘ßžjM’«¼{Ûív¿Õ ©ªû’=MÒi6ì²üô’¦#ÄÿÎ [úÀÖcAƒþ̨ø©æd!vþíU°0Ð9—²¸wFÝØ=¾Þfæ"3+ê“°ÑHö#û¬€ŒÜïEüç×g—³qß$n×®š´ÉÍ$k—§Xº}èç)«jˆµÐù> êÕûêy/öw c81ÐíjJ<Ñ´&›V@ÿЙÖ‹mM‚óÞ.¸b,"ìç›Á¤‡ÔˆLtr‡ìN?ó QƒFv5m,©|—„†—îxÅw5U WB*JòJõ1{¡°ŒdåT\ÂVÝ(W¯ó"%¼Î!,¢ðƹ.³Âà™í]ËbýVÕ™ÇGöz8³Û×0’í´õt»4+µmQ\ûO;?<= TX¼¾ýšÛ–‘p¤['©²Ù–¨XóM‘´9ùL…SÜSê&î¨;soÉKˆj³~ è" ˜´Ë¨^F®¡Y©¾ +¬“¦`D’ñ»>¤LôäãtN»²S0ñŸö~&—E–Ë› zí-çéxn„%ÆùÞV¥„äï÷~þ˜–;e;ÝRÀ˜“lcçËpþ>1…v/t”:÷´§kŠÉèïÓuîtÂ!¾^Èž©Áq—¨C÷·<Æà÷Ÿ€î=cø½vUµ„o¿YXc"¤=¡&œ0êÙ¸­1$ùX]u‚ÇWJvõÊN+ªÿrë7µeUfZšÿã$Š/}†;<(‘O³­ï*ÊTÃŽÁD/Š|É*›=O¦’6h'Ý«µË“M+Y;ˆ,—¹Œ¦lYŽ`Ç„q=¨>\ ¥™Ä›@ÓPyKßu»Æ†ù–ºÀ’•ÓŽ+fZ7~ýÑõë„°$»À¼r¿ò½°°¢ªþ/':Á&š¡¥fÙT“¤qNšQYYwûeOÁ‚©ÇÈ +Ê"lË¿¿R¦kø]îôþD8Ì»2/Àa"Dú½f3 ªk‹ã³ÁH)âza¬Cd4çH톖ÆÚ¬}`<ö¦ï‰çv9fâíd ¾ CÇ“áõz[ŒÐúú.ËŒè#Œv0OŠÄAªÇS2Є1€®Rï×KÀwÓฌŸÈ´è‘ôq`¹tð2“iÅ¢t¬3ü®žƒ¼èt*'6®¬%uæ>üܼZàCùbpè ŸŒç¯I{KNé½ñ ›D\?¨<íÀ·$ºšë˜®‹‚]Á¥M¾²àtµBJ‘ïhRºås¡z`Ë +ËMbõÊ¡/ytÎÒ¸/г^::` -*¬þ¦v]_íœÓ¢Ì7²”aø,2ÝÈ‚0Þí6/6×O%ÔæE²"eAåßvq½}‚•Å•+ÿqx­€…º¾ëeÈ_¤ê4÷Ù C6·¬èÃ#ÿû(Uõ)טR ¤Ydw +F‘D8GVgV<íøõMx¦ïa1è\‹±Iùè¡Þ¨eÁê¯BÙæL?Œ8®î£÷…´…9'ØË<ªóÝ,[½Ÿ™i4§¯¾´I[ÇKÞ%Õlx~‡>{ÿ嘧•0‘É‹ûѹºäå²àüSÔþáw·<ß©iýHsU 1&VžyxÈõ¬ÄH$¶“?K«_¶’@ø/’hOÍ*†¯¾Íw¹¦ÌŒWòj +à>m¿šØÃ5ï-çLu$¿»”¦EeæÓa×FŽZšð2 µ‡aækìè{š¦\®MÁÛXŒJÊÈ”‚îß'¼6cÓÑìM®²æ”¼:f(gÁlåF§Ú•é¹öÒô ^žô¾žŒL&qëžãe!7€ˆDßžÑ2èq̲‹Çrâ_~8;Ñ:ÎC˜yxWÖ¹ÞGò”Îüj¬#˜Gy'†ŒðÁE,´FɃL>bÙ½Õ˜!¤Õ8œ™®‡ç,lѼ(|”îõ`$ù“R&cT>à³ïF +FBó@ÃéuQh_¾Ç^aíÁzPЏƒì§»ú §MáÞ¦uó·*N/Yz„!¡a^³âä®­ ¿tŽbŒ·‘èÈ#ØsÁÅ›ôóOVH+Ñ+K„ì–>%¹kíä½³v( ¦ÆGÖÚcqÌ{&Më ã·¸S|DâÌ¢õ!özãûçšÄS”æ3ØÎA"Û°Û£Üýà‰2`ú™™ß˜ãGønÐÃß½sÕǃûR¥ñ3¿OÃÒaü†ö±¢üTûWh+kúÀ= '×…¶Ï?Ç¢+ílÂŒ]4Ó¿0Æo +2§€ÂUx .Ü{G’n@W«Ÿ x**c_‡Â¿|ôH}y*dʉäñÑ$IÜ¥!ô‹)EÍA&IGZÉ ý¼É›€\dý7¨ÐpÓô¥T‚•Ml…Á~6Û G ÈX•ˆuzÔŽÐeé³À Œs +'""¦{ó‚ï|`þ^Æ‘jÑ-„ÐЋRª€Ž€Ùp]ôÅØºn4âKozý”!¡ª ÝúÝ—aõs&Ï„#q""‹œVýÂßÇO×¢«o®ªÁI¯%…†Ž«Í<{^ŽsØÄb혿ú¿ÍÁvã¢KòNÎjÿ¨8"þwÓhÁ‘ef!º” ,¤è(š™t,Ïn9·÷mÆc wA§ýÑý{Àôíƒ*W OŒBþ6<¡?§¹ðTw0û•ühò@ñÑ.X5ù´"|WQ0›xH$Xc¿€¨ºXM­0èÙ6ÃæÞHY¡'ð7úñˆ ‚{§U/zöAõl^KÇWò˜ø'úχ—þèGùLýv¾Vg‹0ÛÓj 4m_³Ú¾>}ðs¦~†ˆG¾ +)»›-S±mÞLÎÍ»–‹ÕËöx §Cªúó7¼²ßˆt5¦ö×^•Ôæé1{sZs—VBíòõüÑÌK¸T æy]Ó!Òxk7i¨“‚8ƒ³ÞU˜ÉNüâõÝK ËG"yÛ;9Õì÷s—ìûíÍ·õªÖļ[ú6¯qáf1­Ð¸®oÒ{Õ~%iZ×"sã»ýÙqn‘çëûÇõ¥T°Ù%oRün?ÖˆÚî‚býâ–~Ÿßy?RDëäs,ÉL_L„5¥ikÛ‡£g¢f'è$àò~Aó5ýºª[‰Êo| +ã®H/Ý^-æý% þ\¯ÜÑåò¼O‡jÅ~Î\ºÕS[|¢œ^U·$ƒÿ“?ﵺæÕ}³Å\"võW|y9³ŸüòCe¨¤G6¿5W‚†—Zê͘„|W1 ­tYe2˜ÿÂ…EÅê)Ì”kD'c~êZÉòfMTpüÔ/뺎±ƒ+Ðfqn…« 7~ÿ«ÿc'¹^Gcfw÷¹~'>B¬æa ò߯úºê`ÐÓ†wµS\UŸ#)7ÉÓúøŠ1µ1O=ì‰ËÐnÜ£ÛFžÍ5Ô»½ÚÞ¶¢ é¡ogŽ(4OçÄïøÑ°kT}’/§æI¯·ZG}³••ù—±®ÍèúœŽ«¯»TÜS "ÂâƒEÊš[ÙÇßm *pó—wŠñà÷ÝàJ1¥VƤpÖÕØ‡ÀòÝàóx5**Á·µ¥Â wŒßƒÏPÔ¤Ú”¿éð÷h¾Å Eš˜6Ax¼>ˆpxñSôÛZËÔÆv’ +nC»µPƒùeóŽ8rÂ=¬•3 +R×Q*òuÿ {¯?yï¢#úzªîDu†/gYZ •éM£BàÔÌög ÊZK¶*XD%·Û“mdùÂ!1Á#.yRíšpš¶bCÔ‹4ÚË”_Z«Xí·÷—l#rQ¤ D5t*ÓlìµZ*8ï‚’ÈíÖ1Bäî×îk†V‰øÂ¹ˆ×ÍHS‘f¤ÚÐÇ;¤C"s¦6õjˆEÚÑ·pÞ ÃÅ-y=!-:£=Ã0’nó™±ú̪œ—ݪӶV‰æZ¶×Î×Î[ÌSðM¿…˲W}êÉ"e¦d™Tî ”Bé\°÷‹ +9uAšá1~gM?W6|TþŒ=l=Ùün•³Cƒ‡»QíÉúm¸å”ä;Öoa.±«^¶Xlq¤H·<ÙÈWe Q¸‹ÁÈìMu¨“_›™´$u§ƒÖÍåÖ³}b‰t-› ¯ÞÚk8MÞˆFŠFœjyû +‘F¼^’ÏMõ¿Ø5<ëAg=´3Œégõ¼Îñ[Ž@ìÔJÑèÁBÉuCEx=aó~š`‚—¾yŸ^9"úð3üs~¿-U æ×¶„¼1`­?†Ö6[cH³ÈP fq肽WuO`E0Ý·ÏÐcúªß–YúN– £YO ÎKÊÁµÌÁ+È“D¸+”H°MêwñvK­*~'ï¹f‡Ý­¢%†®Z>UÀ=U 'At˜•²uOfõÎpŒfXV£¤cØ7Ù¿RÎcb¼—j(ú m£¬*† „†3(§˜z¿]—qö“6?Köèyƒ”PTÊ×ÖXf]][ñ% ^•÷ý*œ÷㼋皸ãµÎ ü¬úfñûweî-bìÑnæ#wk½9ùГßnJ¦a¾ ^cARê*’;¨W7x;Äõâó>‘ +mITÃ$( +;¤=NØ0ÉC›ÃQ>!éïô8;º¤Ø™+élK3—,éÆw* +ãd5# Ç똜ÖÀW²rˈŠJ•åРaŠß¿K,Úi‰.¾8{˜Ã÷¡Ì—ÊÜL:rç +~´Æ¥ëýXu‡¼Ï +o‰±AËŸ…y‡5\¶Bþñ²ÝXZ]¥íÿ˜=ÄàZˆ¤\%RMß´-™ž~ì „;Ý' @¿<#Ú‘k(ñ¹ü»j„¦È»@.М¢tú¤¾µü‘èô.¯×b>$í÷÷¤£ì"© +Ûd*EÏWØ 6ÆQ 3jÈw]ÞþDöÈhÛ>0JªÙ ü#ägÈísb¯ž’¢ISëå²gÆöθ)@Ø'ڀ߻>³éÆê±ò˜ðxpU1m€)¹œ[‚˜ùÂ&(ÕŸ€¼q1Lî:ªR¹jóÆG 47U´3 Ìœ •~ç¾êSèV8‹’ÍËúM ¬NÚ,Ò¬¦<Ô‹~¢ÚF“– wç ÌF;o­·¡>œqÒä·ÀãÀw?Ð}浂Çôœ¨sÏF}¢VcƒÄò®=[g>7»y+¯ííV- ú båï»q–ÊåÁZ¯1‰I»ô¹Vƒj¢-1ÊV{FàHù¦vŠè¬Ðºz 5J¶Âfg–/¸p¶Z,5 J¢Â@ÕCdls ®çöz[·Áøh–‡/þ,ùó„}L 3Yä—Òäs«9âw´¼ÄVd³…ͼjZó9'²T8}— •ë=ºÙ3Ï3‰7„a•_*˜FU¼áu0ޤŒpÓT¼¥ ñœ?àb3«‹9"dPêà0Þq–jªT1꣼Ö{ÅOc ­ÏøSI‡ÚR¼ÖøÃ¡ívKJ‹³¯Ý~ò¡©µßiÊ~sÍ‹<È y\Ö¢³‡ò£>`û5ùLŸ7ó˜Ý!cÊn²0ýøŽn…"¼ jÐaôŒ5~Íîðc¤¥våU犀R.C…ž„'2¿ ~5LY–aÖ£ôÁàe¥­“p ¶M)—øY«8P|W.¿ÐÓV@`°K0¤Ùt´±È[™fî*¢0Âxnyë‹JfWbë}¹¨Fà.a¢a¸ .…mRÐtÕ4ÜÔ ¯3lއbSð·†ÔÄJµo{Ú¡++jØû =°†±ÑÙ/SM̶t!NŸ\/—p´­”ÑvUì¯d°Æh=píÛèoá[X:¥Å ¾÷%ÒYëùmKöÑO«Z>߇ÉÂ…J"X{ïIö·B´ùO—é¶Æ9±©Ú³¾‰¶¹Û>³ˆ¯šiÊðÅHð›VæMM‘ò*RcßE#3ܼ]ñÇü¢J^s–u@]Q9³ä%'›ÍïÂ*ç9F°ÄMV üòïåi×î”6¥üÛä`weO­ŸÄÌ·Žú!šÊfügà|BQ¦Õ|ã³XÜÞ´dw}éÄ—û@_TäÇeO=oinãàseä89ö¤çw¶Ý|ÒNÖUJií—Z ‘ùº"(ÎP–UO˜¸HQ¶X„{j>œÈ)Ö6£Ú“¢gªÌlôºA×:*5(-©×Å©ŒÑF ›{öìÏšl ø'–d¿êö¢@QºE$©bCä|è‹=£J<÷€{ý>¢9‘ †¡é­ÿa%¥ vzÙ» ²"º8EGÊÌ+>,óØ´òBVǽÜ7qã6º1hÓŠÉB÷&ôhiÅÄ÷R˲„<¾‡pcY™(émo{uÅC_¼$—› ò‹Pq_¡î¹Ëe¤k ¬éBWë¾®:çCüÈ:‚ËŸè¢&=iTL¿„¹™ÙÙýrÏMi’ó«’OÜ—q~(~`}ÁTՈȢ¼è ~PRr¬Ôgc=€ È‰ÙasÌ”B~4¸dTË A¸*?ƒ…aJœrØfþNKsç©~;$l­“PÊ»ƒâ·ì[-A'’(©C©ÿ">Žާ¯¾˜?¦û8å‡ùTqñü÷QY5ˆw„µ1½8ÇB”¸2ЖðôæÛá*¸&{'¼J$¾“¥—ì$¤¼>›RH$D Âj8–B‰%?Tt İ,á·Y2UrH:EoòR“]­fB‰Ó~Ö9<îÜŽE}Qï!Ø6aÔ€¯ëXph–¸s Ü)ehsÊÝ‹ü Ðp‚ö:Òˆ%#Nzp•TV-¬é¥£î¦Amÿ=°#ÀExö$ÅÞ¸£¥§»b×ß$áGý‹)T8áYå‹B9Ùº¶Zå#’EŽe„+éS{æqWê}í—HQ7èî\ü£×x‚Â%@r9™d7…`oãÚÞÁ+?ctÕŸñö›ÑÛÕ$v e·ŒHÜ VýÎ/N™"²µ<Žü럳;œSÒ;µC;h Z0JÞ'—7äRúU-^ŽG x_»ÏB»+Œòr¾X6 —$oEq=ð9Sµï<ê¥7®õá]&ð—´ÔÌLËÅ)ýf»Ô3ª[tÕ*;[4øE÷]E—‹“q¬ÄSó:xÓèõ !§³?—À>Pˆ¢á˜ÌJî]Éß­ Ù7ÀðŽ¡Ì/_ÙñniˆW-Òg¾v²ì°«9¯¯Œzn“¶›žŸ—ƒN= ]«áb™Žù#pdõ3®ó½ŽbHÓÈ”)œc2êÃ𨠳X]ª¤O¥eÆ‹KñG-§Y;õ9hºkWü¬U¾ +ÌÜaðÚ£_ °Ð %Ž~ægI€µ‘ô‹IþÌVh8|s€*e¹ïÞàõÚN„£!xß_½YÿÂ#."v±æ\mÞ3%< Z½LaÒ) +›_ª%Àã, s»"“Ç£p÷¾FàR#Ó\4!w]û{n™;©¾®Úµí!«šaË…âCgÄmoªEÊ®¸…ù¢XRârÆö˜„I•01¹ÚN‰º% šee,8/~O¡£=ô hìt–OZ¯w…_ËŒ‰ Ø*Ä)¿ÙŬ뿾ÉrÙµ¯ÒƒÒV jž·±¼R \-ONåv@kçH=ÆbòÒa½>*åÇ¥LŸ}Ñôh^3B&Ó0ÝêÀâÜ?Õ÷m¥Æj»ˆŒéÂéûŽ`¹Ù™çdÎrœÁp¦„Ý6 úãêRôžäR¤ææfʼv—8mÇà O&^œB ¿âÓa[±Tš}ÄBò(GýŽ|œóxs‡³ÛèñŽ›×Bz?É£ Éé¡ Ã­aµÒÝ!¼¨Ð´é…¦ÁT…0CÓEöì>lM7¢UAm·n`oqßIlÉÑ>Ǩ¯cÓjËGãÑÀš5•çJ„¾ÝF·³Š.›[¿ä)Ò’$1 ѾÙÉ/CÌβ²–²Í—ìµ9år3 “›÷;¸JEm;v!„½w¿íXVAB{t¼׊1F¤ðb*\}WÖÆö™Vk¼^]¸ŠWÄOKì,Ëž¹Ù˜9±çÕ–;–2™4éb2aÛí)ë6ßaS”ü™×¡œ§¾õºþºmÊO¿+F0-l‘ –d ¹f ñŒ Ƥ‰¦¢KJQö[C¨´z¨åé¼ ­ UnÝŸH4ç`…§x¼-¡˜‘"U9Âú^Ô^¹g);H.¼ðô3ß«Z 1 …Â#ß 6òÉô›þøéb^ÉöˆÌ£‘¶v´5nÓ9rÎ÷…ôÝö,[²ékŒ³^݆‘à!Š`w +·cÆzôˆžæYܽ&®aò”×h +“ÞøÞ}± ™.ã ÅÍB¯\eœ­u„ðöÙ_tA©@Ä a[¤4ìUôV]¹©ê…êðœúz¼ŒVât‚|¿šÄº©ÙMã:{Lv5¹‡g×bÕÓ)Xÿ³@€«~*\‘=Q$å~D–CCµ QÆéž­IÜÀ@ñÖ6¿¢É‡m]fª¤zÐýò­æõ ž¦p®EŲ$¡¦bï•M€^˜î—•ÅÕ'gó#‚8+³ïˆÝ±µXbâ®V@~œ>kt­f€ä)Á ì+G?àʽtEµÍNôó@$û—@7'Î’Ðüg…ô8«u²Õƒ° +4ù¤h`n3aV€•´tmÅSAf?L­QÏ;2ãGR8Íô;%VB$þÔÌÃsØ9"*êçöøÎPlñÝtÊñ«yEÀy!Ü…¹ ¢öÏ +,eÆüt—Í&ù¶°›„æû—¯Y.²A–Á*jÌßb&ñc‘«.•,Mx—êú—¤B‘ +)î¦1 µ´èVR¥ÊïýTy +DH]Œ)»²>h— ²HÆ;ZEn}ù`ßkαÏÏ ¨ï´3¬¬Õ„cþ„¬­]¿ ?/üŒ"ÕÑØUf­{²xßòU§R9OÀl…¡Yú»†ƒ2‰‘½Ñâò¬e“iWï»â žO«ã>‰§…-Þ"©Íq!ÏçÖÉvs[†Šn¿ÝQAe +ÁkÖ$–Ãj‰• oiîÚtÛø·ç6÷9UxêRùÊiçÖy=ü&k±OÁ‚ðÒyS‘-kͯ¦µ¿ +_öŒ 9¸Þ—ìÚ…”$)¼Ëü&%Oœ8ÄA‚ã,nÂw‘JÕÓ“B3­Ó”÷‚©H½eÀšÉñ~—úJ+ŸÄ Ûo iŒ~hG‰ŸýkÁï‚ X®´I9›4¢iy¡Ï$vÙöÊé9WÏÚ"eœ”Qsá6ä_»TFÜ ~âñ'û›á"_‡ Þ7K{TS-¶±`×´ŸiÌ<Úff_B¼ØYL-Ž2æcBíÎa;"¦zXìM=V'Iì…Þ\‚{¹^²eMãòÉ"òƒéÇä·Á5Ð7–õ"›¾ÖŸû•±#i…é#øîcɶø¿_ áš*õ½ÍA’ §wÎ7Îi&­(…š¿aêõ Mw®#“"„˜£ì—tWè99&ÊY-W;o{‹!EI_Ñé_÷pmøƒ÷ÕzäK÷XÔNnÎX­D©Â÷äKx-LÒT-ÃoÝÆ·÷ìúzÈ^a$Ç uRís‹»›C'Ø&ñ ø3VC‹Hu7Ꭾ›¯¾Æ‹·NãǪÞJ¡ÔlÃÝÚÒ4%§fÀ²”¯yÏCÁxÕYéРïRnC.)¹I²¯-.®éÖ{Ô?rº&:+q~¥/æöë3q 16ïƒF™—Þ†áÖÁ0MIŸú ®±P™;ýÞ=¬Ñ¦é–Lf±ã2!^…eTp…´n5 /ÜýW–½d/¸’ d&kÉfBšgèmúÉ3ìàá!I³)åZƒž^IX›û´ŠÌͫλµêe}êXG‹ûó{ã?…&"_t3q{Ð7ì?„‚fA·Kí߆ɤ'%®\ß[Em%.Åpw¤^¡ß½ÒZT dà-Aù¼TúÐ*@“¯‚tŠ‡ÞŠ<½…±³H½ÙíSN‹NÍÞð,ÔÞÍp®Éõ^ȇ¼ûuÕN_ë »¸ýŠ¿§}øI6tÅú”ÙÌ ¹2ñðH_Üq*™”;—»yÄ‹ÅIœ·èåyˆÜtþ}è%œàC`ñB†Éå4jûä†SwŽë%«¯WˆnOé7ß8­_8‘ +6[¯“e–ççšµ³&XÆ Ú}u¶QZùj•iÍ+äÇȶõ”?MžZ¤1¹Rwû&˜fæ##|± ](€Y·<žtÒÕVÝ^޶Wˆ0…âp¥©Ÿ–>‚ß„²x(´19nZ3êNþd“ÂÃÏZŒó¢RQö ÷Ûï Ã÷²‰Õ*+ÿXêz¡—_²*µ«Z¢ö¤èè®O]þLø/ÿ_­ïL’.¬#åâÅÊ˪aÛÚ1ÍÏ—Ök˜­²Ûоҵ\Y×[ž« Ç¢8Cº K­ÉÏå¿w(îÛ¼húêø;ü–ýö¥·ùHûF4upòf+Ü¡ìã ê„RxEWQÉsôá8»‘bl>{÷è°¬7G×5´½¯cÕ`^éÍåàa7É'›´q–ÿ‡¤ÿ?Áÿ'˜ÙM@®Žö& [¤ÿ¸w1endstream +endobj +385 0 obj << +/Type /Font +/Subtype /Type1 +/Encoding 2825 0 R +/FirstChar 11 +/LastChar 121 +/Widths 2826 0 R +/BaseFont /QWGRCX+CMBX10 +/FontDescriptor 383 0 R +>> endobj +383 0 obj << +/Ascent 694 +/CapHeight 686 +/Descent -194 +/FontName /QWGRCX+CMBX10 +/ItalicAngle 0 +/StemV 114 +/XHeight 444 +/FontBBox [-301 -250 1164 946] +/Flags 4 +/CharSet (/ff/fl/dollar/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/X/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/r/s/t/u/v/w/x/y) +/FontFile 384 0 R +>> endobj +2826 0 obj +[671 0 639 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 575 0 0 0 447 447 575 894 319 383 319 575 575 575 575 575 575 575 575 575 575 575 319 0 0 0 0 0 0 869 818 831 882 756 724 904 900 436 594 901 692 1092 900 864 786 0 862 639 800 885 869 0 869 0 0 0 0 0 0 0 0 559 639 511 639 527 351 575 639 319 351 607 319 958 639 575 639 0 474 454 447 639 607 831 607 607 ] +endobj +2825 0 obj << +/Type /Encoding +/Differences [ 0 /.notdef 11/ff 12/.notdef 13/fl 14/.notdef 36/dollar 37/.notdef 40/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon 59/.notdef 65/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P 81/.notdef 82/R/S/T/U/V 87/.notdef 88/X 89/.notdef 97/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p 113/.notdef 114/r/s/t/u/v/w/x/y 122/.notdef] +>> endobj +379 0 obj << +/Length1 1647 +/Length2 10220 +/Length3 532 +/Length 11099 +/Filter /FlateDecode +>> +stream +xÚíuePœí–-.[ Hèwwwwwén 4ÖÜ!¸ îînÁ-@àŒ+Ä +u‚ÉZÁ!Â@( ¹¹\BBB: Œ“³—+ÔÖdÔÓ6`baaý§å ÐÚëÈÓM7¨- Hÿôàqprv„ÀàOÿã‹:nÚ@ @M=iU% £”ƒ …å]ŸPMwk(¨ +A`n& “+Ðáïô”%ôOjnìO\Rn@+ ›3µrBEíÝ¢`ɉǤñ@Á¡tÉ¡0Ö«ð‰©§û\õÜ?»úIðHº&ËM¢#gšü…|ò"EPVÖãØÏoLüà w‰­ì| ¡¯ºæÂ… +šÕU1Îvð7”3Îv´î^9òäc,tMg<4LríÏ$Å®Y°<ÇÎgWM2Ó´$¬ötÓ~<ð9å]¥4ÍÑcª}>éñáaf3TR!¿C¨’L”Ь{7ñëÅd}Isß.ÑÇêÄæð[RãxéYÝ­ñ_m|ñ g?£.„ÖØˆ¬Jô:úOÛÄ)_Õ Kw’›X=Ì,Y"•¦DÙ0zòö‹ ñ‹˜I&i˜- +JgŸU]Š­5?ÃÏÚ'É ¬£Bʯ¨` túʈaLO¬@Ö6É&€}éœk¹Óî%aæÐí•­¶8%}Ï`ÇK~²K„¨¬Si]1K{ºÞ¤ L†É÷:˵ßÏé“-™&̉º—meyY:iù>]v+Å;Fx})9õ§ü¹Æ6oŽ•XÉR€ fŸÕ‚Ž +²ÑŠFõªàÙîªao6΂¡ú¤åó—o2†âbÕNÎy!(ÜŠâÜšÇÀˆÎC}9  ›41ÙZÛ¦õ¼×‰7>fE¾Ty‡_Ä¯ŽªBa}V¹ìãR·¯"K +D·¿ ‚ÞaãüÍD,¾9›²7q,•9ýüé#wˆ{N™XNÜÛù"=ùÒŠâ ìµmÅÊŠ˜gu7ñ©[AÂÕqEåZ—¥ª{tÞçÑ2 ú±cÒ÷o:}§îé>ŠvãÆüý°L¹~ÍI[‚‹Ö øî‡DÞ®¹½©ÇdGÙ?Tðªr=ÔëmX¥t¹k +\JEÚÉÍÔ»ÐBÉ4Ëô .zËÓyºìOôUÝÕJ¡Ù:ҡךRÏÛf]ð<÷¥KõþuÚÙ'æ, ¾êTéûQ“ð»àðMè¡hœòFŒÂóW8 În|&Üð[ÍÖ R±u§ÌæÝBRà;T²b(°ÂqŠ»œÙÜ»/Q–­Ê6aðE7*ñ¦’c9.ý±L}³]·»Šå«,¤ÌÈ&Hû0bn|<’J¢LÁÚ_NcíÐ6*u¤_Úà è7+>, $iÑ»9·'<—ôÙàòµë· &Ðö+åúfàûÆ /B3…]€ànÀϺ¦%]`5~xÍÞ˜1®ÿ ÎG™±(BÖˆgTfƒÝŒz—®¸Ž',*^Sú^œCì;FÉ»BW7|ÆŽ,ßx~Ŭ9÷Œ¸#ý©òEŽ vàVð0}ê³3 öþP§ùÆ•´öe8CJ¸Õ4•ú•……ÃæF–V‹‘ór‘ædrÉ”ÈQ±5EÒè—»•\>Hç =0—1a¶ãœóÜw¥n3¯q .‹áƒ* )¬Oç²cUŸOhtÓw/è3×{sÈS5Èß§½&â¸|áfU´¿›Äê„cQÈepý:ª ~ˆù™_уGåÓ…`=Œ¿8ƒ´Eá‹™òy¡‰ûÕ<'Nѯy•lHø5ƒÆU ä¿.‰xž^|˵Çl“Ñ­þ=ݰȱhË—79?ÍÚ}éLV iU*) e{†Æ€÷*hLS +kéèL½’åi™þë½¥e[j•zm3óðoahquÐÍÔ>ßõÙBpZÄ÷ +="óCÒü4õ—$±D¿Œ™ ]­ªÉÙüëÖV´¥˜wÛ·DÀ²Ms­Ì‡9‹Ä,÷¾¿ÂxáÆšâÌ ódzØ”‡ëøÖ&lØ¢O¬­×e²´\¸@žçŠL¹ºt™h!3_FÕíe€šu2Žm5°°×Ô‡!¸Îî9›žýàµ\Ïu¢º/ uL'Še";â"Ü&g˜éÖàó*'“[ ûY @œtO KÀ;šAµøñCªÙ™‹²{Û°Í_Ë¢N¢A)ןkl(ù[üûEÛ8Wo†lþLû;[IuϳҜABÏÔpù5L–×Н"ɨ"§à×&’ÛŸ,:‚VC··àt3ULTßjót`{&T³Ë¢„üYzèJ°1£®qЂwsºYµis°•¤ßeø\Š/È;–>yÂxŠ| þö@ª4ö¨ÀJ“QD6˜ÂrN §ÿØzZöü«q(ûë:â]è\$0º‹*®°õ­Ó z~{¶mÚbÁi%6¬;É…Õ^Ys*á Ä+AZœ‹yŸuñ×wTNLBÛ&Lû|pù¤FC 6+2Ô|A¹—1òî=‹\j¶ý¢”qiûÇ3áòG¥XñUèõ]&‚ŠßQgc_Xx¥KêÄÞe’ÙH÷Þ¤Eo¸ñðĦ`Í4Å•ôê^±ÍQ¤…b¸¥R­¨©®çËym'/o<þ$ࢬ(®¶/Ó\½œ?]³ û vÖÍÔR+gI|.ö´År¿Vú@PoëÝ(c7Qm85x¾G8¤h,£‰‡¥‘æ$×(¡nšÔά“™_Y[VùáM]þ§ãŠÐë,ÖA’ur +åÛ;e€JÜg× ³K,Q~^HžÒK$F’q¡‘.KC½5»¥f‚ ÉÙAiQÓsÍifLbš~0®ÒR^ IÍñAŸ›˜u²þYð±NJäåsSÇn€È Qqæ•YŠÊ§/Ì:ÃÏÁZ´ÞÙS§Ú^ËærôÎNP{ËÔ*]<µBj‹miH¿ÑSkˆ¹öü /2£4ߘ±‹Äª[S‚]ý*U~»Ô·Ð†RƒËOî•ñN¨o=„tÃÄñ¿¸çTUr|S¾%î’ëJ"ìù²Ë¥wp¦Fµ'! ä¥Pcþš(³Xf±vÂR;mÌû$¯v¯1QNQCjÓ îuìQï%M·ª+×,ÏÜÔÁ‘Û(¤X×f•]äWª‡;j¬æ\_ì¼Ç‘³Øß‘¢Zz©±‰ å:Yn0 1ÒB~»}1->¾âÝ ;3Cóøõ‹ó Z#g ‚’aè8fÏ”5þ˜¯ô]#Và会ßâ.¨r,×ß¿Ø%‹õíË_ªê‰…i5TÊ‹eú›çšØÃéÕü;ª\ŒÎo¦T´Á!÷Pìø1Úpt/ÄÅ;‹Uc™uš"÷¤{pWŠV§iÞÚ;g¢Í¡$©¥‚Óê¸IùÑûÙÊ)[*Ú]±#ySѺ´fÔlDïKæ)vf° ^ºGÊ +&˜æIgGv¥À*ˆÅ4¶||‡u8QÝe;×)X¥ÜÅmý¹º-XÜâÍèMGŸ³±ÔîÇk¼˜}5nŽ“6Ž=ؽZ¼ów÷ê ™œ%ÖÃÚëÅsXèS“C)(_Ž¿¶ÉF¨Vä&oý6Ç˨ÒÅV™]’î„ÌÊHÝ k}”œ0®r{Q²#»rƒ¬Û—ÈÙCÞª‚rŽa–< +û@ß2 ¸²N÷—çËý¼û}Š žµpê­ú ýxYä ïöIåõïzµK)ÛA^£f×H×q„½>›4¶´÷á÷¹ ™‹$>é€Wú]sÅ­"äì"ω%Ûðs‹qnñíÎbvZ8?òQY + +Û×Ö­^½$ÖÉÚOÓ†ù6§6u­¸¥=è¬Å©ROåi m.ÂU“_%ý„dÁµR˯$Э“ù^½¢þ~Ù‹ýÍ®üKA +Õ&‹ôÅÛ'ß™„ÇUÞ]´CŠ.q«ŸÙéáKÛH5¾³o×ChoÈÁÝè’_÷>“ǧã×îô™¶•W2âúdNÇ9÷ ®kŒ•Åï¬Í6Å_}Ìw8äCæi4ãÄ-wà ™ ›Xr\ãyù +óÍgåþz'\ÊÑhÎ àï}”!jf¤ïj˜¿·Yª®PÂTÒ†‘6Z¨<×ø¹§!úò0J8°4jùÌ«¨î•|×)}ŽË|7Ò¥Çù¶Š•®_.òX0xì‹V.^ùœÏÊc­qWÅ¿d!žvs«:Ø!eðzfÕõ‹,\ñƒu&Âúw‚%Ü“ËêQZ}L³˜%.lœsØ>‡k†`S;…ÞÜ,Ç:|U‘‚™n9G³hr¼P7bAKu÷^/¦Oô;{ï~Þx^Ýv%áãªq×Ú}Uó)`—­¼S»7˜Wš ¡R<¯ Ñá1yTõQ–íGÖ%»¹ï"º²§¢®U +V×{NÞŸ,s€p¹/‰ÜÄ8g”ú–ÂáÒ í)§¶ós“R(ÞÌÒ¡_…l‰gåÏ2xîÉý÷^!Ò´è-W¼H>LyWC´¨Ao×a$ß﹇Ñ"^/5ð<°D:ºñasG“ç™­ë³~ý+bäè>”gëT=È+òg¯†Idóš5dË1°àŒ‡’udÆy7¯ÉuMkhG3‹¯zŸ¢¨'º„×<ÿ5ë[ °•Û°¥hä xÒ#­BpãÃ0«&žÎÖ*I^Þ¦ª+¼ý…÷‡é4šEqbáxûžæÝ«TyHý±Ô?ˆmã>ƒ âo©ͪµuCó™qÓÍ”PðÖN ß¾òEwÛ16Ý)-ëÙ‚–jчùÞ)L>¸ ·¾ì5Mò*bê¾ÊæÉsBáV R¸µ¨`­lÌî½BV}Y5Ï‚‘ îjÜ3aÔ­/‰ÿA±X“¤7LJRb3|µò•B¦r„Žöåá¥èØÙT&í)Ë­ñ”{n? ZÿŠs&F½ÎËÞå«AeþŠaã;Î&ÅÝS}?®†ˆ&«ßæ5'?©”_¢E†ÃO(´“-+¦Ä'BñyŒŒ–k¸\ÒX†[~¬54sŸÚPÞ´Ï\^tëmÜ^=DLÙ;zcø›¾#£ä2òˆàĪsÅP7ÉçfÐ:lߤʌp~ˆ×††½$³­6(UHÑêzæ0)e\IöÀ¶D}ßHàT¿’ë±á~Óîð«Hˆà[éjù.Ö©f¨J®öGØ=€T}ĤÊt±sµÓÞé¡­"úeiý<£väÛ£ÔìΛÉjg¾wÕq16+¨Çv´aè—GtAa. ˜¹Ô™tˆñ·5q"FË+3· óšr"ùy•´â/+€w­Á gÙN­ÓE=´¾æ°ÖÃæ~ˆË¹ .-öÞ6úÙ!×DðV˜ÄÕœ¬†§ô(ç3?dÅ?ŽowJ×57I3†’«r@·ö¸v Ìk›=l~~‹ˆJ*7íþ¼¿sW´a»7m-áü¨÷mF’ºÏåó;¡R)»­&³¬ +û«K|÷‘óoF%àŽ—_ß¡è&.6{nxí0”‰Ò¹ò€péµTà :ZôM? 5[:…¬Üò%©Ì«m›EdÑõ¾~É"—$–ÀÍNMǵÂff¼[fòUŸiÚa…åHîþý…”ØÊ°Y¡Ø¾}?b W‡BRÊ–Qæçú: +… %ºrj¾/¢’ÜI˜ÂR+êGes>Œ¬ìšàþPíÏ­–"mn2ÀG³ÿˆ.ûQÈT…ÊGË8÷©ó¾^¤Jwô—5h»´¢ûÚ¯sJ´ÂŒÁFg¬MÔݪån´Z’óXç¤s—iÁT¡)CØï0*WKùx+hv®xûâR„‰FÆ+õÏ® "/ áýõ)hŒK m*pzÔ¦SpCs•–M°J3pöÒ Ê,õ…¢Iq¬¬&í€à¯ùšTÚ*cìZ]SØRO7(¢ŒÝkÇwÏì ôÏQí,‹{ÅäkûNïÛtv^c‡6¾}„KØíám¸9Hãs] ŽÌ”¦ öÑà¨mn«k¿‹Îˆ‚òurBÝ w¾þšÞ]Œ’€Âàìâ:^ãÖýà ʃŒ<Ú€î>$c&a1ÿP…­|Çb +Þ1NL¿Ø{5ó¹ aN°eNH¬–ºvæã÷½˜„÷@ëy¥,ÅÛ™`ùÝítB¼®ƒÆÉ•"­+Üx’R åTÖÓ>¶ZŽ.E¸QÑ-Mºë󮥢²Ë ­¸&_†ëòã>Þ|Jš=Æ”FOüÜ’yõ¦ê˜\'¬²ópS”Ä Øªµ;³"i–WyrXÔ}2†ãÅÂmt‘ÙÈ5| +zø]BX¢6/äwò(Ü¥e¤´ÅÄ̬·^§bi±#éÙù/ä¥ hˆõ#'N /`Yx=ÿjôÇäÕ@,|9lWX™é=Žú0qöB…þÐ8ZççëÅ× ,L2ô£&«¬+N´PቢZªØ= &²u.ÛÌ ŠåI íð‚„oÆ}Õ¤m‹äýÙðÛYbÛ½Ž7% @˜xÎo1¾Ë#Ħˆ. Íz2¯Dy†·‚ùƒzJ^,¤rA°Fçžx>¬eÔK dGx5O³k<>fs]õˆÓ6Ø©ÏųmWw>˧º÷S¼ðo¼Ò޲¬‰ß“—Æ0Öß“"Ü'«dôçñ ZYÕ6&‹?ë\Ml¼6ÃBV^VS¬mRgh_hêkÜ`}¶‚h?Ò7 äžìíz,‰$Ða*o«Ôìžf“-wé>糂ãc0ÇáZñõnŒâK—jÇÆ*¸é[á2âoòkã#:à~}ZžÛÇ Œà.¤zæÓÈ-osg“@xˆ\•†ÛcUFÉÍRô–wÉ ÷=¶åÍg§r +dQ3çj#TUÁå0¦ÏjY ’X®ØÑj±ÕUYuKáÏqMBÈ¡Â?Z@$<,\ÄÛEâ—Á¬FéŽöf9EªQèÚ©r¹QøŽ ?“6ËgMÝkAfÑõè✺CÓ¹GßÞÅZW¢Þ¡çd²¯á˜9N¬ïV`}qëÛj +ÙäŸðaÄ=¤”²ØLš¼×Ö bV Œ|ÄŠýB|Waþ6”83àêBË0(ˆ/°j~^ؘ¦åhÿ»˜lË÷áú·7÷‚Å%ö¼²˜û­ª–†è’#Góû ªò÷¶¨ºDºù‹(¥o“"n?O½2H^_ëœTÏÉmê·ÇÌ<Ô}¦csqBÞÁáÜq<{%º\¶úó¾‰[_Úó¦ã«Sê~â¿·ÜöˆŽè&SÃ.J0n[uSeѸÃ*YÂ÷å{”ÅmÇç9>Ë%iåh2¯¶.Ý9 ,¸­ú|ÑÊ€lâýî§–•iH‚㘌N!änÊX—QmHó<Ä|¶xïm–ðf[ÅBVj”ÿý£ù݆'wÛ›ÎQÕUR”t;þ–¶åýŠóææÎO|Ʋ¢ü>¥ÊÜ£$Äõ?£¶±Ñx úiÛ +†³üÛ¼j °4ëOÇ·¡¶Õå³!®¦r—Dzc·B–7Í“M/ü’pñNØúú¶dù1¤r[zÜe‘¤Þ*ù——zÍ;EõÅ%²;¤âàS© ðRKÁý.ï± ëGguì1«ðlL­À§ŒëÞÊ#¨©ÔMæçÑgm?ÕÛÁØä³IS¨-Ë`G3æzÓ^xº‰÷„3ìЦÖðò§ðæµþâZX£®a±ƒ{çÒ pVƒ”çÛ7øU>jdQ00–Ös¿`¿_öSþ–õJÒiçݲ_ªâ㯋Jâe<Ç·R}k?ÝZ§!ñ¯.?WJp·ô©ô.ÏâQ¡_"ñ¦P_ +/}u‹Œ ¼~˜õhIÕŽÈÁ"f™ÍÅÁ¢`9öýSV Ëëƒ~DZ“ögŠBëzfmšÍ†…GA¿Ðx|H ¶TùßPQ¤×E1«Êôežî¥µAê¥ežÔækïÎŒ :EÈô,ß~͓֊‘ùžÝŸŸôŒ}ˆš;WÜæjèÏÍ •öó\£Ã—Êða;Ó'éÑ[ŠÙÒ‘§Ç-3V^¤¿•~9¸ qqïÈ ºÍI«z¼“aè{Ýû!"Ûlã¥ù³UI×ìšåÐ'I|F 4Ðø'Ì Ñ×Ô„wÌrZµ¡æï +¶ýé㤊QRÖ?dðMm¶î»Ì\[”̬°Ðh´ï¤l¬GöûHŽp HÖãŸÚ>ûEÀμü~.â4ˆnϰèV¯ÂɶcÞ\Eðå3ZŸÜ«œ4ذÉa_¡~.ÞÊiKw:¼9;ÚLÿ)Dä6ŠÉ½Àõš/WLÐ¥±6šLâ[ÿ}-Z¬+©¬9{¬H÷6¿9¸šÌ¦—‘m ·Eí‡áÒ‘;#­S7ç.³çôÚÇÅñxãÎiwö™Ý矴îPŸm·¦Óþ&Ž^—ì˜øQ”@ÆÊG§yÜRÏ]W𮹠" €ü(v—_œë—C.IAÚh½§÷ôѪ¥º‘xuj[êj„t=éúXë@g”“v öÜwIJwÛ÷Å=öÆaæž©*1¶§‚§t—˜;nlà +“ÔªÉkšÜá·K+Û_Ä=兟W1flM{˜°‰3¢”´‰o×µfŒTlc z}‘P+î´š÷ðßT…Æ•hB¾ž6ÇŠZŸd×z’Ÿ~$é÷¯T¼ôÓuM *ŠÅÝ*ÐçÛÆNEžx)ƒæþ Þo:¹rê«6Xk¸ºGF–Hê“ÌTR‰cSÜŠ]Í^ùsx"Õ‚š+Áž # ½/ÕS~“]¨‘úÚ_šµ-áø‚” ‹Øö xl#ý¦tžYž4 &Õ@GBöë¥Êt®à~zù¤(§óVòüžÛ›ËŽ{—K©?ÐhPìù.þþ½?›Z:»E)ð—ÿЪïyNÝeÂhÊïò5˜(’×ÙEÁ‘–°ŠHÇÁކ;¡Wût¨|ðð×Nwßü+_Rf¨…ŠV“®dÌ ´ÍªΑ +%–Ò]{Õïh'JÙûct&1#—®†ºC&}³¤ßkm[m&4—‰‡ÏLSqˆ¿ˆQ"süds +£=®e~!ø•p¯,þ“r9r»'â¬*üØ/¶í09PCü†`2FÛÍÓ̆^î¶EókQ÷çøÛoôì–éQ˜®]ó]' +Ò\¿%[˜Ö­ö¢ (s¢mEÅTkY’LéYý:4dŽõ•‘ç¾~2=:Yç ±™¿^OP=« ürKØ `°ºpýY¶hÑyåöà‡¨=²Íœ7µÅ,‘ùoa#9LÔ˜ŽyÃQyz•S¿KBH`‚päc€HF|-úB(þ/©}k{29KsÿE2.GËA´Ø ­óU‡8ß–-ìù(ŽÍ·{›#dÞKÓ©*ºM,jåÁQ›«R”Ï-Ê$Xò¦0°ë(ŸS?$ºTxb:£D£Omé £THâëéý#âqõ¦})®vöÒxD¼âÝóúŠ›EjWÅÛK!75„ÒÏ|4õæ/>ž¼ACL3ÙÅnQ¸‰cïë"I‹6üòÅ•ƒ éZÛùë@ì¹Ø½ÆÒí»¹›©"s;‡ExBËÍù¹¸³ÇùË>Ó_–ªJyfH\\‘¯%³ý°Û2‘½™| +®›Ôu%æšC_9†”·†£zÞéÞxö!ᢥn¯ãëºíw¦¥9¤N†—…;;®KÂѽÅ^Ú14{¿ìÕ›ÜPÝMSÁx{ô³ÒVèÅ!ê™fºŒ^|¥ MlDpLDžÐÄ•ræ)RºŠ’5±Z¼R Ù~þ!ñÂÖññ<“p{ç™ÍûGµã4‡±ï +ûZtÂ"„kT5ðýŸ»á:Ï'rI(Kýg]­ü\E<µõéöeÈlÎ+œZ5W[•Åâjqœ‰æerßK•»=ˆ*Æk”ûtdµ¯uøª¥±˜'ë̃!üʵȋó&`ÄΰE«*_ô\ôÖÌÄœ+¹Ž°øý~(yÉÀòé9Ê}Iï"²+i2Õäs79Ûìçø&1 ÅßœF=M·ëCû~ØD¿\dDÓÓ.âVM!Ìö|_}ýzþ½¯®ì±6uZžo7Å´‰ÝÛrÂØ¬5·j}¹×n^‹IðËr&ð|˜Lz[zuÕÈødðvÇG «ÎaŬ‰žZÚ‘[Iäà ^y̦¨DʦsG7£¨9gs„c‚Ýz®Â5^“¶—"b—¾Ÿ?Üö~«Ö`½òü"C.FhzÆõ{Ftû +¿‹û "K§èµ@ÚðŽ[Ý´¼1ªaá¼òk{ÅADZ°›áº„÷ŠÈ°Rã\b¬”DSçZyÜ«x*ÞæEmÊÚoNrßA<ª)BüH1…`é{5_:”¢j§¾ä™&iœÔþj„¶ì©æðÌäX"¦ EÖÚj¡¼må´O±= #ZØz3à+ÉDͺêÔÈfí›Â•5Ý•𪇹àÙĶäײ$€çÕ*¦œ GB³ˆ+.Yˆ§FÒ>ˆu礹´•ô s5‰ž$V «=;å2°«R„'Èš%šv€³Z—€D ¤X¿=þòÕ¦ÓQ¾ñÇx„(ÄCAh‘§é5›BñIÄ¡4O¦ÁÖDbŸ—©fÀ A87R#À|Ž~K1ÛKã¸Î*¹Àwˆæ&£†¥Îª úy1ÂK`a(Ö–¦P5þ#åÃ3¬2ÐÕi‘|«œ†µÐüYéYŸ#Û£´îò&ôüÕ2OÿV‚±ôÉüÔ UƒÜç"$4Ç›~o•Õgù.fs+-BŸ¾±ýþ†`.–ÿâ„y€WCª6 +ÒïIc¯d!êT jº èˆÉ5-4,IïК|æ%£ª¡_··¦«i±†µ%lMü’Tíã1Î%ϼ»Æè~æl«‚»û|V,ýˆömÁƒÆèÁM3¾CÔÌ—>¡¬Ó|aȪ²œm˜pߎÜwFút^«J?$äçï¥ èÊöÐå¿–sÄ VõÉ.”?.„(R ÛåªÎe¬þÞ&·Ž’â™sõP¨Q”¥tªWé‘#êu•À7‹ìždíŠX‹²vú_AÁ,í©m–5-mã…M wßï4¾ñÝgK\bu‹G§‰öö8šø®› ZõaG¶²sÕ8uö¯Mû{1fnõ¹R‹ã¿»8ˆ‘$pá“M¼¾u;õu U‡_ø«½!,S¨C|^† žÑtˆïHì,³òâã:”šQº(z-ué¸kÛöZëiû/\ì+ò>§æzz¨PéZ9PV¯L ŸûVÃÄÇtåu·ÄäŒé„gG)ŽB3ãB»Ÿ•Õ‚`*_Uð{T9ÚÄdÁ%eY:Ðá²tß{¡QÉ.u@MÄ +Ø·]Öé÷bÎ)˜ÝÓJˆ$DõéJó¼ 4fé~=W)Û€ÄyàíO¼èj„˜*˜1â‘ü¢a4†ƒ+V°:ûâžê¢<ïÕ%ƒ–üïŸÀ¶œeÁÍDÏ$…g+Fp%wÏ®µ‚b³Ð2‚¥Ïšq‰sû›¡\g9 “½Ž†ø`„²G‹—Á0‰Iék¶ÖW’â„}%4×3XÚžÑÊàsÿ€¤Iƒ}pl¾ÿ¯ª¡o;þ!9Ç«óÈšp¿Q½OjèØÒ²ø’Z‚  Ù*l’.–%¿zz[¼¸Ý±¾c–‘XåжiÔ¼©­1,Iñ!®Äõú ï¦Öï ÷ƒWŽ“$%F/2°¸gK?pÏ»ó¦ÒBOšµ¢^wÙZbçÉ[u€ÄŠÇ ]öË$ÆèâÖojt˜ãdÌ“ÇéiÙãQ™qËàêùñÍΛ–¶Y‚ñaåkº(òr´`mo—Åqဇ6›"LOGç×ôÉí¡ã‘Ë.õß³>JaWX|¿i–C5ÓË3µô©²C£9å&ö–?þµË¥~´¯‚ÄU<õòM.á3<úº²\l¶7ªÓUTLºø|s…$Æ/Ot +?)­¿/©ÆZ<9¥a ‰ y#ûˆù;è£K.õ.»Ç°-Û|°¾A˜Gx.÷Öyžâœ]`ï,uhvÂq.v² Õw¹Tv’F¯Ñt¨A§xöÙóHa“³Èdá®è›kA*g´õö¢ƒÄf%p¯åɹìœj¶¬ ]Ô"¡9~>:ÕÇŠëÁæ +Å)E$‡˜$ÏX†Ø˜Êw'/¾±~_Í¢‰L|[k÷ù«ó‰û#€Öñ³êÌ–EWþwG?°DQ=èѦâåÁr>ÛR蛘”àŠªLDíäQÉÁ´Rh‹å3×Ãõ×*Ì2„jûêÙ¡/z•¦tÜÞ¢.|âä-Æ€||bÆ…_Ëï?ï³o®òŽMü6ãc¸ÍÂ6¾{“.ÂàœâxÀÝC->°¡7ël^ý¿ßÚ (Y#¼ðiˆTpÀd€gËÝÇÔ¦c®Obô§HdZY2ã!\Â=xá[—W˜PŒ9lÿâ –M…/”guí¬.v@óU¹ÜX?R0 +16á¬xBJ Wýð~ç%p6 Õ ïØõ!¢O-¨Fà|±â¨m¶ì \<:T#Sû€0Í]BR=žšÊËD}ª #5g¶³, dw +âÒPrdÚÝækžý¦1« ŸÆv Ê++¯Ø» ÓènõŠuÑÅ%³¶Ž”n%ýž›rûVr9tºý0ñ[$E%¯Тã³;¬OÅ/˜æëð•v6¶»fÑ>ýY=èY$p˽™pOÊàhh~ƒR,†ôêôV#ëó|q3ñÍ!Ó˶Û»¯ïg‡Òaš¤Á VVFãÏ´»©þ»Î¬Êj8mÝò>.{gC÷¡*Ü7ñHó’k^ ’KQØl'}ëµÈ{é9 0¯õºôí©_•º1l¶»ìÞ‘`´¥gf7\̘Â@F+(b˜•wõáü_þÿŸàÿ ÄÊîähåjø?H…b endstream +endobj +380 0 obj << +/Type /Font +/Subtype /Type1 +/Encoding 2803 0 R +/FirstChar 2 +/LastChar 122 +/Widths 2827 0 R +/BaseFont /EALJZW+NimbusSanL-BoldCond +/FontDescriptor 378 0 R +>> endobj +378 0 obj << +/Ascent 722 +/CapHeight 722 +/Descent -217 +/FontName /EALJZW+NimbusSanL-BoldCond +/ItalicAngle 0 +/StemV 114 +/XHeight 532 +/FontBBox [-139 -307 822 975] +/Flags 4 +/CharSet (/fi/period/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z) +/FontFile 379 0 R +>> endobj +2827 0 obj +[501 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 228 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 592 592 592 592 547 501 638 592 228 0 592 501 683 592 638 547 638 592 547 501 592 547 774 547 0 0 0 0 0 0 0 0 456 501 456 501 456 273 501 501 228 228 456 228 729 501 501 501 501 319 456 273 501 456 638 456 456 410 ] +endobj +371 0 obj << +/Length1 867 +/Length2 1181 +/Length3 532 +/Length 1804 +/Filter /FlateDecode +>> +stream +xÚíUkXg]A"}o 8È"÷$„4Pd¹Ê-‘- “!H20Lh¸ +«¢²/\DE]D©€‚- — +Ý%¢ˆ—® +(++@·]ús÷×>;ógÞsÎ÷~gÎû=ÏgbÀ³v`ˆ&%¬A:è¸ùòB@&Ò™7“ºC‸ȄȘl¦‹M1ܰ˜ŠÀÌÍ|^Ä\$ŽÂð…"!{Ààa0Š tÀE,¸ó+â.‡àñˆ€NA@€ÂQ)…1ïÈK‰ìEX ‹ù@Å#xi +0#Mš¤E&'$’ÂðÃȽÒÉÃÔÒæ2±Ø’Ì·_Hé7<$AÅ ï˜$FF 8à‹ \ºTú9²hΠ2ÉRÖ‹€Ä(ì"ŠÀ´£3mY‹çÊAJÀ" Ç! 8",µBÆ·`„áâââcù~® d„J‰ 1ÀüE½Pƒ¿ÔdJ8*v2éL&H +É÷ÃÉfÛ¥0&@¥BÀ†e@8%PÈDV, P©‘ˆœtÌ K1‚\Ѥ‘N™+h 0`‡Åt¹Ñ7>úåFÁìjÿ¯švÊŸزßäE+¯B>•™ªŸÔÿmŒ&õÞ'YeSÉþZ”&×¶áÞ–½í£ŒCižŸÑ:T¶¢·›:,ýò× ™#¶j—ÖëuF=ª®÷Ïknú:õM]|%×Àýibìé§×AÔ¬ºO]aÈOІ–UʆõàZç¾A·C3'µüº42m|eµÓùõ¢ì' êØ3».e¯§B•&ù¶Þ‰ä@þJ–?äñN#ëÆØÈŸÛblûé¡ÉéþÎÜ–³çt¹ýŽ&|ðŽ8ˆyè‹¶6^•¸µ·¢²)ó¦WœbsÓìôêO,û­2ΤI©Ç¸ÓÖ†“ŽG¼uyúù˜âI”{ 4¨Z&ä—í5³æYôW¿êU7v+)PÉæzš›º•÷›ÕØ3¬¿â¹néØ9guW^NPéÈ]7l†ø‡ZôÕ’æºÏo%Äv/*Y‰s+íRù%øÖ++fù#´ß—Ÿ_ÞÐjšùݶNÍÂÊóWk"tœ°ÃƒZÚ}móó¥Ñ6?ZÌq%W_ +¿œÈ1.LwWc¤Þ!¨7š5¾ðdlnéæ [¾™zÝù#Û*/óžyô•ä!ûƒ=Ï•á†öÊcáU=áÎm›‹/rNî7F)Ê«íxEJ?O[?’ì¼+¼Rÿ¤Õ÷¦m¨ßu¯t('*Ì<»Äœ—æÜ`S ÇÎh]’?ëI¯Tø3Bªu©ß‡zæMùxHë‘ÉdðÆê Ú”ç@ûßÚ_^Öœ¢éBEBŒžÎ-Îçco³Rhö÷‚G“ËN7r¶î³ànm±-o0DÖŸno<[1 qTýÚèÇSîxH –wõÞS­ì ˳hBŠWeé&炇E1Öß\ t½4*¨;o§Á?G©E>æ í­|½^òqçL‹(ïïÇSŽäFÖ×y}}ø¯ë¨ÚyÏ-9³Ù¢FUÚEý@—‡ë†wÚ}¢óÇÃ’¬Bþî¸ýÉŽÄœG¹í3²éØg‹’]n­Tl[õ­]_wÝFç}'äüt¹&zMü…X•¶“^á– +ƒÓn¦BÙ†’£•s¡}óû·uT?°[Cìtý3”˹bhÊðÆŸJÜRg;|3¬ ÙŸfûøùvz÷]ÝSàp'àvã8Æ†ËøëvïS«)§Ž•_»4cÕ:ÄàùÙì9Wë®vKýU©aˆçò2“î"ߤWÞ=oœ,.;Úé×XgxUä{_K©*ñ9˜ß÷ZUwMGëöÅ/#¨Ë‚OœTÿF猦h¬Àë“]„þ@h…b‡Â5Ì,‘qs%Cr=w¢jG¹»y8r¿zb®ªëÓSö\3ŠZÔ î›ÜSÍÌÿð¡ü¿ÁÿDòæ…p“@x4åg„À¢endstream +endobj +372 0 obj << +/Type /Font +/Subtype /Type1 +/Encoding 2828 0 R +/FirstChar 13 +/LastChar 110 +/Widths 2829 0 R +/BaseFont /AOYKYK+CMSY10 +/FontDescriptor 370 0 R +>> endobj +370 0 obj << +/Ascent 750 +/CapHeight 683 +/Descent -194 +/FontName /AOYKYK+CMSY10 +/ItalicAngle -14 +/StemV 85 +/XHeight 431 +/FontBBox [-29 -960 1116 775] +/Flags 4 +/CharSet (/circlecopyrt/bullet/braceleft/braceright/backslash) +/FontFile 371 0 R +>> endobj +2829 0 obj +[1000 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 500 0 0 0 0 0 0 500 ] +endobj +2828 0 obj << +/Type /Encoding +/Differences [ 0 /.notdef 13/circlecopyrt 14/.notdef 15/bullet 16/.notdef 102/braceleft/braceright 104/.notdef 110/backslash 111/.notdef] +>> endobj +368 0 obj << +/Length1 2191 +/Length2 16545 +/Length3 532 +/Length 17780 +/Filter /FlateDecode +>> +stream +xÚ¬¶eT]M¶p'¸w îÜÝÝÝ9¸»»;ÁÁ]‚»»»»;ÁùÎÓ}o'}߿߀Á8sÕ:U³V­]2"y%Zc€¡‰(ÀÖ‰–‘Ž‘‹PHF‘‘‘ŽA–ŒLÈÁÄÀÉ`+làdÂEÈÈÉÉD(jbüüåbeábe‚%#ع;X˜™;R +Qý“ÄN(`câ`ad`K(càdnbœÃÈÀšP `daâäNG(`mM¨øÏ7 MM\LŒé` -Œœ MÌ,laéÿQ’°5²ÿ;lìl÷¿C.&Ž@)BÊiR%¶Öî„Æ&¦°ô²àj&@—ÿ?´þïä¢ÎÖÖ²6ÿLÿO¡þŸa k÷ÿIØØ9;™8ÊŒMlÿoªšÉ¿ÝdLŒ-œmþ宅“µ…‘€­™µ !ÿCŽ¢n&ÆòNF愦ÖŽ&ÿŠ›Øÿ_ `åþ¥@/ ¥. !Dóï3ýט¼…­“²»Ýfý'ù_Ìø‡Õq°p#Ôb–—˜üùßO:ÿg-[#€±…­!+¡ƒƒ;,°{€ÄJèÉHhaklâFh⦧³8¿B¬‰7¡)ÀöŸž9½é¿bÿF& ZüAf ZÿA–’ÿ 3ÙÞàdblhýïƒþÏ+!½­³á?}bfû'ÌFHo °¶6pøâ ¤7°±&ëøŸ(çÿÌüßÓ²0ÒÛ8˜ØZ›˜þeüŸèÿIîÅÀñŸ)­þ;²³vvüîÁ`ccð't7w·37ùãÍô*Zþ²°Ò;Z8šÿ‰wâaâøn`kòfÚ;¹þgz;™;˜ü•ñOùΪÃúÏX¸ü•Ôu¶Æ(ëhâò—+° èMþ«¬@U[‹¿E8þÙ³5à¯/qþ3ÅGÙ€‚&öÎ:€ùŸs1qüçJú:üYŽ ¨$ð‡€:‚¨"ô‡€Âè òbKôMÄþ°Lâè$ñ‡€2’è"õ‡€.Òè"ó‡€.²è"÷âºÈÿ! ‹Âº(þ! ‹Òº(ÿ! ‹Êº¨þ! ‹Úº¨ÿ! ‹ÆøøÏ3÷_Oç?lá`älcjmò§A8Ùþ'ÿ¿“ëýéxNàz†¸žÑŸgž¸yã¿ðŸžø ÿéØ¿¸³¿èdþ+ð×åÂT³ü NV!P꯫‡heó×)½í_´ü…@+»¿ðŸ®ý Vá?Ð_´rú VÎ!ÐÊå/Z¹þu{­ÜþB •û_´òø VÀwÇßW#PÍÄæ?±ÿ÷µ"(pó¤e^À? ÿœ'ðˆ9½ÿ;SÅÖø”J¯vNæEœ€w¤Ó¿ÞåÀuÿ—M-€o87#Øå€wejcH‰HÁT)5¨ YSœl]×l;\àR<¨uш”=õF­úsY*ÂÄë+ŽcD›—¸西}\Úüû‹þA†G3ŽúM†Œû¾ñïÀSÄÖÆ¹»3VP¹™Ñ’$ýYW§yò”ÂʇPkD ÝZ.õÝ™Alìê¢Ö*¡ÁµäÌDŠHiö%a,¡ë®HI ŸÖ'},C¡Ѭ^ÚœQž  sßµ£Ç"µ0+îP£)òÿEB¬ùèªâÏ$4Sr <€XV‘ÌF ©Êòø"¢7}…9!&ãrùµ¹MèŒMg£hO™FÏü‡äR!ÃUB <šâ Úãý„0å‘3¿M*Ñ—tËïÒ 1Ñ)/ZU›J‚ès³% ¦fFæš#ÂÝw•/>°Äv|IžÎü:ÞEް»HÏ–‚T¯>r†pˆ}ßä³1³ð¥¥ú1èñcø¯·cÜ骶´5åg£‘e^gd”Á¼:ÉPÖ‘ŸŒ6øV(5 +äûøïù'¹M°šâH óåeÃR‡À{¨„Ø3ðTB#ÈŠ `Bº¸´ÖSg–·ñVxzp¿Ës޽Ø(kÕ¶õeëb¤C•e%©XÏ]A“^ªešƒ4®qUÁñ P:°Åp :­CްUʼnvã :Œ‘Òs}•Z¶Ïû)‘t’Xøb¢v·åŒ$VµH˜vVú«Ò1=eßÿMBaSËùS>Ã[Aƒ³&GÃa*uY7 dî—ô×G¬,û_«wÉò-'߯›½:ÇR$bÆ#¿`"5Ú™x“i¬†ª¡y¢ÁŠC:Rî>õzc…ÕÅ ŠÀoµ¡_œ€ìE…ݾr_.-÷€j™ Ò+Ù€«’×|ÀZ,2 æÚi3tY Q8ÚQí·¨34Eð“ö2YÎÜʉ5ˆqÖ‡‘U˜¦ÿžÆ<‘–<æï´)Ißxc2dMÑ62v' +ˆ¼±8ò Áª°vkÜ7¨†Jí aªWâw~À9Ö˜~`åµ7ËVô•¸JQ?¾ß. pÓG¦¿#:¶×M¢¡Šá æ»ñðÖHNì:gZJ ›î,!ü ±ª€ÜßüÄ23õ0|:·G·ë‚Ù[Y>ê5˜éZjÓ´E§›báÚ õÖ~7¥.,ëíï}’îÕ!Gg†-åY0w§üZ—AÈkÕ@>3ßÀ„¿=“[£«Ôökw ɬafýksµ #ñOv!%ˆ9ÚãF´«7áM¤ia°Óó84)ÜÌZGwEÃ÷“wÆ¡ŸD=s–¹ðHæ8%©Ÿa®Oä~:Q‚éðk´P…•Óñ8ˆ¶”¾„;é!p¨Cˆ~R¡rÍ “©Ž47#`üì{Ü%ÿ¼©“J\ìé!”~](ȹìÑÒßC¥99üý<Åug$üðs.°µæ(¥£ú®×È=ëæÛΊ{ÊF +"[µÝ=Ó218 -âÑ^¡5šë$¸/Mm=„Fiù–GÍ]ÇЈі˜Zg@Ę_}ç`b’똡ëÅÅ’V•H#Z,y`tû2úûäWpA9™Lgس…»@î“ï§0·È“1€Tco…±YŸ4­8ÚöÄί1 Œw«Š2I… × L…^çߨomûFõ’½%Wž°ä j~šlíû:«jðàÐá›+š‹&¤™Gˆô9 O‰Ñ‚~ß>â#â…–\Ò”è;Zpï¡X‰aú¤ç§2møU,6v……<øQ}ƒOéz"wî^RŠ5LnQ'’m_*1±}x‹pÚ +žðXhR–¸‹šÍ…² þ۾ݡ>‹]¬ +ã‰.¥QµÖÔ–d;²ÉøfÂRxFÀƒÌWÚå¸~ĬÏdçº7Nh{øÁÙhï&tmü-Á÷C 1?]seEbTE—Rغd[”B¼–„®¬å'¤œ1Ò›ß'«'›h¬™¿4!0:ÅÉ9]p¼XcB¸ì×¢\НD,+> FZIÐÏëøÁóݘºÊ¤Aõ˜¿‹“0·eÚ½ôëì D÷–qZ È÷¹Ê‚æ²®Ñ=©¾RÃMuN®¬OQe™"ÊI:Î PŒžÓ`=ùýõ¥qX{—ðM·#"ǃæC›K÷¼e;äÑ*¹œSîÄðŒËÙVçgÕ#š²ðϦÎLJZävZIMÕZÖÞxb‰{¶À§<êþ£Ê]R(tÇïd’sì‰2žåk´:>fî§è#yp¦Ô‘¸] #úïÕ ¬Å£Ô¬ í;|+g;$£Ä#ò"é/þV¥wÇšÓ.¤Ÿ^‰ãÔD¾‚%Ü(‚#O—‚X¾ßT[ö¹‡6'­ÏuŒüý(ò=!.²ä ¼£ ÑŽ4ˢ槚±‚Рª5øZô(º2Â0®}ñ ð¥fÅÄ»¨/¸z„)GQ^ݼ›ïÕéDŠ{ †ÚdȆÊËè²8>§ÒÆ#ümÖZ­¬A‹eù3˜mÉ +r7׳HëÖDºs•¹/µÎ¨J3­ñâžßq?W>„Ž¡v:WóÔÂNŪ +ãWOºÉÂ%Ò$äyûÕ‡ÚÚ›= $·ƒ•ÉØiÈ ž™ÈMNÏŽÉ1*:ø²ÝsâDÓÃ~†~””Ucz\…-x „ëÍöÖÖ²Ÿ5DNÞ­s]·c«½ŸÓÜf³~¾ågÓ/Ï Ï’: + bÔ_fÆF›Y´P1ãÜ\ã«)~9Súµ6œu(q2.}¬–iÌEïW­Ùk¬ñ¥•rTý˜- Ìjƒ2‡YÒKæ ÖXÃ+bÞú áW5å_…l8˜V ?mº˜Íd]içc€ÓæB×)tòm WxlCƒéƒŽeþN¢ùdxöȈõ÷‹yW¸sFJ‹-Œ¶ü¶²šoÌ;Á¶2ÁýÝUÙÑÛ¢j2nß^›Ìg{<Ü ùaˆRºñƒasË 3%úT†¬P!®ŠDîç Z”ν¿ƒóæC‚~zÜ OZÚ“,G‰±…aO þÑ^¢r{ß±6¯‘§×Êñåt½HF·ÐôÅÕ6íÑSÒ¥¸7ipKÉüÙUtBgÿ æˆæ4ÄsÒkÉ8'Ém•aþ78ù0QàF‡Ê"ü½ë3 9~^¾-0Js»d­°êÛ.‰LWAäkÏ€|ãëð–*Ì4"/è63ž@¿±­•Ç>M+W÷g›RKä}µì£Ë~û_ÅìR`Ÿ¹ªb’bxfT2¼ª}Å)¦ˆî£Ã̇¿bqª¶ß®¸Ìë,íõŠŠVô ›hwê`Gµ“ËÏH…Aò}7Ä( V:ˆßÐw¼î¯ õC YT,Ðt¥°C±dÓVl'Æ—KtMý&ÚuŠhSÉ'1@˜tð²´-߀*3…z›áÓÑ@yê#Qȃ¦­? ê}µÄ5kËW÷÷ ²µŒÅzeïã߬ÿÙø3YRÞèÏ Ãái]äj…K½à­àmIWqçWÖ‘aµ•,±ö"{æã'Ú}„¾p².ÿ›$:„ ƒb꘠ýX¥Ÿ/›Àøø‰ù¤W¶„hM ÷©~ד¦/ex¨.z#U;·N÷ݲX»!#+¼¤ïGiËxXí[TÒ’•© +¶‚Aü†<Œ€ ˜Ö¨Lhqt,æ^ÄüŒú)ÍØLèðÍÍN¡O÷²ùËsðo£_A8á Ì`ƒÃvÖîÀ¦£^ =Vñ‰µ=pY¤Æ¤ghðFqYÃŒ5Ë—tÄY åXh¿‹rÅ©mt4\›µ áE*í‡_Yl]ì¹ÈðLd2Û¿è ÛeJz¯a¼.“6E†æ$Uœ~g|ž¨ƒS÷ÌVç¶þ¨ä-4þuFaÖUv˜­“H°Üéµ’M|¹ + z?·cTwD«ƒÅÜS’!›pùá å)rØá÷o£¥XxveJO-}ÌJXmUhòƒ<&,$ÀT»Ä¸a·AyãÞ˜€4/(r_0ÒUâr5¾â×Ýõ£UØ#ø +#+¬Ê>kŽãyøµ…ŸäCVˆ"žê„˜SB~5Çþ©!¯¬3›“z}Ê@0®Šeeþý|"êþ8Ëj8› Æ ü‚„&ŠKtÑܯÞ⣉J°CWßdüÚ“Ù§¾,ÊNʳ—¢52Ÿ/Cl¦$<‰¿î/L ½mW®m´ÅàÎ×1J¬Ö’lr¶}¹“ýP¾0ŪYünôQ<çÙ²7Ýù6¿ÎÝ™0l›é°ó¥BF ÉKK‡ˆc»[æì¶„»•›îVßeÉHy_S+‘––T·ÇŒ%I¥¸­^›Ö¶ît™ë‘10Æ»’­×B˜üWÍjyåˆê±-kŒ9Z•°uèµXåÎ ÌB¯ÅßJÇf§óY=•ÌbzºáýêÑdøÅ××BIŸ«ßÒ‡¤ qh_а”*'Uñ=ôÉ¿ñ‹ØT&Jþ °v©Ø_“ÀQèvmüìø´Qvúâqª¯Ð"‡¶—Hœ¦·’Î¤áØ„yz¢;bKdÀ¿@æ"UN1—†âÖÉœgp ‚ùj!¸ +™çqÛ•‡_Š +MÓâõ-‘»ˆvLDsˆ®.¤Ù‚×½3÷“M­x¢Ç牮BY–¡W˜ð¥>æx头oz¬ F*R/Ò ô—€RV–©Çòú@6Ré¤Ñ$1ýo ¾Õöîá&ñZU7Rˆ”Ú'ü<¹˜e!0¹:€«RRÔ×ïn‡Áö®ù. ÞŸ½>ä@v”5]7¹6]Ž" Õ,.‚J ô!@“# M:§ºÍ±‹²1x `Ó— ¼ÁϘÙÇýÕ…„š¨ øŸ«ô¢†YoùÓ!AÉz³g|`ê†VŒÁÅiÏeq㻵ùy¾Îh-Öä3y¥‰}aé I(§QµOkZ§ûÏXíÖ ©OÞ“Dü‰¶G!øQ¸JŠUpœì® NåAÔ‹à6\…22 ¥ñmI +ËÚ`ùçöJÊÈ« Ùè2Q=Øm·œ±Pk6Cçlæ–¶¤é‰ëBË÷·ŒŠlêáµ +"DÐS•©\Ô,”cÚ›Îjë_ú:¨ì:†ø4–¼¬ÕìЖ`rðÅã­_=x‡ÍŽZT\2ê·3\I‚q<ЙédG¾6J¯˜JàßW.s ¾êXMÅÈ–jë·b\ó>,âP-@â'Í é* ¶ç,ãYúž2öÍm½¿Ù½¼&·])PæÛ¼Ì½_©1úY?í¯–Eíxþ›}ORÔ|ª'ÛœuÙSlЬøfäQM®5›>Ñ»eAz:y˯ó‹ÄìµhÞ²IÉSϨ ¾“«+‹YÙ³ö÷¹ówÈ`™YÒôØÊ”®ÑþºzŸ<¤~9ÊRhVôoÌ’™BýÑ´ÑG™Ù˲þ*$©|øê6Ÿ +¤ÜÐ8j…ýU.ÕQ6û—І¢ó5¶TõZˆf:ñ¥Ù“?ëE=À!òäXªceE¢ë;¬*ãQkk<ÙÕ¬U„ÞùK à3bZçÌ&vyju&z¿æÄdÇ0 ø”c¸¾Þ^…2¢•n×ÒÝË'ûÂ0ÖÖȪ(¡z0Ér_RoCQ6*.Ì~¢Ã‹ŽÄoôbïù<õ‘.÷hõ +£wd[鯼ÁZpz”]#µèˆÔAùŽŸÂåšbeÞy[5¨Ø ‹C[ ÆÑôãÛrï/}Œ˜f ȶöVCÊ£'m­CªÒþàåà¦i´q&$Ï™³uñžÙÄÑó=å±ÙÏ}þ$ý=fËÊ›.¦6l¹Göœš„Ž– nr?U¡¬¿J‰ô~^Uϧð;ÂÊ[ÜI·¨øDô%B$ÿëO—pK½ÅÈdpÄÇëöýkEÈ/?dÉÚÇ®yÒ-b\¨B{Æ®R |ÑI;¥/µõüß`™Þ^+ ŽXÇr(ò4^ü_KL}ýÕÒ³Ý,:\Çæ®¿X"-Ïź¨]G ·¢ŠôÂ_TÜÆöÚ½\ÈR°>-05ÒÒ¢„½pÁ"¦¨à±µÓ€š_«êvNë·l…p ˜Õ_&ÛQ!o# ËNÈ@@Æ^£\•Üð ì¸Fê7íð0¸qP"2#˜Ù\Ê…%Íš6c0žEõa­æGÂAÈE:0íÐÂE$ÙŸÕNœÐ´’Ú>uB¾öšCù¤ëñd€·ªZʸÊÉå`˜i£hãVû\ìO5'#(Ô›#FUAoæ·$Àö3X­£-N y÷õ š‰£#3î‚û}SE—®ú›A‚®¯Ñ+{¦7ÙÞKïõè6¢9}ú qk„QbPU›Ù£ÄCvG/×—Ïkê]G” Õ(³–¾úªcæn¿S†Û›Lït¨ß˜ÿåb°“¶â4bÐ޶@Wß9hZÁxÄÚÓW|¸$*ò‹1£„Í…¤ÒË`ÉlJ—°£}ݧ'—WX˜ªYuþªkrÛܽg™] +¿è¤ hb™]ªaUnr<"Ù}w^üˆY}«˜×’—bÍK4XÜzÀçF_…°§UJ¾ïS陯–=dŒÓj:;¶áôênR,di”|“8Ø8b]íTþ€áÏ‘ÑV<_j_”"u²á½ÑM‰5U}´4Nkf‹\Ì%yÓx±µW©hÈï +e|7W²ÁZ6¿Y‰FôjÒPl½@¾JZ»ýlÉË +qÅÿ‘ƒèmÉ1¥1Ú÷¹îÍ Ú;‘%ÓzÌ•ìÅ)gŠSŸ!»Š60¤ä n¿œ0ìœḬ̂*­oz•Ø«ork”Óte!Í_ůµ•uêD$šGëäö4 +îgòì'C£g5 ² 'ÌØ…\•¨3ü .rpí2ð邆‰Ó.Û2M•Féè±V_¤®{±&– +þ1 «c»ëböÅ,4DÙôµCõaªƒ’=Î5 õÆÇNÏã–hO×·8²4¤jkœWß=ÞÇÓÞru¸cñ’ÛÖ®ÕhŒÀݧV-S*ñ©µÛõªtg¯<U[þÌ*×5,åó¢Ð¨b\sÏ(u޵ߴÏþOâ÷2Ä6AVºF 5nÙkUbf:°}Éü´º¤¾0Rƒ6£öš·èE¬S²ÖÎ}°¾Â\ôž%q°Y¬ŠÏ«ò_Ò®¼ª;"KŽx÷·ç @Üi‹–JÖ†Ö*`W¬ZÔ7¡´B–P˜SE…‰p‡¦ú.F$˜îOÑÍ=]å*4H}Øc#!u¯?Â.)m]*/ sªž¥O$C¢´Ë–õJaÚ%w“å»ëÜËH¸#-vXÿ[ˆq™]£Ën«¤F+3âå¼õ[Ö²6+s4M¸ù$”‘Í÷ØYÍ +(U\É»9ãï#ʨâ…;˜jÚN/uÂK[·M]ýGC¡$Èßæ<°‹NÝhtÙí%Ñ«"ôÖàs¨÷gëtìÁ‘ž$´t£Ò‡:ƒÓpF~&’«£LŽ+Ìè-nßÀM¹îãÞ—ýÚ7ï÷ŠM_¦²ñ$IˆÜG™“õPüœõ†ÄÛÉÀ$iÅÉ»WGÛrfŽÏûŒGõŒJ¿lnð^Vö|‹^ÌdÞ^l\@7ÜK[:¥€kƇx(½ƒc½53^ @ï¿ðP£¸öPÉÖŠ¢Ç—Ú G˜ã²VœÆ^~+'»b_aÜ1¸ïÕÍ íŽ{ì¸tÓ·däó­M/[{ïÎ~‡ÒòõI~¸Tðgöl*ÁKSÉ¥ÑöPìâ»I›ÈW´Üø7sa¨Ó]þr„éz 1'ÒF/®Î6¶bßo ÚyÉûò³ØŒ®”Ç6_¦Ã€bs-?f2úËIô°Ü„NNÑÉM’|½P‚*¤Òôs¹(æ3{¡/¾S KÁ¼cçd£g5~®Á‘~j„j5™W¥úPöiü'¿‚t–kß}ã0.™=ÎúºîA&BJY ”»©1ÑBÎXIQÛe”ÓÇ1`2FäeÖÆÛ½óÝØôGi‡ÂøIŠ/7æèœÒš«ûA23}+äÎ -ÎR ΰW\H“9O5”8CÆ]îl}2Ê~Òo¿?Œ©ÒUÜš|²TÍíµ$²ÏÎ>A@Ù­“À(,m‡¤)th—#ö…E³¦DyÕåÞ›päFh»ì‘ Vh•D%úKQq%"¶‰¾ýGÜk\…ÏÙQ€k'P¯ÄÁ#/öKªó{ˆ'ÿ…IHs°òµø9â×]ѾÓY÷ÂÐopJ5W®dÅBy–ƒ—éKƒp–tâq¸"5az]0 §®®«+ül&úg)_‚êÅ~P´Ó¢¨9G/¨.ºÎx÷•—è®}Îà}I²ãûèì!ÛRŠ,.X8‡tʧ[©<úNG²€Zd„…![)÷êóÛ°Ë¨Ê ·ž9üL‘"×T h13nqb K—#õ³Zûbté\õµHåcÙ¸Ï0Qâ;¿(é +½çÒÒ¶Ž¹ÁUUVY´xj#ÃM®gÑ‘žüUÑ™äd°3~§ÓÆ#ù¶Ëœ m|™z çÁ·þƲêhMáŠ6-ÐI¹)õ„o(L”I‚"üz0°}™ÍI{Ðå¬þ(Ù»¹Åxß‡Ö ³1>o`ÙŸËü~¨~DÑoM±àé‘?8ÛÀü@m„üªãª M—…±y–Õ™2“ª†«¾ø¹w¾‹–w¤‹Ë8×êcw(ƒ–‡R­P|˜eŒì½j€j ’ÔÃÜtÕózó¥ÏCBÓ ÜLÐ_DÆ»—¬Žï“N;Í…ÇYÓùhº°×@ìà×/Pã‡7vÝßgnì൞X}ѪŠfž£æ2<‡9ñ[Pð{X Ùܧ F_2°ÄèòÂ^ŽÃ7E±–¡Œ'³‹`*‡T¼Á‘_»JÉo.-‹‹ºÓ+x)¡TÀùdâ{QtR·œC+ñ!>ÍêÈ ’ÚÕ¦!z é]N‡}Ûõ·Ñ‘«lš×À· ‡´¤>(çÐïp`6Œ¹:hYÅ‚vËÈyU{ÀÓE畹ÄþøÆãUz¾EÁ!¯5ì]é]ŸóñMðõÊZc%ãwËNfkÜý²ì‘ø Ñ!Û“—P%´ºY|¦’7–7'ßÞ¶Ì MÝS€È’ GdžÉÌÓViÁ¯Ç'DL°Ð€%@2õ3ÆÉí²_’2"W*É»n­ ëæí#ç û+Äg!çqW¢âÉÎÜÐ%þG!Öó',ÈÐ3l%ŠºGNG +»:á”±îÙiB-bb74Û‚:¶‘XÕaK*Y¥‰H'ªKyW%ËWw€)o‹¼ÔûìX4m½ žFc *«ÏH–)G0ÜØ$ºh-7Te搜…¯Çµê­Ó0Ð=–²Çèè\u€?z¬ í ¸r_ЂV[mý}ê`nÀA޶7Þ2¶¨Q@™ï„q.„”sÿµ§–;ãùô+»½cóL,“TÊŒ’³ÿK‹$ª¦|cã+ñ*ÑÎqàëùHGv_(©[^u'=CÁð¿)L-rX:íàÁ2Öé!:QHâ"ã‡î æ`œ™ŽW +·BÿˆJ]eØqwÂü܆M6±DÔ—Ô¬ð;­¨Eî29ŽoÍ=[i“¿ðÑ«˜:$”+h>[P#Àß^^õ$’æ øFÈ彄“¶¯(2\™yÒ4¨sic’˜£ãòMÜ)(±\FžëÀ˜#³ûØrÓÞ)U9ï«2ÙíR|wª7³–˜£zhﲈ6Y"eþéŒD™¢vx÷ÖÝÌü{ç´rÓTÃò£äžNœkí‹<é,Ì—k÷TÞÝX.•ôõäæú¶ÕRL*3Ôñ Fƒí´g(t:(Û¸ø>&%BìCi"±ýq|ß*’<>ò¡v®°í]³®gÿ©y¤B¡îSA©ŸÖ¾uí¤|KR7&ÜK‡®0´õÒ‰ÌóQY4ÝÝN¤xlƬúw÷/fF݈!  `+&Xë]|wFmÂÑ“Á7:+OUg…щþ/DUN©Ð‰ï­²Áe®nÏåÅeÎ_)Ùïû­™¡Z3²ƒ ‰ò‹Ò¹Š²`êZcßå§´Öé~QAs—ºaÇJ‡EE-ó.úwÏ™\j¬½·Pi0„d}oã„ÂÐ×Ö÷®j>¦ÎC¢íY’Rkøb$ND¡Ì˜XMññ`… ']s¦ÚBwç&^í8^˜5eéc­rÀÒû¡qƒYýzƒ\È”¬Ky¬öú8£y¶ª¢FmèÓ\´„ž +D:óÇGúH:GLà ß"Ü(–Â9®ÂÚdz“  +Æßknî—5ú$ÕαFfd‰÷ÒóG„Ç¡‚†µRÿ´Ëm"8¡J<–,ÉF[˰x‘#°úvrÑ™‰_zÝk’àô¬(ë6j#¡ + »ÉqÉ­`ìxfŽ÷ï>a°ë}‹Hæ’LÐ/ØþU¶Ü³ú½ÎÏÀ¯ÝG’kô‰Ó·%MJG~š~›ÝÉË…Tá5*_€Ï)¦ËàgÝ~4MÞ¸êD·ñ+#˜®_i†å3à»|þiãqÏk%·v¡×œ\?λ!Á…6j꬀ ¾ +¹ƒd@ [=UÜUEDåø²–LчiF9°Ngè ‹‹»*ÿ•ì[A¸<€:¶æ{@ÎAzòhj%šç„]í $q·ZÙT[%‰î¨ +jXáUŠþ¨ÝÙðµ²;iÓÐbM×éDÏ—D4ÄY2o¥¿;`¤ÈÇÝÑZÏ*oÖmd:ö×&&Ñ,½3ªæ íãxá×1[º&H]õÚáùóoÁ¡+zOÂWD$WͰ]5 Hª˜ÊÎÈÜÍT“ *# +g¯”šlu·&¾²"ÙQ§0 3sh7&è&iørjOûÆy_I°OµIf +•¥g±ýj¦j3ðîŸÃY|AŽn/a—ԭDzór›«0ÖpOì«Ox%/J8Úqiù •ˆ4Ÿo+SR¦Éxôë;hL•ûsî0´êrõnÁ± o‚ftY¹.„ }Õ±‚>áboÙŸh¹æÂm_ÅûŸJ]zeq; hÐ%5†ÒDÔrÄj~ÿ4|gÍKŒ¸¥1܃©ø9Pã³mæ¾Ü0÷bâÛF?é%I{i/Ðâüûê y#YÚª†á×-†’±,µ^”ÑÆjs0×fa·}8k§dÙt“ëbîå:ýè QPzìEwuldàÙËnÿ¸¦ÛÞ"J[2µE’ÓX@âøïqŸ³‚uë–ô[ìÓ|ö]»`‡Èmø‚Òµªð$·`%nb–hVµà =Ç…8©*)ˆxКQeO·Ýõ:&I9Ä «½æRtš€,B¨úQ™ŽsR>à¢*Ü­}&dUÍs;á'vsŒ'á¥ïtî1;wq•óå“-8™:®<´·ò×E»ñ[Ã÷®¢ùúž–'uL µtå<­ÔSÖ“sdn8­Ní—5M:H…Jû6˜èxH«LÞ¸É\ëyé¯÷gÄô‹Š·/^f—6 3ÎZ uÏhï(ŸZ@TÀžÔj9!¨›=©húNWß—êÎ+2´ ¨Ö„]³=šç /ÚÀKeød$ +o¾^Wè¸$Ë…Ê%;6[\<·¿µ}ÐÄI\I[$s­y}Îümm>Œ¥ Ãë‡ydWð"›{7È1à²\Í(¾S‡ÍpBCئ«}g+ëg£¯J?[žÕ†cûº—Ý?ßm>eà B¸íTRp6²¬+L_‘;¯]uì9Dos“…jäeÓ”C?_B¸,2/Ù#ûãÇ€²W&ÜÐÇ…Nz{%zûoÙà +Í«,Åñþ–Þ¬ÙuÙŽÂòÝö <¤ÑUVÐhuE´Ž³º(³qK”Fhk­×¡+ÒF—[r.ÂEΑt–˜éþþIo÷¤™Dë2¨ÁõyHʰ +pv(\æøy>}n"~#:[ôv¢îpI^x^fÔæŒÛ?*:CËø÷q>&Öl¬ âôHôƒ&| N?õ>ï±÷ëI÷g±W[é'›ÝƒBçÏÊìÅã¦î–¢ž1ÐþÞ Ú|ï2àaMØK’!«ºHeb|XžøPo™ +%WpY-ÊÁ,Å/©—“o-Õ9£â!-VàTÉþ€bœÏ}GÔH3ª¢VÊ×[ð ܳVùÓ}„…fí•ö—ñ®~b½ ¡•·õê硺ûf>ì׈ƻ³ä’:¼JÚ{’"0°$ðpíš¾^„I‚2ÅÒÄøXêMíô6mN±LpªëO}©' r§¾~'Và™àðïÒá†zˆN^Íî’?õ¥é Øb‘$ +Ù=}â%ø¼Ý +wžïl¼¼‘ ^y¤_‡¼ÎaÁ¹kÃôv+Š µdô;©“¥®¸Â[²4Ùçi{mÇ/^Dîr +:71®Îiê0í¹±eW¼i|µ\"{ÒµûT ;Ï^ÝÑ +h½nºÙbÑÌPR£®Vð7\ qÂÆü,ĸÖdÞ™/æôfžVN™…ò´ÅM—£An-9i?™ç„ÙêS’guw5X{Åáx˜8‹vï‰Ë7n¤ì“O`võ‚ˆ›‰s±ÚàÀjõ(t¤®‚™Ú¯‘0”îœûø•'…ysÔ”ï¶N ƪO"x|€Ôœo‹Þ&ûvs³& }ê6@•\O[X‚”†zó¸•&³–ä•ÓȹÌþE‡ÊÒúüY?Ä%{ ù`µð„ŸuŽ/L±¼A¡zfAÇÔjúehô|[è¡ËÄuS©3k4þLôÀ^=ή~Ykë&S÷…Ó:‰WA •‘DÀ +‚ÝÅ®¿q+#L͈¯˜÷ìzÞ+xБ[áõ—ßú9_œïêƒÕ+4Ž•þ§dKî¸~qÕ#Äþª·XÌÞ÷)ØÞð-?ŽPçÃ:;QÀ=4DJ5C{ïr7%»{æ»ñvˆ·ü —rÉce,Ffí!K5‹!¿HBj'~7† +ނ©G¤[ÈØûy!jD„ÕAùå$¾€§!dUCÜP@9æ,wúè¶ ¨Œÿ<üyE›ŠR î#=šôzûÏÖbñšþö¥›†¶ÊÆ•½°ÛÖÛ+Þa_Ü)íïB_„;{{C`5¿½ Ò‘^‰jÎ*=·v3J1”ƒœ#¬ÒíµºÚ„ˆêJi?œ‘Τ5>Ÿa×=a“óSÝžæ(¦\XfÔ¡fBr=CxtB¸‚s5Õ¤´eZ6Ð%¸ +ħ¬ß ‹’ïL§Üò•”^³Æõô}­›ï/ûž¬]ÎÎ*—€8+npN¸ó„c•²o€/Œéöû±ÝïæorÛXl­àQáZuû¢®“ð³¸ê'Le󫈦õºÁÒú’ƒºbŠ}+Ž æ‡¼`ħõ.ZÁÓ¼[ì î“>qŸOqNô'8u©O”½_ÆÛ”p)Ü ¯ƒ¥.§wÉlÓ<+]lBeÜ4Né‹…"îö08¼¬¹Ä Mç}Q‚öÜ>茦ð£<8OÙ–eEC™i­—¬ ü ‘H¤Cë6¸Rd›¤°ð³WK³Lõ"H45ôëœ.ÎÅÇÄ·hž)>& L›Ë /¸²ðÎGßÞ"#ă·Úl!ÈN.õÍÄÙ~Ç÷KRÿìÏ4v«l 7ÃEÞ·ìý¹&•¤aÝþGHÔ’@£#}eE ýµWºbÞÝÕQêµë¤=U¨ié¶©”šë̼4±:Q^C#«Q ´D‘J+?ôB †¥Ç‡¶ë—ª›Î—¡p«F¿F~Û9ŒÍ§ö\Eq7µ—ªêlÁ¢¶+_Sïu»nEKï“-ðc?ï<ßÇø¡rU¼‡~«Hôý¹Mxšø§´qkð§¸é–å+³>y+«Ódª'f€œ©ê1;œ—ÞQ:1õ˜½|½žÅ—{VQ&†M,‰{½ªF)ßÏ÷ÝAB3…?á÷âê垥Yã—R‹¦˜ _òÍ~¥¿NY‹´ªbïKck@üŠkù¸±è ’!¾qÉ0$ RÄ8 ›«K„[+K¦“¢rI'tqê`˜ªÉ¬ Ê¿¶7Ò*·0•tºé?£zˆ’D¢‹ÉㆡJ“ûæØ…ò.U3p-6-uKf™XbÁ†íU[êL IšŽËaÖŒ=M/Pvûáso²——™X 8°…8ÜR{;Éö¦‘TÊj.mP:d5}bñåú÷À¬°8©6ø=%ªõ÷"(¿–Âx=‰Ø~HsÉ—ñ”ÇAXYŒY.ôêK¦ÖOe9øßŽ-gƒ–n.A›DÒwÑÁÒÉpy¦¯ÚP¤›ŽL†Tm3)\Yá”[¢è«œènaì úû•Ö¦’*vȽèAä½´Þ°¶¿bx$Ì]?&Ûf°\„ gTOøýð,GŠÛZyðñÆÈ6±ÈnTЮ3S*¥ ¶áR*mb1êÅ:0æó™‚€±KpSZ‚m¼NXäË@C`rö< ¨§ú€šÑ¿:¬Ò`Î7EMRµ°EÆ£À<ÉÇs ÙGÛÀ è·L¢T àQu|YÐ7c[蚌 -ßkAC ýHÚS™×¡Ð +ƒïM®™]Ðk7ê¼".s†“±z$ERì’ðÒʸ˜;²Èd±¬7³Ô84mwºR«RÓifS*ÖíÉà{=çl‚µûºHâ±^!•òUñÆ mší;*CJÎl@—«*KÔêžÆÂ”™SXc1x»9Æ@47ÅMVì"ŽVôÅiFψ^©DÎ*,?ÌÒ‡[oÓGD$N³ú†éî*÷ +"„i]8Ù¿C´SMeþ3=ºØm4V£«æR±ºÏ¯?‰Ü6hAÅJ´ô|m–éÅ7 Ê‘g(þ]˜Œ‰]¶µN ñ¢A0…vôˆ|º­u¡ w©Ç 3¦ÊGÛnyòúÔ|¬t:®øEe`Ï~ó¢p2lŒ Ù¯pm\\5Å>{žo>A9Õ¹g;B”óüÖq"°8@•7€á±vÄî”ïÿô*ÜÅ ?U™üÚGÑRª€ú®!Ï~1ý¬bÊŠÃ1_dRÀïBÒQŠ_JùèùÆÏO ãÝŒV¼¥¸Ã7ô‘W“+ ô9=1L9MáÙ´CµË‘^€¦"+–Þ'Hð¤°e²Èøà bS ²Ñض”LŸîñL*`=¬šV#5:²:=ø–SmCCÈÄyW*/Õ™%À-}‘h´íÓU"Ì.6uˆ NqK¶Ûr´§`ç§© ×o¯µGŽä:Ã~öþ ܼ3‰«ç3ìÞj{™Ò ~jhUÝ%-¥–!Ó̼p…Ú‡”4³2S]H³f™vqöÞ–N Mløè +cîaߊ~®a²ÓàÂ[½99Ã=ÂÞ¥d·ö«…ÆX}–ãc+iExhÝuÄ¡ Ã!Äždۛ݇J6…ÁÀÉ3t ¯Þ¤Œe1®s˜â€ʼn$ÈÎY%å¶ìM·‡õá ¿Ö2Y."¸{¡Zx·±Þ–)³Û…yÜÂÌæ¬(°x:lB< +ŒŽùnDp'ô0>ªwƒJoʉ +È1HS"ÈÜ™…rY“Ýný½_H™|ü$0?=ï.¶Õì›$xÐÚŽËŸ… ÑÝÛ.ƒÛ‡!Û †jŸ±ûÚ4Næß k›øhµN×9 Lë³¼õ­ˆ_ +”š5ŽpÛÞ…oãC§øµÐlÈÜCQ&Z%™ªÍ!FiòÑ;"fWµ”¤’Çd¤ãdÔp*SMŒâAx]îjŒ_t,7ãö%mG˜yªÐ€ÏÁ-Žßiúõœ!4~«CÁ4Æd±k8ðh0—©zxæÃo|+EDÇ“…S1¦ŒvcT1-ªCq%áʱI‡¦Éu¬5+ëk +þ ¹Ô±>­¯åÐ=g4F ê ò:X™þ;@<Ëníœøö"ôÛTµÞx,šÁPÍàÀ7~ ôˆ½~Út8z"vÓ“6G׬¥@T^ñ~!Îr”ãb<¯NÇ)ÜËØa•­Vœ4þOb ½ûy£³îÛ•Ë_e¥g÷öȈ?> +â—a÷ÃüÆT¶‰öj¾Ô.nŒÏ¶Yi/¹߃ŸÎEÜ¿û lˆt0KLcÁöÏq|uY¶”¾¼EÊÔÜàŤ²°¹gÎë—èL©e­3vXí.”*ÇJ"4yê»!?‹ À§êÿ9ý .× / ‹q/Öýðd¨8­´Ërø­B0r&H-›ÃÓ¯p¿°ÏGÖ&qtnótŽÇxF%Ö&Ù§•q±KÌ2(åתc´#ÜÖ/©œ_$Yìr}6Ðè¯ =á²®².…ÊpiHÙ²fi(‰vÂØN[cï-Õ‡*åùÌg9è‹—©R ñ¤ ¶~õ]R‚¾ê©Tšm%²K}Õ÷ êHüIh|÷®¬¿šKá˜Ýšx¬ë¬Q¯@N½-ãh f,L.×Ä’¬@} %ŸtŽšÌ»¾T”r9:¯?é¥míÿÛFý¾/‹‚|2Þxùý„õ›³âV¼?m.ôðîŒ}3œjîœÚ#ädQ§ô«»å\žÍ5©ïë»”ßþËäS˜d,Ó¶³ÿÁ®$Þð_Q)«§µ«¿YwüJÆ]½b#Æy,ýîïšÖf¬½.¨saßCÙŒ«â{Åù…ŠÏîí¯l_ܽâˆoÙ'îÿòý¡óù™?—¾*?°=íÈ3¥çqÒ†‚'_[ÞŸj¼xóÇÍ/­á¿â¦ª»Ýxƒû©ûs*×_]ÝzïÞý¹jâ2)ž)±ö¶ëYüƒ?m{väQü–ù55Þè?QRhxÁ(èi´à¹²óÚßXîÅl¿Ò{4Ôê_lÁ'µ3éWOÍñ IªKéøÝ©{ZaÊ|“BÑ­>v\§œØÈÒÎ}[ÈŒãüŽeÛñü»á(ºiÍ÷Íåü´Õ«ùä”î*o¦ÖQÈÁº˜ÿÎÁ@†‘¾ç&—È/ô±5Ÿªê›mÙºbÝÑåæOߟt`©»"Ær‹cラâW—*í}½kMómŸûDÔ¯&™o¸ËÍöWÿg8³êÞÁ/ Ù~´ +5‡ +kgJu…îç{-ñ$.÷ÇTŸeQV[ŠÍ ]8 Ïˇ×m©ê8RöÒ÷åžW›έ~{U|fõùýò[®oghê8§‘´ÿjÔ<Û–iŸûæ—cX(Ô÷óû|Ù—'­I©ùð¡KsÑ/Oÿ_ÓkhÌ̸÷Úùè§¥ÙgV*-0·(Š:a«¥¿RÜ+°ðÍaöø¶ÞvUóÇábM÷´¾(j_èŠê9.r(ÃòHý‰C‡Ó»ýVó8脾ìsýÍr‹UC¸äKtý‹[­ÞAvi²s']¼´0ìñ{–º«Wcón‰×¼}¿Œ±ø§÷¢Ua½¹Ò¯'Λ¹9cÍåëÏç_ÌîfX›;Gìá—;É'o¿ü™õøvòôÈïw±1—-Oñò+y±Û0É£ÍGó’ß&Ó£×}CWîÛÿô7××{õ½4W¼-IÞã:#ÞñsãAýìïKlò¥q½9&嶯rú—‚¥;~²,«Û(¹™iÁÓä­O|³˜qC­ƒZDd—¤YhuÙÊÞã‘Ü®%éì‰RUyKÛ&µt7/Lîµ^(»æÄîH¥çÛnÏ_.øÌcßžYõŒ?Rb+^­l˜µ©ÈæúŠíÉë¶çݽÂãwwµø¯ÍÒK›5Õv]žõó§µåZc%±Í³lÕNoü¿^èü\õ¥š~™ßS¾(‘´aµ‹_o}˜Üú„}kE¾Ïöe:¶­Wã¬ýI¦’‹Lç[¼·Rsºuvó¤‡\">™P¸F $ç¤&•äç&esí6endstream +endobj +369 0 obj << +/Type /Font +/Subtype /Type1 +/Encoding 2830 0 R +/FirstChar 11 +/LastChar 124 +/Widths 2831 0 R +/BaseFont /AKXAIC+CMR10 +/FontDescriptor 367 0 R +>> endobj +367 0 obj << +/Ascent 694 +/CapHeight 683 +/Descent -194 +/FontName /AKXAIC+CMR10 +/ItalicAngle 0 +/StemV 69 +/XHeight 431 +/FontBBox [-251 -250 1009 969] +/Flags 4 +/CharSet (/ff/fi/fl/ffi/quotedblright/numbersign/dollar/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/equal/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/quotedblleft/circumflex/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash) +/FontFile 368 0 R +>> endobj +2831 0 obj +[583 556 556 833 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 833 500 0 778 278 389 389 500 778 278 333 278 500 500 500 500 500 500 500 500 500 500 500 278 278 0 778 0 472 778 750 708 722 764 681 653 785 750 361 514 778 625 917 750 778 681 778 736 556 722 750 750 1028 750 750 0 0 500 0 500 0 278 500 556 444 556 444 306 500 556 278 306 528 278 833 556 500 556 528 392 394 389 556 528 722 528 528 444 500 1000 ] +endobj +2830 0 obj << +/Type /Encoding +/Differences [ 0 /.notdef 11/ff/fi/fl/ffi 15/.notdef 34/quotedblright/numbersign/dollar 37/.notdef 38/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon 60/.notdef 61/equal 62/.notdef 63/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y 90/.notdef 92/quotedblleft 93/.notdef 94/circumflex 95/.notdef 96/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash 125/.notdef] +>> endobj +365 0 obj << +/Length1 1121 +/Length2 4740 +/Length3 532 +/Length 5479 +/Filter /FlateDecode +>> +stream +xÚí—g<\ë×÷ƒ(!Zô¾¢ÑCˆžèQ¢ £Ì0£GïÑ{(‰D/Ñ$z5H5º¨÷äœç’çÜ/ŸçÕý¹÷~³¿ëZ×oýöºÖ~±9Xµuù嬖PeÅK +ÀBX@ƒC … `¸"•Àwï‚97[@H‹I +KH +Šr +gO$ÌÖp)pÿJ䜠H˜h@PvP'Œ†ÄÐEXÁ (O@ÎÑxôk‡+ðê +EºC­Á`Àf…,¡¶08!è—!¸ ÿ;líæüŸ%w(Òc +à˜ä0­pGOÀjCÒD`jA1Nþ˜ú·¸²›££&Äé—ü¯&ý·eˆÌÑóÿ$ œœÝPP$ °†"áÿN5€þíMj ssú÷ª + +â³’ƒÛ:BÁ¿C0Wej­ CYÙ6GWè_q(Üúß&0}ûËHSá²ÑcÞ¿Ïó¯5m ŽÒótþGõWò_ þ͘î ahà‰ €  “ˆ¹ÿódú¯ZJp+„5 ŽQ1‚DB< 1“!QÀ ÀàÖP4Ec ƒàf €é‰/`ƒ@þ:NQdçél…ÿŠÿ@ΘcBXÿI /(ñO@T¡<~³FFî7aÒÿ!ñ»Hë’ÀìÔþM"Hï ò›0*–¿ £bõ12Ö Aÿ@!dó + Û?cöbª:ü˜²Ž¿Œ)ÿ1… Æ?òÄ(»þ)÷߈ùdAè¿ð¿‹¼<íÍ/,𠉂1¯.ˆ‹ +úþßyúp˜‹TEÓ}AAñ»"E­ÜH(õ×÷‰™Äÿ° 3·P(jEøya%lŸZúÒO©`è.–¼m]œæÛ¶Ñ¢ ©x,Ç¢Oj.<óU†§¥$+¸+,ç ®‘Í>:ýÊ;.qiã—+î+^ †{žßœÙŽƒ6H›jÇ6E±´Fæ{_&½øý£k#_›KQo–õZû÷êöÌ`1qCå Gý°*NaÖGdi./ÃEÂæ<È’®Ï ùÙ‡ÔóÎì"šÝnä%^š|‘}B5.f +Ÿ´›pr´ƒDE?äa‰.x–ÙÐx~Z–º?$\Ë—“ÎJ„ˆ)Õ³'ŒZ¤÷©Îöœ éÍS÷¨Z)Îv¥Ó4jžO7e ðí=žƒ×hn6`•~®ñY+ÈvàÒ™TÑr½át(5kÓt’R¶¢ö5‡ÜüL›¦r Á>÷Eð¸Êc.×$Š<«<+*òý¢vÿ9ŸÍVÂFuß žWøÑ‹–ò…G…¦_jà$K¨ _!× èŸD¸Ã­Ì•Þ·Ù•ù­ÙÞÅ ¨ðiÐྺákt•N~ùpyÊÈœ\èÄöD.-Ö‹:ßÐY»³›ASA¿I|O¢J| eOÏö˜4?‡4m~g—”Õç¹wRn0~œÙðaÐlË4Í !Å73¥Ðu|ÂüØø´ÉÆU–¶qÉÚ ôä»zrº«&b¡«7H¸i¢Ãb'Èð·ŸÏUÒ•‡ðÜQsùJI(’Ì4+jW¢þ‘Ý¥8›žL’^ÄYû¢hó8î¾íÓMŸªqº¡ð¬ð3˜PcX±XèzVbĉUÚ÷iÌ^‚[IUäÄ­‡ÍÝÀÁ’{§p&¸v½©­@b£IÜWòœˆ¹!,¥ÞÂo³–¤´^bÓù {Áèpk-(‰/Ü@‚m{µÏ›§Ee3EÍ\’56¬1“|?*žè<ÒG84;9ç”-+Ë|4+P !õ[ Såì]í§R„5l¹‡;ܯõ¼š¯É¬ý`|Làý"ÊmôU™Ù'OŸ"Cu‰»ùêçvÿA•‹6Y@&€ˆþT J®ËéÒsÛ™æàé~òý¢"õ;ºû~í]Cb¼çm¬ÁD=§:¬ŠrbôÉžˆÏ˨1YÀ&kpDɬ_÷-…:0<9ó l˜ÜÞºH´«òp^ÑÔƒn:X…â'W« a ++·¿@Ï•ÊÍRÏ).ÑC¢#—P§Ä§ CÒÎX€töy‡Q +âši¯N¯h¾ þZ Ý®®M…Óûæsq{°t,>ù]VAÚ+ƾõ©.ß³:ƒM*>ä3ž”PÒþº;4 AX(u.õ‡e‡Ì¶… à:q½„g}YH6²m§ô£p¯® +§½¦Þv}4‘‘’X@¼6טíðo#È |¶au×{Kfl…ucFmYÑBŽ7@^æ_¦mänó $ßÔ†¶oƒ¢J$ܺKúuùfKŸq0ÑòÖ ç`6]ìU®Tòõó>ó\•ù¸XoÕø˜7|g^ÆžÒ©š¡’Ø¨%Åqý–ûõ”!)š +Ô;wA.‚›.óèš…´~1ŽÉœ`g\ó)VlSìañõíí[÷T9 ;ŠªÞt~ûfÙ +¨–7e14oŽÜ`²)%~Ñä*t÷9Ç(ÿ"òGw¾]xÿžÌ~öulU‚ƒFýûߤ̩›RÂòžÉ©ÙÞ=+žÁ]Q\6׿û>ıñpR­ëÛØ- Ù¬¾÷´Žîµ´¾qÌìAÔÎ;LFœ† }?O.½Pc|üDYË˸/¨èYü°5ÕÓÞ<íèĽjI~™¡èJ½bÜ^ÍPõ•/Á17Ë6£öé<¬¢ð’ô̾Ó9ÜLIO?^ 7±<û¹¯¬qÌÔÜí¬ó‹pÞ‰dÑ©Y_X@.-èÉ&Ò–ù~åü"ý-ê“5OÆ06‰¸ô;TꔥzzByM‘ô/;¦+j ÔqSfš+Îc<4¶9Œ‹¡ÉjËXCSY›(è°*ͯPpÉËIÅÂP,pþ^É‚.g³öNR¿;c‡¸ÏäZ^|­O®™$›˜c± Í'6Š5]+”ÖBðèéÏò‡)¦êEwÙ“®7\ÝS¤-鶨i†½¡¾¨èôÊHgô@~Ý#IîÂ9YÑ™‘ÀuK-r[Œ±/%YŸ…eñŒñÛ¢dåŠd¸ï¬!D»}×l Í9´#÷„Ŝǧ.¨Ê|Ø«‘¶úäõö¸…6ôò@н› ’ßPªÊrøÉgîKU÷Ž€rÌŽ·ØCo™Ô¥ˆ¸Õyø§±‚;©÷ÍY·EÞ›dÉâhÆÈ}5º±î²|j"÷Öz[#Œüb†yI†¦0~@qVš4+§eRÆÐ¿Z²ÛîVÝœ¬ôõ­´´*…v4±I1ߤ[9ödwž0zv^J¯DKd—¨J‹R ?é<:µôÎÒd€‡á8,‘âë’rЖóážÕˆ¯>‹³ß+U&÷D}"K“klÔ §”¿§þ‰]–ºñ’¦ {°J}1ùšlvWOæ­þnaQouݼÅXå>þõÇ©!Í"ý¯¸ÓU &µEÞÖÝbɳÔÙ®cÄn>ØZoßyHäL©—oÐBìgƺ͘»¼Â†Sû ÷çÌâÙlA“·ñ°`„8KÖkµ~ •F^¥í6þ†yeM.?EîÚ6møPvÀ2òGòˆÉõ(¡™*‡êôã7ôüÓéĆ÷¡i?%pXQ£xIþÑÃ3óW²þçQ–Ý?„h DÛd+nk³ŽÔ‡³ ªyiÞ›éñ’æ|ÒÚyÑòõÕÃIáI˜ gcÐi|q¤!i‡ëkζn…\ Ðû–â†9ŸžR¸ð”ç›±®LÜNJI¨}@&­5Aªzk\SFv˜znàÀúc ïõ†l]vx_е  “%ÓS‰ÑœaêƒÙ+‰©ù÷ç?ýÖéWuLßéy†c[‚S‡Ã,¦ wÊJc¯ YJùŸƒÝÂP»-ön] Ž û»•:—’nû-:qç¶™‹m»#* ï Ô3Äè¿\±}wXü©+]ß:ñZ×âË%xrm2¯Ú£-ÏU˜TG}[U#n.غaÈÛL}GÓéJyFðé— Ž2K^ú·/‚®>ÓõS~xlèÅX]v·œæ ÇFcö‘1C ÒοœÚ…Žs›ØêÄ+Œ,–œtÛˆ½”QŠQ¼š·§âkˆÍ—]ìÀ¡Îxù|ÅnÿecETK¿Ãe˜û߃|Õ:ïÕ ²v‚`W ¿’; ÊßÎ`QÍk_‚sîövîôFÿˆzïåJß»FW´Î ¸ +¸<õQw°Í>ÚÜßLxí +ôìÓ—|rWⲌ+É÷4º²Å£]ê÷ŠCô„µñÝAo¤)3‚û5äÅw¤ŸdÅ–ö¨4LQîæ¡sØÊñ¶iHr)kyæÖH¥«ué„驱?GËù“Æ¿°³íS¾Wu(Qὑ£§âÉ‘àS,7–‹W©?F‹ (XTÍX±!ae¤¶ qUü_ƒ“Útûñsá +¯¢~¦¨v©'¼‰; +$3ß Ÿ ¬_ßN ºWŠg¶1;q²” + Éþ)½þÚZ §ƒžFª@´Ü~F— {_‚x!Év÷y0#¢tëÍW³Ì3¶JÚ'Þm·À*ëµZãm³AoM¶áuШw%{ ,X9ªVÞVôóûŠk+¾”¢Ó9R±wXO ñ¬{ïÆ‡>×;Y‘}ãÖî£v/kV3•0ï»xúQ0bqr+Ÿšêè*vδޖ’2âú¢rŸã­sŠ#€sÍò°ë–~ßR ]’>93R¬•B…òií+ŸZPú,úúHÝUz~-I+®Ë1ø£@¤„A‡¢°—7‰<“©Òís ®;?)°Q6_ÈúùЍÞÜœ­n/–WûL£!KǬE:·0!ÃìÒžI¥™c`ìòvÙj.ðïÙpšóôTˆ×ѽ<Ê16ÐcÇTi^äŒC°Æ—ºç}1kÊC¨W×^žS" ­ù´Å~nUXÊ÷ÃØ3 Ý` +MóŽ}Ãàµ>ä€wª“wë†1÷5fœ¥šøï4…­ç_ò,c?¾Â/K&7;ý¦²T», @ÔÊ ï”}™7ÈqÁ`Ê+žÓo°9k§ˆÞ& ‡9,“a…˜[têrûÑ)q¥º`ÿxOÁ—ª Õ_ÈIÙ-^8ß©ôLNÏ(”Ì£*‰b©LvqZ[%`\肃ä¼KPpßQñ‹ÝIöNÎ×ÒõÁ}G…E7ßqö¥—î×%õW#eÎýÔi²»W‰A ¸ï–AŸÓÕ 3ÚtÞFºEñOœù‹•«Äz= »Êý^Ê󪤀¬/òÊoÎ5eÆiyüÉ$6`1R¶J\ûCãn L•DˆQÛÍí³nûv¤óŠ¼ØÆü# âæø¦nµ$¾™óÁžT)ÚûæEG:®ø†y^•Jj*Øè~KNp1¡|4ͳ<î(;r›2©Ö€ ËÃGIx±5öìó:Å¥M‡3áDs2õâ % 1ºÅwE¢ë}:b_'äP?„r º›ßO¹7ú‘®‹zï*wñµ®,ÞK'ýæÀVÇÚ¬ÀÆ•Gväßm:7õ©Ho§I-š´5}%æ)>Wg§|ð¥JJÒxÜ/Ûù{EÖ…Ñ0…w³T7O-ÿáǸx6žÍó@ƒ^±\§WºEÕjøŸ8æeñø®…vËôíDÏÎQ¨Kõd‰Çܧ{zGë1E¥‰0L¼½loÿèj7åµ~·–Px¦&4µûáϼÅ=µ*KÏNúM<²á¥¬‰i¢Ô¼)â˜ú™5ã:±|¦èÑj jâht.0(ñŬ­Ã„ášdemx܉V ÉVzpæ<)©WUßA¸#ª²Ç‘=­z0¬}bà]ŸfR̓Ä *íÁxšMúý¹”¿øUòM@Áïx‰²ãã€Áˆ6¾àÿãEø¿ÿ#¬¡$ +áA:þ›òyendstream +endobj +366 0 obj << +/Type /Font +/Subtype /Type1 +/Encoding 2832 0 R +/FirstChar 45 +/LastChar 120 +/Widths 2833 0 R +/BaseFont /NCGFYV+CMR12 +/FontDescriptor 364 0 R +>> endobj +364 0 obj << +/Ascent 694 +/CapHeight 683 +/Descent -194 +/FontName /NCGFYV+CMR12 +/ItalicAngle 0 +/StemV 65 +/XHeight 431 +/FontBBox [-34 -251 988 750] +/Flags 4 +/CharSet (/hyphen/period/zero/two/A/D/O/P/T/a/b/c/d/e/f/g/i/k/l/n/o/r/s/v/x) +/FontFile 365 0 R +>> endobj +2833 0 obj +[326 272 0 490 0 490 0 0 0 0 0 0 0 0 0 0 0 0 0 0 734 0 0 748 0 0 0 0 0 0 0 0 0 0 762 666 0 0 0 707 0 0 0 0 0 0 0 0 0 0 0 0 490 544 435 544 435 299 490 0 272 0 517 272 0 544 490 0 0 381 386 0 0 517 0 517 ] +endobj +2832 0 obj << +/Type /Encoding +/Differences [ 0 /.notdef 45/hyphen/period 47/.notdef 48/zero 49/.notdef 50/two 51/.notdef 65/A 66/.notdef 68/D 69/.notdef 79/O/P 81/.notdef 84/T 85/.notdef 97/a/b/c/d/e/f/g 104/.notdef 105/i 106/.notdef 107/k/l 109/.notdef 110/n/o 112/.notdef 114/r/s 116/.notdef 118/v 119/.notdef 120/x 121/.notdef] +>> endobj +363 0 obj << +/Type /Font +/Subtype /Type1 +/Encoding 2803 0 R +/BaseFont /Helvetica-Bold +>> endobj +373 0 obj << +/Type /Pages +/Count 6 +/Parent 2834 0 R +/Kids [357 0 R 375 0 R 418 0 R 459 0 R 485 0 R 492 0 R] +>> endobj +509 0 obj << +/Type /Pages +/Count 6 +/Parent 2834 0 R +/Kids [502 0 R 511 0 R 530 0 R 549 0 R 580 0 R 596 0 R] +>> endobj +610 0 obj << +/Type /Pages +/Count 6 +/Parent 2834 0 R +/Kids [606 0 R 621 0 R 632 0 R 642 0 R 651 0 R 657 0 R] +>> endobj +723 0 obj << +/Type /Pages +/Count 6 +/Parent 2834 0 R +/Kids [693 0 R 737 0 R 746 0 R 764 0 R 773 0 R 791 0 R] +>> endobj +823 0 obj << +/Type /Pages +/Count 6 +/Parent 2834 0 R +/Kids [815 0 R 841 0 R 854 0 R 873 0 R 889 0 R 901 0 R] +>> endobj +948 0 obj << +/Type /Pages +/Count 6 +/Parent 2834 0 R +/Kids [934 0 R 972 0 R 994 0 R 1006 0 R 1025 0 R 1041 0 R] +>> endobj +1068 0 obj << +/Type /Pages +/Count 6 +/Parent 2835 0 R +/Kids [1055 0 R 1070 0 R 1085 0 R 1101 0 R 1115 0 R 1135 0 R] +>> endobj +1167 0 obj << +/Type /Pages +/Count 6 +/Parent 2835 0 R +/Kids [1150 0 R 1169 0 R 1187 0 R 1214 0 R 1232 0 R 1242 0 R] +>> endobj +1263 0 obj << +/Type /Pages +/Count 6 +/Parent 2835 0 R +/Kids [1255 0 R 1273 0 R 1303 0 R 1336 0 R 1350 0 R 1359 0 R] +>> endobj +1382 0 obj << +/Type /Pages +/Count 6 +/Parent 2835 0 R +/Kids [1369 0 R 1386 0 R 1412 0 R 1430 0 R 1447 0 R 1477 0 R] +>> endobj +1496 0 obj << +/Type /Pages +/Count 6 +/Parent 2835 0 R +/Kids [1487 0 R 1507 0 R 1527 0 R 1555 0 R 1571 0 R 1585 0 R] +>> endobj +1610 0 obj << +/Type /Pages +/Count 6 +/Parent 2835 0 R +/Kids [1599 0 R 1630 0 R 1656 0 R 1670 0 R 1687 0 R 1698 0 R] +>> endobj +1731 0 obj << +/Type /Pages +/Count 6 +/Parent 2836 0 R +/Kids [1717 0 R 1733 0 R 1745 0 R 1757 0 R 1774 0 R 1789 0 R] +>> endobj +1833 0 obj << +/Type /Pages +/Count 6 +/Parent 2836 0 R +/Kids [1824 0 R 1843 0 R 1861 0 R 1874 0 R 1889 0 R 1911 0 R] +>> endobj +1918 0 obj << +/Type /Pages +/Count 6 +/Parent 2836 0 R +/Kids [1915 0 R 1920 0 R 1924 0 R 1928 0 R 1932 0 R 1936 0 R] +>> endobj +2054 0 obj << +/Type /Pages +/Count 6 +/Parent 2836 0 R +/Kids [1940 0 R 2056 0 R 2171 0 R 2290 0 R 2401 0 R 2519 0 R] +>> endobj +2755 0 obj << +/Type /Pages +/Count 2 +/Parent 2836 0 R +/Kids [2636 0 R 2757 0 R] +>> endobj +2834 0 obj << +/Type /Pages +/Count 36 +/Parent 2837 0 R +/Kids [373 0 R 509 0 R 610 0 R 723 0 R 823 0 R 948 0 R] +>> endobj +2835 0 obj << +/Type /Pages +/Count 36 +/Parent 2837 0 R +/Kids [1068 0 R 1167 0 R 1263 0 R 1382 0 R 1496 0 R 1610 0 R] +>> endobj +2836 0 obj << +/Type /Pages +/Count 26 +/Parent 2837 0 R +/Kids [1731 0 R 1833 0 R 1918 0 R 2054 0 R 2755 0 R] +>> endobj +2837 0 obj << +/Type /Pages +/Count 98 +/Kids [2834 0 R 2835 0 R 2836 0 R] +>> endobj +2838 0 obj << +/Type /Outlines +/First 7 0 R +/Last 354 0 R +/Count 5 +>> endobj +354 0 obj << +/Title 355 0 R +/A 353 0 R +/Parent 2838 0 R +/Prev 351 0 R +>> endobj +351 0 obj << +/Title 352 0 R +/A 349 0 R +/Parent 2838 0 R +/Prev 79 0 R +/Next 354 0 R +>> endobj +347 0 obj << +/Title 348 0 R +/A 345 0 R +/Parent 327 0 R +/Prev 343 0 R +>> endobj +343 0 obj << +/Title 344 0 R +/A 341 0 R +/Parent 327 0 R +/Prev 339 0 R +/Next 347 0 R +>> endobj +339 0 obj << +/Title 340 0 R +/A 337 0 R +/Parent 327 0 R +/Prev 335 0 R +/Next 343 0 R +>> endobj +335 0 obj << +/Title 336 0 R +/A 333 0 R +/Parent 327 0 R +/Prev 331 0 R +/Next 339 0 R +>> endobj +331 0 obj << +/Title 332 0 R +/A 329 0 R +/Parent 327 0 R +/Next 335 0 R +>> endobj +327 0 obj << +/Title 328 0 R +/A 325 0 R +/Parent 79 0 R +/Prev 319 0 R +/First 331 0 R +/Last 347 0 R +/Count -5 +>> endobj +323 0 obj << +/Title 324 0 R +/A 321 0 R +/Parent 319 0 R +>> endobj +319 0 obj << +/Title 320 0 R +/A 317 0 R +/Parent 79 0 R +/Prev 311 0 R +/Next 327 0 R +/First 323 0 R +/Last 323 0 R +/Count -1 +>> endobj +315 0 obj << +/Title 316 0 R +/A 313 0 R +/Parent 311 0 R +>> endobj +311 0 obj << +/Title 312 0 R +/A 309 0 R +/Parent 79 0 R +/Prev 291 0 R +/Next 319 0 R +/First 315 0 R +/Last 315 0 R +/Count -1 +>> endobj +307 0 obj << +/Title 308 0 R +/A 305 0 R +/Parent 291 0 R +/Prev 303 0 R +>> endobj +303 0 obj << +/Title 304 0 R +/A 301 0 R +/Parent 291 0 R +/Prev 299 0 R +/Next 307 0 R +>> endobj +299 0 obj << +/Title 300 0 R +/A 297 0 R +/Parent 291 0 R +/Prev 295 0 R +/Next 303 0 R +>> endobj +295 0 obj << +/Title 296 0 R +/A 293 0 R +/Parent 291 0 R +/Next 299 0 R +>> endobj +291 0 obj << +/Title 292 0 R +/A 289 0 R +/Parent 79 0 R +/Prev 279 0 R +/Next 311 0 R +/First 295 0 R +/Last 307 0 R +/Count -4 +>> endobj +287 0 obj << +/Title 288 0 R +/A 285 0 R +/Parent 279 0 R +/Prev 283 0 R +>> endobj +283 0 obj << +/Title 284 0 R +/A 281 0 R +/Parent 279 0 R +/Next 287 0 R +>> endobj +279 0 obj << +/Title 280 0 R +/A 277 0 R +/Parent 79 0 R +/Prev 263 0 R +/Next 291 0 R +/First 283 0 R +/Last 287 0 R +/Count -2 +>> endobj +275 0 obj << +/Title 276 0 R +/A 273 0 R +/Parent 263 0 R +/Prev 271 0 R +>> endobj +271 0 obj << +/Title 272 0 R +/A 269 0 R +/Parent 263 0 R +/Prev 267 0 R +/Next 275 0 R +>> endobj +267 0 obj << +/Title 268 0 R +/A 265 0 R +/Parent 263 0 R +/Next 271 0 R +>> endobj +263 0 obj << +/Title 264 0 R +/A 261 0 R +/Parent 79 0 R +/Prev 219 0 R +/Next 279 0 R +/First 267 0 R +/Last 275 0 R +/Count -3 +>> endobj +259 0 obj << +/Title 260 0 R +/A 257 0 R +/Parent 219 0 R +/Prev 255 0 R +>> endobj +255 0 obj << +/Title 256 0 R +/A 253 0 R +/Parent 219 0 R +/Prev 251 0 R +/Next 259 0 R +>> endobj +251 0 obj << +/Title 252 0 R +/A 249 0 R +/Parent 219 0 R +/Prev 247 0 R +/Next 255 0 R +>> endobj +247 0 obj << +/Title 248 0 R +/A 245 0 R +/Parent 219 0 R +/Prev 243 0 R +/Next 251 0 R +>> endobj +243 0 obj << +/Title 244 0 R +/A 241 0 R +/Parent 219 0 R +/Prev 239 0 R +/Next 247 0 R +>> endobj +239 0 obj << +/Title 240 0 R +/A 237 0 R +/Parent 219 0 R +/Prev 235 0 R +/Next 243 0 R +>> endobj +235 0 obj << +/Title 236 0 R +/A 233 0 R +/Parent 219 0 R +/Prev 231 0 R +/Next 239 0 R +>> endobj +231 0 obj << +/Title 232 0 R +/A 229 0 R +/Parent 219 0 R +/Prev 227 0 R +/Next 235 0 R +>> endobj +227 0 obj << +/Title 228 0 R +/A 225 0 R +/Parent 219 0 R +/Prev 223 0 R +/Next 231 0 R +>> endobj +223 0 obj << +/Title 224 0 R +/A 221 0 R +/Parent 219 0 R +/Next 227 0 R +>> endobj +219 0 obj << +/Title 220 0 R +/A 217 0 R +/Parent 79 0 R +/Prev 139 0 R +/Next 263 0 R +/First 223 0 R +/Last 259 0 R +/Count -10 +>> endobj +215 0 obj << +/Title 216 0 R +/A 213 0 R +/Parent 139 0 R +/Prev 211 0 R +>> endobj +211 0 obj << +/Title 212 0 R +/A 209 0 R +/Parent 139 0 R +/Prev 207 0 R +/Next 215 0 R +>> endobj +207 0 obj << +/Title 208 0 R +/A 205 0 R +/Parent 139 0 R +/Prev 203 0 R +/Next 211 0 R +>> endobj +203 0 obj << +/Title 204 0 R +/A 201 0 R +/Parent 139 0 R +/Prev 199 0 R +/Next 207 0 R +>> endobj +199 0 obj << +/Title 200 0 R +/A 197 0 R +/Parent 139 0 R +/Prev 195 0 R +/Next 203 0 R +>> endobj +195 0 obj << +/Title 196 0 R +/A 193 0 R +/Parent 139 0 R +/Prev 191 0 R +/Next 199 0 R +>> endobj +191 0 obj << +/Title 192 0 R +/A 189 0 R +/Parent 139 0 R +/Prev 187 0 R +/Next 195 0 R +>> endobj +187 0 obj << +/Title 188 0 R +/A 185 0 R +/Parent 139 0 R +/Prev 183 0 R +/Next 191 0 R +>> endobj +183 0 obj << +/Title 184 0 R +/A 181 0 R +/Parent 139 0 R +/Prev 179 0 R +/Next 187 0 R +>> endobj +179 0 obj << +/Title 180 0 R +/A 177 0 R +/Parent 139 0 R +/Prev 175 0 R +/Next 183 0 R +>> endobj +175 0 obj << +/Title 176 0 R +/A 173 0 R +/Parent 139 0 R +/Prev 171 0 R +/Next 179 0 R +>> endobj +171 0 obj << +/Title 172 0 R +/A 169 0 R +/Parent 139 0 R +/Prev 167 0 R +/Next 175 0 R +>> endobj +167 0 obj << +/Title 168 0 R +/A 165 0 R +/Parent 139 0 R +/Prev 163 0 R +/Next 171 0 R +>> endobj +163 0 obj << +/Title 164 0 R +/A 161 0 R +/Parent 139 0 R +/Prev 159 0 R +/Next 167 0 R +>> endobj +159 0 obj << +/Title 160 0 R +/A 157 0 R +/Parent 139 0 R +/Prev 155 0 R +/Next 163 0 R +>> endobj +155 0 obj << +/Title 156 0 R +/A 153 0 R +/Parent 139 0 R +/Prev 151 0 R +/Next 159 0 R +>> endobj +151 0 obj << +/Title 152 0 R +/A 149 0 R +/Parent 139 0 R +/Prev 147 0 R +/Next 155 0 R +>> endobj +147 0 obj << +/Title 148 0 R +/A 145 0 R +/Parent 139 0 R +/Prev 143 0 R +/Next 151 0 R +>> endobj +143 0 obj << +/Title 144 0 R +/A 141 0 R +/Parent 139 0 R +/Next 147 0 R +>> endobj +139 0 obj << +/Title 140 0 R +/A 137 0 R +/Parent 79 0 R +/Prev 83 0 R +/Next 219 0 R +/First 143 0 R +/Last 215 0 R +/Count -19 +>> endobj +135 0 obj << +/Title 136 0 R +/A 133 0 R +/Parent 83 0 R +/Prev 131 0 R +>> endobj +131 0 obj << +/Title 132 0 R +/A 129 0 R +/Parent 83 0 R +/Prev 127 0 R +/Next 135 0 R +>> endobj +127 0 obj << +/Title 128 0 R +/A 125 0 R +/Parent 83 0 R +/Prev 123 0 R +/Next 131 0 R +>> endobj +123 0 obj << +/Title 124 0 R +/A 121 0 R +/Parent 83 0 R +/Prev 119 0 R +/Next 127 0 R +>> endobj +119 0 obj << +/Title 120 0 R +/A 117 0 R +/Parent 83 0 R +/Prev 115 0 R +/Next 123 0 R +>> endobj +115 0 obj << +/Title 116 0 R +/A 113 0 R +/Parent 83 0 R +/Prev 111 0 R +/Next 119 0 R +>> endobj +111 0 obj << +/Title 112 0 R +/A 109 0 R +/Parent 83 0 R +/Prev 107 0 R +/Next 115 0 R +>> endobj +107 0 obj << +/Title 108 0 R +/A 105 0 R +/Parent 83 0 R +/Prev 103 0 R +/Next 111 0 R +>> endobj +103 0 obj << +/Title 104 0 R +/A 101 0 R +/Parent 83 0 R +/Prev 99 0 R +/Next 107 0 R +>> endobj +99 0 obj << +/Title 100 0 R +/A 97 0 R +/Parent 83 0 R +/Prev 95 0 R +/Next 103 0 R +>> endobj +95 0 obj << +/Title 96 0 R +/A 93 0 R +/Parent 83 0 R +/Prev 91 0 R +/Next 99 0 R +>> endobj +91 0 obj << +/Title 92 0 R +/A 89 0 R +/Parent 83 0 R +/Prev 87 0 R +/Next 95 0 R +>> endobj +87 0 obj << +/Title 88 0 R +/A 85 0 R +/Parent 83 0 R +/Next 91 0 R +>> endobj +83 0 obj << +/Title 84 0 R +/A 81 0 R +/Parent 79 0 R +/Next 139 0 R +/First 87 0 R +/Last 135 0 R +/Count -13 +>> endobj +79 0 obj << +/Title 80 0 R +/A 77 0 R +/Parent 2838 0 R +/Prev 27 0 R +/Next 351 0 R +/First 83 0 R +/Last 327 0 R +/Count -9 +>> endobj +75 0 obj << +/Title 76 0 R +/A 73 0 R +/Parent 27 0 R +/Prev 71 0 R +>> endobj +71 0 obj << +/Title 72 0 R +/A 69 0 R +/Parent 27 0 R +/Prev 59 0 R +/Next 75 0 R +>> endobj +67 0 obj << +/Title 68 0 R +/A 65 0 R +/Parent 59 0 R +/Prev 63 0 R +>> endobj +63 0 obj << +/Title 64 0 R +/A 61 0 R +/Parent 59 0 R +/Next 67 0 R +>> endobj +59 0 obj << +/Title 60 0 R +/A 57 0 R +/Parent 27 0 R +/Prev 39 0 R +/Next 71 0 R +/First 63 0 R +/Last 67 0 R +/Count -2 +>> endobj +55 0 obj << +/Title 56 0 R +/A 53 0 R +/Parent 39 0 R +/Prev 51 0 R +>> endobj +51 0 obj << +/Title 52 0 R +/A 49 0 R +/Parent 39 0 R +/Prev 47 0 R +/Next 55 0 R +>> endobj +47 0 obj << +/Title 48 0 R +/A 45 0 R +/Parent 39 0 R +/Prev 43 0 R +/Next 51 0 R +>> endobj +43 0 obj << +/Title 44 0 R +/A 41 0 R +/Parent 39 0 R +/Next 47 0 R +>> endobj +39 0 obj << +/Title 40 0 R +/A 37 0 R +/Parent 27 0 R +/Prev 35 0 R +/Next 59 0 R +/First 43 0 R +/Last 55 0 R +/Count -4 +>> endobj +35 0 obj << +/Title 36 0 R +/A 33 0 R +/Parent 27 0 R +/Prev 31 0 R +/Next 39 0 R +>> endobj +31 0 obj << +/Title 32 0 R +/A 29 0 R +/Parent 27 0 R +/Next 35 0 R +>> endobj +27 0 obj << +/Title 28 0 R +/A 25 0 R +/Parent 2838 0 R +/Prev 7 0 R +/Next 79 0 R +/First 31 0 R +/Last 75 0 R +/Count -6 +>> endobj +23 0 obj << +/Title 24 0 R +/A 21 0 R +/Parent 7 0 R +/Prev 19 0 R +>> endobj +19 0 obj << +/Title 20 0 R +/A 17 0 R +/Parent 7 0 R +/Prev 15 0 R +/Next 23 0 R +>> endobj +15 0 obj << +/Title 16 0 R +/A 13 0 R +/Parent 7 0 R +/Prev 11 0 R +/Next 19 0 R +>> endobj +11 0 obj << +/Title 12 0 R +/A 9 0 R +/Parent 7 0 R +/Next 15 0 R +>> endobj +7 0 obj << +/Title 8 0 R +/A 5 0 R +/Parent 2838 0 R +/Next 27 0 R +/First 11 0 R +/Last 23 0 R +/Count -4 +>> endobj +2839 0 obj << +/Names [(Doc-Start) 361 0 R (Item.1) 517 0 R (Item.10) 536 0 R (Item.11) 537 0 R (Item.12) 538 0 R (Item.13) 539 0 R (Item.2) 521 0 R (Item.3) 522 0 R (Item.4) 523 0 R (Item.5) 524 0 R (Item.6) 525 0 R (Item.7) 533 0 R (Item.8) 534 0 R (Item.9) 535 0 R (addthemenotification) 730 0 R (aluminumtheme) 609 0 R (appendix.A) 350 0 R (changes) 1901 0 R (chapter*.1) 381 0 R (chapter.1) 6 0 R (chapter.2) 26 0 R (chapter.3) 78 0 R (contacts) 500 0 R (converter) 624 0 R (convrules) 625 0 R (convusing) 629 0 R (currenttheme) 735 0 R (defaulttheme) 565 0 R (faq) 645 0 R (features) 488 0 R (geteffectivecolor) 731 0 R (gettingstarted) 540 0 R (installation) 513 0 R (introduction) 487 0 R (knownissues) 635 0 R (license) 490 0 R (officexptheme) 573 0 R (page.1) 360 0 R (page.10) 623 0 R (page.11) 634 0 R (page.12) 644 0 R (page.13) 653 0 R (page.14) 659 0 R (page.15) 695 0 R (page.16) 739 0 R (page.17) 748 0 R (page.18) 766 0 R (page.19) 775 0 R (page.2) 377 0 R (page.20) 793 0 R (page.21) 817 0 R (page.22) 843 0 R (page.23) 856 0 R (page.24) 875 0 R (page.25) 891 0 R (page.26) 903 0 R (page.27) 936 0 R (page.28) 974 0 R (page.29) 996 0 R (page.3) 420 0 R (page.30) 1008 0 R (page.31) 1027 0 R (page.32) 1043 0 R (page.33) 1057 0 R (page.34) 1072 0 R (page.35) 1087 0 R (page.36) 1103 0 R (page.37) 1117 0 R (page.38) 1137 0 R (page.39) 1152 0 R (page.4) 461 0 R (page.40) 1171 0 R (page.41) 1189 0 R (page.42) 1216 0 R (page.43) 1234 0 R (page.44) 1244 0 R (page.45) 1257 0 R (page.46) 1275 0 R (page.47) 1305 0 R (page.48) 1338 0 R (page.49) 1352 0 R (page.5) 532 0 R (page.50) 1361 0 R (page.51) 1371 0 R (page.52) 1388 0 R (page.53) 1414 0 R (page.54) 1432 0 R (page.55) 1449 0 R (page.56) 1479 0 R (page.57) 1489 0 R (page.58) 1509 0 R (page.59) 1529 0 R (page.6) 551 0 R (page.60) 1557 0 R (page.61) 1573 0 R (page.62) 1587 0 R (page.63) 1601 0 R (page.64) 1632 0 R (page.65) 1658 0 R (page.66) 1672 0 R (page.67) 1689 0 R (page.68) 1700 0 R (page.69) 1719 0 R (page.7) 582 0 R (page.70) 1735 0 R (page.71) 1747 0 R (page.72) 1759 0 R (page.73) 1776 0 R (page.74) 1791 0 R (page.75) 1826 0 R (page.76) 1845 0 R (page.77) 1863 0 R (page.78) 1876 0 R (page.79) 1891 0 R (page.8) 598 0 R (page.80) 1913 0 R (page.81) 1917 0 R (page.82) 1922 0 R (page.83) 1926 0 R (page.84) 1930 0 R (page.85) 1934 0 R (page.86) 1938 0 R (page.87) 1942 0 R (page.88) 2058 0 R (page.89) 2173 0 R (page.9) 608 0 R (page.90) 2292 0 R (page.91) 2403 0 R (page.92) 2521 0 R (page.93) 2638 0 R (page.94) 2759 0 R (reference) 655 0 R (registration) 496 0 R (removethemenotification) 732 0 R (section*.13) 58 0 R (section*.16) 70 0 R (section*.17) 74 0 R (section*.18) 82 0 R (section*.2) 10 0 R (section*.3) 14 0 R (section*.4) 18 0 R (section*.40) 138 0 R (section*.5) 22 0 R (section*.6) 30 0 R (section*.61) 218 0 R (section*.7) 34 0 R (section*.72) 262 0 R (section*.76) 278 0 R (section*.79) 290 0 R (section*.8) 38 0 R (section*.84) 310 0 R (section*.86) 318 0 R (section*.89) 326 0 R (stripestheme) 574 0 R (subsection*.10) 46 0 R (subsection*.11) 50 0 R (subsection*.12) 54 0 R (subsection*.14) 62 0 R (subsection*.15) 66 0 R (subsection*.19) 86 0 R (subsection*.20) 90 0 R (subsection*.21) 94 0 R (subsection*.22) 98 0 R (subsection*.23) 102 0 R (subsection*.24) 106 0 R (subsection*.25) 110 0 R (subsection*.26) 114 0 R (subsection*.27) 118 0 R (subsection*.28) 122 0 R (subsection*.29) 126 0 R (subsection*.35) 130 0 R (subsection*.38) 134 0 R (subsection*.41) 142 0 R (subsection*.42) 146 0 R (subsection*.43) 150 0 R (subsection*.44) 154 0 R (subsection*.45) 158 0 R (subsection*.46) 162 0 R (subsection*.47) 166 0 R (subsection*.48) 170 0 R (subsection*.49) 174 0 R (subsection*.50) 178 0 R (subsection*.51) 182 0 R (subsection*.52) 186 0 R (subsection*.53) 190 0 R (subsection*.54) 194 0 R (subsection*.55) 198 0 R (subsection*.56) 202 0 R (subsection*.57) 206 0 R (subsection*.58) 210 0 R (subsection*.59) 214 0 R (subsection*.62) 222 0 R (subsection*.63) 226 0 R (subsection*.64) 230 0 R (subsection*.65) 234 0 R (subsection*.66) 238 0 R (subsection*.67) 242 0 R (subsection*.68) 246 0 R (subsection*.69) 250 0 R (subsection*.70) 254 0 R (subsection*.71) 258 0 R (subsection*.73) 266 0 R (subsection*.74) 270 0 R (subsection*.75) 274 0 R (subsection*.77) 282 0 R (subsection*.78) 286 0 R (subsection*.80) 294 0 R (subsection*.81) 298 0 R (subsection*.82) 302 0 R (subsection*.83) 306 0 R (subsection*.85) 314 0 R (subsection*.87) 322 0 R (subsection*.9) 42 0 R (subsection*.90) 330 0 R (subsection*.91) 334 0 R (subsection*.92) 338 0 R (subsection*.93) 342 0 R (subsection*.94) 346 0 R (subsubsection*.30) 893 0 R (subsubsection*.31) 895 0 R (subsubsection*.32) 896 0 R (subsubsection*.33) 898 0 R (subsubsection*.34) 899 0 R (subsubsection*.36) 904 0 R (subsubsection*.37) 905 0 R (subsubsection*.39) 906 0 R (subsubsection*.60) 1278 0 R (subsubsection*.88) 1785 0 R (tbx) 669 0 R (tbxcurrenttheme) 575 0 R (tbxdkpanels) 680 0 R (tbxextitems) 681 0 R (tbxlists) 682 0 R (tbxmdi) 683 0 R (tbxsettheme) 576 0 R (tbxstatusbars) 684 0 R (tbxswitcher) 685 0 R (tbxthemes) 686 0 R (tbxtoolpals) 687 0 R (tfontsettings) 688 0 R (tfontsettings.bold) 710 0 R (tfontsettings.color) 721 0 R (tfontsettings.italic) 722 0 R (tfontsettings.name) 740 0 R (tfontsettings.size) 741 0 R (tfontsettings.strikeout) 742 0 R (tfontsettings.underline) 743 0 R (themes) 557 0 R (ttbxalignmentpanel) 919 0 R (ttbxalignmntpnl.margins) 946 0 R (ttbxbutton) 920 0 R (ttbxcheckbox) 921 0 R (ttbxcoloritem) 1290 0 R (ttbxcoloritem.color) 1308 0 R (ttbxcolorpalett.color) 1802 0 R (ttbxcolorpalett.colorset) 1803 0 R (ttbxcolorpalett.colortostring) 1828 0 R (ttbxcolorpalett.create) 1829 0 R (ttbxcolorpalett.findcell) 1831 0 R (ttbxcolorpalette) 1797 0 R (ttbxcolorset) 1819 0 R (ttbxcomboboxitem) 1291 0 R (ttbxcomboboxitm.autocomplete) 1339 0 R (ttbxcomboboxitm.create) 1353 0 R (ttbxcomboboxitm.itemindex) 1340 0 R (ttbxcomboboxitm.maxlistwidth) 1341 0 R (ttbxcomboboxitm.maxvisibleitems) 1343 0 R (ttbxcomboboxitm.minlistwidth) 1344 0 R (ttbxcomboboxitm.onadjustimagndx) 1334 0 R (ttbxcomboboxitm.onclearitem) 1355 0 R (ttbxcomboboxitm.ondrawitem) 1356 0 R (ttbxcomboboxitm.onitemclick) 1357 0 R (ttbxcomboboxitm.onmeasureheight) 1362 0 R (ttbxcomboboxitm.onmeasurewidth) 1363 0 R (ttbxcomboboxitm.showlistimages) 1333 0 R (ttbxcomboboxitm.strings) 1347 0 R (ttbxcontrlmrgns.bottom) 999 0 R (ttbxcontrlmrgns.left) 1000 0 R (ttbxcontrlmrgns.right) 1001 0 R (ttbxcontrlmrgns.top) 1002 0 R (ttbxcontrolmargins) 922 0 R (ttbxcstmpgscrll.autorange) 1091 0 R (ttbxcstmpgscrll.autoscroll) 1093 0 R (ttbxcstmpgscrll.buttonsize) 1094 0 R (ttbxcstmpgscrll.create) 1105 0 R (ttbxcstmpgscrll.disableautorang) 1106 0 R (ttbxcstmpgscrll.enableautorange) 1108 0 R (ttbxcstmpgscrll.margin) 1096 0 R (ttbxcstmpgscrll.orientation) 1097 0 R (ttbxcstmpgscrll.position) 1098 0 R (ttbxcstmpgscrll.range) 1099 0 R (ttbxcstmpgscrll.scrolltocenter) 1110 0 R (ttbxcstmspndttm.asinteger) 1376 0 R (ttbxcstmspndttm.create) 1423 0 R (ttbxcstmspndttm.decimal) 1379 0 R (ttbxcstmspndttm.increment) 1380 0 R (ttbxcstmspndttm.maxvalue) 1381 0 R (ttbxcstmspndttm.minvalue) 1391 0 R (ttbxcstmspndttm.onconvert) 1433 0 R (ttbxcstmspndttm.onstep) 1439 0 R (ttbxcstmspndttm.ontexttovalue) 1440 0 R (ttbxcstmspndttm.onvaluechange) 1442 0 R (ttbxcstmspndttm.onvaluetotext) 1443 0 R (ttbxcstmspndttm.postfix) 1394 0 R (ttbxcstmspndttm.prefix) 1398 0 R (ttbxcstmspndttm.snap) 1401 0 R (ttbxcstmspndttm.spaceafterprefx) 1409 0 R (ttbxcstmspndttm.spacebeforpstfx) 1410 0 R (ttbxcstmspndttm.value) 1383 0 R (ttbxcstmspndttm.valuetype) 1384 0 R (ttbxcustmchckbx.allowgrayed) 1049 0 R (ttbxcustmchckbx.checked) 1050 0 R (ttbxcustmchckbx.onchange) 1058 0 R (ttbxcustmchckbx.state) 1053 0 R (ttbxcustmrdbttn.checked) 1118 0 R (ttbxcustmrdbttn.groupindex) 1120 0 R (ttbxcustmrdbttn.onchange) 1122 0 R (ttbxcustmsttsbr.fixalign) 1676 0 R (ttbxcustmsttsbr.getpanelat) 1690 0 R (ttbxcustmsttsbr.getpanelrect) 1691 0 R (ttbxcustmsttsbr.images) 1677 0 R (ttbxcustmsttsbr.onadjstcntntrct) 1692 0 R (ttbxcustmsttsbr.onadjustfont) 1693 0 R (ttbxcustmsttsbr.onpanelclick) 1694 0 R (ttbxcustmsttsbr.onpaneldblclick) 1695 0 R (ttbxcustmsttsbr.panels) 1679 0 R (ttbxcustmsttsbr.simplepanel) 1682 0 R (ttbxcustmsttsbr.simpletext) 1683 0 R (ttbxcustmsttsbr.sizegrip) 1684 0 R (ttbxcustmsttsbr.usesystemfont) 1685 0 R (ttbxcustmtlpltt.colcount) 1868 0 R (ttbxcustmtlpltt.create) 1878 0 R (ttbxcustmtlpltt.oncalcimagesize) 1881 0 R (ttbxcustmtlpltt.oncellclick) 1882 0 R (ttbxcustmtlpltt.onchange) 1885 0 R (ttbxcustmtlpltt.ondrawcellimage) 1872 0 R (ttbxcustmtlpltt.ongetcellhint) 1894 0 R (ttbxcustmtlpltt.ongetcellvisibl) 1895 0 R (ttbxcustmtlpltt.paletteoptions) 1869 0 R (ttbxcustmtlpltt.rowcount) 1871 0 R (ttbxcustmtlpltt.selectedcell) 1877 0 R (ttbxcustombuttn.alignment) 1011 0 R (ttbxcustombuttn.allowallunchckd) 1012 0 R (ttbxcustombuttn.bordersize) 1013 0 R (ttbxcustombuttn.buttonstyle) 1014 0 R (ttbxcustombuttn.checked) 1015 0 R (ttbxcustombuttn.dropdowncombo) 1017 0 R (ttbxcustombuttn.dropdownmenu) 1020 0 R (ttbxcustombuttn.glyphspacing) 1022 0 R (ttbxcustombuttn.groupindex) 1023 0 R (ttbxcustombuttn.imageindex) 1028 0 R (ttbxcustombuttn.images) 1029 0 R (ttbxcustombuttn.layout) 1031 0 R (ttbxcustombuttn.ondropdown) 1044 0 R (ttbxcustombuttn.repeatdelay) 1032 0 R (ttbxcustombuttn.repeating) 1034 0 R (ttbxcustombuttn.repeatinterval) 1038 0 R (ttbxcustombutton) 923 0 R (ttbxcustomcheckbox) 924 0 R (ttbxcustomclrst.colcount) 1853 0 R (ttbxcustomclrst.getcolor) 1855 0 R (ttbxcustomclrst.getname) 1858 0 R (ttbxcustomclrst.ongetcolorinfo) 1859 0 R (ttbxcustomclrst.rowcount) 1854 0 R (ttbxcustomcolorset) 1820 0 R (ttbxcustomdropdownitem) 1292 0 R (ttbxcustomitem) 689 0 R (ttbxcustomitem.alwaysselctfrst) 749 0 R (ttbxcustomitem.fontsettings) 750 0 R (ttbxcustomitem.layout) 753 0 R (ttbxcustomitem.minheight) 754 0 R (ttbxcustomitem.minwidth) 755 0 R (ttbxcustomitem.onadjustfont) 760 0 R (ttbxcustomitem.ondrawimage) 769 0 R (ttbxcustomitem.stretch) 756 0 R (ttbxcustomitem.toolboxpopup) 757 0 R (ttbxcustomlabel) 925 0 R (ttbxcustomlabel.create) 1074 0 R (ttbxcustomlabel.focuscontrol) 1064 0 R (ttbxcustomlabel.underline) 1065 0 R (ttbxcustomlabel.underlinecolor) 1067 0 R (ttbxcustomlink) 926 0 R (ttbxcustomlink.imageindex) 1080 0 R (ttbxcustomlink.images) 1082 0 R (ttbxcustomlist) 1565 0 R (ttbxcustomlist.create) 1582 0 R (ttbxcustomlist.itemindex) 1576 0 R (ttbxcustomlist.makevisible) 1583 0 R (ttbxcustomlist.maxvisibleitems) 1577 0 R (ttbxcustomlist.maxwidth) 1578 0 R (ttbxcustomlist.minwidth) 1580 0 R (ttbxcustomlist.onadjustimagndx) 1569 0 R (ttbxcustomlist.onchange) 1589 0 R (ttbxcustomlist.onclearitem) 1590 0 R (ttbxcustomlist.ondrawitem) 1592 0 R (ttbxcustomlist.onmeasureheight) 1594 0 R (ttbxcustomlist.onmeasurewidth) 1595 0 R (ttbxcustomlist.showimages) 1348 0 R (ttbxcustompagescroller) 927 0 R (ttbxcustomradiobutton) 928 0 R (ttbxcustomspinedititem) 1293 0 R (ttbxcustomstatusbar) 1665 0 R (ttbxcustomtoolpalette) 1821 0 R (ttbxdock) 690 0 R (ttbxdock.useparntbckgrnd) 777 0 R (ttbxdockablepanel) 929 0 R (ttbxdockablepnl.bordersize) 1124 0 R (ttbxdockablepnl.captionrotation) 1125 0 R (ttbxdockablepnl.create) 1175 0 R (ttbxdockablepnl.dockedheight) 1138 0 R (ttbxdockablepnl.dockedwidth) 1139 0 R (ttbxdockablepnl.effectivecolor) 1140 0 R (ttbxdockablepnl.floatingheight) 1141 0 R (ttbxdockablepnl.floatingwidth) 1142 0 R (ttbxdockablepnl.maxclientheight) 1143 0 R (ttbxdockablepnl.maxclientwidth) 1147 0 R (ttbxdockablepnl.minclientheight) 1148 0 R (ttbxdockablepnl.minclientwidth) 1158 0 R (ttbxdockablepnl.ondockedresizng) 1190 0 R (ttbxdockablepnl.showcptnwhndckd) 1161 0 R (ttbxdockablepnl.smoothdockedrsz) 1162 0 R (ttbxdockablepnl.snapdistance) 1163 0 R (ttbxdockablepnl.splitheight) 1164 0 R (ttbxdockablepnl.splitwidth) 1166 0 R (ttbxdockablepnl.supporteddocks) 1173 0 R (ttbxdockablepnl.updatechildclrs) 1182 0 R (ttbxdropdownitem) 1294 0 R (ttbxedititem) 1295 0 R (ttbxedititem.alignment) 1428 0 R (ttbxedititem.fontsettings) 1480 0 R (ttbxedititem.onchange) 1490 0 R (ttbxedititem.passwordchar) 1482 0 R (ttbxedititem.readonly) 1483 0 R (ttbxedititem.showimage) 1332 0 R (ttbxedititem.startediting) 1484 0 R (ttbxitem) 691 0 R (ttbxitemlayout) 1784 0 R (ttbxitemtransparency) 733 0 R (ttbxlabel) 930 0 R (ttbxlabelitem) 1296 0 R (ttbxlabelitem.caption) 1491 0 R (ttbxlabelitem.create) 1510 0 R (ttbxlabelitem.fontsettings) 1492 0 R (ttbxlabelitem.margin) 1494 0 R (ttbxlabelitem.onadjustfont) 1513 0 R (ttbxlabelitem.orientation) 1495 0 R (ttbxlabelitem.updatecaption) 1511 0 R (ttbxlink) 963 0 R (ttbxmdihandler) 1636 0 R (ttbxmdiwindowitem) 1638 0 R (ttbxmrulist) 1297 0 R (ttbxmrulist.keyshift) 1515 0 R (ttbxmrulistitem) 1298 0 R (ttbxmrulistitem.create) 1535 0 R (ttbxmrulistitem.mrulist) 1533 0 R (ttbxmultidock) 964 0 R (ttbxmultidock.resizevisblpnls) 1222 0 R (ttbxpagescroller) 965 0 R (ttbxpanelobject) 966 0 R (ttbxpanelobject.makevisible) 1247 0 R (ttbxpanelobject.onmouseenter) 1249 0 R (ttbxpanelobject.onmouseleave) 1251 0 R (ttbxpanelobject.smartfocus) 1245 0 R (ttbxpanelobject.spaceasclick) 1246 0 R (ttbxpopupmenu) 724 0 R (ttbxpopupmenu.toolboxpopup) 794 0 R (ttbxradiobutton) 967 0 R (ttbxresizingstage) 969 0 R (ttbxseparatoritem) 725 0 R (ttbxseparatortm.create) 818 0 R (ttbxseparatortm.size) 795 0 R (ttbxspinedititem) 1299 0 R (ttbxstatusbar) 1666 0 R (ttbxstatuspanel) 1667 0 R (ttbxstatuspanel.alignment) 1706 0 R (ttbxstatuspanel.caption) 1707 0 R (ttbxstatuspanel.control) 1720 0 R (ttbxstatuspanel.enabled) 1721 0 R (ttbxstatuspanel.fontsettings) 1722 0 R (ttbxstatuspanel.framed) 1724 0 R (ttbxstatuspanel.hint) 1725 0 R (ttbxstatuspanel.imageindex) 1726 0 R (ttbxstatuspanel.maxsize) 1728 0 R (ttbxstatuspanel.size) 1730 0 R (ttbxstatuspanel.stretchpriority) 1737 0 R (ttbxstatuspanel.tag) 1739 0 R (ttbxstatuspanel.texttruncation) 1740 0 R (ttbxstatuspanel.viewpriority) 1741 0 R (ttbxstatuspanel.visible) 1743 0 R (ttbxstatuspanels) 1668 0 R (ttbxstatuspanls.findpanel) 1754 0 R (ttbxstatuspanls.items) 1751 0 R (ttbxstatuspanls.statusbar) 1752 0 R (ttbxstringlist) 761 0 R (ttbxstringlist.strings) 1606 0 R (ttbxsubmenuitem) 726 0 R (ttbxsubmenuitem.create) 822 0 R (ttbxsubmenuitem.dropdowncombo) 821 0 R (ttbxswitcher) 571 0 R (ttbxswitcher.enablexpstyles) 1763 0 R (ttbxswitcher.flatmenustyle) 1764 0 R (ttbxswitcher.onthemechange) 1782 0 R (ttbxswitcher.theme) 572 0 R (ttbxswitcher.themecount) 1779 0 R (ttbxswitcher.themes) 1780 0 R (ttbxtextobject) 968 0 R (ttbxtextobject.alignment) 1262 0 R (ttbxtextobject.margins) 992 0 R (ttbxtextobject.showaccelchar) 1276 0 R (ttbxtextobject.wrapping) 1277 0 R (ttbxtoolbar) 727 0 R (ttbxtoolbar.create) 849 0 R (ttbxtoolbar.effectivecolor) 844 0 R (ttbxtoolbar.embedded) 850 0 R (ttbxtoolbar.itemtransparncy) 846 0 R (ttbxtoolbar.snapdistance) 848 0 R (ttbxtoolbar.updatechildclrs) 851 0 R (ttbxtoolpalette) 762 0 R (ttbxtoolwindow) 728 0 R (ttbxtoolwindow.create) 876 0 R (ttbxtoolwindow.effectivecolor) 859 0 R (ttbxtoolwindow.snapdistance) 861 0 R (ttbxtoolwindow.updatechildclrs) 870 0 R (ttbxundolist) 1568 0 R (ttbxvisibilitytoggleitem) 729 0 R (ttbxvsbltytgglt.control) 892 0 R (ttristate) 734 0 R (usage) 508 0 R] +/Limits [(Doc-Start) (usage)] +>> endobj +2840 0 obj << +/Kids [2839 0 R] +>> endobj +2841 0 obj << +/Dests 2840 0 R +>> endobj +2842 0 obj << +/Type /Catalog +/Pages 2837 0 R +/Outlines 2838 0 R +/Names 2841 0 R +/PageMode /UseOutlines +/OpenAction 356 0 R +>> endobj +2843 0 obj << +/Author(Alex A. Denisov)/Title(TBX Package)/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfeTeX-1.20a)/Keywords() +/CreationDate (D:20040529174004-04'00') +>> endobj +xref +0 2844 +0000000001 65535 f +0000000002 00000 f +0000000003 00000 f +0000000004 00000 f +0000000362 00000 f +0000000009 00000 n +0000032462 00000 n +0000940567 00000 n +0000000054 00000 n +0000000084 00000 n +0000032584 00000 n +0000940495 00000 n +0000000130 00000 n +0000000157 00000 n +0000036972 00000 n +0000940409 00000 n +0000000204 00000 n +0000000230 00000 n +0000037095 00000 n +0000940323 00000 n +0000000277 00000 n +0000000322 00000 n +0000039205 00000 n +0000940250 00000 n +0000000369 00000 n +0000000396 00000 n +0000042238 00000 n +0000940125 00000 n +0000000442 00000 n +0000000466 00000 n +0000042361 00000 n +0000940051 00000 n +0000000513 00000 n +0000000554 00000 n +0000052820 00000 n +0000939964 00000 n +0000000601 00000 n +0000000635 00000 n +0000066629 00000 n +0000939840 00000 n +0000000682 00000 n +0000000711 00000 n +0000117882 00000 n +0000939766 00000 n +0000000761 00000 n +0000000793 00000 n +0000146315 00000 n +0000939679 00000 n +0000000844 00000 n +0000000878 00000 n +0000225780 00000 n +0000939592 00000 n +0000000929 00000 n +0000000961 00000 n +0000225903 00000 n +0000939518 00000 n +0000001012 00000 n +0000001045 00000 n +0000229187 00000 n +0000939394 00000 n +0000001093 00000 n +0000001157 00000 n +0000229310 00000 n +0000939320 00000 n +0000001208 00000 n +0000001243 00000 n +0000252406 00000 n +0000939246 00000 n +0000001294 00000 n +0000001332 00000 n +0000256417 00000 n +0000939159 00000 n +0000001380 00000 n +0000001411 00000 n +0000256540 00000 n +0000939085 00000 n +0000001459 00000 n +0000001504 00000 n +0000262479 00000 n +0000938957 00000 n +0000001550 00000 n +0000001578 00000 n +0000262602 00000 n +0000938843 00000 n +0000001626 00000 n +0000001657 00000 n +0000267783 00000 n +0000938769 00000 n +0000001708 00000 n +0000001746 00000 n +0000270782 00000 n +0000938682 00000 n +0000001797 00000 n +0000001836 00000 n +0000277690 00000 n +0000938595 00000 n +0000001887 00000 n +0000001920 00000 n +0000283503 00000 n +0000938506 00000 n +0000001971 00000 n +0000002005 00000 n +0000291823 00000 n +0000938415 00000 n +0000002057 00000 n +0000002096 00000 n +0000292009 00000 n +0000938323 00000 n +0000002148 00000 n +0000002191 00000 n +0000300553 00000 n +0000938231 00000 n +0000002243 00000 n +0000002284 00000 n +0000300801 00000 n +0000938139 00000 n +0000002336 00000 n +0000002373 00000 n +0000310610 00000 n +0000938047 00000 n +0000002425 00000 n +0000002465 00000 n +0000317015 00000 n +0000937955 00000 n +0000002517 00000 n +0000002567 00000 n +0000319807 00000 n +0000937863 00000 n +0000002619 00000 n +0000002647 00000 n +0000324975 00000 n +0000937771 00000 n +0000002699 00000 n +0000002724 00000 n +0000325285 00000 n +0000937693 00000 n +0000002776 00000 n +0000002805 00000 n +0000325532 00000 n +0000937562 00000 n +0000002854 00000 n +0000002894 00000 n +0000340738 00000 n +0000937483 00000 n +0000002946 00000 n +0000002990 00000 n +0000340924 00000 n +0000937390 00000 n +0000003042 00000 n +0000003078 00000 n +0000347858 00000 n +0000937297 00000 n +0000003130 00000 n +0000003168 00000 n +0000350432 00000 n +0000937204 00000 n +0000003220 00000 n +0000003264 00000 n +0000350807 00000 n +0000937111 00000 n +0000003316 00000 n +0000003358 00000 n +0000361741 00000 n +0000937018 00000 n +0000003410 00000 n +0000003454 00000 n +0000365088 00000 n +0000936925 00000 n +0000003506 00000 n +0000003547 00000 n +0000368949 00000 n +0000936832 00000 n +0000003599 00000 n +0000003639 00000 n +0000372573 00000 n +0000936739 00000 n +0000003691 00000 n +0000003739 00000 n +0000376531 00000 n +0000936646 00000 n +0000003791 00000 n +0000003838 00000 n +0000382772 00000 n +0000936553 00000 n +0000003890 00000 n +0000003933 00000 n +0000405470 00000 n +0000936460 00000 n +0000003985 00000 n +0000004020 00000 n +0000405596 00000 n +0000936367 00000 n +0000004072 00000 n +0000004106 00000 n +0000411600 00000 n +0000936274 00000 n +0000004158 00000 n +0000004197 00000 n +0000411790 00000 n +0000936181 00000 n +0000004249 00000 n +0000004291 00000 n +0000416006 00000 n +0000936088 00000 n +0000004343 00000 n +0000004384 00000 n +0000425035 00000 n +0000935995 00000 n +0000004436 00000 n +0000004477 00000 n +0000425160 00000 n +0000935902 00000 n +0000004529 00000 n +0000004569 00000 n +0000430332 00000 n +0000935823 00000 n +0000004621 00000 n +0000004646 00000 n +0000430585 00000 n +0000935691 00000 n +0000004695 00000 n +0000004735 00000 n +0000441028 00000 n +0000935612 00000 n +0000004787 00000 n +0000004826 00000 n +0000441219 00000 n +0000935519 00000 n +0000004878 00000 n +0000004920 00000 n +0000450797 00000 n +0000935426 00000 n +0000004972 00000 n +0000005020 00000 n +0000453955 00000 n +0000935333 00000 n +0000005072 00000 n +0000005120 00000 n +0000479643 00000 n +0000935240 00000 n +0000005172 00000 n +0000005214 00000 n +0000479770 00000 n +0000935147 00000 n +0000005266 00000 n +0000005304 00000 n +0000488451 00000 n +0000935054 00000 n +0000005356 00000 n +0000005395 00000 n +0000495022 00000 n +0000934961 00000 n +0000005447 00000 n +0000005484 00000 n +0000504760 00000 n +0000934868 00000 n +0000005536 00000 n +0000005577 00000 n +0000505014 00000 n +0000934789 00000 n +0000005629 00000 n +0000005671 00000 n +0000510272 00000 n +0000934658 00000 n +0000005720 00000 n +0000005757 00000 n +0000510398 00000 n +0000934579 00000 n +0000005809 00000 n +0000005849 00000 n +0000527335 00000 n +0000934486 00000 n +0000005901 00000 n +0000005941 00000 n +0000527526 00000 n +0000934407 00000 n +0000005993 00000 n +0000006031 00000 n +0000536753 00000 n +0000934276 00000 n +0000006080 00000 n +0000006115 00000 n +0000536880 00000 n +0000934197 00000 n +0000006167 00000 n +0000006207 00000 n +0000537006 00000 n +0000934118 00000 n +0000006259 00000 n +0000006302 00000 n +0000540173 00000 n +0000933987 00000 n +0000006351 00000 n +0000006393 00000 n +0000540299 00000 n +0000933908 00000 n +0000006445 00000 n +0000006490 00000 n +0000552639 00000 n +0000933815 00000 n +0000006542 00000 n +0000006581 00000 n +0000552766 00000 n +0000933722 00000 n +0000006633 00000 n +0000006674 00000 n +0000562524 00000 n +0000933643 00000 n +0000006726 00000 n +0000006768 00000 n +0000569538 00000 n +0000933512 00000 n +0000006817 00000 n +0000006857 00000 n +0000569664 00000 n +0000933447 00000 n +0000006909 00000 n +0000006947 00000 n +0000573313 00000 n +0000933316 00000 n +0000006996 00000 n +0000007034 00000 n +0000573376 00000 n +0000933251 00000 n +0000007086 00000 n +0000007111 00000 n +0000584987 00000 n +0000933134 00000 n +0000007160 00000 n +0000007200 00000 n +0000585114 00000 n +0000933055 00000 n +0000007252 00000 n +0000007294 00000 n +0000592284 00000 n +0000932962 00000 n +0000007346 00000 n +0000007384 00000 n +0000596393 00000 n +0000932869 00000 n +0000007436 00000 n +0000007480 00000 n +0000600080 00000 n +0000932776 00000 n +0000007532 00000 n +0000007579 00000 n +0000612062 00000 n +0000932697 00000 n +0000007631 00000 n +0000007672 00000 n +0000614333 00000 n +0000932604 00000 n +0000007720 00000 n +0000007747 00000 n +0000932524 00000 n +0000007795 00000 n +0000007820 00000 n +0000008454 00000 n +0000008689 00000 n +0000007872 00000 n +0000008566 00000 n +0000008627 00000 n +0000000555 00000 f +0000929857 00000 n +0000929034 00000 n +0000923271 00000 n +0000928871 00000 n +0000921746 00000 n +0000903681 00000 n +0000921583 00000 n +0000903026 00000 n +0000900938 00000 n +0000902862 00000 n +0000929953 00000 n +0000016134 00000 n +0000011193 00000 n +0000008799 00000 n +0000016011 00000 n +0000900255 00000 n +0000888858 00000 n +0000900079 00000 n +0000016072 00000 n +0000011549 00000 n +0000887640 00000 n +0000873547 00000 n +0000887476 00000 n +0000011701 00000 n +0000011852 00000 n +0000012004 00000 n +0000012157 00000 n +0000012306 00000 n +0000012457 00000 n +0000012610 00000 n +0000012763 00000 n +0000012916 00000 n +0000013071 00000 n +0000013226 00000 n +0000013382 00000 n +0000013537 00000 n +0000013690 00000 n +0000013846 00000 n +0000014002 00000 n +0000014152 00000 n +0000014306 00000 n +0000014458 00000 n +0000014611 00000 n +0000014767 00000 n +0000014923 00000 n +0000015079 00000 n +0000015235 00000 n +0000015391 00000 n +0000015546 00000 n +0000015702 00000 n +0000015858 00000 n +0000872730 00000 n +0000859934 00000 n +0000872554 00000 n +0000025084 00000 n +0000018850 00000 n +0000016244 00000 n +0000025023 00000 n +0000019270 00000 n +0000019426 00000 n +0000019582 00000 n +0000019738 00000 n +0000019894 00000 n +0000020047 00000 n +0000020203 00000 n +0000020359 00000 n +0000020514 00000 n +0000020670 00000 n +0000020826 00000 n +0000020981 00000 n +0000021137 00000 n +0000021293 00000 n +0000021449 00000 n +0000021605 00000 n +0000021761 00000 n +0000021917 00000 n +0000022073 00000 n +0000022228 00000 n +0000022384 00000 n +0000022540 00000 n +0000022696 00000 n +0000022852 00000 n +0000023008 00000 n +0000023161 00000 n +0000023317 00000 n +0000023473 00000 n +0000023628 00000 n +0000023784 00000 n +0000023940 00000 n +0000024095 00000 n +0000024251 00000 n +0000024407 00000 n +0000024561 00000 n +0000024717 00000 n +0000024869 00000 n +0000030616 00000 n +0000026845 00000 n +0000025168 00000 n +0000030555 00000 n +0000027145 00000 n +0000027301 00000 n +0000027457 00000 n +0000027611 00000 n +0000027767 00000 n +0000027922 00000 n +0000028076 00000 n +0000028232 00000 n +0000028387 00000 n +0000028541 00000 n +0000028696 00000 n +0000028850 00000 n +0000029006 00000 n +0000029159 00000 n +0000029315 00000 n +0000029469 00000 n +0000029625 00000 n +0000029781 00000 n +0000029937 00000 n +0000030093 00000 n +0000030249 00000 n +0000030402 00000 n +0000032707 00000 n +0000032086 00000 n +0000030713 00000 n +0000032400 00000 n +0000032522 00000 n +0000032218 00000 n +0000032645 00000 n +0000037217 00000 n +0000035979 00000 n +0000032830 00000 n +0000036143 00000 n +0000036310 00000 n +0000037033 00000 n +0000036472 00000 n +0000036622 00000 n +0000036797 00000 n +0000037155 00000 n +0000039327 00000 n +0000038340 00000 n +0000037327 00000 n +0000038496 00000 n +0000038658 00000 n +0000038866 00000 n +0000039033 00000 n +0000039266 00000 n +0000930071 00000 n +0000042793 00000 n +0000041933 00000 n +0000039424 00000 n +0000042299 00000 n +0000858816 00000 n +0000847933 00000 n +0000858652 00000 n +0000042422 00000 n +0000847613 00000 n +0000845731 00000 n +0000847450 00000 n +0000042484 00000 n +0000042546 00000 n +0000042608 00000 n +0000042670 00000 n +0000042732 00000 n +0000042065 00000 n +0000046297 00000 n +0000056038 00000 n +0000052881 00000 n +0000046185 00000 n +0000042955 00000 n +0000052264 00000 n +0000052325 00000 n +0000052387 00000 n +0000052448 00000 n +0000052510 00000 n +0000052572 00000 n +0000052634 00000 n +0000052696 00000 n +0000052758 00000 n +0000046859 00000 n +0000047061 00000 n +0000049272 00000 n +0000049401 00000 n +0000049438 00000 n +0000049485 00000 n +0000052161 00000 n +0000066752 00000 n +0000055834 00000 n +0000053045 00000 n +0000066506 00000 n +0000064934 00000 n +0000065088 00000 n +0000065242 00000 n +0000001437 00000 f +0000845640 00000 n +0000066567 00000 n +0000065403 00000 n +0000065557 00000 n +0000065712 00000 n +0000065867 00000 n +0000066039 00000 n +0000066194 00000 n +0000066352 00000 n +0000066690 00000 n +0000056570 00000 n +0000056769 00000 n +0000062092 00000 n +0000062221 00000 n +0000062258 00000 n +0000569601 00000 n +0000569855 00000 n +0000146253 00000 n +0000146375 00000 n +0000320241 00000 n +0000320365 00000 n +0000067831 00000 n +0000086780 00000 n +0000117943 00000 n +0000067719 00000 n +0000066929 00000 n +0000117821 00000 n +0000068366 00000 n +0000068569 00000 n +0000083938 00000 n +0000084067 00000 n +0000084104 00000 n +0000087315 00000 n +0000087518 00000 n +0000114979 00000 n +0000115108 00000 n +0000115145 00000 n +0000119627 00000 n +0000147279 00000 n +0000146437 00000 n +0000119515 00000 n +0000118081 00000 n +0000146192 00000 n +0000120162 00000 n +0000120360 00000 n +0000143350 00000 n +0000143479 00000 n +0000143516 00000 n +0000176774 00000 n +0000225964 00000 n +0000147167 00000 n +0000146575 00000 n +0000225719 00000 n +0000225841 00000 n +0000930189 00000 n +0000147818 00000 n +0000148020 00000 n +0000173932 00000 n +0000174061 00000 n +0000174098 00000 n +0000177262 00000 n +0000177476 00000 n +0000219097 00000 n +0000219212 00000 n +0000229433 00000 n +0000228952 00000 n +0000226102 00000 n +0000229064 00000 n +0000229125 00000 n +0000229248 00000 n +0000845321 00000 n +0000843437 00000 n +0000845159 00000 n +0000229371 00000 n +0000231419 00000 n +0000252529 00000 n +0000231307 00000 n +0000229608 00000 n +0000252345 00000 n +0000252467 00000 n +0000231965 00000 n +0000232169 00000 n +0000249503 00000 n +0000249632 00000 n +0000249669 00000 n +0000256601 00000 n +0000256052 00000 n +0000252680 00000 n +0000256356 00000 n +0000256478 00000 n +0000843052 00000 n +0000840936 00000 n +0000842887 00000 n +0000256184 00000 n +0000258269 00000 n +0000257806 00000 n +0000256737 00000 n +0000258146 00000 n +0000257938 00000 n +0000258207 00000 n +0000262663 00000 n +0000260210 00000 n +0000258392 00000 n +0000262418 00000 n +0000260438 00000 n +0000260584 00000 n +0000260737 00000 n +0000260891 00000 n +0000261041 00000 n +0000261190 00000 n +0000261346 00000 n +0000261500 00000 n +0000261651 00000 n +0000262540 00000 n +0000839934 00000 n +0000829342 00000 n +0000839772 00000 n +0000829025 00000 n +0000827608 00000 n +0000828863 00000 n +0000261805 00000 n +0000261961 00000 n +0000262118 00000 n +0000262269 00000 n +0000325470 00000 n +0000430522 00000 n +0000510209 00000 n +0000536690 00000 n +0000540110 00000 n +0000562779 00000 n +0000573250 00000 n +0000573567 00000 n +0000267721 00000 n +0000270720 00000 n +0000277628 00000 n +0000283442 00000 n +0000268028 00000 n +0000265044 00000 n +0000262812 00000 n +0000267660 00000 n +0000265288 00000 n +0000265444 00000 n +0000265603 00000 n +0000265761 00000 n +0000265914 00000 n +0000266071 00000 n +0000266238 00000 n +0000266401 00000 n +0000266561 00000 n +0000266727 00000 n +0000266885 00000 n +0000267039 00000 n +0000267202 00000 n +0000267354 00000 n +0000267844 00000 n +0000827126 00000 n +0000822927 00000 n +0000826963 00000 n +0000822448 00000 n +0000819621 00000 n +0000822285 00000 n +0000818671 00000 n +0000808602 00000 n +0000818509 00000 n +0000267509 00000 n +0000267906 00000 n +0000267968 00000 n +0000930307 00000 n +0000283564 00000 n +0000291947 00000 n +0000300491 00000 n +0000300739 00000 n +0000310549 00000 n +0000316954 00000 n +0000319869 00000 n +0000319993 00000 n +0000320117 00000 n +0000325037 00000 n +0000325161 00000 n +0000325346 00000 n +0000270843 00000 n +0000270132 00000 n +0000268216 00000 n +0000270413 00000 n +0000270474 00000 n +0000270535 00000 n +0000270596 00000 n +0000270658 00000 n +0000270264 00000 n +0000274366 00000 n +0000273077 00000 n +0000270992 00000 n +0000273872 00000 n +0000273933 00000 n +0000273995 00000 n +0000273233 00000 n +0000273401 00000 n +0000274057 00000 n +0000274119 00000 n +0000274181 00000 n +0000274243 00000 n +0000274305 00000 n +0000273557 00000 n +0000273714 00000 n +0000277504 00000 n +0000527272 00000 n +0000611999 00000 n +0000277751 00000 n +0000276788 00000 n +0000274541 00000 n +0000277443 00000 n +0000276936 00000 n +0000277104 00000 n +0000277566 00000 n +0000277274 00000 n +0000279904 00000 n +0000283626 00000 n +0000279756 00000 n +0000277926 00000 n +0000283319 00000 n +0000282838 00000 n +0000283380 00000 n +0000283005 00000 n +0000283162 00000 n +0000280545 00000 n +0000280714 00000 n +0000282189 00000 n +0000282700 00000 n +0000282756 00000 n +0000282776 00000 n +0000282798 00000 n +0000282819 00000 n +0000285442 00000 n +0000288848 00000 n +0000292132 00000 n +0000285330 00000 n +0000283803 00000 n +0000291762 00000 n +0000291885 00000 n +0000292070 00000 n +0000286088 00000 n +0000286257 00000 n +0000287932 00000 n +0000288710 00000 n +0000288766 00000 n +0000288786 00000 n +0000288808 00000 n +0000288829 00000 n +0000289498 00000 n +0000289667 00000 n +0000291109 00000 n +0000291624 00000 n +0000291680 00000 n +0000291700 00000 n +0000291722 00000 n +0000291743 00000 n +0000293849 00000 n +0000296890 00000 n +0000300863 00000 n +0000293709 00000 n +0000292337 00000 n +0000300368 00000 n +0000300429 00000 n +0000300048 00000 n +0000300211 00000 n +0000300615 00000 n +0000300677 00000 n +0000930425 00000 n +0000294497 00000 n +0000294666 00000 n +0000296195 00000 n +0000296752 00000 n +0000296808 00000 n +0000296828 00000 n +0000296850 00000 n +0000296871 00000 n +0000297534 00000 n +0000297703 00000 n +0000299311 00000 n +0000299910 00000 n +0000299966 00000 n +0000299986 00000 n +0000300008 00000 n +0000300029 00000 n +0000304173 00000 n +0000303330 00000 n +0000301055 00000 n +0000303803 00000 n +0000303864 00000 n +0000303470 00000 n +0000303926 00000 n +0000303640 00000 n +0000303987 00000 n +0000304049 00000 n +0000304111 00000 n +0000310487 00000 n +0000306857 00000 n +0000310795 00000 n +0000306709 00000 n +0000304348 00000 n +0000310426 00000 n +0000309915 00000 n +0000310084 00000 n +0000310672 00000 n +0000310253 00000 n +0000310734 00000 n +0000307504 00000 n +0000307673 00000 n +0000309208 00000 n +0000309777 00000 n +0000309833 00000 n +0000309853 00000 n +0000309875 00000 n +0000309896 00000 n +0000316892 00000 n +0000313188 00000 n +0000317077 00000 n +0000313040 00000 n +0000310999 00000 n +0000316769 00000 n +0000316830 00000 n +0000316268 00000 n +0000316440 00000 n +0000316612 00000 n +0000313845 00000 n +0000314014 00000 n +0000315563 00000 n +0000316130 00000 n +0000316186 00000 n +0000316206 00000 n +0000316228 00000 n +0000316249 00000 n +0000320488 00000 n +0000319215 00000 n +0000317294 00000 n +0000319684 00000 n +0000319745 00000 n +0000319931 00000 n +0000319355 00000 n +0000320055 00000 n +0000320179 00000 n +0000319521 00000 n +0000320303 00000 n +0000320426 00000 n +0000325594 00000 n +0000322794 00000 n +0000320650 00000 n +0000324914 00000 n +0000325099 00000 n +0000325223 00000 n +0000325408 00000 n +0000323014 00000 n +0000323175 00000 n +0000323327 00000 n +0000323482 00000 n +0000323643 00000 n +0000323802 00000 n +0000323963 00000 n +0000324121 00000 n +0000324277 00000 n +0000324442 00000 n +0000324606 00000 n +0000324765 00000 n +0000340676 00000 n +0000340862 00000 n +0000347796 00000 n +0000347920 00000 n +0000350745 00000 n +0000361678 00000 n +0000365025 00000 n +0000368886 00000 n +0000369140 00000 n +0000376468 00000 n +0000382709 00000 n +0000405407 00000 n +0000327977 00000 n +0000331420 00000 n +0000340986 00000 n +0000327773 00000 n +0000325743 00000 n +0000340615 00000 n +0000339044 00000 n +0000339195 00000 n +0000339350 00000 n +0000339509 00000 n +0000339667 00000 n +0000339825 00000 n +0000339982 00000 n +0000340142 00000 n +0000340300 00000 n +0000340800 00000 n +0000340454 00000 n +0000930543 00000 n +0000328628 00000 n +0000328797 00000 n +0000330462 00000 n +0000331282 00000 n +0000331338 00000 n +0000331358 00000 n +0000331380 00000 n +0000331401 00000 n +0000331924 00000 n +0000332139 00000 n +0000332188 00000 n +0000332559 00000 n +0000332674 00000 n +0000332855 00000 n +0000405533 00000 n +0000411537 00000 n +0000411727 00000 n +0000415944 00000 n +0000419443 00000 n +0000425098 00000 n +0000430395 00000 n +0000343138 00000 n +0000347982 00000 n +0000342942 00000 n +0000341217 00000 n +0000347735 00000 n +0000346308 00000 n +0000346466 00000 n +0000346622 00000 n +0000346780 00000 n +0000346937 00000 n +0000347095 00000 n +0000347260 00000 n +0000347418 00000 n +0000347574 00000 n +0000343783 00000 n +0000343952 00000 n +0000345526 00000 n +0000346170 00000 n +0000346226 00000 n +0000346246 00000 n +0000346268 00000 n +0000346289 00000 n +0000425287 00000 n +0000350869 00000 n +0000349579 00000 n +0000348134 00000 n +0000350371 00000 n +0000349737 00000 n +0000349898 00000 n +0000350494 00000 n +0000350556 00000 n +0000350619 00000 n +0000350682 00000 n +0000350055 00000 n +0000350214 00000 n +0000354685 00000 n +0000352953 00000 n +0000351044 00000 n +0000354110 00000 n +0000353134 00000 n +0000353288 00000 n +0000354173 00000 n +0000354237 00000 n +0000354301 00000 n +0000354365 00000 n +0000354429 00000 n +0000353442 00000 n +0000354493 00000 n +0000353612 00000 n +0000353782 00000 n +0000354557 00000 n +0000353953 00000 n +0000354621 00000 n +0000358108 00000 n +0000358555 00000 n +0000356843 00000 n +0000354835 00000 n +0000358045 00000 n +0000358172 00000 n +0000358236 00000 n +0000357024 00000 n +0000358299 00000 n +0000358363 00000 n +0000357192 00000 n +0000358427 00000 n +0000357361 00000 n +0000357531 00000 n +0000357702 00000 n +0000358491 00000 n +0000357876 00000 n +0000361995 00000 n +0000360414 00000 n +0000358679 00000 n +0000361551 00000 n +0000361614 00000 n +0000360595 00000 n +0000360754 00000 n +0000360911 00000 n +0000361066 00000 n +0000361804 00000 n +0000361867 00000 n +0000361221 00000 n +0000361386 00000 n +0000361931 00000 n +0000365341 00000 n +0000363756 00000 n +0000362171 00000 n +0000364898 00000 n +0000364961 00000 n +0000363938 00000 n +0000364103 00000 n +0000364262 00000 n +0000364419 00000 n +0000364572 00000 n +0000365150 00000 n +0000365214 00000 n +0000364725 00000 n +0000365277 00000 n +0000930664 00000 n +0000369203 00000 n +0000367265 00000 n +0000365517 00000 n +0000368759 00000 n +0000367465 00000 n +0000368822 00000 n +0000367634 00000 n +0000367808 00000 n +0000367967 00000 n +0000368124 00000 n +0000368274 00000 n +0000369012 00000 n +0000368425 00000 n +0000369076 00000 n +0000368590 00000 n +0000373019 00000 n +0000371527 00000 n +0000369379 00000 n +0000372510 00000 n +0000371700 00000 n +0000371860 00000 n +0000372020 00000 n +0000372636 00000 n +0000372180 00000 n +0000372700 00000 n +0000372764 00000 n +0000372345 00000 n +0000372828 00000 n +0000372892 00000 n +0000372956 00000 n +0000376149 00000 n +0000376594 00000 n +0000375079 00000 n +0000373208 00000 n +0000376086 00000 n +0000375252 00000 n +0000376212 00000 n +0000376276 00000 n +0000375420 00000 n +0000376340 00000 n +0000375595 00000 n +0000376404 00000 n +0000375770 00000 n +0000375929 00000 n +0000378774 00000 n +0000382963 00000 n +0000378619 00000 n +0000376757 00000 n +0000382454 00000 n +0000382517 00000 n +0000381952 00000 n +0000382581 00000 n +0000382122 00000 n +0000382645 00000 n +0000382289 00000 n +0000382835 00000 n +0000382899 00000 n +0000379431 00000 n +0000379601 00000 n +0000381215 00000 n +0000381808 00000 n +0000381866 00000 n +0000381887 00000 n +0000381910 00000 n +0000381932 00000 n +0000386374 00000 n +0000385185 00000 n +0000383182 00000 n +0000385864 00000 n +0000385927 00000 n +0000385990 00000 n +0000386054 00000 n +0000386118 00000 n +0000386182 00000 n +0000386246 00000 n +0000385340 00000 n +0000385515 00000 n +0000385690 00000 n +0000386310 00000 n +0000390298 00000 n +0000390744 00000 n +0000388651 00000 n +0000386524 00000 n +0000390235 00000 n +0000388851 00000 n +0000389023 00000 n +0000389195 00000 n +0000389370 00000 n +0000389544 00000 n +0000390361 00000 n +0000389717 00000 n +0000389891 00000 n +0000390425 00000 n +0000390489 00000 n +0000390553 00000 n +0000390616 00000 n +0000390065 00000 n +0000390680 00000 n +0000930789 00000 n +0000395530 00000 n +0000393525 00000 n +0000390907 00000 n +0000395275 00000 n +0000393734 00000 n +0000395338 00000 n +0000393905 00000 n +0000395402 00000 n +0000394061 00000 n +0000394235 00000 n +0000394410 00000 n +0000394581 00000 n +0000394753 00000 n +0000394926 00000 n +0000395466 00000 n +0000395101 00000 n +0000397921 00000 n +0000401156 00000 n +0000405659 00000 n +0000397748 00000 n +0000395719 00000 n +0000405280 00000 n +0000405343 00000 n +0000404487 00000 n +0000404647 00000 n +0000404806 00000 n +0000404963 00000 n +0000405122 00000 n +0000398570 00000 n +0000398740 00000 n +0000400352 00000 n +0000401012 00000 n +0000401070 00000 n +0000401091 00000 n +0000401114 00000 n +0000401136 00000 n +0000401804 00000 n +0000401974 00000 n +0000403638 00000 n +0000404343 00000 n +0000404401 00000 n +0000404422 00000 n +0000404445 00000 n +0000404467 00000 n +0000407560 00000 n +0000411853 00000 n +0000407387 00000 n +0000405893 00000 n +0000411474 00000 n +0000410693 00000 n +0000410852 00000 n +0000411009 00000 n +0000411165 00000 n +0000411317 00000 n +0000411663 00000 n +0000408216 00000 n +0000408386 00000 n +0000409960 00000 n +0000410549 00000 n +0000410607 00000 n +0000410628 00000 n +0000410651 00000 n +0000410673 00000 n +0000416069 00000 n +0000414727 00000 n +0000412020 00000 n +0000415881 00000 n +0000414909 00000 n +0000415075 00000 n +0000415236 00000 n +0000415398 00000 n +0000415560 00000 n +0000415721 00000 n +0000419506 00000 n +0000418396 00000 n +0000416193 00000 n +0000419060 00000 n +0000419123 00000 n +0000419187 00000 n +0000419251 00000 n +0000418551 00000 n +0000419315 00000 n +0000418716 00000 n +0000419379 00000 n +0000418888 00000 n +0000421277 00000 n +0000425350 00000 n +0000421113 00000 n +0000419682 00000 n +0000424972 00000 n +0000424332 00000 n +0000424491 00000 n +0000424648 00000 n +0000424813 00000 n +0000425223 00000 n +0000930914 00000 n +0000421932 00000 n +0000422102 00000 n +0000423610 00000 n +0000424188 00000 n +0000424246 00000 n +0000424267 00000 n +0000424290 00000 n +0000424312 00000 n +0000430710 00000 n +0000428148 00000 n +0000425530 00000 n +0000430142 00000 n +0000430205 00000 n +0000430269 00000 n +0000430458 00000 n +0000428375 00000 n +0000428550 00000 n +0000428707 00000 n +0000428866 00000 n +0000429032 00000 n +0000429197 00000 n +0000429357 00000 n +0000429513 00000 n +0000429669 00000 n +0000429824 00000 n +0000429982 00000 n +0000430647 00000 n +0000441155 00000 n +0000450733 00000 n +0000450860 00000 n +0000479579 00000 n +0000479706 00000 n +0000488387 00000 n +0000494958 00000 n +0000495148 00000 n +0000504951 00000 n +0000433322 00000 n +0000436338 00000 n +0000441282 00000 n +0000433113 00000 n +0000430912 00000 n +0000440965 00000 n +0000439503 00000 n +0000439661 00000 n +0000441091 00000 n +0000439818 00000 n +0000439973 00000 n +0000440137 00000 n +0000440296 00000 n +0000440453 00000 n +0000440619 00000 n +0000440792 00000 n +0000433975 00000 n +0000434145 00000 n +0000435659 00000 n +0000436194 00000 n +0000436252 00000 n +0000436273 00000 n +0000436296 00000 n +0000436318 00000 n +0000436994 00000 n +0000437164 00000 n +0000438767 00000 n +0000439359 00000 n +0000439417 00000 n +0000439438 00000 n +0000439461 00000 n +0000439483 00000 n +0000482798 00000 n +0000444173 00000 n +0000447510 00000 n +0000444300 00000 n +0000443122 00000 n +0000441477 00000 n +0000443790 00000 n +0000443853 00000 n +0000443917 00000 n +0000443981 00000 n +0000443277 00000 n +0000444045 00000 n +0000444109 00000 n +0000443449 00000 n +0000443621 00000 n +0000444236 00000 n +0000513510 00000 n +0000447764 00000 n +0000447079 00000 n +0000444463 00000 n +0000447383 00000 n +0000447446 00000 n +0000447216 00000 n +0000447574 00000 n +0000447638 00000 n +0000447701 00000 n +0000450924 00000 n +0000449743 00000 n +0000447940 00000 n +0000450542 00000 n +0000450605 00000 n +0000450669 00000 n +0000449907 00000 n +0000450063 00000 n +0000450223 00000 n +0000450382 00000 n +0000454274 00000 n +0000452741 00000 n +0000451074 00000 n +0000453892 00000 n +0000452923 00000 n +0000453079 00000 n +0000453239 00000 n +0000453399 00000 n +0000454018 00000 n +0000453559 00000 n +0000453724 00000 n +0000454082 00000 n +0000454146 00000 n +0000454210 00000 n +0000931039 00000 n +0000465403 00000 n +0000465467 00000 n +0000460552 00000 n +0000457223 00000 n +0000454411 00000 n +0000460169 00000 n +0000457495 00000 n +0000457660 00000 n +0000460232 00000 n +0000457828 00000 n +0000457993 00000 n +0000460296 00000 n +0000458161 00000 n +0000458330 00000 n +0000458504 00000 n +0000460360 00000 n +0000458670 00000 n +0000458837 00000 n +0000460424 00000 n +0000459012 00000 n +0000459176 00000 n +0000459343 00000 n +0000459508 00000 n +0000459677 00000 n +0000459840 00000 n +0000460005 00000 n +0000460488 00000 n +0000465339 00000 n +0000465594 00000 n +0000463040 00000 n +0000460702 00000 n +0000465276 00000 n +0000463276 00000 n +0000463441 00000 n +0000463607 00000 n +0000463774 00000 n +0000463943 00000 n +0000464110 00000 n +0000464277 00000 n +0000464442 00000 n +0000465531 00000 n +0000464611 00000 n +0000464777 00000 n +0000464944 00000 n +0000465112 00000 n +0000482542 00000 n +0000469005 00000 n +0000468379 00000 n +0000465770 00000 n +0000468687 00000 n +0000468750 00000 n +0000808249 00000 n +0000806483 00000 n +0000808083 00000 n +0000000000 00000 f +0000806383 00000 n +0000468814 00000 n +0000468878 00000 n +0000468516 00000 n +0000468942 00000 n +0000479516 00000 n +0000471646 00000 n +0000474773 00000 n +0000479833 00000 n +0000471428 00000 n +0000469209 00000 n +0000479453 00000 n +0000477824 00000 n +0000477989 00000 n +0000478154 00000 n +0000478326 00000 n +0000478482 00000 n +0000478648 00000 n +0000478804 00000 n +0000478963 00000 n +0000479122 00000 n +0000479288 00000 n +0000472302 00000 n +0000472472 00000 n +0000474066 00000 n +0000474629 00000 n +0000474687 00000 n +0000474708 00000 n +0000474731 00000 n +0000474753 00000 n +0000475425 00000 n +0000475595 00000 n +0000477150 00000 n +0000477680 00000 n +0000477738 00000 n +0000477759 00000 n +0000477782 00000 n +0000477804 00000 n +0000482925 00000 n +0000482171 00000 n +0000480054 00000 n +0000482479 00000 n +0000482606 00000 n +0000482308 00000 n +0000482670 00000 n +0000482734 00000 n +0000482862 00000 n +0000484929 00000 n +0000488767 00000 n +0000484792 00000 n +0000483088 00000 n +0000488260 00000 n +0000488323 00000 n +0000488513 00000 n +0000488577 00000 n +0000488089 00000 n +0000488641 00000 n +0000488705 00000 n +0000931164 00000 n +0000485582 00000 n +0000485752 00000 n +0000487263 00000 n +0000487945 00000 n +0000488003 00000 n +0000488024 00000 n +0000488047 00000 n +0000488069 00000 n +0000491156 00000 n +0000495211 00000 n +0000491010 00000 n +0000488947 00000 n +0000494703 00000 n +0000494766 00000 n +0000494830 00000 n +0000494367 00000 n +0000494894 00000 n +0000494532 00000 n +0000495084 00000 n +0000491807 00000 n +0000491977 00000 n +0000493577 00000 n +0000494223 00000 n +0000494281 00000 n +0000494302 00000 n +0000494325 00000 n +0000494347 00000 n +0000497345 00000 n +0000500617 00000 n +0000505077 00000 n +0000497163 00000 n +0000495391 00000 n +0000504697 00000 n +0000503754 00000 n +0000503912 00000 n +0000504067 00000 n +0000504823 00000 n +0000504221 00000 n +0000504887 00000 n +0000504376 00000 n +0000504532 00000 n +0000498000 00000 n +0000498170 00000 n +0000499743 00000 n +0000500473 00000 n +0000500531 00000 n +0000500552 00000 n +0000500575 00000 n +0000500597 00000 n +0000501273 00000 n +0000501443 00000 n +0000503040 00000 n +0000503610 00000 n +0000503668 00000 n +0000503689 00000 n +0000503712 00000 n +0000503734 00000 n +0000510460 00000 n +0000508460 00000 n +0000505272 00000 n +0000510146 00000 n +0000508669 00000 n +0000508838 00000 n +0000509009 00000 n +0000509180 00000 n +0000509345 00000 n +0000509502 00000 n +0000509660 00000 n +0000510335 00000 n +0000509816 00000 n +0000509974 00000 n +0000527462 00000 n +0000517182 00000 n +0000513702 00000 n +0000512379 00000 n +0000510597 00000 n +0000513191 00000 n +0000512543 00000 n +0000512701 00000 n +0000513254 00000 n +0000513318 00000 n +0000513382 00000 n +0000512857 00000 n +0000513446 00000 n +0000513024 00000 n +0000513574 00000 n +0000513638 00000 n +0000517565 00000 n +0000516457 00000 n +0000513865 00000 n +0000517119 00000 n +0000516612 00000 n +0000517246 00000 n +0000517310 00000 n +0000516781 00000 n +0000517374 00000 n +0000516950 00000 n +0000517438 00000 n +0000517502 00000 n +0000519799 00000 n +0000522951 00000 n +0000527589 00000 n +0000519608 00000 n +0000517728 00000 n +0000527209 00000 n +0000526092 00000 n +0000526265 00000 n +0000526423 00000 n +0000526581 00000 n +0000527398 00000 n +0000526736 00000 n +0000526894 00000 n +0000527052 00000 n +0000931289 00000 n +0000520453 00000 n +0000520623 00000 n +0000522248 00000 n +0000522807 00000 n +0000522865 00000 n +0000522886 00000 n +0000522909 00000 n +0000522931 00000 n +0000523603 00000 n +0000523773 00000 n +0000525392 00000 n +0000525948 00000 n +0000526006 00000 n +0000526027 00000 n +0000526050 00000 n +0000526072 00000 n +0000529679 00000 n +0000532856 00000 n +0000537069 00000 n +0000529515 00000 n +0000527810 00000 n +0000536627 00000 n +0000535990 00000 n +0000536147 00000 n +0000536305 00000 n +0000536816 00000 n +0000536466 00000 n +0000536943 00000 n +0000530333 00000 n +0000530503 00000 n +0000532056 00000 n +0000532712 00000 n +0000532770 00000 n +0000532791 00000 n +0000532814 00000 n +0000532836 00000 n +0000533513 00000 n +0000533683 00000 n +0000535246 00000 n +0000535846 00000 n +0000535904 00000 n +0000535925 00000 n +0000535948 00000 n +0000535970 00000 n +0000540362 00000 n +0000538913 00000 n +0000537264 00000 n +0000540047 00000 n +0000539095 00000 n +0000539253 00000 n +0000539411 00000 n +0000539574 00000 n +0000539730 00000 n +0000539888 00000 n +0000540235 00000 n +0000552576 00000 n +0000552702 00000 n +0000562460 00000 n +0000543998 00000 n +0000542358 00000 n +0000540512 00000 n +0000543487 00000 n +0000542540 00000 n +0000542697 00000 n +0000542854 00000 n +0000543550 00000 n +0000543614 00000 n +0000543011 00000 n +0000543678 00000 n +0000543168 00000 n +0000543327 00000 n +0000543742 00000 n +0000543806 00000 n +0000543870 00000 n +0000543934 00000 n +0000546451 00000 n +0000545888 00000 n +0000544161 00000 n +0000546004 00000 n +0000546067 00000 n +0000546131 00000 n +0000546195 00000 n +0000546259 00000 n +0000546323 00000 n +0000546387 00000 n +0000548555 00000 n +0000552956 00000 n +0000548382 00000 n +0000546588 00000 n +0000552513 00000 n +0000551710 00000 n +0000551873 00000 n +0000552031 00000 n +0000552197 00000 n +0000552356 00000 n +0000552828 00000 n +0000552892 00000 n +0000549208 00000 n +0000549378 00000 n +0000550924 00000 n +0000551566 00000 n +0000551624 00000 n +0000551645 00000 n +0000551668 00000 n +0000551690 00000 n +0000556177 00000 n +0000554949 00000 n +0000553136 00000 n +0000555604 00000 n +0000555667 00000 n +0000555731 00000 n +0000555795 00000 n +0000555104 00000 n +0000555858 00000 n +0000555922 00000 n +0000555986 00000 n +0000555275 00000 n +0000556050 00000 n +0000555441 00000 n +0000556114 00000 n +0000931414 00000 n +0000559864 00000 n +0000558830 00000 n +0000556301 00000 n +0000559483 00000 n +0000558985 00000 n +0000559546 00000 n +0000559152 00000 n +0000559610 00000 n +0000559672 00000 n +0000559736 00000 n +0000559319 00000 n +0000559800 00000 n +0000562842 00000 n +0000561589 00000 n +0000560001 00000 n +0000562397 00000 n +0000561753 00000 n +0000561925 00000 n +0000562084 00000 n +0000562587 00000 n +0000562651 00000 n +0000562241 00000 n +0000562715 00000 n +0000565469 00000 n +0000569918 00000 n +0000565314 00000 n +0000563005 00000 n +0000569475 00000 n +0000569005 00000 n +0000569161 00000 n +0000569320 00000 n +0000569727 00000 n +0000569791 00000 n +0000566121 00000 n +0000566291 00000 n +0000568135 00000 n +0000568861 00000 n +0000568919 00000 n +0000568940 00000 n +0000568963 00000 n +0000568985 00000 n +0000573630 00000 n +0000572193 00000 n +0000570124 00000 n +0000572995 00000 n +0000572357 00000 n +0000572512 00000 n +0000573058 00000 n +0000573122 00000 n +0000572671 00000 n +0000573186 00000 n +0000572837 00000 n +0000573439 00000 n +0000573503 00000 n +0000575985 00000 n +0000579262 00000 n +0000585305 00000 n +0000575776 00000 n +0000573845 00000 n +0000584924 00000 n +0000583477 00000 n +0000583637 00000 n +0000583793 00000 n +0000583955 00000 n +0000584119 00000 n +0000585050 00000 n +0000584278 00000 n +0000584436 00000 n +0000584601 00000 n +0000584768 00000 n +0000585177 00000 n +0000585241 00000 n +0000576641 00000 n +0000576811 00000 n +0000578459 00000 n +0000579118 00000 n +0000579176 00000 n +0000579197 00000 n +0000579220 00000 n +0000579242 00000 n +0000579825 00000 n +0000580026 00000 n +0000580422 00000 n +0000580552 00000 n +0000580591 00000 n +0000580641 00000 n +0000583318 00000 n +0000592220 00000 n +0000596329 00000 n +0000600016 00000 n +0000587699 00000 n +0000592347 00000 n +0000587544 00000 n +0000585513 00000 n +0000591965 00000 n +0000591480 00000 n +0000592028 00000 n +0000592092 00000 n +0000591635 00000 n +0000592156 00000 n +0000591803 00000 n +0000931539 00000 n +0000588351 00000 n +0000588521 00000 n +0000590377 00000 n +0000591336 00000 n +0000591394 00000 n +0000591415 00000 n +0000591438 00000 n +0000591460 00000 n +0000596711 00000 n +0000594583 00000 n +0000592553 00000 n +0000596266 00000 n +0000594792 00000 n +0000594952 00000 n +0000595120 00000 n +0000595288 00000 n +0000595462 00000 n +0000595618 00000 n +0000595774 00000 n +0000596455 00000 n +0000596519 00000 n +0000596583 00000 n +0000595934 00000 n +0000596108 00000 n +0000596647 00000 n +0000599952 00000 n +0000600335 00000 n +0000598896 00000 n +0000596874 00000 n +0000599889 00000 n +0000599069 00000 n +0000599241 00000 n +0000599398 00000 n +0000599556 00000 n +0000600143 00000 n +0000600207 00000 n +0000599714 00000 n +0000600271 00000 n +0000604280 00000 n +0000604344 00000 n +0000602880 00000 n +0000600511 00000 n +0000603898 00000 n +0000603961 00000 n +0000604024 00000 n +0000603053 00000 n +0000603221 00000 n +0000604088 00000 n +0000604152 00000 n +0000603389 00000 n +0000603556 00000 n +0000604216 00000 n +0000603727 00000 n +0000607562 00000 n +0000612188 00000 n +0000607371 00000 n +0000604481 00000 n +0000611808 00000 n +0000610656 00000 n +0000610830 00000 n +0000611871 00000 n +0000611935 00000 n +0000611004 00000 n +0000611162 00000 n +0000611327 00000 n +0000611486 00000 n +0000611644 00000 n +0000612125 00000 n +0000608217 00000 n +0000608387 00000 n +0000609935 00000 n +0000610512 00000 n +0000610570 00000 n +0000610591 00000 n +0000610614 00000 n +0000610636 00000 n +0000614396 00000 n +0000614154 00000 n +0000612394 00000 n +0000614270 00000 n +0000617286 00000 n +0000617107 00000 n +0000614533 00000 n +0000617223 00000 n +0000931664 00000 n +0000620329 00000 n +0000620150 00000 n +0000617397 00000 n +0000620266 00000 n +0000622933 00000 n +0000622754 00000 n +0000620453 00000 n +0000622870 00000 n +0000625795 00000 n +0000625616 00000 n +0000623044 00000 n +0000625732 00000 n +0000628305 00000 n +0000628126 00000 n +0000625906 00000 n +0000628242 00000 n +0000630109 00000 n +0000629930 00000 n +0000628416 00000 n +0000630046 00000 n +0000653147 00000 n +0000635269 00000 n +0000630220 00000 n +0000653084 00000 n +0000636396 00000 n +0000636547 00000 n +0000636698 00000 n +0000636849 00000 n +0000637000 00000 n +0000637151 00000 n +0000637301 00000 n +0000637452 00000 n +0000637602 00000 n +0000637753 00000 n +0000637903 00000 n +0000638054 00000 n +0000638203 00000 n +0000638354 00000 n +0000638505 00000 n +0000638656 00000 n +0000638807 00000 n +0000638958 00000 n +0000639108 00000 n +0000639258 00000 n +0000639408 00000 n +0000639558 00000 n +0000639708 00000 n +0000639858 00000 n +0000640008 00000 n +0000640159 00000 n +0000640310 00000 n +0000640461 00000 n +0000640612 00000 n +0000640761 00000 n +0000640912 00000 n +0000641063 00000 n +0000641213 00000 n +0000641363 00000 n +0000641513 00000 n +0000641664 00000 n +0000641815 00000 n +0000641965 00000 n +0000642115 00000 n +0000642266 00000 n +0000642417 00000 n +0000642566 00000 n +0000642716 00000 n +0000642866 00000 n +0000643015 00000 n +0000643166 00000 n +0000643317 00000 n +0000643468 00000 n +0000643619 00000 n +0000643770 00000 n +0000643916 00000 n +0000644064 00000 n +0000644215 00000 n +0000644366 00000 n +0000644517 00000 n +0000644668 00000 n +0000644819 00000 n +0000644970 00000 n +0000645119 00000 n +0000645270 00000 n +0000645420 00000 n +0000645571 00000 n +0000645720 00000 n +0000645870 00000 n +0000646021 00000 n +0000646171 00000 n +0000646322 00000 n +0000646473 00000 n +0000646623 00000 n +0000646774 00000 n +0000646925 00000 n +0000647076 00000 n +0000647226 00000 n +0000647377 00000 n +0000647528 00000 n +0000647679 00000 n +0000647829 00000 n +0000647980 00000 n +0000648131 00000 n +0000648282 00000 n +0000648432 00000 n +0000648582 00000 n +0000648731 00000 n +0000648882 00000 n +0000649031 00000 n +0000649182 00000 n +0000649333 00000 n +0000649483 00000 n +0000649634 00000 n +0000649785 00000 n +0000649936 00000 n +0000650087 00000 n +0000650237 00000 n +0000650388 00000 n +0000650539 00000 n +0000650688 00000 n +0000650839 00000 n +0000650988 00000 n +0000651138 00000 n +0000651287 00000 n +0000651437 00000 n +0000651586 00000 n +0000651736 00000 n +0000651885 00000 n +0000652036 00000 n +0000652187 00000 n +0000652338 00000 n +0000652489 00000 n +0000652640 00000 n +0000652788 00000 n +0000652936 00000 n +0000931789 00000 n +0000676383 00000 n +0000658505 00000 n +0000653245 00000 n +0000676320 00000 n +0000659632 00000 n +0000659781 00000 n +0000659930 00000 n +0000660081 00000 n +0000660231 00000 n +0000660381 00000 n +0000660531 00000 n +0000660681 00000 n +0000660832 00000 n +0000660983 00000 n +0000661134 00000 n +0000661285 00000 n +0000661436 00000 n +0000661587 00000 n +0000661737 00000 n +0000661888 00000 n +0000662039 00000 n +0000662190 00000 n +0000662341 00000 n +0000662492 00000 n +0000662643 00000 n +0000662792 00000 n +0000662943 00000 n +0000663092 00000 n +0000663242 00000 n +0000663392 00000 n +0000663543 00000 n +0000663694 00000 n +0000663845 00000 n +0000663995 00000 n +0000664146 00000 n +0000664296 00000 n +0000664447 00000 n +0000664598 00000 n +0000664749 00000 n +0000664900 00000 n +0000665051 00000 n +0000665198 00000 n +0000665349 00000 n +0000665500 00000 n +0000665647 00000 n +0000665797 00000 n +0000665948 00000 n +0000666099 00000 n +0000666250 00000 n +0000666401 00000 n +0000666552 00000 n +0000666703 00000 n +0000666853 00000 n +0000667004 00000 n +0000667153 00000 n +0000667304 00000 n +0000667455 00000 n +0000667604 00000 n +0000667751 00000 n +0000667900 00000 n +0000668051 00000 n +0000668201 00000 n +0000668352 00000 n +0000668502 00000 n +0000668653 00000 n +0000668804 00000 n +0000668955 00000 n +0000669105 00000 n +0000669255 00000 n +0000669406 00000 n +0000669557 00000 n +0000669708 00000 n +0000669859 00000 n +0000670010 00000 n +0000670161 00000 n +0000670310 00000 n +0000670461 00000 n +0000670611 00000 n +0000670761 00000 n +0000670912 00000 n +0000671061 00000 n +0000671212 00000 n +0000671363 00000 n +0000671514 00000 n +0000671665 00000 n +0000671815 00000 n +0000671965 00000 n +0000672116 00000 n +0000672265 00000 n +0000672414 00000 n +0000672565 00000 n +0000672715 00000 n +0000672866 00000 n +0000673016 00000 n +0000673166 00000 n +0000673316 00000 n +0000673467 00000 n +0000673618 00000 n +0000673769 00000 n +0000673919 00000 n +0000674069 00000 n +0000674220 00000 n +0000674371 00000 n +0000674521 00000 n +0000674671 00000 n +0000674822 00000 n +0000674973 00000 n +0000675123 00000 n +0000675274 00000 n +0000675424 00000 n +0000675575 00000 n +0000675723 00000 n +0000675873 00000 n +0000676023 00000 n +0000676172 00000 n +0000700166 00000 n +0000681641 00000 n +0000676468 00000 n +0000700103 00000 n +0000682804 00000 n +0000682954 00000 n +0000683105 00000 n +0000683254 00000 n +0000683405 00000 n +0000683555 00000 n +0000683706 00000 n +0000683856 00000 n +0000684005 00000 n +0000684156 00000 n +0000684305 00000 n +0000684456 00000 n +0000684607 00000 n +0000684758 00000 n +0000684908 00000 n +0000685058 00000 n +0000685209 00000 n +0000685359 00000 n +0000685509 00000 n +0000685660 00000 n +0000685810 00000 n +0000685961 00000 n +0000686112 00000 n +0000686263 00000 n +0000686414 00000 n +0000686565 00000 n +0000686716 00000 n +0000686866 00000 n +0000687017 00000 n +0000687168 00000 n +0000687317 00000 n +0000687468 00000 n +0000687619 00000 n +0000687770 00000 n +0000687921 00000 n +0000688070 00000 n +0000688221 00000 n +0000688371 00000 n +0000688522 00000 n +0000688672 00000 n +0000688823 00000 n +0000688974 00000 n +0000689124 00000 n +0000689275 00000 n +0000689426 00000 n +0000689577 00000 n +0000689728 00000 n +0000689879 00000 n +0000690030 00000 n +0000690181 00000 n +0000690332 00000 n +0000690481 00000 n +0000690630 00000 n +0000690780 00000 n +0000690930 00000 n +0000691081 00000 n +0000691231 00000 n +0000691382 00000 n +0000691531 00000 n +0000691681 00000 n +0000691830 00000 n +0000691981 00000 n +0000692131 00000 n +0000692282 00000 n +0000692433 00000 n +0000692582 00000 n +0000692733 00000 n +0000692884 00000 n +0000693035 00000 n +0000693186 00000 n +0000693337 00000 n +0000693488 00000 n +0000693639 00000 n +0000693790 00000 n +0000693940 00000 n +0000694089 00000 n +0000694239 00000 n +0000694389 00000 n +0000694539 00000 n +0000694689 00000 n +0000694839 00000 n +0000694988 00000 n +0000695139 00000 n +0000695289 00000 n +0000695440 00000 n +0000695591 00000 n +0000695742 00000 n +0000695893 00000 n +0000696044 00000 n +0000696195 00000 n +0000696345 00000 n +0000696495 00000 n +0000696644 00000 n +0000696795 00000 n +0000696946 00000 n +0000697097 00000 n +0000697247 00000 n +0000697398 00000 n +0000697548 00000 n +0000697699 00000 n +0000697849 00000 n +0000698000 00000 n +0000698151 00000 n +0000698302 00000 n +0000698453 00000 n +0000698603 00000 n +0000698754 00000 n +0000698905 00000 n +0000699056 00000 n +0000699206 00000 n +0000699355 00000 n +0000699506 00000 n +0000699656 00000 n +0000699806 00000 n +0000699954 00000 n +0000722929 00000 n +0000705685 00000 n +0000700251 00000 n +0000722866 00000 n +0000706776 00000 n +0000706927 00000 n +0000707077 00000 n +0000707228 00000 n +0000707379 00000 n +0000707529 00000 n +0000707680 00000 n +0000707831 00000 n +0000707982 00000 n +0000708131 00000 n +0000708282 00000 n +0000708432 00000 n +0000708583 00000 n +0000708733 00000 n +0000708884 00000 n +0000709035 00000 n +0000709186 00000 n +0000709335 00000 n +0000709486 00000 n +0000709637 00000 n +0000709788 00000 n +0000709935 00000 n +0000710085 00000 n +0000710236 00000 n +0000710386 00000 n +0000710537 00000 n +0000710688 00000 n +0000710839 00000 n +0000710990 00000 n +0000711141 00000 n +0000711290 00000 n +0000711439 00000 n +0000711590 00000 n +0000711739 00000 n +0000711890 00000 n +0000712040 00000 n +0000712190 00000 n +0000712341 00000 n +0000712492 00000 n +0000712642 00000 n +0000712793 00000 n +0000712944 00000 n +0000713095 00000 n +0000713245 00000 n +0000713396 00000 n +0000713546 00000 n +0000713697 00000 n +0000713846 00000 n +0000713997 00000 n +0000714147 00000 n +0000714298 00000 n +0000714449 00000 n +0000714597 00000 n +0000714746 00000 n +0000714897 00000 n +0000715047 00000 n +0000715196 00000 n +0000715346 00000 n +0000715496 00000 n +0000715645 00000 n +0000715796 00000 n +0000715945 00000 n +0000716096 00000 n +0000716247 00000 n +0000716398 00000 n +0000716549 00000 n +0000716700 00000 n +0000716850 00000 n +0000717000 00000 n +0000717149 00000 n +0000717299 00000 n +0000717449 00000 n +0000717600 00000 n +0000717750 00000 n +0000717901 00000 n +0000718050 00000 n +0000718201 00000 n +0000718352 00000 n +0000718503 00000 n +0000718653 00000 n +0000718804 00000 n +0000718955 00000 n +0000719106 00000 n +0000719256 00000 n +0000719407 00000 n +0000719557 00000 n +0000719708 00000 n +0000719859 00000 n +0000720009 00000 n +0000720160 00000 n +0000720311 00000 n +0000720462 00000 n +0000720613 00000 n +0000720763 00000 n +0000720913 00000 n +0000721064 00000 n +0000721214 00000 n +0000721365 00000 n +0000721516 00000 n +0000721667 00000 n +0000721817 00000 n +0000721967 00000 n +0000722117 00000 n +0000722268 00000 n +0000722417 00000 n +0000722568 00000 n +0000722717 00000 n +0000746769 00000 n +0000728385 00000 n +0000723014 00000 n +0000746706 00000 n +0000729539 00000 n +0000729690 00000 n +0000729840 00000 n +0000729991 00000 n +0000730142 00000 n +0000730292 00000 n +0000730443 00000 n +0000730593 00000 n +0000730744 00000 n +0000730895 00000 n +0000731046 00000 n +0000731197 00000 n +0000731348 00000 n +0000731499 00000 n +0000731650 00000 n +0000731800 00000 n +0000731951 00000 n +0000732101 00000 n +0000732252 00000 n +0000732403 00000 n +0000732553 00000 n +0000732704 00000 n +0000732855 00000 n +0000733006 00000 n +0000733157 00000 n +0000733308 00000 n +0000733459 00000 n +0000733609 00000 n +0000733760 00000 n +0000733911 00000 n +0000734061 00000 n +0000734212 00000 n +0000734363 00000 n +0000734513 00000 n +0000734664 00000 n +0000734815 00000 n +0000734966 00000 n +0000735115 00000 n +0000735265 00000 n +0000735416 00000 n +0000735567 00000 n +0000735717 00000 n +0000735868 00000 n +0000736019 00000 n +0000736170 00000 n +0000736321 00000 n +0000736472 00000 n +0000736622 00000 n +0000736772 00000 n +0000736923 00000 n +0000737073 00000 n +0000737224 00000 n +0000737374 00000 n +0000737524 00000 n +0000737675 00000 n +0000737826 00000 n +0000737977 00000 n +0000738127 00000 n +0000738276 00000 n +0000738427 00000 n +0000738577 00000 n +0000738727 00000 n +0000738878 00000 n +0000739028 00000 n +0000739178 00000 n +0000739329 00000 n +0000739480 00000 n +0000739630 00000 n +0000739781 00000 n +0000739932 00000 n +0000740083 00000 n +0000740233 00000 n +0000740383 00000 n +0000740534 00000 n +0000740685 00000 n +0000740835 00000 n +0000740985 00000 n +0000741135 00000 n +0000741286 00000 n +0000741437 00000 n +0000741587 00000 n +0000741738 00000 n +0000741889 00000 n +0000742040 00000 n +0000742191 00000 n +0000742342 00000 n +0000742493 00000 n +0000742644 00000 n +0000742794 00000 n +0000742945 00000 n +0000743095 00000 n +0000743246 00000 n +0000743397 00000 n +0000743546 00000 n +0000743697 00000 n +0000743847 00000 n +0000743998 00000 n +0000744147 00000 n +0000744297 00000 n +0000744448 00000 n +0000744599 00000 n +0000744750 00000 n +0000744901 00000 n +0000745052 00000 n +0000745202 00000 n +0000745353 00000 n +0000745504 00000 n +0000745654 00000 n +0000745805 00000 n +0000745955 00000 n +0000746106 00000 n +0000746257 00000 n +0000746408 00000 n +0000746558 00000 n +0000770468 00000 n +0000752259 00000 n +0000746854 00000 n +0000770405 00000 n +0000753404 00000 n +0000753555 00000 n +0000753704 00000 n +0000753854 00000 n +0000754005 00000 n +0000754155 00000 n +0000754306 00000 n +0000754456 00000 n +0000754607 00000 n +0000754758 00000 n +0000754909 00000 n +0000755060 00000 n +0000755211 00000 n +0000755362 00000 n +0000755513 00000 n +0000755663 00000 n +0000755813 00000 n +0000755964 00000 n +0000756114 00000 n +0000756265 00000 n +0000756415 00000 n +0000756565 00000 n +0000756716 00000 n +0000756867 00000 n +0000757018 00000 n +0000757168 00000 n +0000757318 00000 n +0000757469 00000 n +0000757620 00000 n +0000757771 00000 n +0000757921 00000 n +0000758072 00000 n +0000758223 00000 n +0000758374 00000 n +0000758523 00000 n +0000758674 00000 n +0000758823 00000 n +0000758974 00000 n +0000759124 00000 n +0000759275 00000 n +0000759426 00000 n +0000759576 00000 n +0000759727 00000 n +0000759878 00000 n +0000760029 00000 n +0000760179 00000 n +0000760330 00000 n +0000760481 00000 n +0000760630 00000 n +0000760781 00000 n +0000760929 00000 n +0000761080 00000 n +0000761230 00000 n +0000761381 00000 n +0000761532 00000 n +0000761683 00000 n +0000761833 00000 n +0000761982 00000 n +0000762133 00000 n +0000762283 00000 n +0000762433 00000 n +0000762583 00000 n +0000762734 00000 n +0000762883 00000 n +0000763033 00000 n +0000763184 00000 n +0000763335 00000 n +0000763485 00000 n +0000763636 00000 n +0000763787 00000 n +0000763938 00000 n +0000764089 00000 n +0000764239 00000 n +0000764390 00000 n +0000764538 00000 n +0000764688 00000 n +0000764837 00000 n +0000764988 00000 n +0000765139 00000 n +0000765290 00000 n +0000765441 00000 n +0000765592 00000 n +0000765743 00000 n +0000765894 00000 n +0000766045 00000 n +0000766196 00000 n +0000766347 00000 n +0000766498 00000 n +0000766649 00000 n +0000766800 00000 n +0000766950 00000 n +0000767101 00000 n +0000767251 00000 n +0000767401 00000 n +0000767552 00000 n +0000767700 00000 n +0000767850 00000 n +0000768001 00000 n +0000768152 00000 n +0000768303 00000 n +0000768452 00000 n +0000768602 00000 n +0000768753 00000 n +0000768904 00000 n +0000769054 00000 n +0000769205 00000 n +0000769355 00000 n +0000769506 00000 n +0000769656 00000 n +0000769807 00000 n +0000769957 00000 n +0000770108 00000 n +0000770257 00000 n +0000794781 00000 n +0000776087 00000 n +0000770553 00000 n +0000794718 00000 n +0000777259 00000 n +0000777409 00000 n +0000777559 00000 n +0000777710 00000 n +0000777860 00000 n +0000778009 00000 n +0000778159 00000 n +0000778310 00000 n +0000778461 00000 n +0000778612 00000 n +0000778763 00000 n +0000778914 00000 n +0000779064 00000 n +0000779215 00000 n +0000779365 00000 n +0000779515 00000 n +0000779666 00000 n +0000779815 00000 n +0000779966 00000 n +0000780116 00000 n +0000780267 00000 n +0000780418 00000 n +0000780567 00000 n +0000780718 00000 n +0000780869 00000 n +0000781019 00000 n +0000781170 00000 n +0000781321 00000 n +0000781472 00000 n +0000781623 00000 n +0000781774 00000 n +0000781925 00000 n +0000782076 00000 n +0000782227 00000 n +0000782378 00000 n +0000782529 00000 n +0000782680 00000 n +0000782831 00000 n +0000782980 00000 n +0000783131 00000 n +0000783282 00000 n +0000783433 00000 n +0000783584 00000 n +0000783735 00000 n +0000783885 00000 n +0000784036 00000 n +0000784187 00000 n +0000784338 00000 n +0000784488 00000 n +0000784639 00000 n +0000784790 00000 n +0000784939 00000 n +0000785090 00000 n +0000785240 00000 n +0000785391 00000 n +0000785542 00000 n +0000785693 00000 n +0000785843 00000 n +0000785991 00000 n +0000786142 00000 n +0000786293 00000 n +0000786443 00000 n +0000786594 00000 n +0000786743 00000 n +0000786894 00000 n +0000787044 00000 n +0000787194 00000 n +0000787345 00000 n +0000787495 00000 n +0000787645 00000 n +0000787796 00000 n +0000787947 00000 n +0000788098 00000 n +0000788249 00000 n +0000788399 00000 n +0000788549 00000 n +0000788699 00000 n +0000788849 00000 n +0000788999 00000 n +0000789149 00000 n +0000789300 00000 n +0000789451 00000 n +0000789602 00000 n +0000789753 00000 n +0000789904 00000 n +0000790054 00000 n +0000790205 00000 n +0000790355 00000 n +0000790506 00000 n +0000790656 00000 n +0000790806 00000 n +0000790957 00000 n +0000791108 00000 n +0000791259 00000 n +0000791409 00000 n +0000791560 00000 n +0000791710 00000 n +0000791861 00000 n +0000792011 00000 n +0000792162 00000 n +0000792313 00000 n +0000792464 00000 n +0000792614 00000 n +0000792765 00000 n +0000792916 00000 n +0000793066 00000 n +0000793216 00000 n +0000793367 00000 n +0000793517 00000 n +0000793668 00000 n +0000793818 00000 n +0000793968 00000 n +0000794119 00000 n +0000794270 00000 n +0000794420 00000 n +0000794569 00000 n +0000931914 00000 n +0000804409 00000 n +0000797363 00000 n +0000794866 00000 n +0000804346 00000 n +0000797878 00000 n +0000798029 00000 n +0000798179 00000 n +0000798329 00000 n +0000798479 00000 n +0000798630 00000 n +0000798779 00000 n +0000798929 00000 n +0000799079 00000 n +0000799229 00000 n +0000799380 00000 n +0000799530 00000 n +0000799681 00000 n +0000799832 00000 n +0000799983 00000 n +0000800132 00000 n +0000800283 00000 n +0000800433 00000 n +0000800584 00000 n +0000800733 00000 n +0000800884 00000 n +0000801033 00000 n +0000801184 00000 n +0000801334 00000 n +0000801485 00000 n +0000801635 00000 n +0000801786 00000 n +0000801935 00000 n +0000802085 00000 n +0000802236 00000 n +0000802387 00000 n +0000802537 00000 n +0000802688 00000 n +0000802838 00000 n +0000802988 00000 n +0000803139 00000 n +0000803289 00000 n +0000803440 00000 n +0000803591 00000 n +0000803742 00000 n +0000803893 00000 n +0000804044 00000 n +0000804195 00000 n +0000804494 00000 n +0000808498 00000 n +0000808469 00000 n +0000819317 00000 n +0000818973 00000 n +0000822756 00000 n +0000822657 00000 n +0000827436 00000 n +0000827349 00000 n +0000829254 00000 n +0000829229 00000 n +0000840611 00000 n +0000840257 00000 n +0000843334 00000 n +0000843261 00000 n +0000845551 00000 n +0000845526 00000 n +0000847844 00000 n +0000847819 00000 n +0000859461 00000 n +0000859134 00000 n +0000873104 00000 n +0000888440 00000 n +0000888060 00000 n +0000900573 00000 n +0000903503 00000 n +0000903275 00000 n +0000922730 00000 n +0000922303 00000 n +0000929516 00000 n +0000929293 00000 n +0000932003 00000 n +0000932123 00000 n +0000932249 00000 n +0000932366 00000 n +0000932448 00000 n +0000940677 00000 n +0000955909 00000 n +0000955950 00000 n +0000955990 00000 n +0000956124 00000 n +trailer +<< +/Size 2844 +/Root 2842 0 R +/Info 2843 0 R +/ID [<50CC741C2DC1A47730A035BCE17624A7> <50CC741C2DC1A47730A035BCE17624A7>] +>> +startxref +956314 +%%EOF diff --git a/official/2.1.6+2.1.beta1/TBX/Documentation/TBX Reference.chm b/official/2.1.6+2.1.beta1/TBX/Documentation/TBX Reference.chm new file mode 100644 index 0000000000000000000000000000000000000000..d8e5790e4dea9fb0ab1ebbc1e4e7fb3caca66c32 GIT binary patch literal 437963 zcmeFac|6qL8wWb}ea*gPCs~uSm9j>J?2+utFf+!?SWARrY=vw^WM8sm--$>md!mp? zsmPK_N$zLnGlRbU?(5$B$9=u->%N*^oSF0fJkNQ~bDr~@=Q-z?^v%t5$siDj1Mouv z{HRV!qG-q=5aunCOC=WvS?cZGpZ=Ef%aT4p5EQSwECz()&HL*RLm>3)xa!{A4AO+%9D zN|QTW04pnfBW+_VGm?>B+AD^1a-zEWZW!npM<{}1yj=HcqbH4=sIlg0eIqk-lJRt^ zF?#VzOP;)3yTg}WlWF;F+CGoVgygscY!PEve>6HCD@=WLI`I0ZPupza9Z zAq>(H;R?gIFx+4qfng!wPQDlnK!+1(xK%4%cORkN*~8V@%gH+cL|)K@pJpQ>-Y{<`3uQ zB5-x_cJ^{~g1PSL!ArC7qeNmCz(!oW{Q>O|MOr%=7D8;))ddQuoQQlq66V1~V7ptJ ztr}*_OsIu9IuX@0O%tw3>@>c5mtuqestl123@~9(6>ki}5$ps$a2KeDBf=1zY1NPzVzr%1OQ7N2@l}L*6g+bAvnufPdhodEF%9P@jwc#W8ep3Qmg%ZjFA>#-@%Dxh+ZrzOj!-7@!vTL7WtCw#6HyQx2o46Q znJS5JQDR%Zz!>d{7;`+FT!1hVeo!>j2?~Q^0x{n1?l9L~S!)f#$rawu20 zx1a0YiH{-7`W&GsMP@lP+TIc73x^_n!TI_07i0J`f(cje> z7faCS;HOJhs`&A2TwL88ePNhGc)fJr;kwdpy|-QgU*9u@47;ODk7MM5b_e~)!#ae;S6U`FmfZL;8uE7{_ z&*OQ3&$iFdMtR|%CDJm=w?iQ=h=ss(kHzGrkYq3eiUjP)5e6*c zz#5K#*~3xp2vA?eKQPe(09QQz$10CgOz{G3f+rImB{+9nZArww0uG=pfM#cf$Jdug zrrCmRIm1v$7zP6r7(h&fJ6@w5HOA4p1RU-J7&hD<0Y{@e+&#cSuUYbp75f|a2SOA) zea%m%Soc40I0A;o?Bdt$qUrv`1NP$8n`VFEerP8c1`g_?=IRA($RG3w7f&<>?v4P5 zwWeCn6jNQyo@5J5w7me}Nr6ZP->>QxWE6&d z7bdPVIMVjt`|k!4WWo^;Fd%jWX*;qxqk{hzjskVs(as)y>Q5Yl!BGRT0giu1FeU}E6TFlR43Uh`HJD^Kjxp1=&R zj&7G6yieB{>D*6 zJ1?1&h(dsK&KdAfK)3~WM7aZg0?)mqi#&d3#CA{w+8%=h@kRD1oa@9J6NuwxvpviW zl&<9E@hBkqz~g{z0#YID0mq4S@dsV!y?a(M;(y|}XK?E$o_}eTKbAPl2=pMeGpOCt zo`4wgKj}dn4)QM@x)d${C+-dlM0%i+;IdIVDUFr;6Nkb4VK9U6huu>6&RpXwzwEXs%Iz zqVl04r@BQcMOi^1L2-wikvxQqiVQ>go+N^Vfg~QH4oQLF@_(g0%y9b$e>4vd*y|*l z!p>uf6Cc-oH0Dny+0=9?_TVl((jCYrU@+9qB{=ingS!BJ9K^efcO2dx95+QlJb?vk@;5yKSO!46p95?EH;x4Q3F3tU zSRir!Z~G`9C0<2WsV_zT}?*x&fhB3ZUZ5lvhK_sEX{7~tv4ejSWHyGxI9 z!B6mA^DqA%9PR%XzH9y!apqX`e{pvdlIUD3!Z6VeyEqyE0KaDM;tU7nukE78>i> z;Z-+e0%MmARpjd3GTlxnI?MQU-W=@ zfdu{5X~*CqYr_0NV=!nZl)YO35FFz9wH(w7-@{3|9Fs932SA0_x}KQLM-=j)CFg zU?AWE76?54pbNftc_rYx^RqLFK6=mcOu$k8JM~U%Wf?zCZ(b|LBBrL7{{2@|6}FV2K90gYR*GrSrB}VsyBJgQ*ippW=!o8t@Jd zL?|vWLi`ZNiX}QA9F7kl_836N7ssee1o?Mye1HKO$W_ajGk@W`2GH@#E{eE7;^>JU znixITb+X3F?4c*(XavClT%(OAW-)kr&;tN71dKmh@=?*8d+2dl8ZHe2MgcEhL5EYK zRF)PIm55`Fj&>OV53dA9gHzK3I5TPf8ua^IASNSF1Q^WMO?D+y@CQ`3P3osrhEU`rY`QS74PJj*Kz}^GQDFBHC{bxZP?@odN;yXtJ`0hU_;=4@{ z-^JO>9*qQ211D!McNAe4sbJALnqas9?gYdgFlWH|p@<1iMVnysQBXZZ94K9OW^+Za zCHB-+s{JVf&);z$?3Rlx}HMdb!dJi&a4IAGkkA@Ildud)b*CFJ)z zI2_}FYXZcpl!*c04vs*&0Qn&pzf?9Ov08uj4-JGrJL6Z`eK?*ly?5vVd}sVBN13Au z3D7Q%L}6Tr@=u?N6$VZraN`3UYT{)ochTyJuaKM+lAPDhV z{Rb*6!Jc<;v#RQKgz|~19X@5ubr`?;CSxnqTri%5<9p!;p%Wpy)QWX+82Cd2x~nK0geC=XyA0! z72ymqt;`{L?tV-q{feoM?c$%Q40h zTHAx;RzmPhqM=tb%JIMS;ASRBU(14J`Y-N{+bbdP2Yel2FOk3>&<-$JfyoHc4^c#G z?xFv0EZXquRE)w74s7KANB0e-7T9B;Zg&EQ`{llAxDz5k8GFvx@hiu3&uDYd^#43v z$AdHKN#hzB@Qu3~7XQbPu!}J2l=hh$3XFJ2(*6p@1zpyhM%3BG?1qsKbFX zSm=(oxc^8HYXi>0KMwqH^4@>Rd5f?;fjFZ|w5pUN zS{Cdt9{0vG03Lw(fq1QUv@FB|JOoTf*aqnm@)oHsb z9nJWMY=AxNSwUO7D6kTsM+8>iR%N-JOKOo zbM0$g(7^@}TgKzKrPJ91Fhx*nd7^PUTEpYGeOMI2nc)B1S_I=v3HG$-LJxlav}xQV z9JB1X>$B?}3n%5GY{771=eiG$u06rz24Vk?SZ|LzFDLG=wLcV$vICR&KX7o$x7S<8 z>JhAfa9aaUO*p)7e;SM>#2O$m${vV|;XA2e`9{sI7r5GE-ImjC)hBMETI6~1%?rq z`w-%iqA=wcLeDWUe}s$wE(4JMEeUa390OdY0v@pcBWo$@wum8QRYV-v(Atfq;jD#-|0z_QE0z~DUmU*oT)(s1D%+ee61%s@a3U8q7{w6`6h{Q!D+8qlHTCi= zasLdMEVyM5m%ae2AR(Tt+7gNp1r2}a?ir46bGdjH!FKlCJOeJC5z_9WwR1NKwue9O z3&h|toSVV7TYSw1dmI;8qJZrXq6UjQ`J#;3R8?^|V$G0_&aQGszy%;f;0Xxi*nz$E zX2AVFVBwTIW2OaMAp;guw5yAp7I6FxTxWyio21vtN&nw^95^k}Up{P(3#Hw>QE)lD_{YTU{~wTCRMOQ_P*zctmr>C^d`RZdA#LEDrh<}; zyu60ImdYU=6)h#LU^#u77s+er?QBtX1z`M-WA z6aLOW=n8SiLbzK^e;oV&pX>+__6=}*2mfCGH1JOY|1|JV1OGJePXqrn@J|E(H1JOY z|1|JV1OGJePXqs7)c_e}Kk$tK^biXO0^$tp2EZXm2nyl~K?DC>AufQ}^pG)spq?7|IRN|+Y2<7P-+&MbRPK4fa1R2nK?bm-W(UgxKCrA514~(Hu*^^dOL;Z0 zwA2C1Z>PaB%@iyHtiaOG5iHd`z*5x*EIs|fQa2PVi*AA?PdQi`Hh|@m9@0?Sf;Fk<*!Y!d`AOnVvH3mqeQ^cMhYxH9|g-$4MM#USY`!+rSDg;q(FgNGT2qH zjPnM+7vkJ!uv~`Xz83-l34afk)oK*@&w<8ZnP3f;5`|#7`U5QAD}m#H<3bA|hwLY7 zJV^uLfavLI2wJ+L(7@jz3M$GfDatA<$twW3DE_-AaIA51fwDm$;+$frZk>n3kHDzY zLU#T-8TbYZdWgBEwV;V3@VENzt`JJ#pFJG-9ta2p&I*Ayf>!uHd52H|ErcdSM9>2z z?gbbDv$=@b8L`PQZX9z>LJPRNEcge2U%2r${g-mpYB}sCu~PFR|SDB6k#e8MM}tbDzl5KWYJ+aBAibC_WS&X=H><&<0}lJ*2}z%pnsmo?U9cTB( zs<(&2la{u&zAwi%|KuK3VL?m&GP!h5|136JEB{B_{)%H77`6uwsOFxL`6HkA$U9tf zIPKua75eQ{SiIqg$B#xNH?=TZ!;7&O(UTP`D$a5Vjn z&AE@s&nqLMNYYq`dUcf9j5l>zG=2nE_p!~h zgbno`{+(zo#ur=jgK40{jLU@m!B5zknT*E42TP{{zO*ZnPnU1Dxgjf#uLz`O2asJc zSr%U|DeV7pF5=k+-1d}^zUYB(Q#v2ri^ zr(5?SzUjzwhad6GWMpwcu9VyuW`=X?SsWyN`JDBYXC0n`V~c5H7OgVk$gc{5HmS? zPlGhYO6YIJXRkQXdq;mrwvKV*dLIarCt;cH&czBIx5+OSDy%x!SC^*6wRkc;W61iE zHMTd|SCHdil!cgxH8bCL_m2y<$gQsdUXSmcykGdTA1%YnZmKcMDY14RBemFT%|Z|7 z+}CrDe7|F3L2Du}&-Squr{~!G6Z`@xR=2~-sNKTFvhqLQsj~9qu1HP3tClYlH@Knq zm@{&p;V0HmE?T{zCCi5|zs@YwoM+_Hu2Z=}8$9|=^T9nbeG&7yX00U;S14aWOo8r& z7hem}!N)S)BP4GnWv5ejMDp%iabr^{`t&eq^>XX7K$qI}l>kd-mUo9tsa4uJ6yF`Lorqx3KDT7f z{5Dr3mjYcx4jFQ_iS>TRkvhI`?dbPA(p;yvR@V)4>!7OQlS%1w+`o1CZjP^ECXt#$ z@0c-z`+1!@W_Ye9-eXu?LFK8^60pMs#!H%Hv^>K{=H(($Bic!wIz#ARG+)?WvRl#(y5u)Qffu3&@bF) zWo$c40=Ykg3tb=&EYn|H%Q<$)=7;IskFA4)UMx;&OuA8FkPdpt+A;S+Zp%WF!22qj zhAA`mhxW;>6kBM9*Cfh!>XsNsoLtNHTj(l%(_KBO<8)cY&1jnKTjkb=Qyh6AW@DDt zEZPi_&>ylj{14RMO`C@wnBdarfRGssW3myiqcQq%g?<>Ly5}Z1_u=G^@`}$#2NQmpgmpL$sqosmUW2u%j4vo{K9{z5WamI9n zB`?Y70_Bg4xr{aMvL6&TLTW0-yNmw@2>DRz43pkFH)-f3|J&T38873rGONyJ11sRMK&=_^Ddgs?~HV>6Apx1{|eqYrO z^MQ<)Dd?x&Zds4{qVvj-vCQRZe!Y$Ob(eh)mp=ILOoZ#d{!r-k?ZgGS*b(+uGkW8p z%9WTxH%*2pK3S%W-(>5VIY$_O*FO_Tz5iy0?xUxIF7ino<)?ZdhUX;}isZqe(EXOC-*7P8Ujb|jiB2bWny-xm-G`TFyNdg&a0!)4D`kUJ@4T78z~o9M&! z9VHJ)xdv`LTU_PaZ}fE}Pk^V`2zxY>_bb~pRs25g`O6v79ZvJ>tZ@n|!eT=j)eMq+ zdWQ}qpFPjXCd74+FQD)cT>Y*_$`RDm?4Ut|5&u&`VNI0&FTpYnX4JVLKC>s58fTPY zecN>i+u)*mOq%cI?HpY@U~~4>EtE|XYiH%;!aC~A$lJvy`ch|De_#{d z)MKZ3e6M}E=58Iwdlk+m_Sr-d7La0rp^VTLl#c6a^sz9R*81=?|LMj1sJnyPJcTa0 zziqph(BJZg!_wPS(u6y|ulXEY3G^59zlx}6urmz^YiX@2t@}9Bsw(B3^Xy>EXR7Nz zlP4N2L!R(Owm*HI)b47;8XTeiMjqGUvh~C5EpM!l?3(eRK*oelwP)O0$Mm+BjFR`0_})6i zpV1qxeftrgZ=~VTq%*nT32BjB6FT5Z-f(dN4Ic~}=IcGLy^<7au{**uj zZCZ&tHde*?rc;)9x9Tmc)-Yt?;ukp8C<7U%*FBPg(maWB8Jj{B4ZAHic)sLk_RGvx zuJ>gJkS0<6rq8X|E;Q^L))6;u>O~AG^6{t-h-$&7Oc4zSzGOLN;bLmQOg1 zUZl~OO_HCTt$SQg&Ob|677>zK*s(P>8>u9A=ipdzR92ivomKw*>6;o>1{qBUjk%;( zXG*4>HB698CtBZruhi>znEvROu0~=c(W`2=e^fqeAB}IUteEuLon|)ncAc-xvyC#w zmp@N;bP0uyDe)QP={|oRCs1tz*&Mdme5+aof+nNC_^zZ&EX#;_i5 zO6i;3q@Vu8PKTtNtG;_z+-Weg`R9!%%L%_FE315s2YRaCmodsTmr;JmMUL1q|2Xm6 z<;Wo~f$4^>QSqkp{VnY*8@EVk62&G^!8+_G6U@mp->2hmxqkRq3FAhV zk2}I>lySva?OCFgdd}I;GRwbNA5Exg+nAEd7jOh@vPaDqah^(^*jg5;Lxn{uZOc6l z_dLbyaB*0j&dgIQrBa&jokd@$pV7Qq$k$NzfKmS3J0hkdU0>63T36R&--lCvxKVt=vhMo9fz}-5Mw|9$`ex=gsBGZ>>jO@}Im>D>_x5bqC?H zwK|qmdv7(S{!&Sy<7f{yYlFF>s&ZCMJ>Vcy8LW$8{{tcAbS@G|C_QAT7jj;JYjdip zc7qndp6TZMp2O}lOKbDyD|j(-t2gS5(~HNAPFJg@X~LEU^=dWG@^pCfn#jO4 zB^|E3J=`NPaVpB@m*ybl7U_nzP{hY4biRHwhM`obj%)tv@+JbNVwQ(Jorgz@+J6Zp zGqliX-Bcj?AvNwOkU15rogzAYx6~gUmCr70@AcK9uzGEtmxLR<$&obbZ<~f~+F0<5i{AK9Up^p0lJ3 zbo;aD#N(k!B)8qo%*9YT^X=Yk%4A#NTb_P2hCXp8{3M~P23BJR0S4CdX0taNp9ogB zJ2oHsa^^lC#WTA59T_nVkcvJP=_29uU)OI<#tR>H>vZS-tVQ}pL74eWz_Zi>>(bvO z)NR~9Pfm95$+q;mjh{V0a|1zpONIm4Sd2VU^$9ZIw{iGLF^45ql7c6It6Z1i_1ri4 z^O;I>iTj4>1>T?Qe5P_59cBOfTD#96ThN`5_jFX4lvz}=*6V|f)qbv4vb;H@&7rSc z+NH$|DMXFG^A&VgEqL;}(dGxeIe5YHC2hW)xvOZW4%gf9=f8fFl<6i`^WEZcdE=V8 z35%0EFqn46N^a^>8q3kKaZm` zRlh|b{kz6qbgvwF@JT$f8YQ_uv+%+@EL{`Fg#$}E21)0oT&A74;AY1{uFLr=cUP2- z-=TH;a7=dMJau~Dx9?+@?Zv{it_sjuIxvz=zJB_P@7H%PgYaRY6|3;O+`1$ z_|`IL?fR2`tg2|xzESBl9N+v@l6rBBsh!{9q~d3dXN|Qd%1_k8`8T~LzP^}!W8*b= z)z0Q5>OALE(1f0BZazb?`7C=g<@pX$v6%o3Rewun+D%PspLaf(k1L6Gj3uXiV!a-s zUn}QiI?bvbKX_q;l|xau(T=65CD4uaS#B$rdbep*TH(9V8b0dm!1Nsd+hKOrOjd6f z7?Dg8fx2{55h7XdBK>JH+x!azCbAnZmBhWIQx>(5I5Ts5NcXgHDstHHQAg9Svflp8 zYUMKJ#;Kc+UKr#m+bFiY)g4t2MTa^b<1cbKEj?g1L){_A!%s7;l`>5Dv-Z3y zZ-I2u)jG&z8}dx>%0ulHv7fEMRP1jI8YY4^p4pkl&08+iy>N_Ue3|NxREm7}k(*ws zRU@ug**8c#?Cq-@$)*RzYKNamP0!zwef(Sf0@u|WmiJUX7tvGDnCjo{8zSYIs6S}v zqjwQ*M`lW&e<=CZ>8_lgGsegl?a$d}%##-$$;Rg=|6JC|_&mH6df9W#`>AV9Ufg(h z{wU_OB9gOe%Be~4tJ{@<^bT2=rNvt3o&FBfV+S&6nw1`qTMg zAq%?nLMZz%k34T!plbnrfZ~V5G2i7Mb`-o9Igwb`V-}I|eBAI4uLEnse%I9I~8@*!nVtTQV*)I{UVh)q$ep ztC!vF}n7y?@BcgQF>#NyEJowRVRZGuF0AyjstvL2D} z^QlNKE^GFRZH#lj$eC!@FyWdpGYPrLZTx@(fmVCt6+Pi8@IE!{m&DNbvuZLoO?)LE z)Af@>NoO)r|^s?^S&3=JN5+56`slt7^$D*$sy^eX_BT)32q%)JZc*?(? z&IWRowRGTE_H5d@Bz?+PH-3+;mwos+ph6Zg^z!`Dw0H=%?@0%LU0=!MiM*-b>30WN zuJ6y5zBxbF%b76LcUWe~aKh7jHtW{K*mNcHJc4z0M&|nCm+Pb7XR803Ra%PKsI(75no8+6#ieF{~=L#f}KOD#t(e86K z8oV@kN~qyf>3tS9ao zBgJwlvV;Z}MYb*!SuFTYcshUfb2+#81!;!R&lP!{{xuUc8EDoBcgZKY$NCS?`a@4Q zUS5pfFYNR1wnk?^Csd-iE&O*+O%wHJ|9K@LTlhlRx4K`a6odBB{$y8}yYF&P zDJEa6e#1{iK=6(3nvvRt%f2_ZuCl|$do{#Vw=z%rs@d06}5t7&l>nTFn8zb`b;BR@(wJhNcEU+k3^Fd#A+vRM;W zK3-ZuetX>9yk|MF`nlc^A2$s_^(ls+H&67@}ax~1^Z`?{O5OQSF5Kh;$f zm~UA8G_`#RJM%VN=dJIX%G56csAH$=U@XxU*Z2<`zAL@koi-Tp>D=#Cg_QR_)ns*# z6rRjg*QQMJw$eunFOP74Q^ItNK8skp7Qj1pYMaC?RrJIS(YVlSotaPV>SU7Sbv}hp zJxOVmtn~Lhuf3_4xGAb!ZY*q>|LRmd73`F~)P0!XC4H8AYopOG`s1hza_hePYKfci zSSz(X4-9l;XD#*#Vzq=1Q!yKdEaz5zVlwJL)+%r%sWD4o+XO_lw#3fqE4-4aDi^<_ znMjhJqTK=;rqw$+nxG}tBa2OnFnp+XptCtl%(fyTyVHl8#Ic;Z<>aC03e7=_`y*;k z1p`dRTzENqv+Dw?CgA!}e6P*2N>nX1tP@ubz3e=1a98inbV~0u(?_?9y0ufHm(C#e z8}arBY|Xn1cv*O%DOg5tRs|Ru{XH9sB0`;k0HS6k4;JzrR1FrSQqIhE8#w&s;*>IP@akmt_B`q2IR#!h)$81HP{-s8sgl+71fr zA9Qx!GWy;#cik=Esov#UrPTE^q*GQ5*EK$MN*K9kSM&LK&j~!YZ8UA3ONbmQe>xwZ z>eH6Jl-15q^!fF>*bz3RcXk)QGAgzVY`=K1Qq6j9az=OJou$HH2!i?~^*&Qh%l2Ha z6D~5Pik~IVTPjS_t(#vVDXB|2!8dkC;WE`@QI1lLPnVv%4EaQ=zHmMytnJKKO&?kB zXz~`mrsGdOoRFX_nX9^Rz3MjO*RDF=N!3y3>p!ZsRrg8wtn43s!9!Y=dst8Wu@IbZ zeZ%7N%UYJWyZaSHgc_!vtf!v52WGWeWIFh)mh>#wQtS_(eyV$LX~}{Jwu1Y54gR+E zuCK*!BdXfAd$+f#KSCgnsqHLCIu3@ugJfNKdtmj`L(Ub0Hon)anlu9>MxhAT$uITq z{6nt5WS?cKp`1~TYwe0A0;7XZ5B{Egwp;~$fH-#PXb;cC%9}?gu68pE&BeqI8U&G3 zakIRJ#6lpkPa%WmB%h9!7q5=phu+rcE?di9l98-Se>@}UuH{01Q-(C3^>o>7xDv!S zAQ6%DUQruMo5Y*Q<0Rqvl3E;En{`W({IcgS>dW7n?DVkqm%o&{-Ge)ON}{oza?Q10 zV*S(lD|%uqMw-K3BU1JqE*FPBU~y#ke$%Pm%D@i&y#DHnf8PzS*@G9(A%hpG%supFR`Win- zHA5K|UjE!~Oj1l|{n5hT{bTY4*e7nyb_Kf7kYAY|t3qE)mA>Dc**vIqS^mq}p_9vr zW5v3J`1Vu!|!jQg`GJv%h_t?$i0W0Nwhj){e_{fn%Li zPRZtX`B35T#_b{ZlBnSErV~rsx1KVd_QPhl-L7hF=*+*a_$G*UWa)AMxm9fudRI3q}WC zcr@4wJtT>0fc0N1)DY3)HPKNErchHVOfH$274C$6YrUDLSu@Er@a<+ioHhTMbdPbB zgOk$Y+spUY%6+puDbg=G&h%W{nzk~KimKYr^#E2~Q+;L>;|~ASIxyjtv6<{u(aSaI z^^R@m+ve@{JB30%S$}c`T$_(YPyyUE-{5{mI=mte;u+$A? zt2cyP=}Xm2W&hWv2dph5FPnLwCpZQ}$Ir5PUo~H&IKiMdGqy;1cjIEq?DqWdm-lqW zcj#iDhAZesG@qdOzD4)4i2hY+Q|le!I+_y4@b9>imK1^PHPV7hsTjS z7<1gbI^jsY&DHQ-idXi@7ec} zN20+cvH6tc{8b4L*JC{WKO3+v@YEMo>vb=aqEUtep^dY5jZSVAPP^5;A4eYuXdlVp zbWib7Wlnpl+oLx;aQYdd-`J>7<9E!o(DuLqh|VcPU!lg!WJZTp479OvOf_t+>|Qc= zMC`mHBWd3qjBnXySG}FFPsYKTY&_=mH5Kv!o!3-ddeU}t&8>WDH#oRPpB-%Y`aMC1 zYpUg_H%;e!emO_umRplUFty!7=-nf_$`@0fT+pbjL8aU&&pnc#;(Kz+Qvcq}@0i|SGOC#lcsUHe%yUoJY=Uu0dP6X+7PdE`{o zwRb%k)FLb4aj5Nfak_jo3xDkCg+Z$)vL7)tEZmnL<|fPDFbOH*eMQM=pvb0hV9doP zSg1O_t*$gRxTRewq{OD@wLqB0rH1hR<{8?{R5Wijjog{BPB$rTns;N5JX`VFwrU|s z(39dTJjU`6tE-*%EC`beYvEC{(+s(65}@(2vflAL=YC})Xc}2~^H|4^YYzN?q3EPI>&_KCcl33VS*LH@~N-*OZ(HQJ^z^RiVyHRD~fc>P}o zn=BL=rf(lF8RREQ&^)wl@SabVr7$i2YagY`MsW3k_jS^32TrJS*_EkXnURv3@VT9O zd}Eojh;_g9Lx~4Q(T4lqw8YZ87fq$3#K-R>D8%zTMM|e!V3}Hu?c&4)cRxMoF`VD2 z!|3cOBF$Cs>WPNxu(Eq{PiQvn(}lxV7{_i2G5CKY4YG3nYPiaTmhZ5X^m*U>nY&f}X>`qgWPs+#ZF3o>8^HnH`&PbN>7mbVNO+lQ&B}8ilrAR-U0gyv^|S6X&rT!e2F994qfG%E*OCjL9FP zdkBRtP5(GMcOp&T+rljD*+)$1@oUx0=5LkFepg4{O3Ql2c4GWoOJ57Y^a4tP}#Z^`avTznahk|ATWvY>}| z%eaa2s{asssR{Qp+RKg)7yC^_S9NM0=WRZ8 z7df>M{?)N*acm==uVj-rR7v0&X zcc3Q#|+nYs%Bz3zfBKh%m*s{zt75L%GmnhHN@Pyik{U z+wDu3gYHV|p$T&@Rfb%Su7m_DRenOJWBkd6R$?a(0zJuhO5Bk#@)4xTl7tS80Fn#TF5p@eG6UGwLRQ1s5 z)dXwx6_Wc&d9hc8p6Fi^HxFPnGNr4hfodgD?u+<|9ndF(bj2Ic!+WIYBIZn7;x1Bi3GSoM zNm!cKdUSCqM7>%@tK=%VVVd(9Cb~?Cl-nO-g*Tg}IsAsT%2MgqIL>LS#Rz@YH5CYJ zUZn^NiyQeYLE+f^bvBFsl4yP3`-~4GZOdvoRr^;HG-7_{I7@bFMnx>ZtT#?(HGFw-q0i`iz_o zp-49~GvjENoYh3dHfah|rJ=CYoT~3MQig}nWLu1~14U87+FZQ_D@utm zY+d4JjMZx@Dn9`qx z+5c@S=I(&V`^%Htd8U4ym&HPv;Rg-`MwG_Coz)3=QsK;& z9#NJDth}Sw%gEvSGd4~ZAMzP99*QO|JxD6Ke^^_ltLRmtzWNOJ@VBqVxwQO@o3VV9 zmrK0e3sj9p?g~Efde(<1v(}rNtdtuOtS!71n4(yE9nRoiOh4$T%kE;@N8)TaokQ_u zJ5%FZyrP?00jE*L`*TS77#{PK#CM7|)JJH2+cOzr*tt)3#0H&=I`~l$`^}WfQ@p%6 z$}p+utcd?x@pqp!Zd|CbxU6Ejc%-1~C4EC@PkIH*)y!j}4#yA|rQOHw%cf6Al-v5r z1b#Z}*$`x$<7ZW@7nUFJH7AYEIK;8y=baw2l3dw$T`d(3I&ijd64Iv~>%xkR66PZr z3yEfjqrYMNBsdq3=W$r~JGjx#n`NFl{@n0n1ZvkW$Dusd>!6tPfqYl2y=U2F7j#aXNrueMpM*sSiWI!BJ>!rs;gv|enfQw? zGg5T>()uE$0qQY|>DR+l>Pr+>U(R2lz!raQIpt(=3rl|*8J4GXW-5{WQIg*fr+Te2 zIgCcMW8-SU#Sfj2D&CX}KRcUz{)zq>58)&}vLs&9elykxPg{}V{bm)w4nVA-1yt;I zf6vjx#j{BntJ>?*G=*KJ!Tu*24_te6KFCX=_{_wkNLt3zD6%&KiMPWBAIpbuwB}NI zPR6=C{N46+zrMcEhP>W4Ib&WbBZb+RH?|V`0@Sws`pchIKWg0lV7k0u9Fn*wR8+$p z>9`bTYW~LM?gA|HKrVHzQw12 zq5FA-lUK&*h4M|WUoRF~5lgfY@w9C#Oq>=i{ogxK)5#iSPc12p`V;ukI-!^37Eoo8 z7Fd4rFOgRs_3HiZIiyk;siIsy%^+=ep?vMP(aDqCN-XtrOZu5z(VP#l$f&Q&Eb9sQKonq@XU_qPRrlVxF2 zi1uLzT@#2oT`t2q$39EfOPs4t4{0|@j6*#kPSI)K{I1PAY&m7S3HF^wi!{QiH{)V| znOlh-h_XP2GAZB4eGn`nEyBCTQ%^sgEikYMx*8C#l;f3+}&hYMoZbKyIV4kvEUp4#T4-v_o@oFc_DA`8u4e-n@ zOMP5&q-B|u>&PEw@EI>JI$QB+l_r$3$NOe)+r#`Yd;N#WXL5UPZc6=XZ+dqwy+P-? znZ2)Z>V;RFsnD~HY+q?8w2qS-F)nbe-)Z~C?^v+W!dOhAuU|ENLn{06=Vn%Y{?WA> zlDHN2;{s|BixlI*Lxo?h_s{%fY+zFWMMw~ zX=p!2^OxIHH{C9pyf9^hik{=sBac~aq_-8R?ut{cu<%jWJW5%-c$#d84@>#CIK=VF zE?GGYjt$GSz@ykr+b9kN5z8c7VkibQRnX4n>9b&ZuVo?`+IMyzv1BpH7%qE zt?uZ&$mkd{yC9PTa0jNALhZLYV(-gZ4~t35W&@cmUK6V}9}0a?l-&W;bhszO7Cj>n z6;tWeBpBh4zqZz1)8#!POp=^RA3I91MqO9Q_J|^5A8r?|gq&h^>a+fmpimhv#&pUt zW)aR^H$t;9kp11R4dAM_W;-6&9<4$4+Xa{|r-i;e-D3gHnH$mz!+P(lVi$C^KrxyY zvdP`yZsCg8jLqn=>|+Ara@4xN#p)6C+9ADkSmaOwA7I~4zen~f4@D9!D5?2T{6{IM z-t2S(fm5FxQm8`!a%9$Bsf4ZNd$t$_A=op&J5NK#hIu*>QZQEMnr}P&K>40@rj3gy#17ju6Kry=k zGcD4dfLk)N5g zSSNj=teQ0M?SU!GlG3DN*`;e!B*{bG>Q3Lg^y!#pq$4V}NUxCHz=6d#k~j`b=BYqM zWN!<$8}L89KZzHbCzBDJhF&2J!2pHlQYZptPEuCkDxdg_{Nq*UWP<1op-Pk{%lu|h zo=(5xEt*%#ePH=ljEAsB7(vYFrBq6VCGCL|yeLlt-@H>$=aZA33PgEewj|XrM~aih z>z3&Ro$<_V>}LIt?5m@sIMZD!oVreqK@9j`L$5}@x?5OvesGt& zg6HlvE3Vn`*R_>!*)?a(Jf%vJJ>u`Z-SO~cG%yucBk=wmt!Wa0je!Hva}8`;pu;Fd zS=7*}za8z#S7%niuJPb2E=Do;FK)bcp!vKqBR!Pr%Y7(D?pbh1p#=))QA;=Fs-;Y< zZyJFPauiJNzJ_(mtZ+D-B@o9&M{PVq8n{DGFld*J_=rQCqwk8#cpE{m`bf6^`SBsWCPuHbG=7UCis#5DO6e zr$qroU8#f!#LU1UR3gnuh>Vq&|Nbo>8@aqrxMveD4B>cmwc+@wT13D~1;lWo%v)q- zdY~`;cT}Zdd%Y#c&$jd_0n3%pi`>c>iwz&5E6vmjfcTyO5)u>k0bszSa|BMp)dA80 zh#|+8OlrqEB8$qqyARV zAcsr1q+XHV9nc^mZV9AFJkq^$P)YiAOK|CG=$xxlMP6O^@5-qMB{#ipGXrm*CLLhD zvPtLgooa;sSvO0krin%0dP)8m)RJa^l{-MyD*+p9peTCKtF0yx-4kv5WawsOR}_e?`-SSUF5*^&OW^9I8?5P-jl|^H=Y6Gu?&V`Y^ro-PWcj*Tp*%)75os z_$R69JNbuQ{D2EvrBS#9>Ft6xf%;d^r7J zp~(sTnc9&qf2?mz^VpX+Xal%zHI=S>Ww&fIZ+ye06TQE|`W`iv0Kfocl-3mlorOmd zUn8N5u#W}V_m{Zq+NFb}Z1h+1Exv-@lP#cDqA~<#% zelB1HS>6QM(6J)8IpFY9&Acy+pc!l%72;VRjlso-4jnki@&Q1sYY*VN-H#?xgjy6L z{AM@iPnT!9kG&5&etgnmS43_$mpzw5`!BvH57pjI&R5qBHw8;mhT(sp)i5f?KeEXj zWU=uC%WuDtc;Gk_+;H)s3u@R-AZE@~p3hgPtYVq0EiMVb;?ZwK=5Yd=8oz^AfovF; z$5>oB_J28n1m!A!0p_zRQAjrj&=^_;&7*l)kVxJrx)gTlNX3ZdeltHK{oYMU&y!^$ z_;EyGZ|yt7WzTP%_+PW0AvV;Du$O5QZlDIQfYbKd?HCP2;-rw4Q7$Q1ID^Q~ZJz*N zGz@|mGF&ftNW(H{vGm=-VWh|De$+Fg*zqCj0D=!Ka6!11pw%PPatHv3J#Efje;hs! zbn*>hyB0);v=vAtzqV8b-a`&^i*FeJ8KmE4*g!DFt3@Ks;c)$jWqz%>*kB22$*>>s z)!thM=UDssbih-SueQpZ;pyl5^LvJ86FoY&0g7APWe$9(&yFU;-U(Xa0BI$(uw2rF z$eVQHj`@ z36CIFx&qh5jPsWejtO`>f>~FI22k`YC>cMZ2k2V&kPgM7P}BPcPryM>B~$bujcZbP z%7cvxu!t8->^T2sTE}xR>|xLjc1}0-)o5nT$h1T&r?~je*P}R5-_$qx1fa;F>@49T zff*PSpa=$4zA<+_f!sSCYiDI<1Q0$A2c%E_e;L*t0304-tpV;uXEjG>xTh}< zibK@(Czz@*z8LP&6NtAN*YWp%Vj3<3K$L0(?z3tWi#A)iru`Y9h$uZS8G-EuJnG3- z@)TC#V_Pf++x}>IO){vzo8VB`u4ArGwCAJBRArBVMmSbh_cG(;4O3#M_fV-MGEJiZ zb)~$W=2Xwb+7BX)|BUc=cqd?SYiBttk+N{;0FF*D>exv94{(4%=+TUTs3$S}W_vYa zfzKO${PQK-5}WMYh9fvE;e0!*u0@?4#xiZpI=G#J2?MUTj2Mx503mgu^q5@sx8 zX+GiU<4=&^>6tG@B&a}@>kmFT*|ybwc5FLkCfEm@VpDz|37ltSW0ldJ8gwpW0S6sA z@txoS1mpOr12JIN{EPsTKf`r_JwyCdc4rOkwypxm?2uX;-RaQCyZJuP6~P5S(IH|Y zm_=0(|Ja3U;beipt}1G^@Hu(7XYL}hm$$)qJ*%N%RecS1!yBvvfDQa>31O`oTY~QL zyU3w+ZP^;!4(AaxSa8l>tW(Q3O7yY}h*j?a>tOQUS zY+Sr8Hlm>)a(Vo38-S?-9e3=j^ zhMt7Sb{Hx|<8-=usxKVSt>UeZh;NeG+A25Au?@o?z~0Vt59YvI*%$ZhbtP{F8hZ8B4T^J&-qz)=yIv^hu=}?1KBNcw-CXP=y8WEyI zF&|SAXtcEvF#I{kRFs@wZ4%dHTnuzKn#-ViTmQYHN1t|xj@|~MK3V4HwO4CTP zOzb_`XHGh3mmltFAN8wy3nhA17xK)8qe5rYAjfvxQ3*B<`0zE2w^&R%cBBDoG2yZU zJ~8Q^-Xp}5C%_gLldNZI{{Dw84MYsL5z1E{sx!iv*RrhcU^F2 zcglB;qYO#VKjNeBFbGz01p#p0C!0#g=Xtvo027rZ24JF?-u-A=N5RKhwSfzsE@>%r z(|Txw2Lwli<$K6Op~@rC2_mvev z%ApUrLo_PMfcOv)0ssI2Gz2s=000kFfhp3Sc?qdSVQ2!F4aDBY6YF!`j~wt)wv>_H z`qZoSN3Y)-|Nnye001KcM>PNddtgpgV^m1ZPhW+Ai}(N}A@VQ`Dg%N6G7xLVTHAZ? zrCYLeZ4;lAtJbUf{BFqFOYp-BPZrD#YB(1!KUT7eHXOpCJU}cqTk-HDljfkn7*OL! z00;p9jYt3-fdRYw>YQzxEuHOJ?zX3`_q*=yyY0WL)b<)K8F?n9Z8wdrN~dl}S=u6y zi4vv-fCzZ-dpy9;?@b4M0FNFa{SHN>egFUwen0_I2>A3v-Dp)fI_lDO0P7=}`4WAA zhYFzK41 zsWq^Mcs4{c^^27$GmZE*#_kskmgLU?4n_cv%6BW z%nph7KV^qM=@Vqlt&1wSgB#2c;I&=P$Z!w90UB?N0b(O!#~MMjqA$Z}Hh%taPckm>^O{Emj57A?+q7G37oy>nYn`8O8b} z0;3Twsb7wVn5L>_qLosj0yxYT=EHdLWl4#-Wx2PgIt}ttJV@reYdkUj=#;$!xqHh< z<(LAO916eC4U<`>GmYt%vaSgI?h7w=4(y)YndX#eZqB==yJKI@PM~{kLifNYeNlT- z(7WT`Z<~H7>kJfG`khkLE7$1e zLc158%$#^#(x1NbC0K^@u5ZdQpX-?O^?{!x`)LRlgf9G#MQ;u!jb6qqrT<^-0C;=^jiG z1D~A_WCEQ8nA6Kz(@=1=?eeaYx2)05rFMc0qx3fm&tH!&sY#aI7!*{(-JDW8>aOhV ze6ZZ?(R_X77X|W40yJ|_UW+Sza(DWMoe9DQnRKzztxoTTQw{9Y z?w$5lV|cZL-8#RU7`?@P@&=FS5#PKad%0+{Xq6{HpSphGVYW=!b`?z(@dUL>@D*`Q z0ABlSw@9c+E|qikNh zjp269X_L_r$>oJR4a+2&Vi}@3X?KAIHw8mH#U`FT+Y9m~1#kc^YUM!dD?L$hg>ZPq z&RyA{x7A%o4b@=48L*iAkyA&_EHY5IH=I-`TJ-uOJZ^>X`mQ2fW4bO1oLZGO-IBJ@ zaeS0%(-PW_DnbsQjs{>55dBtcB{fTTL9fT+C4O6WezX@JBq><>)K0{`{d3rX=;x$< zm;FPu8#T<~7|q}`WmeGB=mQP(yy&L;WY$=B+>>WzeLKnzuaAm?#pvouP?bfO=7tzC z=Mhh0m1*9ZZUna3*<`!wRf2l*hK(KLGQ}<`oL<^SDI0qaWilPD z@uK`@xH4N-q*Ndx^97h<@S*VvRZx6^xgu(mlI&H=B+6iB0LV1cng>CpKssO5$zk|x z`b;KGWp{ZYfjP;I7c?24fN1VSkFw}@1Z|yo1CxW%2)X89H;H-SxG2RUL1!B}{g^#3 za-h`WQvlLrQyuOHK#vVe+G@O~?h!WOob1by1l zBK%hscy}^O90>)=wX3CLwVbM5EG6pH$?j%}SGNb-o+VxFK$kM+bbq>}-Iw3jeg6eN z+4%Qeff>iH+qn1@;}Fqvs(<15yxQF8w{Bm4ey;bHbn7m?OP6T%AKq#XE;nPWq6Jgo zek6GhW&l>DgFAEAsGkwi?oJV$eI@3pOa~xOObwFN%gi(xGrcw4r8?=wm|?13q89uh zQ^q+{=5Ph(H$7EjJLFvMxnE}M_j?-jqsi#~`g$9%UkYx8OqS@WoLAo!Lz+f+E89`Y z0ofRjr5!>T0q$Ng4NIKuk+G2ysH}%y0(tm>G-XG^Mat3$kTISj>C(;l_wS$bESF&B z^#8T>*5u$<@_mhkNC8hbuAE*%ZuzG-e_E{%rZ-`7by9u{mPr0)?5~+pr)f#4&44mH8 zpf9wpjry|z+KL?v2yG2SYxH>rgP`mi;chR5S^{Z3jkVfCE~_sAtuFNO_u&^-aU!BP zldc^J4T)VYb}gqkc+mL398{UVRQ^P7`bp-%+zk!)*bU|_(vayJ1FRc4dFCMVRJ6WqbBUh()T&9JGuoCd z6>+=pqcZ>i=P{O$P$G`W?U}#)fn#?h??P?vP>Z>!7~2MELDq9&adwZtSUW5Y?9{e& z`rnfvGfE-O#YXGQ75ilG#4ZiidyG2C-#~rrS+jyYL{I0e$uOn{f5JNJW5^VV22A20Lv1-;t zr?%#7!6aLRr~uK_3-XHJOpOc$@?z847J4R_=bs)jbzOhwc5gGCAjt&qjf>3m?acnf zyun4moll|??T0?sXV6bq@N6r|@reOamoD#7H>fAgrH3qpV}hrJ{k;@gwAAMVpwt0m z&+-47w=5`e;k?mD#jg-GSW+=s8$C`6YZBfhlG*rZ?db9a904#|^Cx*|VQJtSlcA4k zevTE_xt#5I@K$3L%RT?3lR_nvVd5^Rpc_gk!oiMZLsR%pBFaMwi$Hh~9_wd1B)3IQ ztdbFt`X+9d^C4j(NJgzH1V_FDB{goWLLgIn6xCT^IOc$&PKli58DO3Xn9*`Ih{CbC zmF}Jj>ZypTpVeVoCqfl;%{6_r&t{#TrZZ04`PtmY#I-=y31`ho4}F<5&+;}l4ZieA zoaAzXfF_uk2Qdd<3jAz6_9L*!!CR92RNm4mrF2Z@A_zfGD_%*r&@qQd-=Q?)BCc=^ zP1ErvgOq*eL`?Q?wZQzla4*ulDk_}ZU@@Pf+aW7;S&{Q)|Mup8krUd0daA4u6A77s~8@BigF%m%4H<2Rz z3`j&m4Or}FjN^;JOJEzVeS$3!aQU9g ziYpQ8;?c&6EZ^&;@F_>}`Bsg5l7 z6#{+d$lVmVSWTMI0iQz{Dx|>V>AQ2c%M4X z*^Knq)A3Wi3}-vlN~$cXtr_z%hB)otVe<>gV_GpRvRXEY}L3#W-X9yfj z!UDO(XKc$jDSxdb#T~`-#`)84X0rcLvvx2Thf*R!S z!ZDZ>8p3_r_&^QJuu4UmA?_4k`u~uP+HGMrK))4k29J(2PEd2zk3G48t*R3MOUl9l z$0K;07Im3A7RJUL^o39prePQzwW1qfLSkv|4YJKJi92L)5T)E|217|L9czN(8af`P z1~Zi`L}y26-JZ%Q3Q<|d*@#4FUXTwGYO!9*1UN)Ml(j+5ia^WPoP{v@5D)?Y001-u zH8TJJ4n+e~Mmu3H0U;)w2jaJ}%(^yh^*G^bWhqOx^;4(y=)K+K|Np4}03ag(R5So) z00dymSex~$hM)}bDB>O<0k7bZ1SohM;YFD}&1#I>Xe^R}OezMPGkbH{WBa8ouCil` zxpbOsQy{Fx6-~xNrdX?uv~)~E2C`U^MH&D@_fSX?000O8)yx4vJpcr@tb#=niGnd6 z>0Q0I_I6v_vUK1vs5P7sJVaQa5CZKBfv_lSk`V{Nc!cOh3nT#^#tHg2($*&=cL9h1 zLp&_N1WD2OPhH}lJbACOPJbtd3EJW+d6N)eXJrNI1r3wnPCJ@M-)uLH5DuiA zTt-t>%G&HNUX!TfKQl$nIfSCh?mUDZ0VS)XK8mCN2*RIVS(|&N1i)e1INvl5KK-5+JC%Y%=9RN|VIji-`m;OGYs$OwI!m2>55H?i3P5(;; zr(vw%{5EUDgeBG|SR1P6PsNwv)$N|Ji1AjOSU=RNX6z1?unU#JJ=39xxNT~=T_mT- z7ZyLKnS)roM5Y93h9_>y#VrgrIJxsQamBZWZize6Sp*}k@s_hKvgriN>93yZ5DI0W zrpD@2;5Tw9NhTgq=!o!1 z(yj*UpVuD|iUTihsT=`c5gH`vSMm3#I1*BNJgh2UxlGCrA3VlT^;?0+FI35y1>~T` zP*W82)Bo}utd=x)qn+1ex)JVI_m#aIWIVhdA0|w&i1dZPTb`lp=(6-nwqG8Me5M@N z*({R=K_`&;YzwDA>7;28rJzHN$Kt3xuVr{;{ygmv0^)&N3EYcggud7Hup4rX&ezH9A5snl zK{Hrip$<-@aj4e^%E6X&CLH?nog$@z4#oT#=>A>RlBCyyD-+#D&l`<%!#meQ)$<#) zzO7|ashBr^PS!`LFBOu+8a>kvoV9e82OTN+blmbYTG_7I5cl&;xO!&VPryY?+TCNb zV&$3p42(RohU)1$zICs?`S)LX?-%H29{lxwbtndZ@BCMRt*v%m2?)Yo0v|D->+fm?y@c16#D2IYm%hlH0g6^4N*l zyAiQ4o>r1)9T83zKkc6~Symbfq+V{oRzo>nmqE4g4d;DC6!JR;CIR!BN`y|x^LA7! zGYyi7Sfh-z>PYE-(;dG#GD(GhxPu}pWLi{GzeM9y4&FDC2#6Yn-JS=ODVkrLSAv?i z*2#+Th=WJY=`@q>8r_a7EL5Mp=KboW8EzG{snb5X72sV|KvVs~*quz+)e({ef z-DIcd8l`A}ZbrrNzN{2Vpv+5}s>nRb<9CWk;z$B2-RARRy8|=(&?BEMd1^g#jA_=zC8D0n!AdDKxdDDW3V_maugtqG0rwe2fT}e zOkd229}g=#K5;HC1RxDIug{&3eU|ZY&Ezbo?-*vY7Astlb9r)Iflk&#S?sYhBMA?6 ziQ|n9)%^ol3F%c&j{;bjjxqYQXylxb6mR26}KBM#2OS)hVZ~GYdEB! zR7YFt-ogLLXjb=54FT1aysWUd8q61ArtmgTH&kt4mzMh<-(h3xnM~lDQ9BiMZYwar zDiG4ZPjLirp2ES;c!TX*nFWu~)oRuGVc)UH{c>n)BEABohIMDBc%tS%-@(hx~9WGw_0O+x3zUvnl=BoCjkD8DE)V?K0|IqAX`ek7WuA^M| z`PPq!y$jQ@hc4#8TND|REPG8H0=AgNc(RmSU&R?FwL0|0+!R$$FKW}6<&|d)ToNRS z7kQfPZd=pl7=yN{{kV^>cfKCjQL?)g(!fXPd7F>WoqOm#K@<3uE7Fgl?sqe3+?qA+ zvr;=VWl_V-COem#??!JSOIq-Sx{mqPd!aA~PoFi*B3F19`7OG?W;K~W=lS|O)eB>8 zSl3u#+R)y`xhr~}5TI4zd8mnP)Epu$=hB@NYEyeW*%Z;!I3vlml{X&i{P1ahPaPIG zTq7>_9{N*r2SIcXag5mx^1~C&de!5GcZeSl^8Mmy(w_hP!k%}O< zS#-@*V-%Vo^CW5_*=0zgklEqo40XncG)7w6v^*5BmPk2i;A$zjrUIsizBsR1)PFYQ zc$aGjEn6W1s75xajG%SY7YaPp8KH=a%P!Q;$S!civY!9!GxJ8KY@92cWvxl@JJSd> z0v0qJ9)Qi;o60Rh88Yq*7bi$_4Tn^*xSwAx;L5z*xw&*)WKz;NW9YEUinga4yIGie zBV{&kttX*oMa&8krpL5VN#B1&kBxyj*qi8~JB2QLoZ=7VTS664o~$;QypfXW5cX!! z`qoHE5u;vjfbt=0gHEGXuaxRUi({AC%0h7nnRvP{b?AMTYa3nC5xfBzGb#)lFz=FS0?Pm0EDd8yXG-^BO!`)hy|vs*SKzXgAC)zYs|zME-S z>d3tLU9hJS<#Y6ve4A2plC%=4ct-HwgJiA7*EE)QU2ae!j`p}qz)28Of%Mnkd8>1H zc-%gumWwB+2l-V%D_N3?0elj^!6tN2Q1ql***1kf84>SsrjEtqy;dRxLH!1j@pJ+M zR*VI#Ec!*hU07xH78Lp<2<X1(Yw54A@#{OYpBvDurUuJkbf0_=8457A1opyDl!4z zOflp}=L$vUAgFs>Vsa0uXdlilQBW?JeSPIorV*l$Oj2Er)o;SSCSBso4yljU#4PgL z{1;;#Fq&@NNd^56iMtWm9^mhf5GX~gM20b9D^MjGrAAwXq2?&sXltG~Dp-$^M27{} zb4J#$@f!}!qil+vRgWUk9lstHe=w9pY<{_lW_bFm9RjtPjT1Bj{ND5A7NM>!peC0o znJ}6W`^j)c_`Bf)Jvp+#vJb900Duq>0ssI2GXym>000g}15-#l$|Wo$;S3-iMv{Ws zIc-UjaEWf3ciU5C>)XCnve*AV`u_le0suuMfJa~e*^GjcsH5{y7x7EP9`F}LNMQz= zLBJ$8y?xE?y>~8FOKxTzZcyZA_GcH=nXwjs7iOg5EZ#57R>l@D9M+FiEgLg_y!=-y zG8Rg46yAVC_dsF90Du_)nvnniw=&yqYh0yu0J~jNx2>W#Vm;_ zr8WsRV!PqrZ5k6dCygfYkby)=QsmPpI8yPHa#Rx~CTUNSSJ0sv&nuSd(w&j02`;*f zBcCFgq?lRft5#}8*ZlE6C4N!EOLbz+8*TQ1=PG^CnlsqA70t^oTEE(zhSU^Ca?Ll% zn;C50v6Ey{NR-7TOp%&m6INl)i}s^%dv7T0(J7-+MmYdCJ)b$xc_#IpMd%J0(5wDu-RP)q_FhX zq1l-f+9JtB_b??n8cd44A%oz*fPL!jcj@5$vMX>lz=0YTAy$J%)?6WOW%G8ImN1?r z(a9EeIKD@7-9TA`CYr|Z#@A`{@F{mrSyn>P*fdk8t>vCj4jNd2S~SoRlqd1Af2t{; z23sSXplE1#=h`~`-416DmFiSx9Bi%|1(Stk+I<-vncil{5~Lt^s9#?3?OC%p(~@OX zKSuUy-|^XJYMo`yH!jkrtU!d!>asDV#w=j*vRTaH8g@dU&HljpEN3^K_tbVn>eF%G z+Wj%JelDFimVvFIy@ z3AdHEytQ6^yzXQIqP_{xk+tap>(|`$k`14ERl8!R?aGebE*7wWqxQYfj7y-LgCS;nuo*_HqgK^xA zDAhiy6U5D&&meDhAmH~nZyr&xc7h@v(yOoppqHoEjoK<+{j7Ym*}{FsHY`r#p)dTa zJ2>BGCIr!R`s+GEmo(5ZuPpY>W1`R z1Y?|&2$%3p-tK`T37yOxwwpm-Voo<3 z0|mS&-l((ksB8orLX{rQMPZN<%H{WI^zIQ$P+yvoiHzp<0z}PkcWw{NMyyuw$-lP6 z04mI4*|;me zCYnucnORZ|rKk8%_6n-uis9d*w2BHjv{X+)zOq5YRLX~cHr%SBpKx{7N?I>;Ai z5(=%&BVfC@bRgdSEMc+lbCpy(U1}~~8{V+H58nZ# zKH@*{dpmI4GVY>i`=BCx?)x>IF`00&8jwpy%4}giTl#b-;YaQ=q4TXX+Yg-A3FG;L zki+%*Ee~}U7*`rJn2ScSeYxVlS_Wb;_|DmLXd8f3K%>2XtkC3-LhRj8w4^c!g5;Ej zyH&7Y_cr!RZ0Y4&q?b{-q zxM#7#y|?jH=$U&@zhN=FE`k`jCrZ5>qoV>sZxFl0Prvv|ZuDB)$Nea6eEuB}7|=n@ zJo6wl>+k5-q~Tu|&?$W01SZ%Sx-41{jdNAg1qW7cMk(5&Bsm=*?Qp2I^PaGl^?ueI z$PHXs>tf*}S8oBU?!)vo)gT7>(_k6gxkiP*29xri8p4R?kRrk^&+&i92`yAww=+j5 zJGirKDx345jgLDN=2(#|7VuLbURSUs;kxQTdLkI)&{&SK%s{$fP-Jc5qb>oYAtT^a zI8jsftaDwQt&gZTA9b_CER3xtFHllA8J=YSGX{L3K#+0dW4hqcrLCf2s1Bz{5M10k zwe3%fYtz+t^kn((e$1OTAklY^ge2Gu|1_}(U#{;RXzQ|WE_h?gkEvDx1tV0{Jck@Z zb+5%hIq%sUJ1;TimE1^Xxl{BwHbOolru%|SF@(cv6kkyh%O#tcMPH83Lu6=HT z*xkV|so*Ku9h|ze>Buyyr`C-40~>dGtS8yUQ`w;E(5pCS69Q)ioqo!z{(Qhf>%>bX z9+d1>ejeN0zBb*rdCHNgqwAL+fL_|BqqocNQfs}c_qMmg5bx0Tfz)yyI+Xk0LaS*nr~@d9{kur*EPm`kAx1@y@H@02IzcPQZ%-{K+qcGzU|o^VYqd^ z{r9$TGR z(?E^(Yv4Iah>kF*0c_a6E2ITaSVsBbz?Nl;5zt_+ z6H*Zp4pj7e%j;@S?p8&sX-w+VQ+EIV&_9z2ES4hE4%qo#x6 zVWj7s?F@+!ATIxxlA(vKE?CqG2`KVNX#yC_?+0+PP8yNCYC+cS7#Z|gnT0e`X%oVk ztl!9xPf`ufJ;54q>8?;3tQR{|h{6%XJ~q5*L4+-*o}z0Kg`X=r=}*|e=bN_~B0SR^ zK(~}47x7EW2yWy5zc8*-D%lu1v;>ckMI2RLkL}F9%HyTybhp@C0ZlmV!^sSc9Cv|9 zW>>oA=lH3B+OG;~436ut{U{g(uijX_nPQAZB8J>i-0;^EssWMiF0_B}w)tGK#(10J zILL1r*WibppmuE7KBX@<2wkQ6D-V_J$m6e>lvPuY4SyxP|(avm__g@sJ*RVX=)b-rV8IpNg54a z{DmN@wIVcyF+U}iK;Y6PBE+W9R&%bv;*>HH{#~1poXRu2wsScN)9b?cVda;8=BbVb z!7$c(ZJ$=|92PSTea&wi^@2XIWal!hb~sOmQMjBmLqu9_|FFFD>M4#FEWPqJibqEpdU2scA^2H> z4A8Q0FAKI&|M1azm^TY}NzKqvF{#PIw5t6wmYGJv%P7vidpU9Y36yE*_3ODCI;6aU`Ji~0a$#UMFGds; zVBFT8oM5d&Y3oOdYqGY$ZS)_r1!nUH^-x}Xk~5Gur9200+vhPaH^B&;Rt0jV7Bh9o zCY%s0$*eZQ-bFv!9h8koqBQ?%V5Mu#+ix*6XNrziC?Hs(Ttgm?)@s2KYT=T%0zH7LvL#lF#ih?N|% zB3@~x8KN(wSX3ymt)^ncieZh4YKYb?a1uH)dcz`$J@)fwfRUxVC5gi4Hey9cUPd`Y z?sP<|@u-$M45W43dQT$U=Jtxle%Am=+|!m4ps;{8d>K#1jGxPlUDJ#i{Zaw$w==>E zRTHVY|9eh-8)YPZxEg4~1O9uMCL_2`$h!_5ttK9Ty1i+cdMU@D zWbYr8Wbl}xtQjc%`=_h}RxsFKbtX-$k;dp_7|V*Q3SkDFdLtxqBip$M#!D>$2`RmA zQ*ieyWa+#y9HQgG=F5*xtK1!=2wFE7CXQ8kg*g0$7{%B*IX{2OaL^)F1U#lEytHyQ zxb@*atROiu6JjOMWSni6_@9=AMz8e>X;@V^lo=qb^{(m{VrVDqeo1rdd( z_}I;U_hEE7G%l_25-qq=7dCht;;m`neJzEd&S=yEqZnsfvj@`(VQ#3~y(PU z)XU!4DH|i(5!dIxUDapzkmi z5D)_Z001)sH8TJJ4n;svp*_rn=Mta@kt0~L87{E|cqSG_tX)01uzgwEUnBqj0`&j@ zGXh3L0ALGH4OJF_1$FUU#FG(Ec$UuyV*xSX3=lg(ayz}rAhHM;nHvR`+suD%q6iV= zC4X@u2O+V7B7Vi8AEi-&xcGiD3s_L_6erR|TU(;Q0%+nJfG_|63<*HZ831jAx^`{r z&6-K4w{CA;vaRn;t!-JJe&7cIciN;!p$2OfyDeMWvbFfd;|ER=14Nm-6(A>%P7iaE z0N>z`5D|Vr{sC(SElzLWDYIQOm49&GQmb9d``-D&BR}+g7JNDBwo2ak?OUDyG|JA| zR2!r8?M&=>>a5*$s(G-?Ep99pz2jH?M639RWeux%d(+Uum-G(qc1@Rl{GPlY=Nrwq zar!x50q-={Y8%sUIxin^el;R6PQL$6;pam0*T;q08aI_?)ZC-cLM&IH{WkDqG~C|i ztzk!xX8@@n6{cT(nR?R-reazFmknO_=*#yw6)AzJ-&*zYHLW}b-(@LU``}!eXST-S zg>m)Fm?y;6ZWaP6I1aht_;K2Cf`l-$UvRfsCPum#Ejy}!7^I~R99r3YjT9x9I7LS; zs8bHP4?mzy)D^>nhj~Y=;)b5|stSO?RO$nCHJHPQvb0>8uWiG$*}iRO_>~5DO8`S@ zkmAVJktPn-S~B;;E0PPi7DofJd66@MC`chmwM7Iq(NaRTVfo!7k>}@%Vh8XcbZpbNdS(>v;ns;g~Kc@5ohx@Zj{qP)ZKrYXGG78RQnHWlm zs%kuP+YI-yCeP#u{Yt_oVu=wv{yWvN8P7jsw$8_-Jlx)%=nO-x$jX1so*X!7D#~@C zTmnM({@d@=mpUA0lFbBlPnNtf>-h;D<=-40itsCeN+%5Ij;#f%OA^--=qa3Z#7USm zsydmGme?qvh{O0y&xTb8{vuEzejg=8YnT@Mry(F>mCEkSR%&up6wvB058HJWiiKzp zliba!%ha7laacoSe8n2K->%CD;CS(}08d#9H*RMR4nMassR0S000*L0#ch=6_Up0F zlr{9?*#F%6S}v0Q5-${k=&gLS%Y)!YsZSY$xC5|^#tz@&EKMY1y{I{{=FygMZ)B=!piyr1QVx3{IO9cK( ztof}=_KPE}3I9o~`@ilwvQ2TT15=>aTlAHqI1h~PwGgF;xSJt&s;T@cs7k!Y_@PD73~piDc*WrHmoY63x0bo1`Hd^tuDG4qw+~Tanoq% zZGf~s^n!d2kXtlk3gu?4!Tu6Y=Bi%yYQb`1U&Cq#^yc}@nXhQO$Cl7?d&}&w^gLpj zwmDwO&=&Vf>q5&%p**%-YWZ6f$E5!P)xQT9k&sb(P^_u%<8HliwA32_e( zRFBDm$H7dBzGt`)4^a<`jx^NU3lDzu#Q+)(wF()i?>1H~b8+Q|1p}j}e!MQ@G*Gxsb2DW`e>o&CrUd39)rK0^=5Vg2F#yt{i z2Xk?aCz$`m#&B!=67~r(UJ@0&0M2Tc!?uiHKfQ*-_kIBn2>Ue3rLvuO;(bd( z%mK!1ax}Ru0bCJ#02d4bK(@lOe6wi0Mw)&WzV;Z|VurJ1yzEz&iaHguYnJgVS#ilQ zQU|rVlw|k1UTvM4RPIb5%Nmz-`a8B1k#l<^%1#Z9CcAAE)(&PcjIP;}Lw3sNxJE6Q z7!Jn>cu6NG+t}cZCC41?IL1z~NxbyllePB(2jLYrS^ax0Dy4C_p37_|wG6u=YLGGJ zzc#xHBgJP@Ncq-VsK*LSBuo3#o?)T-Y;ZmXd5b@6^|z*H?WPTo7PD(GL##BzhJZVA1}22ndVwsK(ib7GCGUa=$keM6O5i*f^`F13kl z9W${H>eM+xO>ncqX?9L99Hc}E_$&vL#&P+Cjf=PRUrVXkv}lQPj}|g|@n%uSoW>Vv z?fL?LMP+1AvBMbJDd*G>G|Y(~O$?f7xAOuyOJkeGE^QO+90XK3E^p9H%jcB)I(lK( zPI+-O>LrFvRt?7%-udK9T073)9}9@ek?ZCap9SrN0OWlMfB;FKdp{yr_YX9gtdtb| zru(N9RBzt80AMqlM+)}O$hFSm#dMO(a#v#44u$ariHv(wCOR zKl+ctxnAd*?2`wVHjF9dCY1YI`Grlz_>(CDOBf7q;0IY6?|H{!VwCS)lqN(&Gy`KK z(}1D;0ztA9?F>)=iF|H%W(=4==s#A3*lN4iHA{V2dc?t`*g5jbd>)n6D~CufR7Y`j z_?i5K^hxrCf@=RZvxtU?X15*jo zq?w!?YPreo!Y#5-8s3ZXX3(?~@Ol>WwU1`6;cz}L3`hs1;>8{lqwFkjNVKf@9AeFO zEP9<8qr$*wuto{w>}$q%>01*<}AgZ>h$`fJ@v&w?d>*g%S5v5XJT^Gvg)|0*XxpbiWq7C+@ zVPXxe`4@POETnt@fif$JM8_l2Qw|zUyDjODTqSh8QjUxDy8qq30(L7IsQg^$7|fYW z1UkHznnEYp7ygt^CQ|f6AI=|)TE`5!h5)BtCCUag7}g)M+F=sZEu&Y^v=Eh!lWM3C z`judjvWg;~WY47=3g#}Xc$g?5cmye`0;T9gMA+k8@idGacxtLp;euGhhO&pTIwrqNFo!&K@uBmUb z7xOc^_R{|?eyFv6(hE*{M(=_i9G-@)k7-iuEtaBK~8%1yY`)X5yTR_44vIC zhl|FA%q{6=jKO%QSvESH$9!;4?&t^9 zO7!Rtj>+jC`*}OIaQB6%5|ppm4ckaVA93kKZ+Ea4losS9iU7xt3p-DTUznwv0rQ5v z#njWr%XFM-G9!@M)C zHrPg{9>mza!wwxdn0^?@B=!Kk)BVUX)KEzQg{ep0=Q44hQ@Q0cxWnx_nlN4pK0#|l^{=Q4N^$boTZjE}3(`gssqEH076VAHBZ zAz%*M(bI8xj4rFvs5k{61ur=&=p;w%L5}!)=cV(1K9fA-N@4r0M8j@xJDg=-FFo&U zW*37mtrM;w16thx4BZAJn-GF0ZCXOHKv7YFDG0ew=W?(HfG`J_{CV@cFK0+=^nT-{ z&FNs&!V=Wv9ZUmHDTSX9ksL?Ja&0Yyo-vDVbyjLht!KqZVvJemh00savGd45; z01sw(l%EITXeb(mHc6HU3EL!@P_Zpl%2SSwZ33c(1HJ9+?(Obd?!9jOYce7GLH|Lx z{{R?~0iu}zu!94^%mF<*w`{Ps&0m45#3XGIx@!q10U)-vPMrikNY>uH$87Csa~mkt zZtdR9+BWg)u5fkQ_;Tun)H>yP(ra5@IbWJAk;r#!>HqSPw_ccFL`Y=GHE#o$B>bMj zDF6U71vE1Na1Lkt{kOZfZftA0+S)d*+uP3DEUHQ@$tDVy*o?9!ZJNf893|Vy+JIg7 z(g_4Yf&gj*#EE1P!la2FfqNJ?z=-xW27>+#Ky3s7+Vr%3UE_FPbpQWG^Lw4Uvs$}O zSw6h95V1~s0OD+`U_4K+kwurBA*1l5!bA#9r`8V(Ho@)iSeYnkoKaNl&N`KvXoP#H zm5&`-blO^%Ky3oa3EHMDtsIeS`7Nz|Zf?pSl?2aoNPaz?=uK=6qHg9cy6ve4uHD{iuRmyiXdGta1(B;3u8?9La&wf zptX$_wJWyUEwBKcG9YL(MuSlCR) zdY65{U*{cS+kub$^7ZDo*>ui03!1tW_MTXa#aTvl&$dty6e!#Iy=)9{&O#Jq-4%bh zBr%z+eJE1l$p`+zGX@5-M@zDgl*5r=8|Gj|Y$iSdE=uf=1_P3Z8~Uhu@ndEm4~_$M z8s2p~hUkuA_6;x(vkbiNN|g^A^B8t`=Cr~PyUf^PNs!gHHyrC0Oq9ge~WC(Y?|G#X6az5^+&mFpFIPf0aLBS6}8axMSB@k zBgZB)0=5z8i>j`x*12{znx&7QHkG+G#C)QxS`i#iQwQQuovCgRZ_9R=^S>e z*VwAwru41|+OnSyG*Kx!G{w3M6S1n}3Txa`tr5gaMVzlKZxtR|NvPN~IhjC5 zZrcJJWj8F}tJ^4cgKf&!22)UJfd;V}M+NJsz|}4hYJGMD+I`cg71e{CR_R+g6`eW0 z=!w8v>=+()loDgYoa2vzA33b~nzQww*4W!yWqhyhVy|$dLsu8auQVVfFnbM=?_WLjgZwkli zX6bA3o|_$b0EkT^JLwD3J}5nl|K+bCW`KKcq{A)<*y`^*7z!50RGfTX0nFBHr=W9=GAGG@PQ2Z+BwMIw1bn1lG2??bbAaaNE(F(WwV(j1 zVZ3(ST%*8bdlh%!;L^1y0q;^3X9cwJfOk%)M2dTLT5yP^>!MZ&3ZE~WN9tfn(49=< zm{U4WiUUsG-6r5wAr*5P=sLIOB17MXHq`XPAN~WnMiV$HFvhVtxe0&6{n4lB?8_j~ znMS|7C?&D{@ropVVUQor`q0P**As^mF!$=je?KWWdu4sJqj9hwtElW0csh?MiOIcJ zi%ll{NC|HmIiopIk&uK0l8%s$A2KN;t|6LH6$(j7=ph&4_|+4{D))}hS$17n*oAz9 zakA4^-9KC^q%N?f$tsZz!H~r}l5u3ZQvPh`C%s&bN4{34Iqzl?y6U*wiH1xgn)Jdl@+Ru<)R* zuSH=dQG93!6s3Uc32<-|cq$^766p4E0PfZ2!MC@0i5uXdb`hHSUZ6ViKdK`Y_QYHV z{Jmc(-PHY)*s-Ig9N#gITgob+_@gVoVs?a_IV#6@B%|Bd$~QjZD?KN5nM*`b!a`p7 zc(37`>7hk4dtj?6UO@6sCUI)Q3z8;DSGt&aTuBcS(6YR|Wd}!Hr=PV66a~fJOf^_;mkpuUd=eKE2-|;POR8K2nl59&nbHnDw#pT~btATPle@ z*d$j;?wR8g!4eTjDN2&^11H8ht5}mIL{_Yg8S_>Up*1!~C!N8&prH12uRwVob>+0P zCMujk)E7e@_Ri2f(OJNX?j3L-Zq!W5a6+u)g;S2q%=Do<)4Fu?KvKwmzkE>n*AMy> z4o}Uf`#Mblhg4oK`=aUN|#GNCYj_zKcM9fO7($|Y4OE69u&vV zycDr@FNujB({jwxDmRjnSc5vA=C(}s5Rqw_H0(7=QjcM&n(Qaohsmvp;c5?iPam^I z??I0iL2u@U@3(a!lL5OFH**sE6D6sau|d&tWLzWRhBpgy8pZsuvii6Pad zv~YGRx~*)=KMrursz)_3W+8XYs3ZZdC|!?i^sQRo;U6?+@e)RN|R25YI6+O*k7oe$9)G2EGg;A@sE4uUT_3gT4l9t^2 zZM+EJbk+Z(w@ooqMaDXXxrFOYX4|-5RsqsM8{V8Ivc7JkaAApLifCn>a z1xOe~-fdbUULU0^9|uLp4KJ7*cNL6BL#26Z(;e!gaG9S%^^V@FPIi(sh&8~N!voeq z)q}>Vos#a&Mf&;F*pA`W^8I~j*X6&t8;*O6p6{}Y z3W;!_wFT%Y0(l_5iH>TLydA%u3J+}Ln1iamVpCgm3wCwcJz%br<-Y(S!zgQNdF))- zm{ZjVsM-oUKdi-5b13W@*aocf_+;;OdMphMw0JvX-K085U{gy2A<-(j-7M8#3Q zuMX!yAmuwW+?Hw`oR-fBFoG2V`rmlS7TrdH9xM>iHKs{j2Jbe5- z^Oq3V!=dm)(h>Y zINS5+8+JVTYy1-g!18E8UOHI*4D^3%mW=*J1!u$(>~X*$$+~vqjv~HmLHwD&R}-Vm zRC;NSb$o4v8|*?e^RvEsc&pxL+HLg>B<6r|x)A~cEDC!P(V1 ziElMCV<7qd%r&~Qw>x3z(9ft&P1!L#a^>&Wi#(L#hM=s3m8g4du~NX%ZZhhZ_66mu zFd%)WuB@H(0O5fr_0`C>wSx;yQlS#!RhtSKzB3bP%=$w7_>eazEK#QUY0w6teD2)p zP{vZjKhbccr%tdKI!DFF-gfUWo{2?V?1O$U(r0=!R;AGkQvbNzVukpn#$~z?IPx^T#!3CA=3AFfbzfc%51P*1JqF$sLsi?8 z;j4cy+Nhyv364`FH3-HmDXzj{MjzmKm@1C$eqprY=}u*HVU$JHFRwfsGUkOvhoc{r zj7VHb%E)7j!&Q(|`skrpQ98P<*Qe%;hVj!UUYrN0Z#IxtLF_Lh-kmM2K^sAf3!ZRX zn&vPZ-Ad6+oG_P9dKd$pElRR9t#UbEo0T*^p;6=HyFQNK-o6pkOrCr(IFtDQD~?xk z+AZMlqth0%;z%NV8aBSGu}{&IuDDgg$53kRpc@awj@dCi-LGha!#K##W6ce<8A*Di z&2{3U#=W_nuaX8%zx<(TeqT~#i48>=zLp2m~qiVLDT~o{gHvEL0rCbd&WQJ=DLRB}DjAA@q z@gY5eEQLb+AAxR2(KNV(^!zEO#gg|TDFAiv9j}jj|LB@v(7P6Cny-gZ!nhHLXb7x~6@GXdXJVb}K?S@4 zmL-G*SrT;$SPde0-X`I515a>_nn@zyWqL@7>g&Z)oHTJl*yeK7%C%X^;@bbj&f=+m zaF|{`nxeW1j%3r$o%hMG=o~Bf*hdSRu@~u`Yo{O7rbfup2_*M&1S7ZZMU4|A>}3&X zg_v;x)@)<0$3uen{{@xF(=?N0hxT-ibk(x$Qm1*Wb8h+_9JU;nT}gr+ zPy%&n^7~MWh?4M;7+DS~3z|FNe;kN{xe9lPkt!;?VAD*)*c4KnVc4&%@aBfdmR+*> z8~ag>-HC8fn8ASss$RjTpZfz}`IK{~7YzIcfP1kHLpS6*3cuwL5ZG;GoFv;6b^%_k zpg|un-ZnDu2~O0#gRA#dk44P`V%x%;GILrQ4;town8gvEB;zYF1JnFkPqw}iP5`j^ zql^`Qw+va-?IU>fAw(g@+fG!(=GN2S;n~Nf6u#>m9#7-kK`!G6Wy@FoPJB>ik50cS zbi_W%_SYfvZG!2e%mNeOJS|f+C}iLMSlX*j|E6)M@xwVeJEbtEQQYGUy@CE9cb8K?s=dfj)a->6bL(D8gHNcsn4S`0(uPn^9eNgpcdY+GkZd-Zs*x= z^#yD8J4j)_)I3_P{+~l*(LSHL3{N=33qnfl?O^2R1gxlrpWD!=FvzJ}aT*+D-bpkJ zrgmXXx=T8qQ~$L0zb>%_iv60@oVei13?b@FZ$(uGXzVE~I|&`n_@rhJwbs>iW|S}S zH^U9*c3PjKV$|m)ZYL!4fPdf^SA80KiLTeQ`d6RYKeuDPevb|iR3+(EyieAcEjfdr zSp9hyPde74sNPN~+~HzMlTFdL4xT;ydHvHVqPhhZds?3&PTM5sL)MG7jmZvd{8RA~ zuxaWDiSo_2F*Pl^cyJtZURld{_l(#}Cl!L&*;@Q}Dj;Z66i32i&q`G@XLP>K4VX;0 zmuaOp$dnySbB=#)os916k=NcA2ooH4v>BqLK2>8#DfEX6T(>}B*zoBphi}(`Ilj)w z&-^|)HNp%aOSm_EN(eIH>OY!3P3E-S3l!f<%HyYX>4TOrIC`4KAnxOW8~^RWS;c*8 z!D*u*%rEVXFO~^2g*FU66+TPmXkbbO>dXH|A57-_Oc!kyz_QS2nV{k;U%Q zoaDkFpNLuj)z`(jWdb(pN_TF0Bl#0l))1t{I%jVlrWuFcL(trx+YlI&Y?{J?%~&oR z9QvNzY7l{;aNoT9-u^nO4Mvc2?%PZytx0mrhK+@(om_^*x>~m{JV)GQzuGQccfFk6 zk;%^a>c>ExcIitCLIQjOBw_Z8dGQ$yXe z3HupG)GQkr^^$_^4`3p8OY!Tpj>zzKV-Vq918J;?agNtxIb|dP9ze9|E$_vv;yxwa zxP)oqY8cgF4!vE9IiC`Dfn8in1!`{iz_2$E%5?B-*$!z}J#LBX@uOiAVv+(BfENh8 z!bG>QE)OX*pHbX$_{y* zVMmgUNDiAQVW927BqxbrevGvL$Y6%tuE_W}p0V}q-wlE$Kj)FZ=BG%~; zUKhClP@om-M_PFz)<~yr99kjoGk+Pes-!U}=7W(2>xKoUbcH8xydCx_%)Zxd#8PS; z1Q-(yse}W>x+g)CHM#1iaULeCwEa~dXQ8L3l{Dw^UD`xgsCPt@YFhq4xcx~JxjJhc zlim54ce!kRVaPR_B*lvmj4FuiV5|I*U4z*1rKiomPm2Z+s!psN} zNgn@iGJBi0Kk$%QKRiq(lfz1pCPsI*;0taw|Nb<1!*Fj&>xB$18f!6MGad44B;vee zfhBgCM8d-8k>F%6NtG~(zVe@&YQ#V1qgTJCutd|r!{K9D1W9sT3nh7{+$slBTc(TB z1ZHW5X9;HcjJUTNap#s~ReEIhuQ|L#PfD{cI)Q8%1w^k+>$`GBRdsve?J}^^^F9&H z)T@9PhpSNy4Gj_+BU|Feo?pe!KYC|Je>zkN|;M5Ew{-j$qo>L`i8)TJOt72 z2XgDS;8&9hGZAvVfZCGrRte)hc}`)yfj-QfohElm#ht&1dWt=c+jF5>+3Gg2POQel zRBbD$1Q4lXPn=K)!K#h9AH8G~37`NHXpH2wzpIJQ0pQyb;fkR3QC>SCVk^Pzx+g#U z+WY$_`_-N1U6b<8vV|i=`_VsetSd|LmDVREv=;bgN-c)nQZV|i&a1hI%nk&bMA9dt zI6q(sV_8B{$g70LYM@VKyWFK`-6_(t=-+H!uj2cotam0;!V0=hSX)h4sHT3}B)l|z zHNYt#DRNH+_!p4~JOc6SzUQfIz7eLOJ|IWNx)mDgv5+IOGuOJx@4ID409HKlYA=0O zDk=1nQiAfovWWLTKQh*^?~i4~dX-D}n3GRab0l2nzQ3~5(o zUa|#rR9`f}a$6e4n*q@)ONn7lGo{m@ZGkW{Ah8NgQL$@Z<_4~cQVy8-tVixJcCow_ zvzT0FpK{x`^devLwRx0`XO^Xy%A4C@MP5f*2MQ=C+$8y{wX;lwEx)FjqTfQ*#hl{2 zo&U>Ch?7+UNd&!v`lqtP&R`sN8|m^j>r74s1T=_x3FQUrW;91Kx^77kBd-_EsLS2) z1Rf~pO)oJER1bsktGsi_3ZBAXu#uyu?ycycT=P__Irwl2!lR;GVY9yja=hO!vbD^` z=dKO#M%`P%8y80F*yd78@UJXdop7ny9i02f2HB?bZGbJ1iv5=1u`jRymm$V59ItE) zPvSP?Uk4I@4JxAiKw(W!hxJ@3(D{=Q$o z$tj{LTC@+&q8I!131Z)auaZdq&1C7rW>0hVGQ1zMp0(nd<8L37x3NTGQ3}q6KzJl! zBOjgBVf4Scls;sV3i^53=a^3xT8M;ylc7bj$yW!02dz3c zRZD6WL7Y$V1GE|bK@#%1Bn$boDTp0(UNI3Z_)o{+3XrF4z#agexIFg+@{In|JlGy+ zM|FClpHUuT3n-La)stfya~*mkGbbg)uuoRNgpb-6D+vz6T#zduSMlqwBR*eG(`D#8 z>6=I3q=L<5zubDF4QSm1wL4&XE>@1|CoZi z-S(i{bBtxC^AeTHvy(d-HaULL&D1ocy55?dp|#Mp&ofvc_b^U;GZj3rYB{oz$`qzj zJce?m3rj26v5fdR0`9@@5eQ}J$g~f_Od0~|bnF%QI>E5hKPuVSJ4&L&H|4#Ba~L=x zYmJ{0GE>^xJ5A`dr@sYP`Y|H;1?tD5VNTmmKD2H!!yi7j;ifZpL`6JT24DDZ6bv-o zGs@396wV!iQPz#Mdh`ci_W8&f4bYhrDMn``$HvMn7#$di|`=WP$7h79Q#^23%{;fGf% z`QxU%vQKwq$w7z-S)^3R+9ZTwWR%G3cfWx&mID6fWg)1ME1}9Kh25F36H%|+^2(cH zSuDeIMlK^9OV-g3L1`LbE^P>dOF&j3lY%gJkbIa5rJ_dO(3@L5$;BcH)ITrfs40vEb%5!AA9CO_pe9%V zcmrWHx>~#$;MDRGAqwZBphW5?w_tc)61|~j@t%eg@2Y(>V@)x3H-eXfi4X-BAc61E zxg`m)V#}j2NaY5(5a}v(NG`MUq_m&0r>^UeNP{tK*6$(dd8~9MaJ%~b065JvpX&a~ z=@}4no?R(4%w;YcbMMOs(dm|_!e>$YUe^<>>AE?V!OHb1rd|A3Jy z01+7gus8s>J?`G?`E@UQC#|RSzQw&T{ORdSB=6liKz4fD0yU1pDgnwU zm9lLr(`Z^9<$yAh%|*XxN@G%Pa^663y z$c+VQhTst(Q@jb~GrqBc5TvDl=*|=%PN>1&b3+zo)&!0=b?hh5pd$H#=(A5kN*RUD zU^*ze#{g#8>0?S3jPrvK0*SCygQN@KYA6YPt3U`loCGADLZD3U$;V0p4kw=i%~v9m zNFidDCuPrbyvz#!K>z=E{|iV@8U(?a%GwP0H-ZBRrfZor?m{OKxKbamsdAwW00Bgk3?ZwX8fqtrRgy#*!zq`QL6h`3f}J5+ z7z+w1f?pyWR_cLTf^gv83hIsoLOBoUYP5>m4;XnhjIHYX{!)QPX6ye0r z-~C0cmJ7(w$skm%N{PHWLiao z)g~;rf+MKJL4z@L@}cigpj=tVk>N%O9wkNXFV~g^o3+jo*Heod6Ht_EMDb-Nl_m`z ze>-WaC{wCYKfY!4+&mCT$gR#P`7DN$?zTW1HrWI)iMFt!)o^N<;%f^=nR{_-$-0Bu zbUi;o<$WHaPgsH6$cqryhlxbpNvGbs)}KyyCULLfaAgi#1hxEKrN)x0CkNq#{nZ~?eJNASWnaiH0<;GgsROx-*X!`coGik1tFa)Eq`j=d#F zih`3iqV>%b3ctLzS(2hGqN$jcJd1(7W5R3`2qCC1!q~Wwh`{cTo*t9j_gR@Qy~^-Z zsdSUdWmeV;7vZqm!%a4mT0%deptB=zjn5FY@#^`#cyX58g9nEr)5thK}P z!dG7_e!2Qvl+aBNK3jr_EUF`hR6Uo`WeI#h!<>e;1c;yYE$Y6-AS%j#eo<&XtfdQ> z6a>Qi&&*=*1z9gvz^m9ND>#lHl_}wo7^k)TrL?PB(aAT`>Y_1QvU<$L3GyG4r~gYn z)`ez(!YaqO?tBw%9pKRAb*j^oKp*)2W0i5wyb8RMLoQ0b3MEpTnVLT7Uk^2yGdLKpKH2A4?t2KQdV5U$(4J2@N{KBqLCV z^Ad+yuD7$SUU`QC2EMdxp*wNks%rPz22_m{T=rCM-Mhj)JJwtjUNi(OC1D7iQK^k^ zN@ZMETZY#z4Hx53rut5|D#!(tYNf~K!wBzfmnU+VhV}#XO8ssbslcYLEW$=Zor6S@ zE583Je*xCMvh)XZWU+5gu-0iJpHw4927*Sv$nvN09o6PfC=`bTgx(5oqK;X{Y+Y9d zUNk{mf??sL!-iks2rd*DK8<{krpl$Hs9I7U7D{m66|~C~{zhdd3l{z)!HNuBU9`U) zsy;o0<0ShO$vUJ&o*VX^eoI`eNe;`aFa}5$#F}aqWm#Ln$N73JFP8zlk=5Zej5Y{Z zk=Z|y%_A#Bd-38k?cF4b!C5;@zFf9j+_^+Qsnf}p-%{FDNeFSqwgs&YN_z1| zrw|x{5al?0#v5c<0|6#nj(5U636O`&ip`PwCL$CVB`CgrOGSRK&HS#DJT{y{061@I zIWGS-t@gGeIS!r*x_)icso9QT+ZARdXtUFM@a?WR!lSN{&f63m)cP&-{vMg*>tgEpWe5s& zT+RwomGLN4G^*M^#WrsqH?IMX)bQH)(R}L)bU&ars;SSfHXN*3KD+W<=b z;2#9{eqMj3<~6ygHALa>E($9(pZI0j+MtR=#tCSTsPqv z-*oGutbtf0i^$BeGgd|0qf8X57U=N?_{ym&FQt8m>|~d(_g|=E^1EdIj=DFA&{CBn_JI#s%cEX>@Sx zdx4wVanel_u0}}}?kx&(m5ZC!?sHMZy5r*9dF!4GLaJdL!)oD==vQ9W0;X-}p`;ah zs%*q7qXkO%fGK2p4lPZR6UAh7s@yCpV0c2*ZV&uq!IeqjrBwI z5@FbWrbqQ~fZ|M~otwJN1Y6xfhFRW<**@%iY!Ga|m8 zET0>_x-F)#9Q`km1tv$(yU(rCbEK|N2A1>m##IGxiC4G}7Q`J9%Xg)OyGvjvoAgSC zY(>tU2BQmPQRu?;x#RICm*qg#)7W#oZi~F^zLC4|xt+J*TdbKVU-=-R!!lmUd)F@N zkteJ-pA&NSX?Xdg*Eoe4^B1&y9TJ?ZGavjk!xd>c#$muaWSrm+S>T;harhK?!4 z4c0so!9@nbwFD}`4USI$#f*-Xt_RT{!fv$ERr5GH@w*7xqo0dmre3yzIYh5VEq8Os z(Ga>FzOU08k4Ui@sT>Tq;;d*b39s(An&^mYEoa_hEIKdwh$Q+UuE1-zi#L;3ZkJ^# zPy2}=hihA6`wo=990v>bp=r_j`g9zMv2D08$#moBn0D|Fvd+l^wyc+n_%lvX_c&Zx z%58VTlZMv1FSAZ=uv536(G2r==Zuc1iguN!Zn_=sTqQc#QcD>zm9ctjzVuOMzKLf#bE;>Dyu4_N%Ahj>=|MhtSouHX%r zgg`|v5}9t$IeK(_cDO;EU)lJlujLpn;{HkF$RvowxuW$6-jrnn!SZ<{1k2u%BWf$0 zi}^|Ka(Cy!0mK%U^;x8>^CYU}@h-cg)Xbn#AcrQDltCRYwziQ4w|CF1N< zmVcA*)>TnmEsk7e^IFw+KI_ddkaK@O?Box(*JAbC~G_)1&D``6uVxhA)D|(`3YOwG&TmAitj9x`}c;- zcK~B$MhNtOE$8aER9vlw*o`8@zb;kJlWzyDwUwFzu%fiPy@{Br-?LoD2@}5LDK+5g zim}(x?o zbj=h8{-@asND6riN1oPAdu3V)y%dYF)QODZ<{zn$V0D3F*!XY($MYJi*-aFDC>KzVf#ybZMo1Dyo_ zksZVya#Ton@K-X34oQxKOxDnlpR%Jvw~}u)i;ctUH@i6lf~l1C!7HK3*qhVZmx6q& ztnkA~9TY#I4o=38z9a;C_i1@Mo3&*^!Q5`M@gfB_LV2nE=_wqkf3gsGh;M#!Wi!=R zrW%w1flVpA^0J*&Q<#DoIOWA|<7xqck^3oW0~MMDH?pAB$gbu!go-TqzC5rxS7-VS z#sC~%iH+_$W2Lh_gH)VBO(EVtwCIdpqxas^)W1Ns|So)AM5Er5!vFw z5V|tv8}@IX(vSWr-}9`aPGWD69tb4L=*f4_IkRP;fz3}#B)7u^oyphc59T_@?rG&=PQm z!%BjAL>)aTOAZ>6x>=0D_LDEm5c~>qL_*xMnoda|mO_-U5aW@Qf?eXGw*oPk>=@1q zI?QISCPZZk8sLm;V-B1ap9GTgc6-^1CPELPY%M|O&I`;phd5<+Fdmu|v6F#g`(Z07 zF*7j1O&Qfnsjm84oX3qNq<(`6%MjneJD`+Mgx^CbEE}hCsHzXUk8Q$?xEbfFat(<0 z+_Uj!jVvc-Ma{p7;4$r-ePWnpsEiC|=7(ibo6S|j?vm*!cHhfZCdl6f}A}OP?DL09u zs!A3IZMxjO$}e`wDaAXgNxi$CJqja7Zyec&&(WEla^M%)`d9^+{ekp2-AsFYAohzT z^ehLhD1Qb1_MNhYgCWTd*PQ)&(=)rhq1Q&S@9^jzu%;P26Tv0W=1AD0 zbC?@s$t?Z-ywhgPpz>`p5AIwUH#|2C34-k)~mp$tmQjqE~&O-if z#T+-zcly7d-{fxdnsw$ZcMb8#(7BbVlLzh>aA1A86T5Y+fO_*iXTip1=X2pHN=OE@0AQ(RBg=aR@e(B>X0VyAs=8>#Oi>TB%7~`zxleJj zKBJ%-?7y6W;Mnq+>Z74@ zUiz5{L&)X6!OArc+~s_Tmn>RpLCQkX&U{Zg$N9+d3(jw6>u#TQ_BWrDj4G2AM$LhJ zR-kt+yFq_-Smjt=J<_u+ zmsk*UCsj0(p3SKZo-!BD9*)nP^w9^%p+8=b3>v?4@@V^UA z6Ur#rw#84P3G?%6SOPJd?SZJG%|;b-Sz4K=6Wsh@{}|)DKOFgNGOB4*mp{V{R~wp8 zv8q-zk-u7{)_{}<(S2Oz@u-mSEHBylTtI&@iPQyt-6q>f{>}Soh5`4qQPSdm<>V~9 zJ?%$X%KBNO~dSN z7>L8c?1mX<={`{Wm0!8CxlqIJkvFU8ZdQa09`|ZYTg9RTVF>cP%+rjEeXo_sh}@uE zN)T2}6U&grkTrE>$IOUTH%BGQonI`c$Hqu)w&sQYWP`cT3wGpr&953KH;)d7DlqVe zPAm_iUHAOHKqw7*O{;4UNODXX(?rEfN98+TygQkZum#-WE<)XvOuv?Xat>B@fw9yj zh;YbrXYP6;)V#1xa95~&eSVDe^gGV+U<+@!%4>(mKzx8}hszc~MK0=yJaG#L=^JQd_i# z-AP+wsF!-_!5a7z_8%oy$mNFfBu2b0yk_KlcZ*S#;tz3b&br=cXkF=DS^S1jte+$| z+*`j+K?62!^#>ItQ#|{{a)=dx9TmE-RwKR1c@k4zMf{1Wo>(Otyu%d5iKsnyVg6FK zc`8`Px`uRFU8dNY109x=f~wu;3HHxSQ@K``Bj;#uOA|xq(PH_2QJ;Em=#iU%~RO)TRDv7$TZL0*2Yp@U_0(Ee6MT}v^r4btHQ;|jc->EED` zu>%^8#e(N(#{`B@b382$7gcj6>hXiHY@}hi5r*H!(-Jq&<`O$$d(hSbeYR5rBu&MW zs09zjDP3St18m^~iH~-xX9m`YCleYl+w3n_oc56a<2WuC3*iX_)6)*@R0VL0t9GB!gyqxtGu4j20f&}8 zW?5?SNGpYp%`;UcK8y1(09!z$zxS`O{6re>11Vp|G%)=E@ z6X}EsSf|TK;z61GG2!Rh?sIq%(7PkU)Sb0=(u0S$)D>XbD5|dX)A74#%~rOXqs$bx z)^D_y8;(>W&#!$!sy>W&sJrts;mZM?4cHkn+H&lJOP%@fPLS*i&k=zJ)7@JR!~h;V zxAq{w1bl>AaD3Uugw<}OlA*g-Ou<6hXYGnDHMuchT5$|QXpMzXQ`j@ZsM z9D;})FvE1+!_|@S#&&#nTPoNbZX! zZcYHayy#npoU)6KcKVEe39+E&B{A??CU|Y}DnzOl^4H<9hg!2&Rz55fn!ISYIslpu z;sx{8>N$D;Lqn_k5q3A+A={Ci*^#FXnoMDa+Pat>Y5IvOez*3AgAeXP`mqW%znddV z?gOK?7;Ep@iC^Gb7Ro~LC z6(=zg>RAuTzJrT~?%(&{n=J>K3q zYT>q#j{mimpXqw`98^`HO(OLI%M!5@sU03q$*8{AKC1BDyXFr(n0EW?|n=Z7^xv|^9?Gp!D14hUzf z2m`f`?|u>!^d`D|8X1xR!3HNE(|P-xJh%WT zsP4nLMhGA5ZAOryR}}bG7>cK}+hbDO+^^NhrGP^f zv0(?mdPLe9K@#aTMZ1>uZ|So{UiB{ymHKC|T;3Zk?2px`clk)3g)?b zHz{e!Lm7RgmYkIriU?f*b769%Ae|KTLNlF!;@ytWo7^~>8y|p?l&Mn_y`nx>EUAeo z{&b9)qv3xO(Le`;1UR|$#AoRH^$)JGUcmZ_y{yRZKVWHzSXSJkl$(^${4_RlYA}fP zH=bg!`FgoaRL&-|&2ec8p?WFr)e}NbLa`XtWoN(sz`;eb9{<}*r0TJN59WqmF~KW) z5Xq8xd``YDIchyqnj0IuOfE}SiAvI?L?I$^&ch=6E0D&6=sBa^P-rzN+zV!BSyLzy_VM##cFedJ{BpqN=0(plpTYDfyAVPUg81*)`71uKt4Kw0fd;nUDgcd=r(KPbOiy zD8x#PgyNAUMCyf4nS?tL0ioXSk|C#1hqS%O9Knl(aja+!{6rA@BTCxcXu33lD_Skt z1My>jazr|)5zhe{j!Ro%wo9`PQbPN1^BuXNiNgd>vbZSe7j&_1`tf{JDcQm!mp-o# z@{mO3dTv<2%a#i_5cc|_V63oNrt2PsgFZYvdEFPbpQ&EdMK_r^Tn3yP~Y&e;CBZQmrr-PE1Fc*1Xr!g8!g#2 zA>b?-pWM=vZve8-;}|Cject*2b>ubiLYkW|lmcgx9L&-<^<-Ml;}1rAs~UuYulS(3 zlN4Y0#ES1V2-!Nkd;57|y~nY?u(Fbs!^Y&tgsU|j_w%<`({7V#&ZOwc7fiXYG9`eT zJQ}YqJJ`lAzhP^N@L~TaZHh&5QLLj%0UIv-!66U+<*B#VDV446XN8*HxySWwlaTT0 z)L<6x+mz1H!YaNvjqFBvlh9%VBL77gfcL4A@>ZY>&i#cu;YH;Fb<1{xppB_%T#NPW z@LsbyNT`3%Q1UT*J@2{G-(zZ_`9#l8D}NuJRHAIor1_i*I{J8$4~(t(<@JG*LF->#4wc2_iT?kC4E}na`%CReu_Ezp6Q%VjFb=r*yISiBWyc z6^vL+aNj+ait>B*`QA=sZ1wR3)JW0mi7}1FM7-w**V{tbIGk8$N0VJ|>x;$tBPg#L zy27k{g<0zqq)tlWT6De;I}JY{g-$7(gQlAxqc_*@g!LGhOycw*#0L2k^{+mJ2m-7i z#l|O=$~+WrIn-;@iSu*$BI(fdyFb$ng!+~xYj~BlfoAzQB&6CK)iISpbk2xVM^1z? z?b57cA;z^pvh`vI_5^almb{o10tBLR=>P#0qb8(r&Pir3B-;c)EALqg+Ej|z#369) zS2PKi-@$$d$J9Bz0=Kyx@GENK8c6X^F&o5TONennoQjq2nOzWzzI!lF3ha2yyb$M$ zB(8}L>{t0Ns8~H;2B+Xq5D)?Y002WZFf;%F4n+b{DD6n_2+TI75YpqZBXGQt8*ImT z`>_cZy9@4aOW)GAvfIHui+3)-f6;LN0APj)ibMe53=X;6^D{FnlUvg)$z*dR$N2bj zSaln3)5%BDfZP4u(2*OpB5y}PeIgrEp| zpa+L(1Exw(ofda7l1^)v+$55f%uE0X007O5AR1x;KR^FJ-+kS8yW84!*6vkZ(v92O z<`#5INed;R)z*MO-4(`S1W|ktK}Lx1K7dM5NBTIx0whVwV57hj1VBFmAjd->`)QJy z-~G+pBbY@Z>^KtRamJe^Mih>wInO+nI`+wfY+{4C$sQxAV>^*fdup_7w3K(YW%(_O z6xJQtusiV-8s+Se9Od1@Z>|=~Dk*kK^mC{3oUXa$ov2`_lkW&(3$F#_})pr(Cl-Z>_JF=z0Y=XEPa zZ-+?WvQK~c&Eox~l2*rL&IWun>CYLX=#QeKl1ZXIB7dqR5Jz)yODR9(->F`I%WsYK zGH|zOwcz4_MU5a2E%c*c7}_=zG?tK34rMI)Ae=@D{Mls@2uzdbvjT9BoaW$xmM{C@ z$=6U8PKu^b4_8n@cZN&!LfLw*=9d!GUW~gp^(BG|hsFYYxN7ssXBy%%(>rrUne)Mq zd+=V9Ib(m`ULN3iCsM|oDN9O+FHe;`$;;y*$bCgdC}F6%m=4*K%w+S?9uU-`YL|Ac zHe?EE9mA0rg5{)$tu1W&N`<(vQV>%G?+6fFv&WIDpj&};{|)~a|h9Lmp z&`H3Da{9l-h~5Ro>7LIy35R>3MG)LnI;VJ$V#H!Wa$9&t*&1|MqBl=j7f@TaN2+C} z);ZoX@DcLqX(GTi5|<1c7ec?`h5TUs z8X>m%3I(ZTAQpkjMxX$!=^Uu0=`>5xLUUngnt~8JE6X`xE$|@QdV_Oofe493zrw|X zGXn6pvYUrK zIlH4&lfCBfptr(akdm0HE$-C$(5h>C#eAY(M_2Tl`gsywnN6DZ+k1^JM-6P**!*u- z7g!?bctgwr~? z24gE;x{&OH*3*hCe~Uz9MPMGySi5viz{O>d6|*S0s7Wrf{k|9sLYf<%_sQ3~rU|hd z%tL^W<2H{!>@Q#__Ug_}tHF&GGwpz8dS*u^&&o78A<=60Yx$J~GFo-e=`s__ed|q$ zkrl%N%;{}|=f>~iCQFANMdK}RMds`MrW>B0&-HF7?Lu_%Uggg-Rc;=St8_cO&R4W3 zh5-Jmjm-E)fSsV8_~H4T@RP+xDc(`sSNUU}O0qy_P}TzF3uqpiL-0u){Vy#5qcaCdby(wWMU_b)n3PK^}xkVKJFG}b64cVO0I~%b&%Ee zSz-7Al3t{Oe`gBMVnLRVWjv&%*eO|U ztQ5>tVaw&XsZhZ7~t?2)hi+$3DF1IBri&mwD( zTDAht-egjt4drO|Wj4-#@R5_swsJocT?8LNB4 z8_33^ZfMyfYkwFD9ePC^A*%W0eI_d3N98Y_)=?xVQe`3F9KnQ06Q4mPg90!rMAhH5 zW}yPEo5GaMP044cY9WSJ9O0GBqW+fEc4Q+3HRdZ!_Bt&1)ZyVpcGf!lbI}|MS{x|< zI$M*-X&9((>C$owkeU9<2!4ZEaVS%VGI_PT>*>+yj7iOYJiRY4``_8=sCr$X9V0(y z$pz)u8#~vU#a@HnNckpmXK{{3TV9?)=g~B!dJ+pyBRoUC_EvMp=WByH4^z7pZl$Zh zOGCDw@+}bR@K(x`S-{)0{utE=(am}t>$+7`C?%7{b1lU_)^riIKRQrMyp0d>~#u0C&65KcI2jrH&t{H2i# zkmL4hv1jN^!)H*P;32U9DaMIYsS=&KR-}idq9_mc67?B_GdVXwmpDKQS)0)jfM6Y{ zZz?vQMcpnUoCAw(v5>C2`n&+*1p->YA#HF|dbeiBrG)cxl`(giYN!}$d?ov#TZDcK z-5S&o2GF-|Jz&(p1pos^QQQ)tqYp3CUcI=bHtpk2i@m3Dyzcwf8P1;Z+OudDxuAv! zVk+6i%UJx&xbhFoz4qoY)s)JcphLQ2IO5>o=s?pIn1~QF;^Ujw2LpR$4%>Bf>#&~W z*U!7I7>%5d_`vYM1#TV4H*8vQXuEpc&NK7;2^qSx9k+J=qJJ(8q9%ot1#P54M&NU9 zUrsJ2DJ-9bQ?IsnB9a(DLQYQByT}k{pHa?=R$fi|=uZ_b zbtRV?_ii@_&oBX%46fze_V=wv3;40Y&eH!3zic?i7#!O^;=Z3tNvq5G6@oW=LCxmd zaCQ4UH++4jnl~O;+r9efkWS(B*PZYsywz|aL8Yk4fQ+I?*_m*(ii_9`T2rM%grX&W z{-bcTt-E$`VGXe<7#38U!cvfiXoqt=z3}zleLCH5sFNsHoM_a=OMiSVeH*JXn+o$}GhI zUe<}J%z|Wgi?mzc;ZQfKJ4i;G~8oQt5(cM;gwSo)3SX2ru_T;m5q@#G~hL*&9r%@+NZ7A7Bgd@bT$1zfCDRByD6W5+lWrey2~MJAVzAivt+ z&N{W5`dsWXbM;@&>J{R)1>As47?e`@0~^yV&ZLEuP5lWe4ohWC%%oMnA)4&}@w14= z9YLMLeWW$x_Cu&sf9|RXmpFor6KV2U7n$nBM&-?v|9G!I0 z2%>bX-nOKKtB)rhO-QEpi2v=!XC2@AIvqyjue``gZ}M8`4cFlx{+6B*s)YlLKD4-~ zqH(Tb=mQ9Uzq8DCQZbnM=G;`G5Q~c>x%=y?XDAu5-&-yAXPMa0<+qR;maHvM%ahfA zpATZx{}?l!wdQ{VgjO-6X(yx%asnIk*)}mVJ;kHBJLH2CG5()jDV^@T7)2>!Angj8 zDUs)_S_Sm7_k|=TV}xJB$%rv`9`f@!*1^QA*tyxmH?(t*hTiLUlTG{|7zg%5eGsd( zL{NTn!=a0gBO)cS&BrN@V$@NK{pM1XIC-}F1@1Cp>!E<%=RxBnL6|Yz_5}IC{?`pI zi_z*FA7}~CI^y$UH_H%ZaQpS=7tOuPRYh=Ptk&Dol?EEKsSsa&E2)HVb8(s-qte@g)OpxEdy zGG=E#657V#J+G&hqQWo?oh2ey(q#wILC`m9haWTGeM2KOcu%d(PMSlOXJ)v0mFhcx zg;ZpCGb)#4)DijPc-oCx)-kSq@z}i#%_3|1vlqz4Fy+RpqI@eF;CHLX3cY%n=sF%jlwc-SWe31NHzRNZ-CyoH1CFK zBwLqw3f^dZ0P6s5`mZ|1MDAm#06?zmteVqSwj5n$A3}sh5~k+9y*RI`O;>G@TRn^H zK5lHVW0klYE;_TINXaaq$DA7K2Y~_9FjWm1SAf*8eBQFsXEU?vg>Sm}U*X!+De$w8 ze7Z_Ls)R#ZDqJOk8sUd4iOITp@$^ACb3!}!%pM-S^lq=>58&;qdG7l{o%hX%gjXq+ z{P!hq*Ii*lm_%Km000I60M58t2uWk0q6QsuKt;Q7A#mNf>Nj(BD(t3jMfdSsxiJ=| zvhD|a(*NA?J`QS_#7|zodH}V&J&UeFN24$iP=?LZ+QD)b^#&@CnF zmS``O>;!p|204VT!im28Wwbl06}B2YP4q5!t7F!SPY!cCz=HFeT>_SisN2u&h`oNT zT_dWL5{RMC9qdhx%m#*j$&KqGt!ZA@JMF`&5LF~U?1@Qa%hk}%&ugC$cx_gpc|jTg zI+gLF^wrWe@ou$|$*yk?)ro#eSD|&1!Pg0U_Ne72PS}-Pz3E_oR{1r6kM?)roR2n# ztxz=N4#EIHY0Vmr6;2IhcB2B$fDL`A1bILk=>f>JDG%4XZ7}v55OM@?oSYy~0NmCL z!FbuEKvXr_oNUk_N3v7TM(5xVSP!Q$!y&(_q5MMqT6xA={J>K0WPDi5L&kX*67SG- zeZ1sY(0=wk7r%bxZ6M$;Qb~*o_!t}j0Du4hfbjwV0O$Y!EdYVVk$CyS2bLWOLO=|X z_G+T)JZK?TPI_fraGvKU#lySmm75xU{P9O6&7Gw^7e+|cv*{3Dy2=GCsgqwtl&k1J zPYBKfGn?UqB2#zC0By;4{??g~-4C2IfvZ$^v2)lEK?2PEG?gd@`UnB-T5q6Bqa3iZ zGV%+4PRE4+5=w{Ugt$R7Oy~LaSbl9GenL&L%ZX=>FXu6SkS2nR{Zi{&zpGB_N*(*?6o~?Z7}v z@lAb_P*k8Yq+~8p1AwG7wqKM}v5WR3>Gg(oFX#X&N$jQu;?cI*!#?&gnsv+6DP_I1 zlhj8Cr(U_%dalu^LRS5zWO1l!I3lhEW1*1<0{}Il24zB-a4Jh}v%ASdhV{L~9SQe> z@c)eWX1DL{!u?$RMNXhf8J-xZcs%ykrt(vja_p3kqzfxf67G!904U2pkW69o+bZJ8 zq`Np}!(?G&LEbgcwzOVExYrKzX!P4gx@(1zz8Rb0I!FfIa~)%3qkgy2b~%-EDM7l% zjz0ddJinw|vmvA6#h@6I9o=ufbtT;%HjoLy$?d@GG7;ATj!l40bO4+t+L=pHwpM#u zrEDcxbA1mkTqoVSB4#)ijD#0lB_M=UalFvmc!g6sa4f6xB~f*T176RuSB-x(w5++V z&t`JkNw={WJX(;P9E8elMG>^&uOo7*9?at~LT6wbvWGKf0HBK=d0ZCXe&x4BKjBon zV_v0)Ttg13z5Vv(?sQR&BUbqTsf?gb!(y_iHI5L%2Cjo+RpJdD>`h#EM0BxGGUhYf zl;iQ;NdkM`YEcjn0ssI2Lo_fn000kFfhbCQGd;ov#t{(G>$M|ry^$K$vhlb{!uR(= z-CJeXYU}j2F^(d9_Co)Qg8KjfGDKE1004V%VSv;07B1>;4Um5TbP)>BK(dkL=Gk|! zCY4*hC%bG$Sa0{%R-4uPePmtMddVKEO|@Iv;#DHa)t$m`yUF}Z8@`;d*i~)#;$!PF zlf>XmCtN#%42@@+fdPP!000aLS2nM9s_5x@E|9Xh~v@Gmgk^U z4u_d|BBva;5a9|!gi!HmAPI@*ZmC5~D2KTJ0WxL51iipv#`>>mSx+E_;-*Dq!V$Iw z99xb0?K3@HvbWmN^Hk`TewM*iaqjif&E!WQ<bdO=j{&I4z?%LsUJ;l=a8nor#R<1i!B|qJFz& z-5%^nm}n<9gT$IpVl)bg;d4tsy&bE~t&%!U+Ku*L6u$hVLX8*Q>Re4lBUlsK+-^~k zvwUewL8b3l1V{$J+Y4EEVQJG5Lq@XYM_%N;@J?Hv{<>|+yBklb#>&|giuYS$nnstF z<9*z0HW{J>P3XlGw;sfaA|C_fA%w5zGEui2sJ5v4^Q0w+l}AHvcWfmPj!r;wDZ}Oa z+IMu#Onu2osrMjr{4|jX76>*c6`kb=Yc2D2`BTH%_?X)&j2BMfIK)E1>>#=dve34E`q@v=RWL2YokDHw6Ox5`A?HQkGLv3G}(3|py8yVg?uG|VNl z4FB5k2FPj_k+K)di-f19a0Ir<`slBx(zW8P)^ma=y`~2?uLB<)JYIoK8MeoqAZ#Ni}cD`ZxrWhS;*~g2#kt zJ#I~{QZ>T4RHm%CgZN<3&fkcsQvDohX~&)I%tsYxd4Y!AAT}@9u^%d1K(G+lnk$WP zwlfX&8?zH?vN`jejcq#grK7|wweoLal5<5* zZAB{+lVan{ZO+E>x}2V-?6KljpV(V$dQdiHR*CArV!Z|KK!vJGlz&2kYQDv=x(VZV zD`CTe0}AxF!S4WUyd1ks=KKc>F|2(sB)+-TqPa@wT?hk!8Ip(N-6~!)0u^rj0b^gk zfnHI+H2PW*HG>0ycB7ANN1OvM4pagZ%6tB(Q-B+62Qf;Lim>X%D&%sbdfTr}X?9xS z{LmNV;p?s%u61^^gT~0je)G0rO&8+WQz8tZU_ho&+bzs8ChsO(lqmp4%$DKvP#Onw zZX|OZpQkH@c`@uK6rDf&$8_enC-ID!2=$}4Hk;hx$+)t?Lq}0A5$75q#*uDs80$76 z`0|yDui^U-KgUwP*zewz$3V|m>;@;i^D3cj zH2=*xlWielV812|e}iHgg}s`DBiiELGVi~We`d{O?I=wQI;xDm3rwo!tl`u9PmwA8 zzRl=ZO^LWi2zButL=^H8#^>X-e2Km9APk;+4ip}}e{Ajz;A`t1@<+NKf3Elqx1+dd zxr(yo%ZUlEf&uNpHoI=Y!f(B2PuOUBT(ncLSBpMceHnj8 zCqAc&0lo<5xYOSifqGh3?RhmSo+aFBSC75Z<*g38eLG3S`NJeSG50QUNN%aak!8kK zV5nxC++W#U3w$$sx5UXQ=ts|@xFR>L4HGP6lkT9>3}egOLvDV1yXPCc6UIN?5fA_*cL0D#kspzTU+)2;_u36qTgXTgYJ8o118*_ zwlBC~QHX}PbGR>O!<3Asd15p%z>F2fPcbp+7u>bDAI&@eQt6&Z6YK#RV6-XP@-7vbP5XGQgPHWt7NH`I?}=q(+aPM$W;`7ogkqnMM%J+gb>{r(Sc&*yur4SXz|?_a>g zc{V<^=GNF3h+VkT+;SFK)F$0~&2tT2%M|vrm?w$T$mxbe%1~BHz=yi)PW%{4O!&|! zW>`Vkx2Z9c%r&@U4=fE30MGyc-*K_Eek)apl!sReCa&T+`*K!d_UsTh4y824%Z!?E zgq!mvW6!QpSwfYGyay21~<-(%53R-HJoOCZFx%~Bs6Cj7#hQKJ6AJ%q_Yz{1uIL0{_qhapc* z-*>Asj}gw8y-?Om(QgKm&};N>#4m7%24=;hD``Rmc1#shOWI7b2*&KFL2_^yYWVDry(0r4#9KKAqN|ln2olhiR^cevTTpZ zwU3q6y^GMRS1BZE&jh04k5|XlF?$7!%N({>gw}8!vR` zr*}~5dcWs(fNX1=l!Qk7(*_|0c*rS->GD!Pt7h6;I_&onRA+v4?B&(Plxi5h{mNZU zwb9&m;`PRkXGKQsud%MGoKC8SwbS|jzAOTf^vMilxGG=d!#>&@d!?hMGaWFY_37E> z#8l|tdWMjk>7!O>>S@}MltxSc(8|kri;*Cj0`4^n*I6~6er{Qie^Tw%2&PeS>Q@T9=fCqKk%rmD;*peJCegGz(pe$Slt0|l z7hJ;)5Cw#mB|1c=zJ9CZNd|cpd8&GeU*~M7Fs;6`?F@Q>ufl%o-VAybK`OJumY*; zJo(#z{2;*RlnDO9$RHIwOt)|k<_=+v=SoWKT8QLQLaKLwKMX)g4$OVnGWn1B}b zD{N1qO2{`=JdP7pG3~7IjAXZkPGdh)x)L1}@S{}e>5+0@9yXOay>FcfG4mrayVv5* ze20^cXzOl23|=4i9GcOOvWZVv03e3y@>)AHX1Zy-+v65Hjugo(kbgU{c(;7bK}3j6 z#bpsQT@dKYqec*zQ*;fF!c@}JI0jgTNylRu9|=VS)d8n>nvGjYgmaAH;Mz9t^aLnk zgr>@ICkfj{YgjquNYWQ=;((_HTVBz3ks0)&8p3iwoaY)s0N{q|0ejrc*-XL_6vSS) z8=uSt*Ps5Uf*6N+_7@J`gp?ALcc7xh2%2)TS7Zo*=7o33XOV*#Ye&iH&}E_$UuG;U zouFrms0xQe2R~IxEu^tl!7zQrwMR%&B2%^Qr)6f;SY` z#GPK&Nia5lzuuEC`~tpHd%GUoE}?U=UvFg(68aH?WWq)W{DuG!IP89rpa=f|wJ!H> zTgR=0i>2puo5`$DurAnl3>_Z;-t71`Yh)SBoYY0h@`t>Ro->nvaP#x|79NqeUo^hV zK3vRGBa=JnhEFG6!^fCBBA>rMp;ar@9AqKX4)}kzq$8_}V z%vE~TF#XF2g)?o^Q|G;|FjN38!#Sam!45R*wpk^q%br>~EGI*({R}E0(P!&hQAFXJ zG(N~~WCbVe{{BfysqtAs<`&7A?;bS0Mz`iOGqb%S-QWNK2LSyY>_U8yItXMz2i~7X zC+W2mXxD#oYzaiw{$#`_k;%?NDG7Kf)H$bnnWOsTBIU4b*l41s#>yistD;#2o79$1 zIN8EdP9{p_1@EEDXOJM#>5r^Qpt5HmW0wi(O2kpU*UIJ`VMHy%dgqam(6-=J+3&ZQ|Xxv8-09zMRPDbLbbEMvB%5d; za1MTCYiWNx@2vg|H_oEhlUDsqE1X2urg0Vc zG~)1=+U~X7@-XL(>X9uf9NT``%Ge&aV=%bd0VUu`Y#^DMjO%VkNBWC1)=AzEaSF{4 z-=Xgbh=*f%TY0ah#L!ZDJ*x^9|DHCReQGfV+hl<-vmaR%bUqbI5|AlRuf0sVSIWNn zg<a?$B>sY>P$@da8?B`1QGK);e=Iwu;Nti$3 z;@pS;sDAG{eqSM}pZYM&nAiVpNN3OzjYIjs2p_PRATvelN}FBtMTSAR0?_YR8>4k2c=eO%Yxk_tNZz-ZbOD zc(Y&5t+hqmG49Mb;D|B=OabRMD~C2U|3lu0>dtKOM(zB`?F*zv8e{XD%s-x>O-Qr| zcSm>6f)zhPZ)ebN&_LVzT?tgrY*H4*U#Sq;m9O)^?d z|94`z)GLqMB2p~dx2IsO!um>;mhU0|>s%*WU04Wpf@Gd92$TS1n*y-BW9P8fm^b3v zzQLfyZ0#Xb3WjC9B(sb;#t<+CoY|EfYdza!t8!EMrCvEwXg|NQ-R-_&p(~O}F2`8E zlE4_t#OaMNswe_kv1u9+=6WwZ5&uQDalRk<>vrn(H@4%jXs~Iz{@+mxF>UX1Fzanv z7#r}Luw6(w6Io*ZQlLm@N;%J_I%A}ywd?;kud`>rFM@BNt6LaG065|)MrVZ2KG+;K zpe{5mN0^(KByO7{yBSe+ZnW6u1#5$czk(dP6*`ydt_TE! zk#dEV4~Qby5D)?Y001*IKtlik4^@FEPJ0#`g%RX>35||p4Nb9|gX74NkxgFAP6PF} zoVVTUcgMS3zF+_W*t7pH2<`y@$Phr$0RS05OgEYHCAUX%z-0%(UF4PcnwdBjat5-y zz;cz7&W_!++{=B{a?N^QZ`GB%TaP_fWNm7Ai^oJ38S7PiagwiAtQJ;$@U4%mYYh#2 z<6Cl9M(}_~PIkZm0E7SlW=77et^oVqzwh%rIp@u}*0md7wr*NpYgf9p?#7ZtP_0wqB(S%ek6hP=7xE`;Cmg4`(^FL=|7QhJz;v|BVp(p?l zGouk8UGaJ6i6;gG1O$P)r6@~tSw;nxfmjO;5_f?~drUUUe@luD3Gibfn1B@Z@RB#z zL{NAQYpo@VYlyj4n*;LXzj!UjcB{)r_{7No56|YH9Bvq*<#HEnE46vpo{0he)>ZJEBmGUjq*{Y_8Y$d$ zHQ{DBt>X?@t;zRdOrIvWz{!UJ!;-83jv{@gd)3}E9R3?V;SEIk+T(vWR0#|7{)I}M zHL{hub{KAi|5=QNzhOtelt2V{_SC$#$FWrhWM+Kn?bG0QXjb{otmc|9`VH``JP^tT zZr}fGL)x#V-ScJZA%Hx(lDsvVAhsLNH}Ab5Bq_JDW-c6o;wof^fmd3fDfKpQy?Kkj zx8P&J39vX~+p*#owXp0?T1{5`^&4+{R$|2*zjuYzJkByLt$HMAn`KNXaV~`|bCVF_ z+rGzknj`ZfEzbz!C+S@H;$yaO2W!yTlj-xx|Pyq-XxjKEw z{d~}K=iAF|uc6k>4s~ZFssvs``YJ7rD zUDnKiLFK0$<)F@OA0285&H^u32G>-5TQi=GfY@U(a}3E1t_rrYBs)?!R(Md|nSg*f zhSg>7LvshB=61CQoV4)x1_)$9tHx4YznzebC|e8=!BQZ4NyF?6VIwy*9_a-NeP^5A;^L+ePvo zLcy^ovUPh>ijo!LKe^P>4bh-=_yu#G;xw=Z=@#>{$Q}+#53tb0^)>Oy3fwtD9T#-t zCEUBKki8A43D#_tdlYQn@72NN} ztwKEj1zC;amg*{ue}3FLm9KeF+8%Ubss2Lw_B#jNn@|Q9hOq{MT;YwqmvI6_ zH`2WFZ-mr9m0Gx$&XJv^bdEdiq9*-?-3};zMPGl2dd-`<~tXN{WhsszGyzv9rt zDo%h9dRt?9N7xx~u8fVU)mU%5N}IBpYRSuuByg92hYzcU(&H}JUpZ+!xCC+=4lv7^ z{z~a@nqe zO}7gf#a+AMTRLQ&ZQ&>1r8?mHw&v)Ba)!a>dv3{$7|L*rnk)QhkF&WQGaW@>K&c+* z%qX(gs!J@c+ z&@VGfHQB`RT5?VAF1f}h7i4B=9fuO`cORKZ6}@JE=@VT-C&-o37idO1_coru8w~<@BNw=NxBvYhIti1MkyTR=eb1 zT}UgvQ0pR#l5}@@Q9WZ+yJ+gSnK)Je4y`ftqC4MQ;&Kz$q5F%Voc;)TtU7 zy@AIJ3q}K`A9ukXh+R!BdDM%F^UvL?ygjJCV{HuIx(|%Mf^nR2H8@T?kQb-QW--4! z#$JKoo$^|ICDkBP`^LP1ji;)wCQV+!=GX>923IMkySV)rO((K z{GT5IfAW29(4gdo3qOJMwuAoFrAC8giz2fQd>((ESs81V+52JqXrI}JmRSqYn%Ssd zJ}t<8-uwkiVAJmKzM%Bk8#%xl0C9RYqK%Z?Kf`Lc$h%|)qD3#<^U2)2#V$`^-EsKi zqi(n{M{9Y$gU)4`48;Y9*;M67GB_K6l&+4E$%d5R)m8Fdx*i^OTUjNBw&z2i#5XM@$uC(rKHEd&*|bIomG2AXd$$ zG|9X*KbshweH&`f1`ccQdp4Mfco9XcTK8E>J##1d>D*1BVI~fVPvB_MpuwPn`puj* zvTPLStg0JprYPl7S{5>r0j%VK{*p|d9>{Uhl{c;@a>eGldfL4-r#A$4gsQ9D8f zbRH0rM=gb%uhEvx4b@tXm1J*Xa)Nomy%#$Z72hz46O{pZ<8h-~&X{#CBdO)>sX7|M9w!p_jv6C>O|WfgG9HI!2KyUY(P`%_D6;#G7b3~cxh@7GUqDNX zcFybkbT0+tn@G^-z0*C+6+?Z!@+`{6c02IF#7Btao}u}n7;DX2vLl`#|BFJvE4`^- zF%|mV;Zj>_5>}(;{W&?)TY>1?CX^TUJjrL9566QWWE)oT?!Vudg45T!WqQGK{!yBZ z7`k|bN&}c0zGCdCZ`NNM8>eh#&WRhlY*$GZNSsTa5RsP_EaeLp^#udqAc8D1dKbnF zSh0sHwhGgKuPn3n9;zD{jz~4=MXjPJXlo|5ZbTE6!;xyXaiX=d!$kWPLsS6X5ixMA z6U4HY*53H19rzg=!e@xy8z9hyYNPzElaA6Dl3q&9u^JUS33eeMZqwd_PRC!&Suzvh zJ9=!XsmcBUVNZjM^n`j)%iQ|OC$C2QC76sPpQG)abcT&=Qa>*1yH`SBC;?($0Ue(N z2Wt`Lc)u$7q^%noF=EiP*zH(K?(N1^t#ez_!&K8_A&=81)?>C*^(mSfDp`s#pnePT zE>}GKX?r;v+obvVH9EsBE@^(GL3+35v7Zq9%*WN3dc_j@6t1V6nEhHK_D&}Y_-Z6? zv5y+LjmNR&T5D!=NKH!5v&(Sa&lj0CGT$zZJ<89sAk(MlW?rqq)oJzPh=*WQG;%q2cdxzH4bH=3&he>OXUDC=cTs+Va~PadpvZyBMZ zT~Wg>Zl1JW@8AS}rT%D6%yq#qaMGA@34gBLyE8+NHx>VEZN5W3(GQ3}sn;evDpZ!Q zdS}V0Z~J|7bF;XPV{r*UMk_g`CNChItP03F^*k56l4qmR6kE!)#6&3!kytP&QRI9ATYQ>uz=3dM{FIYPnr>5-+#=?I<$3-o& zP-=Yydf(nmK2T}JlFXC5Tdb+%&9VsJ7!v!=d}@q(B=ie;Wcc!!-yG8y5~|#xHV>pX zx~`RYkuQvhY)e)Ky>x>kRio_0IyBSbBpME)KO%p|)n zF4_JC%T%e!2{TJI15 zi|aJ*c6WF8E6_W?^4_|IR9=#->^_^~R8N~k?F{s=UwKxeDqlc=1Fk>&_hGJO51NLL z*@jDO`TqEiJPRB2Igw~GUR%Hffq+Ix(wcA8CO^Kl@cZu8MMZ`kSviw@Trb;`(mW1f7RuB)dNm6($eTKG+RLel=l zC|6i5Hka?f5zj`_+ovZ_sRfx8!w@ing$VznE`pK~Ort|dFP&t8SH~6wOX3d5bZStI z#4|OeXBuhVch@v39?HxkMjmbJkgF!Vn_aN}3)r#Iu0xl1gx9YlrU$v_5+^KhkUG)C zNoUeFNZdro*sY7PHl!b$y7}3I*eRV*@YEd15(8rzOw-HsvW^mmx7Y64hDKe3kwIC7 zQv;pYDkTt|yz~1Q3n|eB^|@CbV#3Lw2pq@$Kpwy?0Xo~V{iF+8a!=*f>22*I#&I!L zC&FcoDg-wL=Zt@;Wg#QVTnT+o`ZzjL40=t(plS=<#01^vd<}HC@|ml<>ULGLfB-4R zddlN?bbKZPZLGEH#xUlZYnOTxESX2HSGgAdVw+|FnLE>KbQjQ0yYFt(ei1;SHEUbK znjI_IZrqq2+%0hwM|x>tBm`om8fS=MilO{Ti*S7!Q+pn$S#j9Lwl*W+q-F(F!6jpb z83oN-y`{L_S@TJyY&Kv{k>JjOxI(Rs-Zw)76t?VhB4PBzvFHQNzhVlOrwjn0MLScu z8rcb?fDv^=J^*Wte%qec+Pz+>3Tjl2v0)?i1AG=CHYO=K zkVJabWL&nc!B`k?H}Uwmam-)(l>D)7)a3R3Z;$>R?j(r9a>*X^hI1OO(dBHte>P{* z1n1-y&k_>T9q;^Rav5sGCNJ&XVkrT!FNF?|3c@W9EdEs@Rd8F@SS^|%&DFq6A-iSu z8^c79@-Hf%;zgqkHjSn{3DArgVw*?_Jon!Y2vHfVq-<32C+u+%<753EIlBiBBPDuK z)ZbVM+9luMiPHSu79@4X!pRZxVFIk3pgf_HMo?lkSAP}ep5)10>sM4fkVazSe`X+; zLq_sg2+A)kSPK@i>!@@f241lE?nv1^jC1lO_KV*5stOm7f6p zu+Ftuo9sg>bBEV0hMxEB?JPv|FHpyBU_>mu>K21rAO(vo;0qQ|{ElnQN)SOsEQgK-*26ieRX~L&Hv|=*|@lLp-+ZuX^8rZ!PV+@y(vytm;t>jrc))YxT%ZK#=;8~ z)l)kf5@CSV7jXs86J{aGv5g^$$P|*%H;lkYT_u}gBgP%OL-J6aE_+hI0#B&35X$Xl z%>s);_tHAwawNM}me$Y-|2z1g=EHoBd%C7Y>q)I`6zeXvb3H|bGb_4%qfN)n{dagV zD0oJK*XC0IKG5CYOW80I058<8X`GM=fCCa=LcZlgzj8JU(f-hnHYN%At46Xfb2o&juEwZr}7&IaH zo$oj>o13qo3#<{Q_SA5pj5A8{)#4)#v2oK3-yD}E=CUu z)V3MgXKOpDJxK12iTA(ipwyYRUg~zlF@}Sz@C<(HI4$AG$-QKX8 ziVkS(f=`$x1;mUq>7$7)9mN<7=3d7>p|!16Z_JF+T-tAKiIxDri$9TI^ z$Jzopig&7oq6h>F!}6k|#CH|sP44uSUpWyd_oLK>h9cE4l$}kDGzA$ptk?T6{wDd|9w*QIq;kzGf z=Mv_93E9*F8&$h`sYBP0drRxiZb2rtx`Qix5*%A(hX)Dmeovz2wPxhqBO^QE)Zb<# zoonkUI5D$E|IOZ`BLne1rY;hPpH7lEt0s2Xj=~~$my!p9)l1eTguit%5VRYUh)5%W zsrgp=Gk@VgMn+jht3f<+g*ZhG5*^i+JYJ+V=Ph-nIXtXB{O>FEIgsp%%|8EtSmRlO zSOTZ&i(je4qGCkxri$LE$XXnyPabxJ6I4EXk=+4T)yEifX7>l6 zD^Z)ZbdX3Z9X5abj&^m?j`W$gN@QY6!u-i-jJa)WG)$uRGa3>G);K6;G7U?Q2r?qy z=`asslfJ}Vhq=XE6auoD;D7h}k)$TW zVyYIoK213H88((jb-pTNQ{|v>^-}K3nU2a&sH744VjFeAp28yUze7OIU@_6tahcdn zsEH)8pX-k#%b_l-_x7W7-|%VP)#|#1xkLPwT`-Tkp1Wgnvz-Ey;5AR==u#P#X3Srd zI_eJ~|5D3AeCl?gF7ZtC_Lq+MNvnHaJza?R?QCv6wC)hf22c2sj9l)l)^81wy!3-( zO?-ou*RUSk(^(GgyMnU7R`v+IfsOtfmtLjyx$YLtuLeX9>=?EVkn5X|W7N*zWdoBO zx9L-{C44Z)gKGPi^x!E=@PjWbiLxXoi;3H1#bC=hD$UcH)uW(Mt;M28g;=@#FB#}Q zILN{_+s2snA|Y0iq@tMlQ5CI(V7z8g$p!)pFWW_9fhII0VSpA{%`O(fg&O`*?%yPS zn7Uf+)DsF_I(UjGPaBpWR@;i zQiNcZIPjl6+T1am2)IoSu6Z?Tu1Np&rB<<%r_`ZjuM{GP)r*VFFr)%Fe}l>xw%ppi z+~B~PT9kyLPFO#MF~C^f7`N&%HQq{rTcq)SHc5`iEEro;fCrI=KI3WuX7WSUmbL;l z)#S||y`LfZ1`@YEdXPmVr}ixvVUZV^3_g%c$}0AWGiDMl^_N>ez12&gbCc2M_vlz^ z)v|;}NnG%~N*JV?en?INfUN2(LBH(HQruraEm~h>E$bEcJMK;-^DFdmzdsp<{;J-B z8hKabgAw;3RVxe{q&d)uq}(nBuLudAk%oW^7J}=@SUGYe%p^#ZDIZ^rxj!3{dM$kz4FM68Y6pD8m3b9ZQ@8Nmx6aFQ( z$HhAvR(jB^HoY4BCX5z>fw<1xV#ru{qmg-9tb{ZKr`FW$urfzL;jh{OGY0F$mh&-c zc>do?RBYDTvYS0xy--z( z5CCFw--iv{E zm`y~$+L-Ntvq=9W^xn;06kUI;00PVNouOP_9Vh}D6m=B3cUoW9Q}0&}+Y=BS;6FG4fUf9=yav;jHibVf06>Qd02L<&S3j&-lTuU* z0tW!bprK_2&ucqj@f@3Icc>&dso_t+Xi3>F!E%6{|K8G?AowT|xjV-9I)sOl#6BL!doUUSgwg2xSt zTSuAD1v~(F_F-qWOPZrxI&2~G{akBAjDp{&zEo2J87@ zs`>4qDGAshl8~@jkHMJ-1S9yT%~$b^ekTj5ydyXPfHLRwTq-l=E-#)r-j4azKD~2q zWA+nsLV`O9nOyAh5sAz0)^H*>U&V>|oG=!wBk5!}?PEKOU*Ypd996r3iA`mCQ-bpMEj(WAwj%Vi%;-CMp-~j@v!Q1A)|C3|2Jw3rF;A; ztI-7hxDqnq*#F(tswn9HYk4Rs=Vh~PICbiBuosxN`2qyNBUNoF?*Hi zo|80pNVP#oWCd##F5E_|QxEsc#3|#b8?1*WX}`5S>uEEwFQ;y27+;W@XRNgy$T7{m zMl>QdFT!9kSv_32>C)*;E?IezH>ZzitmTLJ5>|Gj7@QlX`CmCsF5_tE#~lC`M)^T* z{+!A03YCAZg+j=m-g)w(oZAm?@I2X%jhAmW$My-P^?!dR^4?nHZwoEAa|5@CFTM2NCsMJ?+H5o2DWVHv*>DHBoS6 zT3)RetO4Eq32se(4MG39CC)ciB@i<{jc{889-j^hg@WNbZ0U^C4Y_$eZwOX|`{XS| zu_mxQeo;ZTKOmYjgBa~>a5au0wE+uBKH9ZvfyF4|a1;bjlqp`^!_%HX!6AEF@>5vW zg0Q29NAsp0nnW8$*3;gzVk)Bi!0HIgcN=E#T1MT&3W#90Dt$6`8!8${?u2B(xEM=QpznqV9 z*QQuSC6Gh2S>Rt$UGa&|j<$@<1H6feoshNMRp`6U*6HWPPw}an>%Ck_H@BHAKUG`s zT2$CaHB-yVW5uC9%@7_CRMdo9T@NSpJ)QY;tFENl^;${21r)N}`L#ISg~Lkzq3MQ2 z0Xm~tU-8$#uh$`Ccx90E+%tl+1XBn57L^4t~yay<-QL?P&&5yO^tTl z&KxYn!i6kx<-Rb;db#(tY8fS7skd!x{HmU1>+vdTQi;2!s_|i525wJ9nTcr?zT%Y+ z^=r-wudqOG%itLcP684Do9Z7(6I1DJhXjA6Nqt&6Vjooq^Wvk48lb)N$GVJ?1BgNo zpDOR0{a)A}ne|Z9iq<8s6lgBiHh*%Edev^}!eWn0-;t{TKiI+ZYYov072%3p+NZdy zx%a0|skJGVN{r*o+PC9OI2=iReSe$+$$`-a81AIuZV#6oo9vwX*x1q~3gpIsP2l=U z)g}sb)1v7}X6$Ck8!(kJkL@P7Ipi*l6E<4=)Cb(>`+4#94DZ%XldtBHz42IaPG5Bd&Pl z+3?=Wrrj@dfIV#HHcM+x9ddeh0wIU3r!gho9=Hw}PtTjsa*u97w%NaCONx@^y9(!X z&zuH4=e^E9m2+?&OLOmQ>o1!)C030qdmCRwhA7p%ORe8cmQ1>Ab-6PaZTaBe0m@D& z`P(pw>}4qT-uyj(tVjBC&v7clXczC{^J4&N1NqQBjxlX&{9|o1UE^3+E9Fm`Ixq;L z#?f8^OL;`~?p_yxfTS9JS7#|H&1XOgM&abD};_KAHgG*9kZMP3cY@08$= z4As3k9X!(9Hx;gK@8zizlzICpKPl?>VwZvu6Wv#$r4=8aU;kk8(J`bBkB8oY-L6KJ zxvfj6X3n5UX!7y&7_`9v0D2GJ6Hv*{ zD)kuq!K23efBrq3C)~IU93#f^Mw9ThG*zPdN&8q%Qgnp@LlqclOqV(7snWyQ`yldUFNG%}MiuZU?~HSO-;_e6En}!cA?2BZ z-Zk>W$KU0EdsLmzPDFljEpI*bHwxp${Z9q$*xMmguXiIO1o(f;VE+};4#02&fb*{% z>i<=4Uf+olendXkRn~;EWUy4n1#z?nUZ4*|eo{li_#>pJ5}4O|p=P)f`z(XK5pi<1 z#~GZ^ple}M9hp8J9j|^b2qX=Elflg4tYs=b-{GwhyOUQxyljCtr&(TxFwvnqe|M>+ za<09!&40}oNW4`d0Kg@qNY5e|?dL&`Za`zu8b&S>z}w5K{T zb=A)Jc3WIpBm6h|vW5q1etLXSA)@u?yC17&~8;?gLOdPyhhuTB&YMBMB!oNPT{)Lu-^K&0zMkj_f|4-p{a_8m$_DC*t6Kyh;^ougSI%UOQe$O+GBOq}gvDeEQtH}3l( zf|S*l~t7Uc{D6RhK+GEfPZ;%f%vqj3My+BAQz_>PU$hmBWB1VBWu<$phsN- z*Cg9PDE_Jv-Y8Mi&m+T(`)eL!12b;Z7$f6M+ct+D*WXl9*S0-lho)}_wbY6a8Y>58iWKCK7-yBc(>fN;aS!q!0$*tv zYe3)*04=-f6H*UV4*E4m)K1c2^36`1kBgqQ_7PW`EV0*&=pp&E@%(=^n$)eaHp+iZ&mUSbz||oR9>=U?wX9jJrS+G{9WjWf}2lhvXV|^3*PwL65_`3f~%G1 z=eUP!w4L+9v|ZAe@kHqib++Q%4`de~GESH;4<-l(;;B&OA7fs* zGsYBqMwZktVhHIeT!!HQtaksxG>6@4ThHa4J}xX1|r)@sXH=B>w5K2tpeLk*XoFwP7FOO1^icvrq%Hp~{xcZp>xXQYEso z-{%KpZ|4&yJ1a`Va)%o{Cr|osQdk7g;gJJA1vwo4pz@I!m1Cdj*%5~(8Vj@Rhi+Y} zEF&2leR^bilcKM9rG4rjL0v+7H7F_b)RNsR*Z219O*$<4Z|9dNRo@2-by`x8iN$DJstRt6Hu&$D}sh%qpg~!3S2P=_JKP$ZJ z)ox%(`$qftP((FVZ>@MzmM(72{7+?b%xBkA)TvH#u`wf2QjVAxOCbj{mc{f-Aa4eH zza{k|{C}&IiJ2zoNJd#58B&J{+AcrwOir8Y1Jd5+>Y@y|p=mqq&CVe>`zlPWmi^s} z1%jEKS1Z|vo6maX8a142%5V7BFZ9Nl)|$6T&yW6JH*Th}|Iy_ZXrQ>uj4RD={JeE9 ze{Uo2N_D>_WyGp?PL*BxVaxE%SuMg#u!K5%u!I7@IIv{Pb>Uz(0sRN=+Q7vZ$w7y~ zzMdzu&6+{WS=tvr*du27)ep&LY1VQ5lXC=#X|CDG)UN0RiH)iE@6lJN$N~oqj~CQel)u z{CmU;&;Xy}qVeJr91{6|GfSk%GNAgj@=K9C=dbnbKhuBla6$c(1cW(j`>3C(GR+&woSes%^+6V@}0pKm~z4hr3vE{l?5l*z|^Wk#sAF_0;a zqi7VA5pA+yKmb6P^-Oymdb6A8zrUfQ2GC5s1MU6P-h_U3(d&+vhoh9H?~}`aWNsqF!$Z_z`1!MuMb$Zif>=gjYS$+- zHWykid=u8H6ab@U6152QTmV-eX$cvR%A%xq-2?I>(5k@)kpr|2*d}Kuk#UhOxqxUR zMl)(JpVQl6FjLNxG}bzt3x<0)QR6}PBf5>Tbir-V|05sV6TVS;IR`w!_Gf+>`w&=D zO1csA0qa-D0vqL64yQA%l9z-mz{#ZwmghPIZTshO`l81#xitMT+{s-iObVp8Gwpjy z6#GkyJmm(Ou&1Q&f3YMz> zWyXmrEm$*qOD9~N>B5cO<42GlaX$o9(QrN4TD6JeG5z>~Fhs#nvV^iqI=?Gm z77(N>m4>l5cPc0@5Lft5AFV=0Q-T$d@T=wKNQZt>s+KW3>|L9xKS>^-^KWf;1Oh3N zDnv{Fk6^&bkIofhP$HIN9${Pt&;V#Z0P4-9@2B<;B?IvY(rWwHC@e{}ZZrZt zO2?5H?)QNnIb`7AhzH7P>)d-X@$EKiT1rDrrv0SZaTMG$!@K??B!o01_x5*tE2z{3 zo^=X?V+4eLf`n+!^bihae(NpH9J$pAz5XT{(5Bo%w(;w7{<^DsUG**-P83X2?Mbm9 zT2L719XJ|*DER?gTA7_rJye-4lYn%>iEOsvQkF7==%P{5{U9}g{G6vah~UJ^qEuUW zb>62xWX3O=E6rL+U(oYUd%ON`*g{Kld3 zR)28p0{~bM5CZ@J05Uc(Gynj9S7|D0KZ(c>w3P1mDRA?p0)jx{1f>ce2@8eWU1+b{ zcH5r4t@jf)sI{NpKji!XV1@{aL;&Cp3`yqjGrDfvCYv%zCh;M6M~L9;W^9VQ*~_K5 zQ225%4ASP5hui}%G^KKodwI~OSsQW@YobTA8_k_S4>}ES2~g;wxB95TKO4|WU-Y1_ z6m6!`q03DseVIuB2mk=hjG!Gt0sB6`@4w&fZg%5qmqjnj*4u8aOXk|$-q>XXNFXCX z1GW>eC9o$DKme*ff<6KeAt@gjOG1H5fky!#)QArveF6x7OoT{6S@2_~*$f0!WXp)b zFt`R1X+RkZpEHzTDwm_Y6!9{U*e2sE2K|iO-%Q5{ft9%*FBu>T z1Vm6K6KhZg&eRws3<{-bvdJ((3A9zz0Ez-&T5b3cix}ErdNjRZ-U#V5Ik%(|)|pMW z7#APKiuQix&{|BYVd|tc&!ySO#Nm=80>oOc?TNH%S~7a2^IL2Yb{`cAJ#;d143kY% zL#W#AUm>K$Dm`818MQc_?Oy+xR2?Ob)d+aW%~v90Q#}HQSMrS(Mi@`o7GIh)5ea0l zCC)~eHQO(%5g`r6Dl#*tSb?xe7}!fP8J?|ORV3z`GA?k(w05JRDJ3U?F(fPNQWzjg zYlTV~Jll0B7K6segxFpuvnulyYOphgC>&o-(3DG7!0FFnGp=WY`D%_RFXEM5wo8aM zLj`1{7SJpXbF`aAt4%o>&QU!pG|_r;?@Y(Ozk@`TmFHl(PeagStX4u;G0#j2M>pqx znZye`|GhJLFtmE(sq-)#ZA~hDl>27~Tq-Otxrnwr^#U&R_a&nHDl+q^A`IeNeHz(f5e(6ad zo71)NyJ1>u-Zu?SA;z=iwaCc5)jns{pK`@+<~pzv=jRqGE5KQXaEKe|>7mFj3u#tT zU&vcqU7hoObiG8ISS3Z`5kqds{(`DQ6Dom5_k1Xdg&H?SbV zN5z;K?A55s*3kGaL^x2q<+T4`oWN8Idh&?6eai5WHpe|43waX}1kAVC3LZ96JijZ$ zXvoWAd1i=3H((Pi2w>0Ttj%~%bQNmhWQ?u4MkOPuXITBS_i62zKNMiNYj)Ps>ZCy| zE6EkO9G_9hlDtiNZJY%}d^bT0Y&V}DabFmlY_9{mDKuEK_Z&TK(gl+D+Tr~N@{_#i z0P$*fWGm&o+uLBfR%C|ofVl&!3Yy2wL`HJB>w729r_ioQo^#GGENo*Px^2*0;l4@m z9zu&TR@rMAyD?WwUzm7zU&e(Nw?OPF&ZcJEto-GO?)sVO8mV!n!_(nZ{+t4Mn$`Oq7s)lgG+z=)4#_PuThYD-CQ^ybXW z(HX1Z?p9qtk>cCklj!qa)}+A{2ONfWWsl`mAm)?BaTs*~SFL*rLU+h5{kAYWGP#xt za}~Muk>yd&h0n9&Rg%R3dyn))@P&_H?EPxYQ#av`(hErT9~@&^2bkXq&i&zW=jBWn z<4*HdTq6U8h>;n958gl620i$xmj2U@U;Nl(d?7rRUyE6V9OclB$g5=Xm2ht)6uzhp zbss1&of3&O^p7o*6>=I|RDe#^%OaRr`O9pcAu)9qZmiQ?UMkf;N7I&UO|KComqV2I zC*?9-4IK;(Jojmp8QjGGf4F>&tl^438$cg7cVCQ3c~=g+P7l(kOBeF_atQY-=#XDA zgOZ`>6?)JY3>wi8gAT^!AGv*N=00T?GhTqe53P9jYy|5gKmkDU)(~)#&aG;fdX)4s zp)hl>wVx=U25ioRzZjh<)EjfhV#Qh(0{rai2?A6H_{GizU;qr-9;o{i8o4cj@m^&l zgqmk56WODVzzts~@QL<^nMnW-pI7%NjRn#l;>jv|)J}vfS`a0g0{8^jvezL702Q7d z{BL*9aNmg^ra{$-3m)6u_RKqDJ!66xSfEPAw3ATGLsTcdE93=P+Zho=3=AtHzb-yp z2KM#ud9|>1_y|Z6F!A03BmtQR0m8No>DRXBW5ARqLpr`@7d(t!Zk$eKE7^GiQ_Ert z{S5||dIuFJ+F#%opR$_)1PP2T){aO3eAN#y7*KG{f)p9T+i~a2mVSKtuEuCzfXTMpCL@t6 zGT0fjnX93%i_bPMm@3+g@|3+oOGru8V=~owlmYvuMavMZ;dMfz3XW^lR~%V+9d|k z^Hi^kc2c_I6r8HkVSKV68oiNQzRbwS_yKhXs|vm8q=r5zhw6fq0yOezI24pXUer9%UkNnVC=$yHJ&u%^_ zD0T6y6Y(>zc=NqDCXU_k*&yRpncN9q(+|s+~lSb z%XV1CevSV4Y%ruk9u45L5~QzSI+!DhsGSRFMydC)LS@^0R%KDW12q8wSH?sI)$PYC zYyfF1=YpGnUf0gEg}>iYasl|rf`&2Z#CUF7Nk$g4<+-$5u{O4H$SNzB{bE|)g?`

        &Qzx@}%Y@mr+O6sBu1YuZ#OoICos9WP;xZ`cy(8Q*E1p|ys z!h;+zN$UIsS^k->v*%8+EETh;$+dyQwXVhhSUqlh$`0px({JZV3te63^P1I6syaEr zNtADx%h0|GtE9m|_*}bjh@@Vyb;3vaN;rRQD)#Sh%joOE-vHeu|F&JA37<2gts49` zY593$m|(eFR+!tqVO^|`JaLsIsq03h^5QYF!Ks!2KZptf6p^G?Wq=5&$DS2Ra zrQG;B2Oayre_3(9ZifQL!Wwni*NsB%B!tZdny4wozfI;7G>jG@Tt|o8b0%vk8!8^` z>X@7w#rDvJm`-13-yKA=eQba(fKHxA_XCe`hIg~$`Z1be99I?QxKhNc0E1;v?%4p&b2{9v%msBQ# z&5d1GD7RyC1L}Z8#FT|1x(mrbD?uuk+|07LeHN06X1G%7{`=<1tWrdOz^DK&5Bs>= zx^`4;X=;n5Fq_G3em9qNP>I?)k-??J=vc*4hBSK#bGIoj#lEKl~Gt_H{Twn;NDlVb=apR3R7OxDY~bg+C6+t*J(+I78N zNZh8H%mq=qw@dYqLMmZ8;1MORDy)X1g7U4euo6#5HbZ@Sl58`bYlbbGX1$0m7_=Kr z)&yn+C3dToX6XNReILsGQzA(*M%#G zdHP27oI5`oH%?U3dezs(_M9e9$TptS*eZm)apK?X3yTFR&NAS;s^xEy3FmUa%vF#7 zEOE$mrZx6u0Lou6#8P< z^#2N!GUQY>*|eDAI{ZyP=cLGBIhN9w4<11{Zq|{i5P$vZxxy&81)HT{S(>?#L@rk& z(=}kZ!mboUw@`XhDkt2-`$Rrh_658EMRM^Vsk0Mj&#wtbA zqjtj}2MMq>kS)7g1Iy0}lziWW_wQ?8G!8(`$hnX7$1<6G4S(D+at#0DKQojIO+zB5 z+K1~n{0ovlr9D{wi0iKCN+@Da?1}iS-WTZsaYDz6Awx}H7$q-&d2xI0^-0^Tl;uf| zp^dBxZPcl*Db;`G%ZiZ&`iCx?$n)~Afy+ke<`1I{V%;_WfsqzNNJ<5I=C2D;X|OG` zElf;2OQRHTREe#ihM_^XbiI+qCFuQ7|H0LNeA-AV9@5XlI~dzO{ot4HU?(B@waJ;- zK;&R+;lGbMc7j04!FUM}GY_))ZC}{)Q1f_o2q2{EaXP-2kvCMMd4mx}Fj=^CpjoZI zv;i)R*Cje=xA|LiaP;JI1oorL1=Zy+v4on?Ep|gkW6_8gtvlPBT{$kV<(iHtr0(B4 z@9%GJm-4Mn&zIYS>@UMCy#gUz&|J4eBF$QgvX1L0Rb+Lw=tSsv}{TuHaqr=qfY8P1@~R`KBI0!=@v--&z5<>o~|;KEms{ z&M7CsEvq%hLm#q!IM#ySBek{CxNg+7t*qTIY8Lji=r>M}_tmF$<}MqyQ*J(6h2~S* z#nvI-;q`{c2e-VXMD#9t3){a8N7*cUcavU8Wi=qhaO^Y?F^0$ZyZqv<39;Rn=Vuq$?kW5mX2t06%PJ z?4&t#2Um@EU@`(5H76k|;;hlt6O07M!02Ebxc{U0fmscpB0>@bi0oirYRBT9zSvP2 z*wQCQJKd3>L(hOZ!!=>q?wUp~!C*I4N${?98cL$-X>$rm+6$YM zul3QIL!USB{fy{qU%leP`lK>=$MhIdoNAtG-awRR!eotv7;FR{0EppJ23}^n-Gwin zc&~)7t%+a{a72U%X26xy0j}`m;E$B4G$}eSIM~jFnSU|90gXzUL$(1JO8MoK?%Q3V za7U;@1XRF1!3a=kaM(}AP738JVVKS%IkY{T0UZDmPbTsUNNXN%de?-A$7q4@_mDox ztGhM$nZw@c$W8MlK!t&excR-F8ymQC)d8$_L@lR}y0mb+L(e-lSv!dfx`|{$g0w$1 zJK9i)4{jfAgqifoD!Tv&0P*N)n1*uoA>X5a^7E>N6G!#s# zgUeCmQ}0X*zJw=|dcYL8 z7imo~iVh&tAb4XThicRMuj8N^gE}QWC4s2#Of-?1B%#(G{&{j)4~tXdN-us?k(ABq zB?TUW%DVJjawfV(ga>j%H6w#Q9(^(1QRw?Vj?Q%6vBP_Y=?8gS>9{+53 z%~~}x?3kP=ZCIi7J&{BtSq*0}xgOd|wHZ{!FAki-s#*L2fZ*=G-DS&5p=9w+1w4;K z6TrhgiISf89&$T8)_cYaR6qFlJLMdCz%GmvN_PhVocATNvY2g3>9f#YlxpULd55jh z_Q%YhvSH{=x<@%ON@x5G?TFg6K8|46w>qjIT?n;XE=S-7D~dQelq4L%!@V6W2Oo`$ zmQpSVkGy6#@pV^DEcknIP(0~rn~3~^%v6gqNT!(cq>C7z80gx2um3h{KH&N3kHY>Y z98DKpX_)jsCWD`c+TL9A%y+!s!na$f)D5#ly>9%efCsdNsXs>W8@zP`W_bFshp*r1 zlYcHSM_ctr|NT82o!)M=&<7fYP88sSw`kFoAFyt=p`+ygO(v3%{$ZqrKQr-fML9R`!i2O9q+eqA- z1`w>Hrv#*2^E+J)ygP|%`KQ3vMKaI(rm2XX0ajhc%NEK0EP^N=LgkiToRiqWZC-Uf z%BPG|+3fA)`TO_CYfV>_i6{pXAu!PJbZSO)zU8a(l7TOnh_t?l{>o8apS}@B56#Y6`r{B>J79R=;=) z!ka^kc+?-%$fr0ZP^awB(9g7?fSZ&!rTUSeNtliWt>kfFL;wH)0FVa&02u)P;1|4! zgKYU$mhT`r*i}InY^_`{ShOcn;U9_FmjQ!U!8-Ns}lmG@2dXv$Nb z)C+QW5Ek@QtGE2-cOaUDRSrqRO+PI#q@lUAMU!U?dp4aq^DY(O+>UTEZ1O6{y$ge*P zZpIsXSGE0!#O0yQz?9`rOaSunN1;F-SI7ACPUiUXS+r0AM3)64ko-r|fB=9H5CQ-I05dg4 zGyni@Re`8YcM>BCBiZqUI20E9FxeefVA@4=O z`2c{KA*&ex001z)xrguP%+y2@oyq6&BfnQk6{R`1fq>mLjB~M(n8bu028FgP_G$wz zS?Qyw3obs?pb)Dnlfel>ZK3>R2+L9gfbE(?=6q9wdd zc!Mng1D%Le$!}~-YBB8-CcnSf`*GT&MUR7tXgVlETqKl8hKqqEWr6gRNQIfA%9R() zc+%oJ6?Y6jeVkbLcbFh`-)M=_={aSaivF8p4W<#}yK2O6dZEnvFw-N{aUoCNI@D&f zbKi)|=Ts~{?xeX_P>-o(XY%WmkD1dRav@7RI|Xr*oDS1ePpJ9VI!^Av(YR-^NAA1ezyYO|7~ zul|d|vp}{f0rdGUHt=h@@zqc!loN=3cR1u|WL)-(=uYl^6k7eneT>$Ai@Wtcf2RYd@}xeH?V>QoRAO$=6z!zf zs_T@^jgnp(y)+h4hWZ_MThaw?Pd#`wV+AHi5@H-{U$VI<$1wIh8J&_Gq3pxuQ$A+X zvBu4P$*s*;q6!3EtfrlXwr=)B8wVe3CLkH=*@!S+nVyYItIk9%<8^16J?m9g_)-e> z!#?wx(nYHG87pfrkGry7`YPpdgPyV(Jm>vpHDO2$tVd(0qc|K7R`Im zek+HHMByI?l@4?Bw6M*th0JoHcm4zbcr(~^R_t^5z4StpG(4fHDd0f80h4)c9W)|E z&+NZ%yNJIwAlrghoWijNA{TfquA_)SbO_*U@kFr$FA=orPM7_^>=%>8iu!il6V;OT z%T&|3$>P7S#;@2tkG=*x$L)_8sqC+$sXb4Urns7ejEmFs31x2=|J~WK_E|qVzct!F zGX=i@o#0JcsM<+XEW>4wD&Ca0Pj@Fkb8V+5J-tLJD@en$t}twnaK|f8}Eq6Qwf`il3^l<2nxjmOyF0NEGm@kk{#|H8}uTmX#d@ zVA!%t@|#+8R6#R=dj|n1u(Vz3 zGkuqKo_X|#1G?6$q0(IDp^br^0cQpfF!UMrOo};5cQZJlc?K_?FT55!#-im(>K^#c!(Dds8apK^|&1 zVQ3)I-YkWl4K8t6aDzVdv>bs9-1*mv{y&U)YdD$1h`wJ%(a>7e3Jy-^?7sw6Vt5|m zV0;lHQjuqlV)P(9uq;%M$a6K+n?}e47y{Jf#`l?~jRVF@u63}$Yw@wR0VeK)FPyR< zLphnX7m0PPI_v{Q#v*!lJNWAGN#fSD$&mFf39tg!9SnsXX*OZ(iFM2I3?2kK_66$P z3lFWXYdoIZI#x#=DPNNMuAWGc*un4i!y@H$ocDkez&1u=8V-C_2*SP+*nJz&nmWPR z&2|gpKcSwQ7e)dC-RTZ#wuS1fnfJrOop5yw2fQ0_H*ox<1_*)?gnUZT9EDjxCZV{x zr4+#yo6IcLpKPT~h(GFBDJmP++QuVy)OV#Y=k~6Xx9`z6i-V0XkF+@ehwT4o7@PEvs%?5M3089uys=y`R#X}F_giQOYfkh% z`f=AC&M%Ko9Ac4KhJ_?4&7Ecp1q6fmJ*?I2@mk+A8-;P=z9bGwZoKpWa&!PrJYWQ< zh)`aOM-7p(^vaLU9#9&Xj z(Ucfmh??mOmI`d_iW`)WR5?5Tc*ssy-M8zVq{Jd^hj6yh7*Izum{a$ea6ybM5|wuU z4&*OSq;5tvZ0Md&VDujG%g>&MNykKI@aAbJxpStcXUuyH||0_GrvPc zQ-t#@7B--3R=NZB91WQ=R7&YF1%~P%+?S^UazlY4r2s6Bgb>JIK4yX4*HD7&CiK`Y zs1otRXaD`YXmkJnIR+M~Hy6Kr3uduZ6d=A}4IF1r>&~~KbK!MgTrPWX9?_zr%s%ykOrq1-9j!T)E$iu-- zF;?J<M0$Zk3 zA<|kCHqk*wzNCSu#4yz_eiITK-E^_W0pQ*W%Lc4Pi=3S)?P^-&?}lMnjcTWMhRuoA zFR2Na#;|LMwRgu$llh3rFER|kMWY~9>njVm`BrucT;#oK)1Laok!ik>Tn5+Jh+XP+ z@}sHbwlbh7HG`D2%s`d35yOtc$gK$FQf&6u?eFelA>YWg$0sxht;&6$wSCk@aeL) zluB2@v+c?zu-5MN3W;I(b@fbN7FMhf`rBT%v~8f{QO;=`)852U;CNO78`)=WN~j}2 zAF~=BeyL9t^t6R%gZkf6c&`QMW|${3(QTzLmbTN;rxycfWUmB{e5%T2;={9zzeQ6oTk3>eQYpw&SDeADN_QgAyUlwi&#(k? zX`|Az9m@Y*u#~ej&fP1Ft;__htqpa-K19VQ8FT-3Bn?O|3A5Q-BulGM8KJ!LTs3hi zEaczCSvDEe_peKxw=Bjmoycopg4N%oO7S76y8a8_-w&7_sS|}Rl{8p*F>=ddOeJ@K z1qb6zu)4_ToWkB*D5k0L=yk4JIh2zA@0dH(KC%j?(|Is97L&J+M-XHUCSiUr7V9RL zAGz^ww3OrTKNtUgZ#U(TdgZhy_}(t5B0FKsSf$r$^(LGJg-U+y7xyJ(T*>{kC+GRo zj<0ow@X^FHK6`Ce4Tp0WehIev0;S~wG4*k2(Cc)y`?jjEO3ah|+$owElIJ|A5C6Tx z;-_r42dmo%9JAqbz>>yQViknuLz%F~jd%Z!FG8`W(+cvE-Qy|lhEvx3{`;W-uZEm@)eb{R>wEX717S3f_~R0aB1shn0>Xsl16j1j zOL)xU@_+PL&lL2H?2i{05ay*OhttI@gY8|%{z$!^Tp~@MQYF9qw4x(~v(SpZO8IoM zRKsG(B_PTE7)6MNmkY(zI3B%LD+|($hIH3FSyIic&*r1S>+g=`SNz^m{QT-SJT3gc zpOPzWmmc-*EO@buFeUhG2rniHutSFxmU4HMDlJ5lNt^&nY)zA$pr>zLyMaOYhhye4 zd@sGJ=*)lio)y>{vA_k=6Ll*F0wNFitb$ZF*yQuKUXy#ul&U^>*&C8r{hPWiutw#_ zaY2l_%3LnwjM~$idQNN`w6x>$Lc?HPStV&HH(;1BDWxo?9WfUWCNz&`p(G*Wj{63g zZFRJjhgDnT+8oy9hmGr^@Jhj=P-Ta>f#(xf(y zMR6*~IG8n0W>(Lk3R(C%E-;#tU1u0l0++P@kR0@GE!y!1#3coHouZWHaU{+wDn-nq zu%nHePw9Y)8Nx2Rm$QAGDxesIfVz&p_9&?>^Te#_fZpr*&F49T%a`3r4NtPLKTYW1 zoLr6yt&M$HQ#d@V)nz_u+;sFD@=DKvUSX8f+FI(Klj8xL)kiGph9-93 z_(sYytlQc;jW+gw;%}gbxq#qc#>Lj?G?H$>mc;c$teO*u9`h_l88kh3EivL3@2S~W z_z)V2M{GeI%O>w~QHA<2quW?oY8f}DdeVS}o%jN8; zdZQxCXJRElsmYy43p5M~X^%81V-B+c(Z3I@_(GnHK0jc8{uwjF`YJG@Bb&laD+s&(FMx6=Z{rckIh)? z+VKjVTusF!D5X>A%`bFxyI(njas5(_FTRNZ?$vSCYN89>QF44d!Q^4I_!Ql7>;-%WD4jsg0Z()! z_C#tvKC4Ngp)o@(+WA&6zl3Cw267N-&WrSeV)0ziG^~iJfP0V)_V63YW`hRP>tMf* z;-V7=+rgD5*o|qSlmLnV;b^$>dxz zA^9%RAL;Nt0^xRgSR2$bx%KZrG$HN|mfqSD%P>S2WhI?V6$OkG@=UPL%_Lhj(<+rP zx@we6JT;JH?}Lli3U$5f0k~-+p?U3mMp8r%?qH1yDDHV1)EV7$Vp~!JZn2xqyyx3K*Hjz{_{r(@Fal8p022WUI4=x6(DL6a^0x+ z^bNCs`PEMX6`~FCXfwZ`i9AG{Li+uZoNRcA$;V=uH6QcxF;EO*VKk#*1Uo)YAC&CM zJ0h&EukW#f>TPvlQ3r{ZEB_YbDsRGXBqvNcZ$SjF5w(~JWH_%XSU$utMI?5LBIyR1 zA|S%{4<}4uF@3Knzb-=!XIm42 zU0FEyukqDuOBWBHcDH9;g8FHlomfBi1f=yRypAjV4q-nCf#$doScm^d{Ecm~3JG6k z-aj@rD9U?;sGCjp-~9EVf}17X%X{h$a7By{3?amR#|5^zPac||wq=gHRjME9S$i1{ z9XI8{?oz!%dHnMQkCQ~HTtrCx(nPwA4>Pk3Hi^-#!O_k`90UsB4Fm1_A~?)l*}-en zbz;G^xG{`iR_2y(k79uH;&(jZPd~Qw=OE28Jb+l{6Q5m~2wweBV{Mt)Illi+Kvqc% z5^lHtFAvwDPCJ7rU!vBZ1eu}B?bM}F6j=7CbRc`wzEMzD@3AdcyMBV@#SifWL2{Y9 z$V3wAs$}M)v`wXq@r7hGW|oV_T$w6x+$}ho0<`1<$t~Q$g|+^YR^~DNE8b!p->YvQ z%9d%nqW#VM^gtZvBg2^4U)vto5cZ^H*mfOBGo(MNFa$V^9C4|HhY=tiI4*rjCmZoD zeH}hx>8ZsQ#H>D&k7Pb>acRMXVK;8U=8FlB0a0j;e^Stm9XD$e8BHz!&p1FQ&|Yr^JR{0JwjdaS*A)rPG&7 zSb*PAMlgI1{Vfl3H>Op1`j`Yuz7Dpr(+!bEF>qJ=CClr_U!B)b&h6?>(C#-sQYY`| z5}s;%G<%h#{L*hxXx))C;&j!HGMB9J$0Th&n7yQC7=q@@-YCbD(uO zIoK{a%jDF%#a9?*$|iffsUgMI&AS@;-J|B;hcD)Gwl#3NtFTIU{(Y0}za(ri}APZYaKa#gvx zd^{{yW0g#`W)@FoBhlZg(1&+%c+i&T&2mi-c+|7`i@gdAcM3UXz(~)v>Zg6nm z++Bsd>a=SY3gs>Lce-mTOUva|!YjQ6S~($l&VauBG=lQzVvls7;W(r8^tNlYf$7R< zUN|U|Nmkb~nc#qs007Mhl@SrZ@5A4F?|Z(z+}+IGF1K7=X~~&ew@k<_W!sFhf`AY( zfeKkmL1dg4!bvC~lk-QMh^Pb#kVTdipa6qBCH>J)Inm|LSxNuT`u|91gAf3Q(Plx0 zlmY}1D61JY!@gdygkhnW%~BAfS&&I|r<6AA-;rbtf%2gMrWY}d#VII7Su)3fP#Um> zU^FsLgG6GAy}Ry)AbXSZPA1%El%nc#BuNH!3_R)Z15qw1JjsFYJSQJ{pt7~V71RY= zn^F}w6B8c%igL1Ix!VC#{_vz^<`N%ZnMoIB&$sca4772~)QJ;Q) ze3k<~6%qz#20Kgi5#Baqp>KYAzcKbTHBs|%=#BbYa+@3v1SmwSNTH9*C8&kGW3k`W zY6Fq8uqc8S_93Isy?Z&XgD&~!p5nuolS_i4Bp+mWTT4aqxwf{FiG%j zHv>gir9fFJ46~`c0 zFP#m)6RRX=O?O3a^0|Ckd2@8}GmMzWmXB3r@;WR0EjE#R3>VFEO?g^xbiL;HJo{Yb zMk~ykfZE^~agOf0GV_PCJKjW5^bFnXEGRH4rOZR{54P`_j?d9ze75~{29FaR44X{3GZfcefFVxk;*mv;U8V%b79M*lE_k_eTMVz3mrfHoyos( zaPEr%Cd{_;W=nk!Ez&#x{xN_(<3QF~te9jf5Gj?!oO81jTmk@?Xi=}C+d4ka+-XUB zyYsk+tf;uw@aM<{#JtKxCnoN+(oq{P(oQPOFQC}yuZXd&MxmxOW?m?Whvotdnq~G& z-kP%Sta-g^*;@Lb_}y6Td?>f9NP9lZX=ElB*{{lm!fGp#3xH3L^e)A62DE$y8}{1t zi0A@9ZDK7@jC<1n*0NHno2Y7~R!V&IIK6?4cWcoRH+vEiDgF1=6*v0$Bi<6${LR|# zQYUQ8{nJ32mCB=Bbt1qcYx`Gt{I|Fk@k(2hn#BjljQO=G1>xP?|8ZDp1~)=+45phi zhV)|xkY~@sQc%Dod#>Efaq8SkXS10(_ZR1dGMk?ixZwwn9nhF$k1#;OxiA%BQxsLA zygvJv<-`Z&{{!>&gD41sU$D-l-YG3qa|(j;N zN76O%4E$jr$=6QpF_}%%+@v-5rN1_{YT9%3SYjiz7hWAMFzgbfd4+_@^R|SlaPZ&d zfs(vT8RX_9BX$XFmV@jUCa9K$8q^PKT}fJRbX;G6BxJ#}NoqlUvp%ZR$a)B~9KjOc zQhod=o)fnRQ$Fami;g*La99@M^b2zE+m5Bu`m6dQ_d&&2(U4=0!y9bP7-)Gm1m}3` ztnn;~2I{u}briUcZiZ$9q1;W>^wC2)aP1&_j<_xh`7+_P&uhR{?(!jCTyL=Ly3Ns5 zfOKY_i^0K$#JsV&5-^B$`=wPkdo5I07g4^~E~iTxBFq@QE?PS4WECC*_P^*o%fR=i zvlIk{U$A58c82NPA$9fAictGz?wJtbn$c_(+7fJ(w56G!u|aT?TgmxdwY#-f#oF2V_yH&|?zoa% znud*~+MpC0db}gLpy*@hpQX?%Qt$Arh3mZDSJ=HHi&f9MrjBol>*MKrlM1V&+I+3G z<<*iF9^$Y1c@-)y>FifER_R^yK(z?0vXD}qybQGn0)w^ZTS2MHnYARL5dNQ_Ql45! zl-iwJ$h@{%cbIC70z7u3Zlu-<3hf3-(IdKa6cb|giM=m+M{cf5MU3__mjDP+d>@oav z-HHenhVtppuNUlYi&WbESHPIs{Anz-pV;%e4S1HpDu?Zwna@DPg0ionk2k}o)V`13 zlkFW&7_V@|7C-e1%eiyYA5Y0mfXxGEc-g7@K$c@H?15juE(abDpaeENh^R!hq1-Sr zjX&6QcfeR@o~OoY>K;}iUSk4{No=o6zI#T}QX@-+@;OEV>X)ZGZfMj4 zMTxvAilT+n^737BsLu__fqAFu$*i+9%2)Ren*RykHC(GoZ zhiX9VzOdMsLz|qZR4Ag%ju2qMSg;l>1q=RywO42$5eV2Xt6qNC_y@&c*&=oyn~

        dUM4PVM2fSC?_+qgEyN#)f{gZuqpKKerhLJr@l7!A@Bq00Wvpv zGNqmaA5Q<0I=6gpHMevMZ{OXyMK4~)elCP-$QgBT?H4sQ>drHF!bWJbeCbQvSm?7y$a?sH zt)_~rl?XIuc5dS+U8ye>ANT|q#XlU1uYP6%IuhMWj2|B?jI6+>%{CvEN+OflMeI?x zVv7G4n~PIR;BnZQmJs#}b#V2acZa(y>kPhw)ev0)1NiW6x`NM1kr|z|gApstyT%J9 zp`Ei>zH7&EZFhF*TVS7G%w4qlQcCqOJx^K(*5anI)S&45sMcW)yP*ftR2rRKn;|_V zyAEVD0wq!E@QNr^lqRBlMI!tw`g6G(P;1;Jz@8o6c@=}ulSrwgXB~*m@@GfLsH_SA zEV%r#=vf&0Smu@=lYy0s&jbdALn1qK+Ml!_YgTB-WU;kIPmj!t2n<~nLcInM9`b|fC7gog z4f~@#le}qW2?$$+u;I3dF7Jh`493Fz~r%2j0pg?`@e`R!CIy!2B=0(&;XR}u)X zL6*xX2dw(wCHCWVWWz)16qS>XX_+gRwY#diLw68mkMZkEQO@AnYOy)4ht z*OYK{E`y6pgrZ?+Psc=fZid!dWQ`3Pwz5AGw4w3jK;wDU;t)texq!MT1R0aBy~3<6 zeTm>Z7R>)0tBAKPY~3}>vWsg-?yGGURE)y=JI~lRQZkc)>`@}J=6}#4 zR@Pg)XuA}H6z%?Yx1#;90Lp{|y{;XEUv9p%shnP9+@+Dc)ZCYicXUM=zz6(7-yPAH z1Rnb?o6h{B4SYGvxJ8k0@)ngjiMCFM1rTTG4K}JZT1PHWBZ6uXN=#j`UpX7LyPb-; z@$tl!d~JT1DfEDg6XgEYX?TnFg3~Sy$N=<{+EdX5=TpK2^a!vdPZw+=1yL6-SM0fr?+c51O~ z(t%_!gTc7TgQ+DBJXJNDLkrtvl=%_7Q818|8U$ZgE3 zaYwYdL@%;U$o}EGpa=^V_yq-v!GgVD#Nyk<5NhFJk9>T(5LY)%cs`lW_dn3a4eOW} zW3u094rdhlUVuuu_@Q$g0h;kudEB$!I&BcD3t!N#FwRMJA;uC`oVXlci2Mp04h_!4YCSgGf9jM$Pq^Eb0vQm021QNIG&Oa$RRt2i<-#NWxtaz|{lh50Z1ICNpg4LTLP1!{6)n)YL|G5U zt}6tmk(J;eoL_7Hd_s^^Cn?HeyVX2)a2aiX@Ea%_bWor%Wv`)TbZJWD6fRA?8GZLk zm=>yL3{oa4@D1t=L_*e;194))yy+FgnLhX%*K$VK^)(WBYayT#3df7v=m1E+!ZK*M zAM~7l#4vt0hU&da^Q2xC?Dy`MgBq$N#8sA>4oehK=G%_kJLa`nJYd^KM0=WSb`luU^0Qn*DgeuXbF4)Eu59>u z3h61&TIW?af?P#0=~PXEEmDh7fdSzsT6Bz<^4#3byF&J)Vt=M(*t?|Ej;3$72M2vw z9V}R+tIf!o%$)Mh-)GM`?Frp(4K>T)ybl74r7CR|RaEAq{#>g507K^w7rEfNpbTkH zdu*;H0)sgQEzn>c7hApW-V#0(7R20ZQ>;Z4Xm~bO#n5T-$pZui{!|k}l~1 zz4dZ9LbtMh-av=LWmC2^Ifnf3Q!n}G)2RxjX`xg?artlt44yN}aooBc6etK`%bBHJ z(ObOk9rm0k8KP*dvhr=YaVyBzWmT1<5!1iCBl~Z|h_S`gHML}{E1N#e!_A>k7tG%i zw`+HIbhTk}WusIgZ&7GhYjCeOM!B3{JXYB)v;+4ZN8cYulc3R$uY1gyC=2?6e<5M# zkkV|{quIYlT^FjB8<&aRQaT{$VAd|#NYmK(uT&MUMXOvguBHFE6j2x8(|Ny(5yg$p zHXQYS9ArQ_%6zrtbTi^YwZ!--xh*dRhhEBTEr%8a#N%(T1-0C6*5OzU%lSdZe^Mc$3$ywM8bM@;|L@F_+v#_Y`ga_*F+y^J5g{ zuIBFg<4RVE#6}9)S9!lar?<=TLOC1TIhjRK8TCX39l+}}jJKaIj#8krd#p1_0Sr)j zXw5p2?1(2NZIy5SZ<)DgH+28$uGvDqn!{RM`VTTF{m-TfTa@B^N@6Ez-$VJ2C-{y@ zv>|emnn^&n=2a4ZmY_O*Jfi`T>(#0o)5ZekWVu7^HtDe27xgIY@MvYnfYNdV zPsM39eL;7QmNSZK|K~&aGH0){8vrgbjUONHSv~WUI>w!(wlhp@v6>nOKg8p^Qc56@ zzsIa6D5CSMeJ=37wGa z9p(h%k3&7}##Yoa^0l+;d%q$vsuuR^s^UO+yj z0KfXlA&Dx-;FH-Kp{KzYN(ra*gpuUJYcDt)vG;pgTK^60%7rf!q$@xEj^EFZXh`WJ z@9o?;1pS<3eTSnTkdBO!_s;Q=IodxdG^H#5U3A7#Duq&3z!&F{^eY2OWqnh%or~LN zHTOS&F>PQMQSvsBhtO&a$@{R*nSXckT?`iYNc(HgA!eo%M#=k^#fV*(k2e@^;O^11 zPGFuS8N7bHWMB;ConoI6BNf!v#aTIyBj9BB@2Q6_@>~E-w|Oz~IqjdqDm;}kQ3gcY zqDbq}KlUhC0{N^Z(#ot!C{US!z)L~MD0$NQK@kOvZS~Y226C%>U)d2IPIk1idGJeq ziZ@NV(-#OT3)6O<4%Edg_Sb_EPXi*fWu=`hI1ltmFw5!VWUVfC4!C9tb>_Q2(hOQP!5i^ zxZwHe;2U8yO&;PZk}rc)ek4AN>IB2zKf}|!ocN5!!9Lg(9?`W$} z+j7OI#`wrW`Zs;x4Aiye{8Q~AAc|@qHk`bAnoxh-+v&1Rtk-ChM$>vvUjcrZM~T>X zK6y}xT}*Vt`N`#4`Fl&AQ}6=do!eXN$@*8#kD?VImXr9=_mWA=Xf6jv5vkrIzJy{b zXz&yMX$`1IXi$U#EBMIyE$LF1lVKQ#>4c!`>P#+E}1a$WnfCoks_dM!~F62}$FZ`$n4TS><&8!_&VVHPX zIAf@|j2lZnb_TPGU$2u0w(|761Uos^}A`v4#bX>3GN+;;mBytnE zGq_XMnWv1`fxy<=5X0C;I45wM5~M4X?7`kAB0i823dcHqr$%;c^!EUM$?3)GmeQ@} z;;~DmdCLHGr+?UJgz5JpO7ni@8KYc?$z>wkd5bvk&Dp-48=i-ym9|gzs*`OpzqUHAt-s)i;K_>$!fl>t4GZH0=C3 ze9*mQfN?dfxJl8VA6^_`>ZYnVY)>JjLGvDAh?~{}<+B0}t6MK_^X$V8sn+8oQwcTm zp7M+foTGv4xrmyedfk@6b7wWWM7m?tV6B-CUq>Zw;O)eo1hu4&o*1>mscqs5?Co?$ z%LKa@*alpg99JHpW3}sjvOvagY^e!6Xrqo+gp?lD$J`hXfL)2=%MK&A*HIluvi0`{ z3w=qw<1S;x5JJsvG(9@@K>~TEb+x{DOps2_aiQ~wcFX)lP8pVkz_|0SPE56x?PqOt zLvCNnsyfzrdy^8ozF{g*RMxuc%{gUsk&RdHf(334cVmm~H?^}VF~iEekIvSM;yk~c z=tI_3FjRT-aZ^*+(2-U?h)laQ;(xD+gJU2%L*!*^O|yQ$r!eSx5YNdfM|&T;QY@nL zF<2~Uv7$yna%pVm;eA{9Iie>->N>2T#Udd6oAr6GKQ{Wd`ni~7Cd}o}X2pHpKV|R{ zLPoI7;#NBbxcS}7!2D>LVMMpSE_9oIiqU_UaIZPiVIuDS6FlohoJhV!uGNp*U*Xqo zwqY@F*7tW66uo^JG@Qj(HT)dsC-om)kxG>uYk3FtjAHOT24+voJ9wTX5 zRKA`)hanY`n?iO>z*YTwoRDsd*r_PhyY_d>Y-|0XhGCD$sfOsCSO;lC8ZN$UlA~=#7o4@w-!s6MU_8=b<>Z}8^ z!xht&u4Em-pzXCAi|{M1I3-7M;VGBtA}Awq3>Mt>KNMYYHL|1_jfH$DULT4epwQIL zYwDXm1Q275QpQ3&7sycJ$rJvw))9dTL&$Nv7S-i;t$ny(CdyzYgx%qLL^nAvGnHgC z$AA1=I@0P6{b&H@Ml#9;008g{006Q8000UA000e1NJLTq00AHX002J-0{{R40Ik*D z0002MP)t-sYioUTbADW0e{F4pWo3$IXN_ZHhG}VzYio;hbAx+(gnWF9b90MoYLabj zmTYX3Z*Q4#ahh^+op*PZb#%sDOa5fq}7rfU$*zwSt1Oh={kEn6;FWtf!}^yu7@# zv$Mm)!_Uvp%*@Qy)z#hI-Q?ut>+9?G_V)7f^8f$;{{H{{{r&m*`J$k`Y9HYd0000j zbW%=J|NsC0|NsC0|NsC0|NsC0|NsC0|NsC0|NsC0|NsC0|NsC0|NsC0|NsC00HyB> z{Qv*}32;bRa{vGjVE_ORVF9Q=r)dBH010$OSad^gZEa<4bN~Q}DvbsJ03ZNKL_t(| zoUL4kcB4A9bpc~zQ$sTXm)Hr|Byl0G!pZ;t)!RqHC7HSJ-nHJ-%(#G%j<$~WDUzp= z%d*TLOOfY`EX}T^k-PXqm+d@{qh*liEXPZhP^I_pZ&|6&t7=!xM_#c?^QvO9t+i<9 z>=Z13=l9d_<@J>+MPD8F)K#si z<>x!~G~j;0PbZ6Scr@Xsr|L;`_hscLZJluqVDO2_d8N81u1@(UH#U6FX>{zXm7nGl zu5y;|T2ZC)RqylEsd#tKn<`hVh$^u#4=vXVqA+J}k(ySZS)T3NmbF*8XPHUXNOLcD z%lvIgBQNm>!;DInmsys?h9%~?5nL5WXjCY5ieOiENxLzvlnQ zOpTM`#Pv!Ic-K0V#>GUgqntEgcnHP_j%A<=ff-?o+czNJL#Jw(daJ1t6zr}JrW zX`AD(%gWttRA)aKU-rF=wmPgY+;#TVe&7N9M&Xg_GUk_=Q@HU|Mdg}yK6x?kMZ9NYp2<l8(O>@RTIllLl_9%41A|qIma^= znNe0IR$PFV8X-t$#8sFGuBc6}#3RldPC{ISp7*M@!dp}4is6PZN?bML1KyO=PHCgv z{eFM^GUcLm@=>LRd4i$2yzB9D#%-Y!SdfOISBA=)J=Dme5!dh9bYnSqgH<(-hpXOj(AHtc*(^)Il}_{DB(@-ck?>2qeOv`00q*SDX}_!jgK4 z2tyqEZ?qDY%d&K9Mk(ZyC2cHWF)v4sAOC-kS5?iXf!%Cd-F@60&%C=K1wdf?7cNH3FXTt%ZzX?2iKd zdub5y6-(yQiePEvg+jh0aHFDj3JQ1W3hZ4_TlgmCI9$p}4Wf)@Az#GHqKE^qO#=HB zWwkhkur9}cz;?>$Ir9p=l%dpnCrNn zBw67z9rv6}_B9?)W|Of#Oj2}OME-Sh$!67h_cAZHFot5v(!A~tp5A+!ChxB=*>~~* zj{(wse54;QuMYy{ZvRXL>@40J?v7v9>+Pkg=6=ljoX@?04UhcbguW>SLXE@W1Qt0B zXmuo6tx>fCE&%iB#MfpRh;@+UH+e95uP;F8H6f~h$zNU*_@J*p1j>WhcZ}{=Rkk`U ztbVtwPKu&xa5cKNAHY%FSyRquhHAOAyoErgPOGIgD!wtlj5kgDNY}$)50j*ldoMf#(CEj%Fg^Gn+f2LO4yDe=rxz|yNgu^jXW2&tAz3%9Jko+tAyua51G z&+>GPxaYZ}**?RB34Pg-RmN2izlt0Bcrqrd^Tex9Rnt^(tP?_@4X?(AW>`Vw_okES zsahL77z;~PyPU6;CPrasnr4*zXtA5cBb1)@Dwp;y}u-eMxA1x;B?H5{n< zq^g=2t*X6ZIxLBnLa95gO~ofRv|(caIrN|y=KOLh4_gSXH3=p~g((8@d5~> zbPOHXS`z}R;((=L%w>h@GBMr3o~9jNrnXxv(N&;4iIdPWOp^$gc_!w>)&vDU!=lgivFbueFhN0rc z9@vJWz>BDK+YKE>V>ORh=N$Za&6ZB>N|dhuU^&pKGGZ7bQN!o6C@;30%{lkjH! z7dI0RZ=FR!z^*1Efn|g-svD5To{XzB9>mmeeLNR#6;O%UU!s`2j-^Q$5+|?C=uO1D zrk)3HBzVix`lEld>}OW<* z*K+NgtgeK55#OJ?2_&uAzq>?Qrq{5BbgB)mF0PLdh|ft!@TyCPFpmhKx#w75H=N%2#l|44MxTmh^ey50^UtUIVWj|j2 zCQu#oKqeoYR}@YhdI>(<)D?miA%>kep?4*i>wFbOn2}>9K`amvic!QVeA}32k!B3? z3T0kkr6;ei>Bl=<*6-K+-(T?;SMCBqH^x88k{ssQY|;mf<|DY&1>Uo8h+9Nt z)FEm-KacxQX$o(oNc?O1Mb0`&R21V4e8N=f(1YrXK9Y3wUc9`%C*LoWh_m@Tdn=R{8H`vpwbCt8eoVE*zu>xOoc#wS(zWkm=6GSjnS^EO_MdL_#lW_ zCY=0wxsz%Gl5c|L_ySe>7>+(h?+*fH`G$OZ_){l(-zezrbG_bEN+w|B&%*H} z!NzVF_*a3>ha-87bIO7R%P74Gas>(x3}79EK2Z7C%{M`KM6upxO|8@Ov8jvHR&j7n^$uy3#E;XPgO-U|C}sdaK)=5<=LTu#b(L*rXnTI?LN}_7X&K$Jx{xYfiP4ptEkYpEmjcZvvlX28nP$V0kKyzmJBsDTNu8PL z*ECUG0IJ~*5OW>*)^;&_JxdebcnE=-yxLg?&2;pH&<#kp%{c+5s(5Rti2S-5T(iw= zLs@hokn~Qd1_H$nqDf1qAaL@0L?CV*_)+ax;EE_BrLGW2&#}^mct6utf@EhB2%0e^fzpvM9qm?wSI4dk zifuzzo`pcYeYM-~R&C51aBn~q$Z8nS{0D&wbVF0t>csFYAkcHOH{Mo=q&xNz*r+09 ztz*e$A|xS!(2xfvaSsUdmF^r1PB8`;`=o0<%_k`_0Os@=@s~NKxmSB9ni=cFXPt(w zx1n1w2`9bXZO?Vn#5^Z=fk=%AAxn8&_SGK4n9-nBL+Kv*R~wU-7k(~?QB^_&<555= ze*#Bfv_$e^KKRLw1Tm^c2`Q{&#lKFRQZ{P0uEBR*2Z}F0A54U3=?{U@WU}95*$aV$ z=I=JTrgR$n{ifAw*-@bH_bbYh!=wkOF;SuK83H7CyuV!blfmIKQ!I0^I$kd4Pu;Q6 zUR$-C0a|LeH|OfK8O$$-wxySc{pT9WwXs9Dw?0>w<5suBYijr^5Q5dnF)Y_kM8?x- zQN)dy+w?-mQbKTkV8F}~M0w(6fs1L67;yj#9q5N;sk9FKz*W0ld^1BE4;qdyYEo1W zZMX1Z+5;0`lpWujAO~9$vAy|Apv;fFEb<)3GZ&P1@N7!$nWk;W0lZp;=9dMQO(_9# z53(3_!$3IyiRU|DV^cMOdk_VVMUUE{@1Tw!#er*^v>yNhr@!v>Jnbr7{ld4J8Ty_> z8g1EObQOrmH)L-`f{@tvOY*QX7Fnh0hNTyj84Pb(#+1FMFh5`c4 zrU_*a60eNokaj-HJW0!#iJU@G24##Jcq_`Z3|-p8pv}#g(Vu99t}J9mWI=eLG1}8CGipotXbJPJX0uH;43z$7e!p?cEJ(p9 zkwXcLTns;?6`!0=PK zQO|FIu0b&gMwy}F7JA0g4J+Qdvha?m- zWyQ!Lgd>>#EwFAp#NuHs&n<=JJ?7T#$&kz|uAi@Q7}d!lxodQ9@b3bN^icX&X|f;b zn0v|GoA{P@S$h>q3iF==a z*vwyWXTcAJTf`5_!s;Yv7AJqofW>;p=dS?$myG7W1C;x)*YT}1W zxrbd8QAqi@`WaA<7YJw{NeHwO9rt z$d(1}jaL0AM{F0n>DyyH{|A!*rYwg07Kg0f;!mP_UxIG2D2Q2-qDLtmi$t|rSL&>A zy}oEF7@;H6m-Wb?krg9(9xEBWyd>Fh`0_GJl9!j^ z@NWQNI8s|gp_6;DD`t=T>5a>}G)X4dK+_&5t*Gi+ z_r=#Ne_CBApQn4CAB1N52+*#6SO(~LKhFD+93`FGPW*WBh|ePZY4NgH@OL^nQHKN9 z6Yl0e19bfkY`(u~n_%?%j!z#@A1d!qD_nVh{}_FcIt@SQ^WOo2GdCVTQ<$*OE zo^Q_rsKeBu9q%+r$v=b|Jzx+J000000ssII001QbcNceeVt3{42zR?!F1Xyq?k?Ts z+}+(p-QC>XMg)jx;OqbZpa7N~=Ew#y!dDP%@eRNluortk2{9>q<`A>U;P(52U@f+N z&&rkA?MGR)+4lbih}`x+DbOUjaT7WL1BC>XuAe4dRh2NNT}5a45c1m^$% z005ByfmuEf-v86fCKE6d+Ex^;;zIwfrhgQ-2||_I2|Cj_D74!Y`Qk1YU$Do(bd&Lr zpM$xAH0G|wgc@`76u=}jlELuJT}1$kLq|A%{~drW%vhIb3u_=nN>p4T3vxok1qFp0UuI z_R-7p7ou=tQw*f-`=WVjJR09|`H_^WkMaq+_{txa&||TBmI>vYzm27YvFLJ@U86{h z_eAgPNB)%nHcwe+FeZJDp?G+WVd6WkNs`pq&6VglE_~S5qz{Zg&N$xRrpFEMq}-Ip z2dT|=*qSFvbf%;Y`kI&@xG*QFl756MrjcH7#8*mG4KfcI1%Nj z8Qs&qCHh)3@{eUDC*&(kewfn5nz5Goj5~hiP~a#68F81+pL^==hSL!-lRm& zMR5t{jAD?4ao9H8uwHU?j-GJDC1o@&ZJ>AOx5j{1;7|%!`2D}kB%y{$hfwo7*ImK% zEgY?J1C<6PC2EftoPv5o?A_liQhd4zq$%mjKKnzk_$2d(*_Z<&%w1jGY30DagK}>N z;aEcxyeWb+ zF=A=RYetCtvX3L6Yv_N|4vzL(BQ}TJ^Dr1?S8e0S1FNqEAFIiE3n}Tg(JlaV$GYb}!2rWx+qKI}y<~e0jBT6uB*k35%yCXxbQMD{!TW<9r6(T! zjr+rZ4-D~)B^}9%AuIH4#Tldq2ap(BQM^coyFcD@N}UuDf40k+#o|&xkvdSlH9{Y5 zI-K`d_d2esxoFIfMDke|aQ3S8hoTO&8-oC$Y7rGPCRq<_iQC_Qc57o#IL8mt;KXstNW++jOku9KichLWdnRIUzQ3louJDCvtP6 z=l6X~zU5`26D|Jel1R%FQ0#Wfi@;QGv3e|=0B^w}Fo-g5W*a_2(_6>A@5Mw?G=`G0 z5 z^Tm+#h{RJ(9vCWH=m8o(6QYM()V!uY%Rv7u~v_M^YJqJ8JyIh3O)%W!Y#I`Ai} z5vLd0=GHuwndU|`ZYzAg@K7rZ;P>$y$zhgI%XdPrw`pv-E#H#mfr-%m+EIN7-PX83 zFNsOyh+#l)Yz8p~zCz`Erds3366I-sge?FxgT8HF!>st+lHSEqJLX)CtJ=T89)KuN z4fut2M@p)P0+~yl3r>mxBoi4>5h4;~Z8<#AAH^HkK8@{jmili1H;R<90HrJi?a>JM z*mTUhBkPj7Fd!aU1AHh@$Y{~z%hAg!LNW6k>r5=aeMU));;~D{s(F>l`Xc}q zKnrG1AxUFTU&6d@a-Dmqt2(KatAR0CD;*Edc5=-2B}v!Er)MpLV&)-vL;h)=o!H-* zyBHb~f-g5->v@^8YhBU)L!Fb(X_eu53wE+q6=2c`=(hd#y4J--!!vUR({7>5Y~*4i^J*|@>e`8Apf zbpZB)hiS*O8j|<@oMUZbc)C_B;LjYZTWT~A0)Rjrb2p9dSuQ!-+dzlC3L!*04c3ZQ=>7eQ~fno z?0E5fB*!_dw*e(R8B~S>b$GQQofaRDk2}$X)}wg!H@dZ6!x+MiJXI&IZ#`qHF$HHN z9I+t#W@9NI>&UnWcy34LWCGeKXN@KWE~{$$Wd~cTx1ffTllfRHHvxv-yR%PYa*EW_ zeapzBeJk`&j0cj=dO8Z-*N9Mm%1{O{$R5k273;l8T3uCP?4Q`t)?fgWU|g%wHD$G0Sm~; z%%ns-p?uF#8D&@cD*p3n)A4B*uYBb`e^VZnBM(|0B_S$Nm<7ZJXeAt{Ic4TF8#fa4 zF2Dc)3jnF7^#Im5L)>7U;=OR1j~nC0kdA)fp+xl%SYqR*A*j?U!H|Py*8OV)q3U4z zRxQnb&+cAqxyNp@kk)IkQEnWrAXjY%9TMoq41K(1tX%3D&$kj0Yx+==ORDE;Nzkt@ zg|k*us#K49^C2ojL&L}0XfrXMi{kSoG~rh}xN7z$!32+WPH#zKlvheB{`;H9qJpDY zN31br3DgG9M8zpclml~J$xxn#aP<%(0Ws)PSwf`8uxE1o8X$IlKJ#cS@QrWo4ADjg zK>&r3rE~Eu5^k2%Wc5!p0oJDof|gY$sw0ux(q6U6@*P6M(vUL~7(@#Ih9L30N6t{b zK+=RJby9={SIHJ}VxBTp>)VN^+!f}{H#o7^>P-?{=`2>Gk< zK#2JW+}khyAnB3bnf-JzrR4oS;o%C2Z^G)E8ewgecp(3h+ktBKY~)$P^=Jl3a$kE* zG)Z?f=&OivxU|iMud)*rwF_euvNS3UZ9p1mMe<2OS%M6SKlPswgmDb-|9BBgf1SUPM4~- zWDp#nIF2Ep7EplxWX-yCRo2=@8@@dnd)WgbL~FI)wg+&4!)Sv2yjjE$JbsEYGHWej z@VN(*&z+=_GtVaP$RBS2O+@glE`q)J`g{n^7*2M+9D62~F>v$RF7;?Xw0BSfq!nkU zw8R5w>A2M{WR%Gz$OcB28OmQn&by5J08J8rnXW}9o-Bcu@Kbib#P02Tc4jminN-5%CfzFG8JI&6k8ZGcvQfF9Hbo8o)_fZ+c=cu;ZksUM#Kc_%Tu8q3krS5$R4-Q z(o3Ru51YZu(7mqU0cEV6z1gzp!KoyoqTQj;GCS-Jl3M5JGoCp$Ins(95xOLWa7Zgy zY|=k~-S7^v@JK?&2eY##u9JY|;^jWwbdkMuBc?3oeNlb5S=>Kl2x;>`w(xGNfUC51 zK6~#Env&9i5K^bqpL@NP*Zu@quB(yu5VCWJeofixs}8Y`MVaR?HhHg;dieKwf4c4* z9;8PzWM~pUVMjv?diV1I9^UZYwnu=;Vv$T}53pYP6r>7-O19qR?l+}!*l@5V{VVF=0g;ss3x2nO#)E}yH&Fsx= z!CxI`e)T$#($2cf#=!cycDssPZ)+d2OrS&SaG^jkC;O6yk1YV;K|TvU8gwkB3>&fl z8uED_^l%RPBA^{4h#+pCjPHpK`ywc(R!e%k`u+f??Vs=TW{yV?B49i*ss`- zzwN+pb_@>=g(H^N0AWluIC{x8_#C37{aYO@;=GzjLm;}LmiOMPkBgkJEg;VAbd7yy zYQA75xexfPWX1O(UOE*IM5!QZumc*P;UfY2Xdb>#MK{-JKSKMQMyX7j;OUl8MeP)U5qmFEk<{|UkbJ)fwZqy*skSoxh5 znGZ_Yy`;_$VePN@555T5co+b%8tqej`Fqnt2=;9J_(F9A1{k+c%MNiyon5W!>JvNL zo5-~2Gh7-0oVa!oKHeQ2?J-t6LpqV=U_#K7`VJrX7dT{-4ve)7ZGCWTdlogHWg8TepyFBv0)U79 zsZwBuqBK63hYJH#r+@IYN^UAu;OJy%ARKrj-HTu=satgbVc^ZA0He?8A^e!%!r{>X zc^p9-E@#~Fve56#Orh9=0=zCh=w%?-x$kv)gYLp6G1K;>iInj_AA8cO(T7{^6YEeR zz6Uyy`(dR{L;PKl(7?X!XED;=(riI0FDmR9H{IU+0C;Aib@{ECySd|fn-rsi+~5pX-Crr7urI4G`9Ui4Zm^5H9%Q`Q7iXa zV6fXGQJ|3pXXEeC9(4UkDEMro5E#n(j3Kl$?!f5NSc=8{Ow*pn`EV765LJwWq^Z_K z+6&itnF%^{|6c#vhF%d}rSJhu^Ti&vO;!tz{J$FIny^F6T@|IGu$bwE&c>=;re%?^ zTXw)2-yGK9u$_X7VAqy%uziRx4=cgmJ90IVZ>^GH#D{3f*lX`;7!s1R;8`IBD)Axg z3cB*FsL(R3U7_*1>BSf&?BhBjnR3R6ms#eA+H{ zsunU3CK0n6ZRu32Z6f<{jHWCNnL-dT>mOV));swEmq|vSPRieldlGXku6um;?ehK1(WzvG1v>t9n9qmO`D)~&)H}Lcrkb}TWp&k8(SPtp{-9L zPhlt*;+|$vXCY}3TA^a0)X1M{Bt~sqaneC<#CY^-WMDF5uz#GN$ek8SKJ3~gLM75A zVkbFusXgyJz8N8Oc{(yYS$WPu31yi+QY#y9P81q@X>hte&T##PwK3u|fR(S7VlUjU z*6$Ux_DY5H_9!liwVd-+f)*1Vm-%t74}03N08|QhqgeeBl*(JZ-l#|a$6&F%8O8lH zb*g=K6?R8n6;V^Ywt&@NCqWg2C;<=D6TcbfNv zGPfJ}r$&;8*?@=vCg*^_8Yl@`L6bYu(SD)IhpxoHia?x zF!&9JObbjw1>wt>E4?>di?Bai7-aA&Ubv=oufyvXZDHltz3}8xew80nwHKQV4u#FW z3^S+ubIdc>j#zyb1C*#+ms*`DIfumVxN?v2t)kDd?*R`lvqz#$Quk^`YCe+JU=v%htlq7p zVA+#4AWbDlT8?$eZkeO0cww;ObZohDf7b%E^L6t&ef{|+Gh;tubD%(Cj_Dfd3Fsx; zZ`gU)@!hiNZ_*RvNa8H?t$Er!YuhI^|94% zwQ~l4&gUMKuqd(i5CZ3ITkV^Cmvct#KCc|ZgmJ8fbaGl#4%KY7V70!c{neA?!fBF` zBb23=GwO}T-YLMd^66kvPO6Q!aa0bWm^Y;N8HENR2&QtXf{dctq*~IIh=Q$f z{Z>nMh_TCejlK?2uBO3EHzsVPdMV0upcFK*$zq1GLFGnOwCV&)JVgyt-UYt>0HSe+ zD>q6Asx&&fnr!8^EiU^J8YD8|1PDgaveH!L)yn3!91c4-`^8wwj4w%Vf{X)%EXPB5q7>GH&$GSt)u^80>LRUa&&=2B@GohPBxhc|CIN46e{T)OXkS zz;{a~TPB{$r%X8WOy&9IB-~Y96mO_IswZ-+@`&v5o3nXb-U5UM^Nk|-Yd1dXDDhaa zxgaw0@8RdWMSR2kwiWJL)tPN*H>qC|9~X#|IwuAX3*$3eZ61{sD3u~JoMGA!vmvxT zvwK`N^nPt~Izu>_sa>`1CZWrOj+0iRt<1LlwQYp+b{BFGmIu{^2v6oLrGhi z4GtNY5qV*yJEX4~P6zD*rbUy>iZ7ImiKNddRu{ahq(0ozl+;0r&e?7(e`_~FYiz0# zty=Md1pe5OUZXYozf#jjKa=8P!>i9;Kg#aWBFsgqIiNYAbVKfEMAB5E+-B%p-n=+b zYoSNwH{9UDb;M!o#JMMru$l9>tZid{&uA#j49#$_`Gpz1;XfO= zcHAn*g-EVZY_S)#c{y4o5Hq|aV$M* zX+38HiJ|1LzvIXopyvo`-L68UTL3BZg}i4>4ZlzhKt0~6MT#vp4))J^iih!qqN4wa z^Gm+@f#5$MTcP?+iR4xVS*z=ICTC~Z%F0}RL^Sm8b+vhH|DOL$FIC&86{62tXEKqGP!tZ3Lh(Ou?&u}MJ;>&JsVPULY?1*OWFz5uoF9egK@vr>M(x9ES`knDv zX%L~&%xPXJ8ccE2cbEX2(>wYkZSx`{u8%m=j+uy6_7Z0cd4;W7>^TOlyuFG>YVfc# z=j7|>dwb2by0v9rIWNV`^qAdKW?$+i>qVxJ$lp}o6V*BWRq9w7b34Qhbs*kQk{3>S z-esDW^`tveh|JX(^gKr&#m<|!kIPwUx`E}OHWP=8EoTmOeMQeAW-6bxHo zVbnKgsc3uU4pVRMObOStDUs3HqS7}ILu{J}`6^o#5T%a3?Eb);0mHq$XVeugexFWd zGph!MFK<~fURC*)ySZ(x0v7}Jx~YbqPVQH=GhLU0&O^?qDn{xHocbUek+m+@V@V~g za8Y1$!OrM`t3(R~IaB3Jx)>x=2btHp$KKJ9pFEg68eBa@GUaS>DJ%yb`Q&hS>@olj z=b3pQ7d}{*q|g9Opy8=EvE5?W;I0s`$e4A|G&O5Yd{t0tZkJ5a#P!dn_1Ma2NAw>4 z{(MQM`a%i|94bN|lG1?sN`QjhI*gxr#+C8Mp|J9{)N2~pbhdW)3QMqjx#d^1F@(uV7 z_iPcTneAJ<6wa9@=I^Mca<@m}K*$0W7pDwvO+t0W=XlR`2-^tQ5I zb&(wc4o;?kXJ3QayZT346``#>u2lMXtM8iLB#;k zbzNarnXM(+8%8ZS)&0a<2JrR)Y-T#em#wjs`td?*?ip2F&+BpDw&C9!q0d)e zIdcPnx+GNC#!EI+{Pr*L)8GKmaQ#{k*p2i{!DGePQV0{Pi20|X>VYs*vH&^&#A`1Q zsk4FLRK$-kuj8J`R=+ZKEB=Z0HlOy@B zFDCeW(*OT4%rm>7HIp#?8%3M`h0M(a{&{PM_CcRDGP5o+wK9hE_G5?0_ zs`6GW=;StE{td+mV}4MOuVzasio(m~`23&ekHf_&21J!THk@D zGhBGt;p00Q(xF@W7o$dr4p2Vk#b)dUdTn*s+XmpCi1SZ(LP|y zsJ;{XFOtYjz6u1-WO$seOCbwzz9iAxAVHNAK>bRrji3Ra49}0i2{iOkZMZ=M(Vk?j zhWCm~duPmVeQI7+PTqkM*2ItIpoD2v8FKp@o_5dPPPhm;rfRn77M)A~JfM}NBFUj% z+n!Kvnfivd8ck{W90W=ot+%&v*m<2Kzea7Z+eeLrRiV~xodl25Ms1e7czh%{rQmVShvt2&z`y9Bpj9YzKLe5OA_BB(^aqY@)IIxx z{4Eskjh7H(bC6FA%~%2V_a{z6}-@wD&xJ#}7V& ztP9N|9SJ_r*5D5(nHQW_)!%3*WBN)byy%mmg4ThYZs+m8XOwQf-CPOTJVfqpNCa{i zP7gj(#)wQ|cSgD@G6yJ3r+cN7qMUh8I%p}`BaSZE2_BB|jpfapPyJNSkS*x&-Nm=8 z(GWv_dpo>dlt=OZOA~w)3{(^ZvuPL$e+E}(>#2-}PZx@X0nY^-e^@~pBZMM}r_|}^ zE&0i_I2HjR3n_``y&gA}Y*zcVYm&-kLEd&by{TDzKlMK;6Id*M#)d1OX?4Fzs?x?O zR_~p()zA~< z08KXh*b|a^MA2ld50~CAqsJtGJp^ddvn8L~Z{FEh!cUV_&*;I@R$rCHGUlEa+s>$d~tg1^~tn7Ni7N+V}5D=jamtcD62YKm7!h2sqgRmD8P>^4PLaKx;d)tT+@1!3oGW ziQhI%?3&OKl--#f_i^dgJuEuzEAt7AcF_7AAkG8FVsmi!dL-N!qX$BeHdxEIotx8y zmOKOPuW0T>a|r&)?`RYY0N3hK#mWd7zCR3r|+u_9_S)Slf^mJ6!AV@>Ndx z)4$R8B+kt+=F*g)hd23Rl>n0g0@+1T=*=2kfT1F2=m{wwVv>P4w8`z{5dMl!;PL?C zEF_E_mG|5w=g8rPv*#>hA`EtcZ%@3F9)x|&rUM9qQ6Dc8w@q@(Rs$w?fyj;lx}_r?vWk(@%X{qS=#)vqiS9Z% zl+lmxPsZhZ8dQFcOVJv8lNezPq5B;g)+5Q^p0K!3SpF&-?9gOC<9HYF4~0-(HsMIZ z47as!d#MAd9;mr(9skn?4+Zutqp9zo6=cTw6un7{b|FKwLvPxi$nYg>W$5=p$aqiV ztw7mPm!QjtZ(`%U@L|b(#PsG4dMN|>-*F;R0(kdM&p!o5YryNHU}a+n{T9v$gPY%$ zrdQo_{Kul)pngo7VH+~Hv_Id&c2HHeJj16D&fDyi85lntf3tf-?z61!r69b zk#k#;qdmlV5Z9kvvsF}wChLFK1hVTu2aNX=DpnSeKhTNQ1gU$}kM~20G8E7!tz~mC zkm217&GFR7K(FFo><1O3JDnJ19+Gj`pT-^7Kzva0)3|lDW00@(7Riuun=}`Z;M_-W zQ=kK4lNapDMzlZJFrV((DHatxL zY454#eiHt_g7=o;L?+Wpdfv1Do~Ai?|8bD@BJ4~A{|hxkSK4Q3QOQ3bm;EgPjyurZ z%+Pg<1r3P(#RC#_NB_RsV3}!+M03G|^xrf;D=ap;$LBZB|Heo4SoRWj0cZ9kwGOax zCCw&gK2d?>XnwJ4M^R6&BXC=*)W067H;=NH`FLHR6q?)0%L39`*dDZD(4xe0{ zK5be}?K`J6%k7ZD;djxiDaK4U4h{D@lbHrou>F+*l##SIXlh28jNK*=NxJ2T9-IsG z`(s@pT7HqbBtir}RK=wy{WoF*XT4~fZlCb@^(7l{(5kAjJ>RrFOYqqqE;cVdgw*-N z$lTu$TmB{6wQNQXs=>BQ%6LGK9tT!~-hH55M8%oA-vfxH@Qi4Gi@>vlrG*GF1e`Ku z*}%FD-F-dG=qiyyXRnRfmG$p#`<4B9iSh6=N@{b^UoY&t;i(?+_c3$lEpMwwZ-o&y-+YuZ ztorpOecJ{BP1C}GRsCNU2rtNsa>pDRu0zQV%e1P)Z0Zbn_H-`50Q)`RKitE#ZlaaDO+RNy#m0w&-%QG|clUKcr_ zx-jGTn_q7iHz!!ust!+MNz^WhEp(`$AK;r;Z4E%~Tr@QUgAmd-q{wkF#IdK;JeA5; z)TVB65$K#EJ$i#gn1FtBXd-DHVzpYbcLcDwy)`Spa+pejYbh(0ujPmkF)PbqA{dXN6_Oe z;9WA3Z%Fy1vm(P`8>6EzjgdhVp+@J^X_H{d`rSYB_YdvrKVbMzp(#GQeQ`^I58!|O z7ipNKA1}y+p_sr#+}|j=92Z`$(Z)Bmt*zUsM?B!@6Oe7G>i0VQ z5UI$-)rNcO)#>{B{H(8Kp=o1$R`)RqFNn>=U`OTq>c5F3N~0ovPN?im)F*rLenX~2cOZ7+dHOXE-@ z)Y}ukEXOHft8kD?NL2@c*UZ-N2*^k@)ooh?1oFh;z0{$v1{o<$od9-n9ufSb7{vrz z)?3Y1*ed&Sv{Ci5pC(4+Wc1y5n)ziIO-5H%(urCP`O~igh?Qnt&71Mq`*@#vWizGL zDX4*{spaKj0-W zd?(tp@q!!W!-n?);I{zP()TyY*GL(;m=gp>Cd*nMh2mpxgjwbI@u^ZOX>Hprciz5+w~mt$g@P4HX4swMOcrpKT2 zq$$8AnmWa|!|68lGR0c%Y+RK3vXEM}K;oL3 zZGgd!bXQ`;Z`CNXH---90M_AF)~Fo<^UDkptgh@EMm2Za5JZ&){Hqg9YSf zas>hDDNx-VpKjEGLL*>HEqGA@g6$iLy!7&9O?KH;Iq&2rjvA;h74F# zPWd3uBC)hwob3?P3zo%Dk9zpV#APyDLo``9j+yM*wt>knf^J{ctt zKE~t(Ofc+Ena8T)1Fn||FFo+)B!`x4fIxT4?0c`nzL#;9JIoKMN2RdO(2ixYtj-~8>Dk`;w4*gb;!+2Tm0(Z>$EU7ySzqvb3|uPRJg8QihvRkN}w&V@2gq8WSECt93^`xU&!a&$oqQX;A*PP|B zplUTJ?hVh}N+j99Wt&*BRqWnk6s)5aIM~yHWR}1|64_;+lmI*&=p_T#$w^wNV2C}5; zG~6b3=5B90?vGBKiJcE$-O}8pB=)Y5b%%S+=ig=H>7YAxJCWCRXygg2Ca;i(rejpk zgK%JH^8(=)=A-?zzObeC9i;_TLV4!>oLB7bZ)(zKc<$HpxS)@?kyI4?k2_TSGP*REg`y)iW5jR`hm>~eG} zWZCGG8SBxWgjCQsY%NHPXWNVIB=J;qb8z)QB+ApZQaS|=vp&ObwBV+*EN*4)`@tPF zm=jBGq_$UXeJo& z(=Nxa_AISbFTMh8B)utC(C3HFH%*38h6F@kwrH{=5ErPY*BA+CXTG3JMAE3Geb>^ zH=93lT8RA#dJAebI}m?UXsj!14k42n?#&}{3w@{w_`(K13XN>TM#43)exAR8-`#?< z^3luZHlL|B39iap&8n6@$v+>JDEvJ+l&pl`jFS8WXj~G1gOm)_yD>MCH-iXZ*aP@9 zbLlgy?^n+`%D9^LxkerN^BXmpuBYByb1w+)_wUMilGT;d@o>mW^Nl6Y zPABOb-=5h0?Zd=!tn}7vQl35AFI~{{E&IOH>V!Dp{N%GA?J+&O=*G2MV`BqfbUm#Z zY$UUP85HSnSor%_Z@28?h4;tw-!)~U*C|#m)UqU}-Ap^G%&ew`^lcdX*p0Xp%QNgb z{YtawQx+?;3*j>|2bRA+MRtDX6KV@9*1K0trC%=i&$|~vnu0FBV1J#RQ|fu#^S&K2 zMc)icRt@!!8 zI0*s$tMGt8LeU>|JE3jh2Hh#(wW$l@rG{TB#01_HU$7l?F)HL| zo~!)d-d|)sKcQ;;|09=U*I0ky$4n#o*%SBU8O!P#+uYHW$T8au8*ARaKB3C;Z-2Ts z+j-;lb1e2qYGOZad7<`$Dt_u9lWMSRca3O&%mM`2UELg+TifSEhg9OKFLS`3;>b#s zp~1Tt?%mxx=p1&!_~~7OIp3*=`h?BcGkwXJjalqaWRF9YmQ>d{98u}=@P->HlAa7Z zm`wc}PDV`%X7l=kQm=8A_abCOBQ^_D?JsN-wk9Jw99Su4H*|Y#jN0VFH5DjKu$y6f z0Qc}tRVts1XVLKK;+<6UE1HBPm*qDTYHTXP zpQfZX{Qsf`PM+3&VwVQ$-AI6pdecV2r!BVZ+-u1UI1ZkzrRH?#1g&ao2S8x5ihE`M zgZXieadWXG)+B$JcAK5<)2U-?!?=&_F3kVyT*&??>HBCK@fiZrMM%%+80o<8tq>iLJ!Q zbSB8Mu4nZ)EqlQG`V08;!VYjpIxu%KdL5sQZp(OBf4x?uYS<7VAyPoCOH+eRYWxDM z;IZrJ7p_<%Y02RA$cms-Rd2AZR4?C__E}HwM_=VdKj%(%f=qvVU1lD%ax-06@4LsF zcFnG`9aXcFiZ7>`Lr4~Pxi1MocLnH2tOu}$Dg{s*suN;0%;)lCQbRmDqza@9KeskO zT9TUC*%{~0e|h5YV~qKrs+oHtS|qB|{WDS88dz#LN~-X&$20y+1C*L+c=ww zL(ZS`5@f#Y8X~(NQL_G8$D7Yp>n52-P>i_Fuv9p&kPPAB;Eb>Nq5LCjx+)}!%AO3S zSj=L+FKXa(DhdZ@!F)M**&RBR(}F(OlY+EWhv(Ss9a%3Y^t{a6LDD5A+NS9aSUr3a z-QS#@5=Q6j#ietO2?{j7lQ&|_+39>8VPSl+tYIN)ho+s=vP8(RN5+E%5v^HbS$xgAVb_pH6SCfZWDj}eNDb=wmEj?p{6=K-+u7zhdJsP@@v^?)Etijqi)-ijt2wxdy*kG^h*xYc zDUXf%$?7@{lCU$QEQF3ogVjgXJ1Ex`=;}BEpuXVq@15_&k*V(wARzM_)oMdCexd28 z7q^X9uYrG2U+=f=^*GN(2}@y(-rS+?r=G_1n`)zfLsAHQ0qN7RSZrk}6*ys+(o~m5 z{_!Qb4WPUoeuJ&O$J+u0zy7MhHMEmeTX_=eDdZR8wmm|=N0Sv)jb69Zehe+Bq_Sem zeg72*kE5X0=P}5xu;^-xpY8G>yxIZ}jB1wMY7vpDf}@%w!BQvTyq?n?EW6m0L&bLR zy@kry1R6kdr7-M$@>bgsK=G%$>l3*dBZyb`ZecVC{Svp43am~w4qv%U@i7YeFH-)P ze48GABI`rAH-ZmTlT9kLGT^#LS)N#45p-JMt#;SE;b?59}nqd97UZPeF)B}b-Fl4zuRkrcu2xz$54w{(_@bOZM=+0zDv{iDG(yn0A#7?r&{dHzZwmeEH^(Y65TeXVw92RKfX{L zTQd5MycMPZ%DbPwg@4OX#7ZdQnTFowQnD+>8A`$3U zKRgcYeA#~-#WotML0QN%S3$m0nrx}oH8&G4IebAjfYj zT`dyoD#we7^~QYP$q%ce{_bBk$FebN!XLl;>p~wc{;)?Nk`!#L+!Y8^d=bTUv)Qiz5v#oa z`VUnxdqkKDLQDxhOkgDUtBU1FA>FvNU^1d7$-G3o2pIre#>}n1o zNpYB`I?Qb_jho)z6TF9>KvTRNKUATR!YjsqDvGgbRp7K@YgB4okDT(E)1L|rnx!s1 z1BtmCu=5yT=QKc?-98^2Xn`$A=SYeT{C$dcPrDB|_Gc4{jxRS|_8Eq4c06Ep%ju&f zzU!K5hGDRSVDlG2PzNQ%k7thkKyU5_m)NSvx<*xgAz&e4pTb*uq$=a6bkP9)s^Bq9 zJrJjz+YY=U=#HJ_a z^#v6NuiFQ_P&G76G#z7i))$+a)YOo z($L=UnfHPNz4&9lDF`ED{Q zbuD)@Q-6o7@q6DL{K%*18AZDFzAoGZa@$nEosc-VDvnQnACHLx+li)mma9mej@jup zXUH3oR3^Pv#?%Oxms8F;A;RL^4mfNZTthq=+`&5@V*>!UCWzTfj!z9#^T-STIWZTm zlrTstci`P_>etEM+A9<>sY$upeRws5`!}sz%GlA2n^wQn?07!PuE-WXkQ3QdqM!w^ zsgdfJ#6T*|X#QF7MuR#5=X2JKA(HEl=yJ&L2Q3SY$@a4F=BRN0AY>UQ9uaGI3X%Os z<-o_!w#0*F8s>F5lYjzdE~rqllq{@j=<1B*($1QUAS$zgU0(AO$MSH0g5m7W%FKxTYh_&F{%S5rrkaj>|5ZNlyaB?Ee+qRfeIT551;y=Ilm(aQV zPl1sIP$Z2I*p%M4dl(+lS2osK@XaEp^S|-JO6%e!*Fp{KqWjUQwt@vrv#Ky;K_K9U zCUTb|8>2}rK?eaCt6G`kpHHyIlJ?b+xawvMreV>0M|4c~LaAG~xC9BA#yGoy(T{L}LH7S$zP|aJ z{;Q@nhws-@T!Ifne`!|1c+s&$ED0e$M<^lNjwJH6Rz+&%&OvgGiPk(>dyll1gB_Y` z1v#Doq_|;5#dE|_$A{jJogf&~s;tiF$LSN?OpCJu%L@Ok>w8j8Md=g>|9n8mtcN+~ zFb=;f7uZCp1mN69NoYp!Y-RODlmPzxw@^$^#$xU$-s&7Zfw`Zwjn9@6;B@Aj;BX9e zLnOgqt&Ed%nT}e5=Er2`EOfRUX!z$Z_IrSCJ8eKxHMLyMb+3U4fyJpZV$6N({!hzO zQ4Qg^KutX{4<2ousiw71J(|}ID{qxt*G-m(ys7e$99hd#Yc6~mV3@fXZO@NmV46Y} zXc_+&PRf%$T*zG*2J`!Zo9@Z~P@WUpxFILBoa_(4NLZY(toWI8YXwPY#nFCF=BYP$ z&6ZC;MVSR>L3{3U*EaLo>7(|lu?`4b#`5YWwQdLRnJ6Mr8MP?Jdd4C-f|2`Tpj(yA zejKg`tnjT5sJ$>7$Q&mYIqlM{2%rR_a{s?R8HG+hMNBK1(>v_Dqwi=>SW(o1Pn!%4 zj&q~YK7QvL_<@l|@6!k-wcl_p{l6=8#{NS%_pt4p(OTm3*#@L$0uUOmT4b2XZVA-c z?xOCzQA;(2SwY|BRK{0wTZ4N(FeN8@=T7%>_2B=$GMr;Sk*E@hk2hk(raP41c7{wH zjvp5y;T)&JAaFGZQcuxw3A&>eX&G@Cg;l% zuIi{xP@vkw*}}|aRAad*>fBwVUOQAJ`*GO1L+z1~>Idm8qh!?~SFU49kNE}>8E+`1e1IVzx4 zlH9BKc(L>NBJ3m`TsC>H?IXS|mRNiWn%n(yx=wT)tp;3GmOZ`9JC?(pU3$l)&@qyg z{r%j}_w@&3e2|8tSW}}74?bc?vcX$>_+Bp7nrPC2L|+<5n}f|VFC(u*Ki_-irPsoS zDo%siHnc<`^{az%8>G{B8%t26!w@IJVWQIAAz=TC#j1X%twAvU=ou(R{*3ponj51H zU+XNc(KW^T+n#q@7awuL+UxclGOjrwq74+5u+jIyP(pqd7NqFBlT8#EbHM+c)%>4H z@rgvLZ|kq-xYd95#(=*Uptlk`o`?spk62t9*yimrrSppQFC={&Wbk3+Vq=A zeMOF@itnL&o1i`iJ^Ur%XD#zDe+sf~U%#?Tr5cAdOkq_u4bFx4PvS5pCL#{-N8dq@ z$*2uuUpPU2IsUu1r4y{{Ywf|-O)Fc0=8b|yfz#-We7D$3a}V`TyY5ShEmt4Zo}#D` zen&ntBWrR^G0)pax2*Gnhu2hRt4N6tG3$$OAMpDN<<|lmTCbiMI8S2!7KHwt*(`TH;h zx7YI9nAbi( zsf~j!v|wF_9@xag5bYM(JnQ%%g<6=ogYw7=6W56ozp>|_K&w=zMbLWK{bF$svvxvPs^z={ii_GI< zkX%W%LpC@pG^!`^;Zm9+mVP>l;EL^C35T1agLvX3J6ZLsAQ~IG`q|E>#YDZmMqSFt zdBw3Xtvub|{=3w|{n zZPKkyQ6S}Z7xB9`eK(!xLTX9PPk4Lf=935tML}C6HFGM_UmHyj0Stox*G0)M2RFH} z7&7vq#0LqZp(m{&@7fyiwIIq}%tS;rgE&loU&S?PTg8bhFIBiB@70Gwt09I&UHb8x z)$7~NhU@8(C^|q3Q_LvCZ*KbA?3F=`8-vK9S8gEhMP%G~&)04e{T&McdL249SN`WFH70{{Sd%+(z`eUo30FF!@@ z{y{^V-!;u|{k}-gBF3oSC2ltE`_@hHZMrw7%ohjH7Tz2D%3TWU-Shi4 zdFA!l)_A7lsv{^Q$N(boPBB|<#tsjQ#ZlzguGRL*Y|3n-*!`2+4J{4J;J|FsmzeNV zHr#teS8NYn(h9wW&`N47Cx&$L8l9SMln&6?x|CFdS(hGiIKD4U1=B;S^X+a`o$ZI2 zyWaz`k?>`~pK3pYwtXq7IQ8_^yhLqlU=*0(X(UnXSEj{P2VL*p*5J-<$k)+_$0~XR zjl-Fm7dJWh2Bs=U` zl1(w#LW=jGU%j>9Fw5RUUNDM3CKZ7`dN|Ek7Q632)aaFVMUKMxbwggv0Yy|g0Fkr& zg4ScBM;s5tY)04qA#{tQi_FxXmtw8`C~1tNCH**IYE_t5yRTO?JIED$R}cVI-4ZaJ z7hMEcPP?3?Y#^f6t1M*tisCDa!c_s2FuTc!qswbfkOyfqG8c2OAL%nTZu}_(B$g*y zSsX#LR90iC(Q)>dnS-|T#Z)5``LBG3{V>F2^TSR1pzP$>QwYzP?P14gsXU`XVHS)< z1d!|EW8oCckzSOi@Zt;;ft(zw@gRP185U#MdJHWuwys}W$m414U#8%lv->=4J~!OH z)AhJ^sqXzE*bQFp;erRMDI9vyuc|Wi4I8adiWdQyEUv@nR6J55rtP4g>^m?4`01jZ zMAQ2L{E4Hz&&dU{%VorT%<$|VgYL?SR1;w5+4EWGqVmCeMf)})L3wDuqOur3by5A8M z53eJ(!-5deij+q8bVKaCyf?R^qsyX)-vhGCfN_3qp4k`OhGH1_AJW$&0~O*8jkfbY zK;;cZ@Y>1?R4Z}oP_o!+doh6k$&e(apu}znm!P3napj{t6X+^xG zR{gwf&=4wje31F_6UMk6!;Uti-KGo)V5$2R;>=(Dp3l$)+W~j&oloB;?;dxU{YKM@ zGRfg|i!F<|!sckhUdCtI>sZRSEsOavt7Pz|Pn77qDsC%w2T`F=bG>zM)OCv4Z*ajs z1}`w;X6mfp>*~uvS7l~DZA76m->lWQR#Bj9rP^c>6Pro6k%cJ60YB z9eYzJXLmWy_3mUUct(iL`nI~5YP2;Z7t1;~yK_=I3!P!AdTy;C^rR;gqAEPKD@)@& zNXV7LGHZU3p!b#Mg1Cn`sUCI;=L{M;ybq-SeNwQ>3Eb4~AB?=gZrW}tFtcR6-SHlV&cNN|E2<4U)^iTx;Pkv8Gw3MM*8IxQ zxOlv9LGpJc9|xC7F$f>IWzC2M^V)u2DKq3IVaL%Rb9dBN!8hBsS2A2ap2VDQ{vR3> zW@rdewAr~o=d&;|3*7?AzPN1pgkOnGn2r5`6jHepTX))hyq$fP-RLGFZ2(%KiG1Cb_!VRgfIxfk z$YrXUriH8-G^Pi(97mG#=o$yDJ=e;jh1p`5^9jE&Bta5qU32Ftb~nlC_Zqz}<1_x2 zqFT(uyEM-5TlXh{*-tpTR+yE}Q|BN}5MK7O==vBtK~gS|*CmLie*V5yBxrsk6dK^U z%Ib4%fylfV^I7SHT5)N2VN7|Ru*_iSL{<60XwYg2V}*1X^GtgB&M^9J8F~^8QlJ6;wV~qwrl^Lyc)rsIWF@_IJ7@#J_*3?^s@<7JF*wyoQZfK& zcXlqjT(wngp=RS-#-5MRM|p61E=W)&lctsVwh}{RmhoicZ3i#TiIW{MJPE86AK`SB zH@BzlbL|p-)JUnRQg3}Sk8+=iy&t%6&RR~CJq$c zv}zA_4*l7+<(BP6S80F7bMUHti+w%C!;j3lk;Y;JmDz#OACW41FNY%9avwFxf{&XZ zzTzH@ko(7MBDP*O84m{1?--hRSin!3`9P_!@6Lu73thHW^D06GhCVjRKCM+ZT)T91 zz``le28Nx#BRV=$z4WiCWWGwVYfkz%4XbWt-v`1a z{v=T2>V7U&@2T$+oBMMt`&ws5j6+rZ{cpDuAqB!dl-;V?UxZf{Q{Jop^-D);WTJgR zmQ?#j?s&%KEwpgBl3RkjIS%g?5Q+pM%t8P`^?aNu35%7pYs@M0awjvkS-O8a?6H zC*VV;q@&z@m0UF>#pwJea+ZxhSJaO_`Ex*%S0L;2(|I@6#w!B_29GWQKorIp4aldUi#fWOXCa8IQi#x9pa1H?NuhsX>O48f$s$B%1pR^tg+3@ z5QqrDY6ND1rpB~u@ns~sanh-_g{oO%DU3sxA_?Ci)u50PdH2iGhm(x+NW)xS8y0X-zk)w zX2b*^w4y20dB*2@e7{jtOufSH3tT@;I$XU-Wo`3L1tZ|k@X%zeYyJ*8&G=}<7x~_PS@|$HGLQJ0`PaF=VsW&;2rH{vM2I%8GybH5qj>nZ zep};s@tbCL6pYQQJ?e0I&tL2<;M!oFpN0IIqx?S{C?q!}nJC5i{)lnw)Io&e%_7ry z1qzsI2^!M)T-k{7#*aYvz|1@>ik|yqwcAR6M?ztoQD@3EH8v$MgLyt3-4odh2B+rlM(MFu`(0;IqwNeHf1hlIhU$b>ssVv{CO;eZBx< zEJg?+sb;ilA@^;1K1NSWsL1a{jk=&Qe`mz&Wy)jn2GkU+im*Z6FIWE^0^v1mJMHT@{BVM&AD;^$_|7Li10D` zU8u7dESTIwFZoWor(2$yQ}`p>7fKQT{sy*tUn8lA~=< z>0L?SJ7G`O#C_Z1pgGHNA~r|~25WZkFBLEe6R5*)Blb+DIIF)vQWP{QibaR6u>sPKBK=m1b3O-rI`@Zz;y(U7&H&_=%l0PGAT zdy-g`Y=rq_VqLJNw5i$x@eynUY5|*km8bNQIQy~4y7Y7_M(vQcpb?FzK+=?@$1^uov?4ZkJI2LoJT}65>vZBST1D5yZD*(1n9WrfD)hAi!Trce z5sz=pQ}`-17C>tEwq(imP?2ZMeig?XcFJEfGP4}}W=q8Z$ud|V2PQvz?2me-L<#1P z3(GK<1AlbFa+L`K15^%tanGsX3wl)F1PLW{zw{f!kI`G&L6i>gs7DJG8I2mIq${GL ziubHJAtm0VZGgrbN?4KD z(r0By9@eB%ieEay^>r11g;RnTv=83(SkR;XpX}g7hnC9gquDFqf^TX3MR@RCX^N@k zqEFJ+)xHX;Gxb%Y6HL)IB8;%w41_ZiezL``rrse!jgt@=CB(p6&}d}V$+zRJ$UMtG zZMPq!UFYC~@g?sTNxY*sZz~q*3@gZL6SQ7%5DPxSq!o5Vi5><2)VC_#{(O*bWk;En zCw~O9gm9n+l*>HQBGY)E4>VLT2(`!pcY8~Qhz(Kw1t>(vv{)bwG`6FiyrHb@58#^ate90y@kzQ8MVozN$ zegAyUaKOH$N}pRdOe$AhmeWDIXZg(bt{OGoIEBaK z^DZJ~$Gi!XG!9kXX3?{9iybv-sBECom6c*hsnQ5#HxfavQ@1GV-=Qgz-BM)SShJ2H z`lHygoQ0~?WblY)+gb9fYS8ssO8M6R*~g!0Y z5}%;OiHZlSuf2t)pJUOJD?VYT+g0I&28!2m4Nv`oSA${XWz0s)gYRft=fH$y{SsB7 zQfNP9&~1BGq0cvc9}d<5n~R*+Hx->muZaOjq@<_e#&_?`uF4fHD+s{s!-yx-WL zjt>Wxtia+HQzZLkWpT-?MOFDG6_oOPqw!hpU-fnia<2rOENplxGm42|{Fk6<3lqiX zdKqW;R7&PRLUhmz&zy*Ejy4t`N`>*@tsOI!dE+iLt&3D*kVQ*DL=T>SVW0Iry|hki zwZue8e;Iw22|(U@a;f@JtQkRvEQsDGAC$O_`vi(l;7?v z^11)?iu5QN$^r)24ePtfh2gZ8i1p5O_~zJ^{)L#ZWWML>D`GF$|9{L0fU3Lb5EwA{(KtP8mMS)yh-oF zWyw3M@A>bH5yp4R3=W&=C&4zqr0#<-^H zUp@4UU5V-kps5gjqe}$X-|Z1n-pmYsep8_6^}_j<6<2^Px9Rks%^5P&)*sU03tR_z zI;o)GdaOsbQyWII+j;KQqqr<^B9QKBcu1}DrF(r#8718r#~_F?m`76v=*7*rc>vTE zM3qK#VVb$DQR>*Ks_|ClfC&pJSj{y}53+c2h^7IQ7&^n(j7^$-*sSPxrAT&IVAOg1kD5;B{@J}zSB#6Sbgnk!mn>0S^PFG7Ltaun<8%gL~t z8~^Z!9SLm5U*RT5)?fJ18)q_au8n_h63|w^|E)u^1R%!&{}gS0a?r2m4v;S>;m^&3 zpOZSC>{+qqW_1d->;eD!jZW-NQ*oqvtXl&0X%=BZ|Hpf@)hI@-Q=B#4?3%$PIyYeTyL-)8G*@#uNVV|5u=!zev)9#k-rxX|C-X6K*DZ z)`Gv7^;P)GnuzW8ULDAKx!=2uNSn|FxG8I8^d8sUrNp|GV7!&Kw+ifO=oHf2KNQea zi>*%1_K2!QD0`%7K;hW(mHd{WGkL&)(M++iCTP>@7ePBpSaB?cq2z z=IyZJOgmoWe6o0#oH}dhr=+?fIKP^z$AD259IO5Y$sNDjWO0zyn3cJipZnmhkLo%#idYvy1&@FR)(y_1De$77 z2_q@G!;_>js$ZfovYh44ne2G%%*s_p732cP0?ZnqTV&6P%-j=cCrro&aXeOpH|IjJ zY+%gw7bqXLfCqr*H*-S|O*|}v!K44P?6WlK6YT^321y2jevZY*64cZ(^9O?#nh9g* z(+>9yPXRi~y?!37I*3+O)WJ{UE~p8tc`I#0saXik6-%R1;uYg7f97C5KTS?VCrz`F z_BYLXM?tW?FBab03AJg|$>4T2%%UxE2}wBtVu*O^Q(=1@S1I5~nQy-vlg!j-NkJTw zs?j2nGZXBYORf#m@}rUGUs<2hsu>ORuUF;tdlO}_d0>so3S11|2(EFGC zT`UadVq_h4tsK6(cHK&ABOLPsb|jukYjt`t0o)#CgcWX+Z|QRKOksGIwUd35gh){4 z@qKRD+#?ZhDi%FVNkoYNMkxOwnvncTpOc@({Q}uouxBD*EnmX>1)BKObN~D+-mj`v zgiE(X*_`nBed@wdYq^CxPS5X-8&}Uu43n9!%WE1!T1ne@`gzFCq?%UDV&d)i?BQ}g zGgB1O_AI573QUkK;Ywh`ItCLp(V0hnSJ#{XXyk)L(t5Ie%mb=pNS1cSwA@WY+8rsz z)bdxNT;L+3bwAuZk&x4+Q8H4(ko3Sf-XtEd5HT=YH(VuVr%<}m#$-x}RFB%cz31u{ zU7l|<35g-f`Kf?kSWO=rb2JZ_Wu*S&Pqgl3fw?^1$m5ShN<%dn`O((lV-UKQQ2DXm z*Yyg^Nm&fLG^GrXSn} zKhTIY`NGNqfWf#J15P0}5*qw_XDnB(&_Of9VFg482XG7~w;*L&SL%NSqBr=g=mQ;< zP2~|=r^q>M|<&1&ok8QO_)hR$c+kot)%&#+0N1@Q7vQ%Z@rgbkx8l!rc&X1 z0YdJ>u(XrlTkXpg44;b_WRcdQP!fw90(CZNy6p;a%aU+82o9aS2ZQte$>9` zOaLl#?FQyTw9^FmMoE@(P4qBZCJOtX%T&BmO~hL7^S#mDyDDuc!;@T0HG&4)AwO7cWM zF?0ca<;J8j=VTVLdAGk#kI|2#68RO0B4TfH>1Dgti=b^wmoGaT;tb!!44`kAicQ`( z^e0UqqGJ4G0(^{sKZmHHJY5rHk#n%}s*}{W!kc9LuC6;3)=VXcqJdpY$2<|evzlwx z4TFUS!ezyy1IUaf1jW0Rk9X{mzZ~;ZWx1{u8x^*MeMlXZ?7PxHq07D2lt-NVWU%&est{!Nc1N^l4s{Hs@JLF4%TgSz z7|5#otdNbMm-w-db*t5wtp7HFSW$nP^|ufzi21ePefJHb>&j149n>HF9iRMOmOIuU zm$V!KMW>H*buT-6Ec}rc)QPE=2Od6YbKL~dWV(xB&o-kINhFJz#lz;Zci;h2<00x^ zXH=}-A+kIyRd3wrG*6Y3*}>9o2Wi~62cWQpq2ahYf3^jA*OdYJ&VJ|-fGFeOae2im zfokBKAz^P;`ZixA)3JNtz zzl`tNr-$3Ny9f!}((0X3sjU@=uMLJ|PFPCilz~rTug#Yx?wMFU5cMsGe&=pG%pc^w)E| zv?Wd3Yc;-Oz<}iHN0YZ7@_HK{(wn|g2quVOW%()6O~HW*$jMI#VEH^lccBvBPEg%^ zB*+TW1;Whi{s3m;|2I4Z=bvBqN54A^iN|t_3!*IFyYsHnth3)MgW=1508ueF13~wO zu2Ls5Bo{D@b3gC|*O1FO(nkHdh5MYPqU2w6G(elLlyCp$ocRMPId~8!P5qTllIet< zY{B;aI7X+B3EBSre~{jCyK~9ld|){g5#D$yI=f-=V|HCDhndX7uGK$zU96rVD-JNv zvxa$s&%qx3A_2MT z#;DuyWJT1eTaPziylqb?MA0yLBrkYMk>Az}wrDtePL$T<3yB*Bfak6Z!#<D0HC4Vk(88egG z2emT=l+F9Kt@g5e9tW0A>KDcgm7Kl4t(!2o2BtGtQo7^;x>7H7Qgt}ZsZyxJ;0h*4 z;2}UsJlG@pUdW0<(i0o#v|=$n5z(GR;_+pBs&VKb1l~xfxK7mTB#1o`bw!*?$UK=+ z==>0-3~N|yqn&DiQU$bohKlc_HwS~hfVPa1JW6>z1N)g$*9~#0o31=NNv0NbduYPw z0ffK0O^ofOSsZ2oi8|5}^(gm66L^R25H8ebg>5Cusuc_$f?KQHAVfN$ad09Nnu zc$59kt^g07;j8OUi0@%b#|H6``^&&YEjTpZ5h&i?R*dWgy3^G$ zc4S<3-BXLc=iAv^lc=BS>9uZG>B*7Y?T--O=*vy9uE3`@^*Ham;iS1y$rI>w2*e%h z(PBG|5p_2_%*J0gBgSxrrm>ojZ6q)9oUralK5v+{QFKjNdXkWNZH5n%#&;Eig10T#8SN^(4FUyNlG-fFKt?4~+zz)Y zbi3Ka5!qa31zEcye_BP|t+iL9$&(UpzG=PutOXZGJwW_#W`AoO%>tvczJ?1?eMLfZ z&zWvfnf=a+k$V4L%gn!k#aA)gzufQ@EAOYYcSQ1*$Cu7>h!rTYS(&F`!O!yNvKJQJ zn8TIk1kL#4wli~wcAE-JXrIVAF5y~#dIFKt=g=Ik7{7113ug17 ztVM6yKitCL2HkK5dz$#92WdIt{27V4V{dijppS*o9FRx9!xW`_wl>@B(0r0 zZYm330y4SJ;5@RkE*uQFI7s3nZ%MTmjy>=LW?5`ndLZqDEzIk8ci!SN%Pv~EWuC(o zU|Q^#z7d4udyO>{d6jEL$g7TfjSGcpN>$@^+JzM33LF`I{W&%25r!>aH0f;M^|7nl z>oW2Q&HE>U#B!0y#ltn%-9k*+7#bJaC-@zJBTXwW;i?h{w)Izfx?Ny2P( zP3=`p{7V*Ns0~Z)c&AQXngMga&at*mCC{n14$8Zid}W8h-Y45;?L{gnJpMMAUpJ2` zi=R6l1GmR6tIIA`*#XI2&6{I(!^ERKm|FvES|IrgtK;nS+JTt6+O!tHm0rr*GO!i5 ztS>|N{wfYaUjEiiZMR7cq%7rR6(yD1^K7&PF}rCREWGxrDfHu~@voJCeD(DjDw(T* z$f+OX3F-8<_>kxiIEJWp)HqFqRQvOI5ELXvfhyI~4e6)8rNw%Z`H5v_?IO#JV;aM) z6D4KzASI^@ua=tReIt=iRca})v2B+1bI2c&;T$`)R|tjfO)6;CLn?X@(5~=r ziSt=0Sl>_5?J8-i`?ETo5O9OtOF9frAt4$Y7|q;`7?&rW^OGrX2@52B(ll+3RLX#ugD2WRekL26Ft0t zMzJExZczZF%-F+p>5dGG=>gPchIh)f$>KOK1HE@c%M>$`hy>TMNTulI$*X1H%g|5j zT4cnXfQqU08yye!GF$=SUC*-C?o}QNd_wKg5FOEU9w3!`HrA)yWMPyk8JdV{Im$a2 z`sMx+)h)jvJY!^*(x}Z_w-+Ns!60yWrN75@(d_Vv(0>P&)~xl;FLXK29FxkTYJy{l zndzzY_wP?#yS(lrx;S}QGbjocdAMuJrVq#ydnbKD2?JFvcj?K^yo@oeEm6xZ+-skFhceA-KXEAbm3_~nY$={Hx=#) z>)~6?MM`jN6U?!jHK$v;l?=oXe)fS#X>v(i_>h3mhg~pDURpLUw{Z`ODN=+J#1z>M zoFecK{6B5&ZLum+*5@yXDGe&5-EV5yJf*3B34tBm2K8GWDU;aAAGP`T)|$69Nqek* zJ|mFD^YI!~8beLGry;;#Xi0rTP{KHm%wn9~tp!9hi}?wkXteu!7{|b29wlGlwT=lq zP&<`-Tn?xa(6|}9a6knT59IN2eW5*It*y04;^SEzBtp%Dw;F#=Kv6?gU8moH&3l5%~(8FORKxOIFN)ROO{u%mbi3jrSQwpx1d5JARk#$bM1l^3%c2(a(t?(u~ zebkfh_R(m2j45)F9}FEz%J$K;2ar(1xxaw@7x7n3D*#78xW9%2e%-cJ2o`-HXNp7T zzOIGBPnfNoEvUT)aa;(Msr9=$4SDCk9#$+5#bw13nN43dH|Dk}ltk@DLI?a~V(2Ep z95DL(J~v{?HcWt!?TY|1*O`3qM`Mz>d@ql~c1a02QCyWhq|9;{WgxPzqZCYW@7-}U zsHQxbI61eTTw<)fzbDA2NW*NO=ORcn2EqbD%U$T%@2($@u3d0>BsruEY%!7uV6Y|~ z<=26++%sGJ-RlYjV74ZC4A-WMkod`l5)bgqUJJnjqfG#VLXRx-!|l;n*jH7-ki8Y zq&y0yLz6s%*c5P>mIoMyTZ8XHAjwHDXbK7=+v{ZLS+8`ObPRXzZvt5~@aWTiIaBZ9 zzIA)+-9TrrFrb}dZs66~q`T~B-P`eR*Z30hAz1QvrR<%Z@~%OaQ;jraZY_>MUUYm2 zHvIMN`qj4yU6U+w5=nS+A0i~X+Va?J!XXyU?YNQ`bq(idBp-i{Icfeg2WBSiE!xN@ zBn!7Q%{0|e`b$wZ26nQVR=X98``MdBEP8ZWyMg3{v0Kix3bHI``@KwGqk@uuRL`a1 zmONfPD4&eNLX%`}RBgBUK4!)?PHk_#?SCj6G5_K2tzeXX%d}XDPumdz1^-@ioJ&_& zzTPy5zj$Ab+=XW-+~XHo;LV5{Q-9lNe(>N<2dzA%|4cQD9gUu5BkPXlYBFi+kFC`cQ#{AdjzMU!FPDI zr{jJ;%KE!ca|GjDzmKUjL)Ns!xt=}Wcc#I|O25?|mrGm~?@&s+dl{v^aj)_YvP-kA zkT9pB&%u&grcS5Bp5okD&DDViQjcQmu*y>;lpf-S{aKr~OPdLARNdMOQ!L!bugx)zk zS}v@Pthigky@m>;vfVt96ju)CaZIW`1D{~LRvsHp={$O60~lqgU2HWumB%vO=%r+A zRloR70Dt!hApS-S%>036<000+1yD?N%P9p>Pr<;%A>fBzw~;Lr9Z?49IZizL)&XH~ z-{yA9e$h8m^2cihw;>lRMeO>Y1D)FcU+GC*PuONUy@le2XE<^ed9%f3jv{d(X5FJQ_cwqiPi{)!15 z+UNMU?UX&XAWV+8lWU;{AE`+3{!B34fJ}_SOBP;9ZI8t<|3D@yN0Wa>9+6)V_ zt86&q8Kf{sg4j@$7DK-YA+N;olQ7?~dW~6oQ7!0IAStsB#16jnr z-P0*@A$wmVrN`22tidkAEf=DCz)bGB^=f&pnW1cQN$nk5#!-vB0#0sCL`Nlz!3vD> z%E}r6gO`#lq_`7RlT*s{uZB97wKnw&GEXb}&V{Z(D)MNEgH?S!wZy)|5A?(=qtP#+ z(v`432glyFOw)Z@`aM?s5j?XhqIq9FR?qc*eIKYEvhNgAA{0`}!jYn%CTN$K2D=Ad zOW=KaOW$->nB*Q_TP96G9t&FNS8)(wGTdhG;D)x%Zx;7_WSyY`6WZd%vr*{Yl*6LJ zt1XDLkBI8Q=odMk4PNPNNLCY0RyN{m$Fn3HOK9Xl(LFwXyI=8V{U*My9}n=ZH&l zb7T>@RSYDYFLfcLGvL{TJE7y^U35|7^yTg&Voh=zF36PrE89m&NJHTF0NpCS_ZtE7 z^N+v4xL5dhw3c+&mc1amerblzDSMh7F?e$a{|O(7);FL)Kql8l%WH!Y!I7rR0$0Sl zQGMI@S1=cm=DAn&CfK|RN#D1hxaecEQa%wZslq}0Kr4whPln`Km1i={zI`<4-_4Y@ zdGoz)_EtdpO~ZaIAHRuJ_AO}RpRSt8j{|;5P_jS+FY>M3sB6%mGCR-@ziL+h{{jDI zEyVh$;Y=?mTM-ZaZ$3V;Y${2ebGq0sVKhGe{~n$Rl*#jW%Vk-;8V)HQiGSR-hu^_& z)ZexNu|-Q3?!msB8@`W?83HRhUK*81{Z`vA?zUIwesn?G#9!+>IawzWbSI}5NcQ{O zvbEe5vH0YoANFoPO~3h5gnf8qLsMgx-`X)_ec7c|NOL`ECZL5HKmA61Lx|Ks__or{0Txl5>`E|jmPbo0buU& z?kiAq)b;K8PL7e3SU*EpbVl$;P*U6vJ8A!U|4OJne{2?(Kg85O_Cw;TXS_V)3V4+t zE@gki?E@JQu(i%);F|WCe}^Y*&&EY?v9~Dg#-A=g;ioFQNGHuRBTz>tzd*ce>FodD z2!rDN2_5r12YyliS@_-B*Hs_VfK`3~6ATSVIcqqVYDzJA6n6*YZ7ROJ6LNb>3zsr;SeD@E)2T|p&}7ZCoNBH3BsQgVVsT7|AQ@}q28)j(m!3;D);2&ZTg`y2{Buat(@;W5$i#8 zWv=NBBO`OrsV*oMxwXO(rhh2A966j;SL0k0n#8pbN#4k`aX#(0a&e|sAs}TI+jn08 zLRmV^mW2L3%2wTDH~Ai0l3KV&6jPL-^`GTYHB~Hq(nY|_xp&mHQ4zl;KuiVI>ZH6E z*NZ19SBfNeY^FT)4>;5JTn$K8+k~~ta0Rrn?b9?dAi3C1K$FKSjH4%j_Dy*N_2*T~ zN&FOK!S_7r`-{}ekeSd@MPr2!EfwW~Tl2&KMU{nhp?t9Ys{ExBNzg!I;X0szKslH4 z;|3iB|HM@_+4J{PQHX+Uvbg>~$}u^c^GowFeTe`B0m*T#(D6ut@*K#)ni**8o^b*B zI@Cmi%`2HggN_BT>Q7#Rq(ekdijYom^g@(t3T5a^W2Ui8KDE~oAq1E=OwXazf~2)y zqAYoD+gfUwNmo+^Jg(W}gRQF((s%TZ;95YL3MjtS?~BA%girVMZ{Q0ZY2Mu zRroTx8hnI@;h?qWmw(9$|LZ_KnL_lCNNI64-*+d{lQGBm=ELzL^j37e#JZX0I*5+; zT`LV3?^#i1-g0$d{CLETZ+Yike7|HJS(J#oFKZ9=S)CPZb0V1lv%WWh55yStdD+9{ zWZKY#fRiYum>sv9Y+71?Jpm;RU-v*X!Ij&8>EMFGTBise9QVo_vWr9hnP2Rde>4&7 z(<;zpAD71r^&Q^{_0+Q}QVtpr1fau`T7oFN?m1H3KxJQC$;hfv%d5*kM(BlAYP7q=fQi$K%3Jr43S^n)4`z_Lo#t+A9 zM{7UCE%K;{=rB@!J{5xV{hzV`dj+skfxXY1`iL09GZhaUKHcmh=t zzrvbx8flG{kaGL$!=0TIUqKbwH5Ga~IV>Zy*Y7{Z>YjpwGS)G{P8=2Wca{?T&GPcN zehe7;m~1@=gYigTQ5>r3odgJcabT$A`!i7lB_+@0QQLZ@QR@tdXy5valA^^_>sYhR z^O9MuEZ$Uc!?zqSHE`7NR#%)7nB$U^ zx?MOuKdskZnMa>18L+LPuV!&LA3#-TQ>2gU$}iJ7ymY7wOul8VLW-w#C?XG5r)S~~ z!zW5r(e4(T?N7|IS|#>A>k8Fxdt_-KLvO8~gA+@#Zkkm*eMN8f5+}Fp?iuxr&Il4n z|`%H=O>n@F@=Jz z%Q{_Ou*y z_XWyl*`K#0=?eH!ZV~#PL3>UfxIuI}q_l8*h=W}TwOmGIbKIf2h}E3|1YD+d#^lYB z_Igt;x0@AXhSERH_Qwt!7#+CtHnkkwNPB^_Kea&$_ij;gb`x_%&yiL1_oVhJYDj3b zkwdud+|nfXqDFXDJWf27NP>DHopuSawgxy_SI_vGO!Sf_%D$&#e|&!PykXx6Wqi}l ziR6I2lO}+9h%1qNKioYFK&bF4>(Q5Xb@)A}A5@{U$I6@!wj{c!!JZ4y@;;8_MJ{1gX&&*J`t?LVo7A*T67IG>2)p1A{Z&dRu7txXA63)Xj!kj^g&T3k^LLqI2^Yv1D4^Y)@*X;sU8=67E~$DOPycbW-KRPx2~^Uc z)nkI}RQgEOweET+G|(gf$E%b^r*_q}@+}M&ca+aN3>(~RE`6C;54*R4Kkgq6uYJi= zSzxpmr}MT9xYjM?tzLxV)h>AlfaFpX8OdO~?mmJlogcRk3MZr}FMtyNR}+7yrsL`M(H4e})!tzmoIXrmZN9Rd-lkn~Rr( zN>o_QB-^*Lt~h@gp^~237Qg(bC!tU`^O9cr&bk8bS%6M5veqCiKZ$)4d8i(c#2yeI zU}qxA{Tod_mcsN+7`En>eS68-WfvTobsSN8O*9250~iUaW@vtK7P_Pa* z9r<^C;0Ay*FBt3rE_+D{bwAZGt$V*g_`Pq(%xG7OzmO+Ot%@=R!$l?^p zACLCqqo#-(fo!y2NPgXV0xM@xSZwvi?!_aFW&N1h$pp77-DZpK3pugt50C(WDh~hu zmX0V#!o3nuB3a&l({;x9Ph}umE9O$4#OJGR+hDK_mY!w*0;aJ2yAP4qo%JGk#PHsW zoD=DZQ3k`a%BRyx1cChISF~76^rqqA10;3*i)d_PT?^Q)iv37bY^S(FeJTw4kjP3m=aAL;5yd2O`N>B{4MH8qW zQVCtJtUU|xvPjpg{+X9lEyTztUzt_*`kAIb&sK3GAvpdq9i_P+vHaNX+GXWUUFer8 zmA`w6#J2IzCtPg#29N}9a^5rjcEFnyF3>3Fv!`)0gNtFn*{k|{=jcy`vJUoi4W@+LHn?S7fh(Ls{tDV-bunKm2PPd%t?_#4 z!$PW{Uj%-f{0-f8JYf&K5CUg#?OYGzR)n3E+it6gTVza0e}P&M?$;zLC#>S(+;PuM z?`0o%>}S{bHrJn~Q@4Fvla)(VCU@?Od*b9ny;tL!xbB1A*}!7*@jZ5J zj>jnMK7;{!DJwR7o98%SAmWazU>;wU>6KM<(*ze8wr4B!Gk^G}F3|DBe+2C7jhD~( zC(qlyssrBuKvstMv++wr9VA;?DE!4NH>}fEh#l~&+$I6?ilC+Y8Sy#nMrZxRzk)}F zVwMbHe+2J zu;Np?`tYKw$4j@Oxhpw`@;0~cr*{W*#TI>8CD23uSiv|n_%e61q$_!yA}aRt-Pa&{ z%%T$uYT&ddA?^1QYp2hXSU?Q2W(K*4wGV0D1^A;19V+(`<}urbHrf6?h~cu>o_~K@ z>=yjYx{Oa7%T%bR56O^)sIHL}OL0`Z;Nbuzv)2b?ju$m7AIb5iT$6Q-_3TQ4HW;IH z5(n#(iyajCic+h#d7L3h5aX}y5enbnF$Qlby?#=n+5Y*#G^tM~?>{lE2#q&`Udo+-IB}V()mxz+r2uBcGPis*ioWb+7z)~kNIj_*ZUCQp zJ741jN3zeWQ(GQ8=s&42f#{RhbFuZc-k<@as$h0lOW%PVa z`h42W8RJV&A=z4qSr`>nc-@SSj_PLs-eicxkp`V%bU{Bzsi9@RgNT>KUVr@OU8p-( z_#pf4{dm(>bG9UqrPL1=4dQ&afd_!2);8`9R$zxx$Yq#2AeEoTX!c$_PEZf00qyFr zozp1G=KAB(_^1(p7I5Abik+U-n%O6-Uuv1;!>g`9E-$|C^yik^xxSyA!Taoe1uVXD zupuJMtsI9ma`{7y{_8;V z%WjRQ7P(@@mav8)vj3+Y@1LL=<-VVBA-DT%q}H&wMnH}a2o0N(3GuFHtUV8oon;g; zv6|lbv)Cw?&-)VXRg~|PJmpj$!l%WNhYIo7mn7728}E;az~XOF7?FJ?)W-e6xD_xC zAH72Ln{vs&&yL&M*#q{w{DoOiZ07I!7|yY1TB?4;`zBy$C*4c4 zodv387MQt4^vTrY$~%=K?K-9-J+J?g^k@OBH{bH$^cx^XB&LzT(berBQf8%6QV6+} z5nC(oOV`&rnMKfosWM#AG#kwqc#l}iV#*J z&$TaMOdl{Gz+Ow6!BCmCG)vYbfEm!wR(n=3U{s|6jYk^97vMk2l4A&OtV&M{WNw`x zf1iBIy2>j3C=7v5%}^6m->bhp-*gSnB{!~UruQqLXtqj(n+W^uA})jFgZH7}>(0K< z%&)mqEszUdBb@s8dr~HdjKzcb0eVe(NSou~Z(PY{7u(sSGvEh=Rq53BZ)qHV&NUM_ z=;k`f$<%XcavnWExyI@EYFx`sf&-Qo^!kCs|7H`wBD$hHQl0kddnHB`wR=)Yva4&h z$u!9UT=0Y7b3RfiSH9#E5$~D42%%257DQI1|yfateS6I288z zNr{3b+T+``e`M-AA{iU*O4-*_Edjah7J$}OR@0l9_PW!E0MJPW;O4cq5M9&MPTNFo zyUW;vh4nKTRa9VO6d$z;hlBn$a&?(ZH`lf7yo@J{9sXDvYxRwVU_=?tx|?n+#@gVI z={H*a(X&1x-|j2*_l1WbuArhyUkkqQ(1CMTkyQy?6hY==V%R;j-@baCjfjV-#=Eip zXIoG2UCq`(I*<;n`C2oye_Qs*J1E_Nd>md6MqFD(Z1EPpB7%h@i57z8)p(jtcto_=*n zrI+=V=2|-orgO59H!4{lk|1h(Z8n7GEBYE7*d(!{ z6-2qKH)foD1uJ#9}zr1JXQ`i@K zkF3i7F>%lTXL`l`(!%+NU#s);H9zi`*)2E!{L8f^Jx4R}sT0nEF>?zY1+3*7WVSCj zG69TD3|}{ifkozmG@~!m^=>^nmzPf`>=7qlVoM5?C`Y*JJ{+~n(ZuP%W~7_P&=^>z~wi_I|am4%I`1z zA_KR_wyIo3hc=r-?^(U>sM!#Q_DFE;CjCW$^J<;3C_lJQu}SuA|04?}+b{FciNml& z^58V-v-%zky-x^^JW!{D(iVS4GWqZ>ra$!OAWui~52W79(K}b8VYvTYTt9&u`Y8+h zKjejBPQwr$|F~KLUYjk!{pOD(AoPDGP1NW@a0&hykKdEYitTiO6{H0=+_1-H_g#QBXore6pz5t0f z=z3PdAV7oQ?X(pZL`Ajr#U!uIgf5-H^pxLa2P6fO{laV$@rQ}5ke$Do^=hBKkN97& zFY((rP*O6l_7ES5w+JSX{i+5a+cTXhWua5J zP2KOVYZr&VqI} z<|o6n*9bKq?^Y0w@YOtQ@p7h#p+UT%GETP^3B9>j0hfM#dv0pPkUpf}2jI@4nPI@YXb<$Dsr?pt|xCi`vxfcO|Hn{IJor?Jl&$e*wAj_FScEUP>n zxwTitE;PS>bi%9r56Sf;wb z`*lm(63o@`VRYVBqT0Qtx01xL`m12H#dl+R^_elWI!Ee?L37Eji;rWygEf?h1RYdU4oi4sENzFpiL)rnj^?Zx>lldDuvD zgXB%-CLd~ba*qx7fs+-f3+`KOYHCpGtXF&bPe|I!tCejk4aUnH%YBniSJF0mQ~;vbiIEA$w|)Q z>H_Q*i^m@KDRHHsq|`B70P%axqxQ0eOn%841xu85a8doXGv-kkYA81(r-JL~v__}2 zH=+5NJ|UmTAucO?woKZ5;@-%Bm1IG^yK8?z zIwY>8W~Y{wnqSyr_JNbAZy~@*9;0F-Us7c!qODR&Fs`ZR)pPI{JH)-FKN#= zE$zDwc0g*kXXFHodyf;?s@U}4JWP6V^|*NYpzKPLQ34QcQrFpp^bcSainlC9vmRcW;Q~@>y7n zkSi)2jq8d>Fau!3a=(?1f(3ozbIZ$q2x|Lk~_ zBy9FVsR>kbBRYt$3~h_}swl*6L$e=%cEfI87EBA@P+TCCp5eWI(k^}eS3pDDRsj{d z{*2DD4(|=MQStBp{`Wehrwh!1^M67688Y?+AyS8viJ+ zVi`r)o9?L*wCZ0=4&%{pi~Hav&p-XtcCP>aAG6=^9rx#xSNtdYf<`0<&3eXdDD~A{ z`S?UH^Az^?3S@X=KYpM2;h{hp* z9>CUUKk&c{ePO{(&~DGd3%ghrUCEqp1{^E_ys|NYOUNtboh2ap6@TiIJjMQhHPgT= zp{Qd($rkZlmBrbsZ#C*wRVqsoIv0^yc@KI-R#%~?0wL`G8+DiWVgb?q9b&#)ui}Yx z2FjU_IbJl0gNQKLx-31O*SmK4)XNQKLH`N8$#*tj%kf0TR~R@}yN~qSy*TRH|Dqmg zzc)kIjK#4}zy1R5Z~NEd%kviyOul<|e}exWopAK;#4WdJ-7=P!E)Rwr|BMA^`EY*1 zDNBq|{DWM2wT zBZ%$(w0t9YeChUe=L+~Fd>(QcC_XT+O}@}Rpk?_16EZ7(@BY6KxU&K%q@RHP?Gya! zN3cKO0D-3dg=0wkvj8oXv*^K>@NzL3|G}ZEGBD)8ym(5xf9=b;DMbSlFQ(DHSxdWF z%uH9suKQ`m3~QpuM*K7Rhlq%DU|02a|JDa|Z>9I&WG5Zmn6XPA9`}_wr01DDvPOSx zLEf`xO=^CWx&J?^OVP6(zWzVJM^ohg=kFtp=KsDWw4f0fGORO6N#ss<2D1OZJ`qT@ z#;j{`;ZZS$Q2W5!7M{1ddgA1(zZaPL7SZ~9>t+6eem1YIcwqmpe_WP5C%&R=Y#B|^ zq&UaiN&o*Fj|YMNQe^*+FUFvb^GU%2`wxBH|5-NJd(&>;e5mCh_n%M2WM^5S{1acp zY~K&|;DDrP1+xSZmu;LF6Ucu7M_Ct06L$zA%>%^!!W3YNl?D{i?L&i9 zN&Q;wC{LXKfwii_l4;`2E_5F-7@rI3feLP+hu_gXB=dt9)Uu^$&(x6XF|2=ppBZH>`}*z4YCn+2z>cclMd z$NPR3b8n(rF|Jg&ze()74``wN^zJkZX8MKK$wPcwZq47{21o(T(FB11{;55!Yai>s zk1#*QrQ5?l@E<@W^gr#tIP@i1Wap0=`2HSzUau{qQ1(zvJ*8m(`ryVJbID#DHp0~= z)QfFNw!fFHfOCz=Vj&XwwY6+$pIxHehQ(Te0wYrWVk8FQ?h3K6OMp-2$_k}04l6_a z`>4+N0%7)CdB1SaGEqf0l9beAIX)ci*H8y0O*8Q!+XPl;QhubM(!yPh^~VRB z!jn9e3+eKj{0mkPWP5X=%@xX4Qs9>-w)X|U+2Rr9j>&3@)K^t7p@8||o3^pti$ ztxJq{1mqfEYEL_8%0RL$sU-0GTD7&`Ikhuen>WI0HQv|cPT!12yTyeCsa}3{ES8*Q zesKD%rYeMQ1!ny`S9s3pTy@*UIVDiCjxJ`Qb?O~>}k1@1NJTU!nJ)FF291_j**W-rhz$GOyen z>W{}S5^?19t%q*)0?Z?9r+pIbQCO?ep~5Pstp9=0aFSo}%z$^vRCZA+D^vMaplCQN zg)G69otCutN2%?y@$Z-81A?6(H*pG@F9Re_(nae2;_*|*+| z)a783iAKjE)Avb=+5xZ(JsS%9lN*_!5 z5^^U#33=JgCTcp6xMjS4^qYE;ZgayYzKD9g=mc7e6C{Tl3rp9zHLw0XPc1pdfiLRwjfL5Y!By-*xHs;Efr~ zv=cylOwdna6Aan9y$I&JhlbV9*=t_EjZi1A6TX?2crp(>tY@*%RBpnDpGM<1$T zrDG54)TeBDfDaQuqYu3dLuE3RfFs>Siaj7hN#ur^D6<3g$wwHMQ|z3cab) zF&aNB*0%6#q%|D;p^fKOx`@{9q>qY}CiQVG&oIROcA1g@l}3J3o9VzP8W1x@vLHk| zi%#Y}KVXTQhFTlkSbjyhV=ayR7wT zCc5uq?hkXW`I7~8`pWwpR;XRP55eMMldk9D<1;gb`6?#eA@{kSJHWW^8SP9d0yY5f zg*O+TKB8qweiAdZ;kR-CZ?9WX%GiP>diXLZ0Tr>pPhE|}IvX_PbzCATSjtA@dc%rw}rTdUSI%%2w zdjQ3RWBZ9`t2^Jk25Bnkr%YOrM)mkW>*MSF@5Bl8Rv9(HgIYKl_+x&RML=j|$Cu2M2(GPiSp^KQ`ClI)dPpN}X3)4enRwM`gv)Udi|fgi)AoRXDE9x@;T`(CDa=OWKH#Ruo4 z!m9rYQv6(ls31?PZtD1JX)w zdVBU1P9{0cZk@|etJbd>rr)CqiaI) z7>^l9hn;O22?sSY(!Y=U){2CasVB%zf;5q8V}st>nfL45w}vdP0J*+Bh|f3GLqtb94lSXh`m#Esg%E~xbJ!- zP|xzHB(khM;0TP>&yw`L#rekX)cg5;39wp=9}!FQ*iqLOO=3oh2W6^&$}Pl-hR>KV z)fjFYv&NBKic3}R;f((Am9;E>Ymur$O(tMKe|WbRe~09Dy!_JF%{(c{bQt!lw^BoT zL+Hc0viI2FQGptFW&gBX{>OB=1F_+%|5xwCb6f;2{{hfROLoDFz3H-GL~oZ3_W#=d z{tEAutobPnaa5hGQx%o-JA4Pl+J2kf7Y5nofR7jZ#KD82Xki9J^QakXeg}zO z1i<$#Ym=jLcP9<1Egk)JQb{a6pPomN({TRfW^eAA0725gw89s^42%zX{1l*mm=DIA zwQmLGZ*~kqCgx|_jdYjF_qmr^rqIWhEimmaRm&kD>5`pwIQV(7 z?5b8ua8N}s!7HDbWL`r9_oTj{j{YlR%10Z#w07d9+&&IaCf>1`V;|2`OglS_U2eVJ zsEc1C9-S2WV`;J$Y${BL-Lr~U#i9?;3=xu@fNqop#VKFFsDhqtenCVEA*jJ#pN>Y3 zH|GpiXFN7dR!76c6Z725bwj0v}7@ z2ghlwG*9>N)72LL^X2j$4>5UH$EDP~oUp*0wjRfByDAaKsH?%1VxYi-Z<=W;H)piB zbF+ld@R>|aXIkaa9QwPK92PKAH^T73IJXlIB9x!6iHR8_#B<>I_@q1P;jYf#=V8u`))%US!XXAG)OeA!j=i}aKcq21yOOG$a<}=)1nS1 zZ8+lZm-svV8F(MpC`=}+F>7gz5P~e*r<4#XY90|2uAmI9$f(Fv=w8ZQoDo~XDeZFf zZNGj$O0a2mlgXB$SZPGTzo2Lhf{LiuI8i(YSaqbi1?I>391Z>cu@}vvpobtwU)d8o zKl&HFt6OpAU z!MIb!!`TcEOaZG8ea3P^g6>JhI1~yy$%2G98Ndl#GqU9H^5Kl{<`+*fc8oR-)DD7l zB|rcK7sRaVi(@2|9zmhncWHKzVtjGa+p2k`E$=&MYjUO3t(iujBr>V}_P(i=3&KhD_SYeC0*r$d zI@RJp`_V=@QKi&WAp_CVWAl^-e6s`lOfKO&z;FnJHb@()e;|M6 z9khWE*(a{U7fJhtg?T@~Qy|FBJ+Rt!bxcS;S^9J8cj`g> zvdJeE>%LDC&*6-yE}HL~(%*Dvp*X$!x$V7^v_&4S@$tW3u^|I&zm*L$R#T;GJlRev zRosmu`a-jK*PK)Y|0CIR`JVLdifeHa#}A3C+d)JZ3SV3^y?D1G&yU>#u0+xlbJwNj zK<8((Gkm%pS9Bo!;aw=?09}adGgrw~6^tuHe~)uR(sJRWn zp^*0Fnh})^`_2f>)~?nU|MMQ?)Q@^`4L#JQ~&Za2TI z&!6|(m1h=LuIzykOZs73lWC`BvBzV~T0p5Wpgf-#Sa}XzBVbZX>s)kSo#IASR$yHl zF0=A+9Gj<6Zz+J~Fk`nA)k}&^qP{9?T1|}t+1iNsk*~ghNWzB@tG`7XK28MO)O`_9 zYx>a$cm|{8<|t_{%|RGnqC-4lB^OWCZ+M#Q;amYFfwtUc7`ZoVGEinseY@6{e%e_D z99bI^Oq*MAtN^iRMH$-TCyt_JLIpN%OlhPte(3>AtR0lR$Kj_fKkgTZ_#je<oZ zeYr>_N@F4Sm+x5j^ZQ38Qam!w{S*+1}X#hS^&ru-7xWZAG>jO?G zm_bZvC{RmFgp2S^3>Orz zq(9DlR_ka>a^)8{P~>+oJVYn(A|EP~KGxfCU)zjz0wfBu>u*yy9=uhBYi8t3h1Cpu zosaR|E@6+|g|S$2Lf{_Md=?b3rN4YU?ZEaNNH46v(tD3Y|AZN<7xys^AOSGHt@Md} z!exa_&s=8bZrJyTB1KY2Mc%>Xh6NrDd*t(I{0&m2b{XJuQVb$8IsTJOf+V3}A=|MR zs*Saj$pRmZX~+zP$>*TVL#DfZQ;4lSwlrR4FWxUQWqN+B+X#z;zJez1xT@J_ma3ug znmR7z>g%KWYRmlL&u$!#?sMUsD--`SY($hXPn5iw^%zBjyO*!iA2U0oh~Wy`G%j^D zocyKKR#!1v#m}eW#t=ID;BpCj+eSC*-q6yvv7SXs7pnSJ?VIKn1czpt2lbeF_vSu+%GpjYvHw1DJ)DL}g<=z`wCqZJ?Wk8qye}p!r>O7L zuw_V?T<_#gSD`zp4QbLt+EN~vZz^N&f3=ev0ErT{$RP2^L9biy033Sod$JKoPdfPE z7CyxDv$ur%R){YIJ)H#&M!P^>q-RSDOIKy9FE~3JXj(2enC2GNy=qGOv!&lV&Pk3Q zRor2B3KDa@RQ)s&cVl9N%_QZ)xT)N`Ye|zoN3<}`aC#bT4tY1o6{FqQ5sJkG6Vj$# z?9S62oN!Z#0{E70H`S+5wbLmOjTsTpLNB6O-Ma9$$(EsP4m%M{yMT@W`mgpK_K-v;`YfK&S&n!2wqW#rV8EnvOL z<>mnDeec+_P6?pNJ0_79<^Arr0GJ9HE(L&54MqLVvrj}?`iF;|%LegfONe(1o3r?N zA-~ItAQm&yHT)#O!;PX3tW_D%7;?5~?uMy%l+*q3y|~SMe&&D5R!|Fk6nQuX?_@P& zc3&sn>_{zKodDw^9cq2V3L&G<4WxSCYCm8TuMAl$Kd8^v=uJ256avK-6_;SeaCQ^6 zi}O%^7l8VBfpD3;LMo~JIHC5h6gw@q+tk`NxkYLHmK|g%B_hx0(#hx#(44a&b)kL1 zF<)V5;O8*{h-N+R0?j)TG$hDw&d6`@O*o#{Q$Z4@zmQ*}&8zgx#w#a{F=TXwbg)V5 zr0;tTD_I{diAi5)I7En@Bm;vU7e0V4l1g9c73!d?brSY?64qS ze8Yp%vZhR@TZ4{m?o0?5R-*@MSVi})S*}{1OzQyeKrM@hOsLwob#r$;u`&JYNbv1a z-*Wq6iMjdUDdR|63(t>oH_}aCO@>Z^`_5JG8H+&ZtFgRazR4&eZ2+04X1ViXAsFJK zo9h@A@qHlkG2LmXwzq4kh82Y84iY@fD|5?5%0y!3W-LNowpA^wYw}HI;~i7s4Ne?= zv6d$~;F|hc>Jx=sjZ7U7t<uG8DKp3M?k9YMfE{1Oz z9bS92c}`zAcy&=Ig$_H-Q?hDZClwoS22xz?-)@p@duzC7FMz&k$OKD!xqP6E?Q!KL z>r!ikty=00f%GROGr#O-EWr;$-#V=b+vVMfEdf%bf^3P|q@nO-bsc_$pXkTCo?`=< zT+S0JC)zTim^STChVqviUd`K|NaA7+h*r%pb7V?domDIO0f7f@j7UL(*JnVs1Z}Sq zK3G+Ta*x8?qIUu;J%8<4+|%?HtrVe_)Q})AxhcFHKtZJB#b|=ei{AV)Xxpp(dTcfp zv=s8CvlD-7!`NCwUi=vboccpa^Mxa6KMy_-gW4q{xqSF(HNvA0i0)buae5Va4%TMl zc6NR~*mxkgN$$y`dk=MUn7|`-JS?hbLaYR?@OPhX>!&F20x_$1nMr-JbbG^Am4NvP zRN|jZz@qBYX8GU(DCI~j4o&w!Z|WenDWN;B4LMI*u)Z}h`I6FMZ*dl2IC^<-^UEK} z>Ge4)&~(IaVG0SK;j&7np=AiZ(Jk(eS^p(0Gm;ZEEIs_=oroDe%@9QN?L0`IllT7rFv$Te)< z=DfT)4mt0I4!@NR*YFr=`Vprp#NMD(3Y+;5ifVhu1|Ya(7d5Md7b6Q?Q zP$MN@w(hphDb^yN!4J`D(0jR0>YGA zjo*EjNfLZ{oJU?6TZxVBEb2O}j~eQ$#$!qcTxKUA{V%c8LnCk=>-Qnj1?i~ghCo9@ zQh7!OL3d;HH8@@zn}ihGJf4%P$Hl#aRvp%_~9z` zxcuN&sQ2&{z5qKw#J?mG9x`PM+>|UIW~+&Sd57&g*21<1kS)*KzgxvPw!>WNJZ~#h z_~Z`>x~=2Ius#>j25C`bqUSoiqncL>lyP&qCq{;|=72##z+~pT;l1#+iGBE83DYdv zGHIboiLVN0G=pGuPJU$tcWY92X4CUZnfR(So#flJ7v!H!*)3-Y-plub165^^{5+!l z=HeB-BMxM)K97~YiH5*8M2AFsCJJ27qpPp$ko=)UGSylAt{KxX(^h}l{>vJN3pcG( ztWXhaz65ec=X_*k0#iZ)AEfj?qQj|}0vff-554~$CM|NmtZzr>i?N@1v?#;C4%*$l zR4;}x*-{ge{1_?Wy*{SdsIE`aZ|%jPlZ8}soeR}>-Y@lwuLP=ko;|{6i)C0cwZfyM z2F6~wH&$_Q@p-taerhtj<3GiXT>KMm^=YgeCcq0OA31|{OLwv7GCX3-@Z$B&nz-zY z#Ng&_%eQ+wwQt(v*yGdbFsW86$_anB`e76!EOf%XWXolmyY^y+^xo=w5l*kRo7smD zE8b|Gt!|upw$EV?fPQSbn=AWhQxee-44QS%o|Tr*2>yd)Y^_=&lBDKm7hZg1=vMnt zZyUFk(bK8)T%pQy)eT~DDKgal&FeGb^rfFXYA8Mt+Vp9>QvWw4C><3@*IOcew_)(3 zjA*NSMxEzux#}H(86K=zpqA|znc0ded$41);%sJ;-i@W!e)*>7r?NUoV~@q}5n7ka zw=xHuO#w{^^-W2ASPfopbHgWin%3;(MpVp3(i;80A1|v?W(sD zv;qnSJ2Sp{c`qSRlk^M~G#si*8yI->K+yBPWms*cj~3YRHu=01XtZlE051Lj0EOrm zii;D<{q#nsG05^-3dMR+FH0v$U9+%C=PS*& zFQuQ@Y8yzul5jJT3*MwzHBegn_(sfHO97NB#J=;--+a@suAhNCdGIbe5RRTcy}n`3 zxkZiIgsC5pD2D;QSU#m%HlxM&yp0dE0u0X`$$h$I0M z&F)Nyn~cpIEZyDZys}v#k6*FIGw5id0FUtQ=tc;;0kyW~(i~T3NjQLKAG`AHhH!`- zxKO#awnx8l|Ht-}zN%}1jgfAHuJDgl5ucIVyRf>SSObyV+YI*GjsvoipM0(9_h!xQ z-({V_)x-`J6LQpqx9H=g2Bq!jrBYHtkT68*4mFOn*&QMdrGtlQ_)6%p>3End!*yoR z**=Nh(`>cii@{aPFCxdgZoCrF7^(UF==~@IB#=P^3 zdio`RMyrY!pq80sm$7^v>_zk@2Bk#FyEogvnCb++{@UZDo3B?zZ$C8ZM17ijNk8vR#V_4=XcnH=89B! zF@mgB$NB0{!O;Zc6frLIdjefPquct-yn10sm$u2vGt0U&X3U(5d% z&|8L}Sz|Kch)P$py@q>oL9s5?ZKg~-z8h&4E&3j3GEuBNmJi$rdit2)QoH8q*Sd$h zS*gV4r|iFMS8hf%&&(%U1F_dvU76uK)HcYI4})sUQ`ZN}k8_gdt4@tr_JU*YAvsuT z`lji@WJ z1>t2bsfgb*ab)3mn>R||a5vBDj@6N`6eF*JS2y$8qA&>cOdXWZ)t_7MF`4r!kr4V5 z%OK^(H1W=sl20OHrlSdq8W*vV1omge_lqy3JeB|@a6#&Vq&yjUlALG=0&~RLWm~k! zs56prV8E{alWDQ^6&r35Bp}C)^?f(RI4z1D{nuseVtysm18*>8#`g7UDy<9)o-a?` z#IVu#aq?|09%J4c1m(mi5X(_0u~+8bh){6NY)?}EJhQuH&iWKK0seW}K215Nug%ET zs7@$|XHxZX?c#Rf_kd8z?w98c)>#)uau+;SuZJvOen^96c+(Nq4>!*g`mbFsCzbdl zje`Yyl|Lkvl8SgTc5ISP>R&3>s5v!02lHO%zB02x zEL|ilirxKzi$J@#)wjR{;DPLNpp8p^N-p7UOBI_5KFknis-_Gl8;}sX{7)AE*NWik zQOE;XI2SQSoS;etZL9fvTZ?5b?WRC5Et2yc7n#jDwYtoE$R=E_(G84?o*O^<+egrB zNizE(XS0OY-m)05?ag{5!LF*xCO8y8&86zJ`1Ol{&ao?|k1Rw|R_mY*)PLZLS2H)c z^|q-Vvol|K9%kL2S_ z=O-3sUKS3y?i91lp}YCPFQD|24NyrNe;b*jo4MvJd+w^YAQaexcljqXDDT zL_6|;SPTL0Ju!Cm(AyWp&oR9at08Fd!NnjEGSy4HamTOC+{naKU-(fynvJ7R_8=nx zB0fg`yRjP8{ju+##6FPrwU=9)`81h>?b5#toyn=#bQpwfzy!M;(!!tZEK_`9F<)L? zz6pUfwm+tE|NS3dY$oHs#K01~T_C0(E*}$F8E zeX$S8u8Z~7VJh!34yjy10~S(bb8x2-avcBopl}!Y4g))f4_d~d>&&}X5hq^EBe&Oh^Ll_hHq6xgAxf6eoVL8KlU%#RJM8@5Z^aNkpLaN9}5)^kg@QbgU9j2 z#ROkc{8IJ(u?VBLF4G{azDK_^$&N{L&*Y_(bPv|-fWm1eSOz0F*_{qe93UXTw%>}!1%0t%Ten_&QYYy~eVN37B<}dIopc=g#D#Mrk>3UHCe<5#F5oy8oLw9v?qd^(IwO;e~hj9JW>L!qx6J1vyHiQny)#D zEeS62?0VH#GYj-54MN$VNV)WXe#6H4Tsw*My@_S$E{b{1-g-X$Gy8fM!R#CqmB3F) z0bKZdc@rI5xHKn&D;7ir(X}zchRzskR480D8gDC^^ZTXmGl0EbHRIqUK|J&rSvUHB z**XBN_pdOcIp;wT!07kQ3Crz!e{j~U+fqH%UokZTl@%<+I@fk=PF{`D1GX|w6zEz_ zW3|jq#==hMN^oFobM~eME!rV=U|xoX``PuSjI!VL_na{sAZ>@`iW5FZSa>MMEHh{a zeehMjeWFx&9QQO6rTwd1rX`{2<)TD0jmc6Zgafq(9gb`DSvGq=9|kOxq(m)MG<64O znRQLln@U;Qew^f%G-~^+O_j;R!LLKW55{)dFO4XbWSy8$cOH9o5q{j`Jtcq3k8JYp zb9RTZ+&^ezJfr|kQb@eUW<05ZRO!gj>P|qrBAigxxt4R z+Do`)<~lgmf6jmt0*yzTG3rBJ_2;MnLCv=z-7?&4Rt=MTN2!q8wo!MF9zov7?1=|6 zr@I$bW1w$GX69{(-;u~$NsaXGsp?e{5$<+f z*rap1%R?XN&&9n_TDi4#E?N3D#;(E3c-BGq{m#uu-7bvQFvbvTjGnpP4$8sX%nW~qo>Rfh__smbiSFUTkWe1}usNNkmc` z?=;8STuc(Rf~R6H84H%Z?p-8vjy2K^ROmemt_fX{%13(Ga(tpGGZ+b7r>qa`xYzw; zsKM+1B~PX1i}YO4>H!4Ywjg{^XVFi|hHTkq9&tD`M<|o9GtSt|L`s%Cn1aZrr}W<7 zTF2l3_f2W;IV{JzBoSNBao<6OCt1l~wqJeZo7rZxClw-xZ{3IB8YNhsVK;?EfJE1e zRaiF>a+c;IS;(7YH@Z$1ay+6G0SA%NOc;O?5>g;D{jRl$;$_l6oP&Jm)sO774Eb)p z0aN z@!|uC3ZIP>q~Mu1zd5n(+!5QxbeS64cL$R`U8E1yYt`K#acsn! zXG9&e;nO@WVuLOE!H=y*hh5Tv59`{Hgx!5A$Hl?nw{U=&cdg~&Ii;nxfW0?^w+<{b z8V!jZ+{Q%!0QO0Qs~tS{$eU(-(GR?u9L%~k0Kk6abY&e7ga-`xAn;=zOMQ$^lIl{iHBnW+-9l$G z01+5NtPsFwAUdJoY~8JO!+R*-UpLuyb#%ly(@ty7oGv1XPO~axZzdBM|NCCxlc3A^ zK7|fzNTL#)cm-QEWrpsF%=dq;88Iu9_jOg?Tp<;zwEbA`qxVCb!>7OSJd*p9(TG8! z6V)PIUw$F}Pl<-w!KZGVl)oZS3*|6IN=-X@gPxap&S%33^wm3W-C}Jwu>)RtqBfWE zh!#*nw5MAf#+~N0V~@0|WI9mO=|e4_ret&Z)!yYVU9#dr1n7;S%Gv5lc4UQkYCL=+ zEPht25#)AXaJ)Um110QU#vXLG zUS`b~qFkEqIw^{FqUokPTKgVDjzhg-p_)hsqM<9clJ%=~IKS;k7j6rqHGuxG) z%t=Qg-Fe0wS?L;o4wSL(&rKh=v~nGne47i*qcviloeeV0Ck&GHx|R+6g^lk?ME1$! zS9|unaf9@pAh(W_FZ#pLD}@vX6XS_SHTT1+hvp~~85JMWU4^U#3Y03^ZR=CAh);7$ z?M6&>Lf7pcRp_9_^v``nr$a9LO$YEBH z3b|fXMOye3A3fbd-9EydP#-*Gw4)`>A=^{Zj79PUo=*wBl>~9mY1KZw&Q^Q^*&}MT zVZn7v%BEA-I1oO^{2FA%oL$_kc!zhc&iVwL3`>841t{0Vx$a2Cro#?lAXQpfvV)4e zoc^><+}bTQ30H1$#|w5K1!Z#Izq>~5YIjPYo)M|N05gR25TMH{Bwr*5mGyqb!0(lF z6YnST?rI7TgToEZ$_)%eM50B4z#br8UhW@$4#DY${e${}aW+N@2}s*F-mUe1P)5kX zyamu&sV$0LvC=!9Za+BepETS1w0-oB*+*?a4Rhp3!78`vnU$ON>~6HDQy^X#4LzoC z`+Sc@7G*Lwx~`H%eBCi961y#Uu>jA*`*yGW=>&R1;NhPB_C5-r0H)9kcUq|f5I%up@$}+86_jZEuxQ0M&7;!?UNOSe9>Qy(qEy! zCYOtRs;Rao*?wM=on4q~REKnxGeAGSznTMt`27lwO54NjpU6*q2ecIrNi`j}fYhVH z+o{%O7WL9xE&bQ5)$hw`(UI)kMF<9d8r%pW>_qTc4_DhT8a6YpBo*KJs5PCt{C=$e zTnt$x*%H(7U&&reMPFlLx8d}_gz4K5m$s*GYR=-5hkD64j>lPM3|;{+8ixb71oM#K z5lgC8eS?C%okiM$rD;x|I?i{mMna(LS|!dBS)MSnKsic^k=7I!So}3q@1v-NF9UTI zJ}!gY6BQztGE{;g4x*Zr2JXt87wI)%nNJh<64foL97a&xp6}PhP?>s;?o`k5(R9Zi z;xDN&B|8B{Ldv#Xj-T`9z6tU}&EnEeRkz*L^c&Tpe1fCCZv!s6n>c6Ej&-Xrpd!*L z*pWpz@O`$x2%aG|HnK}=SP0hAS{|Bc-jLLGJ7Jd`W1G%bR`AdCF1r&pZg}kc6PPhDrszkVvczZ_O7?1YYPi)u>24KD(}6g6LbQ94q!VuoVUc(n`6>_v9T^Xv)(M9r0>R;vE7hZ46ot@nD)9qs@gG=q=9tmf2 z2E1lQb@)apKcXgZTb4$N3&dX^^TKLy^9HUm28Fc^nsXYJ)B*LTZ9TPBn7*@As zai5jgsyU3sX3N&ynIK$XsBs?I_R*u$QFP?%@yyvrEV2*udpDeJ`Q33WMtU=i9znO$P_E!w{6u(EAQLtw;{UU5b&5EIEZKME)(@AytsKE#7iPdZusM5Mp$; zG}()?Z-mH22#`!&!Fy2X)eHBAN2K3S(xhnrdd4Re84!utTWLJCi1yo{0Rln^9ot*` zgEM3Nysx5Jc{bgAo7yGC}^9C|)h51Zk>%bH4Y+!fw@mcA=5q8pNI8ducGR9GDrR@qm<1$HRTS zMmB&SbnyZPY{tC#c}zSvoj^Ua^Q=YL*&p+<_p3s?fDV!U9^=3iD=T+M*dF14=o@yz zzdyAjIS`G}n#-%P6Oy5rqz$3uQ>+pwNt!x3S+L$?nzK%|A;*LXBIF35CSG6$f7~VA z=Sm`W=yU!7wi!*k1UwG6gr-pE+9gt0&Ettu-IyQZPX$@rXt-OYKUpjD)d-}cxN;<* z&bvg~-Y!4^C^tfzc(g%G5q`p%)`$G)VYoq;p=MsMlc^glOa8k@HGYhM^)LfYwoxm1 z4=_w-)dd?e4AA;xbG-i@qb?l#sZ+o%ngXbey`(95`r+&8kFbYLOz3pW|M`o2YsH07ghYeY^U!NxZA$;`HdnrfrTc9E0-(kMz@fe~+(x}M}l=};0b6}OXDA9yb z@i7Fs5V-y7F)L8Gohurb*jAs2!p-x-f2lXi zY}NdDDvzWHeN>Ny^e5Vn5z^$z=}}9j_RC3YREuEhU-Vm#wKDW~qhr?}S6$A9l4d#l zg_)EXy{0g5f1SF&&YH=0VE;!}3nB4Q24na$L*1kX)++-eBku>q;FvN$+Yq~$VH+zu zomW@ew*dYltfANFE4b*&g~yoKh;yv%PHx;s?xBZr=G*zrf~N>C$VRtU{q}@xW}F7n zc$SparQZ2vr{q+E<}tsWIbns~9y$s=JBi znaZBNithc(0oOsyW*4mmhtluw+NbOy;=M#EBpH?STMB!nI|Kmg zXzN>)Prbus0D4DiNv9HfG~)+qDllKfr_P%ibtUz^c@k1yTl3_yThfAfRuvIs86pQt zd8EWgZ~d64(e-$*>jf=|d=l7Q&OI_q$D=nn*Kc*JRp%>8gyZt>nA_@xtCRMW`_C*A zCtqVI;eOum0G$Ab`Xgg*y&YQ_oYbxgv*%SQxtc%@sl6bLgfvyiHF)U!Nk%cX{YHU z&Rk!%v5_u`95CA!!z*mD4)*~ta+9zA~uGcbSkee;f8A(S%ZWQGY0i9NmpJs;V-{5(>^@0h(cV+cz@z`-B&47TfO zTvp(F3KIPMs5S@)9n!i+1cda`VP;U|qVEgEyN0w=#K`SId?$%d$W>=gpB5Ap6^Q`~ z35f^_Z0iXu3G=E4?P;jVAiI^&0~X1+R?SfR=&^8~sc@8{8(&>d=Mch!eo^j*{y_3a zj>cbol`j{6+Q(`#TfMT_>EgJi=S@b6%IlJy*VP3wpNk5_ghIAOVB9MLiS!td{aGxxzpcU;Dvv7YplIRArA!v zcC<>8ej?EyA?)!b+y~Kjc z5q(;p_n~gk10p-2M{zWv2#XGhF`eW0Lp1CpJA37spBjTIAPx#FWM z^p*2I>B6nhsil>bx{;zxwgB!m2u*7=emCt&6?DZv5Q2Xn_8f-#!*_0}mr$E7hJriW zx%9>7;m`^sSa$hj1H7m+qURgcWnBsNr1SSwRsrGWNDvr;hSBy>m?5&Ngkn)FCetJ? zYEQ~wX%0tXLw*t#L9;q-77JBISIuTri~c`|XEflQoca6Pf}d(K09=wY_JQBMBZIC1 zQ+7m-9^}=-5zOS(N{jJoTp94@nI3iz^Z^dWh`~9MKpuLxH{?NX$cWJ&Qt+c za?Y8oSaO-DtyT$>U@MKxfhrW$?qpVq80|B83ZUnz6b)?VW}QIfn!y<~DC$oWLjWIa z8Uc{Mpyq=o{$4NX+TL-VbhR{hB%o5aOt!;hpvdLeZ`*isyVr<7+~<264E+z&;8*Wf z=5`hH0*-*=pn*m$3E|xDPAWke236P>*l=%}UmNgPFFEhtdlEIbSOlH}@*N}20VxmM zGZ>|XEw&&GhxG4cH=sGT+Ti0i>3#+aHV6E(YDU%UCmBogRJpAF7&tz*J+pJ?ct}S( zjSWZlga>%bOb84sOm7qU!wrFC-r;1;5MZ z!prZeSb86AW_FS0 zTIP0kPKBs&MLCHDmU>00{7EJ}Ku*K-dFBBH-`=Xk9e)@lgkSs)1$6@8%OLZ8GJ!Z* zIJ!&q#s=tO8TwnjG`#z_4`;fy%Xo~_-x=P3s8 zj;rQh{!|x5b13hq5E&_e=ge!-JrQx^swuHB)E!jl%*=PmLWSkDX{KKn(wx@TH^utP zls3&0aUbmBl0(CN$pc`JI1&q|aNnoaJ|ypX^B!xC^hB+fes6HHPd=%>106w zWRro^&6Q;a1TW=F2z6*=;8nLB2^Z$+Y9h(*+gt%B<%RZ+_+T4OtITc`>c>`X&rD6t3`sF7Sk9=KPJ)gLzK>snTxJk6RtjYwP?~yXU^m_ob|0ti5WI(c_ zLN!U-X-HH@f*ZBwR^tsb;*bvtaOo;{*I`t@)zu>-zQ2CB@m&B0Qv8N#>;Rr3LT0*r zy?pu85V4x_Pf$w3v+N4bc@3QM0#4JYXvIwvnF{cOYa`I_dth9ry z)pLjm^MTLjM4FgiAzRP!9v2Tdd>X5hYFr{~8TaV%=se|1Ud8qB-woabW!O2X4WTcA z4+1@~`;CgL2u3bfMsvv0Vo8StNiE?(?I_^PqdYy5$p{}A8TjxgJT7=90(x-=_H3oj!i* z+Ja*E@6ZsuTs(+N7CY^-UkqsOYQ}FQ6J;y zW74A0W?zK_xyPYAJs>dOg)|}UvJo=B)V^K8e*-9jKQ2o?2d~f0uO%CW8iDcX6C+Qj zsvC+ECPnxN>W%7#QRi_5t&+EGv9%`>nYY{;;9J?SdqO^Q|6C+h5NcPoVFQuApL1n< z2tEwjbnk)mE~Aci=!?<}?`F2v+1%4Hr*$feP+m#cV?k+usAMyC+0f<0aPHY><9o%v zZ+{ZIaN#gdow*e@Ytvi`U`%&A{c4F(^LP#}P&k57!mfvQ+Da1RvGqA95L!7}3BJtQ z6-JMgHB<;9<6xzncpSY80T-f05=}h+L<3ITvN1%jP3V(pf~MWri&s+p(8E1I2OiIC zmh-VnH0_nbgL>Fm_da?WPr07bC*jR}#f!4r9<4`!DbR#a zHC|VBKZITxO`z9J9=qI7JU0iyya1GeI^hR0YU@Qf;cYEBTyAhJ02fRJ_^=q+`ffh5 z>bSx>XQsTx@-Q^`-MCBUw$DD3Kp26gGhJyWlVa^60RC91)3}R#!+7=)c_Kr%b;vcj%sLu%9H_tKIZ!X{=}m;)xB0tBT~kRN;lI^d5EJIy|0HJPv)n ztdPV{56vQy$kU!$nNv_%&g(ey!y4R;8M)atiHK@#poS(bq0WDt)oYBIv73(g~#x!j4}G$yrN0#S*8Qu8rR)v=o2) zP=N&KgMd#Nour9TbFOGk%E9zc{8A@G9rW2l;2b3j$25N+UKHH61Fw^HeFqgIsNYgHNpj# z_BWvFvJ47oOmye?!7(k?0>JkU3Kb_Bcq8N44Sg2Bhl&Ye=ihN*86a%-$4ZlTmXH)b`y8FnBd<@W+R&ZWz&xh!4 z{?F}v0}2U`puNdxL8caT6v=jQepPu6rnw-`2v!k@mUlj~rhyfUBtwAqS`qF{`&+mo zb~`s0qAhTM)M-$0UG=SeoU<4ca#263{Ru$XAXyJ3gr6Cnt_Sc6#WRheA|j%?8_k7h zZf?kmh{46`rE}*Y0p~6xjI5B^U9j-Xu%>frvog&23`pFJiAI0o($g2+-Fy}x&0M~- z--%il!g0~hI3egLbalj992jv2xg~`khQEfe`?d& z#G0WCVJn12SDl)OfC%DEShjA57gd$h}-r8L$?rSTFP1lHv$ z!sK0KrWXpwC6H9nIHTTwAExNJl4(h=*;NOpnzuGZb#-F3l~zmt#cOZHlMkk)!rQnDFSU}=nJ#3CNSpxWUp^jduThdtswF3`z3i~H3vy#`s7!VCtZ zirXMw>{!`t*2*@0wB?tlv7AfL zR1SPam@27T4&U!emifZ~a+YFTy;=@6^M7&(O7I{x_gPnEE*8Sc2g@0hrFZEHR9g%c3?R#sD0n6QRET?g=c<$;0p`F$6W z%jo)lcU{$+!OKW9`Vrh*M?o?I!_@=nyyI?~Wg}hWp%6%xl2`z?cKE7i5)pT{KH|&g z9dpk?A$S<)(V9iumY(Nu+UBFwL0I-;R&Y4ehA9gtMN@D3@5%SqZqn52OhJNv=3!^& z$I3zfk%cI$ClpJ5q%gXEBu73GQ>1XUFDfdMY|u0}o4~YCQhi`_echuP87tsu+0YLS zbyu8JEHF2@0pu+uBVmT@;~vs~%m^{Q=%6aVNlQ6l6`(f zr{dt{iEnC_N1^>E+wSVGzMEf3G#BR?;6@q{h4ed_Q_H8uH}~5IG^ekkF@(YC4_F|$ zM{J|;zw~zE(O?FD7t`T|E@8niW_ud}kI20wdwcUuMKd*DF4ma7rTl0q*bKG85?#|ZIzcJ`) zwhC~ThqSX^zxaW<#KGPTWLBiDhhIH<}SE=wMw1wEDSaJV%7=ap~wCIaT6uVd6Hz8Y9nIQoagb)!=1`3QI z_lJPRts!V&5n#N~wu$_m)aBGkDr9CHBje$;6w|~J&`GW%&_tRCk)2OP44LqLWX(o;x5g<^`+6~I1k=;UVNgHYL;%N4G(kgA()6i!fAnHO^< z7MiBRLPDBkYAr%t7-4Lm(=f$FJlRFfsi&s?G9mkt1&(Bjg*Jd#5;bVYMW|}_4>*bY zaoKSb86IZ1>zR3^*aC&Mp_O_)_T8*pkKVKJt*u|>!wMLFaBvcFj4jhs^fnMq8o9Wp$?>^<4rqYw8-kSOao`q-+T5aMUA2{m$lA1& z%VaT~Sg-ekyBz;Y>XVb4;icIW1J-i-DyXd^0vP+_@k$Ji*Dlb^8q|0{ytlb5ga(2* zuO(W#%SD?ZV;Qgc;|Tq-cTpi)?I@9=3c~#;Wb#_eqsFM| zGRh%0C_uC_MDCq}Wk@<$ultF6fe=HNUff@F@NJ)|$LF+GmNhFc&&LStUwH3|d8gz7({KJx3-M;ArzukNXznXbpAL0MkEHj1hXW7CGmLFND0a{sP4J16 zq#wHB)refo@|!}YpYD5q+5LMASv+9pFrcWxJku7>ffI@X=|1vENZN7)WYH1i>D{LF?a9q_^3Qf^{NOdw z5|!rpf$&X8S6XM6AAPdQ2D9_TvsVyxy=PzFOjJRx0r}0svAM9a-CSn1q=aprL;-=uVf-?}c&4WYp0gEetqyF^woV z#~xw{CcZ#%+$yFlg}u{u+gsR<>{my|ZAl10h_4EBFY*m^7pHx2v_t5$?G-?^4dn9B zK>XVk!llO{uLN}XEy}&2;Gkk4&$WjeWzUaDL8BXLQ%v-v6N3tkxMD7y2Q z<=TRL>Pi?4=J8I-bh>}w%D%wlb$k75B_+B+w#sBnD$1DN0orFA`b~rQ$S4^LeEDJ8 zfJj-!N^R3G0mwxV=dbw?K@8N*93+Zj7E%BoqUKUv&&Ld0S(@db@p=02x^%>(F#1XC zJ-M?}nn1?)>B?N>_=IcfgOwFkBKe4k^o(-UiH-%@{-Bdvl0}$guN1UU36b>cD6x`6 zqy8!uE5P(nS{n3l1?09ZAi<9pl`{O35M#;BgCUv==1V%13s%}UF&Y)Og$%l8lg zglqG+N9SZ0oSWXa?DQgXyb>dzYx4QLJtRwb89=vuB+!jTH2^{H-ZC%^A%d1!B>&+* zFAH^zJVyz>r^^snEP~c49dq%^X>lXv!#21*|Mzc{B*XLqn{;h<2p$#h3M(APm8O|4p(5FO@7=u#9WTZ^!$m0XW<4qNc_Y?n{|DP8rt`0G{p}X#qA>cN6m@fxf zw1u>oKU=Ad6J{8`tD)!p?1v7HNJ919uB>R6A6z~UGj1{TXGf8OT#Mjp2}T()wFA3t zFSh@9p5+&=X{hfdIU_$MS4A=F7Go9Rpzz$+!PO+PjZl1H73HzP(0;o;v!E9HR}clNj1H^mkk_yYh0&AT%p`2MOtwV$VqH<~{^)vfUv=%p4;I=j%Jk zJfa3o`k!Woq@>q&v=!erKp!V~t!V`r+zcHr5U?S2by7j;G9O zn8KVpWX~(*-R-yHvXhB7=f*-pxBzk znd~L+yJ)aoI>ZN=qAz^Z--qXKw3=p|CBkP+Hx?!6y%_tG+s`^3KLPz10BO53-@I03 zZ3vK;iKSg{7w*>Y1FRa1tT&(6bg0xJKx2#uXD50V#BpAfu_0NLI0vrLIqK!5>mQJC z5OECQk!8v~4>NZ@4uqJ2aqX9j0hKpJox|l?X$-g;1Xx$4`$UB)n+L zsRUE9_g{9vDR2Q0fDNo8p24HKR{>ybJgcby(Sp!}ps`R2N57KglwI~3R>A^io9Cd3 z%Z^sGdJ79{FK*(v7~RH=yV$WuNS01Z1rS5hr9r{MgcMMddL4AkgA)w{@)hfJk-tUOoy8t`DkqC-m<*@lFC&U&%fBdnrlN{(K z5;}gwR6ZKQ*KyNVru4tPEvZgSHpGv(x6P#d$uPLqpME6NTIIohBzvJm-rpuZzYbGE5>2Jo2m$$2WR0!*vCKcF!oY* zU1lE&c(XkG#OpsA5#G7f21;&DTRIB@4Gv2kjbng(SyBK9HrgSPA~r|{270jWBFwQ( zs;HdXi>*lShuH7ib)C(vp`L8-+fm<&s`M+=H&l_xdHHQ4r{h9H$l={Ny)?D5tS!&2 z$501^%Ff^_*WROh$@`M!&Ca@&YX6oR8_t<@p#lG>3EfIuJp9y-9BkfgyE7N;cg;4nf8H`^Qk ziq8lZiS&5V@v|sCoLQE8%_4L+n9rR^$ai5L2Zj=qwRAzR01TB)sm4-kmcenS1B ze$wrkfKdHBM7DW`dgb9z67FUM6YW;XUBHMxRC>&AKI3kiT)zl4v>j%l{X8Wr_x$UH zw?eMyK#M-Dd81oB@W5|_P`@8S7f>--xA&-QP_(N}Ai%`+pD*=J~h=Tzrm3#;`fxb@w)n zH&hCaIOjJq7PJaOPsm57aZBAlATW-ue{^|rs^jvupu7%wJN#ZVj4Bl>**pM&XpGd8 z5TJ|yn-4G$QY{1dS`Qif2x1(mFHc`WAb2bQ=n^nk|F0t%@LZz{-TVw*@*D@OViq54 z|D$~u&Bz4ZAKU`&u7Ob2=Q{n@uF8B=?iv7_KYr%S(3s7u+uhj+8?xOTg$T=I?aAdBk@Z4mTs%FzkI~=P;ZY7EXe)@yKts!tnG&d<%fmZHJQ(5fWS7nml8kLhC#_yv3{5rg^< z@9f;HJF3*uBi^iGkJ~vVyP37;3jls)UB4yNgp2Wd1ASBV&0B3f75+A|qD}PXFrTob z<#c#^K#*Nx&%_0#dTh`Iw|)Qp;wrQF04U_}Dtqt~=pp$h5>Zbb;=It|DTt^c?IveE z9^r#?l(rUJx5l5NLr7@%eBWRP7CimhZjYi2CYR-$Y~7Pl5v*|d7oz^Jd>Q#EEzde) zjZ2yIa_LVj>mT~7z97D(kopA(5iD$VqOr6i=+yLcU&mnwPax*Jf8@c(0leZimajq* z_6EH~-qNjuWLIS8`5gY@FEt*)bP>3%e|^dF!f_3S{iFEtap(_H#MpkLf7Skaeco{H zcsL!_tURL4V(tCTg_1FGE8bU^3)tuyR}%xx5#ew6d9TTUPh~c_u@DHHlD8Oa(v?1| zC4BhrpIN0xt27@W)boFCLO^&G=}-PVj`C#ax(l&>5TOQSUu(v2e2d=y5m;bKL}7E{?@OOEHWPeV&6fs=2=@^P3Ew~OHxQ8OF}WM$Lx0u~z55$T z2!sGKWq?H(xaoR??4>_eK^HOkN$xk4tVodOVut!eZUpVo_df@UQI8LzZ~o1keZWtD zNKEW2DE^Pn6esImoK_s2ob^L9VaL!BF1DrFh$ z8}XJtYH&AGD=i|LtG2|`nspWAys4U*TpUM%KL}Pbg^K{UU0j&c@j`P)QdQ-In!`mf zDQ|o)j-evy|5JJN2>~Lr9G}aD+cp0kM%9MRb8W}q zaa`_4IrN2p2W9Aiu1Z9O2;|8V)Z~1v<@BihpZ$qewv0AD5s|+*O!+zHULT?qIKjgH z-h*6LpL@@`ncqNqf?bgA8Kf%)QYtZ7_h!9_R}m)uK*v>!FP@3O&8v|8awF2RCxwaR zE4-LaN_a!`f8?k$kMnfX^ARlID4a^$O4!-FBv5}J8S~|Q88bXo+v8_f-HaMlqPqUn9m=|+Y(gX>k!a0 zEB?{}ER=#yOCFQXg@*`{_Cz?J8Z7UE^TaP zb4R;_rU*$V{Y0Lp4DCSn8UR0u^bi>9BbqHCDmKaux(6_;$F8b?AP|8<|2d8ggGC(T zos&pLt&1ZQ{8uuBPJoba=R?AAM+>=(Q$nWDpFS6e_$aLJB>*mS&GL>4MiWx+^p&9s zEk)bhkwm^DmQKYUXaV1`QjV~!%sP-jthIE6(xYs+uiNody=6<6VARyECmRy!9bGC9 zW?4X&7rIz2m63Nb{b=L~X(8ON&lBA;YGi#MZ745n_VOW*-Mwmf8IbYPq)`hbm_OpGctgWkWU)173u4Bi?}2@ETB_@gM>X z;-w)T_m}_z00000W&nnO@e**sf0sAa_xCPeQIjjdSpfFL*ImsR~g< zTt0!IxmRQS^W`0F@jWWtn%W6Hf5WE+`{mzQqNGa&_`Q6K5{QBDeOkEw;#yL)MDdg+ z*rpFnOs02;fgS9)E~X=`+xr+AJ6tF|yWOOsL9W#XVxWyy8GWX<*r&_JguIMjUSD(s zE~-!LAvPPSNuy9ERhr$ua%^T9j{3U*Wz#WoKjf=WOV&4>K&5ej7s_S_>FaKMx|KR-;opgkv>jNO! zUtu7kL2s7s`$k2;5OuD~O<-*auq#42fgOk4@>h^@8GMIiS9oNiQ_ms>5 zl92~{-$+|K=btw4M*%3m*lY-Kb%LkD!*Y|e5LWA8iz`Ggx9eP)+ra4Qb;sG&a~r|$ zZ%bB0Dkmr;!MwUF*-oF?%g5(pIExhLHmAd&#}?9XO63KW*V#>!lG%w(p3{=9Dv4iT zUD!O8SgAcPmiBZR%qdSpLbdGc6^$LsWihb5&W%{tFm2&U{lPUO8fTV1FH-RfD_>GYK^`#3K@Ar;9yB<0;bT?*K( z-i=&u@rZ?j2!%TO5X0jFZbB@{v+gv23a1GJoY(w4#9`Ga0n1=QZxZ^ZLH!YN3z8=- z*!ld)2phwNh=`k>J#oW*nQEBk6Pu?qMGY_WelTQ(U!`9_au_MH&c_G(Al}D4vqn`> zwGR@eR3tK4C6%hIS6vwZwwQ=!tllh2MHeBiJNmlDS(zgC8^xL-92c@XrGh(_aH`X~3+amwbGTDt zT|+mk8HthZ7kIKVLCL)aM5Ky5Q+N42lS5I%2+)!hSzWT;-)CQ0-^Z1t!fEdZ-e{~Y z0$H8f2E74&K!~=$A(P7CXenRr@F|GEo)wQeg&$EL2+oNKEzC2p?E@fh6Ml7+g^b<< zer*PZ?pO!2>#9#zOJCy9>;^@FCDkum->9^D5M;qHg$z}0H2t~@k>f5G^hy~2bPfKv z_WVJ2S5m8X^P@ZJef&<|!D{%LVZ)|x;VNLConl%A4n?*qVk9HRRuMJYTr0KE4LK6E z-v(h^BWta^An3P{$WtF?T*LM}16PH(6HPg(9e8garrs*j^*kL#Vd(c&$T=WCcr7J+ z=P?BpOQ+8IWRJ6(^R+0Zv8C;LW~|daPtO5}%dEV|B?23S_fwB$iQYRO*v@t$kUNwf zZ#cffcw|z}mf`te54p7B`!YyZvrhB&G}*`;wbSDm9PIJS&~FaVk7!JsY`Ai8uJ7n@ zMb{}EuyOQOs@^tfj2^N#4lr#$Ngja0j2b*KmX4Qd z^TXAY6kFF2S|amv8m5GsY%JET-;v!Dh#wKYr+^aQz9=@52iW4-Hn+C*q9nG?O}Ki% zkrsiKT=`4L08;19ZWkUFj0yyxtZ(m!(2J&TM0wQ+Wu2R&9_rU4n!&<{XKAizt@jk4 z02eB7vf&}#3m8j{*}8L%u5wAFQ%YiTz@tS@<~xepBD`>?R??+ii0q=D9|8QCjWu6m zh@`-9^xXYSyBsk}?gDa?&}3vnd2NHnR=>Lm1@3?Upe&0DJ<2r zef@zk1j)up0s_B+JVS!w{+V~?KF(`!N?J{-K4qBq$_lo%TfV)WfP;*Dp8-Wqt@q&o z@z9bLUsmRfY?g^WWi^Row_rNVp)XIP&`&ue;J~!>ssjvCng1T%IM9|#H4(QcB=s8~ z@I<6FdL-VU9#JvN8yrEzkRDnyq_CPyhQO}3gDG^g$l0kVdRd*OY;|}fXLxy59pTVA zV!L-RU6Dwte%(D1H8x`vt9hQzC-@U=T4oLv!+*%zu-Dc2O^4l7Hz}Dzpe+HBzhIG|?e40++iHYkgIzA^^u9+lp^)-_%nvTOcq zwC@?$QTZy~&;7N}ix4CVqzm2NPXgFdC@c$W-#r!51@sbP>@b8c0U(uy4iD!Ab`TT= zw2U!$CkXE8K)G~5Z10f9O)-hem^@&^rYz$6ROobAx>K)n(su6^5mhG0eYXY>6y_HkP{1V$*7` z4&y12HYS<~#O`9z+Lybvpaj34P3hM0B9yAf;#bolUP_~v9%YZ>mO(U)ARL-^}1 zUKh{A5p4U4DZH_+=9c~HXX-y0+iZnWF9VH2Ti7LQcHxk&&Xvs48EMS z_IHuoxpZxPSB;B1n9yFw1|%iub@j+AG1}b|R`eO&`}~n8X%``eo?+xMgd%KnhY0uK zHRtvv!f?A~e|r|#-%s|`#-pr1z^L%RV^t2Y zT$uh~nMf_XCyG&$kX=@e8|b#T9<`n_a>Atyp_P(M;g;3J4p)iUl2WtBg#`Objr0aUX`j!;~cYuUI4**r6cq%~dXOUk=*xK+YF&oP#TSupgnhyDUO@p&wW z-%8TMhb*9nW(r}H9&P~pJBhqBK(MTq#p2|bN(biFbp$b8b8}7RvGZjj#V&mI zaO=62ehgeER1GY;IGa7&;L-&&YdW*n#C%LCJV zfC2r!v3#;`D64Ga^*WBJzl7~WLvNB!n&l%elkt7(zHHrMP=B+?Rikzr?6(ZcKh0#l zF!^2N{}6ETraKu}*Vzv8@<#-x>Snnpr~`ZSEb|B;`(Y6g z<2^oB-o|R=cf=L!js_f29UJJ8xAC2nKAo}LR#^)^hUn53VN*aIac?$dwN@Y70q%u& z%^lnzthdV14~CDXh^hpf}*|z-ay=u4a|l<_OZg z3#(LP2Db>`drlLxAtR+e);Bv0`xg#q4BvMMHt>Xx!$THXJ;Y#1LEw(2R~_xM zE7X5fzjAxEDhn}q4&k&CNdG8+=tEL}4N}nQZy+9rqn*V`nsz()jzwCx4 z?PkYfb4_(*-^&b9iC&%PrJ*s=kf0svI<4_mRep zTbncN6sg$8-!&nj>!qUR{35Cv52!Qd<7e~Umv*U(!-%x)rFH;UUsNv~AWbEgD|5TD z#Wmd5cB2!zbnoTN;2Zv#wTE@WrHbi*6E=IIzK<{ZUFyQCmNCVLZzajmq?)rC>p?8t zdq)jp3Mv{J(elH`U%3cl2K^ft;ocG-ibVFFRysqC$esu6y##d*9=-^I#+mUqKHnp> z)Qz&J{7uk95d+dBpx2nigeIJyhsxw zGV}p0(aa?`fxIo(-x;mR3)3=Fmdp&Fvy~qWvU4AEU7aOYZjVtC&V;P6xwXk0Q@O$4 z&m7({lN+WUUmS4;FNl#2@09?Um(rD|L3MRLHj|oiXELli^j4{ljxK?`fg4A)y8$CX zj-WMXu{f@d_IGuW7GzG(M;fSo=CP#)5!E}{ook5r&L5h)@fMapVI|g7&M@%&&*e_q zhC zpNK%G!QVGB$BySj62YQz+T_3w;pfARgub>kH~MP0t7}*<85wuZ4ic-fgLLL6Hq`3F zvY)=ak~O=(St~QV{lqcD@muN}-?^*>8Q^8gvdNwJXrSWumAmvE_SoFU_nTDXrP>d= z?K<%1AwS8-xQ{W!h5Uek0EbYKQx8|vRTh}IOG@wYgrL0jpaIAP5=f1$ZI&xqvdYg} zlHAah6h5do(5u+2X^hk=(xSj|e$AfdE+?yPT_bR;qp=@Mi>F4nF#rj)em0?~*@Fqj z&84BQ8tO>YP*R9DQ3=-XxWWz>77XsjXd(3gaOin3L2RJ;ArxkO`H+*R;hQYg& zgjFl+a>OrC{mcZd0YunW0`p}f4s9&zB8TsajnO;hpXY5`V}KCk60_gXG*D24;dY{u zpkb64r<~-=4oT$pn+_!JB!BDr=vgKL)q0L`dARDmS2s0M82J(1SI!!_CH?~D?my{a zCFA(vg{`94cfM}HmsNS5bM$b(y`zNPKs@CB`O829-tndF$V&a(Lk6RZ4N>goH&R5cVkR~DbgplUO0b*_sL*Ti8B(O9B=&iZC& z=T|z<*Jmwgqf8Nrci3L`@T&;2edYj|o!VEmDFtczaBOdyF(6jI0@KT!6KW85&`ZIn zUbEKL!yKu=Ne%sUUpLtR4~oBI=5CXu#=OE62>j*PTcBMg3{8X5nJHsFJxWXtyAOR$ zH+f!nBhzA-mop--k5=p4$b8XscRi1=q$MYGje_&@XIUbeGSM~i!-f!2GjMd`7%AWm zY%Sz#;DH>32~(+vTdbue_rh-HzuV8560Nb8>SDR+J&h<9N#PFZB&NJ#V8&?eJZ=dD zIA_^dYKv!g@;(_(Xo=-5?GUOA@gT%Sd0X}RnfEu$;cE|IAv)GdkrN)%{3=jfMMo;s z^+#YpgO)h|e4Ca84Go&-YHf1)V`^o@41}!zQzr1EHp?>TEhT2K6OIoFG63p!=)Pa+ z@NYX|opX|adjJg}8C`&xp&@ofD=>e<<46=@9Y^|F6K5Dtt0{pC-Y3~)zT#Uvr}UjF zYJzfkqx6p@2ihW$>OG-H!hUQ;YL>$^<)+0YcOWjNR7bjwW@`=hKKe^{^`T|oKLJ+t zx1sdp8i~`q;T=7tou@W==>};U6!~`_YzWf5wX1J=E8BrSf%mN_MnLVeVB(*tkOhJ? zj6}9d|8;wG8`U^Za0j3lnC^>lvI?$R^-U^R2Vl}YR@r9_e$;*_<1c+bK!e!vICWuE^>?N-5#lF46YK7{X(6XA zaYar}e#v+P+a^lon#!8_JG?9t)K=4*dbcq@#r_;syUZ(}OCJTP4g2=5Ec(-n~j#EsMQZ1{msdIV?^iR-Sb0B^932Z5`=f;`ML%aOhZL zR(wl15HSx;9(^>;D*&IY`qw{;K=nJ6o|;zw+#EfVS)vzD9hRB9>3`wGbkM@u&X!O8 zp|2PenEQ`=BjO1A5_@guB?K{k*fit5SfmV^l<+I5?E1cd?_?vanVv#!kX9Kt`Wq*o zEFSKZur42AP0S!au*!hoVD-zFKoKCq{Xd~=sG z`G%X*7r*>Ef@rBAQcCj)9CR$r{O_+*DzJZD(@(edCdpWfWYJ-|SRJ`oNnmt8sCsL6|=X&FoEI7WIh1P?P zwZH-OqJ{PlbK!oRH*Mcqq1MtZm!GYXQ3AFzyFn1$V2S({CiM0Ok%lSl#|Y`Y0%D$6 zUS8FO+l12jJ{>3u?;*?!_kJbqJ<|xAU{LYnok=tO1H_6vZQdT1u)&SadZq}vEXM)0 z?zQOZRQ1cCF%nE=FU`Gr{Y93R9ctbJ=a{()*AZPyf^0E)Dlrv3^-SG~Tb_7?gra6l z2es;9`Od;o70oDrx+ACh-{;qL1P@}(hqL!^G<5^e{Q8>#V4%V-|0=h3fZgVZuMlD( zqVdFP@6CGRLo+)VpDHnBQ@hMqls0dUP02{)bSk(K;)ve0zt#80V+ZW+AySy;HbFM*TNxXvMD`+HZy?Tk3!*-GuTDhve8wu~lBLy-Cdau&cB`N1 z-0Gz3EGlJP!hLNz`!Py{&Xg}7wS?*xUU`dD4khf;Yw~Sx2r{|MpE-eZ-F?JvHp^va zE$~n`f=AIk32V$QMEq}Ulj-rtnrA@k2b($1WWf0~9X@wg#a|D`$j0he{B}PicBcgM z72OwnuojLGPh@!-y}|;aIA+i8EzGqUDF~`*kkQb_WN|)^bfJWNyMO{0_Iyvfk>z%g zZ|D$X$2D|%6xzX8H+d$@x`*`1`b^WB-B)GgGy@#XcS$k^N=@<#@+g1K>GDbYlg|tK>3@=Iwi$^^k|%WHVg4~o z{ID#^hAcFR{deHT$Hq@l&QWMyGI?nojb}0QV#FZ4Ae18_j{qhHqOsj*1JMky3cPs) zE&|3d!o}CX?jiit*T5V4@a#2;r=xpqrMkM}dB55lX>{UM{N zh;}&Zxe0u+U&%kdRYCJ3dHe=B9-1b_Esqz&&tr~h3OZH?5Aa!iA7#L?1>WF5CIpQ9 z=HZRSDGcOZ(G^pQg41i&3caYRDJ0PTblNia%Mg-kDSAZ&bUKv>m|vj&Xtic*fAUP( znqCtR6fnqL*9mSh@?MpAfQaWSt13I{`V)5-@yjk2I#qmLguJc!_H zC4_0@`M{x{wP?@VsMS{JOsuLZ!1Lq?o9t8)2?|Ca29^0$a9L zva)D=>ZC0{3+(DuAV1*XC-Rfym3^xf@r%)jwbd&xNb@Gagn!%=wA2cWKPajf&?Exb zS?dv2j^$GjA{i;Wj1&GpiKBDfL=+2p7dms|4uS1WXi|oKnIY~3Eeve$dCbob9OuM5 zBjP(CBl8jTPAn^2I7_sR%HiJob`RFNGkyyq&31TIVIi$sA$5g;N7nOj*}3ef?|DLS~;f+g3 zkB4p`{VVdVKD2pG*YVTSz9`-|7{7uKsZ8+BoT6htQxEk7Mr(0AvFL<6M>Oy`F$FBz z?dKH12G!mt<;IkUbiEKtV2Lyue&av!f0E3qE@cymZr_X?^ia$C&K(Jo!=lX)kFuT~ z!Y&CrU!NnwrE++KN7tVYj?xgoua$`O*N(}e3%rq>OX*bqMvz`24 zy*~1t49tx0MwMqdrGWjbAUw={d}!Da-FkCjROTs|$|OzpVgm%vkM`Dz`TG03e|4R= zr?o{MEEa&4q?#71p}wU9=T$6%FdvjVA)1PPZX!>39rM@l=g3cAVTOkFRDDZkB-e73 z^47TG*>*PKdUKH%Q)CnJ!GXg!8WqfwKg(I8NcP%^Cg8Q|nG9*r)3wOxc?3)gou18Q zMj1dzTC_Dcy7vYn#6|8)1zBw7kB}w?`&nH*`YWNeEiz2QT`84#3Er~YF&10uM8?ZC zyz2N%Te2DVw@kDXyD#8=ljx2qOgE0;q5E-Rm9+<5%Praw!#~k>$w}g`kaZM|J^mcO zYVi)DhY@HV%k)!DKCr+eiQki&-Az zJ@Fk6E<4pp7@Ig~$4+Iixffx5*lbq9(eW|99HqZ00d>WQkb4~pip;bQE&m*XvB^;x zsJ)RZzE*a|ruY@}0}e+a+#>Pq z8G(uAWpWCWO(sJG&uyqeT8FH{&L#>XQ-&1#{rO8x^xNouI! zDh+-IfkE+m72L>$A6q^gnbM%~N`sQ_$qs6tm{pY2TpfuCq7)b{r&B9;sg%q+0dU3{ zx{JT<^0Cku1U#J1+aU)&-rTCmB&P}g)$JbTf3IMYa{Q;i(j?&`y}s|`WLCZZ0O4(@ zmi*X{-6RAaVUQP%Jg=-Pcp`5042^RSbFpsCCFV0jOoL}1=^FA)63zb`geSJJJsyYP2|Xy1(0 zNcx&vjO5~3GBOzSUu~PJCDYxsF9Q7%LMac0eLA-cl5_1ilxXu690b^SfqM@F-S@zp zdI#|nG>`Nouw_lfHX6Fv>FWw_8MJ;FTCGrzVZ}8VjL>UnU2<&o#oc!8Cc+fS0)KQT zNJ4uaMdN*rb%TNa#glyWqH(MAhf-$mQ2|fyEMx7 zD6EGoI9B{lU7ta&;e!TEj?pmvLv!HFQHQiI=qoL{cJKsR*95o?SzyP5j%9MAcyRA+ zf$mh+TGCNq#6ztk@Lu2d9`8rUu!lSR?mus1ufj!T3}eNofr$%|uqXqbkTiNQyJqhM ztJh%k!Y!8jRc9Qf26f`B0rlXCzpdAn(Llxxe8m%gF=~nRL}PqhEzlioJ0K@;ZGJ#J zq$(kg*wjI$=k^hw8YjeX{sI*KfCqjnsMq9%=w;<&VTY=4Fl{Ng&SDU8oL5j%kP1+5INkv1$5QZ#(5HdmdrHnj;aS7&fae`YCc zqi!-m5ISV_3+wbed^_DD7ja;%TK!GGjQel4-D1K>f!<1jYDqy-6>89OKFy*z6XX#N zb`la&uXNr#--X!mtN9q?h8@H@we>;DV4XmHd5o8Dzs!O^$!@1ZUjQOMqbU0tO$H_Y ziWJDd9%W-!EHcwXc?k-GFZ{_D#Pr=JrVMR|EyXW<#HX30=5gB>?H3`_!p7zv#k%p~ zG)BiA1yd6+rUgLDvo*L#y}SeWL9-^NslcU#t3BM!pJ%TX3fe?oCLus05R-1cQdGKS zpTvP6u!#^QdJ(>Uk?yB&%FS0HP|B*85}2BLw%}xu`=DVb;GNrK-E-+8zQy2ML^F{! zIq_b3C*Psn^bl3RkfLIl4$u=MhV50siq%9{%F|lopJ4kkSew>K(k=Z84OcA2vi|Pl ztE}m>&uYG?;qtxr`2HU1>J&C$eVh?|wg~a>L$1K!F*1hKfj<9n`#~JbkJ1`pOjH6* zMczf!z|~}%&o8vU;-@DscJxr_rnL^qoUVt;kURJY^p>vXT6pZ)f{aZjfHksWeJ){+lYE`$O3Zm3j{FR6q97dOz&#hz9n`a$ojv*U}3u*xF|_5__Ud1 zVp3R$@b)1%TwMtkT=mpKBm&-RL;KX43bdi9d`7_DmtxfnO59lRNL8#zdJ+#Hrr&L! z^`d2EN}{Lq*ZgyW)xVj-O*yCq;#VyLh(9IfeM=Qnnd;Zm2bt+)z8qNtmFZ(xt&g_Z z7sDu;EHvSqezt1P1lL%Qx7|GIWq3GxrfmNQ`s1w~Kg+0em*g4IM;JMy;veTO$9B@@ z#R$6v?bt|&fV24QlhTj8CvQL@qWUHn1hqU_clpHDyiPSu#y*RcCD5inz!ecDvAtZ0 ze=$6D1faRHnS!^QUcbUiyet`PXcIn*6mkJ8liHcx9P>m^iE9)EP)iAxL0nBW!}Siy zeG%d7m0LBKhXa-ZAfA}5hXQ7@1?aH-qspx9Zh0aRc7K(C&#jL3bh=_;4fm3yb#OGR z)k>|~-UeKR`bJe%5xMppLhV-9yT2vg*m;Lhjm*r2`K^dAOY*e>d%ZJJ^vY~fA5E)F z&Op)uVF=alnHGYJd6~;0ahv8i>x_*Q+K;2AWv#mOR6PMs3U}4#6`7Lt@4F)8yXmNM zuu@;2wpi=$KU+fOa?ev`!NN|4lzxWbfDAXs155&vd3FT;Z(IOP%UDO!HSr7XLokek z2-*rUKLdA$P5X}Jwf4w~c{CV}(XVY3P%zc z=GG9dEq0InP)qhyYmj`sVAj}AYe6RcL_(uiPDbW1+7Q_E@1Aq}6V8#=#vpDq@?X-lin>{_T| zy**jb_5UXu3lwYPf0bfW?vnecLC;8b47oMd>R` zeTbIzHT+{6_e9a??3s}TFwGL*5?X<>fV(`F?$6o$U+Gr;F_gSp1HxD6-_u&br7?|M zfLQ*9``)^$7ANjq{gL-DBd`$ux=14mGgd4Sk@_+l?Z)`w#Lg3NDQvfxLw|Vg3jY0?dI6DF&{4-xSYIVV{I56dLno zgms|$?mH-ph`Wzn5cJl-OC}JNrXVwz`y-fZb0fl{C7?6c4$WU{&W(y3O}wRA`g1zn zjh3Wj|Kz}ybG}}3ZEYwY4zVMM>R3~_Sb}}I0u)FJlxel<@Zm|A&sCcf`sq2_k$Vv4 z+7z=~1TLMxi0mLYgg?EQw6w(Dp~SHEF0Hof*3(v3*D5o&GB)V%c6RG35=v+oh^Dyp z_7RZM9Iccdd=}8IQc?5nt;1SQX^R1-Zh%vx$oeqtA z;B3FH7-N)$_x41#AY2-n6xx~lZLem>7DCP0*#j)V` z^-wV&p_H`<^=%wX4?cL`$+m0`ti$x}-i1A1mzph zjzNwkGKI5>0u;@hb2$&5 z62OF0Q2(35sQE94tk_-ceJd`<>8I;GCyb5(Ec*nbT9cB;+MnXCv1-oq>P9RsSYi*%@-T-(KY~oURcND@P)gYaW zb?&hXa`Q09Lx$xsGh%|Ziip_g#N zOXE%?fl(s3=0us=>iOtNd^jTx0F@C`s4u032rO3#H_~J&+UWQsk-UM5ZB-Vm=-TCc zWr<6$GR}qxMrMtaD@;QumN?YM(XNtvDB}mn2i6rRuLXV|pDPukM%v!;ZG3Lb9k>e} zi17U;l>|P6LZTtLl8H~rhZBgp!jKT0gV?n)#De{vF90&csRMzj3JOF;5?BGYn+8Qr=V0ny>i5^=;iX$QRO}z55&~Bbbe)yqhn)NAx8W- zHSBOLyd?+_XhI>4foy{D3g?u-#gdB2-9z1HIWd65qy+>P9_}HQm(t{v!1Lb9Xah4e zE1IPC_D_i4QrmvHXI5@H0RplAsYr=gwERuFfQ)^h1T=fspoCY%(_U|40LQ~xA8~c-Ji3-+a-6(q~F5F=&s}aV(7Bz$n{*@ z?g5)SXp~MnF?a@>z6oOe&7NT&yWfl={{&&qmx#7KES`94qu&2;I*;G@*maKI-w2(3 zkBtOYPt|%@O7DBLu>ED8=7Z7M6TMo*!10)M*k1Zx?nimNiI69NUERiue$>atk<*it zq4{IvuTx}~NabsfE0w=<Xyqo_rGg(TcYgY ze!m6JV_Og18&sUsg>u|nZ8lsPs@WFdX#VgW!EHYSfZfNuD+c~bXSM@M+OO^4HPfS$ z-L=xWO5J6K*1e|CJl_6OC3Fqt-7@LBo87$GG+^o~y65BirsmqZCtOvPvd*C!-U3FB z{VL0J+$WVDeIhY@REuFa9+&^!t{xtHMgATuQR92yj_GPtN!f*QKt`LMdmBl0Ff;GptskJ z3%XRj;rz4H%Uk)nd*0_)Yv+wkynr{s{`I@55h_*3&+-rPf%Cf!Mw0EY_c5&l>}vW$ zx)2rd?e>Z8FTNN66YMbDSer0^hXL?#1x9mp;s8hTf^Rx*tLrIs?;Pm;OE4AYScdx3 zYJg?JClC35G%~u>9<6U4Qrz0Xn~{(3y(h-I+ZlK4;r2dm|L&{C2e)OHqn}8Ome*KJ zTMkWGY7r<43-dXDnI8JDIl#hUxS}O7MA>&R%TjduHKjO?2K&w__MWTAv47e)Sg+lS z4d7qj&8a7XoTl-X{;NO-XgSvUwdm)>&f>TwLDBMrxV`%PfqQ$Xl_yUpK86ACbPhU@ zZD{DJ@0hlvI@lu4if{VPzJ5KyQZI*&ME>djadk}Hn#t*r`Wu~6L?EYF^*sVYLH{o2 zwJNwb{vSwl{x8e!!neHh93y;2yORm$5zQ6j#H;{VFtuL9qVzNqOn*w#^j;IDJE157(|s&lhcUK77|52W)=` z>w=|9s3ZTgLw-3VoOyNu@ayHV{s}*0!#wl(1-585>1WPz#n~0L{{w_ul^D~?>HqB^ zosXOx2%LX`M}E&gg`Y!e^m!eeS3u(I?O$5y=85^sf{FE0%rL6$xnl9msPT3x|A9bb z+bh=hU+B5{`FDxk>6zUW9Lg)X>|n~JHPjmhN_#%k z9FCofdG=X@-xf0T>xEOmlhgNJ#r9jApcoKt8^G}N=TH?-3PlCZ%q8R2SNXY!6TC1h z_;PD5YHD?NP-?pU@bW6(Oyq=?$;T;f{v+@=qJAVgR+sbGv>$%MKBA+H8=oqbcF(W{ zfwjetmKhDVmGwn%aC(f^I8>l6*P{G60}%?`um>_LHU&P6!Xyyry1{$@jTtP_e~s}0mfdT9qf~4$Xcr!bby_S>5XjJbr3}b$gz{*S?bPW>b$I0O z!8gt+3|&^A`MuQjGPJ6Z`POE$1R^5gs3%Cg>ge{k?>^m;O+QS1s=B?8uq^nVj#3s9 zyh;nZ(>=zM+ZDu`_@cj0D`j%)jugI##~uhVTU28JWD>T?8Me#L3$g?l_g>cg6+-Ru zI2ay}d^=?_8X<<;NH7u{Z3jvrU!*fc2!~WlWhdc10Y8ji_Y^rAYC@@kUt&eoM{V~> z{ojO%KEAIdKnD3sYxJl{df|^L5M@s{P}#^+k+5;?@6RmM7X89)7d4A?vqVqVM?=I^ zaHU>}OKyEo1k9rY^3CGp3@Xk4k<1&%&#D{>9zoqwresNy*^#onBdiAGR-UID_|iGO zPe}+UVVo|THmgpX5(0V>R28%RA{Y+YdNNmul~d9IN3I~^G5r6YgMKJM!p}581}r(2 zm+(v8#q&>vWA>P0o#<6Zs+7t)4xr9A%9&;RJ#x9`L0xPA{)UOSfzGFXUe3srj_$Ve zDe!j<(W?|_dB++-gY6mv8hOlp#tbQc_Sr40f09olf}a*YWFJ-(-J z?bB{x{vcO!3UO#uI5ho3(!pYS?5MMb|)x|DFb03$)7 z?BU2G+GcDyf_vF`XSmbR@js)lJLTLHPW-1sx+pdzS*g)kCS;n4(1F?ardFWm!AqaT z@9tz)_Cx8uc`X)JfS}-+GYcJ;_RgY~bp62+(I>_XUWI|x9*)Ext6jQ+<$jQb5!b21 z|AJpU^Uzc-+d(_(@JTH}s6VZtr+^6(zz7E9T=#B;u9S5?&QDX8YO!&^i(l3((4!>A zqYsgLi2nNjR#QZ~F87%UF>m4-P%a=F{mn_E_f3;17Fv_d4>Zj%bOVCzdXonS(lRu3 zlg9SmjVCo$0Zp`-;WXtpBWa9iy(mq!CG$_^PZXJmx9g3;{$dBV)R{ll_oVzWh^PKQ~a1&pN7O}XYi8nsHYTYR?d!?(vr36<4>tD z-+D{Sby=U729Gp{7$Zb`f%p-=pCkaSjgBx}AGN{Df zJ>llG$m0QgEqKwGl$WonSm;n@(32U5S*h`_K7}S%u)pIxpK?S77X4Xt39~>A!RlmxD8bBO-1dOy`J%2L_OdW-eb&2WN1c|hu^d{ zh$NNzrx#?I1>?c1N6)G)(Y-ExOO_{Y*AmJVFm8Um@v$GTw-Y~ZEM%M7E>E? zP^NF{dIl+A@aNE8i^yhGV#y3&tMz)N1Ri^@|N6$yi`xy~rsat(Yr;(0R#rF5rd;u{ z4to}js~21$x=J}@9YLqX+=@A?M^MCJ+errK>qlScDC}g<^<2XqC+m6=v!s-)xlAF$ z=8DFx{VxrTPfq&_8eO5Ec-UOrZ5W`o@i8RnTWjZ-fZ_}lRZlUD~*6EZ}~(Uoc#i0BT(mizd-GFBc$-^jVi z0@<>sw~WnoV_#~dJ`1iCGb;JovJ1-+ROA`z{|1LT%Un+eB65j2;<1KlyQpo3Dz^EKpGXtU-Czgw zcgE`J1!Ki032cB!lv*gA;!BjqJE6yN zU%ay1BWDGxaFT9bmg$^sP7AY;UJ#nt_K|6XwBx8~nN-fO8hKKlh!+1*`Be;+0vL*) z;Py5oF>6#JNS<7Jd!fIK&6Bt~*8TCKMffXax>r+b4h zyIq}rrsPgo6#SPd0whJO*Yj8dJp9Rr7uL~bG+09;%KLDjrAV@#iqV*H%*IawZ` zGg$_~m33J*^pNR1i9FW7#zxXZF!$+TNBGSWWP5(>@d85E}uObc=Z@^*m4 zTv5Cf^Q5}A?`;RnZ`Y}9*lIUkyUy3n?vfgpDoCoUuN`zA^#qBz?K_S{h7&riCym|l*b3F!OJI53O(#iJ@~o7$>NgsVPM~=^%y@OPo|eBPze~$05?F$za6Ab7%h}! zbu5KdzUX3faJ}~l2${Zd;=UJUX)oQwOFC@`=K$oo>5k@x)RYyhhha@SCK}Y<(O%-R z66)$?ra}-B&igw|GY2plv0}9xtU!PPeyWpip-hRTV}vBHAL;GOeZi^!@;w3=pfT~z zZUEqbiUBU0I9Sogkl<*uKv+R4kJ7W4p|nW@iQgQ+!Bz2NUUQ+ni8rndwUDkML`C^U zDM~B%!=$JU+(^81S$y40P8;pT$4g9{?gIE2w6uP8{{F5O-77}0UM!BsbhZC013}if zw?D>vN8&vgjwfXqY4#yHCbh-t8vPkCNU5+?EHgy9NyrN^N?(S9*L>MxB^$y!Jq(Iy znLNPQBq`pE6F3cOpb$s%ACh|r5!oCmk1KRzJ0~y$SD9X}ZMJ-SN+vaXAU()*6a7_A zEV!d=f+W{Sz#DCtL`cJv4o2hE{U4m+X&}h04mv&4P zuN>P7kVes;%w-}Ij^E_i!(lO!QWTwHdg#>ac4S|j%%jwGbV(M02?h$(HK)7=8YB4?^$*)-mc&ipLYj9nRZOBsxN%u#9| z!pdEne0Q2{$)$*p6Cers-7|{EtiG{*Y9XQH(_d1c&V7e)NfR_TAhDx&w7p}}lSZ?3 z>Wi-|GkpdBREKdKLTi|Pb-C_u8Lioym+@@tbm`w1N+-Fq=bOI4E$z)#U8IjXv!`NN zp5c}1zr z>8VohTlhPUk)4r)^{$|3olM}nrl*@N^vXygwVovMZ%aQ2;d@1r+p!qRi`oqQ2BsiKTOBw`rn9OG)Bzir($K<5(o z3M3{X$?Q~4tC9j3H{4s^HsHiHN?B3SNth+aD@+%2lNZag+EfGV*aS|DB5$SxPl$;B z$_-V%&cfd0?e6HkVE)u=n+PA0cg}NEmT_#t2sRw?(==|R=Ws-%4vAR9w3JDa zWdu!~K>vcsqYH8E6!7WFaX3CQscfd=JsQ5MI(?$J0A%8}uPxU&3PLp)cgH}~j;1HR zAVOdDWnwz&PpmrtflD^fw9J6rQ}2&j&IAIg+e|J$f;@!IvHtjAM<-;A_{c<3wbWp_B_>XXAyrFD-oiP9>mQo!Y84aQjqh zu&k~uJ;6Xj7Hn1QWl~&1)8GCPVS7O(T3mq=@8uED`LaE0vbN7?U|I=tw}Xqzt^J7@ zGIG~TpbFwy}i#z@2*@mencYw4Xgb)zYJ%v60VjR6$Z*WdZG>b(yv%@!dvX|q<>#-8gv6=W;Y|~ zx8d6)b6HG0G1zeEQIkvp>;cZ`+*!Ud=BWJ&HTYCc=mhOAbDUML=DyW3))_(jv^`XG z#lmZ>+wYe}Pj(#gYOfs%PGvpDV%E7QAsi=V=*80Za^}2W3=6d6Ea!!V1|QD$ZFy;g zWbKY{`x)xcg61TS=8oKSTi-R*J6!$D<9Glx|W>sbk!RZ zmO|i#^5$gh1bAk3sMj6e`^9<7j#3|oNK@BHPsbPbOa>vluxoZy#t=W%>pRHeOpUan zw6^iC_x8HLmiKfWe+R`!dc*B-CJL4C6vh@GQKh&vr+_FJ2d0cw7p(5pM}L0fzg_2*3Ke}a(|%q zNg>*2@KjWYd^OCzhlIz=)pLf3dwa2n*}S{jtG@1DGa+9UWdoUtG<%_GIiM2Sokb{w z(4}&-o+yWQ9)e~7#d!=e-e^VLhf4ClVT@PvsU_}EX{8`+|1x{f_T2Fi*6)mQ#-Jc6 zZ+CuH@nyB~3zXj8Z|a+}qt%_E97NZ$?)VS(I{n>7ba6&JoLy}-9xuaWLapH@61sdQ zhw#H8scJ{Js+ArA9iirRlFocG-M8s0D_f8W(CtRh1w)|y=Jc{7DQKf5(d|`&V9p&@ zm#ryJltrIT#DYhiIp>~IyxQH&1m4+rjzPX+Vm)8PCQJW(2f3nSYH}9yV?Jn1#)M>~ z4(Z6OVWU%=;@ivun6R@!-`@}x#AU&sv7b)sXD_MVlVG*DkAV-(Ma;jQH`P_a((ixrhT}Oov0de0}(e3(@&b|)1v-d}JW@s1xaK{X_@3pp_svxJ)>7I5d zjv5Hv%UEC$CV{(CBL_tdkmgUVkTrl245?_lxU^(Xh+T*cE!*f;r+ zRV10suCUG#_-Jn2dfx>({#hG^$W`l2*J7{VECnw2#1`i1*JX-RmCf% zGx!K1ssZh1Z(0zd1(7{$&HR!d~k8yW#2$`*Zh-4#tUZO1NFb2n=@1_nPu zg*@!{6K0>;Q`K!z5NbUtc{?{~fPOKs&%zHo5w56!C+oskimInjyU~`805mkNVf1k6 zU^H+dpury&`gH&q5pDn!%?U3mtuv+cjK|?~tAz}qRwS;k(>vw%F6#G;oAl^JsLuex zVLG@D%$#f1^NxS%_GLfp4bNB;*5%J11P_k-e*yAF_XLGw<0%|D^@P9qTF+!bt@oTD z>!cGk1VBolJ-}PNM7s3P$+Qi54y=Y`inl-aL({_u!YkI??U2xNSy<)p3JAhxxkpx!i=XJ*!pZ_S?e%7+b1b$(6>cAXDZZ2u z)+KBW$QN8ec`~ri&ZktS2w6n7B{y*rsoQ}NYTZ7r+uwrvbrnOZWyoiDL?G9!$zJF; z^Y6Ia0%hF6s~K`3(=|nhy4vGU)hnB+LaQRuPItZQ2O%)evIXIvENBAL_iOB|r0F`< zFq0)LTa>afi~LbNph`0RN;jB@`A$TQPl^3JI~T=THx~8mXtAjUlVyjl?Jhg)RkFm= z6vM^O{^*S(v~KqCq?i355Zrjb2GzadU)Ip}(Mc5ghW-2uIbv_gRh4^1w05KVJv9s_ zf@}Q?bNAbDFyUL;e?-OQWUTP+uHVuvXf)a>M^rUj8sT_1oqo*-fNB2$lR)Wuolee# z1sD~ak75?d3clYO9(N1nCWTV*N+{?QomIio%&xxlR6qT4rtr76AG z@92yrOZnegds;04%&dC-NW&M{4$v*(9krUqjsRv1iJUyMMbzMfJ~EyyhB!h9+1HU& z;7wUlnC5e4%oPow%QX2u7o=;Q%KQ$Nf~-FIE-e~P@X>Aq!K|*M_FlQ(*cu4bbW2XY zHY`jB^!czkv%ePEfD^|^b1k+4iq{>!GoaiPvX{A-MgM{5RPCO2if%m{PI145X&W8V z0o6tvs*XL>wuqp_Lwab#gtiQ`t%0fb@o2-YebkBG(?8|2d5WtcD+=cVh!v;2PQtg&VQ8!5+7X;iph1T8Do6pbnIlujO(V?JNNVH1E6qeUe1E-L**YoSsIyr@rQ85=l)bY4CPv(_pc*XT*G;< zmmb{LRGU5M;qq&A|Bg6%*H4fRbg#G@4F=ksQo1I#;WDeNRG;!_pXDs)jy{17_BSmG z%k6v(`%VVFwkw;YEa7{gKV4bBhfb1pc;m!GD69#+3dt`6&&3tthJ%M^-fl5{g@R>^a1sGLm2~&ApTYx&>;`m$47k>iu+=m zYphND{PQb5E8_Uz>I;s?VfPhrbwOr|JE9H;$L_N6lVoN7;oz@IK|Vkz4e#bAYF3C$ z`rPPa?Utd=M^=xs+HF47fVi8LiM|A?5WjjM|s?N-tGuU2hyc@ z;J&2-wn#>HA6~e0QHxJtpn0gz`FPG>G^F9RP-woZGXKf9H{}`<3#eL>K8CeHo#(3B zPEq`G0QyeCK@y>O_5)y$@9=MHqSYy+DGuuI|BjOO#)zEkG|- z69C}_dk1eEL?P0DFdu9fH_clgb*I~>-Cwm5^^cUpu#%LqT@Ud|x~S%AL#WfYVvZYx<~p^dmlba5sb~U4=O$-ksfg{JxVEJ$h6DYC%^CI=-R$`ja6^{45@Y zS#}d8X?#F67&L553{iqKUPIY}YEiKdP?GM)w+{ z4n7fgZPgBXlzGqYkeJEIT{pb!Un5idEg2hZNm$TkHGH~Rw>(%2xV;K&(>T8FUY47) zvz!S%-4YZGjV-;1d0=S8`reUs?r978(JnF3K~C-aQF)CNYAql`Ue^QBwrdA*XtU!8 zq{kxGM_fy6w}5stXq9cO?)xd~4=&th^?yrOaQG>x_b)-@;z_>dOimO-Z9%z>&=>|C zb&KeR8l(1Ugrc7UtZw-=8Z?bW;}(1h2u)$*(u*DbfWF8&;kXxEmo6`NTpVpqfEVq3 zOl9we1!Hd5QqV(i%GGt$1UdV`-p@xB5%x_u=s9N!%^joS{KvHXXKtE3O<7{)!bhM% z`4?)rW&>d%fzW=WC|k5PCq;UrJgb1zP}Nl#Q60A6JWB>(T{%#UH1B?1#S-Dg&N=hP zUr`-z&aP_rdoLjP{)@Z533ZlA;o=88orj2gb$LF$vDcA3VeWT@$lXyG=xU>wP|XgMT+Z zSA+lvnP`X5SMII98$q`(?A!>L&t+Ky+Of0U8yELm-dWbg8Ku>S4EG=VL@gWi`Sv;b z?RRz`>Kx>CT0fyu?jm7o_eas@_s=ivGHFDZV-Xdxo5N=u@n{sEexP?ovre8E7AC#(SB?lzkHE~( zY`tcXZ`(wTPyFC4v&W5C6QBH$kGOa7?#Ipq5yXSTY@+Vx4?md3@k-$LCmOy#-W9t4 zV^94Zz0ru4y+7C$?eH*D)**u%|LZg}tZcweytiC!IyJ;dn|E>#I)ZQuR-fLzE+ekV_xqgAte2S-WW@sdV+vX%Em75x$G z+L3O@4N0C33pp`mkfLQ+>dwiDaP0Y9I>U0EH1KcmhlCDNo`xB@=v76lJP=Tg)J2^(9+S|k<#u<@!EfGm>^4ySJBYs$kR`umlkvuSdB4F}&v-8+! zHG&hh{rfGf>o?S&=l$09Ts@_JA`ZQ4g;Sp+CkOvdvlRa0a*0y0UE!azu%;It3I)QT z;vPGOHDQ0*KA`YEM}0{M-%FfPl^q!RJ09_HhC=dZ`c%5wrc8#FnJjry@TX;q(QcE_ zzS+>f{_IAfm$XClDe-sHj>xx36T9knRuo(xIO}W>7X?s6W`C$+ z;-|B4@&KpE3tN31>MST3VYG0fYF8NW%l?Xv+Fwq$yt8F z>#PiBD5V3cqrJnvK=&3{-&5IpHGuz~zn%mUF{fc*5b9KoA@IV2w4kAph?XoBGflC_ zC$)bpM})E`YAPm)S85Et)hsS+t8Hjpiz^^{6xsf?>E5>lc6M_13HJwuv^$t>?L#oW z#n5|xL$y|%Ft7V18PR1V{79T%Mr_t9!@xK-Lpq^MT;)Z8P#VwT-1v z+ouYTUQQ!k1^Q(x8S{AtksIuZDN}mG^PrQ!e$|=^+%k;g{cgPN9^J<1nwZgyoS(}k zrLTM@-0gWQ`iFW^EFy=X5l314m5=>^t#u%8segdTN0XhVq&}C~z67^6OD?@{DRq_~ z5wYm2BE()l0~F()MO~nv*M*h{%qAbx59P2ieHG@Q5S1qQkNz9w8qT+epSvrNXt2;; zwWk-3@0Dc`a;jI!pY;`Tt1h0S7R6fDYK=#6D-u?#Zv|`s8OLkVKVullUM#ZF4;4UR z<#hZMAPjg6xG4B37`l*PIQ6kEX@{OC~ETyfhp;o!Z19t}RfM!&jNEk!?Z6v_JuFUrpb*_HtEu_#e!vH)t5>!@&t#0$0)jk|{rZ=5s-S#llz z+d$@TzEJOv-htKEay2_pi)$b-*a!2#zCWVb12*WKQUNR)&>f3nJbF=STqaslPr(`u zrt8maj6^xDnM?^JB}wJppzNI|N%bHS#g&_^8PWNHrZ@+7E-J~pk)fb(uiCPN89_93 zl}${03#ndBm(%e$4LcwfgwgpXp}>P`Npj2jXD(+B&6Xllb-3^l<|Odn`yQjKwTICX zm8+R2y&$H|TCzK7+JhuC#@a8t-C7d-2HK2mE=!RfF~wD+rxUDANU8zq->d~fCjljz zCv1rNkLMxDeF)C5p6~v!N|5HO8M=Q|vYI>~#yvp0oBcK7t9E1CaT@keQtN2xrgvic zCPI+qA@GrExZB+NHwfVubu~NeI9>ZXyMi&)=q`K4#QORgj99G98cQQizFJ2SLl7nC z%Q56F_6$daj!0f&-WT<#H9^k;4nBs!2dv!E18=Sg5nkSa$}_+al&${Do($_|r+%?S z3qW1GI%LO3J=hTs%1shgouj574O<{4{%!!v@0pKzj91ybFlfU=HhO&2#sPW zPrVWWeV<4TwYgR|s;0XuAuS~6qRXz?*qk|bRrjmgXZ5j&H+mDXq+JQNScDNfKU`C6 zkVLJZ_M3<0OXEW?JC1eg5*)nUaqyiSaeV#&=iqYV1v`7)PCQ|RJvo`p>Z_Bt zhxZ;~6HuzQxa6>m>4N9~Z0MAGJN@jtKj-VR4-oZjQeWJcFuybF8_}~OcJ*;(Mdyd(BP@5%8om^DXGx|?EE26I5z|n=641u6CxwTSa z@dagecQnoUb?5u2wG;}F{{stWxs&`9S*qkEA%ANt&P`0r6|08rrwYfb%+dBpdK@Px z4q;)R_$dyys(PUA-sSrd3-wL1ZH(?9ELiRi^3NeJZ>GuCHP-@2SLke@3F1fGn%CKJ ztuI9Qw!i$;gAN5BAkV`J?lS?K-U@b>!vN{ThN+F9AQ_I6$xZEr(}wb0X!}DC~8(AaC81y2XVZ(D0Eq!an=GZxEAusWajjz?4pXq?$^vN(d>^ipE3Ouw{XD0+`f#~z*$S|*YKzIoqu$2{yzte*Y=v!^Z*cXVm5NC(WY^~ z2E_3j5ZQ(=vB33*>XA1+C{9ah-LhCh11wqC)TZY+@i4#0jY!hd$D8Bm7)go1v3*|F zpk-N$dh0R6nR)5`WNJL{@CpMZysyq2G16S&*CsXTbzk7fDpNu=76SE9xjD{h{L0@o zt^iU!9Ts{lO-Aj>Bpty7`Q*mq_~p1PSi96yn6Kao3-POFXLrnK{M{|ZMNY@NI$Us9 zoUHwftfRZ_gt7pQdHMJKl`FXkqz_sBTd&j=h*42LX(FddGhz29Dj4Lk{%#NB9&D`^ zPXh~)*5D02eL=qLfW?|Jp)xgO4|+vdAihhSl7(f_mqxthm$mh5Hf*J^b4YA2GQBpd z7mTdBPkfjZjQcA}2*K3YM~h#utEhKM6_W^`w7=#p+e3q2cJ8D7)O9Ce(#uqm-7y=u zHc)mFwX+C*{-}H!i z^4c1-y*RsF1g~dT%42294@Jd6N9d%ExAmOFjdHf%39prk87=Arc$Ga<-wNklI4{$0 z1=OH;p8Mku-WyoccXEGW-nW-6?-G^XgUBsBIWpH^&nzij!4W#X7v+F`nScyjVU zq2n+I2g8l494;{}VJ5%i`Et`I7PQUN$WObh-w^>hpC?bOb-Ddt$gs8wJ5r4y8zJ)} z^rkI?&*hU0;?x#eWyQ8)Vc8S>4|Eofa>Cv_V&w{tI-ID*>4ARo?|j|z3Qar1P}73l zV~_wvIY@A`aV5I0ZIO@3eNhz;Z_+PxCFa8kc9$r3>0rT|GY*GcXF=`Ocr^*ysI)!Y zwZPcPn8cZMB-bxrGyHk0E^Tif-uTy_^eVk*7cu`C4q$CoXfqoj{GfjGfJmWPfT=<_ z>poyvES@ zjF0lR?s(BlYwZx5;Z*Nl<*O7ZJK63 z->iDbOrc}sJgG4g6J}%Kjw#8{&nm%M_=vx_*{!(Y?tS{};lA6rppn+6j7QyVUy!GV z)V(k%m%_!eO0Vyn-JEBhu?{hx{D9;d)XgZ{Kl`KP;-s&3}YU*+(Vu1*!2`qOj z{;7AP53>z&)xJC+oM@5c4sN<$Ep+8Gui=lsq}+Xy*8r}GG-N}_^$7Ka@!CCspXoj! zCmbc%`rS0m_Q;9uXcEmo}Dnc0L!#N}dC< z&s@mh={AeEfv1ah`Hlkgqo8D!pb&VQ@fu!{mGH#=8>7?i6g1mhDeYX=tHzHltE%_O zM>n3>R4_b58A%9&jmK$<_ao#NZO!|+|Np&PMHSFI`ycO3|I~z!|8;-iKS}k)kG6lv zT^u!dYZ40hI@eHIdw60$4vD>TeGV6DOO{;sw{wN$q>l+Yu(yXd{$SxFG_$49!^VFf zMj1^v0u$aJ(q8kruc+WpU1b#fHyt@x`m%A!B}b|YyR!UW_2g&59|4Cpfb$vt-=|nc z7P0tX@KMVCt|H3}j$^usZUu1QSn`eFBCz<5tG*|vAtLl|h>sr+Ue#Tv zXu(qd6%#P{e!EnA^-?=aQD ziTpnotE>E)^hQpsGiQ8?>%T&c^YP~X0n%7O5%mPU1kC@(lcL}*4%euG&Ewh3w`~@- zXW}=bU^pE==Hb!+HQ7*v5vt$v!_GvrUhuhGG8Xx?gDv~kR170X&t(7)b1a6|JMNXr z8z>9h@Wjqc$mPCy!jFA8On`d7qE784sYVLL6 zAFssdmJEEs-h_2eyp~T39ovW%hNoC*x$G_Y<2BUWLY`>?uMc^xm+UJnmfZnXE!lh* zv)`CIlB5XJV}#xw26(`#VeC5-XlM^X&JX=N#>SUq1f^kTW?MPIwdw>;N!8y3I0XAm z=xmP!g~n&H&+mOMifxT=oHqt30W%Te!Xdbisf*~~AtgF)N9I}lKbXShGTX)6J>4$R zPeAVUSO1x+ae~a(=V7Tq5A8KJH1-Zoa$;f{rW@+1CQGvVeR{b3yzFh~65FdZ|0qrcaXmHEmI_Ppn8~)|)%KiAJMzbS-BaA?Uw9w4%@7{$=VrQGXjnU)wS&?cQlvXo z_tAK@>YyjTnuIy=UE0q4OeOb`Hp-89b7G~=gJ*jQN>JQ?Ym%X(d7k688~>qv8w%WT zM(skhO5FOYvjVU*BbtEB@*dI8`}xRmVy#Krj}?~9;z-wcyX!M}YJ5)HPxg6Jod-NS z$Rq~go9_(qyCZj7?VP+D+6xOceYlVO#kC5!ErBsd{A8v>hmYZ~_9vv@PY1+@jxL(_ z^?47i8+FWtX()(z6D=po&}?HlYNlWrY?O6v6$PgqE(l0|1cETQ@ef5p$}vY|6b%Dt zBy+atNod|Yr+JwJlmq}a7Iz=TE)F~Ly{x67kOV$*E&99~F}X-vpLJ6Q0gQp7IaOnX zJ-mF}K?gwIjmeKQ(4-8J$RdYbIIH&B+m)~9VZHN&p^hWSsJuHpP4)D;-71`im+HYkZ>Nz9t*RF0|tl*xbczlU59_G#qt`Hv8K zP@oct{fG+HmhQcPiTx@QmJch9mc_}x3YIH1f`H51?VVGZRRrz`n_(SfB+z09w?Ry3 zSfCjXNF-z*48`a1-8uDs1nKw!+AT77ZSxt%=#&Vwc%tCmlzLlF^A|-;0#BuCHlWC0 zCR7&`zXhYe?M+}&F(F1X;IF^U#*ltXHROnmZ zxSuQUWjDL`$yH@!Reow5cU#$uYS4EjnI@p{5%BK@N2Xqw!K;bD?ERC&LLu?NZ-@*$ zDC~U#qI!{-0K6{iY<2iqqiuARtHsuqSsbL;6w4WE(jKgt%69SZ=jVGFIxjD`hhm?sw^YYHPihmH99F)T&3FNx^dr zv}@p(X>r{RJ`zLQ_|SKkr%e1{;6$~INszs|IMdw1+xg)%`t_ z7a3!0!0G84sc&CC*9SJ6w(|hvIxdDvuf!-uF9X-ID#Yt_1HzJg!(2x%t7y zfkR951xEI_!#FN1F3x(cJ8X>WPZ{_XpYnc%>jb^-rRK%CHhoRy06G=A;`|M13qgX` z8vj0=NK@&JFt)Ul9R?wEdaGYguIh~MN|jr@(WK#2144eR0su6mPX`EU8=+U=w0E%G zqhD{C=!WNga_mY}4Ylr9b^zGLFDDaKMW)B4zQe~YmhA*J+R^F8s&&le@5v1t4<2Lg zk)BFVgeCBfXV2C(^oqwX@Jb1MFI6f2^toMSN2H(?XId{?dY5rqn;XC`viHem zvAepiO$e+G?3u8)_LqnexVD%6li$X#QTG^0swqxcs5^8>pK7EE1bBgAlpm z`?pxY>#!g>5({VJ&pr$a`%iV=X-iZ+kE-xB`#=i`5fPX*J=#`LQc*wpZZj1UVCy9E z+w+Hlht&P(IVL=)RukXAl003kHvj*kal}e2SjXbt&pMBO232Ml#DiFKG-#ICe@)MLAz#LsC=BHqQ8Ba{BtjghF-I5290k_J3&Cj* zX7y2&u2zRI_t7?L*@dE;3xRz2M={f)w^bv_UI+Yz~HPF%|od?*JA`u-X+NG z!ixMl7edn{GwHT2aNPhQ^&eh5=tx`O;(w87c!boyk&6P3&M-U&D=IsS;rv$6d=^Bt zQ$q3q9jt`1_Y2(9>t&ISK(vSM06RfjGwqYRyQg#bH}yKM&Ml}XsolZW&deJrG4;M{ z>`LsUcV3Dw;1CBv=SIE+pPml7z$Ov}0?MHq<;I z9&4z=0&))jJTn&^^doh!?`5*8vzN{%9=<78bXo+X2p}g9&{c{DvdNnc%cH9 znYlaP=`>c#6+32vdAd5xvGo(%R+uAC3lQ-OvRi99_8jS`LCkKx!4PV1GSd_Xu>GwAu}{!N!&0G_`-f)erZoC3ICIDHyMPWc=}JnnLb zLMVQDa+exIYY9-*kVywK%ZPxuuI#t~1!`fEJcD8zq#-valA#bOI{|(6jBbC!ey*bEZ2dU4#r`q?s(yWRWO{aGf~k;a!CCnMTNb%Pcuj=r z`UDd(Xk99d`vtO{A*~DKf1>Oh46ObFAASnrAPful_CZpl$9$mi>_>0=Wo(m>Ak=`9 zbe7cgvaeYDkjO%dU3h0FgyBY~xMX=VKL&hb_%>IyQE<>120~ulcu2vyWmXr31U)B3 zt->OadR!H9zh6j?pCLFwjtQ`BwnTyF!#x>?1&jtsErgDdCR}V72GvqPVkQ7-fiug- zt)bxRJNR))@3n>?id@LulUbs1HCkUG7YMIRmu>~m{H?(K^#q!ChWE%RQLn`I2F+<82G*QTxI^`dJb$^hgCvS5YcuO98<{^X3`L>jif z!)~*$!pBDzyPI)yM{|R-b4i^%L#50WknfK%v8~6*4G>sL;zyqSjmt;z)jil|Q1aa@a!lcu| z!$Z5T`U1=3K7Ndrmu)Q7?NDe;<_Lgy2w{FW6GVprFty#@^*BW^gaJ78%$3R_2~uCr z(R--CWVl4&vF}`3Q=Uhdl>KKPm?{C=Y-$5*P~c{G3Qs`3;At2UxW&-4iNA`-DPYoQJxZQ_)i{ z1<3qp$Isb1s^?INzdMl%e;$C1v^=q=WiIHl6c%45*_~bQ z(?0s!A-_#`z@Ys3R8Bhy;!asjOv)!t1UfZ@<#&$j(gk{3B013L_KA&loX?)aWd1n9 zq9KnFCsP6MdEGCch-(hShlullJH*C2W9EqaZM{Y93<|f^uwoHAfW4a3-BzML_yg}1 zU`RstVU^W{5cvJ?XCdLG&tfkh2ksaebV{33$!D)h2dA;WJ=PbBBR1+{(p;s(&&y~n z7wD<1Xb?isdMS=_yQY+}!Kog>J1asSu#1Y$1BrJQUHF3D(baPJ5 z@trz_GwUj5nooePmaY|5LY)7oL-mjm*MZ zuN-2YDKe1HI;#+RC@1S7rDS8qZ=CDC!}B*qah3(Zk6oBCE+xxPejWkvj=Be(onAjq zyLfTvJgddl-*xta`AQp6Fc)~DKVY%F;lexx!sEcmf&V_Jtb~MW9$RYQQvu|;9*&ZMUfn8Mri}Lv)1Oy#yaS;RT8);3LSKPRo&3AvqKoDWBKMgFa{Z0Nx!MM0m!9%WhDD(f zRm>|S;gN+}zqNLBi!jrqhxc-ube|Uv7rIMsw-PU)m`jlmQGs{6w$@HX;5njKLY66Khp4bNxRL zZ%j?(a*v}Nj*5_vj>07#gX?2f4?DK`aY@OS1@$XA@m@>a1ZK2LwR4)~YQ*=nfspfMkwSL>jq;Q4s zv8QY+rO!7_Z-*Za>0ifowls^i^COqU>ZGHa$`wA6*L}NHSP^d@s#`V(DWnx^wBXy{ zoo8ZgB`0|+F6rs=?yzb7_Lr4s8EGhDcaEt*B7&2_PuUJu&O*V|ki_3}^3FhuAfq7{ zob-V~v+h*M)bJR|#otz+z`(^>VU7GSq86c@QA|!j?T)j=Urt_RQjUO88SfuwmADV* z#D8P1T8M#>x-LhZ0Lvhh7z(w+H@eq10oH125@h*vCg|gEgDvufGgqQ3qj5;wgn!^m zf_K~1_Q=?r?k{=@l~qU^*|@0rJ3HB|F>Go0)j?PzMI(&;QH~`4^P-@I{EnFn+e!H65wT#xQtxq3Kc)dl+p?BGLP`9h2@{VIC zDfAGf=*`h<4vHEphM0vTtagCYMDAi49pb!kKHTB@b748yA4n>Df?g!;c0S$!!{CSW z0zH<>TN?s_wfe?2v2xL4JTU2P#f`T!J-9a7p?&9$x2f4CSE_qZOAY0A97`o$jw!a;Jijj%T2h6=WV?#R z6(>c*asa0eV_i5v@Qf$!aMUkrb)V?s7V$8WNx1C1}b zL(DJe_cpD;&}EWR36EtXx5FeW4CQQ$rNAxxG4pUzeFM3;nG7!ZYMd# zUOn=Us$-Rpk6XAmakoSjUm@FL9|)wslPRvV>fE9#rrLIYjmIK;C3W<9Vy0Dg@sye*o{?KH5K>c;GS?)rRJ6lPN)D4rLXC7+wn{G6B9jq zm+(?3ESDHqwD6J|cgYnJ_?>gl2@$0S!&!2DgLbq7Egzs)`%%<9IhRp33U=;!+?lSh zZQ#!z21_yw20{RQsoR_Wa&g~0<}+vEULmXZ3YyMx7Ue>~TB>+$V&NrsaYMgcO2&nq zcROJ(be8z&I;EX{5~oczs+5ClKe^S#(N|oM9Vssjc3N_?>&NWi9S(J}roO zZSQ=8Zoa~OjV>>Ohl?-4U~jk4I(~)#$t?!=Sef*6N;bbP%$5-;S6DtJ34%wC4FZqSIGG<7>zOA8{7a zrK16m;vf$Utg!fZRaN?u8Vnl=-r}ygnW*}S z01nP!%tYECBuQ5{I61oBOt5GS7bvUYR7S@B&~%5qUEj0y^OV>el2SXQQJzu-sj(l> z;m$FgX%pTlH$IB0i;$Ly~D#{Xh1WMZdqDg!_r`n@^0#8y27LV`nW1OrnaH zS`wCo!+pRb3Ww#<@d^r64tEV^bYl~I?$*^{><(&y{vpg|7(5^x-*1U-Q)>Fafq{hI zfC+erK*jaL`n1Jb1whBvC>cv-21-HZe*08qC?;$RXQY~MZjk|PtOa?cEj+2T-MRgg zb{`6*(rI$jk-;!Mzy zqb&6(Ix1AQk^bh3Y*b*vTp7jS^{Jhs2k&aWHmg#mdn}|_TC>#yAHzWV;q`4%3tyh% zq5of5Z9n|V^X(G&wj7{9M?saikpldHv~1e+T0_JwhI#eQQWw~N!Hy*Uv-y+o-tcw< zAlZ}1PhZHLhys`oPNFC{#@pLixEu4K^z=a3fP8|Vq=olD#h+;DFl9Vn{gvOp_=v)9 z_;yupHlS`@A%36)#MVZPc@Q(#*oxj%8{)`lW1I|(w|cZVzm@b)5$rEOXO&V81)+jZ}cR~gnO zm8zX#Qpp=0c33(=l4mlbM{9(3yW0=o!{zayo;#3e1Za!;B`FmEpSHY8FC3L`^4<}I z06jp$zpHU%EbHrzsek@MUUJ&MAE>PGJ%?zw{vb^9;*99}w-|m)bM2_}(GaA~G~ly* ze~#&F8|O6t?K`ejl+BC8_MDGUvnb~BB8_pJ-@g0j2VU`m=r~ZpXx{uk%L)BN9SHjA z(Swcn20eyr8P8+OC)jox38dxybZ7V}Anx-s<*(mQ-DVOAMtep z;u=`%@brBo<$n((5HbLG4ZpkrZ5Ybw2VNjKAa2$oLno+so*N#Qc|S}w+88s{_(l(z z&*hHs1_$Z_R!A`|&VMyweS0^w())b7wL2DGcbM|My3moo^=hss4k*C0f7GH@JmsE#QhF zzlB-G>hDS}{fQtJT@ac3+sBYMIHVH?#R)KlppiZ@;`Z zsv(utybU45T*3Z_i5a-Z-irx^#yjB6n|}XNP>%J4h>q4N)pWqBKMxY2&pfT zZ?2aXL&#>^(N=t%rE&9;`twWaCkaD3L4EkVe-?n99|zA2*YD%tHc4_*w;i7$rs zDFHQq{VRVC5$GI(DSrGs>QT6bQZFMdeE-3Tl3Y`De~y1rW8`kTk6t|D4eo#RF^TlQ zzd3%ZQfFYZ>a+P9SEZx>X^-`3mTu@~m;ar@hNnUA9xE@UW$DhQet*I28Kecd3>LsN zvMHsQ!^IJ`^)fn~H^lW0QoKde0>sE%#-aLF=R=x44v%w7G`$mB)z_D#IkDB_MJPJX z>!SZO($ykk1J{`Tdqg)rOMkL#z@d!I z)ngN#!AR!DhzCX%3Eq9*8JAPW$pyJQbGUJQkcNDSDJwC;rpyVcO$tN*#(AGX23Jdl z-dw;nGAlhDmRu;1L-hoDiJ}dT>WITW3wq{Uls_>PMg4xH^zs$ahT8~3Cc17y2Qv`` z)hG#E0B;e>@vu2GL;BR*u@1{J9|p@OxL%BG6rCjt)U};h_4WxeUz2=`)Q4iQ7ykiN zWqY&I=c*L;hvTimnsBM)kL9n^y&mJG9srzQ#YDb%A)(0kI82nS3}u3}SR$mmq|CtI zj;7ZB@>w|!>i+gU$D6vE6NUtarcGgQ=a%A_|907W)dt812T-QcH}~@NGIuIvxA^V! zz;Dn5?!PRX=LpxZO6Q84}UV~H5AU^F(bA7~~+9R`y4!1|NOD7EP4>tkG_b#ZU@o%Fz~jDr^Iiws9ZF+}5_qZ~guo z1o*fC5+IRx@-6*SRPGi0?IpBa4jSZhKLw_qU`T5Hps$+Tzfl+Sb+`0}mue5)hgZM? zZMzwZ76z_{ANh2LYyhk05#o|!bJgQP9EIGu;)Zh;{=mH^El$MeCz0P_v;nH zhcn!3rw0{Rux)2aYRg(RPjM zvcoKoDfznX5GvRs=C%A0BqkF&$Iv_sFctX|ZL+%3>X9rWXT5bjdvq5%ZKJrVvw9#D zNnHfBO+1^2%2%5Z=P2n|pB5NZ3P3?fPl&YS73^ArifTdx#y@|F#OVVXEDy;}tx#jJ zFQOB)P5&QeUo~Nlho9AdREQblTidBu5WwNzApY3T`KZW2F8Vkl&A>h> zRWhAXI-KQOvJoCxP`D)%N*~%f5xTOI*r-?UeaJ+Zd+~0>EUt8zOT%mq-XoE4BP(9% zn6ePakpMu|>B{c9S>n>TS_@%k^aG|SwW%j_AGXowlo4zIiPnD@I^oy(;F3sz{I|rB zJdKIpe#?KAU6{D){|0n~-v6bjR|07nOhAWA6RkISFng6!i-P}A?tn-Zt!ul8T>wQ% zWp`uH%JLm09{>f^d;>~3C;)#ied`v~$ev|FG_0azNsZ`W3J-`0Rtmla&tW6m+uxe* zq)JCbGl+^$!B9o)c~$^6ld!j|U(p-@6ne=5GVc4^BVlw(e#9F>>if26uTjjBP@Lj~ z-bRD7t^!6|C7kC%A{y#m7k$DL!^Iq@rzMfK4<*vZBuY%=aF0QVS?UyewnpP)%`=b! zERGT_rzz^za~M+t%HUz+4?_>L4Aj7ajUQbNK3MK7hkBy4yDxb_QUzA^OOFXt+B`Q} zjG^GmHTOBZdequd|FyzQQNJaP#TB`4g?AmJOHIMMJVSnzZNrK`Il-*x9qZV?Y{~wv zxSdDQHf!^L-xUS68dV+0rVfJ#~@QZTJP(I`KMG z!*T)ET}D~I1s<9WKqd)*vA9W&pP@5*#ElgmuJ<67KdU`)Uwfn5Xprv>f7KF^ zng(cfC$H|A>x7UE3~e~Shm7=U6pW>tN6E@8V$-KeN8wFZiiM*qdXwT74qOEkJ))nK zU0fl;B$r}DUe8JMu^z#jb-W4NvIt8166w=bMH*c7R+K&J^5oZD!z6d$PLXR~jxe(C zF6!Vz4X%U&dfUP+hM||txWdaBLim=h3ghQWmH{JNx7Jx>OAba8X8HjBaJvuO3YsCq zm$Y2ZCOfHwwOJHlg#S2Gd=Kg!?ax-Hr@m`~T?iIG^$cFXS3LcwmjXoCpJWv|med1S*cmy^ z4&2;>4f{%(rZ@x4gn#;D6MVPxsi|GPD8ggm5esP(PB~cjyJ<`Pk-p=QMtA;QOE0PQ zxvw|tzCypd;=Z|YVr9Lgs6LzKX;OnT_=E)4TO`W7y*r;-nZZ5g9W0P}yfGrkhvGe) zFJIXS?`s4!=G8eA#YlXgC>edDYsUqCow+?ue~qPmUjoGc>4VcqDa)=W)=Ol_r5m5-KA5(QBP%Rh#{Xnf~UZNB}ql#=;9u9&Q>I;*=Ws<^Jdpkv3Etx?pH z&-N;IuVn#8gQrIk`PuP&ZZ{6}uH6h5*%$R+?3RA)D58Iz+8a>xUyFsQ&9C=$_)9te z*QauX!fq255M-kk>AorPz7)c6(R3GKtPQqB4{L_E1jZ#DJPC^>GpvbH)DB)^+&qZs z8)?J_EFq_WD7MkFLCJ1l>zRrcY%`kDb)7y5(>8rZwpMTu%;t<{ZSv1@c^R^uun*Yo zg_F>$qJR@B{?HeV8XLvm8Kg5i=3E3g!bCV_?+h!*;C-IK8nj?}iVB4q<_sz1_=qOr zPf%X3CDWXdEyEdL4lvWZFz>71upfrCZ48eBA{tLnkx(0-?r-^y5~iejG*3RHkFrMu ziQ5EB+c66kU($bTe_c+>P`b2hPM{;Q5ZT_mOX7^nHzn|c>6;=Rd@QNkE}2Cv8`Y9< z4=W*c*E0GYOKVdciCyIUYtv~67S|o=)px6?yqE73u;lusRfm?6_>(qmzpT1Q2#^w`x43xCL2yO@{yF{tPR6^HNCbM`cdCx+Mf#c4laS_ar0 zEGl!iO?4tMCn;6P3QuKzfh-O?9qGrV8S24^q8+>rpY3~f>*jKWgpw3ViB` z&x&o)c#cF%NiELV+zvTSz~d zta`R54|ZlG9Sz$jVptB3BP1lWa|wswV1cu7Cc~@wDvoUShUIyReLX|i3vW6yV&EC? zV!^5YbBbt)@wVE7I*(%Vna9VT3^!n8ZFvERV?fgY7rsW#tY+?SOxAQBoNX*3y4J4J z80#39y6X#m4g!pVGfn5}$-1mw7VV}*ijWHp+lgkBOUh5qm7P0Bpb}vn(y^++M5~Si z$Dq-w4YvN81dRc2bwa|}U>xj)rlIKlc`K{J%X>1)>2_~U*8%jtk3S~7Z-wr(q34%X zvwCV116QrEy?;A6mcum*`YQV4B6!*buC$JJ@O*(gsF~3@s9sjL1CV zN-@~P(XF=lI7)4{r8$b_`kt%LRBq4SmB%xG8Bx^>BQBKJo;UW@%s7RwjZ8Fx)(wFJ zY6YOaE(TC9kB^5O;sUa{HyY#ysj>t*kOb14eVlsZ<+TJoYAu@A2LNJuWhoIDCuDNOl-N(kTc47`y%GlPXc z`;LMEnqJAMjR|*zlxtqc?@Rlkv1&1XTWcY$xqaH$L-*Vl6S|t}&K>j`{tb z8x-=cj%QRwYeAroa*?pf8lpw#OaXFyC>Y{vecR1y?*zWF_&zj#M|++0!UD)rGER$ZFbVOcw2A zC{2NVPDV9?yQz7Dmdk+dZoQQ6-_UUuNQ1DvJhJlUT3AURS)oCtd|^$q%ug}+s{I5n zjra!~b74ob7^w_QLWjw7Q83VO_>|8?`K(?X7Ig zn<Kz_15_jO8lJwSX>&Pkzng9 zE>`+COPK2fSPa$mYAz~F=*6FnxvEy^DEljjL54kiFly2)ZYv%K*KU(UAwtUsOacuD zsTwSjUqhXAO+jF92g4kBFI?kdDzhQfO<%?9X^N;SeEJHa?5SlbO1V~TY_m_i-kz(OnH*D`vZS{V^E>yM+rHE zwadN?HV-N*w-ZZ0&P6Y50FSKRKs9yKe>UDy5c#vqnOE;jn~`Ri*ZJ2ZbOTh z%={WA5s0(1ss^dq1r%h&W9C3S79k%vucm5qJKF4}rk9;q9hL6sVRHDZt6<3$x zCZyb?J42U(bLS4}YGgcbE8Xqw7y#kOmpWF;+U1bvz6+N(%{3&`Zi1OkEeCN5a>P*{ z<_sTD*H1e%T6-VrCBs02D9N;}Z#$}Gw^gY>&TA~Gjeu*ba?0uj(lgcL)PY`N)ly?Q zpWvyq)JVdh3iOQI!xopn!~4>qG~()?hu(Ov&x|+so<8DBtnoDV zHV5N(aCb%g4&N*)r7N<#g98b{5wwy*w^VJi1?J-8vPoyoy8d>jRN;KUGep|Mv)SRhoz=A~eBM080L&ja5_ zW@P{nSY-ZrRWH=-GYq8p=_+meX@e%?8~=)=>#x4)+BY?a96aX?wi!LhV}Ec{H#>om zz?{Qf{Q5cYhB)n-E*>_fyXd4@cHdu6K5nVwj#B`fp0ocrTZE#AnV*!ffD&&?H2369 z{l6jgs^sN|$M1DJvAob|?bY_i^*RiAQA3ZPLinwu{&Fyza92V=P~gS(kKBIMc=)z!b z6@%vT{B}@&4!wr1CNMZ~!-tOQ2@3xj@V{iEdl&aO@7RWC2-)Z`if}`YeG;U==mBGH0*@JAP!4<@;hZX_m|IgYjV=BGKj#gpU&Y3!#D zv{2vqL~1%!?YX~rb2PZ>m`zYv5cA8%UWINSC_RfTB3}(l@M-+WrCZYPTAWA_))e$K zE;rsPq=-8<6Oq`5{Q~SdeU-_cFYaZ#B`cYP#>$>8b!nB4iOyXXVz{~=X|V+PEhupY zyS3D`A6!(!Gw6A#g93eXJb*7AYk+_%F%McD31E2Eb(y#YD9rXQzWm)!5!yetdRWi8 z+)y-sZ*FGNaiC83?yF^y_jU_k#qio( z5SCg(NqpSyM1cBlQV1bL*^uwj`c{9Zd}fJE1_-G zzc^O>)D7RwRcPGmU7Ug@Yh+MsA&L^PkFHtWclT3&}^ zzmsAAle`}TG}<3MLB+rMl}D3+qzmBS_v`<13E?pQG}*;91Y=JKcGx2rJaGM+>#rTj zcWy;gxR@XqXnrA9><{F%2K9?ux3+ zp2ia<_=cu*pM>(!yu8!H>*f*^=TBBx0uesC4q4&mqV_4y$}G!+M*YOU{NevvpvCyl zIw^$o^1;@s`ZZTJDPi{1CI%d-Rsa+@=O@LWn&1EAzAl)4-hY2#&EwtuZoBmeNO)>7 z_`ATqGWE2@eYarBC789k_g*Sn)UyPs7k>6J9`bl4N#<+vE{Q^Fv&7vJS;;jSeQTYY z20veq>G0&C3_AKsqA05$_WoVHTN3g`25HOctQ}nts0?LrheAGZ#MN+N*vfjN6CAepjAuYbPx@%iHQGr+L7oD``;5@+ZUX zp~E)ofd5lE^EgTde&8C^%kr?BeL~*Fzd<1o{n4%j>Da}m}KkXB=Y=vd_57)+0e-3a;zHUFA z;7_WyY_JZUdRWTp-DcKoR>GDnuOR22XwOLv1~!*kY!~3uR|>9{q)>|A@6@0tNva@y zFjAAZM-skF=WpUFVOD+Z1CAk?G{Cw`Ix&{KNj7=7Gmi5d4JJY5!7&}bgNIsJ(PT~( zD4|O5Lk8kD?5FW-wShqu!hHPqAcBg4H;qeVOu&tNSSp2&o4b{H@}ygxMgake-~f zP6$6tcB*2ICGRAlCl|9sNT9G^b2ny*Saa%k8~H=}lS@qSiX?=qU>_kg-pg*eC-|ZS zFfnH66qq_|Pn!$O#BSwypGni|PI8F(z_^`SwOd`jLch@Edvt2)?){GniXs-I@!9|i zL$&(-GtX1%FP1Wb+r@4fmZBf@ZOn)_)t6(`PPub7^5J>+n!jI*B_^)YBsjfF$sbZ_ zo*x__cN}o7_Lw5ipiSiZdWtlynTkD0!%sH3!QoUPHF(+VAC1ahTpPV|)AHM%T>_-> z$?Jq0coSbV3=`E1F6qMBHQn9@cEn{)-{wJRVt*5%3VTlP2wMLt6NrJvT#Sfxrin8X z7qv)qbJL4$ZD(zKLFK#O8L@6xDsK5AhXjk*&)Ln(v%4#~vgbjDNMeOnJ|+}pOlDbZ z)Xk>*c#Mf5g&$j2gb#6N)wh+;0SH^t$-~ad!X^c_*3)32ldtG}hbyT^=)Sc%(x20y z2sRo7rdcxQ+7o^g;yX3NW$T%*V$l@Qu-qjP5+E0R8c}vGO*`XbkMxy()T1 z)VU8guyLlCrBsZnABatXy zQ8l6iqs7jURqf+i;iD?+fM43tgq{(cH87|C&k8O#``%m1R~9G48%SV>P2TFPRJuqJ z0tmflvLexPGQwmtt9cL2E-K)xR{tk8qQ-{5kfOm^r9Hb?@{(%zl7+&$SpmP{@YT}S3jJ!3A z1*{s1iHdPy&_YJR)mhe1ZEeK-);6w521QKiibCnKs-JdIii_$o<3p`VLc#%j*n zUbwI;e_0j1#C9$0DN*Vju6wfzT$ zm)7UIS)D6tgv~)9;olciU=Oa}ODZaH6+o921G5O;;&ynsb=e%odU6=WmryXo>*pnh zk005wLG-ppQ5&GHad45NxE|T)y68?Q^8=of9IxB&XOxwMA$FKb#4wVvi zE>aBMa~GKV&2q0bJBK^2EYy%y1nSA5gR}PglJoq4-*co?yCko*D(E9qO~JGv1fYr1 zo}eI84h6FvIFNJK7iCUJVUfg)IZTfw@r{OFvYrpD^=LPN-=A6zBYp)*iRRr#&AhjeFfc+Bxva~*PRtYHeR9ZXmB)wL>?az18Ms$tj9|@sbqjl=+)p^8qek_OO-Q(<`ZL2 zhGwjoH%f$~aGVw4uI)UMb@X>xN^4MZT!kJJ6Bjk`>4VzJ<2iF!Q8D#S&saHv$zbAb?j(c8-wgN$spq$+F%l{(IyFU}8%< zsp*O0Tr^Ne^#9OWNGLZD2lkXsD8#At7*|Fkpn#P}@>ObIf5I{vB#c_@*eS2VhR?Z| zG>j5q+;5R1&)}kkLe9*$pooR;Fs+jZ3dRkkmt(E1nWrc5=}&*L-5*}@^OB;8-Dhpu zsNA~@Ds9zVtX8I2O#>eeA+fW^PV1Y-txN8>$^{-$4j|-5+p16brQkl@7jEE+z(_%d zprvKzemdM6I^o>jZpLCE?g230Th10B+t7G42GyDzwm(X*3YUOz^@|kE<;;f&(ywOv zAUuk?mL^B#Wp zf2x1Asmm^@JuNAAE)csl$S_eZSy z^Er|FpsZv(E!XO6;CCgma4YDDV~)F5I`$=S@C{aBb-*mpr~RQE_mZ5>oX&j-2Fpq^ zsKmLiY;RAUJe&n8_ay9Q_Nof?Zhsfv3}Yd-8?@nfp|5(m6UCxh*DKf57RNq{uQG*W z;Y~eAZ7w7(j=I6WwnbS1@cs^b$<#(0J3*TzW7h%KPm09jkJe*woB6cufgf_v(cxli z(cMN#t(Ngwi0(Pj==)pYrJ}8Uqs!GPQ=RC8Y&z>+l^b^3zT8V}nMqnN-_Y&2y1({<+8M@cCWOg}s>`oI1G;4edbb@hA=~cSMx$d$ zas^M_<+yID!yl;+J@@PijekcB9g>Z=UG2gkE+&f+ZR6qV+T`!6Ua_yw=w@c`b-_8- zUKJ#N`><9M%x$_23~La``CnO@v;}h{a=0@wn zd~u^}vE^cG1;c{X_8ayrb!}={1kO8v@x`3&I*sgTBYi7N*z2H=HL>0D0Cy`-)g88U z8YgJVcjW-t`D=g01HUNk(eWef`zvpTq3jNYdL{ld``uXI4bN>0!A_m7_xYZ@bKpLnC9y!4X-R4!b9Vd!rM& z-e{~=Qo2v>7gyiI@5uo}W2j*b7)2(A997dS(X1PK0*8P$T;1Dshbi#Y@9NB7Gdtkq ze$Gk3betxrS~@z%(<-irhyzq=lM0p65sHto;H7M@DR%ce*&sL@3YnQmq;N?YHOQcN z@Hz7_n$?Ng{qBnPNaspQ?V@hwbJ+3Yg*Kl!h8(~iU&F6*qn9vn`yCw|l2tm^rLpw* z6tC&{EdBQL_tG;uN1J;QGKF2FyPKEIga;`dQph*cn!ao&(_}QNFYY6mZ za66p8*x{;`2lWZx{=&83{^u^(bfL6Tp{c72gIOJgr4~Q@Q5z(XLB$3okocUOV)5|+ zj34>54Qj0Jp45+Q0OeYsAW8Tq5H#fi6UB?mo+K2vTn6A9z!M5*T(3@s%4N$GtwF^Ece4n~5H8a%X6`8UwVAm-QtUKM6B8Jn1i-Vp#VMl}`a{ z1-R{BLlkO8o~jleS2A>i5}heT{@X z!WeD1W#lH;Io@gNf1DVSP=g_dD<|S9|Hu}~u$o^&r_PcA`u?{Fuf`?;hJF>r@piKU zV^Kv|9nYD7b@6fQTrhrL@~+Hs3%(dCa**Sm67>P@~-@ z9vml{>C58J-&f=OS6M(!=~hGmn14Jm1B=Nm${C~JuM@!U!sf%;WVI)z zb~z-C7yF8?jH>-;R*-xrU8!t4+k%q8tHMoi2MCR(wx&EaCQ_7=F7wE9NBbZmX@@#S zt92W7^bs7q)cH607qW;?ed*|h{X#4e>X4}{oHl8vYIcek2!UztN=ijJ*pnsD`97)Q`{%M!`377VR;n!JNv0@%v4u)R^;Q{L=??m*uY?UU#D> zNs|cAw0c8z<0k*CRx(OLVn<~9gqhsOTEaEr5CPakq#!Z&WsqnvOp)8}#0G3rj~EU( ztl4q$G#D!W`pDgJK6K7KVtL=IqlF>LA6m8caURVOhFCl#`Gfl?D|2H}MQ;it_@7iE zQ6g2#Tny_}txfZj4ID(Wg)ye?+!HYnX!~kJsaMv!l&$4g3U&7bw)-CKE6$9seZ2D) zJc=!~sUV)GSL9jakK8v->Z+Y#3d2c%jrHVfu7p!ry}#RN%?rzjI}8N^w8>pAaFQ;C zq;$^Uw-f4^o>=Txy4)!ImT9Ghq9_S*5)gR=wdZ!iLEwkb?GC@EKIs@gLzHz`30bW4)(_W3NPR`T5+7%2~sHjD+0RGvlX1OtV=8#===;FUs1Mj1^ zjMK!Qw8-Yc=F}|1t`TRC9OmFoH2z%Zjzy}9GkCeM3KOy-arkZeZ);Jy&kjS7`Nc%R zRUvZOq{e-AwC8qIbEIYTV@6{sFHgCz8yWkw4eYz8$}y(n_0v@S)%;t1qKdeoz=TP|B2xuJ2jr4uL_*PumH!I z?gM76)W0h+Sy#N_{VxR<&;ISfmP0yHv6+<7LG)O|Yqf1%(QfqEUUH$G_dnQnbeucR z6mr1Lc(7Gu_}G3!G}nAL+%;vsVX>j6409_t935U2_a70gL^3a|M-!^S4jmqTjU;g_ z3jw{Om%qD5*Dm^XKVW-@hrYwd=t;{ZDu?0Tz0akOLHqB^nPuQ7VS1(Aek;ir3*Pw4 z+*H*2xOB@UBU95nX9!YVv3!)fhl}vPS7qOrUSh{KP2hiIJjR=c^I!SJYf|l&-?;am zYkRgiN{#t$e`@Bh z?K!QSwxP~PjeV!B=+S>Xi2vOlmw%8eL=AfE=@iQOo2}o$MDfPR@34kPi)6TshQoT8 z^oMr`lSKDQT0m*@w!hlJKKmb`pYhF0zeKz4_U4Ap|Fc0P=e|4`F@N7f|I1JI2=4zR zA&_ET0T{18fpoh3p8$vaxG+{}D7k+H_cKJ<|3F{FKGS2EmHs1T zn_Ndv{{nyMA@w+eUr#iWkYyXSz!2`Fn5mhVlqWeCS^A3C2<`y1=} zdxst{?%nNd$^ZAnwFg0koy!Y}ACOMDCl(or)a@U@>iph)e?=eA;L+dV^U41`@a;tS z>Y=RM9|YFWR>IdkxqPLx=wpKU9C) zVCM^_)A=v+wENx1(ZUTcCmbW6_<#RUa-H!@vc);hwGLpNlX+XaQAY0*E&ToM=oaif zW3xU`HUBOHOsz2?gb;v_bW4Ey2#+F5Z7$>Q!4Tp{X72ilJstM=G=0uFd{{Gw-S&jA zhs?2jyUU24-8rdWK1ca;Q@2ehT}?t-f(fO%uL>s|RRw3x^a*1tbv$I_kH+5Ava@yG z37Q4~iQl$h!@Hqdo3~__;_AS0o2P-Vd;o9Cub-fQbPA3idpaPZ7 zt7u_dY4Z?t1DOip>`~ruwa?qB~vY`iMtU z0V8r-udhxo7Cdbi3kDLA3B;@%zIpF8gcw}wHALrb_Zd6AV2<~r8NfSH+5#Zo=?g&U z3N~)det(iCW`Bgi%=?nAd5%qV z&33uJ`my@+qFankj_M34sAb~Z!K(1lz#&D=e}v2Dyb=EF$A!_JYbbu~h0~;cO>HSqoMs$S= zR#kNf!rshbllcWk0K8lH^7LQC-vZ~sl>Ft?6s9WaI@FC>tK~>VYN#jnM021msJgM! zxE4{@7NLYNw(a8ssJnSzfL>5;Y-mtUs+*s`Q_NA+t>tAjPZ}_0CF7Rw{~(6-6ar@A zu2r^YkD3n$6EVvL#?_fSZ$eRplpWUNfiUTth{S!wPbQM{Im?C?bZqzS{k{wigOyaI zYCI3vI#HTK`s-R)>t=R?MhN}cS7c~FK6HoT&T5x;+6CO0ICT1dxG%K7_V8!v#i%#B zk_eUAuv5bdo^KCbrtIST!_MM9s{arB|BS-}ngtv3oPuwhf=*^UrxKW|l`Cqf6QZVK z2GPY!?l#QTen!+FZJ)=}xR@pW-Cq4}{p$}z@P1Awd*}8Pq~q4GrZK{bshaO)VS64o zb3*>zu`K2ak@duMU^SDOIMa`Jpi}cJ)%MwAPCeo)aHfYQ=Uz>6tdD@GJEJm@{ZG|4 zPQ%*~$kRtRFXj@q-3S;kc7VDgdD?&2&62m9Up2?UVzz7OE6cE<)6kz^X?~mAWli57 ziKw9Xlv=x^Ghl?n^ViLPw7yPQr6UU8n>pryFTt__{HNw$Uh-lgaquNSod1K+IyV0g z(^!8rkG4GqVGs`-bpJNCa7O8_K;XRMXl&TTt0_N|7AYhBZZhhZp+T~^6;a6H9Aqqp zik_4>>~+UseHgZ{FVK;*o(=s^BciT0yh2#Fh(tD0QRhy5iF1)77xk~~vly+r?j;mm zui6m!3H{+nM5oyP;5yVT-k850=rdc?o1;>xm6?Dj@5>oeuTeTCg^PAAsK+63(0isS zmZ4B|fH46|Sc19ANfLqhV@ay)pBeF8;J*P)0X4aV!z*yc9sM~?d`;Y(P)o_pn0hCG%VF48C)2|h}czCVL%7Hc+^ClJ+bJ1 zJ1DkH`FNPi%k=ecq-YuQvy~$;9vuJq5o7x}BrbQ5TD8fWKhN90s7ZFGhCla(Q@_gB zMcZ&7$EH{RJwqa6heS3>sFOFTGFre`T1 zJ@zStc<~FJk~z}y_JfH}ky%tp@jEevVKoZ)gBmm?)2Bh62+f9nNt_t+0_HqVq51zl zWwzg&JjZd=et6xiuA3`uiBVDU6ZrGUTRr4HC}3gM_tjCnwNJy`BiNz`#SsEgsV0m2 zJ5+>4i&cmeVte&us1w|vvpoJDgMw8u86g~SPoH_`b~TpPev2V8UFIfOs1wALQkvVJ zc%()+?D%W_5!#UOh`k?RqR9~A5Z92n$&aptHKu)=d_H|Dj9D-Y5XaHy0zAs0ScNEw z__~K=?bLT&RI|tOl^k|W0ro@xt8TXlwIT~!43a@QUmOUj**!0H52A9{9n2aDRL3nn z|4^^fve?Qat&(%T!)MJX<@Q(YywNi&1yj*+4F%=O%4Sy@`0rF>6wP(R>d3QyA5Sj{ znGodh^r4ueCExHp9c-g*F0)`2LLkBak~ z3Fs-qY8-*Jp#@N26c31gIj`fVj- zDpI|NA0Xk@4WMZT0634X6^?OZ;`M?){J5@K3eSBaKk__Y%oZdRX%9i1ba4%K__*&- zwk<m5Xqg^jxBJri=zau(K>%yZ-(1 zb>CfsSbw+7L|OrxdzY?`hnLD8T&lb4P{KEw%Ee}|W@UxIvo)nyhcQp^lmvK*tE;gdg`gQFQorIUs;-Gxq!5cn85)OExhADVm zvBQ( zg9h(`No}R{rmuBN>KdqaWV26|ml-ubsoqMh)byn|XL*(-F&m12OnOm{IVN9Baiw*K z@7UKhO5k&d(T8MEdGW9JDk z>Xog1f0*Vs#yos=))A$p_{!5!1ND?9QK+tvG;NY5@$jH5BT}a}{I1Lbs22O;Rziip zAk_4UJ|#qAh?f3@Ac<4(eOd5{MS~AB?y^`bR{G*KHzvc(#2UWvEt9JzXng!aY^c33 z7)VXmr){Yz#JNU3+mWh6x(`YqnRYr)zMlNxF{ojB@2S3>deYQqLEWxxc?T{k)A%mz zABH2sQQh-4ZY69>Py3U4Xi`vv$a9-A4GbMBgvG%uk*}*vg81dH|9@P!Ki?OIrAbv& zp?>9j@h5mxDuWU#Wn`TO2l=a@1=PHlHuoheAhO^FBV?rCnu90MX`Q_kHY{B?^R)`Q zNh%f{sR6@kQ;6Iw$Tew5%#1V;yR{7Nzu7Nk&wpAUsud4PiyriJFjH+Z(-WVLnuJgr6f_^_lc#`Ym{sx@V@k2pI*W zu;940Sv*r_W@kA2VTcM2hK$^MNN)JxG3SU`tBGna`gRbu{W$l7rsong@Wol%h3vszFv;7M zx;`=bO`RcJ7Gve*JhG&M!^Q_3#=dqA*ye#;In~G+C2{ZnxdEAYTaDBDK#%$(vfK&! z2hAlI;bOgmK@gjmr4^3xHvx^!Y0{>#B9xJ`WcA0|kK1||_Wrwj8+)q|nOy*0Z#b26 zX}7b@z-gpBDf7IQKy0%i)?URCgDyKUKf4q5ZBPa9sl}ZH^v?M3L&H-%fHT&LFqy1b zOumezvma3gc6RctcIXW&L>vH2K(oJ6oN)ZooI&t9_^TRB`~<4!pzq1XTdGj-p@7Er z9fqxJ;c|ioHS4&@j#I!Pd<^!0>cA=)g7W@3jw|-W;hUzFrH86Yh4n#9HVVza0VLI{ zI~>}C|9-{9!DD-mFd?F(){xA{_ji~2_9GZ-6k>7+kHb?ad{nwx8sK$tNU<0(%y{iN znu@rGi1y$Eo#0(EKOtW|b%~Avt=m8}m4X^+OrN=ZtmgrK>>e4{z6>~%qh1quToBp9 zWx)!(QKf!xJ!`EwUBl5xU8JyHRI?RW_xQd|@3aH2cDc&LSrjbB4w%b);A21!ROsxm zZ@oVw+#%MC3zu$Xol2yzJOI?7Zk`N|L)Qhi>yk$w>3orS|ugQq&YU9Qu`C+Q&6G z*J=qlJYbQ7=QXyOXgi?cU(j6h{F6Sn}bqZ0nGeqK$-M2t`1zZbC z=Q(QvGAqvmu0DzQjx4Ft{DhuAA1HfWNtCGxyOvOn$(zDL=6>ozoHOPm)RzG#y1cWa58nxM<3jW$)m28?6#kbo@v3>nI_l8xlF1QYY=*~-&2hI}b~Y}*9;U!n9M*T^;+o&`pzXJRRazwbDgAXHW3u{os?$sSy{M

        2&#z(MYg&R%mX>)&JxYYSY}TsoFqC&}!*otxeOwCBcOiGdh#|0^2kti9~xm z3y0PzT>Ou|bw{BDGEtYJjnm>Wik26*61V39TiQj$r zh+uA<2D^pYJww`7_gFjN$TE8l^>^6W2Q$-1_M+V|JGS(5z`2Lux7S?0mJ16oO9&qX zI+PEo8Z-Oqq`k(c7%vO$N-`InLwo6^JnIIBd4FBsGEob{Ig8#)KU%H@hvRl^pA%e; zHFWf8YWu3(T?Xlvu!NQ8CxjB20nM3^ojUpSeOVvY5M80`6SYv17)}^whsW;pYKkBj z{p^Pj-Q2g)obKBBK6e7ITbzn7u8)XM7m;SQhPO1t!Qx!xFbLca1}vrR8r1Q!>*F;7 zk9@sI-bUs)7a@Joo)OmOF=p0|#hETWvk&?AY)X4p?c&xo86-jbFR5qtn;!2KvfnNN zXDyJ!i;rR1K`+R|hQ6=27j8p_>95xw?0}^h>Ua^>hUiQOTujU-5qMBObxsg4-8uhK+!%;_d>u&)06d0$2!pfV#Fw=B_%fTa&x8EQr+(j*0FSy}` z%QwFC=ty_AlXg7h+0>lr*s>l|kDQ#PD7|kZX8Ty(tfAP3>2~3yMcPuE&<^p=)NWoWZ8{P~a#!`+X)b(0$W7rfVZ zMSXna)ivH&+4B%E0qgLqe56B`oM3MDlD{DlCv0n$iRt~lel#bC$g)`S>Y%UQ5=mei z{COq&dilPzDmP?5SAz9H2e7)9wej5SpHBYEV9mC>affm6&I;6@PDxiO*)Ovx$`3J< zhU>NS7xOW7y{deQo>vsj&j364rn0fP78_br>Ssz{-6KDyKxm~?Y`r)!_S!LR&uPUJsA#D5pRD<2z5H$vE)j)-j*DmlXj6 zIqkk!H>TnEhfZf+oX`%cQKJq)A4=MOu1M6{$M+Y@^sKth1L*OaOV|K9^E*@4CXBzt z6Aw0h{&)uNN!~N0^HoTo#%^CHO}!6rYR&ljmXu>b4ci|ul*wQlzJPhp7b3>J;{}9&QU2t6g{`*q_i$>_sD zoI1>|`2IgmJmOAMY!86C+Yt1fdo2+)X&qddPFk;X-4cIgAv8TqdqbtZ`(=w5ZDgO< z^?YCoXBoryAn+7`FSY;8B_|M;*AqJT;KITnA^&B%{lRg6xK~$$?yh8DF)un3svj!l zShB9|LLAMUQk=lkY6=m0If@br{c=iE)HYPr8U_$jnFKdCaOfSuv)+Co(S`9IOKfol zt^5kbqd}U)H)%rE&&zs6%Ew#rB4%54I%lZtwbDDuXpvIb;}A5c<}@^&93jm@31)H< zx6zBV6319w$uaj?_pmw2cX=YUE!7KmusVn8u?aZ9EHk8!*c9+K!KVu65B##R^FP9v zFy29|DK`t!gnyJYbIZZNDCxh5B5ck~9ADEo{E z_b5w7MM|-_-k#FFv^S#z3g^ba6oqcmr5PaO#mL|Cw?c5iR|&GipFY>Qs>c#P;SRip zG6=LSpm42Q_25r6x>r&-``=sJN}XFXLTlta<~kqZYdUlhJvRKl6jLc$z3lYD#>=b5 z5zO){jmS3751LW)W4K;5_u2KCGldoWd~bG62(GHLvN?RYw8V?v(~11I`qs#;ih;s->xK@iCG0zig$ea8Leb^}=|W6JUry+`3g0-kwr)yNei51=f|`!LNxb`q@Z59M zOSivOgmdMkizi*3gT{09Rwx^UKl%^$*pPlw!GAA7)|X-dW%bez)zzg{xNJnjsMXfV z9&UAO6it?$wk5C+TnjdV0CO3R;b{(F^5R>f-GbAG&e*VyN@3rgGn52X_DSVy#&Y-$ zyWtngn+9b?!=cij>dYvg)3vHioQFy#$t+SZkN%7ZleAKwz=P|Dpp1qWrAd%Vv0y_D z#~xHUxhLJ8Chb%dUEwuX=WHk9>Uo-d#2aCJR%ruS6lrg6hw}m=a<4YNR&Toz;nVt3odd5z@ z?)LO+?e;!%s@76`V-CmbW?U4#{$|`>WwvY>?tPR0IFoaNvy2@~ode&49?z0`gbhAx z3)?PikIrOhMmL*xUq(xO4;8^5lHh1F-{o_}#`?mxDsqqT^n*BfN55w@)(IRUwH3?; zspj+nD?D!JbVPZ2+Dgyn79?S&9ts2oCkC2_a~P5~A`SbrvJZpws`-$ZpyCLai>dtm zs?i~>hk@)mE!RHF_%Pc&X*7Fz&Ch8?J7nC<1KLdLX7JO|9d30auAfjQ_q8ncPXona zWxc)nz7J)kY{Pe{_P>%ck|X2KRIkemJE#u;m16im7=OFzC#}Y@JW(OJZ7kLBp;CP7 zdR#0J?i=-`4aqz`U=F}6Ie1jQmT@1oDPi@)PYo0k$$CcdL%llKzSs0pvYwqGgupnP z|6PezZXe|Y!H)7ARPpPs-c~PMuN5I0pZM9{nA!^c4@FBC$0o{6B-dzf`QNYe(_Lo? zBGmtMzzV>~W653s|G5TiYQl3in1TVx?Q;Y$DA7az)mN<>+8jG|VgYD#cna@y(3W3* zztQ;!x;lKcomPxyugvk!hMcxKpf5b~6#bmy|1K^ptvnPoxB3HcYEbY*pL&QMrqmIA za5jI%9w({f+KxT*13e}3x3IwVy=BLppB0a;5A!f_I|jm(h6=B|GlEo$m=0b%+k~ zWTzK8#_x{wr<43k2o=fIVFl+v8o!O#J4xyPw;cb@ziMg=x9cZ=U{feSN6GsNC);1< z&>6g-`}M!`JLt=~gAA^GN|+AOru!a#!o*N*fk#k3Hw z0<=^ZxKaZWIKW+O9^pW-oEuAzhk2n+8)uN&1M4%EyrOlQ*&Pf6t39<7sz0wxRFu#V z<;F@cyJqKSXCgZVw|deXP%GF!+@i7#>hhwqfQX2e6GEY4!wW_ILPsM9{Sp0Grbh_3GWt?^}49x#9|(HI)POa|UJLDgiOkEo}vl zE}bwn?Lh?}l3F?aCA|T)kfKDm!yHw`N!)TXQ&jlIS`uF6wGi+3(k)$u@2(LFxp(7R zkietjqIADO3s8q!g3l_?p>!Ta|A;+&A0!8ekR`|99XN@f9*!S1GSky_BWKB_C?m%R zUdP{V2d?$kAsj0Nf;_oQ49!|EoleeoQF=T#-IWvE|5wMN(UhMT+@U7!i>q~y_G|hN zM?$x;$o+ZE$gm3M#2k}4v8p5*DfHYH3^83_(9s&q5Xra1OWGfRfYPLzpMF}7zH6vz zsiT$S0bPHHhjE)SF<1P(P+)H!`;EgL>|aeA9YI6$t|t5N#6mi&0@q~})DA$Zf8Ipm zhBJn^89Sv@LpD;kl=?0TmiIjPmT=}sQ*_9Til2bf?74eV$&Oqgvv8W{?3{<4X#RL= zec_xus)pM0`&PQ$#uzv30RLzj%_N%$7dlq8$+gd+xbkbPpks9g$f8Tr0y0-;J~G6j z=~9Q0d-NDX$bCtYI+SyuJxWKY+_>n*{ecTKafR7!+!UW9^GI_9C^kb|>9qFem6RF3 z^O;|={6%R+p)mD(zxX*TwRF*gesWat8ntY2EKm%v&~X#!=aJOMKMW#-&5rJHqH>rx zb3Nkf=Egz#)k6nWU?Q-i4j~j!r?VMZ8G(KDgC~$eGS*U9&mIAkh`(NenO1H3g=tz3 z{9lERJnGHLD28d>p5ENJ7IXUD41~1O+)W(B{PrG}Qc_lN?iG5mLu;0gD7;Tvh>IaV z!(j^ea+V1@-jiLWIXkup^{F$}n*dIpx8;#6ye z37ByKbcI-8VmvddpZj*$nwYwk?U@;~b5S15k@iiT-SR*z( zrcRLGgP=Q6q^sM$Y*%N-?F3{dH7#?2KO8n)m=>Js2|;~}Mc}mXvU8Amfvak&Q&yCV z;6wlv{VJtZxYS(Y^sTm23CU()LHbCc2~{|?jV&~?Hme-v0Y<)6K7l>qhIA7C1^lq0 z*Q5+d!G|v;#@&j58dV+5zRj#_Gt3$`gzlm|AhajY^~6&@yS>hac>E+ zAedRYjxzjl+H3Csg@0&oV}vZYlBU49DKSYX{7=PF&^^Lm-(9Xlc5%fY6I&BO^!*y7 z;Sw1&w}l?R4snLhT&BH{0Tt+wo41s!1PJ|rg8~+D9oM`?fI|0)OSv3^r`(Y{i@c`_ zLYk{b#L{(4E&mXQX@%~#YD2p$we;=t5V3WO1{cq4JTI%rjW|Sq!*&xpE?whgbA3M3Q~1M;O&anFy(WS17|Z9^ zzKd~W?G!(OSsqa5W{%%Fbl?C)Qk2O>NE+lXRkkA$Qeeb*1@{g4TKaS}h{VW`k@v8O zZ&7+sc7t|wy%Bb~KNJonL6#r&+f`;%(rYc9@ ze7uKo-gB*f_CLt`Xw+l=%=*0=0M0?2Oa-(}ZA>2}m^xoNpGOzB;5KeK9tr7cd!Gm3*1Pu?_Y=cb~nixB4n)IQ1JqUthv9XUtF_a^ZVd>!v<+*_iJnUAOyI3AoS$)@zXUvic`szNItAQ z5-vqZzf$-)?c#I-P^U7_204n7?1C-3WYUbbf9Q?@3eqp zp5bKtB%vaXK0~#I6qU+>X$w(NBK!Wm#af%9Z_!lsa`V$V){d3VKnt>!r$Jtn-R_4yzoWTe$l2Gw~KO#);>PQ`d_VljnHG$WHMrh){t)JJqbavZBxQcDMWyRa#Tzbyxz|k}=$IDYaxhag=6!UKs^W^gC zhjEHDFB!M@Tw2}bC-p7SW0yTfSIlE`h8kZd;tch=hkEO*t^s6DK%wrgWtOKRmN(6) zfqDg|GPQ?6L)H=c=&sLW_%tx+eRis!ehzfINlBZW(AiyL!~yrH)oICpIP^j6m9^P1 zsX|vq@8H{yaMWbFffZeS_kmo>K!dHTOY=f2$)18TpKSQj;bEaODRQ=l+dtbD2FVin zjcD{-{SWQBrp{+L4^wl*U-7Tg=gm}xka7!!PnUY#%a5hM=m!tb`_o)U;NG}vYc zr8LxgJ+XfaK<(dWo^Jh&s0$pkr`sMwk;BB|H|&4ms^{);%|`8ApT|%V6&Qbe+8CtI zNHe4mg$p~q30~0Is7mEyzNgoT5GFf6U3F{@(;y1=_&QqmIiyOWR7(a~%()z>bHeRq z8-`mVnd`hn60cek4)tE;WV782d`h1}mrEDRYoDXClZogUQldR$HFt^W#jtL^K(RA+ zxlwTL@6s2XxGGT8as#yHZyc$YMC)RVG(YWoFSSL;rl$h_{b9%E^X`FP_S`J|jqOF? zq<-Jqw96`xXZQta18{Z5_Mj`d$>)tm6gDB0uI&}4ONPx3mMSqfBH$^VP1Aa9r@5`; zatHHl{3`?U)P;finsXHn@L+aBC7aaay8DiSm7ZTOr;g+1ISdMe*?w~B6sLPkn*Ao6 zz-O+h(6a2j-HriJ@MBBIsNhx*Oioz);5-P$+KgBEpVKqYnnIq z?3)wf19aW{&A+c!okAmr7m%nP!p)2R@v=toi{@^#Pmj#ZJzE5Kq5{Q1W&ZMmhxx2# zvqKI&(@?Q5`jP5#5Bwc5A>BsnD)y^THDOwG$I|?>e&ITz@2Tt9yAx6T_+`(}M^MUo zJI><^{Mn{Cv|L1OH3T_D+<0LH871_9vbTrfba0JC5=}i0~vg9CVLH3Qyi)b6vcmMFM*8xrx%CF2L`j z{(y2Y7)(zU6dJ)mTs=IOJJ&xU0eqtZ2CBnml1%T=bz?6>?%Z~=*T|mK!bLBUU>L+D@l93#v`6DsQ08lU|7jsQO%gx5iHh~077xs%U-EAnk%wGI< z80=^B+)3QPF<^*?ViTwjCoQD*S>;%p4ZR7Mk=+gKP6zCdPndf8exzoV6ga@_N7GMp zNR@ayZ8HoF{xE&H$T6c9Z10u*5Jq797wb$=)sJkNOpF4BwH>~U3tkj#)}ihF)|3KO z)QlQ}-I~pbMzAdc}5T8 z6BmDbzw9e`f5H)aBK&CZ|Nn7e?e{Pj>dWhJ()s~cOIRbryinP7pM*THHG62l|6xNR z{Q&@-p)JLv-kdO;@|;3Pl=y?nN}&|GiS|Uo7DS z+Zr!nXJ;~PH>pip=7+rJDYy4&!_F2x4+AR~^KEHC3FNQ1A3eaWfvA-|u}?7k&$&E@ zLxB{LmxD0;0WjlW6(HrY-;c+C{uD6^<<<|>&hF6jqW_E2eExIw@c8Y8AOov3{C%Iz zt}TE4MC&xjivEHBWwoNSo*{N!mp8H<~n+bkC}k{3xthl;=$Pe#nmZlVYK^yUZQcIn?KlK z-SdB6n2+)PjBt?uf0q93VgGdV;P-E5IIi-t`RV^%QvCt}=v(59ai&$9jd-)C-+w>} zj@yr8^)~&?W&s8-LOreeJdFdF-SCjR$7Ib?#B49~gwx@S<>a=+~y;bJ0@q8>Q6nOW*ME$t!6L`HijY!-dDI z)Fk^Da(`XMMOiD9CR-ovBU*HcJa_7u!#VH>YV#Xf}Ue%{t1a#Urc zR85T;M{bJGT)DQ>_Y~(DFr>mb$x6yIy_f=`1kSR4ncqDER(c+fkf)yQpM|U6^dN>VodH zybKAn?_Wuvy!vZ1ZIj-i4rYJ;?%?d%)J$16f?8bSHUUPmJ`%%SDK=NC;hD=?8GZGqrRvlM zT~9!y!YqF_ZmPK5g5S^E;?u_g%yvbKuxL!=5eyyk%0<5gS~UG70xdJ#PG-5Z{Eqn z-c{0d1Z6HT*wK@DTfra!cj{1d_hcoG2`60SvntHvVs8maS_~>OO2Ka*!Hg0Ir5#lS zR)b%D=@KR_UGN=w-Z&c!KS)i#c(_hoGsE@7DEp(7rW6}|)wN&M`9AbGo}IgSh-E(4 z>r?tn6AxQRXaI!OWozX1~8Q=iV&ro;L=%%p+E8POOpnwqbHbW*(> zSdvz&BuL)`_4M?Nm3LCenfSAJmnb9>1UE}Sy{+HH!hElc*!yniq>dgCZ-`fQlk5kc zw&G$3!3;-DH=KeIqU5*Y$$SM(+#Ip4**aFRqyDMI@RKWFw_MMOMo2iUlG!zZdKe*K zli-v2(M->2$CKSReSKjln3H+1S@O{yC2dX-m{&0Dt$nhIcyPUx$nf_qt!B@X;bK2c z$sODER96Kz8)DX#Hm5A+-#mFN3ZVvbMu!7-3e4+dBsx_lwsdY@R8nb$n%?r-Fn+rFH5)%YLahY}v;T%!W&QQl4lZu2VY-UROBGZ{U^2 zoIH6yC0JYNakLJR*WtrVv8Ld|Z`nU~SX{Z)u>r0Viq zg+ofuHcHtN53dou3nu`40a=5{!sy=t>QmFc`97=f>V6DwDPIepYvkCKv8h~Aa}Wb- z%N~1zL`t`^i(#9rSHPyZ3w&Zp@l04hO`ZMwkkN=M_Uxoca8|bAY8=bSoA+zMGTWD5 z*nLT-z{(ZVFXrOGp+&d?<;Lesjr` zwv`32OvU~pzy6%he%WY+)!i~JGUoor)*KNdNyiqH|g2m z2ydH3vG$=0FaP7TvRkB@@w7)+RX_3hOB*{{mh)f7^ zXzDoI|LfSOW3ho3hrm@N`4~^`CjKVv;qQW#v<@(j{28Dz$5WD*Szr6@d_voX1P(6k zcgIeAr1*RL%7UR7E%_Hae(&b@t2ePt@;{s1YLzzo3u5;Cyb9+nsl(tHLeQkYd8M67 zv9;WS>9F^i-^m0=h>R6$23BFLY5ZP#LagN>!)N7MU$2q*5p#K1c*@7F-QM>~wZx8d zll-PLn%P9vZjGvHvA5pC2APohoTG87`GB&cmKv7K*8tLcM~vGDl8DlF_v7fSIrZ@1 z*MsVF5f*@|cn@L$bBTU71wL9JlZ^Jb-HT_Qmep3jO2T0R0Ya~6P?Iq>z7Owhat^W4 z9fDUgnLn{@+AM_8n_&h}aI3#d83t?3$;o;&!y2trP$xlYx|L5&(cnUsVR&)i{;&QW zig!;cdkHTYLzq8s@3D3a%7hPx$ z&tr!AfT3^@n;rZ+1tzWgAN6-6>%ZKHwCS+AJ5PA@Pl|&V5u9frce}oHa=>k2+;18~@g7>R)^(h{zKZZ(+w9!No=RH%yN4;azp`~NCQs9qNUa-=t9A~S zkj=jMXFx&L)Ku-*2WhD{*E5uEq)FkS0M@|*{NOa=;5L_WA^! z-KU@x+FfLb zhmHM)q9ffW;?Xk4iZAyDc;M!i%%v|;3ong>1&TpX(;(nGov^>Z3S|Etoj*9wgwqgQ zW`V1pPjvdjvY}Lyl~`?+fCN1N2fE;qaDfA0Rv^R&#+LxQSE`^;cM3c${B#r`Xi@9^ ze2a%-fMS3LBIlrEw-3y3_U?ZoDI{GY33hF#^Jn|pliImX`VT8S?B#k+O>sWarWhBI;C`?Bt z9?J8npm0CEFX`+pqIFE;aSqW-V6d8o$1FTLt=hwscmVx0;O0l=bKN9q?n%%GyErpv zR_f1TK1<4_OiLZs+4qt(2>_39H6PhGBiSG>&-ts&?|s^>ZSWx~+_Ygk0#dzZRMoip zJHv9AUZ`!|;!#Ln`?-l!m)Y8wY3t5@X1PjN!>K+iQ6qVKptAz>f{NiPS+Ic;z^E!b zqc^>I(REyn_TWDgkKgu0$-1VSDMJe%^J|F?IhnsI?vza@VLdCL-DyE*eAyrOpC%lP zD6t$^f1KpkI0xyYCl@M!=~2OzBD;gqV{_^;=F{3qtC+X27r%t~Q9PsjEloPJ=(n!R z^~Y?N>1fo%9;3%6lZi;mHNX6#udK2y{r<<_a2W(mr-oT(S5Cjoe197Z&wTg=0~R(M zhq^d0HB;&H(zdUL-2m4;D9Tu)u{Sh-@+VW(@;;waT}cM=cgRLNLTA-ZWS9Ta>^N&| zTB%$H7v1Ud$k&ibs;M0TAZYo?WJg!%!<(nF>qL+%au-&7R+s})ly45!)@jt0@ zuLGlQp!AA$NBwRXVQMp53O&DXhzy+lm{hZUE4KYgH%F#=F`+;OHi5Kfoepb%TyQf- zQPZp!J9c0kK2k9Cq5=hluLS+FDVl6<{@Tb6@XXlJ(FqVj@wRO?Yi#x~SE{V1^#eoT zRYISSr{g+2r^k;k;ePkY?gHiv4cTe=b>9 zJ$%^)%Z|d&r9g|dnS+@KJ90dcLa(1o4FG36M^$t3cx3h|kAc-xwN zko!rsdn9ZxKL6Y_f#X){a*JtP(ime;v99g`jb5L!y_~5G19>F5N`QUx;h}jJ9_@#` zUGMEnXt1gwpqlDyS4PaJ6sr^)&bT}~Q z@bKhG?hIhi>R@l!SSV^ad}##x_XgQ^>!Uea0oQNUXp`Ewd556>T6VZ4tpClyf4768 z01wnSKTTz)bOQ5!g*dnc&?2=Ra*q5{1wHVHF9H8cARUdCc2A#^8ppGC19$!o9?|#I z>0#|`tr^bo47+_LEivI%*^9F$pOe9Ox0}u;&cro{ShhRQFqYz-1TfuQIX1c^6Z-gZ z8aT< z&T7h&3&GvPAzqv*r`j}g}E@MNyH(5tkJxGu3*Jk_y z@($D`wNs6+G#hKea%F%F-{hoCXKdGvCa#h*8Vu%P2erI}&ys7wX z?V6P7fN)?IAR7iI?nVN7z64idkX6UHq*Z)-+`v)<4kKL#Nqr7MrTy`*D0|UCUwfYL zi$WDtEij{pdQ_><&o=uBMC`S&Eo#+=f(*POvQk=-()K>Dao;>67giT^|HCnb15&e*WSqd}CS}w3Wm0*u-`H!tMcNd4P{i0h5Gg zr(-l#o7WIC!=cw)RNu$TjspgSnVfqc6nb&h=!G5&8f^`z+y??LsKLre_O8!-c3Ggy zP`9GO8x5YSUHB)M?dm?!V}A9*TH7+G-9ng|AAwMN`{4x@L`Wc$co47xM8$0X!Q`lo zqBV}Mmb&dBV(yo-90j<_EN-cQ!PVZg`gQlQ7Ti28@h++^e={HldKK&0IApbQH9uqH z;-qKd=T{v06SWlUwc$R|{sXHlC1y!6>?G9Aay^Xfo8jkXMcBp)*+D(QuE3;!jufb;GN-wbGg9~ ziNJ7*enwiPFI6KY8I8SbLQZ_{RD8Sk{`rstWcWlX0dQjzaj~H8Q=wKy4U)IZ>J1L}66x z?4@3jN3X#tC@}gS*yKJD;bPHYKK=t$3mv(mrNTD!*2p|4&83*dltz&syjA-TuK}v$rZT&)M<5h;>I0(V@INv3vd_={j($`~FV7rzG93o#erl3_d z`X?ad80XZ}d=WGj&5qUO@gm-x*m0+PIB7V;C-Wix z08h@M5tk1b1jFMmWyB0M9TX1$qb;wD)0u7u37P^3O!ZQe=0*bCR%9fHDp=Yf-6 zhb*Pnn2(XU*w7uvtD$HY7FL5)h8)sZ>6dhKv*dV!m6rGe@ke?DOF1o@>Xo-HkjCl* z)`siB=E9L?AL&+F-i@gMTp00;DYp&Mfo01dYu+vzNfaP=HETJh`joOx$=p@Q0ZxD5 z5=<`X61)6u8tCUmW7DfwjaSeScN4`Gyj*@f+EWz=T+vYGxqF`-*Lvv}?h4e?-2Leq z>T2-wL=2wu)-yir&2IHcS6I|M5ox+9%pU(tI!J6OWhFN_+@1YVpGiu=N|471_?nlf zYFCu4Ly5*CfzE1>3jN@bj@2D8(Rpfc`=L?=fj!OQz{C3QIPbq~a&7X>s(`p$p$#b0caDol%`;foSXhT`;i z;LQo9lM4P3a_dK`1Ih7v?{pX2^(5C~PiMw;*vNl(=*EAV#HG8sQdo5X7zW|LPkB!)tZ+@(P}U!%R&&GRdy84ajzJ-PyUDAu?1cewLXiED z%4m*WzwQ!~iH&Z|Z(U>+9gEsu*K>@*w1TBX4@#A$uby9DBAI)b2?~QDHHq$>SoHPu zk)Xdi(bc73R%bTF{qOKI{GV)yuWv=Nvsst5Q;Iybjbj`YAw8{=_SNJ|v=BOd`^}QW z!9wTi)wCFzrPsaJZMClyyHV5*rc!bENY~d<1+v@q2W4=cDS5c_oH1Ph0|B7XgvS_3 z6E*G#Nx;=;U25eU_JLKUfdn^-kOA>@Q4;lQEY-s_u0*I5m}H^+anw zu{k25$>B&L*NA-sInIgYxL(dmG|h@%=g;#KxZ}1 zZ}B(WdYO#*oZPlxH3+s?eWVcbZCgoZN{*GPj;Y-_C!L71{1Gb}{Yp#h(zD|gz!h;i z3+a{l+c>`_mEOb@#znzJ+60w?*`mDr@?s-(vE%@U8mAwp_1PyII? zfRawNIv0^k87M&TaX(wg*^zfwnneyMttOf%PjAah*UNSd4hW%o--5}Y;LlnQ(E4yZ zR07)VH%)~5b)1#)X+7POls53~Jn@`xg(|UB8Hnhi*N1nXF{x8VTuNHyJsw{d%9fNz zL5F1W3a_^$j4RF8GnTyAXu$Gs*JIlp)`?97C(KNztmy1;V0fh+t(gVDKpP}a?t29@ zJfglWWTw-T_7lWGJDOMg_-LJdj)}qE&!MB}R41V=LI}K87T++bg=3Qx5h5X0XlC65 zh);&l8huJD&aJ0FuP5jR!LIffHS*M<+9tH_rLn*_Rqi18sskRuvU)SD+GaVN1&OaD zp~V$yO+HE!8m SF+?|b~!F)eD!a#+cf+>;^ie0UE)eJ=1ZUI+TBcsl@%!x5GV~e zut_g+V8_>TM*B}uvO_py=9;^A&)P}BqnVnXf*FR|JhYtTHf~P~aX;kIV#n?@3oVvp zP?_2k!$`n&fvjr4026C)xPGVtZF3?LY7UFU>rbtsvj1Xz3;UIjg?i^ifu#R$$S1FWs_ zw|WojLxNjpR~kLka_e1s92iRt@O7h)NigBVDA*8FTLyaNAy4mr*)$}y^^npw6|5K^ z_wy4@fciA>+^CYEqu(2uQ$iB<_Kyvqlj_A-9{cezc#0!;nu5;HD$HtexF&^I3-!8q z=8&}aj=gQG{NNqUPMYf>!8`=&sY5_D(3A*rl>_zeLu1^H`rnl|b`|x@Ox=h8kFebS zKrf}OZRuX64*A~f3m)ZN>nr$7@QV1rC>ni|a1WqUnSM(*5@XRsO}&6e0%$EE6D@3i?)ALF3L)f zK&lep@=u!#`<9>|6t?MNB0crs%4zNbN>i~6XJclS9!M8q<35ap<*A>3iO%kGHsHZ0 zvl{MbsgU(F*l2JwSzK^QP=93I%XI*JN$wFy9k-#PqC=HY@2gJ(U7Hliu$0~Sx)>AU z5(6B@x_-9wmTFflOJ@c34kVIgoQ?~uZg(fYylpD0r*M4NYRpGDQs{kYIa32m$@tfC zg1mIbZ2JUNzS!yvz=YkY3r}x+VoIXPz^NYJA8NR4I}4xupOTAtg%rCu3WzNBFzT?` z=~*rA`~b~0SofbUlCu>YpW`<%E;%3^n=~eLQ+UeafrR1$k+<%d{ z+{ih+GT#fwh-kwu`L`|V`sUFu970g(LpXUO>T|LMQygmUH;&Q~66#eNK@7u4e<1W% zWN!8cAi(o)?f|eNo-Fh{L812cQ4^G5F0AyIaz8(BE{b$K(M4Qv%mXVM)@Mk>y6W01 znM|D8zPhR-F$f#(i8@G)TEaQg$8uAyiBDyVhnd( zzvavOC%obU*`PMSZwVub_Y2Ms??+I{PtBtU$Qf6hF<%`SbsJGh#x{b=T59Fhs}(mx;t3#P2j2`1t?nvNs24$PuGG*R4Y zWJ&d9xyH9{^Tb>QTxIm|p&)EL1)PLrZP1Sjx+~jY=8cD4{eSB)WDsLjMqxAWeuV>| zKSG#)JcZLN%*apo(mf7_`b`RS) ztne@HO)y(x)|Zu}V$)Yw@V3Vf1Q$pH>qKnKeSk+t{Wcw&*Gq1=)?)t%$}{i`*gFb4 z_kS;V+5T)Cl`jD)i}@7+meYLW0lYsG-tsephdh+LGA;-1_x`P&*UA4Fz3&M6dkw?J zMCv)*^@19U$p0@>u2F=@l$i@w?iA?$yjt+c*}vD%+Nn$dxv0^)Qds%FA~CiD^A_#^ zotQOZUEjD~*OJWBar6E+l)KZIT!px{krSb8mavxBpYvh5q!PKAF}#p}uDO5===y&n z_v&Rseo|6=O>$VD5%VTG(4>&+g{Y6fbJfBOK4<-mEd1F&D=)pW)IbhT$S%b_COi#~ zFhK17FADiTm+Gky`tTQ0&Kc`GE!KWZpXWZM81C0Fmj?)G@ClS||A^1^!$6|#{MnWO zKS030#Ro|z&Yl~jW$yp?8dUQtVI^VVrC+~&1yh*?!^QU2AzzyxJ;FER@y=+NYLsSB z+;t0mcezpZ_^(yhg`tK;rwgHUbsYCWe&@JIMOeWpH#f;Na|Yu@McRGIOa%AY>}t>@ zp|l#o2v(7IwFS-vBgp(T_gahRgV`hka3t06W993knde&3(F|DWb@!n02SR&wcm7z0 zgQi^#*l@eG0n3S57vuZF?w)zdiJd@|Gp@567d)B4i+whO4UEn9-k6@DwNeAqhbL8z zER6TD*qE8o%ynJcnJ5iDD{hqBHlDn7tvMI{nz_2w~{Jjbhlw zhZ<4-Ew=2&k`*j1TJJOqcc#M zBcpY5Wo~O(9R%K{MRNM$WkQ%fb=pq`MW_+&ViHGFH)}?E(vo;M=GvRb23YNiL%{+o znAiW}ZoXL#S~1GzN!!uIyp!eo^wqBHIpUxqd%`0mMz=xCn*lRd zPTewSCLorm<>A0_V1+dj3j3I%JcozdN$s4?wneOvjU-~YsAY1q#IAlST{g@h?J8MT z-o{=gHD_(^1WRMjGMHT1X5d^*LLD%N&4xB#3nlq(-;&H0CRue*rm*FEW^$M-Gg}X- z0B016!m|@Pequ|T>nGstOx2%Jud^keWaO!=a`BgBt{tXPOCOdo<>_p>I9=*913=YC)=g%xU?F>N`9zBPVdOZDTTouKwG9`3qt&)vYBuz5s3&#K04A@4Dc2|4O=4f~4+_Mq8&!sDX-XrKW^T!)>UL847A@D6}yn8U7U|yBR zR%;FExDNQX4Iuuz)?+P_Fy-7M(H>n$V6HLsr~1JNM0G2|yj9gt zq-^{Q1FR!!*o#%^j*WwY`Th75+qtG()GI4J^MmDANg-^o=Mx^2=;^e>g zM*?OSSSv26c3*X2Lr6J*0{rJ-(MJR7$CL1ytTqKG?0N1%brVEB$DMBTrE{nhDy`P_Qn+TTuS(@Er2#kMZ+z|aN`o~>oRU!+uLQH( zlH#)(H+ym_53Gj1wnmb1Gb<*JkTI>!OmGx~Bk40^0i~VZ^#=+VL2})#*+K@J%%0jI zoxV->Le5#iz@+W1Fn#cHs*bcMsY3y3EY~wYzrL3p0P4@JQu@v26C?})gDJqhd z?ik_*Yp-hs7a)||7L&@(F&7gr&Wpj>TNZGF0dt+(Aj_Oiz@CA-60H~qVh50w(x4Qv zz}$Q7Sc06C*$e94#WV0~OUCKifWS2<8f)Id3zJ!Lg1z-=q==wp@oxLPza(@FU{zw& zfUkC*{k>U^UuOIsEl9~_K+Y(SH^tWBLotBuJl377@|-`Lr=8`_T63>$$XF(qa+cMN z!!AK7>KD-TcwkAvW9Me0?y`lLzfvz8nkn5GYcIH2LUh%uP(uKA~PkQOlYeK$+OgOS<4{wo*~R(plQHCbaNsj zZdk*Kkmd-+CHvx`_&1b-HzPs(eu(|Kkp(9^#%1>y{G?a($7BkU&$E(;hc zJ~D~R$}0gcbsgTihp;5J=76WuNlqZV6R*y282JB4$fmGz_2U)#MF28lx|@gPw#r`s9*xz4O!|8%eHN%F3vx@%yms`EC$N zHXC!ivOu$>u%`G~S7vHGcU@+u*(F;D&!7t{MR|ro z#&zr$wyh_gJN76Di85N6iF#sc`@@^%J_Km9@RvoO0qZtodP=-YofL`pE@X@oCvtkk z13H9Q*LU>rmQvc^o(`rgtAG4ywzY7O@IZ9D8 zR;N)9@3HFmfka9!JMoeG=}~-K`&?j_()@cp2eB{P8%VC#X^oC(d>nJfa+bi7W}P_# zS``jOP1q1x@20K7u{>g)ooOz*Txr_;Wa(+yQRc8aFJq%6;^=cyGS7JPoIRb+x@kft zC-gym-#{r$ijje8oVA|Kvw2rWhMQE^)6Zj?zz0bla3E9J$ zZrGQ&c^A^WOSNuNwC41$l1%a#W+>=-&qO`};1|vpmS3lnTu|9IY8kZ~v2o9DEi1&n z4NlI?q&tbONztkc=c;{omssLn6PwHRWX6od8X3bNnM~X1s#x9VA?_wHJ`3F`AKpun z3^lS!Dxz8AGU3}iCQ2qmAo8wsj@Q+cyi-AjyO9(CE2OQ@D{VcB&#E-*5cK-^eGfW7 zK_CR)O8MBLHlz9e$?U_hY=38D6tXffVv|{O?%uZ2OJJjSawA9@i3=eK1Tlex#+*+; zerZn-@faziOVSBOk^TgeR)|V$;50~jyji$2mcKqNL`qDc8Fk$yC@ZK znj2S*Oa)$^&u|nj>9Li81@Y9leShcFuFJVKbA~f*VJwTekX_8ra+p2l{NE`Z&66dn)SH*m?YeI%yuXn zrPnFh9cc%>hP_?`_JFQt!U8<=ZZhb_G-pgUJlxR++iVilt0bgE~`BI}`sDEjL zf&{q>GlhTWg2|TJ=jPRsMG4o!y=>DemTrKp0Y{u6NZqGTsA5$qpNLD)nOa&Q;@H#f z!m2*Tt2#yPZ4`DACPOHhtITj++P=Q4$|pbdh0v4nRpXMt0@qgBUhBFf_(kBRO^e2?{Z)!Ihh5W}}q+&42GNQ}ftT4So=D zF{6=Q%*K7>RzbG{FJ4<#kLpwo(CQwD{0q!b~J*ZCav&*(iS2F(D6rUrT9)w!_wQ7_H?|W7xAYEu%~$h_2|d12S_IdCVE#>EQGP zwP%3Q6Ew`e(dmxq@2nyV3VgffVSWDi1Mvz}Qxo}AMY~bGw<1O6^Tf_Xv>(9TFFx=H zE>WFkT;kA$ymRZ|;I#6x@)I5rplZ<3I7w3fdA2QkeWvS~e!8=^Y4$o&z>Nuks|D>7 z`2v0QnOwPYm*X|WDicq(b=YOnZ#0auUP!b&))%Xm5{eNh)AM>$jAu9Zw5S7(WVn%v0RdO#DOCXz(eNbkOj=M=8!qZl_qvnD@flRK`( z>g!+`u}3MuWZ0wy8fq!Gv|j|PIw=fDs+7SW$OKW>WNppDJulCZG9*XSX-~QFkKW&Y zi*QE*Gyx31Vy8^eoS!KPp$cwsaUuFof0fdp9U`z#U2`1=*?%6%(?2aiM^dJ~zF^EP z4V70ub_{!#gDF}zD^{S$g_MuE;wrp2x509-=uS++jKDZO7`^c{o+xsBn#D9e_3HMP z;fC>Qq6gl&00^bPff^00>*e$K*HXTEefl^y9i+`)+3k^V=9^Eo?>rq%I=!}e4(9_NnRdu7rXySa&?xsV;dSn6E8`i{5Sn1!c=pF9h)si` z!b7xyL2Axx|2lWPD$j`nB_e(nphd%HCrZw-ir04V!}v1ka}zkcCkSFA18XNek1KXe zoVHB`4^hRV3bRdl6CjtNV_(-yP@>F(5~LRD09zroJbSMrzzMC0FXHfE2wwQOkZ0Pq zJgYvk^a|lqxK$fNMY@QuYG@MA;+8x}GufC>3r-m&l6nOk?9e`h6Hh>% zUINA9D8uaQhu$c9z*RN+h*3~z1g@J{UC6K54)2G6cmzhvNf`VaL{AK#PU$;>ty~^0 z|ITxdQ4$i?*RS_k*DkyS=P!cg)jLpJp+#!EnrSgK4OPv@XNlOxjTApZ8KIDbtn%BvJ#80CYRfEo{KTxKoYs34n{l>l@Q$gHP zve3krMg8;UkSH}F_(2Icx_qxFvG||=O6Z9oc=>QV>j2X%J5LNM4%km;orKI*49(dx zRlS`*oR;_bWSFeZs z{JFmMaJ@t&j<^j;TkOiN%~3OjwNkT%MrR7@h+JPjDMvxBF7$h0mT(hC7VVy)CZ^`r z)e1CCGOswblff6L;zS6x2<0mjDVsKb<-^S!Am|ZEvllM2Ezml&mUEW(vC_?BoiJy4 zYQ?kV(rS=a>lxuZ3q{fH4XdxIf%r1|`8qv3o@xgIql@p=78xR?O()sI&;)<2JaygL zn9Y~uT%awIkML*$2^L|pPqR75tA&#*M zv%gny*l@YPah*z{E*r-VKss4@f9K|}jxaYl&J-6z6eRG+evpZha!2dm#Uc}WlCy^+qA&W? zj!sZ|#YR>+1PGYJ(nZ`~ek-IK{eV3WW^bCs^Ml?$KI)85nDQKYY;S_R{8INc*54Un zzeepvzh478s2##Q@tSNlhE-h7TE) z0R|7vrR%ubS7%T(niACsLwj2K=8|@nN@QQ-VyW7uxcB;t8;KKlTZVQPDS0_bBrIFz z<-2ViyF*80#-f>??R}}O+OvmkN$51pk`4EE221pS1Z0^DRgpZfiP3rQ0ElJQUXHd> zqbNCS4ciaLO7*W}bb&6rC0E^5I-R?j`k|TatPH2THt0K8C65*XLeQi@iU`2cF9tls z80O&KahC-t7*7__j?RLg(Pxm2;<)d)k);7=UST5c3If@`Qn&GO+yesLq48RAyBZGb z>W?e7*;<5MW%Ey|Tb1`$gld^)+9#KUbx87Ril&NY`xT#bj~J}AlopS{2TYv6aH0aq z8b%W%{RJEn&?Q{b`{tw)q|&tn%EnTRV4;Zq>TFiNX7lmfNZkS=dfNc906>LT>co6- zBSqAffG}Zs87w1|A3s(#;S``GO&6FBsEAAS7@IBe4Lp;x5EC_v-WvdWy~ZlfJbiRG z&kYAN7MM3UJL2i8gGyA+X& zcrr=!>0Abk7oSk$)62;gTjh1=S2K>zTR(*)HJ>a7rj*OscsoyGFV$7{g_YtU9YuZGoHF6_+$}?CdDQ)-cLgg@;j#s`pIrq$Fd|K4PX^rE+5`j&`s{eCmlZjIxmaw-bf_-Nz9f0ZQ z3{5*e2g6fjbLyCcRaX>9Kcu2rkN44SzSv1afMD6%BU)62v=KUiZlA#>8AV@NsJ%QX4e;~ zJU6HrORHp*zn9J*S-i4!bBp@pr|}s&yma{3&QGHfSg0zhk`n$#DC_n?XtXGL4E;R& z9tM6arS&0iC(G((VS$IE_c~avKrglMuz4lXU_t>E*ntu4B#PdN)Znz^I&0;hfK~Oj z!n$wWj3*D(jiSPengc7OpN{Ufx^7zbv;9+;<3OCJa_K2T*jEP)BbOqcs{2Lio`RFX z&7>$2PasT2H*DdPXxIyEwfFt~)9j00;4!wmqDL-(^g4p%4hbZ^zfn$QW?o0&h7Ph^ z3y?xJXx}4diQM>LiO*e!rIZ2bXZVE;E`PAlr8+pJWi_d(Tgy9%$3D9%x*^BsFpQ|yBTS^3>XlaRJ6eg4cghlB zZ*IL6Mp1bpAFe)VkUesd! zo8P;8NvxKOf537l`^e8Mr`70j#qAN}ITn66yL;ex-Y2Yi$eCkW$w&BlHJHumH1&86 z5`|jO((0-BQ>_F95Bg%?j2r%UsUbM;nV{&51B8o~LadABc&^pxGEti%L;XVguEQ;W zevSaRR5eohB`D4>ce@8aFxdT!6egZg3Wj33j+_0FBi{@er4{`0=GS>81ARL|n$ui& z>QorMQ?%3zL2;yw7ytYKQcq^+UVYqlw+L{^&WRX^%gmAoA6kMLHF%~vD;ib(i5(SH zT~Nk%?fiDaZeu+E8Ijw_3rQBri~?FAo@J>6uWfe1)S-`|^E5}>( zRd=LareM_S>b_9spC_brgabjBMBl>abLuQK(X40Z8-kJOWpT@4hBck`uuyl#{M9dB zgJW}WZrzbokk6IFvoz}%ci(!a!NtE<0(lt*0I@UZ0pQOwbC$V;yfep9{=GGPA6Ou6 zW-fG{DMEZ&+y>dP%FFGgWbU7v8W>>_;K$k<&(29&wY;q81?Xg-j_0U%9ZYz1H>1ie zy>0rGKyItqlH~y4K)!rhWlp?;0h=C}ezO?qH>SgAzco$pW%EW+0vb$h?>&G-i6T^=iICcQL_XHy=AeBO{6I*N9nCLQR@1iNef=sjp8V=*k+< zp&{DN)SbI!KC&7=EY(AjfVm+qL@h}q;3&+F^;F{|j`GXp{B8#XUnk9pPqq$EkRG1* zhpZ6T>d~)@I}Vttn@&a`ou1?n?I1fU2n2h)POH6OM&W}A$XH4D7cJiK$WbG zLDCGd?s)m<#tWdmr<6_KwE%C|- zo!Ks$5*GddnHtGKi%IO=w%ac?dhjFR^If{`GDXze?$6yOa#XESw1>13H1A)TFmosz zgA}9T;t`f$9}q5BgDn_Cn?}?&EfvNh{rYok_G`+g4DDzWaH*=omBJzViQXg6I~ohW z3unp9O2m;kLKL1c7xt+iq`Psp-TTO4%gCs3Ie$K*wv0^9Ssb$h9hb?qHh<MHNzbW?7-KzGM3eY z8>Gnr$|Us*lHN-T;SCI(`VtOKB%iF9n&=G}_cI#B=u@yEE@wPtCUzpq<&v2TZneX$ zmwem}cIm8XrYo7Jms}#ouf!8HnmP>vT7{-zTRLp6V!69AK)1dV$hg18Yb@q>rHhP{ z(bRccVg0hMJOnyL!BzgH)D&_zlebD9GMI`uvfgcS!vBXK;& zVmysSy}@BOC<6ANIQ+M79_sn-4kEe(G#M95YZQPOk4Io)NC~&Io)H7n7R;WvlO)Ow zJ4nQ~F{oIfvZ3`2Dw8}$Hu#4cEGT5gO9;&CIQd-J5v%@q5N|qe0}c{m24<%wK~y$P zsg_MFI%jEDc2(xA9+IUE=6cMTV6+M8_==ukmBsQF8mKw(OY?OeftsJo7SV1Z~(Q{_G z69Gl$Sh;%ODgCVmbs?e0uXOU(u*me;Kdg?EpXAJ zvU*uF##qR(rM)LlpLyTZCx}~?x88G&&r#6Ym#HmXJk4aF%%{e6+x1Y?CRzF|&0YKR zUO|LJ)rDszeqG;+7GCt`er%z6;)%VLmVnYcNmN>!r_!)>buHP~!|QpZ?`K0a8!t!b=ZIz!1a+mIh%W+S(0>eX{H6~<7IRrXdjY_@O#mr>=h zpl+-{Ze{vNC~jfK2a5Nai~Sz|1#_OO?M_D{o^WL@_3%ty_ocuED@?xxGH$(4 z6v>wUj4x)aLskGCpta*WQ5O|)-hElH99tHhFaKYx3_&+5nEJ+KOICLY;sPc;2#73z zfG=*M=KSor>J@!Q1@4ei=bU1W2qvxdVxYgzkZS6MKmX`&74h z+;YKK+}%^RNpcyBdl$#TumWOy(A5}W+|7D71xWtuE>Gs2<(78yeY8Qs^7^FXbv=X# zit}dT3CEnk6h~>JbizyRVZ$Lw>pqGmlTnoAlQGiV;zpG=DmxZO;RnCv4;j^B2{|>R zWWMpTl~^Vw->R@rBXV3otpzJebdQZnuegXV4KVml_T4t`IhlQx1T(;3LhX9Z8O~r) zkp6c~S)RticC*a_g^Gy#sXUj8W_W1k&FrevH(3X|mC?(=a`+9It~No>pteUDbpJq& zgJt7wTNaaoAuqP55fw{$W zGxJ>cji=ILwhAvhmoG;xIa)R<)Nj`E?e0og8S@MneN24KcTEyx`0zJ6Tqj9IdcVt5 zD#5#X&N}{FdAk$2o86-nRNlfMSiiN>c9hV_lnv4RAsbYDPkrcIH zR*sCQFPW&6n#L^9Q%YVwRSg>`Jt0CMm*Hh*T*1$$bk?GUSnrE z>cyD`cpa#{uf@?Zy>#5BbH2NqUew-2x>$OBB3sLb&o*L^n5Gt!v!t07h!%qVS&7+$ z>0?QN7bv6wc$i1*G4q^Rk8ZV!S2Q>-OFJK68zeUL%t6>amc{`)#_#l917#88{ECNAK zGdj8iJwo5|tseP!Nfns0n%_2%U%PM-Tc=NkQq5eb!_ev3Gs!nl;SUW#THXU15}x#C zH})P@`V>&;n5QM{r#v2%L$y(NJJ$pE#3f0+1I~5&ID>MW-!mgtbsEpgH?eI zkq|TTbuCyP62ug+v5*eFZE88l@&7UT=|g5SO)i|-RoFDWuC{cH?1kw&Vvp{psk}Vw z0m}psFs&`I<2sUmdci~VQ#kp`eDNDt#H&9`tX5rj0pZ7FarXAZg3*N2Jo*}n z_(9YUvlQ7A>W=4-1sf8*+8Fo_OY8}%6&8?_OW%+xxc#yGWM-a)#KXCwW<>Ve`BT9Z z=N<7HCU59lY$nqDkr~Kc*|yL&5$3oMyNx%olw1D_}MC0&(GJ#T+n9@(ASsj z>MqX2x5trE#6XnKJM=UWV`TX>NFh&*sra3m%R!yiSX&|}t}G5|1v(`yQ4% zB`TPk#W;7HB{PvaXFQ&zXGZL@e`CM_U5HF7bb77V@Z3a&tOqDiF?DcNF8qAm%EOsg zjL<&U*mvDz44#FT@K*|4G%R>Acj`;Z=dei$^!a9nBnnE*$+^-TSW_2^UURd-$m(k9 zE{sk48twBuR%ud+lPLyuJ@w7e1?*%>6Dm-1-Y2DS{supA#!1DN^LR<9j1#a|Jf$?R zxmX804iPN$j&Fk7n>v}mJ4v*(`q~PPzu6a$m#OZokyeB5nIzY-!m!5FFrj<1sNU8d zRDQ(=8!kDgJaR2t`u2*gAxG6=5cIy-98Wq-gH33Tp-7>~{lN>cc;_N}9U8dDYB>>)jRvk6M(qo&!WPZjH@k-mQRpi@6*k4^73bMU1gqdLVSr1HZ z`s0*zoGWa9#zzu=zpqhn>bF4?0zYi)hKb$hh7TpP2`X-e<|}r1r{--yO1iYPx+tT= z`Pyj=y~e8N`|KO<(xqN!kY41Ky@u+Wps8;1$l)rdk^{SO72pd>KWp4;h_goskT*=5 zd;2yLnD@X_X!%mkfS-h_5*Dc1Xs<2qe?9YpC>EPrx;=MXlRB~M5M$RxKSKmmhf6ym zS!j9=tA(agq%T{x*0Jes&+@Nf>b9yk8P2XOWl)y@stzfn1MZS{p-txjqA{&ZXk)ki z%Y-dLY_`2`^tea19fi;?WT!B6+jx24@!9c5!}@jnc;QYp11;!Wk*PCgi&rf@d@lW9 z1z=0jO<{>oULHM9g2_M=igi%pl6J?)g0Vn*T8YTR&Kn=Y3mlfWFaN<+ zyyuS1+GzF~oIx*x4GQ%0%EYe>Yh-(WXmfe+z{=7wyj@DLK3g)Hj_z<{G-)Z9)rtA6)Mp{yp+6Yw;dMC%;fj7!Xy}O>THngESl{; zo!y85oljp_BKPDIkfuyf`=ke~6D*K9&%%l53B5?mj*xw$=)@UDK~nCT|Mzu%;KoPA?E~ ztl2;1Hr1bawCt>{H@B~XFqk)Gc0%QQPC^V}bVU%3AkI$PN^x4A;skb}e?Rbv4|HYp zGCo3aBW1@;kWH^eOq*XqIWEmL!MGO36pz)s_jcVEzf$9E^k)glG8LG)u-GZhyLJzM zcI>`!d&tjjzt|BC+12e()*+3+lichOrN=d0N3&#dNVY78)R4>R@qI#Q#SP0!7&#Z; zew~oHW=_ugI6~8TU$HXc_z__-BTI8=^F-w+hSu1sh&if!pCz-G@q9M;}8xUSmC{t2e*hM6sAGtb@%0}R|=F9^d1V??1{~Cz%!N~PHTWD2pSp>4 zRLSTyK_?g}m!GwHY*GCIlI5jkNY1!7R8GXYPm&n6jXp<8^hQu3rb2>)vv50hw2D@AIb zt_<1tu9)p2w%UR={Q^DfqjyZNfd=)Wn8a6Qh1QrUdWpnO=5rEe z%ZW>JPk#sDQm~CaZqoVBb7-iW(YVn{9i>!c_8%c!2Py7~|7UwtfirQr7va5cpfWtMpLJDRf&iNRHCGoCrC>BSj7loFxGIS zJ}A)+)Fo(K^fy$6v-;?`57Y6v>^$H#hf~YK7MNgoIi?5o@xp`8a-Pj|_N?Kj1} zM+gP`{Mk$VxwT{Pv}Y))P2UHIEw*F-b)PcmXyoLAb7_{DSWSq3!!+IPMD4fxhf`dP zz^T9&(U!se30}Bbb8N2(=V@jyx43~|8+>HzN7*7;qqPZ{J1{S8$o4xy-hX`xmte{L zCAbSR|A2jREHQsgj$A*m?fs`aw{Wig`Y9+(MhxdMFaLyX=m8$fO0?B9L>Tj7JNoSZ z$MO-l%TaDyVHWdYt~V?GLAD zOH|DrbAc^iqvvd%+tFi|I&v|UMAdj*ms2YV9LPCOje&2i_-B%obC1vFx)zcUqJBMzB3DFdUdr{Oav1-T&i-Qy|9Ks?ssDTnPlbUZZYF+LlUU&!(;xY|F5!WCUmt&v z16Si$ukb_r#TnbW`HD3pu48xeYrEA4DpS27;Gg8P$ry3!#ochR1P8TJCJttALH7QR zJ^iMgA@3C{w5dlFA3&=1S;%oe2LZ~n2Q3T!GEDkZ@NZ>oO}V92$Z^A3K_)zaeR&-KmcMSkfj)w$iby!2SJa%3z>8 z>mBNn&f_ikPtx(d&|8$uxi;=^T!EWq79p=wS$m`x@30B?gk8d5Lchd_{sX}Z!aand z!QB1^@WXVLnhiMh>kMgsfBXKUnD}lV_z$M)MLqUl3ax)*z{BKAIAV08|LFAX<1_Gw zOG^FhyK=SQP-0&H=pm<(bSQH_%l)kjYyS%tfBRUkQn!hLa&FNo1QmbwBf5A0{3*%} z;(hr33my)09U8kc!(2=|u88Zkzp)pT2mAH8VL?yeo_PpO`&$iO=L9(^Rc18=-k)vV z>jVNFd_QCwg=L2Lu680Rix17kAC(`Fm_1Sbt%WsS zDMFo1sGj6SkG}krI(x_HZ(f*P=UplE45*3&ca{7L660tkgpbuO3o6f~Rw|bfX0*tb zzV{5q>i>8rI_9CqPXmpQi3a`=8gP^Tu@6pZ&B%7Y*>MH@mLS$T4n&^wYi}g(V-uh zQ+GuIfy23pd8OZx@H^qY?v5nREe|4i_0_NzRvWJFVK+SVn2)QNQ$44iF(C=kFYr3d z7)k{kusNIg<#@}8A(JupJ9JrBJTBMYhUZf3 zwzBi>9<^Qr$Lil@**Ton$=S0Br7l+59>+!!t#cCS`kq8E}&ip@Nlkd4V@d-y)g1{3_#NP8H^38cGb*b5Wi}3 zu*{sMJS%Y^XLBQ2{UG)Cif{fPnMliKs1KVaY3wRGc`2)L>5!A3J!sN>A94h#;}`Rm zPkJZ^0h9JFia&an*~Cz=sglPdghobH_CA$lM2_XU1dFUV9g@;p>dvL|Ft)bHrQh_1adnJ14Z*@eK`fijJIfi=?kASkDH!zo< zabV04Bw7R7mS9i;_&Wqj)DrAKiPLiAfHn0~pg^@_LB4AZ@?*E$!Grh%kZk3-|4p=l z$iY3P^b2+aOCbgQg3+_g14h9>Cf*DCA0YK(r~vX(MvF2G+VkenF?`XVe5KwiNQBG2 zF;bj5Q#-|c@yN(3y#G;cnCf*!afebqZ4Lys|HKjIKgdG1249Ya$?|F^r7v?V7KY#l zYBwRycx21+PUOfkiGB?RHpkzy3`6TR|M@C$@^OPlFXl>i zC386GhfBP&x)wIe(L`HQ-f_le|%X&}wJakdyJS)K;z+#GhKef%Cjr{2p9^2YXgJ4%>V9@_yd zONVrymdXckBx}|tY=#0Tqe^WQ*$(SMfVErQEdH7fiqRT0CR@4s$|FwtC;YOe{%Bk% zlnz=Iu^XXB6S9c+|FblyU4*B~@Lue=Z!aPEL-OkY1RIrh`yvk;PVrLD9qrPj=YCkA zb9F%X##+NSTICS2-@Eqi=NqleZAPv)flY+)r^tZ2qag2Hzs|jQgTrZDHH#AHk+&&E zm?PIJ&VbD$t0>@E+m9Xc}DnL0p_TN z+@VwB&TXl@!zrF*TqdS@HQw1|lu#TF$GFl}G1XEPPGDIrgWC)P0?$qJCJSr4bwqKm zml0QmX5?SYj;%rl4wEzK4rO~ps|tqBzvPSP~)oc zX_7L);6A;hp>iA}6A-Qg(PH#q0x><}IYAcF_vQywET|avo?U$NE(8?c(#9CmCpIoE z$z}&@v-~Gs^TEuWW1Y28Oh`q^71t^1O(q>6Q6*AKYp4GT$TC`^qdGFnJJA2)!lLIz z|8Ke4#Sm4~y>0SbVXS!Se^r9#1AiECSsCJen*b*6Cjy$XNNxtMpg3YS3XV{pLQGR`3vCB<>_GdkZsHK zHccL=KI5qj&&YK{cpnllt+tavw9=CA%^n43m@dl8j9VN*_4+~!urNK20%shEo@bq5 zAC|xp=zVW%I8L#>E*pb4C5e zA{6bMC}fceJhY5?aIixuympR>KZ8FV@v8r*nq`{d>u*MW#;aD^Nc4uS{-po@sVllt zJ!TH$b$w;7wyHq)*|&5A(2-OQaNJ@4Uxd~PpZ?sC$NSad?oe@=v_r;9x4xG|L{!bPTyYs$#`cY!Zfy=sZAxtjTMmnM ze}H>G;J?p%S&SCzIH4DqieR6-d!4B){rt0lo~*FYeMVxXZnyBeyITw`tnEf~y?m8< zx9-)%;`^>KhW$fVB87nmtQ+?%$=2@}0_fg#IKGkC*r9%f;$zpOb(*A4_d~1K4Q(NQ zw2pVDtF7d_?J}_S-(*8^F@Gf(+$THhfBYST8aW#5^-|H3&>MS*RTXHRW2u5c)jr2m z&R;;0b58Tv{nN^7j_?ljpJ?;e_`z+6@O}6!Yy=Z1*=;=*#q8Y@in|o+g zZU1=!PSXN_Pq5Fu>v(sSK zG=!IfjjHBwP+()DI_x8ZvfYjKcN?7u0fhb@s~Jgn zINC2h)IL1%5So*8A?cYN#rcRfTypS}?P+s=FZWX%{CKF*EeKRtP_;EQomfycVQ&LK zXvQ@PU{vA}%>exKi$;JB4>hVo!7fkjcFiJ0(7QpI)f2^J-JPBcTl%7YX!v*nMRavw zkTYl($JP?KE}-dLQQpCLw-^TQyupTc4iqoEc%E(HKqnET>xvi_#O{fo?PcgNY-fat zwJ0pzjnfkASj5+#>&rQ&ekPo6>_PV44H@JpM1^%dOz})t5Pr{e1U%JZgwUbzo{utu z=tf2JkCEA|cd1N<>>Vs+8l34W>mj>+(`mP^l(;_3=YXY&mXi6`1g#xCF*a}=SbcX zaScInfq2ohV8G{;q0?)i%qQT}aWSH|Ab*i3>uBf@JBl35c4e^;dkoazTzbc{?#+2l zh2>tLUg+L|-;XRgbE`sVtBW$7K+guFqma9wW#@(}-Ff(^f07&&qExgEMVxZ)&`~A2 z$R`xJfXe1clXLJ1LbBTphC*5!5l7!f!dxpXa4eE5F=+wPIAa?M+`!$yXszjhX=rXZ z0<&EAuDb^oBTDO`?LqQE)FI>{XOJDT$h$ijG86(_7;$Jdcp&5@aYXU`u=cyR`#y8| zEBb5ug#H?$5+j`_rgjL9JAIr&6^zSxEP{=s zzDH(bMJZ)jwO4#t3--8fd^Ju0Pe8E0-fqb;6u8~Lz1?<;s6?_wW_~v=vo5PH+lE(% z(}q#3qpZWN8HcIJunxZtX%9nOyj{4+z(@s1RY-$L5@rKHil1-xga4RnpX zbGx~`8>bt8v2?LkD&b2N?gu@Sttl4TY$?6`Xjl-sqV(BG<*j$=75yIZie9(TNG{5b zso82Qg{I*KUxb%slsLSY>PD*y3Ir>W_{iSu>Vev4>!{^gMX5{1>svb#TUi_#Y%Obo zSLoZQWeSBVj81HKSMwNZc(>!HQV3f(47�PL>CP0|{Em6rmM)7XlZ_TbF(_(sEH5 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

        M&%xfPjD9dXObgk1Isq3=XVFi2xW8z`6=~i zL;S^)?hfNc zlfaeQ9s@Swl}Z4XaE_DG1gEcb_w46Ez8u}yIhB~BTe9!K44y$Egg*kz8klE;e16yg z0|+`QCQMOBO4AUSfSe7;0LwZNifF*1WTUiS-+2^ z2L2V?Df%LuL9yUP6HXh99ED2}6Of_FG23;mEL0LZ_a}K$xqUFr4`kH9Q_t8Iw1YMX zE+io8P8MM;ES!ifg|L1Z^dwn-QQ*|RLN-8qk+We0+BH7LVKX3d-tB;E>O?hCvk)G2 zyjmX$qSx>k!I^})n8P``m8dVLHuu$J-uJR_+m61U1G=W53w-y$Waw*Aw1bX;wr{}? za}g}K=&@=O4d(}m{VGoJT%tY><_v!K4xlAmr?DEOD&rlS2vsGcddH$xk%8PNyGEjP z|0e($%WAJ>=x;b|trOS1578Sip3_M3wolVF)N1BVp0ZdI;Z`aD%@UYg4Qa@ne*VSd zYoHy1LeO-xo>h=`bDwA(jm*)Ztl&X z#uf!VUkS`;C1OPrC82|?!ewXmlji{})vj8B+g{SBV*#u0_hB0iL}52qRC zI}KYd&k3}l)}2qD3NNCrl<&_4dLBkRc!T%r;LsFGx{`qXdBqa7P*%YN12n&hbvr&95&|KyGrw zf46vwO8*2_4Sw)WngT4qQHpf|x;HuI2N?vv#{>db`_?Gg+;9irvN=vz4Yz-er0%?h zW}$62{m2CIjV$QF!T=V7O4!^o49&Rc*oA6qh*~Ey^Xr-7mQ6*Z<7glLrVI#qRk#Qw zw?tZml9^H@Peccug97Jhtehy0oov+tPo7OiLx52^lVL&QG(9kIUu~;OJ2?)Jiitpv z_C8;TIPV=K?5y|CwDLHWg{BBQ>>2Q7NUf~!k`n+hS36)iG2wnWA|!WNNY$7olDtld z4n%|C?44e%^tcYG2I4yi^OONv>Ht=VM-TY-aZ<^1F}%bWQ^ND@V~lZ{i!2%JlJ)>A zy6YOcgD=dF-?UUJv*2X4>J2-=A_qoQ?dj(%)MnGwwSo#mE2naYiQ6$I)`a5kCjwGrn;;kBmAJSn$GHqy}jh z-63iKK!1(&C&;L#fNJOr>!(?hL@ckN{Q4jZtTaV%T1O;}B9W${9;*VNA}g1R$(kZz=(1?)Dw0Mf zlTP*(Z`+>Qw!p^QEx|+01$1lg6_!-v2PJ#S#Agm|72!C$b4lklV0&TtL)S%6Mqp`5 zuT@N9Xw@S5O2+A4?NMiDX@l!kdz&uLE7A{!B7U`QJ3)?6laC(<;7Hsy#mCwn9yXfr zqbnn&Ztc5b$BMhRElVm3DGR#VZ}zN_Slifq$0{^<Vq{J0c!7v5RAY zS~MQ*TQMbEbZ?m@!ed4(M9jv3Ios5%a*-K$q>AE-Cc6)*W!xqp1o3I_jy__#mI>0H zY;!Co*e^t;_AI!_W!+&?pyRyuV#=L~RobJ5nz*DeGOzeJBa?cuR@>Mbku$ zQov>Kt)zi)u$h2wOGABRYN$q_U-8;l1p7VxE6e5;1G5D1EWU4X!Bl8Qm69V_J@u6W!wLq%pyAw-8 z0)U|!Jshn0YN~{buOAX82ZBaHmq*MtM_daCn?eiJe!XeJUm#QCWgP&E0rSe0JGxZF z%p^jjFar;cZcPcqAMndqzfO;#q6%gdRvcD#(trTz6yXp+iAwkZjG7~5xYi}ZBB5YvMO2WoNXBOSL#9 z1uZ-s#|)+pgGJ}7+gm`cUG210vp8XOT!DJScX4}9JE|YmlZ-Vs^`1`)cA7yb+vu&052aH%K9nRszuX~xYj^n=07aK zckPCM7bgi(vI&%&3htE?>7;FgrE8u{dQ15x-{PL>HgCUy91(g~q~uGs>X zRYp!BM}I+kNuWYy^Km&X;yfg2ZI8!t{n){zG@ZCB!x}q%ldzqGN8K9(dnPz+%!Fp; z<<0_Pz&G|1>42MNjk!5x@P|<-(pa$GJ%NsxKW3$;Ggy|01@g^6H5LIA7;7sD-&d@D z5R~`Q%@L;Z1k!EToV9?y3UWsl_m95Z?USz4cY_4O$yuhb5^(#DLRS>@L_HoT?A0S| z2E3tPn&Py>+489j5)~SGPk40~h9@qSnd;6>q`ulTd6V#97o6H^NTLt)tF=O{$q@(w zP+S=Kept4h2kKIDdL7Ir3M@8VNT9Ck=c`atP_AzMA73I8%fW=WDNp zx4`F{nI}B={EQ0*PB`yNYxoVApjn~TxdQtm@p^dUV+ppuH9ZrX1A7C28NQr~o;t8T zm#<()@S+rfX1okJIf(;NrVN<>F%A#;#bHKY!))1a$nA2exUOH24~j}HLGHIKi<7*r zc$8QgN`9~&?F^~#^Yb~UPz${R`m->_e;h$^4rt#wfT<0E{AU0D7VE{B%o32f9%G~P z{W45u*#dHRHCZB+jMPua^4aEDAmn?e_qR}?P`KUmSy<1?>^T|>c_8C_MM&hV{By4a z*11;8PjVP)9~O*dKvH2_1>2024Zl722bEpLUirsEZQ1NaqQ;0 ze>mwleLF66WZ2QsaTn=4B!xp--VWTWl#DT2DiOL$=@^4@SYMy6MM;tn4tCfYiKR(I zm=@ReD*1kxg?h9m!%%0Z}Suxj|`b) zGq`FJdML2ND>yQXiH0o|TW+>RR1*1WLy7v(fYiJ#v_d%OPLa+`)~kjD=X&Xzu%Ik(=o{9k3EpUEg1F+kUbKm$WS|M8;HW;TeeYPbN8+y z87bOUKc(IwgwdUeSUExrqD5<^?V5~O!;>*2s!LcYqsSWlGY(3<)|F$q5TryeAr@(c zS%M2+*ZbIO_)*-NPHci!bTJ!<-Wq!kPY0jPRxfwy9i!SXcH2%t{Q$w_wp*=QOlUcy ziNgcMxUJTic03X=c>g*ZAmc7t#S&p`(fTm=?SF0CopPUiMDn>)K6;JXdEQ7NR2tiGLwi0O)>4w+NLH@bwVEq zeJ*awt*JD^oa69U38`Ah&JtxAw=x5P2?Ut8cy>M%6Q(j{erKB=PYPr_&{3TD;PWOg z<~zc|k3#bq=w~xLF@}?Gc7J!nF=ET6LU4rPSW;uVI1>6utaM@A6mdaQ(P|A%&9q}( z%hv2=;VURe~b$c{L^+uGNS?1+PWsGkbc0 zQZgh)ur4!f+08uPpXJW}xs6=>h;3&1+enFddV=zD2Zfm_6PVc?rPsJ=8OR3e8gXsb zNgO7QXew*5qDI|!GL@rffe^3#W<-BHOGt>-){M!vHc6o04kXZs$W61+N}8jP(DIg) zTkqTYiiOCh7=d!dfs9WxMfr6ySCh$foTEDuuf@x&Xt@>Zty&gU_`B>1!p$y5p2!mmWBM$Ei=j+xmW>gF!T5 zlbPuq=fC#6r6VciKcd+eF_dCryv(^^Zup_q)e}3{L%Fy@J2RT`Fl|ACG*QeVr&F2vfl|CI z+wa(!O(V(tl=y9g!ylZ)owU|SB#rAqLMBdu4BpwLM*8rLHH@1LjRqLg54d9C@;b&P zwg}I$*FyCrYs#@}NjcJbqg4*36F`uXq@!-7cra4Zp$sXMOylh^v>i(@nZ08a+UB_S z%E*(MN=;x%d$+AF8OX_T#AP~ibbU(3wbAv`DM9aZAybHoXDF}F^PPX7W}X#g$INdr zxHfxo4l)U)gg@5aKDKSx>9tJ~)lzGvBWhz`lm9v%|7beoi?p2oQxDxFU*QQKupznL z!=c3((jU0W8i2&!Bz8;8-an_tV_sXG1Aohj%l6s|;_uqA-9%TadDwImkY27FFNqk| z{+Q|Ye|8^5BH;YxB(9+Dli+9O||ln4C!uifGG!r!nI9vOsc%vjq} zFSddBxMb$I3N|?(m*1rfnd7dtYD=zm@^3vlADFEvrq8$j)9LuV^V`mT!M%p|!&mw_ zE*N1Id*xZWY;ig!@;rUYF>CuwdbB9;h@a17mh^7KJ2mHRq|BtGErdQTW|JJBtNuej zs{Jc`q$86~e9v*hq<+NJ6U~zRi#tv-Lae6smur-rnS5zOTr;W6PV>xQhX3+*(W@YllhVRI&llr+D1dWXY5anE?ddgStco9 z=>6HjA|P+;%xdYUvt*6x~x=P|=`ee?V-C#bH8Q#w*I(Hmf*AbHn{i6>~gRD${0exjlU84%W?cQv{uJ zp9T>Q05|ostT50aNEqV25reCRjM(QcrCV=(MwU*7nM?!qP?jYE2r$`ptS)y32di34 ziJNnQfqbfnO9Y0n`|RaPiO7dKJj&{2A}1O?x`Loyfe3~sLiB?oTqrz)0CCm|DM+Td z8I}#0ee^BJ!~pJAewDi|9*y$m!V=Z}7sQ`TW*<&e#elh%KdGP(wC$mVQ0wnU1%Sla z+N$U_Bf9)PL&u_dLE>?Ez;LjRS_H$v$kejXI2nk%wCJ6%;hOMwqOdN|&N=&5krjF3 zjQl>re#RySrqq{J7u?=WIiierbO$>yy|r~i?1>pqJw(US@dtf6cY>mNnl*ETJS48fZ{WyzJY+tYa185OQ9TkLGM*2f7eZYpY7w*!U=6nErUxN{X? zgpk9p_;z=l+ufTShcIS2wxVub78K2T>38@c&OO&+*Gip~aPTt@8$w^yVIAHftzzp3 zf_%fo=5^&GEc zufp!1yvHr$P8BaQXqL24@g@bkfY(jUue>!H#Q9p}!I|TT5MNEoj2tuRu-H?dsIp23 z0TmXSUqGdtq+^)_5&ftUf-HNP=%FP|} znjL+h%6tgtno!+=`19=%p`hHcKG%5y(Ndf>4kztS@6B7R-z$lUZ0`CSbdSS1038y{v?sFdQAvS)@B`IzFYB_|WM0*(vnV1S zEDs1$RdJHea>)ZE;=R@D<^b$~=rOi(7^QBzP8sGZ%pFG;ZmJ=7SA4HS4~5hQL`|U! zQz(U`a8giRLX*VMD0OBSasllr!)z+;&(Ua#aRm~6yeMpD;4kWb%z*RAKtbN+LW&?{ z%`%ECJ;BaE9lA)y8==!2x?w=1%+cO3)zm&mF4erdH6{d6Qp}87!tZ_vjCj3^rbJZ{iaSlCZ+6bDH~lPxD*6nE>$YeY7bOl;v?Uvm z5F&TU7C~`=N-Z47Q9dvCsVPu3&zXvWUBr5>Tng*o$Nfk_ovH7=f)gbpx8XfN=sdh< zs{~ooom;s38pM>A&a9(@Gz%@ zX>BKn6lPY-9$X)sDT)T@4&um3_S|rBQDa9|QfD!j&hPjHDq`ZpMEOn|@UB{Osm7oM z@uJ2!<6+R$=^)r*3BXoXnOEH(P>{CL8BFxsvNUuET~?gYAI~g^TcQho)-M6}&CoEH zOyAk;=s>+ffGBt8zs1$Hin97d1lPfY{?=7ZMZLD_PB}wz@eI%urA+x0T>?-bVI=$@ z85kz6Jk&Gu2gGb3OJtC6q9LG-Tq62#nv1hTNWf`6w5g39S6((S&*3QH~N;G zSS^`#Wnc?dr~zy5i;w=vl~xw>twk@WB3iixyW=)Ff}=s!1X1#9 z-KK>Z7=dF?J^TQsi?4H|S2Rr}*XwNvsk3 z2Vqk))#7#lK+CrF@l|{HO8pD%pm*x2V+X1 z60JS6*mXOAgy<8%g}_%oNyE1jamxzxiV$!cGzT3m7Uhhm5(XFmq=$N&Skl`Wulc!Z z$Q`^qnw4<%Zy=D7P|b%J!0eM{kI4#_maItP^BIePb*BWs*wlk?0CUnkyNXo?JKbDX z1u9o$Z7lhNy;a#{Vb5HRgIcU#XPXr#uohajLy$lcR~Ie(XELIAFd{!T;jM^#Qb zskfzZ9iSXD!GLn_eO^wMX2^z8^E-;An@)+8h+HSV2ojyGt*o!@u3Yda_SDhWgxT4o zGejh{cFgPdIj^HN$|axEDT>ud!OAl>J&{#(K!3n33OfN2Ige+486O{4+XkO10Gz@& zpe@3`CrkPS?4FME)~1mWFS__;ejeaco{`^u6ox)u=S?l`698QR^NWHOiHTNAW82>skzEs2iaKl{33rdBVjTjEORAk2jdORE%P8 zdN`Q#k-SHhR{Jk!jPu(ouW)%^JS5-0B#8rvWgtZm)1n+e7nrtK^1yizDS8h4ZBrLD zV|=X(k#Il^XC?5w%a3%b)l}}Tfuy8=XMAJ`Y3~pNHXY;jwjTz{P^|#Jla$^56}C+A zFS?en78<0B^Q7Be3QYXEM7zF?zG%_o(h~`pc3XgFA~CiJx8HElS)P5yyt0OuZ_;g_ z2rM#ro&?L@q@{Pg9=r_N#vu2%FJSTUOoK#(>F=bLX8wZ0EJZ}cp7wt8i7@#%l&`Y& zo964+WYm5=+xkoOIx8!asku~i{iD=>3sce(Z|tot80`f?HO3#N5oOVLm7_?%HV7oU>Tk1(Z)}ebhTCYq%>(y&_#tJxY5P$)G6RZ^OZQ%Ci_d}N zXy;N2!%e$M3MRPra#!o_Qf#2JPV&ftzllH8nQR zZ{H~L(U|WMwJ1J)s=xv2wg{1_NcC%yDn>zCP5oc8T`u=SQWC~35JkxN+ImN3-t#?h z=+No2eiM$-F1<+?LH8@6Wv^w@%p3%YxR51X11;uQrZX>bh`w1vvm=Z!AR2k>_LJ+) zWb+RWcD*PjnH9*BY;Vpz$R!jGu_*<88%w zo8P`2LQ%uJ2*#G6tIIU9=>ld3u-T}HXqfRb#{&hO$WW%BuU5L=R~3^o5>stZzk9_u!y|%@? zOhwESBCwyv^lgUq!EiZZZi~Fx{yDyd5vtwWZ7?)0VXjY0znn9VC_Sb%(b6(u-}j-b@@;zR?w=vkpL91#F2w97p@kHAjw!O$ z=R>x20HTDv+P?nGpZ4TGo1d3^)cD#kl;&wPv^NN$RgQ1AP6X%&IYlwtNyFGn$2XW0|6ja-tWK!QkZ9XzWYUS6O_Lc) z1OIV-U&dsqjOFMv*$8NcLJu?MY!<0+-&o%ci=Z0tWB^ZT;nv2uhqlTC=jDZU7+Lq&EDZSC% z`-s8F(7)EgvuS1KTytDe2UCWk4d~pei;*^{3+We|R!qWwD;p6rKD(6;%Z#a;p0t@K zQZWURxllh_pN}O^$J4cam!|CA3uGnS>&=13>vN|)RA}JxS1%zws&x7n_`iO}no`-C z3avgBS>WJ=nan(#w#CtScsL6ul&L!|7}e-!RJ7pJW_3(F?X+}jlrbfR_oFBK(?`j# zEr`~aA5(4V)_*frYE!0{soSK&$+-*>K!)eJ;na$;Uu_ES6b&sSe?p-v zxg!jKpQOs-{M$eAM2zxq6Lt0I0ZVfjekz^fM_7OL068#ElCek|VwESa7rKo~MOxic zm;8=O+C_49r+h=4*_r#t90SY#{xQQ>Z;hkejn=skB9Z0t`o;o${9q*DeWdA?93o4~ z^z`}4qt1HAq^(o?FyucBNbsq_&oDO(LPVvXlnkl8N~6s%^*WmuI!ujsF81%Yk=MMQ z9Bp5o#c!Uf^)ws~v=%?7hU{X!LOz8*kc}c1d0jY&E^jCz4s6y?U$iq~4DioFc*f6_ z1yTQ7bpS?pb0U=^)A*BVwR0u!O~x+VBm1dJpQ&0-iouw0w(Iu0ew3S~asMkl8C_o9;nYtQU#%{pne0XpB?Ht?=f?CuQ1DPv4KN{`w-y z?Y9WYMl;D-Bv1z>0{W~F3j9={NC>7FP164;<}MmKL8YPuK(M~p zm?{##ztZ7k(l)h+1>)|&f2;*{C~6LieKSC?XFUL`s5?lN4;?)v0lK0PO&lWC$_=?E z{S7R4^aI1;44NB88_v z2Z9&+JofJa{2!GbO#Q__0f?>s{*C4vybu2XF+k40faLD}3!GF0olV`q3j)!#j6t%X z;SRAbY=q(5R#nUp?Ro)}4EH$7J*4gywZl^w0Zpu#_#6n#^MEU$NI+zk&hU9?lx8ebk~C zZrCvZLSj5#nT8%Ux3FT}Np3gB$=vi!U5d_($a+21;&Pa?1d==JJ;3*Ldw%$LOq)_? zaRTMeSz6t^0Ptf}K2i#(pF=q)^EHckt17H#Q_AYH+z^N-2N0^XIc7r*6mbsD#yR|C!20T!Y28#;^zcq-lvN0)_cq-#A_D#1HXC~^q2 z(Rs%@xOr&i4Zq_7QaxOWLmMtqp~)t3*PIMWiN*8bXZLW*%P31YF#5fB&w6BZrguEg zL#c6=ESRBrumiqolu^wiK4=G=IcFDBoHi>nNiTE=i{Lc~)>v*$#ksC#cn7iRc5cA| z0kGW87FU zx;wQ)j8bmyk~aem%^()&D}XQXy*U)fgMwejIM02yHgbWW3FbTVZVSw-Ye{lfitZpY zVQSCWS~{PvgS;HN!4T=gP1T-z7t90UxIa$D58XNk)Tg(|*iG0nVA{Jme0L!Ziw(Y$ z$ZfgvoS>_`h3>$QW%YV6aHoB8u8v{BV!Wi&a zFi9$Mrzmnfb5vie`X66hDiP+aTY>||1%|hG7ZIr>Z8h9^P{_!)k6P$I&dMA-;8)=Q zI2n&F%zoI!4`#Qg4_D8gw~U%o$1dR9DnpH2jq{_zuU+t+C9o#flDpILvZT)MY8!XcYn1J26vdabg zf@++%&RYcXI(X-{C5S;1#Eko@ig%7HW@d-7EQ4DJ2nMcKP-`Q&kW_P#y{SbSp3v9N zCN=R|qszkd7_C4!VM4Wkb@s=VCC_Tc##Ox)9|wV%GKg8-t^kLPPh6r_k^IgkKEO)| zh2++}K05?ZVA{0=a1XF|_eZ5=BOa0EQ$l?eI@k=lU*Y`&Tv3Sb3Guj8+P)X31Aw)T zaN{mJcLhf|KGEE~g$IeWSR}H-+rUDjq`1zk1k4qzC`}O8-p!tZY~qZqHE)36g@%AT zZO2A0qJ{0T5#bxc7gdGQvNgBj!5NUsr6OpXM4aA}VigIHt2l;aRD}iZ*&C_Sp*T5W zLuHh>X&Q5qS%&`B$rk|x$w$sUJ19**xK-jr$0e~6#~_Fh{oCPnH4HZz4(HULUj35Fmm!R?rOQO<06U1j^0zdw`3^d(Vt)K?-z3~-}$aRk@L zE`|Uzu8KR_8(Z@G*uWre7p&plJRKN_Ln*~JyWtgG-A|kV+hO5PJ^^xiFKsVk!-t?} zloTIJz|iKwrx+g$xEWm@N>sEDs@Q1eO~LDSK`(HjGTuS1>=maD%8!+(@m=13n!lN6 zzqFdW8y0vQAY=lwre!kxtZAxW4uGk909>dT&)w|j%wd0g+lpr*rYueP-~0kgkW{ zCIr}Vx5)u@<-{*p%P^pj!U?yjq1Lw=87pg4b|wSe+RCy@lV&^GnmyBEbL}btyY8zg zoO3hdQzY=ouHXP1+;EU;W;lDx#xej7B9j?5$Ovki!J5A@WYwDT8XQ67Ip;2DN2-5p z>2&sA+-@1wx=&npd)mq;Ir?g-9fNrDA`dK9RXa}5w%o4S377|6=($vEW8m-_(6j9~ z-xhWp{KV{M3!XSS*zt05xQeX2Z7tCP)Skfcf*iWBoaf#)kev|LE55_P$c+SA0&Wy# zL{=*{G*mbvq!_JUG<79AbbSa+2kh?g%sE;b!0Z(C21OS$rE;eMo_k^72{A9bZ1kyb z9Jw7bL9v^x^N%FRo1OG>*oG>SDP0%?RSAG z)bGH=wuM&4NYX}Aqef%L=0SJK6dl*)?)PxZa@9G&8P$%p_khX8)%b5S*?B zu~xN$uArKsM+vdAbuApjrDC8YN(27<=ukBygxHJg%nNWsh&Dl=#9PS)^7Vq0H2C}x zWkUCD7zNxt)R2_|Jsh8pr7~5C;c`Qgc8&ZkkcA@e zEo1Z9IZi@uvfjq<;kgf|JKZS*4=}#SZE)!jnQ)>=-Zv$oMft?R>6XS10o%2gd9C3XF^;E36Nj`(U<6&RZ2e$_r5w|gm~+q z@YOHh;Ov^xGm$&BD;+^{Gv(mJRM?c95CJcY-%$DCCLwu?a=fbMFK{WFT`Em-Qn5_Ibzs8=f`YYb4tuZhgI;u+A+{`i7hM0P5;xCKsfN$*K#ns{D-sNDyy`TWkxn5pOmtlgK7T0uz7G(=2P;u# zYa`tsDAEFPrUeLq;3UIY4tHje%_ul}f=mk5_Pg!Xj0TDw4=ZaC?5)yx?%^w^MI4%D zOz>u;T2kN%sDe-Y;Bib`YOfi`Z&DD(T5y(hWgY3T!vh0TpHt8iE4RCh>i`17l-u17 zI;}9SA^Uk=lM{_ci3+UVMn=?=C;9{=4ql&bfrWWI#evVrPnO6CsRi{3oJaMaxJty8 z*XSbm)@Xcha9_yaF2%{KQL*!5a=q*#*Vz}y^cICU>hk6V{I1stbEEuaVf1%Zcr07l zqW1u47eZ0U$w{WGOc>D-rh%$slt&WdJmxrzS6LYSmEi;toY?1`pW+`qPu06D!tlm0 zcrc;^6fX3%+M1>qI88?*1?H~-fh(8+&jM8z!g_;x<-VK;bR8hj+_%@imW@J%fIfLQ zV$dYR3+I9~dV5_mQBKY_xYe$o`xd7*w!kHbIAldD!ys#=0)iVJ%GxjWh$ z9Ky*@xu80+GQfFiAw_^I{8@!~N7~|~wm3^^D>VS|-@vTTDxZREjF~d_5p97MjLc?^ zoy@gPKPH0Cx(4A36&J-gQj|N6txa08sx1fHNSe)xefX zU%=H=e5i=xA5W4Zs+V|X7=EO04}E><1P9BM_`kh&94_s+KM2|~v z3etM5Kqe$=l27XAYeA?@wYlDo3AoNzk#lRK#;ZYkqq1^qJ^SivS`TZ)E0Kb|Uw4%tNFsWl;wP6aP6l3sDryoGhRx&a$r0%XzqI(2r zUw6AM08g)uj^Fk7S~W*V6=6&$+Hu+D0QIR-b(1&$+QAw&Ov7$J3+6Y_Dk)QgU{2S4 zl1GYz0zD3#HGX}`c-seuqjLav6QR4Bek^f@vV^v*cU(QImo{>)WF^>9o?={1_eS!*$;^dRb}N!= z_7In|rm|{)abq7rbOB!gCS++6i8jDnGL)r0*dxZZ-i{qLRt~FVSCTY~L_KtG6-CBt z_=*h;KKM#>Y z$nM15n;}l*{_sY1?7su+u_~ABwVKImtoprp;~636a?S1@Uq)>}SORM)Wk}TYy~?Ft zjd({e365n-S)j3^_-exSC7)OGS<|d(mb)5O_k8wSqsQjC zbSd8xHp57+?_DB;y{l;k$3WFwCiM;RkN=q^y14!|bCH1bE|)~Ddi*M2%yU=Q@&i_I z`F3$EXw>m<}D3!`s%nK*3UH z4J)`@lcTAB<16RBQmz3Nn;))W=TdT390$0Ul*WRSa!Uf>#rodm{6o?W)sl^&E{Lk` z8ep2U9uSm46Ngk@A;^cRJ>P*_TyC}$IuvcgR^*HR94!NsC%PGTsu)lHuD?=Bpr253 z-)V)Y_qdAn5Ok0#0%kzAc_<8dFo6b5&d!dPx18~DxLr6G++^&IW&Nnik0-PB8kHie z=g1=QQH|9&;21Z@2J)pL%=5)?7j7luJG9oYFK{D)fdmuHIi4P)<&-H91-7FCS*Rnp zI(|$x2)Fix!Z7%4+WUtjdcaL_7c5d35d$2^n5%A|@eSUp)+w^O?(2Xk^nozxp^6K} z29`YiMJ)UrCydj|g9BYDcK8MjPx32l&sxZez0QGT2XS)x17`j6FLchZ1YI}#ET!zX zfw2E86^U`T8ExC(p73Z=#`!c@L_Tp!Jz?aE@=?8AG57Aj?PX6&q}`4Te!Im2ZWDfC z$^Js1=5YCKOivK@!{cDva*=Y!JpI95-ejst3JpfO%hvIv4CiLaw_}N&%--mvZNf*l z@sQ>Zp&ld6-yF$$=XI8n>^^fXiCQ9zYvCR*AKxDWJ8kSss&wd7l#X3@SsVWZ{WY5y zxfCU17hhb@=7Lu_Gpn;eq5m}JiB@3lzQzFAD;i+NpN>iX`QQnpjD(bHzj!VfGal4W zQ9HgY%O`SNWoYlCyVwzX5;k+gvM;pxKFK79Vj zt@{^CkdTr`_AgzS;D@PYW!TlW2_|FrotE(9<)75FY_!IHYa5XgD@$6w(N}ve&oBVT z9bQU+lI5~<35?-pkMUO|MnzYX42@GuFZDQ9q{Lt*idP>#<8pbt5dQ|3+Dc<)5izv{ zdgY6KSx^@CK4R{!l<{PC-)<9-a;nObX+|=%6l|f(OS{(5EXbZl%b##MenUIbC%h-j z<>6H(34-TK=bDVWAm#T+Io!Y{xFFQK(F zG<=HP_Y3L!iw2~bGCwIUx5Sp8t81_+5_pKYI z*&$;IL;KpsG5Bu^MX!McDjxfd&`P{odEc$Kfofj;Qn27&L{kZ&hB@w${4(jiJ z{*c2VHhe3Ia4Rky@iU6i$cIb?CcDQar7$FWE_r`ayt<6x*SZCenbCR6Tn3r z_IsxA!Tq#!MhVNuov%hSqi25vK7DkZ==#F+B|U}<9+|=b98;k%zN;u2KRav{-3_&wbT+%<-Z>FtMieXOAh{8y*UUOtT;;Wetw4T8 z$+P`QsXo+eqK?PFnoYSM;JfDo#d?>y6jZMbjAitMB znFqVI+w;#a1!%EaY3z|NtwXXmf=-PTO7KI5t!0?S%_M&K+IzRq^4*7S4$}^{Y0+q7 zRoD<5@q}5tPl{_A$LL~RP(l+Cd4|uwP(7J>xhRD&R`E-ckWVlZ$EgDdi3IQt4#yBT zeZE4`w4o)tqfVrWOPIcPQXPB#>Rn%%*(FBM$6pEa_I}tK*dXR;KS` z2(h(WFReMA3}?I%QRbwd$ugLx5?&K2^`5K=O3?yyJG|B-)(LRVK}Z*}jY!!yNum$f z7qw6HcsYBzhWi2tkYZa2J6p-l??Mvi8LmlCmvLWh6S3dkGwMc;D zTR6Z5{Y*uSFKp3iBur$ez8L~xJwTAc=xZCXFAs{JLD_^S#37{3v|6cbwo zGKeoz(x-Na&91|$U2M(LUo@+imu6bdqMNrgQtRCOT@RGgX%c=gOY+L*1u$GNd(2bd z_>Ph`r%6QF97dH~joPwHx93PbfQ`N^rSjzd0kYP33%=o&4#i#LfQ@v~Q-@fXv+zt|XQeBH;>d|>;@ zd8rsVTj5^TtZaN{e6J-Kc4jNnUh0Xfj!wqNYX-?%UN`0}N4 zktZ(P>_4|Qmr$~umQEt`lE&lp;#Y6+Qqsn=Z^XlCfv}TF9(SY2HSgB5EeYG6z9{wK zQH?fFEGzf91g-cyZ*|l(n&XLE{~M%{Kk<9Xj3OEI{=E=MYvlBHCQUlN^u~85V>Y0gT8m7Cz)Hl7X@dO^y%ul2hwH$v<4*~0VQ>0%k65!JDB~4n>>s1o{ zFolcA9;#xI?sRpI@p#9^izAU<<6?{EP_tdHDWPYaj?UGkC`-^~xfg#n! za=|#faoLyD0w%9FE2#QEE!U}QGq+WYj3s4CpaR6CQnf@2GJ|u)tq*U2fR$ORQe#dm@N zaxxD}19lfF|x>P2|>fFZq9pT1@sQ)X|Zf{w2 z6!6NVT~=sbGU#g?Co4-$o{11wchJi=9o)ihDX?~U+GSiacIGJw!WCA^Q0=YH!BRN- z#OF!O2$&mTVMj3p-wdA)2t0UVIzIfsDHpM;82msh_w8`NvQ|W?Pg7OAcf*xk-T>X~ zeSbkT$-pRKVlFYT=|I&AA2L0OT*zENyRgWLLqzgNtd!`33aYcKAh{2Uj}O6tdRxwz z^NHX7hh0b;g{F1Mly?zwUqNbq@z5?U1PD|~%FRY5RSiC^$agR5PdDWe0*6Ml2Xxk@ zal;wKx+L)MFbChCYNA6U{vdI0maV*~=J_%-Y>ki$2^nIFUqlKAKi$NGU&_HUnspAc zCWWib9SWcBgxNT@Kc|%x=EuOfsByu0&j_OBcxzg&<@_cpltrJUnW?hmf{)`91)>v;S5=8i;*wp*0>>1xcS z&jlT{XMXq1s^-Ok!YyxCy^QZi&TwOYZy$z&8LO>V08@x-c5u&CQflBlAbr&EC-}4C zZ~{||M&W@}-MYg#@$pSK$PhSO;ay&c?%i#;Gom0d`TE&Vut~k)--3YKb))`V$8v)v zW~QW=R({N{k`jPZhs|?UB8y|!br;J&<9T=lK2_P3fTZ_37rrj*px)E1dJ6{zWl_yp zU0J3YzO%iloH1oqYBJDtP9@&|7@pIUViIUYqI z94uRvL3GYAm{?+Ps<2s#ZjmO1(}W%VZf8;gxLX8M08WDAZCxLcksq_?CeEBU@O)M$ zW#D#8U9@sCbdIleO;hxORwC-|MJktlrk%|&2(KTiXK+WNARvFLW~9&DylLT*7dXz} z@{SG>(>%tAk`EsMRG!>y3`jk$D1%PC_4IYd9U{Ho+d-uu*i&Y-*yPL!rAsvO*N_A+ zb)?N4oS>SnTl{1BMGF^#CshKA(6piqkW@$e3(Up97ro7i%#onNccLx>3|^U_cks$e zBQ?MH=Xl4Eni1e4puLMWc3Zkdiq(w22&G|AB|&TB7RF6r)35Q!ZG&;|7N0sW88a>$ zFa_=~%oNN2BG{hD8$@(tusNArUbhTNQL|S>_P)ctFBNh!TN!sDj8V*%_n@4g3{?fL zK6k13XkA#6@>RLhy-x7G4#+}W-U|{f9rhl`)--7*|oq4arwb-8L`O9^cYv^9g{Pv0SWTs zE613}W;`NJxT?s*p;Ad!bAx6r+5p-~{BGQoQ#R8eO?)c{YHfyqpZOiu>Mu08&Y=Nu z$LZE9nw?pBS+uamS`^*1`ZBtq{g$?W$EfNHmm;D-n~5~pvd*TO9X~OycuBPx)}B@^hN}sLKcT=}dx5Csm#v47 zW7lYqD`)w^9^_Hnk3Fii(#%KgF$Ova%#{nS$#4s(XO?xMj^T50E+^CymN47nOvj$@ zS)=!%lEoME(MM)>6%!nw)QeMU0CG6a@!l=&d_KjVzl6cQ?m~X8 zuj=mgP#;k6@~}<-&V)8m>{In%3wt;(VuUIzQ9Mb}DG5;)G>J%Bxo|vHJvXS_1|Ld1!oZ5H!GGsx-sC*)Bm1Qbs93u3%-T zNhJF?QtT;6l*PdXxgaXf>_s7pQCP3@R5}OkO{R6Oo261-2nJ}WxMaZqKVGpj@uQ~V zYY-wFS!=wGyNHBpMX+nB=y2rCP-4Jz5e44-sWABqnfVw4&Ks55mqE^uY*2SKS~@iplDPs85)TO zI~sz!jL}NttK^EC>45m1qJYnjy-)6^e94|6@19TR^XL#QZWhi%rIK7Y_hdl^n&8V$ z-g-AcjXB7{icN1&d+dZR5XG;V(I^l!3Xvv0=SOwy>>!Y`QwLp0dW?<4xO}sn<0*7a zS~UL!2}Lfvsp|S=TJ&tLCVf=dQqhd=7lKW83`7Q_-%~iB}IO)SJ*+?r)7=x(!=G9 z0Mt7yOXITr=mdx0iE!Po0B=MDi;Jwj2Sm7@Vy<&wBNbfd2X~MONAd`?w(p^pLlQ6` zc{GVm1Qf3N_4*1EsD`tze}3pK_h3tMc9JyevC110cgSi|o?sQ2>W}?c-2sCQoPQQ8 zj_u$AL{3+&X|2a)_dIFw;lUMQd(|iJ0(W1+uFqrO3`MTU&5#X@BTC1F0S>a(Um zon2Y(O&r;}8?L!^gn5o|R|$;<$|Y>LUO#whnWZcppvk4B4KF&pm5g|WwmIWEp#Y6` z6V40Ly(0(Qvy@7>t*=H*J4gMHb3Xa9Lh*^=A;U!2hv1zGddoEYB%*mIcyo>M&cZd? z%*npulaCS1TPJsoT4iS_e;rCJxDD2QIl1$cV5)d?$9dpcp0)7HH486MS|!j<)(mCk zGuXZC`awO+s(ruKvbF+KF&1+`J1?N7SEMUu`4g-${&ZAm7MMHvXc&b-&_lM%AfgOv z4w>l3e>J(*z98XiQO&%RHm*x*cQwPg683=7jf0<9ClLljvP;f^DmCE*6z9fVd2I(K z|E5{2ORr^z;H_D=$sU&lpm3HsBi}LifRrKdx_I#vHEI`y^K`5>A(;Ek1uWnVdrSEa zJgyg)?bWF>$35@55u4Z6@)}MxHT|^%?mIDmQo+5f9<>5y>yI0(D2j#mD|8bBA$xz% zWI^!36ex{uuW;y_b;9S@7kk`eeh}}xa9JoQ+_(_`d7pbarAYuM;z$Iuv+-k~Fvao3 zZ!`)l6WOOJ&R+E}(EcB-9@F>)vN4oACneC6h-p(RQh|m50?7T3*`J;bnN}+nNO=Kc zdrVoUQbi0&fvts-ZZZekqwyz|bp|DM3-?yvW&??4WhzsRA(3#-->ypC+x6Gf(B(aC zNj*+7d#h&qM|8%%mrGQu?yMVJL==F!T%=vdVSW#8B88FtaBE>Z0%J>6mTCy0c&Zq| z>cL^I7uF0ZER!o_SM^u5RC=3o%FW0JU9j&^!B^YZ{23r(=J{k>q|=p5>{`3Cgh{;M z_*f=4X2;3^vJd2|7>_Bi^>6@aO{l>=>oht@4r~`KN`Xr5>r@(I}>D84b%wO6G9BbGRZ6? zUBpcJnC={?c*c&RXa150xs~eW+6YX%238HRB==mj%Z%!cN5rAg9I^9KpWb43FI1ZtroWT1I3I#vNhBrP>guZpo)~jXch`pVy8U%{G=5y17YX0 zy-{9`KTz!jmDbGyd48o(dZ&zFG7FHEmo~H!f|Lt8Rov8NIixa~4bns%Fl(u3c7!;W zY>vJn;fVQ4fDa~vi3B8IJ@Y(Mi^#nmuKVQ9gkbg9T}212u~!13ppw#swkKDlKbIV-@j zEk1u_dh95D2k<8HB6lb?YS}Rw$70(*rzCej*X|7c=&TrfT2wgX0CV9~R!8Q>_N%Z# zuY>gz^A<%HP?`nMGt1436msaLz2HOeaR0-o{cLdKtuP}c&k?S?oEt`-a_s!YLm5fK zMv-BYl|?{IEp3Gm7XT<)7_I~;sPJ?;pbY54bN(P#{-_bIc8y^X!Nx1av&dQU#Gkpp zux6-=L+RjQ)hgLVla0t}S|?#?2wt_|4p2F+bB z(Ibm82mJRbtQzxNQ-ucs%Z~jp<;VNK<>kTDU;M)WU-b)bY~S!*Fa_jy|5gy9Mt2~= z)*@VinG`E6HW;w@T|^C_q;Mq;)c;i@F#wBBvwl)}3CM)V*tnx~6+!HT3=%I^(4{Os z(#!Ja+I1>>mkxXeN|P91?#7d<2g1wL*E?X{kiy3+&^&g%HGQnB|~>FWR#p2=r?2t#@o(Yt0;&P!wwu*#XgQR{vjs7paP7C~p@ z4D1{GK~6!n1ipQfGwe^bX|6cIz~(f%iPz{ znCKH`VCC8D?xn`v$1d55V|h~D)mvd;8D%lqujs(A9<3$SJGW3|HEU&jUeNafHXmS9 zfozOvTL5~ynB4xOuw)N4Ympp%)Su7;w??TQMRPNsfZ_hPu_d3v zs9$Z6>la)9y-{r{q#tH0kGg6KDaO|o-ABMNz)B19NJq<;tx&1`jN_}(eUkHqHx<`R&pnNz}dQKk{!B*Sww zi5=5$E6TkuCW*p|q>#aIGrQIh&#hzM?O(Fe#Yk`aWO~P5qJ+$}{axPcjW?vYLbhWr zoJ2d)FDsK;vav17tIhcjMxqFZm)jzX%dhcEo{Jps30x0e{D6wGC%s9L*U_SGq#Kq* zN$dHHiEHvf`9jZ9U0;aaQ>D@kd1$vsU9BHXS7S%8cT2MH!LQjcY<+=AhFE z-FM9&TiK>si=D&2Imk8XJAV?g5HbY`8ELyng&4T^fmjBl>1q-ZcW`X;SZ64fxSw2+ zjXNl`bW5Ior9|y>&lD*@g;ZV`K1k_%0LAI?gubuXhM`~RF{8lJl{;|xr_`i7TSB^? z155ky#Z3kw9dswYrLalazEeI%tTQJ2xpBxckwlTRIgz}4i}}(>m>JGQ6jQPOcIQW= z%koTN{=^|^nR`2+lf?5vM=M`@Nd~rpLo56QSNF)TS}|KIPMR7?5)9;|ls}-fpdJ;= zP<*yZ&M$I4OWxL{+`DB*+7|D@rS}+{pN3>*--JaTF4w-?p=c|nl;+>cHQN!Ifig{) zk-pE(4AErJ%LAgK7a^TQxBiWSv5XTTdErNmUbnK=eA)gv`$my$HztJ4!^Ct~R?>92 zyDX7bRITwuyN4msLl?LC(&>vndgj%oY<;&aXf`IvCu32y7Y1fj?ybqkP88CAu=J*kK`|8fW!H@}i-Y&+`7l-JWl_TQ zeACalZ&q?kb>i+h%Tk2zSy@p0oy>c+!~uDYL>IR^n9uo6lZN;sS6Dlc7mYA%H;^-H z+W^YX&fdKuboogX+{!DQpmh19wC0aec7sL~=SKX$y@JsvjyrWTwDlPJ@_LbfGYHZ* zHt~3h+QyL0wU=(_g#emny8ozY3c^6NdK#bV(dvbOo|4Kj8@}eNWPTemiP$z>-d89f z^pU*zZcNnYjazhCrrf1lOtkRCj~?sEq=QGBELa*yEfP%@cYDp}tDe4Lxs){0UGcLy zo=c2C{uFA<9}V-q}BjsQF7WoD4!b!<<^)5~F)3 zA4f)OOKn^H!?8C$oahrr<*$tkVW0moe8yMevHnWOea!Dl zO3yk*GM?u7Wvi>ad>tWr8aj`k&I0cXufyTzCh|UT0A%J#qn6rXeBFH z?p+agGd2~tlh%6gIS(H>0WKz_ zn;fCyp(}WHPl_=#v2w zQu{^Z)LquNxaZG_Ui_C)BJn(#bbC5;H{$YDCWK+k-Ndh4!bfwVp>LWa(kdt5&i`PxCjMl`Z_1ttl9{(V39=QK==#K^p~%C2kz9<%|0>+j zUG2rX5?&Qiy83n?1RcHBd0CLR=phL5dX>(MxQpH;QuccIgeNn8kq4=w+zXrSFToUdI>Mc%J?=S_cOWp6#Si$5UG4Ml-(Rq zFU7XWkou*i<;l05gpSrLZE;h0UScQlgZaz&S>}bxYwZQ?#pepj3|ulV(!lgzcSt(x zOD=$3@ad6tuO1TXq88iDHurDoApXoZw7=-rHZSI>4Tc~1L+P0H4<~chUs~+&l>h#6 zBz2J=Kmy`mi&-Kn#}fZp;49Zjpt*P400Bxs*IJ#IA@R+ZH;YW0d|Jw;^Df7GOLuX? zuL$rYxp*qT4iUERW)jgJiURgtqOezUANm9qzIp?NJ^4zL31N%L zMq4HF+(8FYjCPD_DBX&*YxxEkjEd61imlm~sv=s~FvoYZ2E9fxsGTnT zn4nrUSa3C*FvtqJm!aa-C#?$tCf@@rHz5}B?gV2E@e;vla^bCaE8%shnpuM2%-qL= z!xim=0cdsI3I9RLv!b`}4M1Q5=kK-x-`uY%abQivcYT&-P4(jCT#><4Ez|%mWDHw0 zLqpoiHvcFPJP=q&E)$2?RYeS+%T<)6P@q&EXgSs>eW=2%9PI`Lhwl2!eD4U}Ev*f+ z`2eau{}Z*E>Z!*5pOwW)s5Q`rB&Tq!sIs6b;H^1FkVg*2-5)FfYI z|0=hr<*7n29YG%eKG+YFp$So)!($41p{h0hPk{V4H!lrh>H^mxjQOO?mEcr~Bv6C$ znkbcSKK_~HZQxk4?+>JbkI?=SZI!}+@38Dag7ueGV0nqy$O{hBz(vjWPkh%zv$RBJ zekVGVlPd%Un5e(bk*c*|)wCWIJLA8tvyD+oU54HM<@6i2HTxajm@fOR&z}Df@C}Ov z%)g)d{AJ?)^rgoC%e{fW7?k-`J$;7AKkh$_Qg0fJlG~TU{`bBxzQF`|fXRu=*Pm4C zA)yFb5mQ#k*L+mcrPhX{Pj;?qL@ot_@Vg^@?-TyeaRo|c(LSJi}MhF9kF7sCY>M6rSZ=1 zRxOltARXp*sXTY_`fybBy=D2@(0?~7KF zsD>?;#e#7e3BEL}waVA-@@X+>s+2kXBGe3uQc~c9&QCo_-dxe?xjGl2a9wycnlk(d z)twMMFkt~Fx$`?Io4#zUJc={04Qm9y^13zEdvnt*w%`D7f_!Rsfj_0uU8%d47F85C zq>^Vuc&li^B7qN}H+4fIK;YYIT_B6rJpmbH#Lj{L0}_P3cA=d` z5;-db-gYN9S07~OvVc9niARr2hH=Du9N=QVpnw@3Xi5i*-tAU!Zg^T69f4Otn)WL|i{9R*|Rx`kuo<973U)@VRSeB!<`b1?LJz zk&Xq#@68n7Vb*nrseqJWib~ zWqX_4%dn{%s(YR~YT%weH#et#NynJJFNyA1(EDbC5tTm}NkvM7V1IkABOsO}6t{BG zT7pmZK~}bwnUf`ef3gJlV={P{P_y&D%cAw)o!`_C;;$IR+fUkhO_seTPqjcHvsD#$ zPL;Ua!<=6pW5CsDiSY}T)7+sxAHk6q1sh$K6f{4hm_2fuD|K!tz{8#ij{#|lXd9^D zs>c##wRl6C;ZeQWD8W_ifOHNP8o?+*kibQ}0>_XyB~I*&5jU1cLC!$ma4dU|zsG;x zwBBBG01wTbuevw|xUVjU%?1Do82zym)9O|`z>+-vJ$l=f1$k}(RZbeHIfiZk*KZu@0m9)pHadHfBIqA7uV z21vzf_=Xoh52(A zxiGSjE|OT)ySsC&K3)zw7y6?6hI#gCPrtR(#9T@}$CW&~y)vv@7U~W;175m>lhB(>%D8dt=ncxZIuOz~3J%zqU^0y}}H^%n2} zvmA8sWe1!wBIXH~|I8~kerZ*{xyW%bXr~oA`7r$8ubz883E(Ftk7!iL1@AAQC~mQk8ve}sK3RP&PJ%u zHDU`gL;v=$h=hcgYc^nKk>(=!*^SC@awD+iG~8fV$OpBC22H7k1Js;UavF1W_qcSf zs3+hia=^ZO1``Tq_m%y&c%VErAKs2o=wx0UaF+8zs8s@zwSX5L3fT%6$KJCe zCNE-CoL@WeypaI5)o)DVE4hprLd$GAX&CX#JYbeE{&BeMQ3a>iaQUrLP;KB>B9c z+%IE=Y)EQa&j>P-r9|SN0yTn`02|-3CdSD@%i=`N32vt8=w=JHp{>o>qs-W3&3u;Q zb10U>p!WiIety4g2Q|I$!;9lPQ%^#}8n}wyLHgjs;_-5j zcBtZggz8}XvcXElycBmFKhaXTwBTlza=7c9@Id=PTUTj`f7>0&Q*pivEiev{dFWO< zpg>H2|6#l9&0%S*UHv62$nfAH)BxMriK7YjX7S+5_*BQ&Qt6VCiB0@KmaSwGKQOMu z{o(MbJE%K#!q?eV5Z~7d&2FgLH1@`cTdz)v>~wfUblj&VC8xbi7A<9P$Y4-ALdn?T zLaT{9s8mz&Nu4(}TfWK>U*8nTokvsL2Jb;>oCZhvm;+6UfI#lWCvE`UDg+TEcG+p% zPj$$+Wt7JaACt_`jp__sXr4=1CYV56>6p#jtDSrcXL5g7c~8=G(rz?Q?IFsG3;LZtM%3oB-#PEn;}pLjw#jSI06Y%%L!2W8 zN21q79V&pPECHg<<~N z{r^5zcLuJ=UE)EXIYnbpC7p6A-F7*CH&HR_weTcLTD3rmSHz>4Lz6XO=+IC&$t_Gf)2&V$>7`w*OE zwC4L0^8aOR3DF`z=g#3~`pY<{TD1_oO{M=OoMR@PAidUWBuNA9#@ zW)EcJRl27aa~%^X5e8Ww1|y#BpWTL95Fy$BkK3u|C7WT$5~=q~$d6FQuP;7|;)7g? z{!%P|6Fk!o42kX5O>-tHMCply1#vEIw8?UI_%YpoL-u~>-#7t!M$<$8%1F*zfo3Rz zbV4^1Om@)nAE61%=$1zkMr$lHtW%41Hr_XGLpt8ZbO1s?y}zGORkid*I_6R`+)sv1 z3a9&J)9!rhmwSUMZrN*!nb#6yu!JG|mE6*h&{F%5cX-yd+PoHeg_vw^+XtT1$>@sz zAa-T zZi5@j)RAqS*G17wIelNXr5TzG%n_OGx!UiS1*7(Vpjy)Nf)+pHiQ8?+JDI5OyFmK+ z+nzGr;#8AoH^Y%fQ}=w0#MF<}C}r<|(z$KxpYEx7{;ut!(*G>5tp0N+nm6_L^6L!Z8ZlO(I@T2vGEEvr#?R3;(#G1m z?MF~IJu<@fR3=o6^V328_^BcDH7d}H;MWrA1SFWLMUs!AW7}bSe=_-`U$t~Dcu)V% zPA(cCW1-Q@b-&fFI<4SN^{Z@sYV!4T8T~TFUTWC0v*j;uySHz2q>H4evk1y9&$hhU zvPX^UO4`pp)}ehEqSeNABO#SPJ}ms`hXmB*7IVYso=$5y+t6&J#(!%5I|M;$ouEfZ z$%#gnvt>=M5z@>aO{(q*K&7b|(q9l~qsU1sWxMT5Af4c?M8&f<)OD%s+jG|1v+SS1 z8|2SD__j37?o9sc6tGD&e_{*yFH@)QY5G)k8OZ9lAv{%xeG1_TWc*%?n0_!$-N~g7 zVjP}I$wX1!=YcoiEy|TQB+=-wMt|f07t_;=wvN1X8EoIXb$|`W_iLj|@sQm67<7+} z0MMyci{w52c5eA=UUz7JzpdGPG_!uMBT3I$S;=O<(qtrsOMWv*LWU1&G_7~^<%3KGN_rk`v4u+kr4cr1u9%x6Pn_;RFpfDp?~@* zj-P=vi%Wo8=6mOt_aB!E>M7g51jFWTgr_9Y_KJm6hAXKuM|&$jUE|b+T%Nnds8Ht` zP>kB5E68HmLG(0K^S?7oiwO?S1IqH6D$Kci(rzn$TuF9*>wRsjt3!L2wJ}4tF?2YK z;yKP7Sk3?4getF;8&al$&)PKJyEp|)MhNsIN}BUW1DMi;jZxdyrRuu%@l7WsCF}!@ zap_OHaMmBgpX?ztMUyb}`iqMdC*3@vi?%NECo1r?df}238|jZ#Irx65{x{fZOwoyf z?Sk)`z)ir*2ZV@_UiA%Lz2_dL&AQgzgbefJaUA5Nbj)vQel5KHz=pde2z4FP9c`qX z000FLa6SM4F?Dbx003_Qd;hDh!l`S-&26LMpiR^Bw|R!YXZVWdC>>RIN)$rndo$4A zq_>PqOk4Zw^HoYepT!vX!;nxi@PI!o8K zna5hLdKDw`ePX zfGkc8aTQXUjO^HFE`B@BH9M8Pp0PCVr*EQ%O#=wow&#UIi(Ioa=V7 z_F&1j3x25NQ)9VhilvX}eQM>=N^uei1RaWct%{5-XsqH!jgO5?*K9$Wd ze&3ITRSu9b0I=5Pdb0KKT`N`8&b9>>JIGKl!+G;}#X9LKC&n%&oUphNh|Z71v1|?x zw+XKza*qovlcoS{{SLT;P&~0WqAw1c8A-Z`WAUuW%GMpM`XrW-}0z@nArhl$!DpD~G7W@0c7>b$*fSi@aM z<=;6mw9{KfLIHVk;80&(9M*(EfOsmhdZkU&BoM^&r_B)730Jw#^1(buw#<|QR3^AMyW0Z-AO^w}{OUq+IH&8Tr-*cZ#B2``S9 zrpfFJ8MC*3<{Qs>cY@p#CAglPsXzmvqu0a?IHG+qmXS07)QV!j(qkt_6bu;T?N%E_ z9#E|YGb)AH(jt&(q6W&!!%|&4n#_ugg?)xw=*x)m`})rpq6Lj-0LjZD5{u`Aq03Z9 zzGfr+-&y2136Ycz%d{d_p>+w|FsZ8h$cj$Wc=r)p5MV*lPLl{+c0*T?fPp-w?zqtQ zI2Pg49EM$JxQc<83@DM$TBE^lJ^81~Le*R_RViWuS0bI#=eqs0SSffzszc+Nr|To> zO(Vu50+xOREZvyC}fh1tSKSJHknrQ zWnh^-SR-oP0)e2_t27-^q=7!VCBljpyYszVKURt$W412# zn5ejm7e~4cA^~WgxkwOVs$JS(=G5` z@UjFBXP#Y4zI9kLwg4Fg&Ryn0Rb#m3YL3}2Vk6U8d@UOiZmcChrs8z%%Xt1pZuss0 zxQW=W3-AO!pdpp5YICw}?2lS;&=)C_e{MB*pdC8wT?l402r%F5$4*C7!gU0xIdrYh zh@7a3ni&;tdhRw2D~RA|Sf5nof^q5z9ke8?yw?PpU+Yah&0?`j+1TX_-z@!3x)rqi z`g7HxTD@&z4F))B`&@vZr0Z`hZigglJQD${udF7KBqAZrNF?701YXOXaX^&)i~}Vl z${@2zj}_AA7o?GA1RE*$&Un6^SxU!1HqWz}p$tG;5$iru)A<7(Cq)W?uv7WztoX*V zrMhW{wS8u|{wqw1R2)a0ug5uWt+m@4WKGM^(ONLX{@oL zthcd0u3=NEq%XdTfS4fmw-+6B%Nm1i!MJulk@c4qtyfCrfV1LO`3GP|w2F7_@?Z1) zD^;qdm8wg+L9H&8TYvw8%N4Y5@9at>q_vn?&7_-`vP!+MS$OX9qg9*Y!7Z)iWx~;0 zl(q(?5(=AJ_#Pi0X>PeZ+m~_}Zp9AYU;O0#(~N|HV9RB4bFyn?)$*_H@TUEP2yLVE zR#;#FXeXZys;tL^0w7EH_n*TTon2_X&H|(b;3XOghqKve+{=Y$SkN0RLSf)*-X9AZ zmuhq--@VK2#a1s0?-h*K?(Kp7aSOL#0$}**!B0~J^?YXVyWN5hUlmcCkV#p9-NAN% zX}3{pIFx_K7(@bQ59}F!*$%dNEmHS`i&n=dV>7YlKNXPo(TT>>>QXBe?K8Ou=QvM< zk1JWrT3fBHNF*9zA`L^5ke3khzBRn$AYrxEEu>3nDfwQg*anWOxt659k>NJjCuN!0 z;Ilcw*QAnKFCn3Ck-~a*X$e7@L(McKT=cg2E9qPv0p?H;c{ zx1l~;8_q?B5`g2^3G_LiT>{_%y5WYO+mSbdatXlQFh#)YJ$fScZWTxkwttm1mai7yr$&2fQ2N;bS)kGi~8}7`Z~Al{;k3fee2p)y8td zlUXu`AGZF#=nF$r1d7@;ZlVrGT-H{8{j@)yA~_ax?C4TxE29`#lKuz?yzYVzyz1dA z-P$Wer1^ftT6bl9ZFWn}U}rbJ?wyX?aN~;FksXqI_8FNh4sgANXe2CH`xa#^;J;_eE*vLwFUp2Lgq85)yTqa)OT!JcsQh6+WCay(0spPf?gM*;X1%?Auxh zuBJ%Zq!TzhkgE7kJ@_kF;^YwfEa3g*p~d+@pyV}d3-G6E7vMT`o|-M7#bQ5h0-g^R zUd^m3wGNCpajJ8a%W;uPiAMPeyIhL2S%I*@X$Y6y-ZE!a`TJeoMuh0X(rG+PZB`9Y zV9WG-EdmY`dyA#CCqI&T1!w#G&VQ!?&5iXu8+JC0ecufC5qXgIU19rRz_qhY4Tm^| z6`+i=5$@Zrmqo>4355%*w;*8xNpul#XW4zIC0{5A%T)qFCE9S@MsPrJ1sFiP zc`$2ZHVd@Z{(`{ULLGM20~b}z>u>HfUG2}cDh6k_^TC`2>cF{bYRXLc?M*XEu{N@c zXxP2oX@Q`JY3g68ElWN__v&$=-lma-xRt5D&lAudGQw4_w z6*ASfhpTt$AH)&i2!pJ^@W@EQzQl-GfJo_Jdz%FmtlG(#m^yw|#z!Iq zpxUn)s^&pgmE{nFnVl^+PbQ20&WF#!5pe zw!t%{<1oEowzpN`m0Riw+Z=0Y(l<#9;U_Ju2L_vi=sI>CQvqTn!X&Dk_+j^n;lU?e zK0ntMwaPeat4d;A0faZG71xH8cZbkdkG>eSR$Gm1Jh-IuH1G8G##}P3mrKH=iLtYY zs&lLguFMWse{@8H8l(FFxb)PpxPV+@B#Yc_QlGj?S*SJj(WloCb`v6f@?E#Ug~4#i z!#Tv#NBB#^5@xB1har!oS|cXEoBgR&+KX+%Rq0kRZE7n}+n}(YpHRy~Tj?2{74fCa zYIFotdp(FSpKBvX5HpN-yE1}u7`vPM0vWT}Gw*DE*DtcEZl!~nZQ|gcjT)TZZkF7X zOhN}(+=AkHZ!hZkUWp>NkE^9qt|mC$;!BcLhS4W+Ebg|s-6=L;eAmQ{cCY3F+nz~g zgSLWWV6F#=FSl8C+W73@xiQN{=h{OOH8$@XN_?NC{0|gXi@A?`H3lIzJ%HSUlJ)@bU)qTZ5lL0x%BOOc_Mh(jxdwJva z<2W`-QCByG8eZ>ZsY0jF`$e}kK`!$B{3)QNC>Rr{94^9bK*AZv!F}{eoWP0cP#o8a z*wV-xS{K1*&$v?Seit>L=FsjQ8ElWt1#RYT%q(kEV28b)nfR3}Xf$?;zZQL z;IbxcEAsabne+ZT#);f5J1M9UnEEyn?>RBr$Qibnfvi{;bS9vg+T@%FajWiDc7k^?^ppr+#|LcWZlsg7rUM% z>j_8A5RJX7Rj1w6{4g*|c+>9w% z)%xoe96DTf3j*(yEmM=f-qB+3G(i<;cjA^F_@3BN^V90vCC{4|Rz#9NGuB;W9baWl zw4c}?>A^9Hi85t%t9VwKiI#&L^LJCpu1)NUp)ZWe|Eu)7s!h)gt56HAe5%Y=smk)b zgoNJsdhY1FIBH?P+t1-@;y%SLN$ydYr?c*Af|5tdq#`heFe|%pnrt(8B;nt7Swl+2dHu$) zWvRApx4uUwtV2&;Fiu57N=Eq2RfSG*mr*-Z_*qI&G$1a52l%{o8nBP0MfIK&OQt;)fn zK-e|GXb6mxT4vo_U~*;rcFs4L9@%a1m84p^W@3^%vS#uY>*9cw2rYBVM))# z5giJABq!d9m=Zi*{H@9iOenym{IhXHMTf79J<~#ee|pe060db0^JIU^pPNsbsidZ}NCNnGby2SlZ~RRP+=kKY(oU zD!n9^$y|j*=TUwsR!S_jlJ}0i5NUAiDLu-deR2>zDbZpvv;cE*KjsI4*$=pLiZz*} zz7-L_V|`!jV4o1QI+=x>c3i-8`yM(u4uBj0g~9ngYk&?=QfK%;%dKj%Ngx4hk;qdw z0i@3rD1n(USJit&bcdzCLX0%_S)siME=d16!8kw9P2OoAC!A=0Tg#d)qScDn{TMwx|d zb@#6>D_;vxz~+qe!S4(Adz4Ji)Z=3^igFd0j=?Ms@im(5pB_&EZYk%(_e))!vJ#cY zt^vTb&F^DZoNBQ{FE5t->A?sw#NOvQ=F&fC+O`GNksXlR?33{#pqzr?e^i{N)5$+g zBAuV@#BDjxa`lm2(~kJF8@&?I)9(9-$OOt;WfOGNwGW<{QQnquO-=pDDDX&)WllT9 zrX&x?hNd%$q-{8Pna2nUo`zv9MP{r#v4=DVvaG%lHBZp4+(|`^^1QEsdK*B@k?l_A zYN8%T;7v)I)ak>9A+e9je0+I%j76F>S%Fbi!4{AknRsr`EV6RJUr`ZJ4neVWk&)&@>jEA-L%yqXooYL zcz`kPii`-`>qm-$y$}WbWB29l{g$bKV6qs1^O@UDhi>cqIQ6+*?6Rp@0gxz7WE$?` z`BK9sk=0w{j~ND<@+c62HXO?Afm%IYp2IB~s;PYLy?f!1Mt3%b=d*e)Mr$!OOft%h zq5ym>9n25!91^)G4sY*`L^c*jGe}V*gLIkOW}7)gBH{{(9~IiY*K{*6F|$BikyGhF zh@$SyT5C*s40E*9Y0Z{)&$befD|2JhFZD+iWQ%5E&MbA5Z=JCLZOHhDo~w)?3=~Hd zn53ck5@gI#%r8_`U7ES(z|R;@qA`_$b9J#8cM>Pyn{`!1s4>if(%8k&-L;KUcRJs( zK;1lBWy$4aIl}3EQ3kaY?FwRkuEWgCOK84t$8Ubi`j6A!n+{tG1likPG$3O^fVi%E z+y!+4-&*X_Ia4V<$1tS5-_2iq5j`aO?oh)DUn+{bMNX{RmBQpia*HwFVh>V*a`=C` z`h@&%nr-+ae(s2t|M?^~PC+r@1=N}js!r!4Zi`80>Ru0>?I<5HF)&HDk$#@n4XnZ* z$&zTAL-NtnRugD=#?*%RYelkm(Go9oy%Wq72w2%i#3EZW8J;)B!QGVU?C|EE=e!=;`;x^&Xcib9RQ{@|+56T3iHo2}LxCm!U=` zqKl~@G@yxZlST508PUPZpRGGw+@2FrF)?s5bm%`3uIks;x^4?`;?!M#C6#G)kcu0Q zSn3atqMF*}u6R|Hr@iyE;3)`rPmk;6_AR}-rH~CV{$czRg}4x6egW!3qZq-|`KT4- ziJ3_I(TOvI+1q9b&Fq)N&h$`d0adQzCij^Zw8~%JJRJL?{LKqT;cFS66AO>_^qufu z9LNo6PlU9gvnb09^E(*&29;kv6{GX7Y-CH?S@8z>hmM8MnZLFzMKW=Fu;P|-PJak97BtZA11Gh?F{+dP2r>2MjqU$^em5eYIF zhVc_`ex$c6#BW_hve6iNTF&V2ii_{QJ$5NMetxG|!VRMl9ca9m#{>`DY@HG|=rdBm z#TaUIooeJc0Q`;kCCRzyn4Abkh_~flfAvZQ{r<-oE^&sIbViEVjf-^exMH66G~VIx zVZP?h|2Je{Y;A?{>9glF51dCbV11u-^CTXTKxI^v+Xn90+2wyy;%;kmh(S*c#`E=s z-w`ExEJB|My+<{mP#?0A*BcoP5^`L6V;-x&KEkqFGya~mmK7!3wjo09BSrj0MZUZC zQN-sPnJn+vbXb``KaTzWnHciV?X-`hlyLU$L`fDz*2J*qCrN6jSq~|NRZ9nUN0clh z8}bo)bX95`ep!dRJs6@tDM2(I_SR`1@$GxQy6}*Jz2iTaZPP3*hv^3K6{|h)d#8Wy zQd}BNr7mi=qd3CK^a{oxsP>8yw2)$3u(-Cg&b2se_Ji-kky4&n`eoS_>-{K)0Qw!; z7{N)8QZ63SkfzZSJ9M$=q)|>#8in@d;i=_l{&4mXPOdi>G>?SzH3Yas^u4vMA91iq2Ij z!}9pKAeBX}->yF+P}Fo42Jn_~v5VcbKbkgx0Pp-r#%!gJp5Y~Uk9pJkHs&mDQNU{d zGh@!U{*hU0sL+G5_&zh5xy~U``+BjP|HaN24CWYW74UbPHl=Zr}ng z?OQbRFJErsFPx3L%;xZ^vn?L(qdyC>%I3$@_jLPl%^|!6jrPo6cT9Dk)jdz4bcmxC zo5iUh-XTWOW{+;Xox1BG1Sc=^35gK^+wc~TL%JyMj!{^jn3(zdl%&@cc}((Ync)Jc z$1Bx4Gjs^Zj^2iB>FiTZHxp>2CTzPA-ZY->GDg=YWZ}xiAbwIZ%m*%3ST?z}dW6p_ z7Qu>%j+TWSiHeVTOPr-=%t;CCOzK{<8poe{_cT*<+JK)D+BxNz=(LIg%Roh@4e7Lc zatKEp{EF^DRMgq*jI*7`+W2KO-qIk-sch@tkqULbyLS>mFa59B1)^i7Eh6F z5VhyCpnm?*hlYS|Mvy_occQ9iqn?U@Dn`tb^pj$ z?sO3;4NY-B=xdN)H|LZhQ!E`wrBIHkKKroBINa&k=pn(x5#JY1jmDefSVq53+by1d zx`+&byZcYu((W4nN?o+o4XEiGs!FuipaAOR&!WKiX`>&I^wx!i-6RygK(I@5c4_yL zrbJg!N>KfzF6=P<@{Yf+L(IT`14E^>&iy)G`(6A55PXE!iU6XJv-8;6xSD3^O0K*U zo8)k`<<5$?vz=mU0sLw=r-4Qg-kBySe{VUphvA#_k^b!eUsx#jsef}0^rtRAvj|1^ zXsyG)D{SAofWQjQfj<}K-l&jDzqa|lTrK;_81e5zFF8fc8k(*6f@sCXiHm~V)Iy;+ zX6G~|__|OWuw#xkZpFS?>%#*==8Bu-r*1tKz;%_gW zk?9WP*U-RKPi2|X+wR+Eistcj0TFC$;g&Nhc+Ifxkn%r|liIxfH&(KKeOb*! zfC41W|AMl=Dmx`FZ67|LqAt2;5r13q%`X6_-}m26K>6D%5GXQ<1LEVqYnk46BvI(Z zKqaAhMQ;{*&emNWIdmyYhZ8k$G>#g$YZHYILgRjvjcqC{Se8RY=mC$k$4Z!SSOGH4D4XE9o+Np6F` z7(Lj60vLL-JJ3@l;XY1pOtz}&{SAoDctyBE69b+odTczs*f`i8?fh+AzK!V7+bu}c z(NH~REQmq^I4kv%)iS(ksvQzWdPQ{GV%%t@If*!#_KK9nAI`@7V-w|Q=PsCsXs`5B z(|G&u7EU2^db=kR7r-jbLWhWEk4ok&jHt9&n2qVcdAa0c6DxE6BL7|LonHQK{|^gY z$#nhb=4VHo;NM&IFT3y;&JogN3EG&9YHzxxl;3ljQwEiThfr$H5SCZjhLf>7ltTz@)k*}Q}$I+xU3v1Fd8UuxC!MX$T_m^X{`GYFOj_4q&ieqc$QQA{F|0xN{ z_~0s1^AoO?ydz+yYfIR2aNPQOH1%hka7!`eHa0frTnMI?fAw{C9Qu02CN>@I9fTBp zrMw)Ra$t^RfE0@9sq1hCFjjjWGLv3Z)?|sc)_&tHw99n4ta|#VHAiTZ0BR3l6;`gt^1Pg1tDAu>U-t+Tea&a}5EF%S1ST*L~AFf6GTp=s0 z7`_fU$`R`42?!BOl@H)-NeKbOgeAXWgM7GTtWW&NcXfRIDF8c{nnkT)KiIpF;1`wJ ziq>tn9q97LtD@VBS1QBF!+8HSY6)SM?xkK0M>k$rfd6YZ26uno$cwpzRMXTW{I3=E zqw{b{ya>x@FEnB7Y~vQsChX7^w{;Y!fATLOa9;bFDW7#(_m_oxxMJlObiHAct9;^I z)`CF;_X-FX@>y24Fl?ZjNTq{xStbOsrT7V8PPA7Xt3Fid*QtM_EAKnspx@SGvxEM5 zon>tNu{+1wL`mc=^)0_LeQam{gP2j7<{&jicgOW`HT|4elw}siA5-P8w|L_wcfD1I zo@IL;zPe1kXrZDIiS(P@OjW>AI)7`uny5#^^bSaLe5Uq`&i8eGDBm*#otxA&ELm`P zfO?oU6^GMHseE`JbI%g>!0ydWHRihUUQ{+rn@~)^$Y9=za^d+VNCd#F8lg|;k(Co2 zsWxttdy##e2xs%^<1Npjo0YT5opU8+8F^|Gx}lo=%7^uHA)h}yOYG#YGhNQ|1a?_n z^){=qw=mWsq!%l@K(vSMZktt}NVaJsHDtFY)jj`WU&1Vw4_KCjajlo7!A_ZEZ(j?H zN>d?ePsOE&f8>zN!Pzs*aimJ-$5`Of-o|ukkr|wk%_(KJq+}%eXQp<-Tj1p1KDNFb zJS3eHmKGn-t8@c`67Egc--F!~qXCz92s3U)RMcABQrLwx{ZgTGG}|wZO=Fa9SZshN zvnR$Y!T~OKi=;qh)6rtvai2gSM0B$Dq)Epv+&*ZM4)%I%N!8A`UMd+pplmB_{~*0V z_CFX1xCP@-Tv0n%h^}oi3q@s{<>CThFP7jW$B?5`r}d|6b1_s?i%Xo;qd9hr2-VQK z>!S;#^8on@H64r3KEG~byxXJw078p;&w=2O@`|nRQQvFs!A2dsp6#s}b;Ih_$+8k_ zOK%?(-V{8)j86yP5+h4U9QpZt0T(M)p=Q6aTHKe3)LDHyp!|hTTDs#F^l*JmV`dj7 z#^0m=y0(M$_)l=D=FD6UVq!A5 zerY6})udmcm15Pvu-*d%3-el?%FLN!*=HYe^F%tBAT8!=N2Qw3PIdLPCiI6alTZHo zs&a%s`M%hp6w~JkBU~8m&%tt-(=n=6*y8&9iHzM2VEoV5xsx2 z#Z&%U=83f^UYYD^nX6Gl2U=u+*cg0k_x#WhWFP-6hM2_lr>FJ3emskmKPdy9#F#@L zDHm&*M5&cEs_M6`3#9mwekRtc9N(hLQ^eWArnfp8K_g{v9`ZjgJKpelRR)hdp? zbKXMBaOF3T2m15Q@wKF`!B!&Q8BQw{c{uq?ycja5Vw6RYY9vnuG`y9ggkq-*4BS%O zQpgiGa9b)FIFXd+?z7Cq1E$iWQ+gzfV~bz$kN@!fy`&NHmPGJ?88y2PmC z4Ol7?hWD?1V1-n`o^B_oC^HCb8+YZaHC+CMK ze+ok7r9Q>n0h4sw8UXU1j(-;Z(THbs=g1sVsPiRoaehD8hR9BGb1pXBm$2qwl^mYH zT$^ef$a%_z?L!dkr;Xg zP$u)f61rO8`D^Cb(&T2qC8GnQ1%c*)pfeu|{zBxykn%!zc8+`0*8Gbw052pthhEF z07nZ84zR91_NPl%g5}w>Q!7^>c71(Cv|Zx*#wU1e&5GDRWIJrskhrR&{$M5=-SUPt z$#gHKQP-Z#^L|5prNJ>0GLP6#4q;$0V&~SwY(;=?04mnl`N?YnPh%}8ynkgu=V+&f z%iWmrXZHiR+r?eEgSKTACD0Ki=w%ZQ=MS_nfB@S6^a~Nd+xsbRJ2{i|P$7mpF`ksG ze@ql4+Z8A8!}I2T{a!aWetcx}Q!oQ%h&E&K8JJf2EkBm`XJNZ!qjL907TCqV$q|$P zQPdElgdTf>0A=zarc53xGaTaM(>0%uDA8&;{Rce^1!1G2z5S-CKxor zhS7epdsmM66=mO^fYj3OCUicpS9u21SM3pk!R1@5g;g4hg7_G|Z_%0rU_h2rCx_HOH8XE%TrcQ^b0K)({*--5ng!bI&fn zo6Jvd2-XKv||aABNDH^n)g$Ixlzp(=rV+X?<6^fM(FI^%`Oh^pg+h{8072VLj&pDk$!lVVWW$u!K=u(t=WeY&YaGIC&Xi z^wG(N!H%Wjwmg#a`4xemw9%8>{aG}kUzK7i2`VwHG_$7ps*{nMh_-EnVTwdgvR3iv zzW$osOm?zNLEj7ZjPI1<9pRMjk{z|9euA9aXHzhHr{RR$=?~Z7lq->19l9LW7cN&4yXCh;o-2%Pnudq{y>DKl9DsO71E(NFnGQjRynt=?5whE>}d~Kg?cl7NgUE zZn=>*`OJ|po=+lLr>7M$Aon3@X8(&{Bpzo=te#~#qyQiJ{#XAKdoZS0>M^ckg-qz0 z$4gSyYf+SYc|g=3LZfcVjS?6G{$_XKRT`oPj|qqUHH5&Y;ZeMd*l(Sp!~Pr1|I|?l zn`KG%zQbVG{e7bYYS4J0gn8+A!^>Z>D8Yt;Ph}@3nvS`2)%|y>dNuKItKh14-*O)PR*{0p zywS>o9;-JZsO-#fDV~D*cA4N-J1}hP`Ze6F@ir>CG+f`_M8$onEciHwQSQ<$!i-Ly zJ0h&?xUtBM@S@3_OmBaZGP3g1MVp9i39X~yKGfI4q&JE{LQbVhea#VAMs(k_(`+gg zLvAx}iVFXDR>Jpp7gXY#7kHS2CrAH~27_2{{(j=1=KDjwgAD%CUY+r1-vJ%md!!OX z#-UD{n1!lneIpkpLH+V*KM3Enbx50EMDIHQ>V7ugf_TY&A}aJxPKBG7X#YEYaqn!@ z9Vm)NoYFAYAd>Av2eHuJPep^I-m3~(Pa_Aa!Be+RwB+@NDS+qxOlb=8WDho;;pw8^ zbYKbs_oq-H23&!8R=34(bU<}?{mlwSLZar0O#k4Q{p0nDB{*8j$XvMC;Prz`Y~Jm6Ek zQ$ZGWe$bmxU{(G3hD)~7F@sc6vXbnLDZgo}O8>!dwW4IVS2V<>Fs&D$!qm`bJC0Xx z*ud6UdpY7;&*qbhv=jeT$^6N~V(tQf{AmpV90i^h=1=N*9kj(0!$IbmgO3~CNoj@e zJk%aq>YwnHx&sLmj!)?Oj`ygEG@{BA#v-CLOz${(x`>nzM{L;t zJ>z<-3ko}3K*0DD@dxX(F$M)~g8HQ3G0BQ6ks1VCO2eu0%*M)GTq`+R)Dg^233xu@ zZK1jL;%E1Mlhl$_&*vv8xr?zh8Kj1r2p;P22rb)ZeEBB9EiBQ$-k&FJ=J>s|d0jVo zz*93tPw#4u+q^Oqn~JUfa2PAz8<557$6s@pzue8LJ1l@)77}$ko6@5H*qukS(ZW^`_{DmY)eCsCnA9R6GOAh0lY=K$5zVzU4e>8!|+}pzJ%r8M^ZyB-m6)_eRL_(x4e8_TBudVPKO{pndlJf}=dhNJoxO7!oX;-FeGNsB7* zu1Oz#-xX03enuq%Vl-FG>>pZjIXL%MIyKFGWECO)19Dw<)u$In@o;5U!%JuG3aM@b zr2cy76rkHP$)G*_CWa&)7yiA<0a6}YCkJLfJKuRoBPKODwDQIj>brj*>_PiC*BnzV zxtQ(G-T7y~+qsf<8`1&(K>JWve+15Gdwt_pO^{adm|D0#S}+$pwf9pL+#>ZDUSAER z;)J>pE{LoquHk2eE&>Fg6_q$-UMG7~K6kXY4s+WTNFX@qT{9`?Kf9c^w#nL`05-F& z**0HZ+A@^OMi^w-DCgeRD`>WVw{fQRw)Az&iMleJ>%H~1KcLxwhJ=26$=a2#AGJ{i zYPUH_wnA3In4ni1u#7Df3sU!P0p&KCqp67h8>|-C?9iXrz)Q;70I!L_wfh&B^7fx4 zkjCnw+Zy{OUbDa|hq8k$8Cd>T{Tv6why49ra^(q8kOEfJE}SP`O|>{;h3zmA`1)~* z|CP3h^sW9ELKq5(5tnb1#%)Lfj)bsVMg-Bwx8S;Ur-0oW!H2I5sLgwz?^h!M!EO&G zJA0&2YdHf%32e?`gv_>HTYD~Lq1dFl16W{cwcW>`y@Y2vMaBx9%rQdi-yCcUap9I{ zYcI7|w3v4y@+pEM5<`hFGKp#5kq|53f?bBvfssfm71&v^tsFdWwi+hk-wmWrv`7=? zYFPHaEK4pi}xf0+y$3xrXBe=?1$0N!Rb{b}yvL`Wo zhN(E(W`^8;i=CFizixxPQ~IR5qst#k9GO88lh^_B$eC-~-CKt70u9QNeV zRlTSyKDy#ZYS(3YA*BuKmG3kc#o-L(%kuyR-1qN#kjO~6?0nWMynYkHWdE6Wtmgd@ zsu{BplXxy@PI5*-q|%@&)$I%NouI^M|N0jE1iOj*0KGq%35Pa?$U9mxslqv3ZE(#x zrB8#RvK=d19luvAB%HgN03@0qm;`}Tlpj}bQstiOy}WXF`jD${hvq~*V&kNn)~rOBMKGOA{q-80&D!J0X? zb~57VVD^dJn80>^mA}q>Rpb*2%6X=NC-?UGRp86qFt~!I$%daMBB(1~6Bs)cA&Rb} zz`Sy%bYU+f(#FvXcaCrY6+G97expVr!gVHsY030MS7tN-Xzv3CQr;dP)?Y^L^|YKN zY!!tUfRa1hPGyQ%(U}mr;jx0+xyYeg!oc=n z(a6aT=yOWCvm;xA>x{?3EgBH6diV;JBkcO~MznJhcOo$J9LWe-OGh}MauYx^fnfN3 z8zd>Pyh6obM^j9&y}$s4f5oI_0I&H4_!AgNfcv^2QdJQkj`k@Lf&x`~&e2TGBNc zbpYLqc8{)YfCR5HvrWUrYwFQB$XL@UnjaAmgD8jZG$_uuZlUCT=I^oJI z{UsV&Pxv$juvuwk*;YhnK%mQZ^El*IvdWUQ;P5Zq@5;`J?WN}(+BBcnDr1Jhwrayw z0MDD(=v*x_b@A|k0#$^zVad@#)YmrPbi8`$Q3fJi6S`sIT%rOqX&Tuv=91*TC)09R zFmse9AjgzSf-^2TYk39*Adrkxl-%{ojg%TaT$zLiI#sNd_ zKv;1SBqhn2@jE{!bZM%1!EP?#5;K1rpM8W2m)$vjX-#8VgS1_u$%_Ame_2GU9EY~{ zjLB64z0Ml1E6ovAqDzX5mjjz8RHbREdL}H<#T`Y(XC`&t+Lo0-&0PXyl}IQ3GMAu}QpnBU81D7GQ7QQy2Q8 z&-hY?VN6s1&0JbmioG-YE5nb9iQIMtCXFW|f$cnxI02WURgd!_|Tn5HX(Z~RR000;O0f>rX z0}nmeHpX$#G`;O{jn;3Bu<-{$0M=0gHK%~Fu#E#ojRpDJ(uqvPNX7+#N|LIoIw=qg z;Ey#!DYYmNErT^BtTd}C5q~10vnm6F93m?OGg)7jzQVZMi)&Hvn~7fh>#}G7DH5a4 zHY@C*1ZV3ulGa{TMr!lQ*g(;AN{%;a%O1E!)QAZU6Qod6Oo0K35(sR96dI?qz(9>y)C8^qSY{P{QJ?qE;Cs$@y!TZO5!e8$qA4SQ0V-yw0A`XTUM;)6bG>Gr zD?rL-C#XhFcy5f~K^z~;SB~w!?w_&zU!qqkc1}dwTrPS8UMtPsShjV1 z5pP$r{IC!1tq-jkThn7#D9sY6=KQ67>3@@}*~pb` z7dO((Ir}Lo8)x)jeHfJ&#v2ZB%uoO2=abiaC?Q6nx@u_!ANnRs!&vaDI*xIQ7B+5k z=-nk50U##d*&Dy6&Od(1vSO|ill)TG`|l=1?#+)RVt027bonxV9sCjSJ_Ns`?5V;vZ}OXF#gk_qX51|z>@ zqXM>f#%gCfL2_f`5#2YGK1ky_j%x~k{py*b5q{jIf9Y&C4VcYmW>GL~m6aTZ3u`eAZy_bdX}``Tq)ThWj`8&b zn%4QKN2fodn?#Tk>64PCC3ESe>8}S#(nj~!vC_-4(`kE#ooYYyG=54BHVS@^ed|ed z+>f)MdSkKhZWJF2gOUNg#+i!i=VsbZ*HUsam9T8kbzo(x4yskMzm1{YcBBZQbt{;O z<`a^=(HcS+RIdFMSB7-I&7v@%H<`pl%?THTWxJ}690yq`jCHlI!&~o@*V83gAR7s z!3R6+V1pfYu)z*H*f0LqOG;_q_lMe2bm)JJ#Kf_jo+`=aymJSrJjd_sV1pfYu)z*H z*kA`8?8*NC00%qlV5ofgJB7qEfs`0B=U0dz7p^%!`o@lhCK!AU!!@Kfki4)Ok`>mn zkc_7m*xo+&DXIh2m&N{#4QldjXm!oc}lj=-mE^E-r)o2Fw==yoQTH1vP`r1r8>x z;ea`(yHE`dL@N+jd55zTOzZZfaE(ZEV;~*^mX`SRHNqB1(im(ZZOTbW!OD4;xbqYV zj25hO@w9NHfvBN$f%6JzxCTWiz-3f(;c{U$COL?+AVt0bp$5%46B$D|{3R*aj5_SU za0us$t)xtf^H^CB$Q2MhP5QK7g1z(s---PfNfO@5#gbm4Rb zj4CL6S%g;nWS_J`;H3CjF*+`cC~yam ztN0)b7O?uLDallF4PX<@7n7sRKW~M97n~07D~5rL61NHKALc=V7M9$SGR?WzX_HV^ zMo>Vr!95q43d&hWjo1n&DN>E_4ayp5452N~Y+qq07bh07$VvyB9ISP5N|^VCe44<) z9}OrCdnSZNWrn~D(&LU54pnfFZca>qdnjYTG$>p$R6n627mW&NtfJ{N!!Q0jlo!wDPPpC(YKU^XVKi6#n*Hsapflyyby3&2A>w_{TK zabV~;b225=IpT^J`GF@3W{~=h%1XhGLl*pKCcp{ePX#;zOGf1lTo$Yh$~RnGaM*~n z6_W}VZ5S%sX1X{qP!{=9;6jm02x#!1A15FhF{uLG1^K!T0u3l&H@C$JyNH@5#bs|J zkt(xv63hiEEn!3P1xW#JwlC~~!8Iya5LSSNd`sbHWce^Ld|!(a4Aq#auq6d+C|3}n z0m1#uM+cLL*>#^*HwEV5L7v1$Upgx}Zv-~qiVJy|h7qPwCDs0OOf0s@>ZaxdWY zz3Dn&`+hEgDS}?4V1O}!=(brUyksbRsVuzJX9UA7?nogq45UG55*$kRDp20UfDwhX zG2>CZ_Ab0^S%o||rGPo4wHU}ZC4mZt-AvvPRyV@MUxL9gvBI7AUlQc!M2aSRbPy4+FPtV^;i-aLX0g!69!?U)CBNE{!mOtqXc&j<6Se!J>~K zF!QD~TtP&#`FR0pG}r{l=7|kVW4Hj+QJ;ovg+wT%hMa{DDpQdb7ep7Dp_l_1`LI}0 z2VD(isWb@|os0^?NkF)!;1yKxB%mT+71#pm8exfw5XvlqF9vBtqJm%*$l>Ho ziQ3-kE8vUXP5cy?{4mqI>K<`~8c7nvK@U-#0<<3@cEH(Fy0>Vt0Bx0=6%j1a=D}Q> zjJar3u%wKX2nVK(36{c_0wrRItZK`ou(VQTYI3TSI!uQ6c4qJf08DOplHYHAxW5W?wDegb1eP3LV5DnVfwc*qxm zv-$B@I_%aEw3!^PQD5O=3)gV6&=Q3s z_3&#;C76UsF)$RigW}#E4tQcw4S|o|O6CNDAaZtqfcC#$BAN=*SgMd8g|-%G8^ss{ z)P>wU#!7@(HPRGmvkQAmkkJCYi+9X>qB@3f_%Eo6RaZK2!D+e9F{3&q zxt>jdQ*A|hufRf{EU80_*aQd=`M$bk1p{$pVx{e$;FD&LfE=F@a27mSW85WUoLQ^U?( zpsdPX`L|Hz4n|I!#me7*9R>g{-E{2n$B4roeW2*I8D8gRE#4o1=oHAQNnI_sd68L53Ql$!4 zF$%LIXM2RIxpGXWAG9T;Yh(Houg81WlwLPuN^m9creHWorAcP5;v=gMW6aXoy;&$5 z50zz1t04JBr?U0)gxUw}+{BtTuv(OG)Y{2< z#!0vSPMO7-^ccp6u9`D($7+I6}{uCCefK-e5IlHj@DFMcVE`;xWvfXnU^r`f5 z;QEN!-nwx3^jJDo6Ble0il3ylistInOi?v%bD9wXZfu8A71%j<=6!usV8b+5igPd1 zuiQhuC%?AXVM7{^W7!<)=R6B#@Qf!%!b|HTJMV+TieDPqeW=Z=Z;avRl&E4kk)7;dDz0y~-Yz%NccaTA$vTvT_Nuo3u{# zQp3zr6Rc3_T{xR6tAP->XJU%Z|3nmzTiB)&b5Y2fai*;at_N~F+;QukU4^|}={y0h zwuRh6(%iP3>g+-ygGgj|CW4SkKzWTyP-QxAK;Z@+AXTBtn$( zso4d9dL`hsXw13r3|e7Bj@2hPljwkbp?|m}f$L_ek2NIWkPM~I%BCgaOIr3e8-DbT zY`=-lPzq}qA35b+#?-hu@WYfYlJ=H(Yv%}n+ew?f_7nV5lFD#j_eK3(xKtS?atv=o z>3Y!&_M4bKTcwo=GZ`h`Yvmh#!k&+Uvzq6kEZ*mF+e=jPt0N&Rg%bGns;gsF6)+Vl zwoU6j%$m%%7F6B08VOAui0-|!!B4ftVUehEy+iz%R30na2G**t+4Y3p8k8Ywt>wXz zv^9#g4n!foRuCco>r5a~)^(x>%LTR>6UGcdp9G8B3fmgGS zD8m{#GUavkXOq=o?dp2a2WxVi^+)?AJ2bJ+dd*lW=U?jD@ zj1NcRV3C8yfw3B}ctLaUr4nGbn(RFYUzfW67WQQ+{8B8wZltTe=Sw$JZ3=yeq0{P5gvcfm@hsWe88Ic=7gYX%E|>+PCRu z+Q98qhb;p>`n%UbZKA(ZcB^J-Sgm2Br)FAV&p_%yqD2!$d{Bi6B{feanDTD0cVgOG z>VsvOcvComX%o&`-Ol|Uv?kq}h5Ht~V^4?92}Omh)+Sl-mE!Sl8X zIb`D7B%8god6x^zKMl}SZ~P+(giE*+R&{%vcKn9H8zf6U@2(1ObEet%dnyDa0*t9m znD_eC4w^`F!S9el<)iD-4z^|xX)C_-!im$F)x_h`m3<3J>DF0N5Hz}F>(3rPTaSXE zLZLP(z?h0{D}z66w2=e|OQH7(-8b-3{JcKB%z~Q-nkc)K^KLCx(+2Qyqv=MpTY>bI zFJ9>aAG6b43)^`4hVZlCb4^v&M{jxR;C(@p$jjEM4HeEDSW$9)>tL&W4P+V<{Hl9CJRF zhq#8e@mD!+7h(9L%HBgdNqt)|IGC{hQi2?5;fe~kIK^w>GKI$xIzEoQcv5iWC#60Z ztA~ph4vbW_wnko9<1|0CMpdukbq^IV^cJtx)tk5(xZQZernyeVN61>;-F$oa;$l&^ zV>$0}#t?goO|zVsP0n~Ne^f=dg*-zXWssNj7U{DacRz=gcm+at-8ViLt>FfeaHTuj z&lZK81=6L*S%p}TSLOIz0v)$foAyrk1Sek5;O0V(nw~9m&B69C9e7u*isII4f4q)1 zDXKePTpFS{JE-by_bv1%Qs#~K?z&>EJ{S&a(|x=eWM$x!QylKaf94emQ##Atnlkqq zPgaPxZo7iK>VXd19g^L6kwe!#+gs;iVsO00fkvWU(Qn=m6Fk+GoK5a)$mE9|2z*L< zrwg}7p8-eLF;Z_WVNvUb%6i2Kq!^V~jiWxClK^-gOy3v$aoD68UpnQ7yL$l@Y9&~2 zd&?sQUPo-G*IBH7IX3_t$;~QJ>QQ`ci%nps;r3p%_*5J+UBZJI-&F%Nk{j_b$K#>w zTATC5Z$C>Fn14Qh$cQ4^qNyD2Rhw%C6|N^|wYlY}zTp+q2Ilqki#<%Wvqk)88>cu( zp%;*ruJa|Zvd)e~y?U!v=PE@-OUwqwAH~~`Z8M``cFw=X#b~AywF|m&`LlP|TXPN3 z(q30`1!sGv=l^7dK2)lFZD{gQw<=d|({z3_E2+kK-+ta3n0Z=;$vWk8z*~V%MdCa7 z?wAgwHqJ$L>4UBpUYj;^s(2@;D{n`CUfOUvx@zE#rg0Z^!(eyhpNmeLe4TVyIF=*h z&Gh2Xm*wawDUxIzoc%x>L2^FMqtxJ~g=-lXe1l1ep)XdNW$6=;lPX$pv`y8f>C`7d zAi5;|@OU&L7?tq7;)Xi)efd~ddaqAXxKn+4+3IAmH6cxLa||5|zlFwBGgoZ*?{r^8 zDj$s=m8lbR=&0{*>jL{#XB9V9+iTq$zZTOarVJus6%CUG(Aj-|Z?_D(Sa9Lc=&;}} zSBbY=3koRG&4+P{sse+{HF|Acx}ks9N7&!ErcjP4R?b0WxgxffJ-S2$1=zpPzFEwT zVY7_nj&T3b%vgQ9?9f?}zE8cGD?7)8>DR-XP2{WW(;H0nSWH!G@1Pj= zQ%{4@j;MZM%nrFs@1zxEIN5-CAASydxI4sozvl}EwUW)yte-;y?>QqUgN&-ReA-`7 zAoFqudB*Z<8doqD3^~e+oEDt5H#uae?8{%0{+eD>2s3$>DXTi|8JDzUXxTcAu#W|> zD=}!zkEnk>ghAZ3A$)eP0Tuas94$-mR7m=B)Q~O9uQScZnUKEwa3HKYPj#Jma`E8}|W9VPlhqe7;V zp$tO^O-^*`%Ir^YCkOa9@#dMhmAQL{6Z2OaXLtMz2K+Rbxey^Lx#f(_*@x}?aa^xA zwPXKh`UJi47C3Z6B#ul09N6O?*4Y5rqAI79t5GhW8Z+}(EqNr~)_HdQwh_Pmp?<~C z9@Smd8vwf2>^m<(62@xxbfEvmncMfEpL1_`$Z-il;!6-DE9W_HmOOmTlOp7i9J(WB z0{Z*>ai__u7+)CdV%qYJ6YA`!v1P*UNcvFj4=FmmC;rJD`Tq`dpmS%O^l#5rU-&Sw zFu}g6MnAs;L5_lFBTtS#YkOMBP}{Q~evObc`uA_Jq17JJ2|8 zDpIaJoY(7kqRHFfA09mtZ{FdnwvA$U?oB6oqOL@{bS$_SYnjhN9y%W6FZP1@_UkRG z7-OEt2+E$b-}vonWdnK{E!#u!`PkbV%KZ~3q~sy7jpnqp?Z%Mw$_dvJ3urQpc@{x2 z&*zRjjiAOC{w>H?2JZ0I$1*-W&NzcW@92vAMo1?TzM|M4$OPS4P{$7D1AheU75#D zv#3)?XFGGgplu=_J`DM?2)&uo;u#H@)-XQ}wPbHamw(xuNN?h9?XFVEbsP5ye&pboJ5oAJg z`zTRohlk={)7bwZy-^SGtI@P=v*j$c;jC|&eivF|GDEVq82~skGEddzCq=&u(TIg- z%mP?%Tz{ZJw=ddw`ZA=3M>=EB05q|o=4=j9+ULP6)Ha{~viL{}X;G80oz#~o{x9m7 z)i7(BV2Bv{Q-|2~YI?l&VW@=}Y$OpQeJ`D!chpjl|NJ}AQmF8+s5C_?laWWPx_(PW z^6zA;AR)Dy9X`n9&PXhE)g`k|MSYL;V;mZaqAy!*a_X;BEbdWx<}aNEwCfPa_!`x3 zy=dZSEM3Zhkm287(D|c&`k*B1w$Br26NLB4rPzC&Y4)6tvF8OunqQ?6%ySaA0{JxZ1iPM zkq7GVVhE{XbIXFFj!Q+0?0O*WgF1?}N!1$T5?o}X-X}$JenPJKzmDT>BY{Z(4;R_P z7{)lESPNf&C-FnU{@FbrJ6N(R4`=@}vh~6Amts~DPO^<{a?{?3VpP-w65!SozYT#q&7h-W`#S2JWB+4a9Ovu8V(Xod83cYS0B zz2o0r)QV+xu(oRK&CwK#dR99h~?Cm*L2JP`>#m>IXaZC4J`YFpj&r#=DQIqze*zF+i zD)OFCzwG7S+4=8wn)K(VzV#YW$1U2ag?;KSw{Aa}+R%GE*^1YsR$2z=N4~at&Who( z%DTx@wrb@?X6bjd(@Vl4ET+L92V1W$s~CQmtDzWjV#cHjC(h067%5~%%ZwdaB^YEJm7o$y&c*Jp1VAqwzwQ_$$Y zlFG`fHg573W{sBAEsLjr4gc`%iu8e{E*-Uf_^4$m|%a`m(E! zbgA?8XCfdd=DK<2FS#Ub+C%e-s?KrepLLobC})Ahh<_x=ZGTPDJ&$ALuq(BggUIDM zV9R&IRHlxP>gX$P`E<*xdHYsAZ4~!Yt5>h z?YQ3vgum^YkoP&zscx+Jbvk;dkIo_Abvbq!^<)vz$=V!6_@cv8&_=}Ghk%CTNBQqd z>;7EO(R6z~E^qvY4{Z)eLJ~bCyPl{~5vS|39REzdzgv{c=AzC=`o8U(O}}ee>Gxb3M|35cfG>wi`fw z?(6#4CVzA*U}@N}aMYtChDSe5tTuK9qLYOz4U-kRYn8-i^dn7+kQy32Jl(Gk_ey2` zbyyz($L!6!-Ul6vu%TxhmP30Dz4-CL%W3UaW{h?6$2Za2k^?&c?xr5dT|TfcIQaZUClj?6&Q@J(1RB*Crf z*jxt#iodU<4Sr@H{Sn9y3_Ql8#EVM|`@e_4H2ioTeGTI9-}lFX{5js@x4>ypLjS$i zP}w5k1rEC=I$>LV+Cs$N1@CzQ$~`+{HiV?|ZfTH31R-C!DTsjo$sy0fQ%T$2>~+6| z&|fO?vJhxouQp~z$ZJMtB9IvjrKRCBQ6j%4Z2L(0`{uQ;Wx`-6zdzhO5k;~z;sC-q z(&dd044R2^3|`AT!)xkuHUx1Jh7vVPT_ys^8iyBwYKS$?klNBn^$WGIFNarZT|0R`hlVyT9 z8a(K4wQ&5eajDPQOkqfL*uyWRu71Dmh6=C5|62~ZAN>w z`#k_i-aRhAZ$M-~&B!hYBA35|;va|INe8A7z6cq`S(0B6+x=!2A~8E|9~kc-j+{n^ zYvCt{uQMWw+OV2fgZw_epdqu-{QQ5vb$sswBc+}adr{6I#yF2qH+qRf4POtHE514hGGsg^QZo|y6;D))7@uP2{{`Ua0e2*>E8^IH;5zAVLtN z9^()Q$z+VjB4qTwQ0s?Q;zhW@6FIyWk(UG9!%2r#5(sh6>_F}OZ--Pt?d9t;idQ2T z+;2LxuK09;!Cm9gWOvp>1`Ul70(#NKUW%!vqbJkdrFmpvloKJrQoo*(1?n~lYY<}6 z^R>1@{*fgS^FkKVo5sU$kh*0Pp^;p~b}UE|4n`mzIq*gK@InfP=Y=Nac-Wb88MJ0c zc2Dz|#Q#u*k9fz28_yA^-K(0*p7KyH1Ux-g=2k{k*3KVwqmezOg(D6=`(h6#J0n9b z2TIS&!P@9iXZgkaKfXMw3Fm@Tw#bT zJC!UB>-RW?iJ^Zz8EXEHkd6QLOLJ`-A@#o(3xo3 w8OY;$ST{9ic*wWSdUn=zpL9Sh`~2I*kA`8?689lcG$rOJA{7#fX{N@vj6}9 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/Packages/tbx_GroupD10.bdsgroup b/official/2.1.6+2.1.beta1/TBX/Packages/tbx_GroupD10.bdsgroup new file mode 100644 index 0000000..c315a96 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Packages/tbx_GroupD10.bdsgroup @@ -0,0 +1,20 @@ + + + + + + + + + + + + + tbx_d10.bdsproj + tbxdsgn_d10.bdsproj + tbx_d10.bpl tbxdsgn_d10.bpl + + + + diff --git a/official/2.1.6+2.1.beta1/TBX/Packages/tbx_cb5.bpk b/official/2.1.6+2.1.beta1/TBX/Packages/tbx_cb5.bpk new file mode 100644 index 0000000..16934e4 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Packages/tbx_cb5.bpk @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/2.1.6+2.1.beta1/TBX/Packages/tbx_cb5.cpp b/official/2.1.6+2.1.beta1/TBX/Packages/tbx_cb5.cpp new file mode 100644 index 0000000..5631110 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Packages/tbx_cb5.cpp @@ -0,0 +1,33 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +USEPACKAGE("vcl50.bpi"); +USEPACKAGE("TB2K_CB5.bpi"); +USEUNIT("..\TBXSwitcher.pas"); +USEUNIT("..\TBXMDI.pas"); +USEUNIT("..\TBXDefaultTheme.pas"); +USEUNIT("..\TBXStripesTheme.pas"); +USEUNIT("..\TBXOfficeXPTheme.pas"); +USEUNIT("..\TBX.pas"); +USEUNIT("..\TBXUtils.pas"); +USEUNIT("..\TBXExtItems.pas"); +USEUNIT("..\TBXLists.pas"); +USEUNIT("..\TBXUxThemes.pas"); +USEUNIT("..\TBXDkPanels.pas"); +USEUNIT("..\TBXStatusBars.pas"); +USEUNIT("..\TBXThemes.pas"); + +//--------------------------------------------------------------------------- +#pragma package(smart_init) +//--------------------------------------------------------------------------- + +// Package source. +//--------------------------------------------------------------------------- + +#pragma argsused +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- diff --git a/official/2.1.6+2.1.beta1/TBX/Packages/tbx_cb5.res b/official/2.1.6+2.1.beta1/TBX/Packages/tbx_cb5.res new file mode 100644 index 0000000000000000000000000000000000000000..54c0413000d8b6cceede73b1804f848b9c8d809d GIT binary patch literal 808 zcmaKqy>7xV6opTkDpn_mx^yax9jQ8WV4xE(&=*J-FIkX~NF|15%7WCFL4rtLGW9ta zJ2EmL+~aEpiuz-5Y=8HjYhSDYK%cVKi`%pDdC}%$dLqenyH}U3>5iK|^+ZJoVb=UU zN`OC~Zx1U%^_{8%8P{6S-P)o#v zF?j|bpkbvQYhS9CiK&FMV3?U&I2a0JjOR@5Qb*RpNp2QC?^)|`o|Xe9TIc>gt=$1+ zEu2@v$&puQJkRSh|J<1Bdp)^!j8Ok-Y9s%M9I>Bbv06MbtrDF@*AMITrqWC2=Y + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Debugging] +DebugSourceDirs= + +[Parameters] +RunParams= +Launcher= +UseLauncher=0 +DebugCWD= +HostApplication= +RemoteHost= +RemotePath= +RemoteLauncher= +RemoteCWD= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Linker] +LibPrefix= +LibSuffix= +LibVersion= + + \ No newline at end of file diff --git a/official/2.1.6+2.1.beta1/TBX/Packages/tbx_cb6.cpp b/official/2.1.6+2.1.beta1/TBX/Packages/tbx_cb6.cpp new file mode 100644 index 0000000..bcffbe9 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Packages/tbx_cb6.cpp @@ -0,0 +1,16 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +#pragma package(smart_init) +//--------------------------------------------------------------------------- + +// Package source. +//--------------------------------------------------------------------------- + +#pragma argsused +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- diff --git a/official/2.1.6+2.1.beta1/TBX/Packages/tbx_cb6.res b/official/2.1.6+2.1.beta1/TBX/Packages/tbx_cb6.res new file mode 100644 index 0000000000000000000000000000000000000000..54c0413000d8b6cceede73b1804f848b9c8d809d GIT binary patch literal 808 zcmaKqy>7xV6opTkDpn_mx^yax9jQ8WV4xE(&=*J-FIkX~NF|15%7WCFL4rtLGW9ta zJ2EmL+~aEpiuz-5Y=8HjYhSDYK%cVKi`%pDdC}%$dLqenyH}U3>5iK|^+ZJoVb=UU zN`OC~Zx1U%^_{8%8P{6S-P)o#v zF?j|bpkbvQYhS9CiK&FMV3?U&I2a0JjOR@5Qb*RpNp2QC?^)|`o|Xe9TIc>gt=$1+ zEu2@v$&puQJkRSh|J<1Bdp)^!j8Ok-Y9s%M9I>Bbv06MbtrDF@*AMITrqWC2=Y + + + + + + + + + + + tbx_d10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 801112064 + Toolbar2000 -- TBX Extensions (Alex Denisov) + + + + ..\..\Lib\D10 + ..\..\Lib\D10 + ..\..\Lib\D10 + ..\..\Lib\D10 + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/official/2.1.6+2.1.beta1/TBX/Packages/tbx_d10.dpk b/official/2.1.6+2.1.beta1/TBX/Packages/tbx_d10.dpk new file mode 100644 index 0000000..5b9d4d1 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Packages/tbx_d10.dpk @@ -0,0 +1,52 @@ +package tbx_d10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $2FC00000} +{$DESCRIPTION 'Toolbar2000 -- TBX Extensions (Alex Denisov)'} +{$RUNONLY} +{$IMPLICITBUILD OFF} + +requires + vcl, + tb2k_d10, + rtl; + +contains + TBX in '..\TBX.pas', + TBXThemes in '..\TBXThemes.pas', + TBXDefaultTheme in '..\TBXDefaultTheme.pas', + TBXOfficeXPTheme in '..\TBXOfficeXPTheme.pas', + TBXMDI in '..\TBXMDI.pas', + TBXSwitcher in '..\TBXSwitcher.pas', + TBXExtItems in '..\TBXExtItems.pas', + TBXLists in '..\TBXLists.pas', + TBXUtils in '..\TBXUtils.pas', + TBXUxThemes in '..\TBXUxThemes.pas', + TBXDkPanels in '..\TBXDkPanels.pas', + TBXToolPals in '..\TBXToolPals.pas', + TBXStatusBars in '..\TBXStatusBars.pas', + TBXWhidbeyTheme in '..\TBXWhidbeyTheme.pas', + rmkThemes in '..\rmkThemes.pas', + TBXOffice2003Theme in '..\TBXOffice2003Theme.pas'; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/Packages/tbx_d10.res b/official/2.1.6+2.1.beta1/TBX/Packages/tbx_d10.res new file mode 100644 index 0000000000000000000000000000000000000000..86c94e6ada7b3c85f6761b1ee234a9f34ef3c861 GIT binary patch literal 5056 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_cb5.cpp b/official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_cb5.cpp new file mode 100644 index 0000000..9648bf6 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_cb5.cpp @@ -0,0 +1,25 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +USERES("tbxdsgn_cb5.res"); +USEPACKAGE("vcl50.bpi"); +USEUNIT("..\TBXStrEdit.pas"); +USEUNIT("..\TBXReg.pas"); +USERES("..\TBXReg.dcr"); +USEPACKAGE("tb2k_cb5.bpi"); +USEPACKAGE("tb2kdsgn_cb5.bpi"); +USEPACKAGE("tbx_cb5.bpi"); +//--------------------------------------------------------------------------- +#pragma package(smart_init) +//--------------------------------------------------------------------------- + +// Package source. +//--------------------------------------------------------------------------- + +#pragma argsused +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- diff --git a/official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_cb5.res b/official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_cb5.res new file mode 100644 index 0000000000000000000000000000000000000000..3a603f1b6a1c31f7d731d0859b7f26c8843582bb GIT binary patch literal 808 zcmb7=J!%6n5QWFyg(X$?2635NB!xhNT*ie#BBBHAeKNvA-}{+YsM$rM(rM*0sPs<-_)PwywfIrnkCb2)D; tUeP(+EO8=hEzxn#{@BBmjVr{D+~E5&`~tr*?Yr@pD?ifeE8-h<{tnC&3DN)n literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_cb6.bpk b/official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_cb6.bpk new file mode 100644 index 0000000..c98de3a --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_cb6.bpk @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_cb6.cpp b/official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_cb6.cpp new file mode 100644 index 0000000..287da75 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_cb6.cpp @@ -0,0 +1,17 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +//--------------------------------------------------------------------------- +#pragma package(smart_init) +//--------------------------------------------------------------------------- + +// Package source. +//--------------------------------------------------------------------------- + +#pragma argsused +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- diff --git a/official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_cb6.res b/official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_cb6.res new file mode 100644 index 0000000000000000000000000000000000000000..392d1d7ad34352acf8be225fdc8583afc7f531cd GIT binary patch literal 876 zcmb_bF;2uV5ZrKAqbukyB_-0e2!bwBL;?JQC*UG3QbxM_&lPD>Af?%7P*7NW!OYn4 zT_8vZiBZP8p?jW-@NW^D`O|Jkm5V zU_}Zx()T?Id5U! z)UCE!*>C6T@%#_s4Vt|;?^UE6szdk!&^5H0!9?ALI$NVg!aC3k;G$+45N0RwOY}3y z8vn+Lf*iz{ME + + + + + + + + + + + tbxdsgn_d10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 796917760 + Toolbar2000 -- TBX Extensions Design Package (Alex Denisov) + + + + ..\..\Lib\D10 + ..\..\Lib\D10 + ..\..\Lib\D10 + ..\..\Lib\D10 + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_d10.dpk b/official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_d10.dpk new file mode 100644 index 0000000..122351b --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_d10.dpk @@ -0,0 +1,40 @@ +package tbxdsgn_d10; + +{$R *.res} +{$R '..\TBXReg.dcr'} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $2F800000} +{$DESCRIPTION 'Toolbar2000 -- TBX Extensions Design Package (Alex Denisov)'} +{$DESIGNONLY} +{$IMPLICITBUILD ON} + +requires + tb2k_d10, + tb2kdsgn_d10, + tbx_d10, + vcl; + +contains + TBXStrEdit in '..\TBXStrEdit.pas', + TBXReg in '..\TBXReg.pas'; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_d10.res b/official/2.1.6+2.1.beta1/TBX/Packages/tbxdsgn_d10.res new file mode 100644 index 0000000000000000000000000000000000000000..86c94e6ada7b3c85f6761b1ee234a9f34ef3c861 GIT binary patch literal 5056 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 0 then Result := Message.WParam + else if (C is TForm) and (TForm(C).FormStyle = fsMDIForm) then + Result := clBtnFace + else + Result := TControlAccess(C).Color; + end; +end; + +procedure DrawParentBackground(Control: TControl; DC: HDC; R: TRect); +var + Parent: TWinControl; + Theme: HTHEME; + R2: TRect; + Shift: TPoint; + UsingThemes: Boolean; + Msg: TMessage; +begin + Parent := Control.Parent; + if Parent = nil then FillRectEx(DC, R, clBtnFace) + else + begin + Shift.X := 0; Shift.Y := 0; + Shift := Parent.ScreenToClient(Control.ClientToScreen(Shift)); + SaveDC(DC); + try + SetWindowOrgEx(DC, Shift.X, Shift.Y, nil); + Msg.Msg := WM_ERASEBKGND; + Msg.WParam := Integer(DC); {vb+} + Msg.LParam := Integer(DC); {vb+} + Msg.Result := 0; + Parent.Dispatch(Msg); + finally + RestoreDC(DC, -1); + end; + + if Msg.Result <> 0 then Exit; + + UsingThemes := USE_THEMES and not (csDesigning in Control.ComponentState); + if Parent is TTBDock then + begin + SaveDC(DC); + SetWindowOrgEx(DC, Control.Left, Control.Top, nil); + TDockAccess(Parent).DrawBackground(DC, R); + RestoreDC(DC, -1); + end + else if not UsingThemes then + FillRectEx(DC, R, GetEffectiveColor(Parent)) + else + begin + { Unfortunately, DrawThemeParentBackground does seem to have some problems + with the back buffer. Therefore some sort of workaround is used which + will work for tab sheets } + // if Control is TWinControl then + // DrawThemeParentBackground(TWinControl(Control).Handle, DC, @R); + + if Parent is TTabSheet then + begin + Theme := OpenThemeData(Parent.Handle, 'TAB'); + R2 := Parent.ClientRect; + R2.TopLeft := Control.ScreenToClient(Parent.ClientToScreen(R2.TopLeft)); + R2.BottomRight := Control.ScreenToClient(Parent.ClientToScreen(R2.BottomRight)); + DrawThemeBackground(Theme, DC, TABP_BODY, 0, R2, @R); + CloseThemeData(Theme); + end + else FillRectEx(DC, R, GetEffectiveColor(Parent)); + end; + end; +end; + +function GetViewType(View: TTBView): Integer; +var + Message: TMessage; +begin + Result := VT_UNKNOWN; + if (View <> nil) and (View.Owner <> nil) then + begin + Message.Msg := TBM_GETVIEWTYPE; + Message.WParam := 0; + Message.LParam := 0; + Message.Result := VT_UNKNOWN; + View.Window.Dispatch(Message); + Result := Message.Result; + end; +end; + +function GetWinViewType(Window: TControl): Integer; +var + Message: TMessage; +begin + Result := VT_UNKNOWN; + if Window <> nil then + begin + Message.Msg := TBM_GETVIEWTYPE; + Message.WParam := 0; + Message.LParam := 0; + Message.Result := VT_UNKNOWN; + Window.Dispatch(Message); + Result := Message.Result; + end; +end; + +function IsFloating(ViewType: Integer): Boolean; +begin + Result := ViewType and TVT_FLOATING <> 0; +end; + +procedure UpdateNCArea(Control: TWinControl; ViewType: Integer); +begin + with Control do + begin + ClientWidth := ClientWidth; + ClientHeight := ClientHeight; + end; + SetWindowPos(Control.Handle, 0, 0, 0, 0, 0, + SWP_FRAMECHANGED or SWP_NOACTIVATE or SWP_NOZORDER or SWP_NOMOVE or SWP_NOSIZE); + Control.Invalidate; +end; + +function GetPopupMargin(ItemViewer: TTBItemViewer): Integer; +var + ImgList: TCustomImageList; + Sz: TSize; + TextMetric: TTextMetric; + H, M2: Integer; + Margins: TTBXMargins; +begin + Sz.Cx := 0; + Sz.Cy := 0; + if ItemViewer is TTBXItemViewer then + Sz := TTBXItemViewer(ItemViewer).GetImageSize; + if (Sz.Cx = 0) or (Sz.Cy = 0) then + begin + ImgList := TTBItemViewerAccess(ItemViewer).GetImageList; + if ImgList <> nil then + begin + Sz.Cx := ImgList.Width; + Sz.Cy := ImgList.Height; + end; + if (Sz.Cx = 0) or (Sz.Cy = 0) then + begin + Sz.Cx := 16; + Sz.Cy := 16; + end; + end; + StockBitmap1.Canvas.Font := TTBViewAccess(ItemViewer.View).GetFont; + GetTextMetrics(StockBitmap1.Canvas.Handle, TextMetric); + + CurrentTheme.GetMargins(MID_MENUITEM, Margins); + M2 := Margins.TopHeight + Margins.BottomHeight; + Result := TextMetric.tmHeight + TextMetric.tmExternalLeading + M2; + H := Sz.CY + M2; + if H > Result then Result := H; + Result := (Sz.Cx + M2) * Result div H; +end; + +procedure GetOfficeXPPopupPosition1(var PopupPositionRec: TTBPopupPositionRec); +begin + with PopupPositionRec do + begin + if not PositionAsSubmenu then + begin + NCSizeX := 0; + NCSizeY := 0; + Dec(ParentItemRect.Right); + if X = ParentItemRect.Right + 1 then Dec(X); + if X + W <= ParentItemRect.Left then Inc(X); + Dec(ParentItemRect.Bottom); + if Y = ParentItemRect.Bottom + 1 then Dec(Y); + if Y + H <= ParentItemRect.Top then Inc(Y); + Dec(W); + Dec(H); + end + else + begin + Inc(X, NCSizeX); + Inc(Y, NCSizeY); + NCSizeX := 0; + NCSizeY := 0; + end; + end; +end; + +procedure GetOfficeXPPopupPosition2(var PopupPositionRec: TTBPopupPositionRec); +begin + with PopupPositionRec do if not PositionAsSubmenu then + begin + Inc(W); + Inc(H); + end; +end; + +procedure AddToList(var List: TList; Item: Pointer); +begin + if List = nil then List := TList.Create; + List.Add(Item) +end; + + +procedure RemoveFromList(var List: TList; Item: Pointer); +begin + if List <> nil then + begin + List.Remove(Item); + if List.Count = 0 then + begin + List.Free; + List := nil; + end; + end; +end; + +//============================================================================// + +{ Misc. Routines } + +procedure InvalidateAll(const Ctl: TWinControl); +begin + if Ctl.HandleAllocated then + RedrawWindow(Ctl.Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or + RDW_ERASE); +end; + +function GetStateFlags(const ItemInfo: TTBXItemInfo): Integer; +const + CEnabledStates: array [Boolean] of Integer = (ISF_DISABLED, 0); + CHotStates: array [Boolean] of Integer = (0, ISF_HOT); + CPushedStates: array [Boolean] of Integer = (0, ISF_PUSHED); + CSelectedStates: array [Boolean] of Integer = (0, ISF_SELECTED); +begin + with ItemInfo do + Result := CEnabledStates[ItemInfo.Enabled] or CPushedStates[ItemInfo.Pushed] or + CHotStates[ItemInfo.HoverKind = hkMouseHover] or CSelectedStates[ItemInfo.Selected]; +end; + +function GetTBXTextColor(StateFlags: Integer): TColor; +const + HoverKinds: array [Boolean] of TTBXHoverKind = (hkNone, hkMouseHover); +var + ItemInfo: TTBXItemInfo; +begin + FillChar(ItemInfo, SizeOf(ItemInfo), 0); + case StateFlags and ISF_LOCATIONMASK of + ISF_TOOLBARCOLOR: + begin + ItemInfo.ViewType := VT_TOOLBAR; + ItemInfo.ItemOptions := IO_TOOLBARSTYLE; + end; + ISF_MENUCOLOR: + begin + ItemInfo.ViewType := VT_DOCKPANEL; + end; + ISF_STATUSCOLOR: + begin + ItemInfo.ViewType := VT_STATUSBAR; + end; + else + ItemInfo.ViewType := VT_UNKNOWN; + end; + ItemInfo.Enabled := StateFlags and ISF_DISABLED = 0; + ItemInfo.Pushed := StateFlags and ISF_PUSHED <> 0; + ItemInfo.HoverKind := HoverKinds[StateFlags and ISF_HOT <> 0]; + ItemInfo.Selected := StateFlags and ISF_SELECTED <> 0; + Result := CurrentTheme.GetItemTextColor(ItemInfo); +end; + +procedure DrawTBXCaption(Canvas: TCanvas; Rect: TRect; const Text: string; Format: Cardinal; StateFlags: Integer); +const + HoverKinds: array [Boolean] of TTBXHoverKind = (hkNone, hkMouseHover); +var + ItemInfo: TTBXItemInfo; +begin + FillChar(ItemInfo, SizeOf(ItemInfo), 0); + case StateFlags and ISF_LOCATIONMASK of + ISF_TOOLBARCOLOR: + begin + ItemInfo.ViewType := VT_TOOLBAR; + ItemInfo.ItemOptions := IO_TOOLBARSTYLE; + end; + ISF_MENUCOLOR: + begin + ItemInfo.ViewType := VT_DOCKPANEL; + end; + ISF_STATUSCOLOR: + begin + ItemInfo.ViewType := VT_STATUSBAR; + end; + end; + ItemInfo.Enabled := StateFlags and ISF_DISABLED = 0; + ItemInfo.Pushed := StateFlags and ISF_PUSHED <> 0; + ItemInfo.HoverKind := HoverKinds[StateFlags and ISF_HOT <> 0]; + ItemInfo.Selected := StateFlags and ISF_SELECTED <> 0; + CurrentTheme.PaintCaption(Canvas, Rect, ItemInfo, Text, Format, False); +end; + +procedure DrawTBXImage(Canvas: TCanvas; Rect: TRect; ImageList: TCustomImageList; + ImageIndex: Integer; StateFlags: Integer); +const + HoverKinds: array [Boolean] of TTBXHoverKind = (hkNone, hkMouseHover); +var + ItemInfo: TTBXItemInfo; +begin + FillChar(ItemInfo, SizeOf(ItemInfo), 0); + case StateFlags and ISF_LOCATIONMASK of + ISF_TOOLBARCOLOR: + begin + ItemInfo.ViewType := VT_TOOLBAR; + ItemInfo.ItemOptions := IO_TOOLBARSTYLE; + end; + ISF_MENUCOLOR: + begin + ItemInfo.ViewType := VT_DOCKPANEL; + end; + ISF_STATUSCOLOR: + begin + ItemInfo.ViewType := VT_STATUSBAR; + end; + end; + ItemInfo.Enabled := not Boolean(StateFlags and ISF_DISABLED); + ItemInfo.Pushed := Boolean(StateFlags and ISF_PUSHED); + ItemInfo.HoverKind := HoverKinds[Boolean(StateFlags and ISF_HOT)]; + ItemInfo.Selected := Boolean(StateFlags and ISF_SELECTED); + CurrentTheme.PaintImage(Canvas, Rect, ItemInfo, ImageList, ImageIndex); +end; + +//============================================================================// + +{ TFontSettings } + +procedure TFontSettings.Apply(Font: TFont); +var + FS: TFontStyles; +begin + if Size <> 100 then Font.Size := (Font.Size * FSize + 50) div 100; + if Color <> clNone then Font.Color := Color; + if Name <> '' then Font.Name := Name; + FS := Font.Style; + if Bold = tsTrue then Include(FS, fsBold) + else if Bold = tsFalse then Exclude(FS, fsBold); + if Italic = tsTrue then Include(FS, fsItalic) + else if Italic = tsFalse then Exclude(FS, fsItalic); + if Underline = tsTrue then Include(FS, fsUnderline) + else if Underline = tsFalse then Exclude(FS, fsUnderline); + if StrikeOut = tsTrue then Include(FS, fsStrikeOut) + else if StrikeOut = tsFalse then Exclude(FS, fsStrikeOut); + Font.Style := FS; +end; + +procedure TFontSettings.Apply(var LF: TLogFont; var FontColor: TColor); +begin + if Size <> 100 then LF.lfHeight := (LF.lfHeight * Size + 50) div 100; + if Color <> clNone then FontColor := Color; + if Name <> '' then StrPLCopy(LF.lfFaceName, Name, 31); + if Bold = tsTrue then LF.lfWeight := FW_BOLD + else if Bold = tsFalse then LF.lfWeight := FW_NORMAL; + if Italic = tsTrue then LF.lfItalic := 1 + else if Italic = tsFalse then LF.lfItalic := 0; + if Underline = tsTrue then LF.lfUnderline := 1 + else if Underline = tsFalse then LF.lfUnderline := 0; + if StrikeOut = tsTrue then LF.lfStrikeOut := 1 + else if StrikeOut = tsFalse then LF.lfStrikeOut := 0; +end; + +procedure TFontSettings.Assign(Src: TPersistent); +var + F: TFontSettings; +begin + if Src is TPersistent then + begin + F := TFontSettings(Src); + if (FBold <> F.Bold) or (FItalic <> F.Italic) or (FUnderline <> F.Underline) or + (FStrikeOut <> F.StrikeOut) or (FSize <> F.Size) or (FColor <> F.Color) or + (FName <> F.Name) then + begin + FBold := F.Bold; + FItalic := F.Italic; + FUnderline := F.Underline; + FStrikeOut := F.StrikeOut; + FSize := F.Size; + FColor := F.Color; + FName := F.Name; + Modified; + end; + end + else inherited; +end; + +constructor TFontSettings.Create; +begin + FSize := 100; + FColor := clNone; +end; + +function TFontSettings.CreateTransformedFont(Src: HFont; var FontColor: TColor): HFont; +var + LF: TLogFont; +begin + GetObject(Src, SizeOf(LF), @LF); + Apply(LF, FontColor); + Result := CreateFontIndirect(LF); +end; + +procedure TFontSettings.Modified; +begin + if Assigned(FOnChange) then FOnChange(Self); +end; + +procedure TFontSettings.SetBold(Value: TTriState); +begin + if FBold <> Value then + begin + FBold := Value; + Modified; + end; +end; + +procedure TFontSettings.SetColor(Value: TColor); +begin + if FColor <> Value then + begin + FColor := Value; + Modified; + end; +end; + +procedure TFontSettings.SetItalic(Value: TTriState); +begin + if FItalic <> Value then + begin + FItalic := Value; + Modified; + end; +end; + +procedure TFontSettings.SetName(const Value: TFontName); +begin + if FName <> Value then + begin + FName := Value; + Modified; + end; +end; + +procedure TFontSettings.SetSize(Value: TFontSize); +begin + if FSize <> Value then + begin + FSize := Value; + Modified; + end; +end; + +procedure TFontSettings.SetStrikeOut(Value: TTriState); +begin + if FStrikeOut <> Value then + begin + FStrikeOut := Value; + Modified; + end; +end; + +procedure TFontSettings.SetUnderline(Value: TTriState); +begin + if FUnderline <> Value then + begin + FUnderline := Value; + Modified; + end; +end; + +//============================================================================// + +{ TTBXCustomItem } + +constructor TTBXCustomItem.Create(AOwner: TComponent); +begin + inherited; + FFontSettings := TFontSettings.Create; + FFontSettings.OnChange := FontSettingsChanged; +end; + +function TTBXCustomItem.CreatePopup(const ParentView: TTBView; + const ParentViewer: TTBItemViewer; const PositionAsSubmenu, + SelectFirstItem, Customizing: Boolean; const APopupPoint: TPoint; + const Alignment: TTBPopupAlignment): TTBPopupWindow; +var + DoSelectFirstItem: Boolean; +begin + if AlwaysSelectFirst then DoSelectFirstItem := True + else DoSelectFirstItem := SelectFirstItem; + Result := inherited CreatePopup(ParentView, ParentViewer, PositionAsSubmenu, + DoSelectFirstItem, Customizing, APopupPoint, Alignment); +end; + +destructor TTBXCustomItem.Destroy; +begin + FFontSettings.Free; + inherited; +end; + +procedure TTBXCustomItem.FontSettingsChanged(Sender: TObject); +begin + Change(True); +end; + +function TTBXCustomItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBXItemViewer; +end; + +procedure TTBXCustomItem.GetPopupPosition(ParentView: TTBView; + PopupWindow: TTBPopupWindow; var PopupPositionRec: TTBPopupPositionRec); +var + VT: Integer; +begin + if CurrentTheme.OfficeXPPopupAlignment then with PopupPositionRec do + begin + GetOfficeXPPopupPosition1(PopupPositionRec); + inherited GetPopupPosition(ParentView, PopupWindow, PopupPositionRec); + GetOfficeXPPopupPosition2(PopupPositionRec); + VT := GetWinViewType(PopupWindow); + PopupPositionRec.PlaySound := not (VT and PVT_LISTBOX = PVT_LISTBOX); + end + else inherited; +end; + +function TTBXCustomItem.GetPopupWindowClass: TTBPopupWindowClass; +begin + Result := TTBXPopupWindow; +end; + +function TTBXCustomItem.GetStretch: Boolean; +begin + Result := tbisStretch in ItemStyle; +end; + +procedure TTBXCustomItem.Invalidate; +begin + Change(False); +end; + +procedure TTBXCustomItem.SetFontSettings(Value: TFontSettings); +begin + FFontSettings.Assign(Value); +end; + +procedure TTBXCustomItem.SetLayout(Value: TTBXItemLayout); +begin + if Value <> FLayout then + begin + FLayout := Value; + Change(True); + end; +end; + +procedure TTBXCustomItem.SetMinHeight(Value: Integer); +begin + if Value <> FMinHeight then + begin + FMinHeight := Value; + Change(True); + end; +end; + +procedure TTBXCustomItem.SetMinWidth(Value: Integer); +begin + if Value <> FMinWidth then + begin + FMinWidth := Value; + Change(True); + end; +end; + +procedure TTBXCustomItem.SetStretch(Value: Boolean); +begin + if Value xor (tbisStretch in ItemStyle) then + begin + if Value then ItemStyle := ItemStyle + [tbisStretch] + else ItemStyle := ItemStyle - [tbisStretch]; + Change(True); + end; +end; + + +//============================================================================// + +{ TTBXItemViewer } + +procedure TTBXItemViewer.CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); +const + CMarginIDs: array [Boolean] of Integer = (MID_MENUITEM, MID_TOOLBARITEM); + CStartSize: array [Boolean] of Integer = (0, 6); +var + W, H: Integer; + ImgSize: TSize; + Item: TTBCustomItem; + ItemLayout, SaveLayout: TTBXItemLayout; + IsCaptionShown: Boolean; + IsTextRotated: Boolean; + ToolbarStyle: Boolean; + S: string; + TextFlags: Cardinal; + TextMetric: TTextMetric; + TextSize: TSize; + Margins: TTBXMargins; +begin + Item := TTBCustomItem(Self.Item); + ToolbarStyle := IsToolbarStyle; + ImgSize := GetImageSize; + if (ImgSize.CX <= 0) or (ImgSize.CY <= 0) then + begin + ImgSize.CX := 0; + ImgSize.CY := 0; + end; + + if Item is TTBXCustomItem then ItemLayout := TTBXCustomItem(Item).Layout + else ItemLayout := tbxlAuto; + SaveLayout := ItemLayout; + if ItemLayout = tbxlAuto then + begin + if tboImageAboveCaption in Item.EffectiveOptions then ItemLayout := tbxlGlyphTop + else + begin + if View.Orientation <> tbvoVertical then ItemLayout := tbxlGlyphLeft + else ItemLayout := tbxlGlyphTop; + end; + end; + + { Setup font } + TextFlags := 0; + IsCaptionShown := CaptionShown; + IsTextRotated := (View.Orientation = tbvoVertical) and ToolbarStyle; + if IsCaptionShown then + begin + S := GetCaptionText; + if not (SaveLayout = tbxlAuto) or (tboImageAboveCaption in Item.EffectiveOptions) then IsTextRotated := False; + if IsTextRotated or not ToolbarStyle then TextFlags := DT_SINGLELINE; + TextSize := GetTextSize(Canvas, S, TextFlags, IsTextRotated, 0); + end + else + begin + SetLength(S, 0); + TextSize.CX := 0; + TextSize.CY := 0; + IsTextRotated := False; + end; + + { Measure size } + if ToolbarStyle then + begin + AWidth := 6; + AHeight := 6; + + if CaptionShown then + begin + Inc(AWidth, TextSize.CX); + Inc(AHeight, TextSize.CY); + if not IsTextRotated then Inc(AWidth, 4) + else Inc(AHeight, 4); + end; + + if GetImageShown and (ImgSize.CX > 0) and (ImgSize.CY > 0) then + begin + if ItemLayout = tbxlGlyphLeft then + begin + Inc(AWidth, ImgSize.CX); + if Wide then Inc(AWidth); + if AHeight < ImgSize.CY + 6 then AHeight := ImgSize.CY + 6; + end + else + begin + Inc(AHeight, ImgSize.CY); + if AWidth < ImgSize.CX + 7 then AWidth := ImgSize.CX + 7; + end; + end; + + if tbisSubmenu in TTBItemAccess(Item).ItemStyle then with CurrentTheme do + begin + if tbisCombo in TTBItemAccess(Item).ItemStyle then Inc(AWidth, SplitBtnArrowWidth) + else if tboDropdownArrow in Item.EffectiveOptions then + begin + if (ItemLayout <> tbxlGlyphTop) or (ImgSize.CX = 0) or IsTextRotated then + begin + if View.Orientation <> tbvoVertical then Inc(AWidth, DropdownArrowWidth) + else Inc(AHeight, DropdownArrowWidth); + end + else + begin + if (ItemLayout = tbxlGlyphTop) and (IsTextRotated xor (View.Orientation <> tbvoVertical)) then + begin + W := ImgSize.CX + DropDownArrowWidth + 2; + if W > AWidth - 7 then AWidth := W + 7; + end + else + begin + H := ImgSize.CY + DropDownArrowWidth + 2; + if H > AHeight - 7 then AHeight := H + 7; + end; + end + end; + end; + end + else // Not a ToolbarStyle + with CurrentTheme do + begin + GetTextMetrics(Canvas.Handle, TextMetric); + Inc(TextSize.CY, TextMetric.tmExternalLeading); + + AWidth := TextSize.CX; + AHeight := TextSize.CY; + + if ImgSize.CY = 0 then ImgSize.CY := 16; + if AHeight < ImgSize.CY then AHeight := ImgSize.CY; + + GetMargins(MID_MENUITEM, Margins); + Inc(AWidth, Margins.LeftWidth + Margins.RightWidth); + Inc(AHeight, Margins.TopHeight + Margins.BottomHeight); + + Inc(AWidth, GetPopupMargin(Self) + MenuImageTextSpace + MenuLeftCaptionMargin + MenuRightCaptionMargin); + S := Item.GetShortCutText; + if Length(S) > 0 then Inc(AWidth, (AHeight - 6) + GetTextWidth(Canvas.Handle, S, True)); + Inc(AWidth, AHeight); { Note: maybe this should be controlled by the theme } + end; + + if Item is TTBXCustomItem then with TTBXCustomItem(Item) do + begin + if AWidth < MinWidth then AWidth := MinWidth; + if AHeight < MinHeight then AHeight := MinHeight; + end; +end; + +constructor TTBXItemViewer.Create(AView: TTBView; AItem: TTBCustomItem; AGroupLevel: Integer); +begin + inherited; + FWide := True; +end; + +procedure TTBXItemViewer.DoAdjustFont(AFont: TFont; StateFlags: Integer); +begin + if tboDefault in Item.EffectiveOptions then with AFont do Style := Style + [fsBold]; + if Item is TTBXCustomItem then + with TTBXCustomItem(Item) do + begin + FontSettings.Apply(AFont); + if Assigned(FOnAdjustFont) then FOnAdjustFont(Item, Self, AFont, StateFlags); + end + else if Item is TTBXEditItem then + with TTBXEditItem(Item) do + begin + FontSettings.Apply(AFont); + end; +end; + +procedure TTBXItemViewer.DoPaintCaption(Canvas: TCanvas; const ClientAreaRect: TRect; + var CaptionRect: TRect; IsTextRotated: Boolean; var PaintDefault: Boolean); +begin + // do nothing +end; + +procedure TTBXItemViewer.DrawItemImage(Canvas: TCanvas; ARect: TRect; ItemInfo: TTBXItemInfo); +var + ImgList: TCustomImageList; + I: TTBXCustomItem; +begin + ImgList := GetImageList; + if (ImgList <> nil) and (Item.ImageIndex >= 0) and (Item.ImageIndex < ImgList.Count) then + begin + CurrentTheme.PaintImage(Canvas, ARect, ItemInfo, ImgList, Item.ImageIndex); + if Item is TTBXCustomItem then + begin + I := TTBXCustomItem(Item); + if Assigned(I.FOnDrawImage) then + I.FOnDrawImage(I, Self, Canvas, ARect, + CurrentTheme.GetImageOffset(Canvas, ItemInfo, ImgList), + GetStateFlags(ItemInfo)); + end; + end; +end; + +function TTBXItemViewer.GetAccRole: Integer; +{ Returns the MSAA "role" of the viewer. } +const + { Constants from OleAcc.h } + ROLE_SYSTEM_BUTTONDROPDOWNGRID = $3A; +begin + Result := inherited GetAccRole; + if (Item is TTBXCustomItem) and TTBXCustomItem(Item).ToolBoxPopup and + (tbisSubmenu in TTBXCustomItem(Item).ItemStyle) then + Result := ROLE_SYSTEM_BUTTONDROPDOWNGRID; +end; + +function TTBXItemViewer.GetImageShown: Boolean; +begin + Result := (Item.ImageIndex >= 0) and + ((Item.DisplayMode in [nbdmDefault, nbdmImageAndText]) or + (IsToolbarStyle and (Item.DisplayMode = nbdmTextOnlyInMenus))); +end; + +function TTBXItemViewer.GetImageSize: TSize; +var + ImgList: TCustomImageList; +begin + ImgList := GetImageList; + with Result do if ImgList <> nil then + begin + CX := ImgList.Width; + CY := ImgList.Height; + end + else + begin + CX := 0; + CY := 0; + end; +end; + +function TTBXItemViewer.GetItemType: Integer; +begin + if IsToolbarStyle then Result := IT_TOOLBARBUTTON + else Result := IT_MENUITEM; +end; + +function TTBXItemViewer.GetTextFlags: Cardinal; +begin + Result := 0; + if not AreKeyboardCuesEnabled and (vsUseHiddenAccels in View.Style) and + not (vsShowAccels in View.State) then Result := DT_HIDEPREFIX; +end; + +function TTBXItemViewer.GetTextSize(Canvas: TCanvas; const Text: string; + TextFlags: Cardinal; Rotated: Boolean; StateFlags: Integer): TSize; +var + DC: HDC; + R: TRect; + RotatedFont, SaveFont: HFONT; + TextMetric: TTextMetric; +begin + { note: rotated font size is consistent only for single-line captions! } + if Length(Text) = 0 then with Result do + begin + CX := 0; + CY := 0; + Exit; + end; + + { Select proper font } + Canvas.Font := TTBViewAccess(View).GetFont; + DoAdjustFont(Canvas.Font, StateFlags); + + if not Rotated then with R, Result do + begin + Left := 0; Right := 1; + Top := 0; Bottom := 0; + DrawText(Canvas.Handle, PChar(Text), Length(Text), R, TextFlags or DT_CALCRECT); + CX := Right; + CY := Bottom; + end + else + begin + DC := Canvas.Handle; + RotatedFont := CreateRotatedFont(DC); + SaveFont := SelectObject(DC, RotatedFont); + GetTextMetrics(DC, TextMetric); + Result.CX := TextMetric.tmHeight; + Result.CY := GetTextWidth(DC, Text, True); + SelectObject(DC, SaveFont); + DeleteObject(RotatedFont); + end; +end; + +function TTBXItemViewer.IsPtInButtonPart(X, Y: Integer): Boolean; +var + W: Integer; +begin + Result := not (tbisSubmenu in TTBItemAccess(Item).ItemStyle); + if (tbisCombo in TTBItemAccess(Item).ItemStyle) then + begin + if IsToolbarStyle then W := CurrentTheme.SplitBtnArrowWidth + else W := GetSystemMetrics(SM_CXMENUCHECK); + Result := X < (BoundsRect.Right - BoundsRect.Left) - W; + end; +end; + +function TTBXItemViewer.IsToolbarSize: Boolean; +begin + Result := inherited IsToolbarSize; + Result := Result or ((GetViewType(View) and PVT_TOOLBOX) = PVT_TOOLBOX); +end; + +function TTBXItemViewer.IsToolbarStyle: Boolean; +begin + Result := inherited IsToolbarStyle; + Result := Result or ((GetViewType(View) and PVT_TOOLBOX) = PVT_TOOLBOX); +end; + +procedure TTBXItemViewer.MouseUp(X, Y: Integer; MouseWasDownOnMenu: Boolean); +begin + inherited; + { Force the item to behave as a 'normal' menu item + That is make it respond to mouse as an item with IsToolbarStyle = False } + if Item.Enabled and not ((tbisSubmenu in TTBItemAccess(Item).ItemStyle) and + not IsPtInButtonPart(X, Y)) then + begin + if View.MouseOverSelected then + begin + Execute(True); + end; + end; +end; + +procedure TTBXItemViewer.Paint(const Canvas: TCanvas; + const ClientAreaRect: TRect; IsHoverItem, IsPushed, UseDisabledShadow: Boolean); +const + CToolbarStyle: array [Boolean] of Integer = (0, IO_TOOLBARSTYLE); + CCombo: array [Boolean] of Integer = (0, IO_COMBO); + CSubmenuItem: array [Boolean] of Integer = (0, IO_SUBMENUITEM); + CDesigning: array [Boolean] of Integer = (0, IO_DESIGNING); + CAppActive: array [Boolean] of Integer = (0, IO_APPACTIVE); +var + Item: TTBXCustomItem; + View: TTBViewAccess; + ItemInfo: TTBXItemInfo; + + {M: Integer;} {vb-} + R: TRect; + ComboRect: TRect; + CaptionRect: TRect; + ImageRect: TRect; + C: TColor; + + ToolbarStyle: Boolean; + HasArrow: Boolean; + IsSplit: Boolean; + ImageIsShown: Boolean; + ImageOrCheckShown: Boolean; + ImgAndArrowWidth: Integer; + ImgSize: TSize; + IsComboPushed: Boolean; + IsCaptionShown: Boolean; + IsTextRotated: Boolean; + ItemLayout: TTBXItemLayout; + PaintDefault: Boolean; + S: string; + StateFlags: Integer; + IsSpecialDropDown: Boolean; + TextFlags: Cardinal; + TextMetrics: TTextMetric; + TextSize: TSize; + Margins: TTBXMargins; +begin + Item := TTBXCustomItem(Self.Item); + View := TTBViewAccess(Self.View); + + ToolbarStyle := IsToolbarStyle; + IsSplit := tbisCombo in Item.ItemStyle; + IsComboPushed := IsSplit and IsPushed and not View.Capture; + if IsComboPushed then IsPushed := False; + + if GetImageShown then + begin + ImgSize := GetImageSize; + with ImgSize do if (CX <= 0) or (CY <= 0) then + begin + CX := 0; + CY := 0; + ImageIsShown := False; + end + else ImageIsShown := True; + end + else + begin + ImgSize.CX := 0; + ImgSize.CY := 0; + ImageIsShown := False; + end; + IsSplit := tbisCombo in Item.ItemStyle; + + FillChar(ItemInfo, SizeOf(ItemInfo), 0); + ItemInfo.ViewType := GetViewType(View); + ItemInfo.ItemOptions := CToolbarStyle[ToolbarStyle] or CCombo[IsSplit] or + CDesigning[csDesigning in Item.ComponentState] or CSubmenuItem[tbisSubmenu in Item.ItemStyle] or + CAppActive[Application.Active]; + ItemInfo.Enabled := Item.Enabled or View.Customizing; + ItemInfo.Pushed := IsPushed; + ItemInfo.Selected := Item.Checked; + ItemInfo.ImageShown := ImageIsShown; + ItemInfo.ImageWidth := ImgSize.CX; + ItemInfo.ImageHeight := ImgSize.CY; + if IsHoverItem then + begin + if not ItemInfo.Enabled and not View.MouseOverSelected then ItemInfo.HoverKind := hkKeyboardHover + else if ItemInfo.Enabled then ItemInfo.HoverKind := hkMouseHover; + end + else ItemInfo.HoverKind := hkNone; + ItemInfo.IsPopupParent := ToolbarStyle and + (((vsModal in View.State) and Assigned(View.OpenViewer)) or (tbisSubmenu in Item.ItemStyle)) and + ((IsSplit and IsComboPushed) or (not IsSplit and IsPushed)); + ItemInfo.IsVertical := (View.Orientation = tbvoVertical) and not IsSplit; + ItemInfo.PopupMargin := GetPopupMargin(Self); + + ItemLayout := Item.Layout; + if ItemLayout = tbxlAuto then + begin + if tboImageAboveCaption in Item.EffectiveOptions then ItemLayout := tbxlGlyphTop + else if View.Orientation <> tbvoVertical then ItemLayout := tbxlGlyphLeft + else ItemLayout := tbxlGlyphTop; + end; + + HasArrow := (tbisSubmenu in Item.ItemStyle) and + ((tbisCombo in Item.ItemStyle) or (tboDropdownArrow in Item.EffectiveOptions)); + + if GetImageShown then + begin + ImgSize := GetImageSize; + with ImgSize do if (CX <= 0) or (CY <= 0) then + begin + CX := 0; + CY := 0; + ImageIsShown := False; + end + else ImageIsShown := True; + end + else + begin + ImgSize.CX := 0; + ImgSize.CY := 0; + ImageIsShown := False; + end; + ImageOrCheckShown := ImageIsShown or (not ToolbarStyle and Item.Checked); + + StateFlags := GetStateFlags(ItemInfo); + + Canvas.Font := TTBViewAccess(View).GetFont; + Canvas.Font.Color := CurrentTheme.GetItemTextColor(ItemInfo); + DoAdjustFont(Canvas.Font, StateFlags); + C := Canvas.Font.Color; + + { Setup font } + TextFlags := GetTextFlags; + IsCaptionShown := CaptionShown; + IsTextRotated := (View.Orientation = tbvoVertical) and ToolbarStyle; + if IsCaptionShown then + begin + S := GetCaptionText; + if (Item.Layout <> tbxlAuto) or (tboImageAboveCaption in Item.EffectiveOptions) then + IsTextRotated := False; + if IsTextRotated or not ToolbarStyle then TextFlags := TextFlags or DT_SINGLELINE; + TextSize := GetTextSize(Canvas, S, TextFlags, IsTextRotated, StateFlags); + end + else + begin + StateFlags := 0; + SetLength(S, 0); + IsTextRotated := False; + TextSize.CX := 0; + TextSize.CY := 0; + end; + + IsSpecialDropDown := HasArrow and not IsSplit and ToolbarStyle and + ((Item.Layout = tbxlGlyphTop) or (Item.Layout = tbxlAuto) and (tboImageAboveCaption in Item.EffectiveOptions)) and + (ImgSize.CX > 0) and not (IsTextRotated) and (TextSize.CX > 0); + + { Border & Arrows } + R := ClientAreaRect; + with CurrentTheme do if ToolbarStyle then + begin + GetMargins(MID_TOOLBARITEM, Margins); + if HasArrow then with R do + begin + ItemInfo.ComboPart := cpCombo; + if IsSplit then + begin + ItemInfo.ComboPart := cpSplitLeft; + ComboRect := R; + Dec(Right, SplitBtnArrowWidth); + ComboRect.Left := Right; + end + else if not IsSpecialDropDown then + begin + if View.Orientation <> tbvoVertical then + ComboRect := Rect(Right - DropdownArrowWidth - DropdownArrowMargin, 0, + Right - DropdownArrowMargin, Bottom) + else + ComboRect := Rect(0, Bottom - DropdownArrowWidth - DropdownArrowMargin, + Right, Bottom - DropdownArrowMargin); + end + else + begin + ImgAndArrowWidth := ImgSize.CX + DropdownArrowWidth + 2; + ComboRect.Right := (R.Left + R.Right + ImgAndArrowWidth + 2) div 2; + ComboRect.Left := ComboRect.Right - DropdownArrowWidth; + ComboRect.Top := (R.Top + R.Bottom - ImgSize.cy - 2 - TextSize.CY) div 2; + ComboRect.Bottom := ComboRect.Top + ImgSize.CY; + end; + end + else SetRectEmpty(ComboRect); + + if not IsSplit then + begin + PaintButton(Canvas, R, ItemInfo); + if HasArrow then + begin + PaintDropDownArrow(Canvas, ComboRect, ItemInfo); + if not IsSpecialDropDown then + begin + if View.Orientation <> tbvoVertical then Dec(R.Right, DropdownArrowWidth) + else Dec(R.Bottom, DropdownArrowWidth); + end; + end; + end + else // IsSplit + begin + CurrentTheme.PaintButton(Canvas, R, ItemInfo); + ItemInfo.Pushed := IsComboPushed; + ItemInfo.Selected := False; + ItemInfo.ComboPart := cpSplitRight; + CurrentTheme.PaintButton(Canvas, ComboRect, ItemInfo); + ItemInfo.ComboPart := cpSplitLeft; + ItemInfo.Pushed := IsPushed; + ItemInfo.Selected := Item.Checked; + end; + InflateRect(R, -2, -2); + end + else // not toolbar style + begin + GetMargins(MID_MENUITEM, Margins); + PaintMenuItem(Canvas, R, ItemInfo); + Inc(R.Left, Margins.LeftWidth); + Dec(R.Right, Margins.RightWidth); + Inc(R.Top, Margins.TopHeight); + Dec(R.Bottom, Margins.BottomHeight); + end; + + { Caption } + if IsCaptionShown then + begin + if ToolbarStyle then + begin + CaptionRect := R; + TextFlags := TextFlags or DT_CENTER or DT_VCENTER; + if ImageIsShown then with CaptionRect do + case ItemLayout of + tbxlGlyphLeft: + begin + Inc(Left, ImgSize.CX + 3); + Top := (Top + Bottom - TextSize.CY) div 2; + Bottom := Top + TextSize.CY; + Left := (Left + Right - TextSize.CX) div 2; + Right := Left + TextSize.CX; + TextFlags := TextFlags and not DT_CENTER; + end; + tbxlGlyphTop: + begin + Inc(Top, ImgSize.CY + 1); + if IsTextRotated then Inc(CaptionRect.Top, 3); + Top := (Top + Bottom - TextSize.CY) div 2; + Bottom := Top + TextSize.CY; + Left := (Left + Right - TextSize.CX) div 2; + Right := Left + TextSize.CX; + TextFlags := TextFlags and not DT_VCENTER; + end; + end + else + begin + with CaptionRect, TextSize do + begin + Left := (Left + R.Right - CX) div 2; + Top := (Top + R.Bottom - CY) div 2; + Right := Left + CX; + Bottom := Top + CY; + end; + end; + + Canvas.Font.Color := C; + PaintDefault := True; + DoPaintCaption(Canvas, ClientAreaRect, CaptionRect, IsTextRotated, PaintDefault); + if PaintDefault then + CurrentTheme.PaintCaption(Canvas, CaptionRect, ItemInfo, S, TextFlags, IsTextRotated); + end + else with CurrentTheme do + begin + TextFlags := DT_LEFT or DT_VCENTER or TextFlags; + TextSize := GetTextSize(Canvas, S, TextFlags, False, StateFlags); { TODO : Check if this line is required } + GetTextMetrics(Canvas.Handle, TextMetrics); + + CaptionRect := R; + Inc(CaptionRect.Left, ItemInfo.PopupMargin + MenuImageTextSpace + MenuLeftCaptionMargin); + with TextMetrics, CaptionRect do + if (Bottom - Top) - (tmHeight + tmExternalLeading) = Margins.BottomHeight then Dec(Bottom); + Inc(CaptionRect.Top, TextMetrics.tmExternalLeading); + + CaptionRect.Right := CaptionRect.Left + TextSize.CX; + + Canvas.Font.Color := C; + PaintDefault := True; + DoPaintCaption(Canvas, ClientAreaRect, CaptionRect, IsTextRotated, PaintDefault); + if PaintDefault then + CurrentTheme.PaintCaption(Canvas, CaptionRect, ItemInfo, S, TextFlags, IsTextRotated); + end; + end; + + { Shortcut and/or submenu arrow (menus only) } + if not ToolbarStyle then + begin + S := Item.GetShortCutText; + if Length(S) > 0 then + begin + CaptionRect := R; + with CaptionRect, TextMetrics do + begin + Left := Right - (Bottom - Top) - GetTextWidth(Canvas.Handle, S, True); + if (Bottom - Top) - (tmHeight + tmExternalLeading) = Margins.BottomHeight then Dec(Bottom); + Inc(Top, TextMetrics.tmExternalLeading); + end; + Canvas.Font.Color := C; + PaintDefault := True; + DoPaintCaption(Canvas, ClientAreaRect, CaptionRect, IsTextRotated, PaintDefault); + if PaintDefault then + CurrentTheme.PaintCaption(Canvas, CaptionRect, ItemInfo, S, TextFlags, False); + end; + end; + + { Image, or check box } + if ImageOrCheckShown then + begin + ImageRect := R; + + if ToolBarStyle then + begin + if IsSpecialDropDown then OffsetRect(ImageRect, (-CurrentTheme.DropdownArrowWidth + 1) div 2, 0); + if ItemLayout = tbxlGlyphLeft then ImageRect.Right := ImageRect.Left + ImgSize.CX + 2 + else + begin + ImageRect.Top := (ImageRect.Top + ImageRect.Bottom - ImgSize.cy - 2 - TextSize.cy) div 2; + ImageRect.Bottom := ImageRect.Top + ImgSize.CY; + end; + end + else ImageRect.Right := ImageRect.Left + ClientAreaRect.Bottom - ClientAreaRect.Top; + + if ImageIsShown then with ImageRect, ImgSize do + begin + Left := Left + ((Right - Left) - CX) div 2; + ImageRect.Top := Top + ((Bottom - Top) - CY) div 2; + Right := Left + CX; + Bottom := Top + CY; + DrawItemImage(Canvas, ImageRect, ItemInfo); + end + {else if not ToolbarStyle and Item.Checked then + CurrentTheme.PaintCheckMark(Canvas, ImageRect, ItemInfo);} {vb-} + else {vb+} + if not ToolbarStyle and Item.Checked then + begin + if Item.RadioItem then + with ItemInfo do ItemOptions := ItemOptions or IO_RADIO; + CurrentTheme.PaintCheckMark(Canvas, ImageRect, ItemInfo); + end; + end; +end; + + +//============================================================================// + +{ TTBXSubmenuItem } + +constructor TTBXSubmenuItem.Create(AOwner: TComponent); +begin + inherited; + ItemStyle := ItemStyle + [tbisSubMenu, tbisSubitemsEditable]; +end; + +function TTBXSubmenuItem.GetDropdownCombo: Boolean; +begin + Result := tbisCombo in ItemStyle; +end; + +procedure TTBXSubmenuItem.SetDropdownCombo(Value: Boolean); +begin + if (tbisCombo in ItemStyle) <> Value then begin + if Value then ItemStyle := ItemStyle + [tbisCombo] + else ItemStyle := ItemStyle - [tbisCombo]; + Change (True); + end; +end; + + + +//============================================================================// + +{ TTBXSeparatorItem } + +constructor TTBXSeparatorItem.Create(AOwner: TComponent); +begin + inherited; + FSize := -1; // use default from as in TTBSeparatorItem +end; + +function TTBXSeparatorItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBXSeparatorItemViewer; +end; + +procedure TTBXSeparatorItem.SetSize(Value: Integer); +begin + if Value < -1 then Value := -1; + if Value <> FSize then + begin + FSize := Value; + Change(True); + end; +end; + + +//============================================================================// + +{ TTBXSeparatorItemViewer } + +procedure TTBXSeparatorItemViewer.CalcSize(const Canvas: TCanvas; + var AWidth, AHeight: Integer); +var + SZ: Integer; +begin + SZ := TTBXSeparatorItem(Item).Size; + if SZ < 0 then + begin + if not IsToolbarStyle then SZ := CurrentTheme.MenuSeparatorSize + else SZ := CurrentTheme.TlbrSeparatorSize; + if SZ < 0 then inherited CalcSize(Canvas, AWidth, AHeight) + else + begin + AWidth := SZ; + AHeight := SZ; + end; + end + else if not IsToolbarStyle then + begin + AHeight := SZ; + AWidth := 0; + end + else + begin + AWidth := SZ; + AHeight := SZ; + end; +end; + +function TTBXSeparatorItemViewer.IsToolbarSize: Boolean; +begin + Result := inherited IsToolbarSize; + Result := Result or ((GetViewType(View) and PVT_TOOLBOX) = PVT_TOOLBOX); +end; + +function TTBXSeparatorItemViewer.IsToolbarStyle: Boolean; +begin + Result := inherited IsToolbarStyle; + Result := Result or ((GetViewType(View) and PVT_TOOLBOX) = PVT_TOOLBOX); +end; + +procedure TTBXSeparatorItemViewer.Paint(const Canvas: TCanvas; + const ClientAreaRect: TRect; IsHoverItem, IsPushed, UseDisabledShadow: Boolean); +const + CToolbarStyle: array [Boolean] of Integer = (0, IO_TOOLBARSTYLE); + CDesigning: array [Boolean] of Integer = (0, IO_DESIGNING); +var + Item: TTBXSeparatorItem; + ItemInfo: TTBXItemInfo; + R: TRect; + LineSep, HorzLine: Boolean; +begin + Item := TTBXSeparatorItem(Self.Item); + if Item.Size = 0 then Exit; + + FillChar(ItemInfo, SizeOf(TTBXItemInfo), 0); + ItemInfo.ViewType := GetViewType(View); + ItemInfo.ItemOptions := CToolbarStyle[IsToolbarStyle] or + CDesigning[csDesigning in Item.ComponentState]; + ItemInfo.Enabled := not Item.Blank; + ItemInfo.Pushed := IsPushed; + ItemInfo.Selected := False; + ItemInfo.ImageShown := False; + ItemInfo.ImageWidth := 0; + ItemInfo.ImageHeight := 0; + ItemInfo.IsVertical := View.Orientation = tbvoVertical; + if not IsToolbarStyle then ItemInfo.PopupMargin := GetPopupMargin(Self); + + R := ClientAreaRect; + LineSep := tbisLineSep in State; + with ItemInfo do + begin + HorzLine := (IsVertical xor LineSep) or View.IsPopup; + if (((ViewType and VT_POPUP) = VT_POPUP) and + ((ViewType and PVT_CHEVRONMENU) = PVT_CHEVRONMENU)) then + HorzLine := (HorzLine and LineSep); + end; + CurrentTheme.PaintSeparator(Canvas, R, ItemInfo, HorzLine, LineSep); +end; + +//============================================================================// + +{ TTBXVisibilityToggleItem } + +procedure TTBXVisibilityToggleItem.Click; +begin + if Assigned(FControl) then FControl.Visible := not FControl.Visible; + inherited; +end; + +procedure TTBXVisibilityToggleItem.InitiateAction; +begin + UpdateProps; +end; + +procedure TTBXVisibilityToggleItem.Notification(AComponent: TComponent; Operation: TOperation); +begin + inherited; + if (Operation = opRemove) and (AComponent = FControl) then Control := nil; +end; + +procedure TTBXVisibilityToggleItem.SetControl(Value: TControl); +begin + if FControl <> Value then + begin + FControl := Value; + if Assigned(Value) then + begin + Value.FreeNotification(Self); + if (Length(Caption) = 0) and not (csLoading in ComponentState) then + Caption := TControlAccess(Value).Caption; + end; + UpdateProps; + end; +end; + +procedure TTBXVisibilityToggleItem.UpdateProps; +begin + if (ComponentState * [csDesigning, csLoading, csDestroying] = []) then + Checked := Assigned(FControl) and FControl.Visible; +end; + +//============================================================================// + +{ TTBXPopupWindow } + +procedure TTBXPopupWindow.CMHintShow(var Message: TCMHintShow); +begin + with Message.HintInfo^ do + begin + HintStr := ''; + if Assigned(View.Selected) then + begin + CursorRect := View.Selected.BoundsRect; + HintStr := View.Selected.GetHintText; + View.Selected.Dispatch(Message); + end; + end; +end; + +procedure TTBXPopupWindow.CMShowingChanged(var Message: TMessage); {vb+} +const + ShowFlags: array[Boolean] of UINT = ( + SWP_NOSIZE or SWP_NOMOVE or SWP_NOZORDER or SWP_NOACTIVATE or SWP_HIDEWINDOW, + SWP_NOSIZE or SWP_NOMOVE or SWP_NOZORDER or SWP_NOACTIVATE or SWP_SHOWWINDOW); +var + MenuAni: TMenuAnimation; + AniDir: TTBAnimationDirection; +begin + { Must override TCustomForm/TForm's CM_SHOWINGCHANGED handler so that the + form doesn't get activated when Visible is set to True. } + + { Handle animation. NOTE: I do not recommend trying to enable animation on + Windows 95 and NT 4.0 because there's a difference in the way the + SetWindowPos works on those versions. See the comment in the + TBStartAnimation function of TB2Anim.pas. } + {$IFNDEF TBX_NO_ANIMATION} + if ((View.ParentView = nil) or not(vsNoAnimation in View.ParentView.State)) and + Showing and (View.Selected = nil) and not IsWindowVisible(WindowHandle) and + (TBXMenuAnimation.AnimationMode <> amNone) then + begin + { Start animation only if WM_TB2K_POPUPSHOWING returns zero (or not handled) } + if SendMessage(WindowHandle, WM_TB2K_POPUPSHOWING, TPS_ANIMSTART, 0) = 0 then + begin + MenuAni := TBXMenuAnimation.MenuAnimation; + AniDir := TTBPopupWindowAccess(Self).AnimationDirection; + if MenuAni = maUnfold then + if [tbadDown, tbadUp] * AniDir <> [] + then Include(AniDir, tbadRight) + else Include(AniDir, tbadDown); + TBStartAnimation(WindowHandle, MenuAni = maFade, AniDir); + Exit; + end; + end; + {$ENDIF} + + { No animation... } + if not Showing then begin + { Call TBEndAnimation to ensure WS_EX_LAYERED style is removed before + hiding, otherwise windows under the popup window aren't repainted + properly. } + TBEndAnimation(WindowHandle); + end; + SetWindowPos(WindowHandle, 0, 0, 0, 0, 0, ShowFlags[Showing]); + if Showing then SendNotifyMessage(WindowHandle, WM_TB2K_POPUPSHOWING, TPS_NOANIM, 0); +end; + +procedure TTBXPopupWindow.CreateParams(var Params: TCreateParams); +const + CS_DROPSHADOW = $00020000; +begin + inherited CreateParams(Params); + with Params do + begin + WindowClass.Style := WindowClass.Style and not (CS_DROPSHADOW or CS_DBLCLKS); + if GetShowShadow and (CurrentTheme.GetPopupShadowType = PST_WINDOWSXP) and IsWindowsXP then + begin + WindowClass.Style := WindowClass.Style or CS_DROPSHADOW; + StrPCopy(WinClassName, ClassName + 'S'); + end; + end; +end; + +procedure TTBXPopupWindow.CreateShadow; +var + PR: TRect; + ParentViewer: TTBItemViewer; + VT: Integer; + ChevronParent: Boolean; +begin + if (CurrentTheme.GetPopupShadowType = PST_WINDOWS2K) and not + ((Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion >= 5)) then Exit; + + PR := Rect(0, 0, 0, 0); + if CurrentTheme.GetPopupShadowType = PST_OFFICEXP then + begin + if (View <> nil) and (View.ParentView <> nil) then + begin + ParentViewer := TTBViewAccess(View.ParentView).OpenViewer; + ChevronParent := Self is TTBXChevronPopupWindow; + if ((ParentViewer is TTBXItemViewer) or ChevronParent) then + begin + VT := GetViewType(ParentViewer.View); + if ((VT and PVT_POPUPMENU) <> PVT_POPUPMENU) or ChevronParent then + begin + PR := ParentViewer.BoundsRect; + PR.TopLeft := View.ParentView.Window.ClientToScreen(PR.TopLeft); + PR.BottomRight := View.ParentView.Window.ClientToScreen(PR.BottomRight); + end; + end; + end + else if not IsRectEmpty(FControlRect) then + begin + PR := FControlRect; + end; + end; + FShadows := TShadows.Create(PR, BoundsRect, 4, 61, TBXLoColor); + FShadows.Show(Handle); +end; + +destructor TTBXPopupWindow.Destroy; +begin + DestroyShadow; + inherited; +end; + +procedure TTBXPopupWindow.DestroyShadow; +var + SaveShadows: TObject; +begin + SaveShadows := FShadows; + FShadows := nil; + SaveShadows.Free; +end; + +function TTBXPopupWindow.GetFillColor: TColor; +begin + Result := CurrentTheme.GetViewColor(GetViewType(View)); + View.BackgroundColor := Result; +end; + +function TTBXPopupWindow.GetNCSize: TPoint; +begin + Result := inherited GetNCSize; + CurrentTheme.GetViewBorder(GetViewType(View), Result); +end; + +function TTBXPopupWindow.GetShowShadow: Boolean; +begin + Result := ((GetViewType(View) and PVT_LISTBOX) <> PVT_LISTBOX ); +end; + +function TTBXPopupWindow.GetViewClass: TTBViewClass; +begin + Result := TTBXPopupView; +end; + +procedure TTBXPopupWindow.PaintScrollArrows; {vb+} + + function _GetPopupMargin: Integer; + begin + if View.ParentView <> nil then + Result := GetPopupMargin(TTBViewAccess(View.ParentView).OpenViewer) + else if View.ViewerCount > 0 then + Result := GetPopupMargin(View.Viewers[0]) + else Result := -1; + end; + + procedure DrawArrows; + var + ItemInfo: TTBXItemInfo; + Index: Integer; + begin + FillChar(ItemInfo, SizeOf(ItemInfo), 0); + ItemInfo.ViewType := PVT_POPUPMENU; + ItemInfo.Enabled := True; + ItemInfo.PopupMargin := _GetPopupMargin; + if ItemInfo.PopupMargin > 0 then + begin + if TTBViewAccess(View).ShowUpArrow then + for Index := 0 to View.ViewerCount- 1 do + if View.Viewers[Index].Show then + begin + CurrentTheme.PaintMenuItemFrame(Canvas, Rect(0, 0, ClientWidth, + View.Viewers[Index].BoundsRect.Top), ItemInfo); + Break; + end; + if TTBViewAccess(View).ShowDownArrow then + for Index := View.ViewerCount- 1 downto 0 do + if View.Viewers[Index].Show then + begin + CurrentTheme.PaintMenuItemFrame(Canvas, Rect(0, + View.Viewers[Index].BoundsRect.Bottom, ClientWidth, + ClientHeight), ItemInfo); + Break; + end; + end; + end; + +begin + with TTBViewAccess(View) do + if ShowUpArrow or ShowDownArrow then + DrawArrows; + inherited; +end; + +procedure TTBXPopupWindow.TBMGetViewType(var Message: TMessage); +var + PI: TTBCustomItem; +begin + Message.Result := PVT_POPUPMENU; + if View <> nil then + if Self is TTBXChevronPopupWindow then + Message.Result := PVT_CHEVRONMENU + else + begin + PI := View.ParentItem; + if PI <> nil then + begin + if (PI.Count = 1) and (PI.Items[0] is TTBXCustomList) then + Message.Result := PVT_LISTBOX + else if PI is TTBXEditItem then + begin + Message.Result := PVT_TOOLBOX; + end + else if (PI is TTBXCustomItem) and (TTBXCustomItem(PI).ToolBoxPopup) then + Message.Result := PVT_TOOLBOX + end; + end; +end; + +procedure TTBXPopupWindow.WMEraseBkgnd(var Message: TWmEraseBkgnd); +var + Canvas: TCanvas; + R: TRect; +begin + TBEndAnimation(WindowHandle); + Canvas := TCanvas.Create; + Canvas.Handle := Message.DC; + R := ClientRect; + CurrentTheme.PaintBackgnd(Canvas, R, R, R, GetFillColor, False, GetViewType(View)); + Canvas.Handle := 0; + Canvas.Free; + Message.Result := 1; +end; + +procedure TTBXPopupWindow.WMNCCalcSize(var Message: TWMNCCalcSize); +var + Sz: TPoint; +begin + CurrentTheme.GetViewBorder(GetViewType(View), Sz); + with Message.CalcSize_Params^.rgrc[0], Sz do + begin + Inc(Left, X); + Inc(Top, Y); + Dec(Right, X); + Dec(Bottom, Y); + end; + Message.Result := 1; +end; + +procedure TBXPopupNCPaintProc(Wnd: HWND; DC: HDC; AppData: Longint); +var + R, R2: TRect; + Canvas: TCanvas; + View: TTBPopupView; + PopupInfo: TTBXPopupInfo; + ParentViewer: TTBItemViewer; +begin + Assert(DC <> 0, 'TBXPopupNCPaintProc'); + Canvas := TCanvas.Create; + try + Canvas.Handle := DC; + FillChar(PopupInfo, SizeOf(PopupInfo), 0); + View := TTBPopupView(AppData); + PopupInfo.WindowHandle := View.Window.Handle; + PopupInfo.ViewType := GetViewType(View); + if View.ParentView <> nil then + begin + ParentViewer := TTBViewAccess(View.ParentView).OpenViewer; + if ((ParentViewer is TTBXItemViewer) or (View.Window is TTBXChevronPopupWindow)) + and TTBItemViewerAccess(ParentViewer).IsToolbarStyle then + begin + R := ParentViewer.BoundsRect; + R.TopLeft := View.ParentView.Window.ClientToScreen(R.TopLeft); + R.BottomRight := View.ParentView.Window.ClientToScreen(R.BottomRight); + GetWindowRect(Wnd, R2); + OffsetRect(R, -R2.Left, -R2.Top); + PopupInfo.ParentRect := R; + end; + end + else if View.ParentItem is TTBXRootItem then + begin + R := TTBXRootItem(View.ParentItem).FPopupControlRect; + if not IsRectEmpty(R) then + begin + GetWindowRect(Wnd, R2); + OffsetRect(R, -R2.Left, -R2.Top); + PopupInfo.ParentRect := R; + end; + end; + GetWindowRect(Wnd, R); + OffsetRect(R, -R.Left, -R.Top); + CurrentTheme.GetViewBorder(PopupInfo.ViewType, PopupInfo.BorderSize); + R2 := R; + with PopupInfo.BorderSize do InflateRect(R2, -X, -Y); + with R2 do ExcludeClipRect(Canvas.Handle, Left, Top, Right, Bottom); + CurrentTheme.PaintPopupNCArea(Canvas, R, PopupInfo); + finally + Canvas.Handle := 0; + Canvas.Free; + end; +end; + +procedure TTBXPopupWindow.WMNCPaint(var Message: TMessage); +var + DC: HDC; +begin + DC := GetWindowDC(Handle); + try + Assert(DC <> 0, 'TTBXPopupWindow.WMNCPaint'); + SelectNCUpdateRgn(Handle, DC, HRGN(Message.WParam)); + TBXPopupNCPaintProc(Handle, DC, LongInt(Self.View)); + finally + ReleaseDC(Handle, DC); + end; +end; + +procedure TTBXPopupWindow.WMPrint(var Message: TMessage); +begin + HandleWMPrint(Handle, Message, TBXPopupNCPaintProc, LongInt(Self.View)); +end; + +procedure TTBXPopupWindow.WMTB2kPopupShowing(var Message: TMessage); +begin + if Message.WParam in [TPS_ANIMFINISHED, TPS_NOANIM] then + begin + if not (csDestroying in ComponentState) and GetShowShadow and + (CurrentTheme.GetPopupShadowType in [PST_OFFICEXP, PST_WINDOWS2K]) then CreateShadow; + end; +end; + +procedure TTBXPopupWindow.WMWindowPosChanged(var Message: TWMWindowPosChanged); +begin + inherited; + with Message.WindowPos^ do + if ((flags and SWP_SHOWWINDOW) = 0) and ((flags and SWP_HIDEWINDOW) = 0) then + begin + if FShadows <> nil then + begin + DestroyShadow; + CreateShadow; + end; + end; +end; + + +//============================================================================// + +{ TTBXToolbarView } + +procedure TTBXToolbarView.GetMargins(AOrientation: TTBViewOrientation; var Margins: TRect); +var + VT: Integer; + M: TTBXMargins; +begin + VT := GetWinViewType(TTBXToolbar(Owner)); + if (VT and VT_TOOLBAR) = VT_TOOLBAR then + begin + if AOrientation = tbvoFloating then VT := VT or TVT_FLOATING + else VT := VT and not TVT_FLOATING + end + else if (VT and VT_DOCKPANEL) = VT_DOCKPANEL then + begin + if AOrientation = tbvoFloating then VT := VT or DPVT_FLOATING + else VT := VT and not DPVT_FLOATING + end; + CurrentTheme.GetViewMargins(VT, M); + Margins.Left := M.LeftWidth; + Margins.Top := M.TopHeight; + Margins.Right := M.RightWidth; + Margins.Bottom := M.BottomHeight; +end; + + +//============================================================================// + +{ TTBXToolbar } + +procedure TTBXToolbar.CMColorChanged(var Message: TMessage); +begin + UpdateEffectiveColor; + if Docked and HandleAllocated then + begin + RedrawWindow(Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or + RDW_ERASE or RDW_UPDATENOW or RDW_ALLCHILDREN); + end; + UpdateChildColors; + Invalidate; +end; + +procedure TTBXToolbar.CMControlChange(var Message: TCMControlChange); +begin + inherited; + if Message.Inserting and (Color = clNone) then + Message.Control.Perform(CM_PARENTCOLORCHANGED, 1, EffectiveColor); +end; + +procedure TTBXToolbar.CMParentColorChanged(var Message: TMessage); +begin + if Embedded and (Color = clNone) then + begin + UpdateEffectiveColor; + if (Message.WParam = 0) then + begin + Message.WParam := 1; + Message.LParam := EffectiveColor; + end; + end; + inherited; + Invalidate; +end; + +constructor TTBXToolbar.Create(AOwner: TComponent); +begin + inherited; + AddThemeNotification(Self); + FEffectiveColor := Color; + Color := clNone; + ControlStyle := ControlStyle - [csOpaque]; + DblClickUndock := False; +end; + +destructor TTBXToolbar.Destroy; +begin + RemoveThemeNotification(Self); + inherited; +end; + +procedure TTBXToolbar.DrawNCArea(const DrawToDC: Boolean; const ADC: HDC; const Clip: HRGN); +var + DC: HDC; + R, CR, R2: TRect; + ACanvas: TCanvas; + ToolbarInfo: TTBXToolbarInfo; + UsingBackground: Boolean; +begin + if not Docked or not HandleAllocated then Exit; + + if not DrawToDC then DC := GetWindowDC(Handle) + else DC := ADC; + + UsingBackground := TDockAccess(CurrentDock).UsingBackground; + + try + GetToolbarInfo(ToolbarInfo); + GetWindowRect(Handle, R); + OffsetRect(R, -R.Left, -R.Top); + if not DrawToDC then + begin + SelectNCUpdateRgn(Handle, DC, Clip); + CR := R; + with ToolbarInfo.BorderSize, CR do + begin + InflateRect(CR, -X, -Y); + if ToolbarInfo.IsVertical then Inc(Top, GetTBXDragHandleSize(ToolbarInfo)) + else Inc(Left, GetTBXDragHandleSize(ToolbarInfo)); + ExcludeClipRect(DC, Left, Top, Right, Bottom); + end; + end; + + ACanvas := TCanvas.Create; + try + ACanvas.Handle := DC; + if CurrentTheme.SolidToolbarNCArea then + begin + ACanvas.Brush.Color := EffectiveColor; + ACanvas.Brush.Style := bsSolid; + end + else if UsingBackground then + begin + ACanvas.Brush.Color := EffectiveColor; + R2 := CurrentDock.ClientRect; + OffsetRect(R2, -Left, -Top); + TDockAccess(CurrentDock).DrawBackground(DC, R2); + if (Color = clNone) and CurrentDock.BackgroundOnToolbars then + ACanvas.Brush.Style := bsClear; + end + else + begin + ACanvas.Brush.Color := GetEffectiveColor(CurrentDock); + ACanvas.FillRect(R); + ACanvas.Brush.Color := EffectiveColor; + ACanvas.Brush.Style := bsSolid; + end; + + CurrentTheme.PaintToolbarNCArea(ACanvas, R, ToolbarInfo); + finally + ACanvas.Handle := 0; + ACanvas.Free; + end; + finally + if not DrawToDC then ReleaseDC(Handle, DC); + end; +end; + +function TTBXToolbar.Embedded: Boolean; +begin + Result := not (Floating or Docked); +end; + +function TTBXToolbar.GetChevronItemClass: TTBChevronItemClass; +begin + Result := TTBXChevronItem; +end; + +function TTBXToolbar.GetFloatingBorderSize: TPoint; +begin + CurrentTheme.GetViewBorder(GetViewType(View) or TVT_FLOATING, Result); +end; + +function TTBXToolbar.GetFloatingWindowParentClass: TTBFloatingWindowParentClass; +begin + Result := TTBXFloatingWindowParent; +end; + +procedure TTBXToolbar.GetToolbarInfo(out ToolbarInfo: TTBXToolbarInfo); +begin + FillChar(ToolbarInfo, SizeOf(ToolbarInfo), 0); + ToolbarInfo.WindowHandle := Handle; + ToolbarInfo.ViewType := GetWinViewType(Self); + if CurrentDock <> nil then + ToolbarInfo.IsVertical := CurrentDock.Position in [dpLeft,dpRight]; + ToolbarInfo.AllowDrag := CurrentDock.AllowDrag; + ToolbarInfo.DragHandleStyle := Ord(DragHandleStyle); + ToolbarInfo.ClientWidth := ClientWidth; + ToolbarInfo.ClientHeight := ClientHeight; + if ToolbarInfo.AllowDrag and CloseButtonWhenDocked then + begin + ToolbarInfo.CloseButtonState := CDBS_VISIBLE; + if CloseButtonDown then ToolbarInfo.CloseButtonState := ToolbarInfo.CloseButtonState or CDBS_PRESSED + else if CloseButtonHover then ToolbarInfo.CloseButtonState := ToolbarInfo.CloseButtonState or CDBS_HOT; + end; + ToolbarInfo.BorderStyle := BorderStyle; + CurrentTheme.GetViewBorder(ToolbarInfo.ViewType, ToolbarInfo.BorderSize); + ToolbarInfo.EffectiveColor := EffectiveColor; +end; + +function TTBXToolbar.GetViewClass: TTBToolbarViewClass; +begin + Result := TTBXToolbarView; +end; + +procedure TTBXToolbar.SetItemTransparency(const Value: TTBXItemTransparency); +begin + FItemTransparency := Value; + Invalidate; +end; + +procedure TTBXToolbar.Loaded; {vb+} +begin + inherited; + UpdateEffectiveColor; +end; + +procedure TTBXToolbar.SetParent(AParent: TWinControl); +begin + inherited; + if AParent is TTBXFloatingWindowParent then + TTBXFloatingWindowParent(AParent).SnapDistance := SnapDistance; +end; + +procedure TTBXToolbar.SetSnapDistance(Value: Integer); +begin + if Value < 0 then Value := 0; + FSnapDistance := Value; + if (Parent <> nil) and (Parent is TTBXFloatingWindowParent) then + TTBXFloatingWindowParent(Parent).SnapDistance := Value; +end; + +procedure TTBXToolbar.TBMGetEffectiveColor(var Message: TMessage); +begin + Message.WParam := EffectiveColor; + Message.Result := 1; +end; + +procedure TTBXToolbar.TBMGetViewType(var Message: TMessage); +begin + if MenuBar then Message.Result := TVT_MENUBAR + else Message.Result := TVT_NORMALTOOLBAR; + if Floating then Message.Result := Message.Result or TVT_FLOATING; + if Resizable then Message.Result := Message.Result or TVT_RESIZABLE; + case ItemTransparency of + itAuto: + if not (Floating or Docked) then Message.Result := Message.Result or TVT_EMBEDDED; + itDisable: + Message.Result := Message.Result or TVT_EMBEDDED; + end; +end; + +procedure TTBXToolbar.TBMThemeChange(var Message: TMessage); +begin + case Message.WParam of + TSC_BEFOREVIEWCHANGE: BeginUpdate; + TSC_AFTERVIEWCHANGE: + begin + EndUpdate; + UpdateEffectiveColor; + if Floating then UpdateNCArea(TTBXFloatingWindowParent(Parent), GetWinViewType(Self)) + else UpdateNCArea(Self, GetWinViewType(Self)); + Invalidate; + Arrange; + UpdateChildColors; + end; + TSC_APPACTIVATE, TSC_APPDEACTIVATE: + if MenuBar then Invalidate; + end; +end; + +procedure TTBXToolbar.UpdateChildColors; +var + M: TMessage; +begin + M.Msg := CM_PARENTCOLORCHANGED; + M.WParam := 1; + M.LParam := EffectiveColor; + M.Result := 0; + Broadcast(M); +end; + +procedure TTBXToolbar.UpdateEffectiveColor; +begin + if Color = clNone then + begin + if Embedded and (Parent <> nil) then + FEffectiveColor := GetEffectiveColor(Parent) + else + FEffectiveColor := CurrentTheme.GetViewColor(GetViewType(View)); + end + else FEffectiveColor := Color; +end; + +procedure TTBXToolbar.WMEraseBkgnd(var Message: TWmEraseBkgnd); +var + Canvas: TCanvas; + R, CR: TRect; + Transparent: Boolean; +begin + Transparent := False; + CR := ClientRect; + if Color = clNone then + if Docked and (TDockAccess(CurrentDock).UsingBackground) and CurrentDock.BackgroundOnToolbars + and not CurrentTheme.SolidToolbarClientArea then + begin + R := CurrentDock.ClientRect; + R.TopLeft := ScreenToClient(CurrentDock.ClientToScreen(R.TopLeft)); + R.BottomRight := ScreenToClient(CurrentDock.ClientToScreen(R.BottomRight)); + TDockAccess(CurrentDock).DrawBackground(Message.DC, R); + Message.Result := 1; + Transparent := True; + end + else if Embedded then + begin + Transparent := True; + DrawParentBackground(Self, Message.DC, CR); + end; + + Canvas := TCanvas.Create; + Canvas.Handle := Message.DC; + try + if Docked then + begin + R := CurrentDock.ClientRect; + R.TopLeft := ScreenToClient(CurrentDock.ClientToScreen(R.TopLeft)); + R.BottomRight := ScreenToClient(CurrentDock.ClientToScreen(R.BottomRight)); + end + else R := Rect(0, 0, 0, 0); + CurrentTheme.PaintBackgnd(Canvas, R, CR, CR, EffectiveColor, Transparent, GetWinViewType(Self)); + Message.Result := 1; + finally + Canvas.Handle := 0; + Canvas.Free; + end; +end; + +procedure TTBXToolbar.WMSize(var Message: TWMSize); +var + I: Integer; + V: TTBItemViewer; + R: TRect; +begin + inherited; + if Docked and TDockAccess(CurrentDock).UsingBackground and + TDockAccess(CurrentDock).BackgroundOnToolbars and + ((CurrentDock is TTBXDock) and not TTBXDock(CurrentDock).FResizing) then + begin + for I := 0 to View.ViewerCount - 1 do + begin + V := View.Viewers[I]; + if V.Show and not IsRectEmpty(V.BoundsRect) and not (V.Item is TTBControlItem) + then View.Invalidate(V); + end; + Self.Update; + InvalidateRect(Handle, nil, True); + for I := 0 to View.ViewerCount - 1 do + begin + V := View.Viewers[I]; + if V.Show and not IsRectEmpty(V.BoundsRect) and not (V.Item is TTBControlItem) + then + begin + R := V.BoundsRect; + ValidateRect(Handle, @R); + end; + end; + end; +end; + + +//============================================================================// + +{ TTBXChevronItem } + +function TTBXChevronItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBXChevronItemViewer; +end; + +procedure TTBXChevronItem.GetPopupPosition(ParentView: TTBView; + PopupWindow: TTBPopupWindow; var PopupPositionRec: TTBPopupPositionRec); +begin + if CurrentTheme.OfficeXPPopupAlignment then with PopupPositionRec do + begin + GetOfficeXPPopupPosition1(PopupPositionRec); + inherited GetPopupPosition(ParentView, PopupWindow, PopupPositionRec); + GetOfficeXPPopupPosition2(PopupPositionRec); + end + else inherited; +end; + +function TTBXChevronItem.GetPopupWindowClass: TTBPopupWindowClass; +begin + Result := TTBXChevronPopupWindow; +end; + + +//============================================================================// + +{ TTBXChevronItemViewer } + +procedure TTBXChevronItemViewer.Paint(const Canvas: TCanvas; + const ClientAreaRect: TRect; IsHoverItem, IsPushed, UseDisabledShadow: Boolean); +const + CDesigning: array [Boolean] of Integer = (0, IO_DESIGNING); +var + ItemInfo: TTBXItemInfo; +begin + FillChar(ItemInfo, SizeOf(TTBXItemInfo), 0); + ItemInfo.ViewType := GetViewType(View); + ItemInfo.ItemOptions := IO_TOOLBARSTYLE or CDesigning[csDesigning in Item.ComponentState]; + ItemInfo.Enabled := Item.Enabled or View.Customizing; + ItemInfo.Pushed := IsPushed; + ItemInfo.Selected := False; + ItemInfo.ImageShown := False; + ItemInfo.ImageWidth := 0; + ItemInfo.ImageHeight := 0; + ItemInfo.IsPopupParent := IsPushed; + if IsHoverItem then + begin + if not ItemInfo.Enabled and not TTBViewAccess(View).MouseOverSelected then ItemInfo.HoverKind := hkKeyboardHover + else if ItemInfo.Enabled then ItemInfo.HoverKind := hkMouseHover; + end + else ItemInfo.HoverKind := hkNone; + ItemInfo.IsVertical := View.Orientation = tbvoVertical; + CurrentTheme.PaintChevron(Canvas, ClientAreaRect, ItemInfo); +end; + + +//============================================================================// + +{ TTBXRootItem } + +function TTBXRootItem.CreatePopupEx(SelectFirstItem: Boolean; + const AControlRect: TRect; Alignment: TTBPopupAlignment): TTBPopupWindow; +var + SavePopupRect: TRect; + Pt: TPoint; +begin + SavePopupRect := FPopupControlRect; + try + FPopupControlRect := AControlRect; + Pt.X := AControlRect.Left; + Pt.Y := AControlRect.Bottom; + Result := inherited CreatePopup(nil, nil, False, SelectFirstItem, False, Pt, Alignment); + if Result is TTBXPopupWindow then TTBXPopupWindow(Result).FControlRect := FPopupControlRect; + finally + FPopupControlRect := SavePopupRect; + end; +end; + +procedure TTBXRootItem.GetPopupPosition(ParentView: TTBView; + PopupWindow: TTBPopupWindow; var PopupPositionRec: TTBPopupPositionRec); +var + Y2: Integer; + VT: Integer; +begin + if IsRectEmpty(FPopupControlRect) then inherited + else with PopupPositionRec do + begin + ParentItemRect := FPopupControlRect; + if Y + H > MonitorRect.Bottom then + begin + Y2 := FPopupControlRect.Top - H; + if Y2 >= MonitorRect.Top then Y := Y2; + end; + if Y < MonitorRect.Top then Y := MonitorRect.Top + else if Y + H > MonitorRect.Bottom then Y := MonitorRect.Bottom - H; + + if Alignment = tbpaRight then X := FPopupControlRect.Right - W; + + if X + W > MonitorRect.Right then X := MonitorRect.Right - W; + if X < MonitorRect.Left then X := MonitorRect.Left; + end; + if CurrentTheme.OfficeXPPopupAlignment then with PopupPositionRec do + begin + GetOfficeXPPopupPosition1(PopupPositionRec); + inherited GetPopupPosition(ParentView, PopupWindow, PopupPositionRec); + GetOfficeXPPopupPosition2(PopupPositionRec); + VT := GetWinViewType(PopupWindow); + PopupPositionRec.PlaySound := not (VT and PVT_LISTBOX = PVT_LISTBOX); + end + else inherited; +end; + +function TTBXRootItem.GetPopupWindowClass: TTBPopupWindowClass; +begin + Result := TTBXPopupWindow; +end; + +function TTBXRootItem.OpenPopupEx(const SelectFirstItem, TrackRightButton: Boolean; + const ControlRect: TRect; const Alignment: TTBPopupAlignment; + const ReturnClickedItemOnly: Boolean): TTBCustomItem; +var + ModalHandler: TTBModalHandler; + Popup: TTBPopupWindow; + DoneActionData: TTBDoneActionData; + State: TTBViewState; +begin + ModalHandler := TTBModalHandler.Create(0); + try + Popup := CreatePopupEx(SelectFirstItem, ControlRect, Alignment); + try + State := Popup.View.State; + Include(State, vsIgnoreFirstMouseUp); + TTBViewAccess(Popup.View).SetState(State); + ModalHandler.Loop(Popup.View, False, False, False, TrackRightButton); + DoneActionData := TTBViewAccess(Popup.View).DoneActionData; + finally + { Remove vsModal state from the root view before any TTBView.Destroy + methods get called, so that NotifyFocusEvent becomes a no-op } + State := Popup.View.State; + Exclude(State, vsModal); + TTBViewAccess(Popup.View).SetState(State); + Popup.Free; + end; + finally + ModalHandler.Free; + end; + Result := ProcessDoneAction(DoneActionData, ReturnClickedItemOnly); +end; + +function TTBXRootItem.PopupEx(const ControlRect: TRect; + TrackRightButton: Boolean; Alignment: TTBPopupAlignment = tbpaLeft; + ReturnClickedItemOnly: Boolean = False): TTBCustomItem; +begin + Result := OpenPopupEx(False, TrackRightButton, ControlRect, + Alignment, ReturnClickedItemOnly); +end; + + +//============================================================================// + +{ TTBXPopupMenu } + +function TTBXPopupMenu.GetRootItemClass: TTBRootItemClass; +begin + Result := TTBXRootItem; +end; + +function TTBXPopupMenu.PopupEx(const ControlRect: TRect; + ReturnClickedItemOnly: Boolean = False): TTBCustomItem; +begin + {$IFDEF JR_D5} + {$IFDEF JR_D9} + SetPopupPoint(Point(ControlRect.Left, ControlRect.Bottom)); + {$ELSE} + PPoint(@PopupPoint)^ := Point(ControlRect.Left, ControlRect.Bottom); + {$ENDIF} + {$ENDIF} + Result := TTBXRootItem(Items).PopupEx(ControlRect, TrackButton = tbRightButton, + TTBPopupAlignment(Alignment), ReturnClickedItemOnly); +end; + +procedure TTBXPopupMenu.TBMGetViewType(var Message: TMessage); +begin + Message.Result := PVT_POPUPMENU; +end; + + +//============================================================================// + +{ TTBXFloatingWindowParent } + +procedure TTBXFloatingWindowParent.CancelNCHover; +begin + if FCloseButtonHover then + begin + FCloseButtonHover := False; + if HandleAllocated and IsWindowVisible(Handle) then + DrawNCArea(False, 0, 0, [twrdCloseButton]); + end; +end; + +procedure TTBXFloatingWindowParent.CMMouseLeave(var Message: TMessage); +begin + inherited; + CancelNCHover; +end; + +procedure TTBXFloatingWindowParent.DrawNCArea(const DrawToDC: Boolean; + const ADC: HDC; const Clip: HRGN; RedrawWhat: TTBToolWindowNCRedrawWhat); +const + CDown: array [Boolean] of Integer = (0, CDBS_PRESSED); + CHover: array [Boolean] of Integer = (0, CDBS_HOT); + CBord: array [Boolean] of Integer = (0, WRP_BORDER); + CCapt: array [Boolean] of Integer = (0, WRP_CAPTION); + CBtn: array [Boolean] of Integer = (0, WRP_CLOSEBTN); +var + DC: HDC; + R: TRect; + Canvas: TCanvas; + WindowInfo: TTBXWindowInfo; + DockWindow: TTBCustomDockableWindowAccess; +begin + if not HandleAllocated then Exit; + if not DrawToDC then DC := GetWindowDC(Handle) + else DC := ADC; + try + if not DrawToDC then SelectNCUpdateRgn(Handle, DC, Clip); + GetWindowRect(Handle, R); + OffsetRect(R, -R.Left, -R.Top); + with R do IntersectClipRect(DC, Left, Top, Right, Bottom); + Canvas := TCanvas.Create; + try + Canvas.Handle := DC; + GetWindowRect(Handle, R); + OffsetRect(R, -R.Left, -R.Top); + DockWindow := TTBCustomDockableWindowAccess(DockableWindow); + + FillChar(WindowInfo, SizeOf(WindowInfo), 0); + WindowInfo.ParentHandle := Handle; + WindowInfo.WindowHandle := DockWindow.Handle; + WindowInfo.ViewType := GetWinViewType(DockWindow); + WindowInfo.ClientWidth := ClientWidth; + WindowInfo.ClientHeight := ClientHeight; + WindowInfo.ShowCaption := DockWindow.ShowCaption; + WindowInfo.FloatingBorderSize := DockWindow.GetFloatingBorderSize; + if DockWindow.CloseButton and DockWindow.ShowCaption then + begin + WindowInfo.CloseButtonState := CDBS_VISIBLE; + if CloseButtonDown then WindowInfo.CloseButtonState := WindowInfo.CloseButtonState or CDBS_PRESSED + else if CloseButtonHover then WindowInfo.CloseButtonState := WindowInfo.CloseButtonState or CDBS_HOT; + end; + WindowInfo.RedrawPart := + CBord[twrdBorder in RedrawWhat] or + CCapt[twrdCaption in RedrawWhat] or + CBtn[twrdCloseButton in RedrawWhat]; + WindowInfo.Caption := PChar(Caption); + WindowInfo.EffectiveColor := GetEffectiveColor(DockWindow); + WindowInfo.Active := not DockWindow.InactiveCaption; + Canvas.Brush.Color := WindowInfo.EffectiveColor; + CurrentTheme.PaintFloatingBorder(Canvas, R, WindowInfo); + finally + Canvas.Handle := 0; + Canvas.Free; + end; + finally + if not DrawToDC then ReleaseDC(Handle, DC); + end; +end; + +procedure TTBXFloatingWindowParent.WMEraseBkgnd(var Message: TMessage); +begin + Message.Result := 1; +end; + +procedure TTBXFloatingWindowParent.WMNCMouseLeave(var Message: TMessage); +begin + if not MouseCapture then CancelNCHover; + inherited; +end; + +procedure TTBXFloatingWindowParent.WMNCMouseMove(var Message: TWMNCMouseMove); +var + InArea: Boolean; +begin + inherited; + { Note: TME_NONCLIENT was introduced in Windows 98 and 2000 } + if (Win32MajorVersion >= 5) or + (Win32MajorVersion = 4) and (Win32MinorVersion >= 10) then + CallTrackMouseEvent (Handle, TME_LEAVE or $10 {TME_NONCLIENT}); + InArea := Message.HitTest = 2001; {HT_TB2k_Close} + if FCloseButtonHover <> InArea then + begin + FCloseButtonHover := InArea; + if HandleAllocated and IsWindowVisible(Handle) then + DrawNCArea(False, 0, 0, [twrdCloseButton]); + end; +end; + +procedure TTBXFloatingWindowParent.WMWindowPosChanging(var Message: TWMWindowPosChanging); +var + R: TRect; + MonInfo: TMonitorInfo; +begin + if SnapDistance > 0 then with Message.WindowPos^ do + begin + if (cx = Width) and (cy = Height) then + begin + MonInfo.cbSize := SizeOf(MonInfo); + GetMonitorInfo(Monitor.Handle, @MonInfo); + R := MonInfo.rcWork; + if Abs(x + Width - R.Right) < SnapDistance then x := R.Right - Width; + if Abs(y + Height - R.Bottom) < SnapDistance then y := R.Bottom - Height; + if Abs(x - R.Left) < SnapDistance then x := R.Left; + if Abs(y - R.Top) < SnapDistance then y := R.Top; + end; + end; + inherited; +end; + + +//============================================================================// + +{ TTBXToolWindow } + +procedure TTBXToolWindow.CMColorChanged(var Message: TMessage); +begin + UpdateEffectiveColor; + if Docked and HandleAllocated then + RedrawWindow(Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or + RDW_ERASE or RDW_UPDATENOW or RDW_ALLCHILDREN); + UpdateChildColors; + Invalidate; +end; + +procedure TTBXToolWindow.CMControlChange(var Message: TCMControlChange); +begin + inherited; + if Message.Inserting and (Color = clNone) then + Message.Control.Perform(CM_PARENTCOLORCHANGED, 1, EffectiveColor); +end; + +procedure TTBXToolWindow.CMTextChanged(var Message: TMessage); +begin + inherited; + if HandleAllocated then + begin + if Docked then RedrawWindow(Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE) + else RedrawWindow(TTBXFloatingWindowParent(Parent).Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE); + end; +end; + +constructor TTBXToolWindow.Create(AOwner: TComponent); +begin + inherited; + AddThemeNotification(Self); + DblClickUndock := False; + FEffectiveColor := Color; + Color := clNone; +end; + +destructor TTBXToolWindow.Destroy; +begin + RemoveThemeNotification(Self); + inherited; +end; + +procedure TTBXToolWindow.DrawNCArea(const DrawToDC: Boolean; + const ADC: HDC; const Clip: HRGN); +var + DC: HDC; + R, CR, R2: TRect; + ACanvas: TCanvas; + ToolbarInfo: TTBXToolbarInfo; + UsingBackground: Boolean; +begin + if not Docked or not HandleAllocated then Exit; + + if not DrawToDC then DC := GetWindowDC(Handle) + else DC := ADC; + + UsingBackground := TDockAccess(CurrentDock).UsingBackground; + + try + GetToolbarInfo(ToolbarInfo); + GetWindowRect(Handle, R); + OffsetRect(R, -R.Left, -R.Top); + if not DrawToDC then + begin + SelectNCUpdateRgn(Handle, DC, Clip); + CR := R; + with ToolbarInfo.BorderSize, CR do + begin + InflateRect(CR, -X, -Y); + if ToolbarInfo.IsVertical then Inc(Top, GetTBXDragHandleSize(ToolbarInfo)) + else Inc(Left, GetTBXDragHandleSize(ToolbarInfo)); + ExcludeClipRect(DC, Left, Top, Right, Bottom); + end; + end; + ACanvas := TCanvas.Create; + try + ACanvas.Handle := DC; + ACanvas.Brush.Color := EffectiveColor; + if CurrentTheme.SolidToolbarNCArea then + begin + ACanvas.Brush.Color := EffectiveColor; + ACanvas.Brush.Style := bsSolid; + end + else if UsingBackground then + begin + ACanvas.Brush.Color := EffectiveColor; + R2 := CurrentDock.ClientRect; + OffsetRect(R2, -Left, -Top); + TDockAccess(CurrentDock).DrawBackground(DC, R2); + if (Color = clNone) and CurrentDock.BackgroundOnToolbars then + ACanvas.Brush.Style := bsClear; + end + else + begin + ACanvas.Brush.Color := GetEffectiveColor(CurrentDock); + ACanvas.FillRect(R); + ACanvas.Brush.Color := EffectiveColor; + ACanvas.Brush.Style := bsSolid; + end; + + CurrentTheme.PaintToolbarNCArea(ACanvas, R, ToolbarInfo); + finally + ACanvas.Handle := 0; + ACanvas.Free; + end; + finally + if not DrawToDC then ReleaseDC(Handle, DC); + end; +end; + +function TTBXToolWindow.GetFloatingBorderSize: TPoint; +begin + CurrentTheme.GetViewBorder(GetWinViewType(Self) or TVT_FLOATING, Result); +end; + +function TTBXToolWindow.GetFloatingWindowParentClass: TTBFloatingWindowParentClass; +begin + Result := TTBXFloatingWindowParent; +end; + +procedure TTBXToolWindow.GetToolbarInfo(out ToolbarInfo: TTBXToolbarInfo); +begin + FillChar(ToolbarInfo, SizeOf(ToolbarInfo), 0); + ToolbarInfo.WindowHandle := WindowHandle; + ToolbarInfo.ViewType := GetWinViewType(Self); + if CurrentDock <> nil then + ToolbarInfo.IsVertical := CurrentDock.Position in [dpLeft,dpRight]; + ToolbarInfo.AllowDrag := CurrentDock.AllowDrag; + ToolbarInfo.DragHandleStyle := Ord(DragHandleStyle); + ToolbarInfo.ClientWidth := ClientWidth; + ToolbarInfo.ClientHeight := ClientHeight; + if ToolbarInfo.AllowDrag and CloseButtonWhenDocked then + begin + ToolbarInfo.CloseButtonState := CDBS_VISIBLE; + if CloseButtonDown then ToolbarInfo.CloseButtonState := ToolbarInfo.CloseButtonState or CDBS_PRESSED; + if CloseButtonHover then ToolbarInfo.CloseButtonState := ToolbarInfo.CloseButtonState or CDBS_HOT; + end; + ToolbarInfo.BorderStyle := BorderStyle; + ToolbarInfo.EffectiveColor := EffectiveColor; + CurrentTheme.GetViewBorder(ToolbarInfo.ViewType, ToolbarInfo.BorderSize); +end; + +procedure TTBXToolWindow.SetParent(AParent: TWinControl); +begin + inherited; + if AParent is TTBXFloatingWindowParent then + TTBXFloatingWindowParent(AParent).SnapDistance := SnapDistance; +end; + +procedure TTBXToolWindow.SetSnapDistance(Value: Integer); +begin + if Value < 0 then Value := 0; + FSnapDistance := Value; + if (Parent <> nil) and (Parent is TTBXFloatingWindowParent) then + TTBXFloatingWindowParent(Parent).SnapDistance := Value; +end; + +procedure TTBXToolWindow.TBMGetEffectiveColor(var Message: TMessage); +begin + Message.WParam := EffectiveColor; + Message.Result := 1; +end; + +procedure TTBXToolWindow.TBMGetViewType(var Message: TMessage); +begin + Message.Result := TVT_TOOLWINDOW; + if Floating then Message.Result := Message.Result or TVT_FLOATING; + if Resizable then Message.Result := Message.Result or TVT_RESIZABLE; +end; + +procedure TTBXToolWindow.TBMThemeChange(var Message: TMessage); +begin + case Message.WParam of + TSC_BEFOREVIEWCHANGE: BeginUpdate; + TSC_AFTERVIEWCHANGE: + begin + EndUpdate; + UpdateEffectiveColor; + if HandleAllocated and not (csDestroying in ComponentState) then + if Parent is TTBXFloatingWindowParent then + UpdateNCArea(TTBXFloatingWindowParent(Parent), GetWinViewType(Self)) + else + UpdateNCArea(Self, GetWinViewType(Self)); + UpdateChildColors; + Invalidate; + end; + end; +end; + +procedure TTBXToolWindow.UpdateChildColors; +var + M: TMessage; +begin + M.Msg := CM_PARENTCOLORCHANGED; + M.WParam := 1; + M.LParam := EffectiveColor; + M.Result := 0; + Broadcast(M); +end; + +procedure TTBXToolWindow.UpdateEffectiveColor; +begin + if Color = clNone then FEffectiveColor := CurrentTheme.GetViewColor(GetWinViewType(Self)) + else FEffectiveColor := Color; +end; + +procedure TTBXToolWindow.WMEraseBkgnd(var Message: TWmEraseBkgnd); +var + Canvas: TCanvas; + R, CR: TRect; + Transparent: Boolean; +begin + Transparent := False; + CR := ClientRect; + if Color = clNone then + if Docked and (TDockAccess(CurrentDock).UsingBackground) and CurrentDock.BackgroundOnToolbars + and not CurrentTheme.SolidToolbarClientArea then + begin + R := CurrentDock.ClientRect; + R.TopLeft := ScreenToClient(CurrentDock.ClientToScreen(R.TopLeft)); + R.BottomRight := ScreenToClient(CurrentDock.ClientToScreen(R.BottomRight)); + SaveDC(Message.DC); + with CR do IntersectClipRect(Message.DC, Left, Top, Right, Bottom); + TDockAccess(CurrentDock).DrawBackground(Message.DC, R); + RestoreDC(Message.DC, -1); + Message.Result := 1; + Transparent := True; + end; + + Canvas := TCanvas.Create; + Canvas.Handle := Message.DC; + try + if Docked then + begin + R := CurrentDock.ClientRect; + R.TopLeft := ScreenToClient(CurrentDock.ClientToScreen(R.TopLeft)); + R.BottomRight := ScreenToClient(CurrentDock.ClientToScreen(R.BottomRight)); + end + else R := Rect(0, 0, 0, 0); + CurrentTheme.PaintBackgnd(Canvas, R, CR, CR, EffectiveColor, Transparent, GetWinViewType(Self)); + Message.Result := 1; + finally + Canvas.Handle := 0; + Canvas.Free; + end; +end; + +//============================================================================// + +{ Additional system colors } + +type + TColorEntry = packed record + ColorPtr: ^TColor; + Name: string; + end; + +var + ColorRegistry: array of TColorEntry; + +procedure AddTBXColor(var AColor: TColor; const AName: string); +var + L: Integer; +begin + L := Length(ColorRegistry); + SetLength(ColorRegistry, L + 1); + with ColorRegistry[L] do + begin + ColorPtr := @AColor; + Name := AName; + end; +end; + +function TBXColorToString(Color: TColor): string; +var + I: Integer; +begin + if not ColorToIdent(Color, Result) then + begin + for I := 0 to Length(ColorRegistry) - 1 do + if ColorRegistry[I].ColorPtr^ = Color then + begin + Result := ColorRegistry[I].Name; + Exit; + end; + FmtStr(Result, '%s%.8x', [HexDisplayPrefix, Color]); + end; +end; + +function TBXIdentToColor(const Ident: string; var Color: Longint): Boolean; +var + I: Integer; +begin + for I := 0 to Length(ColorRegistry) - 1 do + if CompareText(ColorRegistry[I].Name, Ident) = 0 then + begin + Color := ColorRegistry[I].ColorPtr^; + Result := True; + Exit; + end; + Result := IdentToColor(Ident, Color); +end; + +function TBXStringToColor(S: string): TColor; +begin + if not TBXIdentToColor(S, Longint(Result)) then Result := StringToColor(S); +end; + +procedure TBXGetColorValues(Proc: TGetStrProc); +var + I: Integer; +begin + GetColorValues(Proc); + for I := 0 to Length(ColorRegistry) - 1 do Proc(ColorRegistry[I].Name); +end; + +procedure TBXSetTheme(const AThemeName: string); +begin + TBXNexus.SetTheme(AThemeName); +end; + +function TBXCurrentTheme: string; +begin + Result := TBXNexus.GetTheme; +end; + + +//============================================================================// + + +{ TTBXNexus } + +procedure TTBXNexus.AddNotifie(AObject: TObject); +begin + if FNotifies.IndexOf(AObject) < 0 then FNotifies.Add(AObject); + Exit; asm db 0,'TBX (C) 2001-2003 Alex Denisov',0 end; +end; + +procedure TTBXNexus.Broadcast(Msg: Cardinal; WParam, LParam: Integer); +var + M: TMessage; + I: Integer; +begin + if FNotifies.Count > 0 then + begin + M.Msg := Msg; + M.WParam := WParam; + M.LParam := LParam; + M.Result := 0; + for I := 0 to FNotifies.Count - 1 do TObject(FNotifies[I]).Dispatch(M); + end; +end; + +constructor TTBXNexus.Create(const DefaultTheme: string); +begin + FNotifies := TList.Create; + CurrentTheme := GetTBXTheme(DefaultTheme); + AddTBXSysChangeNotification(Self); +end; + +destructor TTBXNexus.Destroy; +begin + RemoveTBXSysChangeNotification(Self); + ReleaseTBXTheme(CurrentTheme); + FNotifies.Free; + inherited; +end; + +function TTBXNexus.GetTheme: string; +begin + Result := CurrentTheme.Name; +end; + +procedure TTBXNexus.RemoveNotifie(AObject: TObject); +begin + FNotifies.Remove(AObject); +end; + +procedure TTBXNexus.SetTheme(const AThemeName: string); +begin + if IsTBXThemeAvailable(AThemeName) then + begin + ReleaseTBXTheme(CurrentTheme); + CurrentTheme := GetTBXTheme(AThemeName); + Broadcast(TBM_THEMECHANGE, TSC_BEFOREVIEWCHANGE, 1); + Broadcast(TBM_THEMECHANGE, TSC_VIEWCHANGE, 1); + Broadcast(TBM_THEMECHANGE, TSC_AFTERVIEWCHANGE, 1); + end; +end; + +procedure TTBXNexus.TBXSysCommand(var Message: TMessage); +begin + { Retranslate TBX_SYSCOMMAND to TBM_THEMECHANGE } + if Message.Msg = TBX_SYSCOMMAND then + Broadcast(TBM_THEMECHANGE, Message.WParam, 0); +end; + +procedure InitAdditionalSysColors; +begin +{$IFNDEF JR_D7} {vb+} + AddTBXColor(clHotLight, 'clHotLight'); +{$ENDIF} {vb+} +{$IFNDEF JR_D6} + AddTBXColor(clMoneyGreen, 'clMoneyGreen'); + AddTBXColor(clSkyBlue, 'clSkyBlue'); + AddTBXColor(clCream, 'clCream'); + AddTBXColor(clMedGray, 'clMedGray'); +{$ENDIF} +end; + +{ TTBXDock } + +procedure TTBXDock.CMColorChanged(var Message: TMessage); +var + I: Integer; +begin + inherited; + for I := 0 to Self.ControlCount - 1 do + if Controls[I] is TWinControl then + InvalidateAll(TWinControl(Controls[I])); +end; + +constructor TTBXDock.Create(AOwner: TComponent); +begin + inherited; + Color := clNone; + AddThemeNotification(Self); +end; + +destructor TTBXDock.Destroy; +begin + RemoveThemeNotification(Self); + inherited; +end; + +procedure TTBXDock.DrawBackground(DC: HDC; const DrawRect: TRect); +const + DOCK_POSITIONS: array [TTBDockPosition] of Integer = (DP_TOP, DP_BOTTOM, DP_LEFT, DP_RIGHT); +var + Canvas: TCanvas; +begin + if UseParentBackground then DrawParentBackground(Self, DC, ClientRect) + else if ThemedBackground then + begin + Canvas := TCanvas.Create; + Canvas.Handle := DC; + CurrentTheme.PaintDock(Canvas, ClientRect, DrawRect, DOCK_POSITIONS[Position]); + Canvas.Handle := 0; + Canvas.Free; + end + else inherited; +end; + +procedure TTBXDock.Resize; +var + I, J: Integer; + V: TTBItemViewer; + R: TRect; +begin + inherited Resize; + if UsingBackground then + begin + for J := 0 to ToolbarCount - 1 do + begin + Invalidate; + if Toolbars[J] is TTBXToolbar then with TTBXToolbar(Toolbars[J]) do + begin + for I := 0 to View.ViewerCount - 1 do + begin + V := View.Viewers[I]; + if V.Show and not IsRectEmpty(V.BoundsRect) and not (V.Item is TTBControlItem) + then View.Invalidate(V); + end; + Update; + if HandleAllocated then + RedrawWindow(Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or RDW_ERASE); + for I := 0 to View.ViewerCount - 1 do + begin + V := View.Viewers[I]; + if V.Show and not IsRectEmpty(V.BoundsRect) and not (V.Item is TTBControlItem) + then + begin + R := V.BoundsRect; + ValidateRect(Handle, @R); + end; + end; + end + else if Toolbars[J] is TTBXToolWindow then with TTBXToolWindow(Toolbars[J]) do + begin + if HandleAllocated then + RedrawWindow(Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or RDW_ERASE); + end; + end; + end; +end; + +procedure TTBXDock.SetUseParentBackground(Value: Boolean); +begin + if Value <> FUseParentBackground then + begin + FUseParentBackground := Value; + if HandleAllocated then + RedrawWindow(Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or + RDW_ERASE or RDW_ALLCHILDREN); + end; +end; + +procedure TTBXDock.TBMGetEffectiveColor(var Message: TMessage); +begin + if Color <> clNone then Message.WParam := Color + else if Parent <> nil then Message.WParam := GetEffectiveColor(Parent) + else Message.WParam := clBtnFace; + Message.Result := 1; +end; + +procedure TTBXDock.TBMThemeChange(var Message: TMessage); +begin + case Message.WParam of + TSC_AFTERVIEWCHANGE: + begin + Invalidate; + end; + end; +end; + +function TTBXDock.ThemedBackground: Boolean; +begin + Result := (Background = nil) and (Color = clNone) and CurrentTheme.PaintDockBackground; +end; + +function TTBXDock.UsingBackground: Boolean; +begin + Result := UseParentBackground or (ThemedBackground and not FMoving) or + inherited UsingBackground; +end; + +procedure TTBXDock.WMEraseBkgnd(var Message: TWMEraseBkgnd); +var + R: TRect; + C: TColor; +begin + R := Self.ClientRect; + if UsingBackground then + begin + DrawBackground(Message.DC, R); + Message.Result := 1; + end + else + begin + C := Color; + if C = clNone then C := GetEffectiveColor(Parent); + FillRectEx(Message.DC, R, C); + Message.Result := 1; + end; +end; + +procedure TTBXDock.WMMove(var Message: TWMMove); +begin + FMoving := True; + inherited; + FMoving := False; +end; + +procedure TTBXDock.WMSize(var Message: TWMSize); +begin + FResizing := True; + inherited; + FResizing := False; +end; + +{ TTBXMenuAnimation } {vb+} + +constructor TTBXMenuAnimation.Create(AAnimationMode: TAnimationMode = amSysDefault); +begin + AnimationMode := AAnimationMode; +end; + +function TTBXMenuAnimation.GetAvailableModes: TAnimationModes; +var IsWindows2K: Boolean; +begin + Result := [amNone]; + IsWindows2K := (Win32Platform = VER_PLATFORM_WIN32_NT) and + CheckWin32Version(5); + if IsWindows2K or ((Win32Platform = VER_PLATFORM_WIN32_WINDOWS) and + CheckWin32Version(4, 10){Win98}) then + Result := Result+ [amSysDefault, amRandom, amUnfold, amSlide]; + if IsWindows2K then + Include(Result, amFade); +end; + +function TTBXMenuAnimation.GetMenuAnimation: TMenuAnimation; + + function GetSysDefault: TMenuAnimation; + const + SPI_GETMENUFADE = $1012; + SysDefAni: array[Boolean] of TMenuAnimation = (maSlide, maFade); + begin + if SysParamEnabled(SPI_GETMENUANIMATION) + then Result := SysDefAni[SysParamEnabled(SPI_GETMENUFADE)] + else Result := maNone; + end; + + function GetRandom: TMenuAnimation; + var Max: Integer; + begin + Max := Ord(High(TMenuAnimation)); + if not (amFade in AvailableModes) then + Dec(Max); + Result := Succ(TMenuAnimation(Random(Max))); + end; + +begin + case AnimationMode of + amSysDefault: Result := GetSysDefault; + amRandom: Result := GetRandom; + amUnfold: Result := maUnfold; + amSlide: Result := maSlide; + amFade: Result := maFade; + else + Result := maNone; + end; +end; + +procedure TTBXMenuAnimation.SetAnimationMode(Value: TAnimationMode); +var AvailModes: TAnimationModes; +begin + AvailModes := AvailableModes; + while not (Value in AvailModes) do + Value := Pred(Value); + FAnimationMode := Value; +end; + +function TTBXMenuAnimation.SysParamEnabled(Param: Cardinal): Boolean; +var B: BOOL; +begin + Result := SystemParametersInfo(Param, 0, @B, 0) and B; +end; + +{ Work around delayed menu showing in Windows 2000+ } {vb+} +var + FixPlaySoundThreadHandle: Cardinal; + +function FixPlaySoundThreadFunc(Param: Pointer): Integer; stdcall; +begin + Sleep(250); + PlaySound(nil, 0, 0); + CloseHandle(FixPlaySoundThreadHandle); { Harakiri :~| } + Result := $4E494150; { :) } +end; + +procedure FixPlaySoundDelay; +var ThreadId: Cardinal; +begin + if (Win32Platform = VER_PLATFORM_WIN32_NT) and CheckWin32Version(5) and + (FixPlaySoundThreadHandle = 0) then + FixPlaySoundThreadHandle := CreateThread(nil, $1000, + @FixPlaySoundThreadFunc, nil, 0, ThreadId); +end; + +initialization + FixPlaySoundDelay; {vb+} + {CurrentTheme := nil;} {vb-} + RegisterTBXTheme('Default', TTBXDefaultTheme); + TBXNexus := TTBXNexus.Create('Default'); + TBXMenuAnimation := TTBXMenuAnimation.Create; {vb+} + {$IFNDEF JR_D7} {vb+} + InitAdditionalSysColors; + {$ENDIF} {vb+} + +finalization + TBXNexus.Free; + FreeAndNil(TBXMenuAnimation); {vb+} + ColorRegistry := nil; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBX.pas.orig b/official/2.1.6+2.1.beta1/TBX/TBX.pas.orig new file mode 100644 index 0000000..9a7d850 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBX.pas.orig @@ -0,0 +1,3588 @@ +unit TBX; + +// TBX Package +// Copyright 2001-2004 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// $Id: TBX.pas 21 2004-05-29 22:16:01Z Alex@ZEISS $ + +interface + +{$I TB2Ver.inc} +{$I TBX.inc} + +uses + Windows, Messages, Classes, SysUtils, Controls, Graphics, ImgList, Forms, + TB2Item, TB2Dock, TB2Toolbar, TB2ToolWindow, TB2Anim, TBXUtils, TBXThemes; + +const + TBXVersion = 2.1; + TBXVersionString = '2.1'; + TBXVersionText = 'TBX version ' + TBXVersionString; + +{ TBX Messages } +const + TBM_THEMECHANGE = WM_USER + 314; + TBM_GETVIEWTYPE = WM_USER + 237; + TBM_GETEFFECTIVECOLOR = WM_USER + 238; + +function GetViewType(View: TTBView): Integer; +function GetWinViewType(Window: TControl): Integer; +function IsFloating(ViewType: Integer): Boolean; + +type + TTextWrapping = (twNone, twEndEllipsis, twPathEllipsis, twWrap); + TTextTruncation = twNone..twPathEllipsis; + TTriState = (tsDefault, tsTrue, tsFalse); + TFontSize = 25..1000; + + TFontSettings = class(TPersistent) + private + FBold: TTriState; + FItalic: TTriState; + FUnderline: TTriState; + FStrikeOut: TTriState; + FSize: TFontSize; + FColor: TColor; + FName: TFontName; + FOnChange: TNotifyEvent; + procedure SetBold(Value: TTriState); + procedure SetColor(Value: TColor); + procedure SetItalic(Value: TTriState); + procedure SetName(const Value: TFontName); + procedure SetSize(Value: TFontSize); + procedure SetStrikeOut(Value: TTriState); + procedure SetUnderline(Value: TTriState); + protected + procedure Modified; + property OnChange: TNotifyEvent read FOnChange write FOnChange; + public + constructor Create; + procedure Apply(Font: TFont); overload; + procedure Apply(var LF: TLogFont; var FontColor: TColor); overload; + procedure Assign(Src: TPersistent); override; + function CreateTransformedFont(Src: HFont; var FontColor: TColor): HFont; + published + property Bold: TTriState read FBold write SetBold default tsDefault; + property Italic: TTriState read FItalic write SetItalic default tsDefault; + property Underline: TTriState read FUnderline write SetUnderline default tsDefault; + property StrikeOut: TTriState read FStrikeOut write SetStrikeOut default tsDefault; + property Size: TFontSize read FSize write SetSize default 100; // percent + property Color: TColor read FColor write SetColor default clNone; + property Name: TFontName read FName write SetName; // default '' + end; + + TTBXPopupPositionInfo = record + Item: TTBCustomItem; // this is a tentative type, it will be changed + ParentView: TTBView; // or removed in future versions + ParentViewer: TTBItemViewer; + PositionAsSubmenu: Boolean; + APopupPoint: TPoint; + Alignment: TTBPopupAlignment; + PopupWindow: TTBPopupWindow; + X, Y: Integer; + ParentItemRect: TRect; + AppFlags: Integer; // reserved for extensions + AppData: Integer; + end; + + TTBXThemeClass = class of TTBXTheme; + +function GetStateFlags(const ItemInfo: TTBXItemInfo): Integer; +function GetTBXTextColor(StateFlags: Integer): TColor; +procedure DrawTBXCaption(Canvas: TCanvas; Rect: TRect; const Text: string; + Format: Cardinal; StateFlags: Integer); +procedure DrawTBXImage(Canvas: TCanvas; Rect: TRect; ImageList: TCustomImageList; + ImageIndex: Integer; StateFlags: Integer); + + +type + { TTBXItem } + + TAdjustFontEvent = procedure(Item: TTBCustomItem; Viewer: TTBItemViewer; + Font: TFont; StateFlags: Integer) of object; // state flags are the combination of ISF_* constants + TDrawImageEvent = procedure(Item: TTBCustomItem; Viewer: TTBItemViewer; + Canvas: TCanvas; ImageRect: TRect; ImageOffset: TPoint; StateFlags: Integer) of object; + + TTBXCustomItem = class(TTBCustomItem) + private + FAlwaysSelectFirst: Boolean; + FFontSettings: TFontSettings; + FLayout: TTBXItemLayout; + FMinHeight: Integer; + FMinWidth: Integer; + FToolBoxPopup: Boolean; + FOnAdjustFont: TAdjustFontEvent; + FOnDrawImage: TDrawImageEvent; + procedure FontSettingsChanged(Sender: TObject); + function GetStretch: Boolean; + procedure SetFontSettings(Value: TFontSettings); + procedure SetLayout(Value: TTBXItemLayout); + procedure SetMinHeight(Value: Integer); + procedure SetMinWidth(Value: Integer); + procedure SetStretch(Value: Boolean); + protected + function CreatePopup(const ParentView: TTBView; const ParentViewer: TTBItemViewer; + const PositionAsSubmenu, SelectFirstItem, Customizing: Boolean; + const APopupPoint: TPoint; const Alignment: TTBPopupAlignment): TTBPopupWindow; override; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + procedure GetPopupPosition(ParentView: TTBView; PopupWindow: TTBPopupWindow; + var PopupPositionRec: TTBPopupPositionRec); override; + function GetPopupWindowClass: TTBPopupWindowClass; override; + property ToolBoxPopup: Boolean read FToolBoxPopup write FToolBoxPopup default False; + property OnAdjustFont: TAdjustFontEvent read FOnAdjustFont write FOnAdjustFont; + property OnDrawImage: TDrawImageEvent read FOnDrawImage write FOnDrawImage; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure Invalidate; + property AlwaysSelectFirst: Boolean read FAlwaysSelectFirst write FAlwaysSelectFirst default False; + property FontSettings: TFontSettings read FFontSettings write SetFontSettings; + property Layout: TTBXItemLayout read FLayout write SetLayout default tbxlAuto; + property MinHeight: Integer read FMinHeight write SetMinHeight default 0; + property MinWidth: Integer read FMinWidth write SetMinWidth default 0; + property Stretch: Boolean read GetStretch write SetStretch default False; + end; + + TTBXItem = class (TTBXCustomItem) + property Action; + property AutoCheck; + property Caption; + property Checked; + property DisplayMode; + property Enabled; + property FontSettings; + property GroupIndex; + property HelpContext; + property Hint; + property ImageIndex; + property Images; + property InheritOptions; + property Layout; + property MaskOptions; + property MinHeight; + property MinWidth; + property Options; + property ShortCut; + property Stretch; + property Visible; + property OnAdjustFont; + property OnDrawImage; + property OnClick; + property OnSelect; + end; + + TTBXItemViewer = class(TTBItemViewer) + private + FWide: Boolean; + protected + procedure DoPaintCaption(Canvas: TCanvas; const ClientAreaRect: TRect; + var CaptionRect: TRect; IsTextRotated: Boolean; var PaintDefault: Boolean); virtual; + function GetAccRole: Integer; override; + function GetImageSize: TSize; dynamic; + function GetItemType: Integer; virtual; + function GetTextFlags: Cardinal; dynamic; + function GetTextSize(Canvas: TCanvas; const Text: string; TextFlags: Cardinal; Rotated: Boolean; StateFlags: Integer): TSize; dynamic; + function IsToolbarSize: Boolean; override; + procedure CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); override; + procedure DrawItemImage(Canvas: TCanvas; ARect: TRect; ItemInfo: TTBXItemInfo); virtual; + procedure DoAdjustFont(AFont: TFont; StateFlags: Integer); virtual; + function GetImageShown: Boolean; virtual; + function IsPtInButtonPart(X, Y: Integer): Boolean; override; + procedure MouseUp(X, Y: Integer; MouseWasDownOnMenu: Boolean); override; + procedure Paint(const Canvas: TCanvas; const ClientAreaRect: TRect; IsHoverItem, IsPushed, UseDisabledShadow: Boolean); override; + property Wide: Boolean read FWide write FWide default True; + public + constructor Create(AView: TTBView; AItem: TTBCustomItem; AGroupLevel: Integer); override; + function IsToolbarStyle: Boolean; override; + end; + + { TTBXSubmenuItem } + + TTBXSubmenuItem = class(TTBXCustomItem) + private + function GetDropdownCombo: Boolean; + procedure SetDropdownCombo(Value: Boolean); + public + constructor Create(AOwner: TComponent); override; + published + property Action; + property AlwaysSelectFirst; + property AutoCheck; + property Caption; + property Checked; + property DisplayMode; + property DropdownCombo: Boolean read GetDropdownCombo write SetDropdownCombo default False; + property Enabled; + property FontSettings; + property GroupIndex; + property HelpContext; + property Hint; + property ImageIndex; + property Images; + property InheritOptions; + property Layout; + property LinkSubitems; + property MaskOptions; + property MinHeight; + property MinWidth; + property Options; + property ShortCut; + property Stretch; + property SubMenuImages; + property ToolBoxPopup; + property Visible; + property OnAdjustFont; + property OnDrawImage; + property OnClick; + property OnPopup; + property OnSelect; + end; + + { TTBXSeparatorItem } + + TTBXSeparatorItem = class(TTBSeparatorItem) + private + FSize: Integer; + procedure SetSize(Value: Integer); + public + constructor Create(AOwner: TComponent); override; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + published + property Size: Integer read FSize write SetSize default -1; + property MaskOptions; + property Options; + end; + + TTBXSeparatorItemViewer = class(TTBSeparatorItemViewer) + protected + procedure CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); override; + procedure Paint(const Canvas: TCanvas; const ClientAreaRect: TRect; + IsHoverItem, IsPushed, UseDisabledShadow: Boolean); override; + function IsToolbarSize: Boolean; override; + public + function IsToolbarStyle: Boolean; override; + end; + + TTBXVisibilityToggleItem = class(TTBXCustomItem) + private + FControl: TControl; + procedure SetControl (Value: TControl); + procedure UpdateProps; + protected + procedure Notification (AComponent: TComponent; Operation: TOperation); override; + public + procedure Click; override; + procedure InitiateAction; override; + published + property Caption; + property Control: TControl read FControl write SetControl; + property DisplayMode; + property Enabled; + property FontSettings; + property HelpContext; + property Hint; + property ImageIndex; + property Images; + property InheritOptions; + property Layout; + property MaskOptions; + property MinHeight; + property MinWidth; + property Options; + property ShortCut; + property Stretch; + property Visible; + property OnAdjustFont; + property OnClick; + property OnSelect; + end; + + { TTBXPopupWindow } + + TTBXPopupWindow = class(TTBPopupWindow) + private + FControlRect: TRect; + FShadows: TShadows; + procedure CMHintShow(var Message: TCMHintShow); message CM_HINTSHOW; + procedure TBMGetViewType(var Message: TMessage); message TBM_GETVIEWTYPE; + procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE; + procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT; + procedure WMPrint(var Message: TMessage); message WM_PRINT; + procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND; + procedure WMWindowPosChanged(var Message: TWMWindowPosChanged); message WM_WINDOWPOSCHANGED; + procedure WMTB2kPopupShowing(var Message: TMessage); message WM_TB2K_POPUPSHOWING; + protected + procedure CreateParams(var Params: TCreateParams); override; + procedure CreateShadow; virtual; + procedure DestroyShadow; virtual; + function GetNCSize: TPoint; override; + function GetShowShadow: Boolean; virtual; + function GetViewClass: TTBViewClass; override; + public + destructor Destroy; override; + function GetFillColor: TColor; + end; + + TTBXPopupView = class(TTBPopupView); + + { TTBXToolbarView } + + TTBXToolbarView = class(TTBToolbarView) + protected + procedure GetMargins(AOrientation: TTBViewOrientation; var Margins: TRect); override; + end; + + { TTBXToolbar } + TTBXItemTransparency = (itAuto, itEnable, itDisable); + + TTBXToolbar = class(TTBCustomToolbar) + private + FEffectiveColor: TColor; + FItemTransparency: TTBXItemTransparency; + FSnapDistance: Integer; + procedure CMColorChanged(var Message: TMessage); message CM_COLORCHANGED; + procedure CMControlChange(var Message: TCMControlChange); message CM_CONTROLCHANGE; + procedure CMParentColorChanged(var Message: TMessage); message CM_PARENTCOLORCHANGED; + procedure SetItemTransparency(const Value: TTBXItemTransparency); + procedure SetSnapDistance(Value: Integer); + procedure TBMGetViewType(var Message: TMessage); message TBM_GETVIEWTYPE; + procedure TBMGetEffectiveColor(var Message: TMessage); message TBM_GETEFFECTIVECOLOR; + procedure TBMThemeChange(var Message: TMessage); message TBM_THEMECHANGE; + procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND; + procedure WMSize(var Message: TWMSize); message WM_SIZE; + protected + procedure DrawNCArea(const DrawToDC: Boolean; const ADC: HDC; const Clip: HRGN); override; + function GetChevronItemClass: TTBChevronItemClass; override; + function GetFloatingWindowParentClass: TTBFloatingWindowParentClass; override; + procedure GetToolbarInfo(out ToolbarInfo: TTBXToolbarInfo); virtual; + function GetViewClass: TTBToolbarViewClass; override; + procedure SetParent(AParent: TWinControl); override; + procedure UpdateEffectiveColor; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function Embedded: Boolean; + function GetFloatingBorderSize: TPoint; override; + procedure UpdateChildColors; + property EffectiveColor: TColor read FEffectiveColor; + published + property ActivateParent; + property Align; + property AutoResize; + property BorderStyle; + property Caption; + property ChevronHint; + property ChevronMoveItems; + property ChevronPriorityForNewItems; + property CloseButton; + property CloseButtonWhenDocked; + property CurrentDock; + property DblClickUndock default False; + property DefaultDock; + property DockableTo; + property DockMode; + property DockPos; + property DockRow; + property DragHandleStyle; + property FloatingMode; + property Font; + property FullSize; + property HideWhenInactive; + property Images; + property Items; + property ItemTransparency: TTBXItemTransparency read FItemTransparency write SetItemTransparency default itAuto; + property LastDock; + property LinkSubitems; + property MenuBar; + property Options; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property ProcessShortCuts; + property Resizable; + property ShowCaption; + property ShowHint; + property ShrinkMode; + property SmoothDrag; + property SnapDistance: Integer read FSnapDistance write SetSnapDistance default 0; + property Stretch; + property SystemFont; + property TabOrder; + property TabStop; + property UpdateActions; + property UseLastDock; + property Visible; + property Color default clNone; + property OnClose; + property OnCloseQuery; + {$IFDEF JR_D5} + property OnContextPopup; + {$ENDIF} + property OnDragDrop; + property OnDragOver; + property OnMouseDown; + property OnMouseMove; + property OnMouseUp; + property OnMove; + property OnRecreated; + property OnRecreating; + property OnDockChanged; + property OnDockChanging; + property OnDockChangingHidden; + property OnResize; + property OnShortCut; + property OnVisibleChanged; + end; + + { TTBXChevronItem } + + TTBXChevronItem = class(TTBChevronItem) + public + procedure GetPopupPosition(ParentView: TTBView; + PopupWindow: TTBPopupWindow; var PopupPositionRec: TTBPopupPositionRec); override; + function GetPopupWindowClass: TTBPopupWindowClass; override; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + end; + + TTBXChevronItemViewer = class(TTBItemViewer) + protected + procedure Paint(const Canvas: TCanvas; const ClientAreaRect: TRect; + IsHoverItem, IsPushed, UseDisabledShadow: Boolean); override; + end; + + TTBXChevronPopupWindow = class(TTBXPopupWindow); + + { TTBXPopupMenu } + + TTBXRootItem = class(TTBRootItem) + private + FPopupControlRect: TRect; + protected + function CreatePopupEx(SelectFirstItem: Boolean; const AControlRect: TRect; + Alignment: TTBPopupAlignment): TTBPopupWindow; virtual; + function GetPopupWindowClass: TTBPopupWindowClass; override; + procedure GetPopupPosition(ParentView: TTBView; PopupWindow: TTBPopupWindow; + var PopupPositionRec: TTBPopupPositionRec); override; + procedure OpenPopupEx(const SelectFirstItem, TrackRightButton: Boolean; + const ControlRect: TRect; const Alignment: TTBPopupAlignment); + procedure PopupEx(const ControlRect: TRect; TrackRightButton: Boolean; + Alignment: TTBPopupAlignment = tbpaLeft); + end; + + TTBXPopupMenu = class(TTBPopupMenu) + private + FToolBoxPopup: Boolean; + procedure TBMGetViewType(var Message: TMessage); message TBM_GETVIEWTYPE; + protected + function GetRootItemClass: TTBRootItemClass; override; + public + procedure PopupEx(const ControlRect: TRect); + property ToolBoxPopup: Boolean read FToolBoxPopup write FToolBoxPopup default False; + end; + + TTBXFloatingWindowParent = class(TTBFloatingWindowParent) + private + FCloseButtonHover: Boolean; + FSnapDistance: Integer; + procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; + procedure WMEraseBkgnd(var Message: TMessage); message WM_ERASEBKGND; + procedure WMNCMouseLeave(var Message: TMessage); message $2A2 {WM_NCMOUSELEAVE}; + procedure WMNCMouseMove(var Message: TWMNCMouseMove); message WM_NCMOUSEMOVE; + procedure WMWindowPosChanging(var Message: TWMWindowPosChanging); message WM_WINDOWPOSCHANGING; + protected + procedure CancelNCHover; + procedure DrawNCArea(const DrawToDC: Boolean; const ADC: HDC; + const Clip: HRGN; RedrawWhat: TTBToolWindowNCRedrawWhat); override; + property CloseButtonHover: Boolean read FCloseButtonHover; + public + property SnapDistance: Integer read FSnapDistance write FSnapDistance default 0; + end; + + TTBXToolWindow = class(TTBToolWindow) + private + FEffectiveColor: TColor; + FSnapDistance: Integer; + procedure CMColorChanged(var Message: TMessage); message CM_COLORCHANGED; + procedure CMControlChange(var Message: TCMControlChange); message CM_CONTROLCHANGE; + procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED; + procedure SetSnapDistance(Value: Integer); + procedure TBMGetEffectiveColor(var Message: TMessage); message TBM_GETEFFECTIVECOLOR; + procedure TBMGetViewType(var Message: TMessage); message TBM_GETVIEWTYPE; + procedure TBMThemeChange(var Message: TMessage); message TBM_THEMECHANGE; + procedure WMEraseBkgnd(var Message: TWmEraseBkgnd); message WM_ERASEBKGND; + protected + procedure DrawNCArea(const DrawToDC: Boolean; const ADC: HDC; const Clip: HRGN); override; + function GetFloatingWindowParentClass: TTBFloatingWindowParentClass; override; + procedure GetToolbarInfo(out ToolbarInfo: TTBXToolbarInfo); virtual; + procedure SetParent(AParent: TWinControl); override; + procedure UpdateEffectiveColor; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function GetFloatingBorderSize: TPoint; override; + procedure UpdateChildColors; + property EffectiveColor: TColor read FEffectiveColor; + published + property Color default clNone; + property DblClickUndock default False; + property SnapDistance: Integer read FSnapDistance write SetSnapDistance default 0; + end; + + TTBXDock = class(TTBDock) + private + FMoving: Boolean; + FResizing: Boolean; + FUseParentBackground: Boolean; + procedure CMColorChanged(var Message: TMessage); message CM_COLORCHANGED; + procedure TBMGetEffectiveColor(var Message: TMessage); message TBM_GETEFFECTIVECOLOR; + procedure TBMThemeChange(var Message: TMessage); message TBM_THEMECHANGE; + procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND; + procedure WMMove(var Message: TWMMove); message WM_MOVE; + procedure WMSize(var Message: TWMSize); message WM_SIZE; + protected + function ThemedBackground: Boolean; virtual; + procedure DrawBackground(DC: HDC; const DrawRect: TRect); override; + procedure Resize; override; + procedure SetUseParentBackground(Value: Boolean); + function UsingBackground: Boolean; override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + published + property Color default clNone; + property UseParentBackground: Boolean read FUseParentBackground write SetUseParentBackground default False; + end; + +var + CurrentTheme: TTBXTheme; + +{$IFNDEF JR_D6} +var + clMoneyGreen: TColor = TColor($C0DCC0); + clSkyBlue: TColor = TColor($F0CAA6); + clCream: TColor = TColor($F0FBFF); + clMedGray: TColor = TColor($A4A0A0); +{$ENDIF} + +procedure TBXSetTheme(const AThemeName: string); +function TBXCurrentTheme: string; + +procedure AddThemeNotification(AObject: TObject); +procedure RemoveThemeNotification(AObject: TObject); + +{ Additional system colors } +procedure AddTBXColor(var AColor: TColor; const AName: string); +function TBXIdentToColor(const Ident: string; var Color: Longint): Boolean; +function TBXColorToString(Color: TColor): string; +function TBXStringToColor(S: string): TColor; +procedure TBXGetColorValues(Proc: TGetStrProc); + +{ Internal routines - do not use } +function GetPopupMargin(ItemViewer: TTBItemViewer): Integer; +function GetEffectiveColor(C: TControl): TColor; +procedure DrawParentBackground(Control: TControl; DC: HDC; R: TRect); +procedure AddToList(var List: TList; Item: Pointer); +procedure RemoveFromList(var List: TList; Item: Pointer); + +implementation + +{$R tbx_glyphs.res} + +uses + TBXExtItems, TBXLists, TB2Common, TBXUxThemes, MultiMon, TBXDefaultTheme, + ComCtrls, Menus; + +type + TTBItemAccess = class(TTBCustomItem); + TTBViewAccess = class(TTBView); + TTBItemViewerAccess = class(TTBItemViewer); + TTBFloatingWindowParentAccess = class(TTBFloatingWindowParent); + TTBCustomDockableWindowAccess = class(TTBCustomDockableWindow); + TTBXToolbarAccess = class(TTBXToolbar); + TTBBackgroundAccess = class(TTBBackground); + TControlAccess = class(TControl); + TTBXThemeAccess = class(TTBXTheme); + TDockAccess = class(TTBDock); + + { TTBNexus } + TTBXNexus = class + private + FNotifies: TList; + procedure TBXSysCommand(var Message: TMessage); message TBX_SYSCOMMAND; + protected + procedure Broadcast(Msg: Cardinal; WParam, LParam: Integer); + public + constructor Create(const DefaultTheme: string); + destructor Destroy; override; + procedure SetTheme(const AThemeName: string); + function GetTheme: string; + procedure AddNotifie(AObject: TObject); + procedure RemoveNotifie(AObject: TObject); + end; + +var + TBXNexus: TTBXNexus; + +procedure AddThemeNotification(AObject: TObject); +begin + TBXNexus.AddNotifie(AObject); +end; + +procedure RemoveThemeNotification(AObject: TObject); +begin + TBXNexus.RemoveNotifie(AObject); +end; + +function GetEffectiveColor(C: TControl): TColor; +var + Message: TMessage; +begin + if C = nil then Result := clBtnFace + else + begin + Message.Msg := TBM_GETEFFECTIVECOLOR; + Message.WParam := 0; + Message.LParam := 0; + Message.Result := 0; + C.Dispatch(Message); + if Message.Result <> 0 then Result := Message.WParam + else if (C is TForm) and (TForm(C).FormStyle = fsMDIForm) then + Result := clBtnFace + else + Result := TControlAccess(C).Color; + end; +end; + +procedure DrawParentBackground(Control: TControl; DC: HDC; R: TRect); +var + Parent: TWinControl; + Theme: HTHEME; + R2: TRect; + Shift: TPoint; + UsingThemes: Boolean; + Msg: TMessage; +begin + Parent := Control.Parent; + if Parent = nil then FillRectEx(DC, R, clBtnFace) + else + begin + Shift.X := 0; Shift.Y := 0; + Shift := Parent.ScreenToClient(Control.ClientToScreen(Shift)); + SaveDC(DC); + try + SetWindowOrgEx(DC, Shift.X, Shift.Y, nil); + Msg.Msg := WM_ERASEBKGND; + Msg.WParam := DC; + Msg.LParam := DC; + Msg.Result := 0; + Parent.Dispatch(Msg); + finally + RestoreDC(DC, -1); + end; + + if Msg.Result <> 0 then Exit; + + UsingThemes := USE_THEMES and not (csDesigning in Control.ComponentState); + if Parent is TTBDock then + begin + SaveDC(DC); + SetWindowOrgEx(DC, Control.Left, Control.Top, nil); + TDockAccess(Parent).DrawBackground(DC, R); + RestoreDC(DC, -1); + end + else if not UsingThemes then + FillRectEx(DC, R, GetEffectiveColor(Parent)) + else + begin + { Unfortunately, DrawThemeParentBackground does seem to have some problems + with the back buffer. Therefore some sort of workaround is used which + will work for tab sheets } + // if Control is TWinControl then + // DrawThemeParentBackground(TWinControl(Control).Handle, DC, @R); + + if Parent is TTabSheet then + begin + Theme := OpenThemeData(Parent.Handle, 'TAB'); + R2 := Parent.ClientRect; + R2.TopLeft := Control.ScreenToClient(Parent.ClientToScreen(R2.TopLeft)); + R2.BottomRight := Control.ScreenToClient(Parent.ClientToScreen(R2.BottomRight)); + DrawThemeBackground(Theme, DC, TABP_BODY, 0, R2, @R); + CloseThemeData(Theme); + end + else FillRectEx(DC, R, GetEffectiveColor(Parent)); + end; + end; +end; + +function GetViewType(View: TTBView): Integer; +var + Message: TMessage; +begin + Result := VT_UNKNOWN; + if (View <> nil) and (View.Owner <> nil) then + begin + Message.Msg := TBM_GETVIEWTYPE; + Message.WParam := 0; + Message.LParam := 0; + Message.Result := VT_UNKNOWN; + View.Window.Dispatch(Message); + Result := Message.Result; + end; +end; + +function GetWinViewType(Window: TControl): Integer; +var + Message: TMessage; +begin + Result := VT_UNKNOWN; + if Window <> nil then + begin + Message.Msg := TBM_GETVIEWTYPE; + Message.WParam := 0; + Message.LParam := 0; + Message.Result := VT_UNKNOWN; + Window.Dispatch(Message); + Result := Message.Result; + end; +end; + +function IsFloating(ViewType: Integer): Boolean; +begin + Result := ViewType and TVT_FLOATING <> 0; +end; + +procedure UpdateNCArea(Control: TWinControl; ViewType: Integer); +begin + with Control do + begin + ClientWidth := ClientWidth; + ClientHeight := ClientHeight; + end; + SetWindowPos(Control.Handle, 0, 0, 0, 0, 0, + SWP_FRAMECHANGED or SWP_NOACTIVATE or SWP_NOZORDER or SWP_NOMOVE or SWP_NOSIZE); + Control.Invalidate; +end; + +function GetPopupMargin(ItemViewer: TTBItemViewer): Integer; +var + ImgList: TCustomImageList; + Sz: TSize; + TextMetric: TTextMetric; + H, M2: Integer; + Margins: TTBXMargins; +begin + Sz.Cx := 0; + Sz.Cy := 0; + if ItemViewer is TTBXItemViewer then + Sz := TTBXItemViewer(ItemViewer).GetImageSize; + if (Sz.Cx = 0) or (Sz.Cy = 0) then + begin + ImgList := TTBItemViewerAccess(ItemViewer).GetImageList; + if ImgList <> nil then + begin + Sz.Cx := ImgList.Width; + Sz.Cy := ImgList.Height; + end; + if (Sz.Cx = 0) or (Sz.Cy = 0) then + begin + Sz.Cx := 16; + Sz.Cy := 16; + end; + end; + StockBitmap1.Canvas.Font := TTBViewAccess(ItemViewer.View).GetFont; + GetTextMetrics(StockBitmap1.Canvas.Handle, TextMetric); + + CurrentTheme.GetMargins(MID_MENUITEM, Margins); + M2 := Margins.TopHeight + Margins.BottomHeight; + Result := TextMetric.tmHeight + TextMetric.tmExternalLeading + M2; + H := Sz.CY + M2; + if H > Result then Result := H; + Result := (Sz.Cx + M2) * Result div H; +end; + +procedure GetOfficeXPPopupPosition1(var PopupPositionRec: TTBPopupPositionRec); +begin + with PopupPositionRec do + begin + if not PositionAsSubmenu then + begin + NCSizeX := 0; + NCSizeY := 0; + Dec(ParentItemRect.Right); + if X = ParentItemRect.Right + 1 then Dec(X); + if X + W <= ParentItemRect.Left then Inc(X); + Dec(ParentItemRect.Bottom); + if Y = ParentItemRect.Bottom + 1 then Dec(Y); + if Y + H <= ParentItemRect.Top then Inc(Y); + Dec(W); + Dec(H); + end + else + begin + Inc(X, NCSizeX); + Inc(Y, NCSizeY); + NCSizeX := 0; + NCSizeY := 0; + end; + end; +end; + +procedure GetOfficeXPPopupPosition2(var PopupPositionRec: TTBPopupPositionRec); +begin + with PopupPositionRec do if not PositionAsSubmenu then + begin + Inc(W); + Inc(H); + end; +end; + +procedure AddToList(var List: TList; Item: Pointer); +begin + if List = nil then List := TList.Create; + List.Add(Item) +end; + + +procedure RemoveFromList(var List: TList; Item: Pointer); +begin + if List <> nil then + begin + List.Remove(Item); + if List.Count = 0 then + begin + List.Free; + List := nil; + end; + end; +end; + +//============================================================================// + +{ Misc. Routines } + +procedure InvalidateAll(const Ctl: TWinControl); +begin + if Ctl.HandleAllocated then + RedrawWindow(Ctl.Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or + RDW_ERASE); +end; + +function GetStateFlags(const ItemInfo: TTBXItemInfo): Integer; +const + CEnabledStates: array [Boolean] of Integer = (ISF_DISABLED, 0); + CHotStates: array [Boolean] of Integer = (0, ISF_HOT); + CPushedStates: array [Boolean] of Integer = (0, ISF_PUSHED); + CSelectedStates: array [Boolean] of Integer = (0, ISF_SELECTED); +begin + with ItemInfo do + Result := CEnabledStates[ItemInfo.Enabled] or CPushedStates[ItemInfo.Pushed] or + CHotStates[ItemInfo.HoverKind = hkMouseHover] or CSelectedStates[ItemInfo.Selected]; +end; + +function GetTBXTextColor(StateFlags: Integer): TColor; +const + HoverKinds: array [Boolean] of TTBXHoverKind = (hkNone, hkMouseHover); +var + ItemInfo: TTBXItemInfo; +begin + FillChar(ItemInfo, SizeOf(ItemInfo), 0); + case StateFlags and ISF_LOCATIONMASK of + ISF_TOOLBARCOLOR: + begin + ItemInfo.ViewType := VT_TOOLBAR; + ItemInfo.ItemOptions := IO_TOOLBARSTYLE; + end; + ISF_MENUCOLOR: + begin + ItemInfo.ViewType := VT_DOCKPANEL; + end; + ISF_STATUSCOLOR: + begin + ItemInfo.ViewType := VT_STATUSBAR; + end; + else + ItemInfo.ViewType := VT_UNKNOWN; + end; + ItemInfo.Enabled := StateFlags and ISF_DISABLED = 0; + ItemInfo.Pushed := StateFlags and ISF_PUSHED <> 0; + ItemInfo.HoverKind := HoverKinds[StateFlags and ISF_HOT <> 0]; + ItemInfo.Selected := StateFlags and ISF_SELECTED <> 0; + Result := CurrentTheme.GetItemTextColor(ItemInfo); +end; + +procedure DrawTBXCaption(Canvas: TCanvas; Rect: TRect; const Text: string; Format: Cardinal; StateFlags: Integer); +const + HoverKinds: array [Boolean] of TTBXHoverKind = (hkNone, hkMouseHover); +var + ItemInfo: TTBXItemInfo; +begin + FillChar(ItemInfo, SizeOf(ItemInfo), 0); + case StateFlags and ISF_LOCATIONMASK of + ISF_TOOLBARCOLOR: + begin + ItemInfo.ViewType := VT_TOOLBAR; + ItemInfo.ItemOptions := IO_TOOLBARSTYLE; + end; + ISF_MENUCOLOR: + begin + ItemInfo.ViewType := VT_DOCKPANEL; + end; + ISF_STATUSCOLOR: + begin + ItemInfo.ViewType := VT_STATUSBAR; + end; + end; + ItemInfo.Enabled := StateFlags and ISF_DISABLED = 0; + ItemInfo.Pushed := StateFlags and ISF_PUSHED <> 0; + ItemInfo.HoverKind := HoverKinds[StateFlags and ISF_HOT <> 0]; + ItemInfo.Selected := StateFlags and ISF_SELECTED <> 0; + CurrentTheme.PaintCaption(Canvas, Rect, ItemInfo, Text, Format, False); +end; + +procedure DrawTBXImage(Canvas: TCanvas; Rect: TRect; ImageList: TCustomImageList; + ImageIndex: Integer; StateFlags: Integer); +const + HoverKinds: array [Boolean] of TTBXHoverKind = (hkNone, hkMouseHover); +var + ItemInfo: TTBXItemInfo; +begin + FillChar(ItemInfo, SizeOf(ItemInfo), 0); + case StateFlags and ISF_LOCATIONMASK of + ISF_TOOLBARCOLOR: + begin + ItemInfo.ViewType := VT_TOOLBAR; + ItemInfo.ItemOptions := IO_TOOLBARSTYLE; + end; + ISF_MENUCOLOR: + begin + ItemInfo.ViewType := VT_DOCKPANEL; + end; + ISF_STATUSCOLOR: + begin + ItemInfo.ViewType := VT_STATUSBAR; + end; + end; + ItemInfo.Enabled := not Boolean(StateFlags and ISF_DISABLED); + ItemInfo.Pushed := Boolean(StateFlags and ISF_PUSHED); + ItemInfo.HoverKind := HoverKinds[Boolean(StateFlags and ISF_HOT)]; + ItemInfo.Selected := Boolean(StateFlags and ISF_SELECTED); + CurrentTheme.PaintImage(Canvas, Rect, ItemInfo, ImageList, ImageIndex); +end; + +//============================================================================// + +{ TFontSettings } + +procedure TFontSettings.Apply(Font: TFont); +var + FS: TFontStyles; +begin + if Size <> 100 then Font.Size := (Font.Size * FSize + 50) div 100; + if Color <> clNone then Font.Color := Color; + if Name <> '' then Font.Name := Name; + FS := Font.Style; + if Bold = tsTrue then Include(FS, fsBold) + else if Bold = tsFalse then Exclude(FS, fsBold); + if Italic = tsTrue then Include(FS, fsItalic) + else if Italic = tsFalse then Exclude(FS, fsItalic); + if Underline = tsTrue then Include(FS, fsUnderline) + else if Underline = tsFalse then Exclude(FS, fsUnderline); + if StrikeOut = tsTrue then Include(FS, fsStrikeOut) + else if StrikeOut = tsFalse then Exclude(FS, fsStrikeOut); + Font.Style := FS; +end; + +procedure TFontSettings.Apply(var LF: TLogFont; var FontColor: TColor); +begin + if Size <> 100 then LF.lfHeight := (LF.lfHeight * Size + 50) div 100; + if Color <> clNone then FontColor := Color; + if Name <> '' then StrPLCopy(LF.lfFaceName, Name, 31); + if Bold = tsTrue then LF.lfWeight := FW_BOLD + else if Bold = tsFalse then LF.lfWeight := FW_NORMAL; + if Italic = tsTrue then LF.lfItalic := 1 + else if Italic = tsFalse then LF.lfItalic := 0; + if Underline = tsTrue then LF.lfUnderline := 1 + else if Underline = tsFalse then LF.lfUnderline := 0; + if StrikeOut = tsTrue then LF.lfStrikeOut := 1 + else if StrikeOut = tsFalse then LF.lfStrikeOut := 0; +end; + +procedure TFontSettings.Assign(Src: TPersistent); +var + F: TFontSettings; +begin + if Src is TPersistent then + begin + F := TFontSettings(Src); + if (FBold <> F.Bold) or (FItalic <> F.Italic) or (FUnderline <> F.Underline) or + (FStrikeOut <> F.StrikeOut) or (FSize <> F.Size) or (FColor <> F.Color) or + (FName <> F.Name) then + begin + FBold := F.Bold; + FItalic := F.Italic; + FUnderline := F.Underline; + FStrikeOut := F.StrikeOut; + FSize := F.Size; + FColor := F.Color; + FName := F.Name; + Modified; + end; + end + else inherited; +end; + +constructor TFontSettings.Create; +begin + FSize := 100; + FColor := clNone; +end; + +function TFontSettings.CreateTransformedFont(Src: HFont; var FontColor: TColor): HFont; +var + LF: TLogFont; +begin + GetObject(Src, SizeOf(LF), @LF); + Apply(LF, FontColor); + Result := CreateFontIndirect(LF); +end; + +procedure TFontSettings.Modified; +begin + if Assigned(FOnChange) then FOnChange(Self); +end; + +procedure TFontSettings.SetBold(Value: TTriState); +begin + if FBold <> Value then + begin + FBold := Value; + Modified; + end; +end; + +procedure TFontSettings.SetColor(Value: TColor); +begin + if FColor <> Value then + begin + FColor := Value; + Modified; + end; +end; + +procedure TFontSettings.SetItalic(Value: TTriState); +begin + if FItalic <> Value then + begin + FItalic := Value; + Modified; + end; +end; + +procedure TFontSettings.SetName(const Value: TFontName); +begin + if FName <> Value then + begin + FName := Value; + Modified; + end; +end; + +procedure TFontSettings.SetSize(Value: TFontSize); +begin + if FSize <> Value then + begin + FSize := Value; + Modified; + end; +end; + +procedure TFontSettings.SetStrikeOut(Value: TTriState); +begin + if FStrikeOut <> Value then + begin + FStrikeOut := Value; + Modified; + end; +end; + +procedure TFontSettings.SetUnderline(Value: TTriState); +begin + if FUnderline <> Value then + begin + FUnderline := Value; + Modified; + end; +end; + +//============================================================================// + +{ TTBXCustomItem } + +constructor TTBXCustomItem.Create(AOwner: TComponent); +begin + inherited; + FFontSettings := TFontSettings.Create; + FFontSettings.OnChange := FontSettingsChanged; +end; + +function TTBXCustomItem.CreatePopup(const ParentView: TTBView; + const ParentViewer: TTBItemViewer; const PositionAsSubmenu, + SelectFirstItem, Customizing: Boolean; const APopupPoint: TPoint; + const Alignment: TTBPopupAlignment): TTBPopupWindow; +var + DoSelectFirstItem: Boolean; +begin + if AlwaysSelectFirst then DoSelectFirstItem := True + else DoSelectFirstItem := SelectFirstItem; + Result := inherited CreatePopup(ParentView, ParentViewer, PositionAsSubmenu, + DoSelectFirstItem, Customizing, APopupPoint, Alignment); +end; + +destructor TTBXCustomItem.Destroy; +begin + FFontSettings.Free; + inherited; +end; + +procedure TTBXCustomItem.FontSettingsChanged(Sender: TObject); +begin + Change(True); +end; + +function TTBXCustomItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBXItemViewer; +end; + +procedure TTBXCustomItem.GetPopupPosition(ParentView: TTBView; + PopupWindow: TTBPopupWindow; var PopupPositionRec: TTBPopupPositionRec); +var + VT: Integer; +begin + if CurrentTheme.OfficeXPPopupAlignment then with PopupPositionRec do + begin + GetOfficeXPPopupPosition1(PopupPositionRec); + inherited GetPopupPosition(ParentView, PopupWindow, PopupPositionRec); + GetOfficeXPPopupPosition2(PopupPositionRec); + VT := GetWinViewType(PopupWindow); + PopupPositionRec.PlaySound := not (VT and PVT_LISTBOX = PVT_LISTBOX); + end + else inherited; +end; + +function TTBXCustomItem.GetPopupWindowClass: TTBPopupWindowClass; +begin + Result := TTBXPopupWindow; +end; + +function TTBXCustomItem.GetStretch: Boolean; +begin + Result := tbisStretch in ItemStyle; +end; + +procedure TTBXCustomItem.Invalidate; +begin + Change(False); +end; + +procedure TTBXCustomItem.SetFontSettings(Value: TFontSettings); +begin + FFontSettings.Assign(Value); +end; + +procedure TTBXCustomItem.SetLayout(Value: TTBXItemLayout); +begin + if Value <> FLayout then + begin + FLayout := Value; + Change(True); + end; +end; + +procedure TTBXCustomItem.SetMinHeight(Value: Integer); +begin + if Value <> FMinHeight then + begin + FMinHeight := Value; + Change(True); + end; +end; + +procedure TTBXCustomItem.SetMinWidth(Value: Integer); +begin + if Value <> FMinWidth then + begin + FMinWidth := Value; + Change(True); + end; +end; + +procedure TTBXCustomItem.SetStretch(Value: Boolean); +begin + if Value xor (tbisStretch in ItemStyle) then + begin + if Value then ItemStyle := ItemStyle + [tbisStretch] + else ItemStyle := ItemStyle - [tbisStretch]; + Change(True); + end; +end; + + +//============================================================================// + +{ TTBXItemViewer } + +procedure TTBXItemViewer.CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); +const + CMarginIDs: array [Boolean] of Integer = (MID_MENUITEM, MID_TOOLBARITEM); + CStartSize: array [Boolean] of Integer = (0, 6); +var + W, H: Integer; + ImgSize: TSize; + Item: TTBCustomItem; + ItemLayout, SaveLayout: TTBXItemLayout; + IsCaptionShown: Boolean; + IsTextRotated: Boolean; + ToolbarStyle: Boolean; + S: string; + TextFlags: Cardinal; + TextMetric: TTextMetric; + TextSize: TSize; + Margins: TTBXMargins; +begin + Item := TTBCustomItem(Self.Item); + ToolbarStyle := IsToolbarStyle; + ImgSize := GetImageSize; + if (ImgSize.CX <= 0) or (ImgSize.CY <= 0) then + begin + ImgSize.CX := 0; + ImgSize.CY := 0; + end; + + if Item is TTBXCustomItem then ItemLayout := TTBXCustomItem(Item).Layout + else ItemLayout := tbxlAuto; + SaveLayout := ItemLayout; + if ItemLayout = tbxlAuto then + begin + if tboImageAboveCaption in Item.EffectiveOptions then ItemLayout := tbxlGlyphTop + else + begin + if View.Orientation <> tbvoVertical then ItemLayout := tbxlGlyphLeft + else ItemLayout := tbxlGlyphTop; + end; + end; + + { Setup font } + TextFlags := 0; + IsCaptionShown := CaptionShown; + IsTextRotated := (View.Orientation = tbvoVertical) and ToolbarStyle; + if IsCaptionShown then + begin + S := GetCaptionText; + if not (SaveLayout = tbxlAuto) or (tboImageAboveCaption in Item.EffectiveOptions) then IsTextRotated := False; + if IsTextRotated or not ToolbarStyle then TextFlags := DT_SINGLELINE; + TextSize := GetTextSize(Canvas, S, TextFlags, IsTextRotated, 0); + end + else + begin + SetLength(S, 0); + TextSize.CX := 0; + TextSize.CY := 0; + IsTextRotated := False; + end; + + { Measure size } + if ToolbarStyle then + begin + AWidth := 6; + AHeight := 6; + + if CaptionShown then + begin + Inc(AWidth, TextSize.CX); + Inc(AHeight, TextSize.CY); + if not IsTextRotated then Inc(AWidth, 4) + else Inc(AHeight, 4); + end; + + if GetImageShown and (ImgSize.CX > 0) and (ImgSize.CY > 0) then + begin + if ItemLayout = tbxlGlyphLeft then + begin + Inc(AWidth, ImgSize.CX); + if Wide then Inc(AWidth); + if AHeight < ImgSize.CY + 6 then AHeight := ImgSize.CY + 6; + end + else + begin + Inc(AHeight, ImgSize.CY); + if AWidth < ImgSize.CX + 7 then AWidth := ImgSize.CX + 7; + end; + end; + + if tbisSubmenu in TTBItemAccess(Item).ItemStyle then with CurrentTheme do + begin + if tbisCombo in TTBItemAccess(Item).ItemStyle then Inc(AWidth, SplitBtnArrowWidth) + else if tboDropdownArrow in Item.EffectiveOptions then + begin + if (ItemLayout <> tbxlGlyphTop) or (ImgSize.CX = 0) or IsTextRotated then + begin + if View.Orientation <> tbvoVertical then Inc(AWidth, DropdownArrowWidth) + else Inc(AHeight, DropdownArrowWidth); + end + else + begin + if (ItemLayout = tbxlGlyphTop) and (IsTextRotated xor (View.Orientation <> tbvoVertical)) then + begin + W := ImgSize.CX + DropDownArrowWidth + 2; + if W > AWidth - 7 then AWidth := W + 7; + end + else + begin + H := ImgSize.CY + DropDownArrowWidth + 2; + if H > AHeight - 7 then AHeight := H + 7; + end; + end + end; + end; + end + else // Not a ToolbarStyle + with CurrentTheme do + begin + GetTextMetrics(Canvas.Handle, TextMetric); + Inc(TextSize.CY, TextMetric.tmExternalLeading); + + AWidth := TextSize.CX; + AHeight := TextSize.CY; + + if ImgSize.CY = 0 then ImgSize.CY := 16; + if AHeight < ImgSize.CY then AHeight := ImgSize.CY; + + GetMargins(MID_MENUITEM, Margins); + Inc(AWidth, Margins.LeftWidth + Margins.RightWidth); + Inc(AHeight, Margins.TopHeight + Margins.BottomHeight); + + Inc(AWidth, GetPopupMargin(Self) + MenuImageTextSpace + MenuLeftCaptionMargin + MenuRightCaptionMargin); + S := Item.GetShortCutText; + if Length(S) > 0 then Inc(AWidth, (AHeight - 6) + GetTextWidth(Canvas.Handle, S, True)); + Inc(AWidth, AHeight); { Note: maybe this should be controlled by the theme } + end; + + if Item is TTBXCustomItem then with TTBXCustomItem(Item) do + begin + if AWidth < MinWidth then AWidth := MinWidth; + if AHeight < MinHeight then AHeight := MinHeight; + end; +end; + +constructor TTBXItemViewer.Create(AView: TTBView; AItem: TTBCustomItem; AGroupLevel: Integer); +begin + inherited; + FWide := True; +end; + +procedure TTBXItemViewer.DoAdjustFont(AFont: TFont; StateFlags: Integer); +begin + if tboDefault in Item.EffectiveOptions then with AFont do Style := Style + [fsBold]; + if Item is TTBXCustomItem then + with TTBXCustomItem(Item) do + begin + FontSettings.Apply(AFont); + if Assigned(FOnAdjustFont) then FOnAdjustFont(Item, Self, AFont, StateFlags); + end + else if Item is TTBXEditItem then + with TTBXEditItem(Item) do + begin + FontSettings.Apply(AFont); + end; +end; + +procedure TTBXItemViewer.DoPaintCaption(Canvas: TCanvas; const ClientAreaRect: TRect; + var CaptionRect: TRect; IsTextRotated: Boolean; var PaintDefault: Boolean); +begin + // do nothing +end; + +procedure TTBXItemViewer.DrawItemImage(Canvas: TCanvas; ARect: TRect; ItemInfo: TTBXItemInfo); +var + ImgList: TCustomImageList; + I: TTBXCustomItem; +begin + ImgList := GetImageList; + if (ImgList <> nil) and (Item.ImageIndex >= 0) and (Item.ImageIndex < ImgList.Count) then + begin + CurrentTheme.PaintImage(Canvas, ARect, ItemInfo, ImgList, Item.ImageIndex); + if Item is TTBXCustomItem then + begin + I := TTBXCustomItem(Item); + if Assigned(I.FOnDrawImage) then + I.FOnDrawImage(I, Self, Canvas, ARect, + CurrentTheme.GetImageOffset(Canvas, ItemInfo, ImgList), + GetStateFlags(ItemInfo)); + end; + end; +end; + +function TTBXItemViewer.GetAccRole: Integer; +{ Returns the MSAA "role" of the viewer. } +const + { Constants from OleAcc.h } + ROLE_SYSTEM_BUTTONDROPDOWNGRID = $3A; +begin + Result := inherited GetAccRole; + if (Item is TTBXCustomItem) and TTBXCustomItem(Item).ToolBoxPopup and + (tbisSubmenu in TTBXCustomItem(Item).ItemStyle) then + Result := ROLE_SYSTEM_BUTTONDROPDOWNGRID; +end; + +function TTBXItemViewer.GetImageShown: Boolean; +begin + Result := (Item.ImageIndex >= 0) and + ((Item.DisplayMode in [nbdmDefault, nbdmImageAndText]) or + (IsToolbarStyle and (Item.DisplayMode = nbdmTextOnlyInMenus))); +end; + +function TTBXItemViewer.GetImageSize: TSize; +var + ImgList: TCustomImageList; +begin + ImgList := GetImageList; + with Result do if ImgList <> nil then + begin + CX := ImgList.Width; + CY := ImgList.Height; + end + else + begin + CX := 0; + CY := 0; + end; +end; + +function TTBXItemViewer.GetItemType: Integer; +begin + if IsToolbarStyle then Result := IT_TOOLBARBUTTON + else Result := IT_MENUITEM; +end; + +function TTBXItemViewer.GetTextFlags: Cardinal; +begin + Result := 0; + if not AreKeyboardCuesEnabled and (vsUseHiddenAccels in View.Style) and + not (vsShowAccels in View.State) then Result := DT_HIDEPREFIX; +end; + +function TTBXItemViewer.GetTextSize(Canvas: TCanvas; const Text: string; + TextFlags: Cardinal; Rotated: Boolean; StateFlags: Integer): TSize; +var + DC: HDC; + R: TRect; + RotatedFont, SaveFont: HFONT; + TextMetric: TTextMetric; +begin + { note: rotated font size is consistent only for single-line captions! } + if Length(Text) = 0 then with Result do + begin + CX := 0; + CY := 0; + Exit; + end; + + { Select proper font } + Canvas.Font := TTBViewAccess(View).GetFont; + DoAdjustFont(Canvas.Font, StateFlags); + + if not Rotated then with R, Result do + begin + Left := 0; Right := 1; + Top := 0; Bottom := 0; + DrawText(Canvas.Handle, PChar(Text), Length(Text), R, TextFlags or DT_CALCRECT); + CX := Right; + CY := Bottom; + end + else + begin + DC := Canvas.Handle; + RotatedFont := CreateRotatedFont(DC); + SaveFont := SelectObject(DC, RotatedFont); + GetTextMetrics(DC, TextMetric); + Result.CX := TextMetric.tmHeight; + Result.CY := GetTextWidth(DC, Text, True); + SelectObject(DC, SaveFont); + DeleteObject(RotatedFont); + end; +end; + +function TTBXItemViewer.IsPtInButtonPart(X, Y: Integer): Boolean; +var + W: Integer; +begin + Result := not (tbisSubmenu in TTBItemAccess(Item).ItemStyle); + if (tbisCombo in TTBItemAccess(Item).ItemStyle) then + begin + if IsToolbarStyle then W := CurrentTheme.SplitBtnArrowWidth + else W := GetSystemMetrics(SM_CXMENUCHECK); + Result := X < (BoundsRect.Right - BoundsRect.Left) - W; + end; +end; + +function TTBXItemViewer.IsToolbarSize: Boolean; +begin + Result := inherited IsToolbarSize; + Result := Result or ((GetViewType(View) and PVT_TOOLBOX) = PVT_TOOLBOX); +end; + +function TTBXItemViewer.IsToolbarStyle: Boolean; +begin + Result := inherited IsToolbarStyle; + Result := Result or ((GetViewType(View) and PVT_TOOLBOX) = PVT_TOOLBOX); +end; + +procedure TTBXItemViewer.MouseUp(X, Y: Integer; MouseWasDownOnMenu: Boolean); +begin + inherited; + { Force the item to behave as a 'normal' menu item + That is make it respond to mouse as an item with IsToolbarStyle = False } + if Item.Enabled and not ((tbisSubmenu in TTBItemAccess(Item).ItemStyle) and + not IsPtInButtonPart(X, Y)) then + begin + if View.MouseOverSelected then + begin + Execute(True); + end; + end; +end; + +procedure TTBXItemViewer.Paint(const Canvas: TCanvas; + const ClientAreaRect: TRect; IsHoverItem, IsPushed, UseDisabledShadow: Boolean); +const + CToolbarStyle: array [Boolean] of Integer = (0, IO_TOOLBARSTYLE); + CCombo: array [Boolean] of Integer = (0, IO_COMBO); + CSubmenuItem: array [Boolean] of Integer = (0, IO_SUBMENUITEM); + CDesigning: array [Boolean] of Integer = (0, IO_DESIGNING); + CAppActive: array [Boolean] of Integer = (0, IO_APPACTIVE); +var + Item: TTBXCustomItem; + View: TTBViewAccess; + ItemInfo: TTBXItemInfo; + + M: Integer; + R: TRect; + ComboRect: TRect; + CaptionRect: TRect; + ImageRect: TRect; + C: TColor; + + ToolbarStyle: Boolean; + HasArrow: Boolean; + IsSplit: Boolean; + ImageIsShown: Boolean; + ImageOrCheckShown: Boolean; + ImgAndArrowWidth: Integer; + ImgSize: TSize; + IsComboPushed: Boolean; + IsCaptionShown: Boolean; + IsTextRotated: Boolean; + ItemLayout: TTBXItemLayout; + PaintDefault: Boolean; + S: string; + StateFlags: Integer; + IsSpecialDropDown: Boolean; + TextFlags: Cardinal; + TextMetrics: TTextMetric; + TextSize: TSize; + Margins: TTBXMargins; +begin + Item := TTBXCustomItem(Self.Item); + View := TTBViewAccess(Self.View); + + ToolbarStyle := IsToolbarStyle; + IsSplit := tbisCombo in Item.ItemStyle; + IsComboPushed := IsSplit and IsPushed and not View.Capture; + if IsComboPushed then IsPushed := False; + + if GetImageShown then + begin + ImgSize := GetImageSize; + with ImgSize do if (CX <= 0) or (CY <= 0) then + begin + CX := 0; + CY := 0; + ImageIsShown := False; + end + else ImageIsShown := True; + end + else + begin + ImgSize.CX := 0; + ImgSize.CY := 0; + ImageIsShown := False; + end; + IsSplit := tbisCombo in Item.ItemStyle; + + FillChar(ItemInfo, SizeOf(ItemInfo), 0); + ItemInfo.ViewType := GetViewType(View); + ItemInfo.ItemOptions := CToolbarStyle[ToolbarStyle] or CCombo[IsSplit] or + CDesigning[csDesigning in Item.ComponentState] or CSubmenuItem[tbisSubmenu in Item.ItemStyle] or + CAppActive[Application.Active]; + ItemInfo.Enabled := Item.Enabled or View.Customizing; + ItemInfo.Pushed := IsPushed; + ItemInfo.Selected := Item.Checked; + ItemInfo.ImageShown := ImageIsShown; + ItemInfo.ImageWidth := ImgSize.CX; + ItemInfo.ImageHeight := ImgSize.CY; + if IsHoverItem then + begin + if not ItemInfo.Enabled and not View.MouseOverSelected then ItemInfo.HoverKind := hkKeyboardHover + else if ItemInfo.Enabled then ItemInfo.HoverKind := hkMouseHover; + end + else ItemInfo.HoverKind := hkNone; + ItemInfo.IsPopupParent := ToolbarStyle and + (((vsModal in View.State) and Assigned(View.OpenViewer)) or (tbisSubmenu in Item.ItemStyle)) and + ((IsSplit and IsComboPushed) or (not IsSplit and IsPushed)); + ItemInfo.IsVertical := (View.Orientation = tbvoVertical) and not IsSplit; + ItemInfo.PopupMargin := GetPopupMargin(Self); + + ItemLayout := Item.Layout; + if ItemLayout = tbxlAuto then + begin + if tboImageAboveCaption in Item.EffectiveOptions then ItemLayout := tbxlGlyphTop + else if View.Orientation <> tbvoVertical then ItemLayout := tbxlGlyphLeft + else ItemLayout := tbxlGlyphTop; + end; + + HasArrow := (tbisSubmenu in Item.ItemStyle) and + ((tbisCombo in Item.ItemStyle) or (tboDropdownArrow in Item.EffectiveOptions)); + + if GetImageShown then + begin + ImgSize := GetImageSize; + with ImgSize do if (CX <= 0) or (CY <= 0) then + begin + CX := 0; + CY := 0; + ImageIsShown := False; + end + else ImageIsShown := True; + end + else + begin + ImgSize.CX := 0; + ImgSize.CY := 0; + ImageIsShown := False; + end; + ImageOrCheckShown := ImageIsShown or (not ToolbarStyle and Item.Checked); + + StateFlags := GetStateFlags(ItemInfo); + + Canvas.Font := TTBViewAccess(View).GetFont; + Canvas.Font.Color := CurrentTheme.GetItemTextColor(ItemInfo); + DoAdjustFont(Canvas.Font, StateFlags); + C := Canvas.Font.Color; + + { Setup font } + TextFlags := GetTextFlags; + IsCaptionShown := CaptionShown; + IsTextRotated := (View.Orientation = tbvoVertical) and ToolbarStyle; + if IsCaptionShown then + begin + S := GetCaptionText; + if (Item.Layout <> tbxlAuto) or (tboImageAboveCaption in Item.EffectiveOptions) then + IsTextRotated := False; + if IsTextRotated or not ToolbarStyle then TextFlags := TextFlags or DT_SINGLELINE; + TextSize := GetTextSize(Canvas, S, TextFlags, IsTextRotated, StateFlags); + end + else + begin + StateFlags := 0; + SetLength(S, 0); + IsTextRotated := False; + TextSize.CX := 0; + TextSize.CY := 0; + end; + + IsSpecialDropDown := HasArrow and not IsSplit and ToolbarStyle and + ((Item.Layout = tbxlGlyphTop) or (Item.Layout = tbxlAuto) and (tboImageAboveCaption in Item.EffectiveOptions)) and + (ImgSize.CX > 0) and not (IsTextRotated) and (TextSize.CX > 0); + + { Border & Arrows } + R := ClientAreaRect; + with CurrentTheme do if ToolbarStyle then + begin + GetMargins(MID_TOOLBARITEM, Margins); + if HasArrow then with R do + begin + ItemInfo.ComboPart := cpCombo; + if IsSplit then + begin + ItemInfo.ComboPart := cpSplitLeft; + ComboRect := R; + Dec(Right, SplitBtnArrowWidth); + ComboRect.Left := Right; + end + else if not IsSpecialDropDown then + begin + if View.Orientation <> tbvoVertical then + ComboRect := Rect(Right - DropdownArrowWidth - DropdownArrowMargin, 0, + Right - DropdownArrowMargin, Bottom) + else + ComboRect := Rect(0, Bottom - DropdownArrowWidth - DropdownArrowMargin, + Right, Bottom - DropdownArrowMargin); + end + else + begin + ImgAndArrowWidth := ImgSize.CX + DropdownArrowWidth + 2; + ComboRect.Right := (R.Left + R.Right + ImgAndArrowWidth + 2) div 2; + ComboRect.Left := ComboRect.Right - DropdownArrowWidth; + ComboRect.Top := (R.Top + R.Bottom - ImgSize.cy - 2 - TextSize.CY) div 2; + ComboRect.Bottom := ComboRect.Top + ImgSize.CY; + end; + end + else SetRectEmpty(ComboRect); + + if not IsSplit then + begin + PaintButton(Canvas, R, ItemInfo); + if HasArrow then + begin + PaintDropDownArrow(Canvas, ComboRect, ItemInfo); + if not IsSpecialDropDown then + begin + if View.Orientation <> tbvoVertical then Dec(R.Right, DropdownArrowWidth) + else Dec(R.Bottom, DropdownArrowWidth); + end; + end; + end + else // IsSplit + begin + CurrentTheme.PaintButton(Canvas, R, ItemInfo); + ItemInfo.Pushed := IsComboPushed; + ItemInfo.Selected := False; + ItemInfo.ComboPart := cpSplitRight; + CurrentTheme.PaintButton(Canvas, ComboRect, ItemInfo); + ItemInfo.ComboPart := cpSplitLeft; + ItemInfo.Pushed := IsPushed; + ItemInfo.Selected := Item.Checked; + end; + InflateRect(R, -2, -2); + end + else // not toolbar style + begin + GetMargins(MID_MENUITEM, Margins); + PaintMenuItem(Canvas, R, ItemInfo); + Inc(R.Left, Margins.LeftWidth); + Dec(R.Right, Margins.RightWidth); + Inc(R.Top, Margins.TopHeight); + Dec(R.Bottom, Margins.BottomHeight); + end; + + { Caption } + if IsCaptionShown then + begin + if ToolbarStyle then + begin + CaptionRect := R; + TextFlags := TextFlags or DT_CENTER or DT_VCENTER; + if ImageIsShown then with CaptionRect do + case ItemLayout of + tbxlGlyphLeft: + begin + Inc(Left, ImgSize.CX + 3); + Top := (Top + Bottom - TextSize.CY) div 2; + Bottom := Top + TextSize.CY; + Left := (Left + Right - TextSize.CX) div 2; + Right := Left + TextSize.CX; + TextFlags := TextFlags and not DT_CENTER; + end; + tbxlGlyphTop: + begin + Inc(Top, ImgSize.CY + 1); + if IsTextRotated then Inc(CaptionRect.Top, 3); + Top := (Top + Bottom - TextSize.CY) div 2; + Bottom := Top + TextSize.CY; + Left := (Left + Right - TextSize.CX) div 2; + Right := Left + TextSize.CX; + TextFlags := TextFlags and not DT_VCENTER; + end; + end + else + begin + with CaptionRect, TextSize do + begin + Left := (Left + R.Right - CX) div 2; + Top := (Top + R.Bottom - CY) div 2; + Right := Left + CX; + Bottom := Top + CY; + end; + end; + + Canvas.Font.Color := C; + PaintDefault := True; + DoPaintCaption(Canvas, ClientAreaRect, CaptionRect, IsTextRotated, PaintDefault); + if PaintDefault then + CurrentTheme.PaintCaption(Canvas, CaptionRect, ItemInfo, S, TextFlags, IsTextRotated); + end + else with CurrentTheme do + begin + TextFlags := DT_LEFT or DT_VCENTER or TextFlags; + TextSize := GetTextSize(Canvas, S, TextFlags, False, StateFlags); { TODO : Check if this line is required } + GetTextMetrics(Canvas.Handle, TextMetrics); + + CaptionRect := R; + Inc(CaptionRect.Left, ItemInfo.PopupMargin + MenuImageTextSpace + MenuLeftCaptionMargin); + with TextMetrics, CaptionRect do + if (Bottom - Top) - (tmHeight + tmExternalLeading) = Margins.BottomHeight then Dec(Bottom); + Inc(CaptionRect.Top, TextMetrics.tmExternalLeading); + + CaptionRect.Right := CaptionRect.Left + TextSize.CX; + + Canvas.Font.Color := C; + PaintDefault := True; + DoPaintCaption(Canvas, ClientAreaRect, CaptionRect, IsTextRotated, PaintDefault); + if PaintDefault then + CurrentTheme.PaintCaption(Canvas, CaptionRect, ItemInfo, S, TextFlags, IsTextRotated); + end; + end; + + { Shortcut and/or submenu arrow (menus only) } + if not ToolbarStyle then + begin + S := Item.GetShortCutText; + if Length(S) > 0 then + begin + CaptionRect := R; + with CaptionRect, TextMetrics do + begin + Left := Right - (Bottom - Top) - GetTextWidth(Canvas.Handle, S, True); + if (Bottom - Top) - (tmHeight + tmExternalLeading) = Margins.BottomHeight then Dec(Bottom); + Inc(Top, TextMetrics.tmExternalLeading); + end; + Canvas.Font.Color := C; + PaintDefault := True; + DoPaintCaption(Canvas, ClientAreaRect, CaptionRect, IsTextRotated, PaintDefault); + if PaintDefault then + CurrentTheme.PaintCaption(Canvas, CaptionRect, ItemInfo, S, TextFlags, False); + end; + end; + + { Image, or check box } + if ImageOrCheckShown then + begin + ImageRect := R; + + if ToolBarStyle then + begin + if IsSpecialDropDown then OffsetRect(ImageRect, (-CurrentTheme.DropdownArrowWidth + 1) div 2, 0); + if ItemLayout = tbxlGlyphLeft then ImageRect.Right := ImageRect.Left + ImgSize.CX + 2 + else + begin + ImageRect.Top := (ImageRect.Top + ImageRect.Bottom - ImgSize.cy - 2 - TextSize.cy) div 2; + ImageRect.Bottom := ImageRect.Top + ImgSize.CY; + end; + end + else ImageRect.Right := ImageRect.Left + ClientAreaRect.Bottom - ClientAreaRect.Top; + + if ImageIsShown then with ImageRect, ImgSize do + begin + Left := Left + ((Right - Left) - CX) div 2; + ImageRect.Top := Top + ((Bottom - Top) - CY) div 2; + Right := Left + CX; + Bottom := Top + CY; + DrawItemImage(Canvas, ImageRect, ItemInfo); + end + else if not ToolbarStyle and Item.Checked then + CurrentTheme.PaintCheckMark(Canvas, ImageRect, ItemInfo); + end; +end; + + +//============================================================================// + +{ TTBXSubmenuItem } + +constructor TTBXSubmenuItem.Create(AOwner: TComponent); +begin + inherited; + ItemStyle := ItemStyle + [tbisSubMenu, tbisSubitemsEditable]; +end; + +function TTBXSubmenuItem.GetDropdownCombo: Boolean; +begin + Result := tbisCombo in ItemStyle; +end; + +procedure TTBXSubmenuItem.SetDropdownCombo(Value: Boolean); +begin + if (tbisCombo in ItemStyle) <> Value then begin + if Value then ItemStyle := ItemStyle + [tbisCombo] + else ItemStyle := ItemStyle - [tbisCombo]; + Change (True); + end; +end; + + + +//============================================================================// + +{ TTBXSeparatorItem } + +constructor TTBXSeparatorItem.Create(AOwner: TComponent); +begin + inherited; + FSize := -1; // use default from as in TTBSeparatorItem +end; + +function TTBXSeparatorItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBXSeparatorItemViewer; +end; + +procedure TTBXSeparatorItem.SetSize(Value: Integer); +begin + if Value < -1 then Value := -1; + if Value <> FSize then + begin + FSize := Value; + Change(True); + end; +end; + + +//============================================================================// + +{ TTBXSeparatorItemViewer } + +procedure TTBXSeparatorItemViewer.CalcSize(const Canvas: TCanvas; + var AWidth, AHeight: Integer); +var + SZ: Integer; +begin + SZ := TTBXSeparatorItem(Item).Size; + if SZ < 0 then + begin + if not IsToolbarStyle then SZ := CurrentTheme.MenuSeparatorSize + else SZ := CurrentTheme.TlbrSeparatorSize; + if SZ < 0 then inherited CalcSize(Canvas, AWidth, AHeight) + else + begin + AWidth := SZ; + AHeight := SZ; + end; + end + else if not IsToolbarStyle then + begin + AHeight := SZ; + AWidth := 0; + end + else + begin + AWidth := SZ; + AHeight := SZ; + end; +end; + +function TTBXSeparatorItemViewer.IsToolbarSize: Boolean; +begin + Result := inherited IsToolbarSize; + Result := Result or ((GetViewType(View) and PVT_TOOLBOX) = PVT_TOOLBOX); +end; + +function TTBXSeparatorItemViewer.IsToolbarStyle: Boolean; +begin + Result := inherited IsToolbarStyle; + Result := Result or ((GetViewType(View) and PVT_TOOLBOX) = PVT_TOOLBOX); +end; + +procedure TTBXSeparatorItemViewer.Paint(const Canvas: TCanvas; + const ClientAreaRect: TRect; IsHoverItem, IsPushed, UseDisabledShadow: Boolean); +const + CToolbarStyle: array [Boolean] of Integer = (0, IO_TOOLBARSTYLE); + CDesigning: array [Boolean] of Integer = (0, IO_DESIGNING); +var + Item: TTBXSeparatorItem; + ItemInfo: TTBXItemInfo; + R: TRect; + LineSep, HorzLine: Boolean; +begin + Item := TTBXSeparatorItem(Self.Item); + if Item.Size = 0 then Exit; + + FillChar(ItemInfo, SizeOf(TTBXItemInfo), 0); + ItemInfo.ViewType := GetViewType(View); + ItemInfo.ItemOptions := CToolbarStyle[IsToolbarStyle] or + CDesigning[csDesigning in Item.ComponentState]; + ItemInfo.Enabled := not Item.Blank; + ItemInfo.Pushed := IsPushed; + ItemInfo.Selected := False; + ItemInfo.ImageShown := False; + ItemInfo.ImageWidth := 0; + ItemInfo.ImageHeight := 0; + ItemInfo.IsVertical := View.Orientation = tbvoVertical; + if not IsToolbarStyle then ItemInfo.PopupMargin := GetPopupMargin(Self); + + R := ClientAreaRect; + LineSep := tbisLineSep in State; + with ItemInfo do + begin + HorzLine := (IsVertical xor LineSep) or View.IsPopup; + if (((ViewType and VT_POPUP) = VT_POPUP) and + ((ViewType and PVT_CHEVRONMENU) = PVT_CHEVRONMENU)) then + HorzLine := (HorzLine and LineSep); + end; + CurrentTheme.PaintSeparator(Canvas, R, ItemInfo, HorzLine, LineSep); +end; + +//============================================================================// + +{ TTBXVisibilityToggleItem } + +procedure TTBXVisibilityToggleItem.Click; +begin + if Assigned(FControl) then FControl.Visible := not FControl.Visible; + inherited; +end; + +procedure TTBXVisibilityToggleItem.InitiateAction; +begin + UpdateProps; +end; + +procedure TTBXVisibilityToggleItem.Notification(AComponent: TComponent; Operation: TOperation); +begin + inherited; + if (Operation = opRemove) and (AComponent = FControl) then Control := nil; +end; + +procedure TTBXVisibilityToggleItem.SetControl(Value: TControl); +begin + if FControl <> Value then + begin + FControl := Value; + if Assigned(Value) then + begin + Value.FreeNotification(Self); + if (Length(Caption) = 0) and not (csLoading in ComponentState) then + Caption := TControlAccess(Value).Caption; + end; + UpdateProps; + end; +end; + +procedure TTBXVisibilityToggleItem.UpdateProps; +begin + if (ComponentState * [csDesigning, csLoading, csDestroying] = []) then + Checked := Assigned(FControl) and FControl.Visible; +end; + +//============================================================================// + +{ TTBXPopupWindow } + +procedure TTBXPopupWindow.CMHintShow(var Message: TCMHintShow); +begin + with Message.HintInfo^ do + begin + HintStr := ''; + if Assigned(View.Selected) then + begin + CursorRect := View.Selected.BoundsRect; + HintStr := View.Selected.GetHintText; + View.Selected.Dispatch(Message); + end; + end; +end; + +procedure TTBXPopupWindow.CreateParams(var Params: TCreateParams); +const + CS_DROPSHADOW = $00020000; +begin + inherited CreateParams(Params); + with Params do + begin + WindowClass.Style := WindowClass.Style and not (CS_DROPSHADOW or CS_DBLCLKS); + if GetShowShadow and (CurrentTheme.GetPopupShadowType = PST_WINDOWSXP) and IsWindowsXP then + begin + WindowClass.Style := WindowClass.Style or CS_DROPSHADOW; + StrPCopy(WinClassName, ClassName + 'S'); + end; + end; +end; + +procedure TTBXPopupWindow.CreateShadow; +var + PR: TRect; + ParentViewer: TTBItemViewer; + VT: Integer; + ChevronParent: Boolean; +begin + if (CurrentTheme.GetPopupShadowType = PST_WINDOWS2K) and not + ((Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion >= 5)) then Exit; + + PR := Rect(0, 0, 0, 0); + if CurrentTheme.GetPopupShadowType = PST_OFFICEXP then + begin + if (View <> nil) and (View.ParentView <> nil) then + begin + ParentViewer := TTBViewAccess(View.ParentView).OpenViewer; + ChevronParent := Self is TTBXChevronPopupWindow; + if ((ParentViewer is TTBXItemViewer) or ChevronParent) then + begin + VT := GetViewType(ParentViewer.View); + if ((VT and PVT_POPUPMENU) <> PVT_POPUPMENU) or ChevronParent then + begin + PR := ParentViewer.BoundsRect; + PR.TopLeft := View.ParentView.Window.ClientToScreen(PR.TopLeft); + PR.BottomRight := View.ParentView.Window.ClientToScreen(PR.BottomRight); + end; + end; + end + else if not IsRectEmpty(FControlRect) then + begin + PR := FControlRect; + end; + end; + FShadows := TShadows.Create(PR, BoundsRect, 4, 61, TBXLoColor); + FShadows.Show(Handle); +end; + +destructor TTBXPopupWindow.Destroy; +begin + DestroyShadow; + inherited; +end; + +procedure TTBXPopupWindow.DestroyShadow; +var + SaveShadows: TObject; +begin + SaveShadows := FShadows; + FShadows := nil; + SaveShadows.Free; +end; + +function TTBXPopupWindow.GetFillColor: TColor; +begin + Result := CurrentTheme.GetViewColor(GetViewType(View)); + View.BackgroundColor := Result; +end; + +function TTBXPopupWindow.GetNCSize: TPoint; +begin + Result := inherited GetNCSize; + CurrentTheme.GetViewBorder(GetViewType(View), Result); +end; + +function TTBXPopupWindow.GetShowShadow: Boolean; +begin + Result := ((GetViewType(View) and PVT_LISTBOX) <> PVT_LISTBOX ); +end; + +function TTBXPopupWindow.GetViewClass: TTBViewClass; +begin + Result := TTBXPopupView; +end; + +procedure TTBXPopupWindow.TBMGetViewType(var Message: TMessage); +var + PI: TTBCustomItem; +begin + Message.Result := PVT_POPUPMENU; + if View <> nil then + if Self is TTBXChevronPopupWindow then + Message.Result := PVT_CHEVRONMENU + else + begin + PI := View.ParentItem; + if PI <> nil then + begin + if (PI.Count = 1) and (PI.Items[0] is TTBXCustomList) then + Message.Result := PVT_LISTBOX + else if PI is TTBXEditItem then + begin + Message.Result := PVT_TOOLBOX; + end + else if (PI is TTBXCustomItem) and (TTBXCustomItem(PI).ToolBoxPopup) then + Message.Result := PVT_TOOLBOX + end; + end; +end; + +procedure TTBXPopupWindow.WMEraseBkgnd(var Message: TWmEraseBkgnd); +var + Canvas: TCanvas; + R: TRect; +begin + TBEndAnimation(WindowHandle); + Canvas := TCanvas.Create; + Canvas.Handle := Message.DC; + R := ClientRect; + CurrentTheme.PaintBackgnd(Canvas, R, R, R, GetFillColor, False, GetViewType(View)); + Canvas.Handle := 0; + Canvas.Free; + Message.Result := 1; +end; + +procedure TTBXPopupWindow.WMNCCalcSize(var Message: TWMNCCalcSize); +var + Sz: TPoint; +begin + CurrentTheme.GetViewBorder(GetViewType(View), Sz); + with Message.CalcSize_Params^.rgrc[0], Sz do + begin + Inc(Left, X); + Inc(Top, Y); + Dec(Right, X); + Dec(Bottom, Y); + end; + Message.Result := 1; +end; + +procedure TBXPopupNCPaintProc(Wnd: HWND; DC: HDC; AppData: Longint); +var + R, R2: TRect; + Canvas: TCanvas; + View: TTBPopupView; + PopupInfo: TTBXPopupInfo; + ParentViewer: TTBItemViewer; +begin + Assert(DC <> 0, 'TBXPopupNCPaintProc'); + Canvas := TCanvas.Create; + try + Canvas.Handle := DC; + FillChar(PopupInfo, SizeOf(PopupInfo), 0); + View := TTBPopupView(AppData); + PopupInfo.WindowHandle := View.Window.Handle; + PopupInfo.ViewType := GetViewType(View); + if View.ParentView <> nil then + begin + ParentViewer := TTBViewAccess(View.ParentView).OpenViewer; + if ((ParentViewer is TTBXItemViewer) or (View.Window is TTBXChevronPopupWindow)) + and TTBItemViewerAccess(ParentViewer).IsToolbarStyle then + begin + R := ParentViewer.BoundsRect; + R.TopLeft := View.ParentView.Window.ClientToScreen(R.TopLeft); + R.BottomRight := View.ParentView.Window.ClientToScreen(R.BottomRight); + GetWindowRect(Wnd, R2); + OffsetRect(R, -R2.Left, -R2.Top); + PopupInfo.ParentRect := R; + end; + end + else if View.ParentItem is TTBXRootItem then + begin + R := TTBXRootItem(View.ParentItem).FPopupControlRect; + if not IsRectEmpty(R) then + begin + GetWindowRect(Wnd, R2); + OffsetRect(R, -R2.Left, -R2.Top); + PopupInfo.ParentRect := R; + end; + end; + GetWindowRect(Wnd, R); + OffsetRect(R, -R.Left, -R.Top); + CurrentTheme.GetViewBorder(PopupInfo.ViewType, PopupInfo.BorderSize); + R2 := R; + with PopupInfo.BorderSize do InflateRect(R2, -X, -Y); + with R2 do ExcludeClipRect(Canvas.Handle, Left, Top, Right, Bottom); + CurrentTheme.PaintPopupNCArea(Canvas, R, PopupInfo); + finally + Canvas.Handle := 0; + Canvas.Free; + end; +end; + +procedure TTBXPopupWindow.WMNCPaint(var Message: TMessage); +var + DC: HDC; +begin + DC := GetWindowDC(Handle); + try + Assert(DC <> 0, 'TTBXPopupWindow.WMNCPaint'); + SelectNCUpdateRgn(Handle, DC, HRGN(Message.WParam)); + TBXPopupNCPaintProc(Handle, DC, LongInt(Self.View)); + finally + ReleaseDC(Handle, DC); + end; +end; + +procedure TTBXPopupWindow.WMPrint(var Message: TMessage); +begin + HandleWMPrint(Handle, Message, TBXPopupNCPaintProc, LongInt(Self.View)); +end; + +procedure TTBXPopupWindow.WMTB2kPopupShowing(var Message: TMessage); +begin + if Message.WParam in [TPS_ANIMFINISHED, TPS_NOANIM] then + begin + if not (csDestroying in ComponentState) and GetShowShadow and + (CurrentTheme.GetPopupShadowType in [PST_OFFICEXP, PST_WINDOWS2K]) then CreateShadow; + end; +end; + +procedure TTBXPopupWindow.WMWindowPosChanged(var Message: TWMWindowPosChanged); +begin + inherited; + with Message.WindowPos^ do + if ((flags and SWP_SHOWWINDOW) = 0) and ((flags and SWP_HIDEWINDOW) = 0) then + begin + if FShadows <> nil then + begin + DestroyShadow; + CreateShadow; + end; + end; +end; + + +//============================================================================// + +{ TTBXToolbarView } + +procedure TTBXToolbarView.GetMargins(AOrientation: TTBViewOrientation; var Margins: TRect); +var + VT: Integer; + M: TTBXMargins; +begin + VT := GetWinViewType(TTBXToolbar(Owner)); + if (VT and VT_TOOLBAR) = VT_TOOLBAR then + begin + if AOrientation = tbvoFloating then VT := VT or TVT_FLOATING + else VT := VT and not TVT_FLOATING + end + else if (VT and VT_DOCKPANEL) = VT_DOCKPANEL then + begin + if AOrientation = tbvoFloating then VT := VT or DPVT_FLOATING + else VT := VT and not DPVT_FLOATING + end; + CurrentTheme.GetViewMargins(VT, M); + Margins.Left := M.LeftWidth; + Margins.Top := M.TopHeight; + Margins.Right := M.RightWidth; + Margins.Bottom := M.BottomHeight; +end; + + +//============================================================================// + +{ TTBXToolbar } + +procedure TTBXToolbar.CMColorChanged(var Message: TMessage); +begin + UpdateEffectiveColor; + if Docked and HandleAllocated then + begin + RedrawWindow(Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or + RDW_ERASE or RDW_UPDATENOW or RDW_ALLCHILDREN); + end; + UpdateChildColors; + Invalidate; +end; + +procedure TTBXToolbar.CMControlChange(var Message: TCMControlChange); +begin + inherited; + if Message.Inserting and (Color = clNone) then + Message.Control.Perform(CM_PARENTCOLORCHANGED, 1, EffectiveColor); +end; + +procedure TTBXToolbar.CMParentColorChanged(var Message: TMessage); +begin + if Embedded and (Color = clNone) then + begin + UpdateEffectiveColor; + if (Message.WParam = 0) then + begin + Message.WParam := 1; + Message.LParam := EffectiveColor; + end; + end; + inherited; + Invalidate; +end; + +constructor TTBXToolbar.Create(AOwner: TComponent); +begin + inherited; + AddThemeNotification(Self); + FEffectiveColor := Color; + Color := clNone; + ControlStyle := ControlStyle - [csOpaque]; + DblClickUndock := False; +end; + +destructor TTBXToolbar.Destroy; +begin + RemoveThemeNotification(Self); + inherited; +end; + +procedure TTBXToolbar.DrawNCArea(const DrawToDC: Boolean; const ADC: HDC; const Clip: HRGN); +var + DC: HDC; + R, CR, R2: TRect; + ACanvas: TCanvas; + ToolbarInfo: TTBXToolbarInfo; + UsingBackground: Boolean; +begin + if not Docked or not HandleAllocated then Exit; + + if not DrawToDC then DC := GetWindowDC(Handle) + else DC := ADC; + + UsingBackground := TDockAccess(CurrentDock).UsingBackground; + + try + GetToolbarInfo(ToolbarInfo); + GetWindowRect(Handle, R); + OffsetRect(R, -R.Left, -R.Top); + if not DrawToDC then + begin + SelectNCUpdateRgn(Handle, DC, Clip); + CR := R; + with ToolbarInfo.BorderSize, CR do + begin + InflateRect(CR, -X, -Y); + if ToolbarInfo.IsVertical then Inc(Top, GetTBXDragHandleSize(ToolbarInfo)) + else Inc(Left, GetTBXDragHandleSize(ToolbarInfo)); + ExcludeClipRect(DC, Left, Top, Right, Bottom); + end; + end; + + ACanvas := TCanvas.Create; + try + ACanvas.Handle := DC; + if CurrentTheme.SolidToolbarNCArea then + begin + ACanvas.Brush.Color := EffectiveColor; + ACanvas.Brush.Style := bsSolid; + end + else if UsingBackground then + begin + ACanvas.Brush.Color := EffectiveColor; + R2 := CurrentDock.ClientRect; + OffsetRect(R2, -Left, -Top); + TDockAccess(CurrentDock).DrawBackground(DC, R2); + if (Color = clNone) and CurrentDock.BackgroundOnToolbars then + ACanvas.Brush.Style := bsClear; + end + else + begin + ACanvas.Brush.Color := GetEffectiveColor(CurrentDock); + ACanvas.FillRect(R); + ACanvas.Brush.Color := EffectiveColor; + ACanvas.Brush.Style := bsSolid; + end; + + CurrentTheme.PaintToolbarNCArea(ACanvas, R, ToolbarInfo); + finally + ACanvas.Handle := 0; + ACanvas.Free; + end; + finally + if not DrawToDC then ReleaseDC(Handle, DC); + end; +end; + +function TTBXToolbar.Embedded: Boolean; +begin + Result := not (Floating or Docked); +end; + +function TTBXToolbar.GetChevronItemClass: TTBChevronItemClass; +begin + Result := TTBXChevronItem; +end; + +function TTBXToolbar.GetFloatingBorderSize: TPoint; +begin + CurrentTheme.GetViewBorder(GetViewType(View) or TVT_FLOATING, Result); +end; + +function TTBXToolbar.GetFloatingWindowParentClass: TTBFloatingWindowParentClass; +begin + Result := TTBXFloatingWindowParent; +end; + +procedure TTBXToolbar.GetToolbarInfo(out ToolbarInfo: TTBXToolbarInfo); +begin + FillChar(ToolbarInfo, SizeOf(ToolbarInfo), 0); + ToolbarInfo.WindowHandle := Handle; + ToolbarInfo.ViewType := GetWinViewType(Self); + if CurrentDock <> nil then + ToolbarInfo.IsVertical := CurrentDock.Position in [dpLeft,dpRight]; + ToolbarInfo.AllowDrag := CurrentDock.AllowDrag; + ToolbarInfo.DragHandleStyle := Ord(DragHandleStyle); + ToolbarInfo.ClientWidth := ClientWidth; + ToolbarInfo.ClientHeight := ClientHeight; + if ToolbarInfo.AllowDrag and CloseButtonWhenDocked then + begin + ToolbarInfo.CloseButtonState := CDBS_VISIBLE; + if CloseButtonDown then ToolbarInfo.CloseButtonState := ToolbarInfo.CloseButtonState or CDBS_PRESSED + else if CloseButtonHover then ToolbarInfo.CloseButtonState := ToolbarInfo.CloseButtonState or CDBS_HOT; + end; + ToolbarInfo.BorderStyle := BorderStyle; + CurrentTheme.GetViewBorder(ToolbarInfo.ViewType, ToolbarInfo.BorderSize); + ToolbarInfo.EffectiveColor := EffectiveColor; +end; + +function TTBXToolbar.GetViewClass: TTBToolbarViewClass; +begin + Result := TTBXToolbarView; +end; + +procedure TTBXToolbar.SetItemTransparency(const Value: TTBXItemTransparency); +begin + FItemTransparency := Value; + Invalidate; +end; + +procedure TTBXToolbar.SetParent(AParent: TWinControl); +begin + inherited; + if AParent is TTBXFloatingWindowParent then + TTBXFloatingWindowParent(AParent).SnapDistance := SnapDistance; +end; + +procedure TTBXToolbar.SetSnapDistance(Value: Integer); +begin + if Value < 0 then Value := 0; + FSnapDistance := Value; + if (Parent <> nil) and (Parent is TTBXFloatingWindowParent) then + TTBXFloatingWindowParent(Parent).SnapDistance := Value; +end; + +procedure TTBXToolbar.TBMGetEffectiveColor(var Message: TMessage); +begin + Message.WParam := EffectiveColor; + Message.Result := 1; +end; + +procedure TTBXToolbar.TBMGetViewType(var Message: TMessage); +begin + if MenuBar then Message.Result := TVT_MENUBAR + else Message.Result := TVT_NORMALTOOLBAR; + if Floating then Message.Result := Message.Result or TVT_FLOATING; + if Resizable then Message.Result := Message.Result or TVT_RESIZABLE; + case ItemTransparency of + itAuto: + if not (Floating or Docked) then Message.Result := Message.Result or TVT_EMBEDDED; + itDisable: + Message.Result := Message.Result or TVT_EMBEDDED; + end; +end; + +procedure TTBXToolbar.TBMThemeChange(var Message: TMessage); +begin + case Message.WParam of + TSC_BEFOREVIEWCHANGE: BeginUpdate; + TSC_AFTERVIEWCHANGE: + begin + EndUpdate; + UpdateEffectiveColor; + if Floating then UpdateNCArea(TTBXFloatingWindowParent(Parent), GetWinViewType(Self)) + else UpdateNCArea(Self, GetWinViewType(Self)); + Invalidate; + Arrange; + UpdateChildColors; + end; + TSC_APPACTIVATE, TSC_APPDEACTIVATE: + if MenuBar then Invalidate; + end; +end; + +procedure TTBXToolbar.UpdateChildColors; +var + M: TMessage; +begin + M.Msg := CM_PARENTCOLORCHANGED; + M.WParam := 1; + M.LParam := EffectiveColor; + M.Result := 0; + Broadcast(M); +end; + +procedure TTBXToolbar.UpdateEffectiveColor; +begin + if Color = clNone then + begin + if Embedded and (Parent <> nil) then + FEffectiveColor := GetEffectiveColor(Parent) + else + FEffectiveColor := CurrentTheme.GetViewColor(GetViewType(View)); + end + else FEffectiveColor := Color; +end; + +procedure TTBXToolbar.WMEraseBkgnd(var Message: TWmEraseBkgnd); +var + Canvas: TCanvas; + R, CR: TRect; + Transparent: Boolean; +begin + Transparent := False; + CR := ClientRect; + if Color = clNone then + if Docked and (TDockAccess(CurrentDock).UsingBackground) and CurrentDock.BackgroundOnToolbars + and not CurrentTheme.SolidToolbarClientArea then + begin + R := CurrentDock.ClientRect; + R.TopLeft := ScreenToClient(CurrentDock.ClientToScreen(R.TopLeft)); + R.BottomRight := ScreenToClient(CurrentDock.ClientToScreen(R.BottomRight)); + TDockAccess(CurrentDock).DrawBackground(Message.DC, R); + Message.Result := 1; + Transparent := True; + end + else if Embedded then + begin + Transparent := True; + DrawParentBackground(Self, Message.DC, CR); + end; + + Canvas := TCanvas.Create; + Canvas.Handle := Message.DC; + try + if Docked then + begin + R := CurrentDock.ClientRect; + R.TopLeft := ScreenToClient(CurrentDock.ClientToScreen(R.TopLeft)); + R.BottomRight := ScreenToClient(CurrentDock.ClientToScreen(R.BottomRight)); + end + else R := Rect(0, 0, 0, 0); + CurrentTheme.PaintBackgnd(Canvas, R, CR, CR, EffectiveColor, Transparent, GetWinViewType(Self)); + Message.Result := 1; + finally + Canvas.Handle := 0; + Canvas.Free; + end; +end; + +procedure TTBXToolbar.WMSize(var Message: TWMSize); +var + I: Integer; + V: TTBItemViewer; + R: TRect; +begin + inherited; + if Docked and TDockAccess(CurrentDock).UsingBackground and + TDockAccess(CurrentDock).BackgroundOnToolbars and + ((CurrentDock is TTBXDock) and not TTBXDock(CurrentDock).FResizing) then + begin + for I := 0 to View.ViewerCount - 1 do + begin + V := View.Viewers[I]; + if V.Show and not IsRectEmpty(V.BoundsRect) and not (V.Item is TTBControlItem) + then View.Invalidate(V); + end; + Self.Update; + InvalidateRect(Handle, nil, True); + for I := 0 to View.ViewerCount - 1 do + begin + V := View.Viewers[I]; + if V.Show and not IsRectEmpty(V.BoundsRect) and not (V.Item is TTBControlItem) + then + begin + R := V.BoundsRect; + ValidateRect(Handle, @R); + end; + end; + end; +end; + + +//============================================================================// + +{ TTBXChevronItem } + +function TTBXChevronItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBXChevronItemViewer; +end; + +procedure TTBXChevronItem.GetPopupPosition(ParentView: TTBView; + PopupWindow: TTBPopupWindow; var PopupPositionRec: TTBPopupPositionRec); +begin + if CurrentTheme.OfficeXPPopupAlignment then with PopupPositionRec do + begin + GetOfficeXPPopupPosition1(PopupPositionRec); + inherited GetPopupPosition(ParentView, PopupWindow, PopupPositionRec); + GetOfficeXPPopupPosition2(PopupPositionRec); + end + else inherited; +end; + +function TTBXChevronItem.GetPopupWindowClass: TTBPopupWindowClass; +begin + Result := TTBXChevronPopupWindow; +end; + + +//============================================================================// + +{ TTBXChevronItemViewer } + +procedure TTBXChevronItemViewer.Paint(const Canvas: TCanvas; + const ClientAreaRect: TRect; IsHoverItem, IsPushed, UseDisabledShadow: Boolean); +const + CDesigning: array [Boolean] of Integer = (0, IO_DESIGNING); +var + ItemInfo: TTBXItemInfo; +begin + FillChar(ItemInfo, SizeOf(TTBXItemInfo), 0); + ItemInfo.ViewType := GetViewType(View); + ItemInfo.ItemOptions := IO_TOOLBARSTYLE or CDesigning[csDesigning in Item.ComponentState]; + ItemInfo.Enabled := Item.Enabled or View.Customizing; + ItemInfo.Pushed := IsPushed; + ItemInfo.Selected := False; + ItemInfo.ImageShown := False; + ItemInfo.ImageWidth := 0; + ItemInfo.ImageHeight := 0; + ItemInfo.IsPopupParent := IsPushed; + if IsHoverItem then + begin + if not ItemInfo.Enabled and not TTBViewAccess(View).MouseOverSelected then ItemInfo.HoverKind := hkKeyboardHover + else if ItemInfo.Enabled then ItemInfo.HoverKind := hkMouseHover; + end + else ItemInfo.HoverKind := hkNone; + ItemInfo.IsVertical := View.Orientation = tbvoVertical; + CurrentTheme.PaintChevron(Canvas, ClientAreaRect, ItemInfo); +end; + + +//============================================================================// + +{ TTBXRootItem } + +function TTBXRootItem.CreatePopupEx(SelectFirstItem: Boolean; + const AControlRect: TRect; Alignment: TTBPopupAlignment): TTBPopupWindow; +var + SavePopupRect: TRect; + Pt: TPoint; +begin + SavePopupRect := FPopupControlRect; + try + FPopupControlRect := AControlRect; + Pt.X := AControlRect.Left; + Pt.Y := AControlRect.Bottom; + Result := inherited CreatePopup(nil, nil, False, SelectFirstItem, False, Pt, Alignment); + if Result is TTBXPopupWindow then TTBXPopupWindow(Result).FControlRect := FPopupControlRect; + finally + FPopupControlRect := SavePopupRect; + end; +end; + +procedure TTBXRootItem.GetPopupPosition(ParentView: TTBView; + PopupWindow: TTBPopupWindow; var PopupPositionRec: TTBPopupPositionRec); +var + Y2: Integer; + VT: Integer; +begin + if IsRectEmpty(FPopupControlRect) then inherited + else with PopupPositionRec do + begin + ParentItemRect := FPopupControlRect; + if Y + H > MonitorRect.Bottom then + begin + Y2 := FPopupControlRect.Top - H; + if Y2 >= MonitorRect.Top then Y := Y2; + end; + if Y < MonitorRect.Top then Y := MonitorRect.Top + else if Y + H > MonitorRect.Bottom then Y := MonitorRect.Bottom - H; + + if Alignment = tbpaRight then X := FPopupControlRect.Right - W; + + if X + W > MonitorRect.Right then X := MonitorRect.Right - W; + if X < MonitorRect.Left then X := MonitorRect.Left; + end; + if CurrentTheme.OfficeXPPopupAlignment then with PopupPositionRec do + begin + GetOfficeXPPopupPosition1(PopupPositionRec); + inherited GetPopupPosition(ParentView, PopupWindow, PopupPositionRec); + GetOfficeXPPopupPosition2(PopupPositionRec); + VT := GetWinViewType(PopupWindow); + PopupPositionRec.PlaySound := not (VT and PVT_LISTBOX = PVT_LISTBOX); + end + else inherited; +end; + +function TTBXRootItem.GetPopupWindowClass: TTBPopupWindowClass; +begin + Result := TTBXPopupWindow; +end; + +procedure TTBXRootItem.OpenPopupEx(const SelectFirstItem, TrackRightButton: Boolean; + const ControlRect: TRect; const Alignment: TTBPopupAlignment); +var + ModalHandler: TTBModalHandler; + Popup: TTBPopupWindow; + DoneActionData: TTBDoneActionData; + State: TTBViewState; +begin + ModalHandler := TTBModalHandler.Create(0); + try + Popup := CreatePopupEx(SelectFirstItem, ControlRect, Alignment); + try + State := Popup.View.State; + Include(State, vsIgnoreFirstMouseUp); + TTBViewAccess(Popup.View).SetState(State); + ModalHandler.Loop(Popup.View, False, False, False, TrackRightButton); + DoneActionData := TTBViewAccess(Popup.View).DoneActionData; + finally + { Remove vsModal state from the root view before any TTBView.Destroy + methods get called, so that NotifyFocusEvent becomes a no-op } + State := Popup.View.State; + Exclude(State, vsModal); + TTBViewAccess(Popup.View).SetState(State); + Popup.Free; + end; + finally + ModalHandler.Free; + end; + ProcessDoneAction(DoneActionData); +end; + +procedure TTBXRootItem.PopupEx(const ControlRect: TRect; + TrackRightButton: Boolean; Alignment: TTBPopupAlignment); +begin + OpenPopupEx(False, TrackRightButton, ControlRect, Alignment); +end; + + +//============================================================================// + +{ TTBXPopupMenu } + +function TTBXPopupMenu.GetRootItemClass: TTBRootItemClass; +begin + Result := TTBXRootItem; +end; + +procedure TTBXPopupMenu.PopupEx(const ControlRect: TRect); +begin + {$IFDEF JR_D5} + PPoint(@PopupPoint)^ := Point(ControlRect.Left, ControlRect.Bottom); + {$ENDIF} + TTBXRootItem(Items).PopupEx(ControlRect, TrackButton = tbRightButton, TTBPopupAlignment(Alignment)) +end; + +procedure TTBXPopupMenu.TBMGetViewType(var Message: TMessage); +begin + Message.Result := PVT_POPUPMENU; +end; + + +//============================================================================// + +{ TTBXFloatingWindowParent } + +procedure TTBXFloatingWindowParent.CancelNCHover; +begin + if FCloseButtonHover then + begin + FCloseButtonHover := False; + if HandleAllocated and IsWindowVisible(Handle) then + DrawNCArea(False, 0, 0, [twrdCloseButton]); + end; +end; + +procedure TTBXFloatingWindowParent.CMMouseLeave(var Message: TMessage); +begin + inherited; + CancelNCHover; +end; + +procedure TTBXFloatingWindowParent.DrawNCArea(const DrawToDC: Boolean; + const ADC: HDC; const Clip: HRGN; RedrawWhat: TTBToolWindowNCRedrawWhat); +const + CDown: array [Boolean] of Integer = (0, CDBS_PRESSED); + CHover: array [Boolean] of Integer = (0, CDBS_HOT); + CBord: array [Boolean] of Integer = (0, WRP_BORDER); + CCapt: array [Boolean] of Integer = (0, WRP_CAPTION); + CBtn: array [Boolean] of Integer = (0, WRP_CLOSEBTN); +var + DC: HDC; + R: TRect; + Canvas: TCanvas; + WindowInfo: TTBXWindowInfo; + DockWindow: TTBCustomDockableWindowAccess; +begin + if not HandleAllocated then Exit; + if not DrawToDC then DC := GetWindowDC(Handle) + else DC := ADC; + try + if not DrawToDC then SelectNCUpdateRgn(Handle, DC, Clip); + GetWindowRect(Handle, R); + OffsetRect(R, -R.Left, -R.Top); + with R do IntersectClipRect(DC, Left, Top, Right, Bottom); + Canvas := TCanvas.Create; + try + Canvas.Handle := DC; + GetWindowRect(Handle, R); + OffsetRect(R, -R.Left, -R.Top); + DockWindow := TTBCustomDockableWindowAccess(DockableWindow); + + FillChar(WindowInfo, SizeOf(WindowInfo), 0); + WindowInfo.ParentHandle := Handle; + WindowInfo.WindowHandle := DockWindow.Handle; + WindowInfo.ViewType := GetWinViewType(DockWindow); + WindowInfo.ClientWidth := ClientWidth; + WindowInfo.ClientHeight := ClientHeight; + WindowInfo.ShowCaption := DockWindow.ShowCaption; + WindowInfo.FloatingBorderSize := DockWindow.GetFloatingBorderSize; + if DockWindow.CloseButton and DockWindow.ShowCaption then + begin + WindowInfo.CloseButtonState := CDBS_VISIBLE; + if CloseButtonDown then WindowInfo.CloseButtonState := WindowInfo.CloseButtonState or CDBS_PRESSED + else if CloseButtonHover then WindowInfo.CloseButtonState := WindowInfo.CloseButtonState or CDBS_HOT; + end; + WindowInfo.RedrawPart := + CBord[twrdBorder in RedrawWhat] or + CCapt[twrdCaption in RedrawWhat] or + CBtn[twrdCloseButton in RedrawWhat]; + WindowInfo.Caption := PChar(Caption); + WindowInfo.EffectiveColor := GetEffectiveColor(DockWindow); + WindowInfo.Active := not DockWindow.InactiveCaption; + Canvas.Brush.Color := WindowInfo.EffectiveColor; + CurrentTheme.PaintFloatingBorder(Canvas, R, WindowInfo); + finally + Canvas.Handle := 0; + Canvas.Free; + end; + finally + if not DrawToDC then ReleaseDC(Handle, DC); + end; +end; + +procedure TTBXFloatingWindowParent.WMEraseBkgnd(var Message: TMessage); +begin + Message.Result := 1; +end; + +procedure TTBXFloatingWindowParent.WMNCMouseLeave(var Message: TMessage); +begin + if not MouseCapture then CancelNCHover; + inherited; +end; + +procedure TTBXFloatingWindowParent.WMNCMouseMove(var Message: TWMNCMouseMove); +var + InArea: Boolean; +begin + inherited; + { Note: TME_NONCLIENT was introduced in Windows 98 and 2000 } + if (Win32MajorVersion >= 5) or + (Win32MajorVersion = 4) and (Win32MinorVersion >= 10) then + CallTrackMouseEvent (Handle, TME_LEAVE or $10 {TME_NONCLIENT}); + InArea := Message.HitTest = 2001; {HT_TB2k_Close} + if FCloseButtonHover <> InArea then + begin + FCloseButtonHover := InArea; + if HandleAllocated and IsWindowVisible(Handle) then + DrawNCArea(False, 0, 0, [twrdCloseButton]); + end; +end; + +procedure TTBXFloatingWindowParent.WMWindowPosChanging(var Message: TWMWindowPosChanging); +var + R: TRect; + MonInfo: TMonitorInfo; +begin + if SnapDistance > 0 then with Message.WindowPos^ do + begin + if (cx = Width) and (cy = Height) then + begin + MonInfo.cbSize := SizeOf(MonInfo); + GetMonitorInfo(Monitor.Handle, @MonInfo); + R := MonInfo.rcWork; + if Abs(x + Width - R.Right) < SnapDistance then x := R.Right - Width; + if Abs(y + Height - R.Bottom) < SnapDistance then y := R.Bottom - Height; + if Abs(x - R.Left) < SnapDistance then x := R.Left; + if Abs(y - R.Top) < SnapDistance then y := R.Top; + end; + end; + inherited; +end; + + +//============================================================================// + +{ TTBXToolWindow } + +procedure TTBXToolWindow.CMColorChanged(var Message: TMessage); +begin + UpdateEffectiveColor; + if Docked and HandleAllocated then + RedrawWindow(Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or + RDW_ERASE or RDW_UPDATENOW or RDW_ALLCHILDREN); + UpdateChildColors; + Invalidate; +end; + +procedure TTBXToolWindow.CMControlChange(var Message: TCMControlChange); +begin + inherited; + if Message.Inserting and (Color = clNone) then + Message.Control.Perform(CM_PARENTCOLORCHANGED, 1, EffectiveColor); +end; + +procedure TTBXToolWindow.CMTextChanged(var Message: TMessage); +begin + inherited; + if HandleAllocated then + begin + if Docked then RedrawWindow(Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE) + else RedrawWindow(TTBXFloatingWindowParent(Parent).Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE); + end; +end; + +constructor TTBXToolWindow.Create(AOwner: TComponent); +begin + inherited; + AddThemeNotification(Self); + DblClickUndock := False; + FEffectiveColor := Color; + Color := clNone; +end; + +destructor TTBXToolWindow.Destroy; +begin + RemoveThemeNotification(Self); + inherited; +end; + +procedure TTBXToolWindow.DrawNCArea(const DrawToDC: Boolean; + const ADC: HDC; const Clip: HRGN); +var + DC: HDC; + R, CR, R2: TRect; + ACanvas: TCanvas; + ToolbarInfo: TTBXToolbarInfo; + UsingBackground: Boolean; +begin + if not Docked or not HandleAllocated then Exit; + + if not DrawToDC then DC := GetWindowDC(Handle) + else DC := ADC; + + UsingBackground := TDockAccess(CurrentDock).UsingBackground; + + try + GetToolbarInfo(ToolbarInfo); + GetWindowRect(Handle, R); + OffsetRect(R, -R.Left, -R.Top); + if not DrawToDC then + begin + SelectNCUpdateRgn(Handle, DC, Clip); + CR := R; + with ToolbarInfo.BorderSize, CR do + begin + InflateRect(CR, -X, -Y); + if ToolbarInfo.IsVertical then Inc(Top, GetTBXDragHandleSize(ToolbarInfo)) + else Inc(Left, GetTBXDragHandleSize(ToolbarInfo)); + ExcludeClipRect(DC, Left, Top, Right, Bottom); + end; + end; + ACanvas := TCanvas.Create; + try + ACanvas.Handle := DC; + ACanvas.Brush.Color := EffectiveColor; + if CurrentTheme.SolidToolbarNCArea then + begin + ACanvas.Brush.Color := EffectiveColor; + ACanvas.Brush.Style := bsSolid; + end + else if UsingBackground then + begin + ACanvas.Brush.Color := EffectiveColor; + R2 := CurrentDock.ClientRect; + OffsetRect(R2, -Left, -Top); + TDockAccess(CurrentDock).DrawBackground(DC, R2); + if (Color = clNone) and CurrentDock.BackgroundOnToolbars then + ACanvas.Brush.Style := bsClear; + end + else + begin + ACanvas.Brush.Color := GetEffectiveColor(CurrentDock); + ACanvas.FillRect(R); + ACanvas.Brush.Color := EffectiveColor; + ACanvas.Brush.Style := bsSolid; + end; + + CurrentTheme.PaintToolbarNCArea(ACanvas, R, ToolbarInfo); + finally + ACanvas.Handle := 0; + ACanvas.Free; + end; + finally + if not DrawToDC then ReleaseDC(Handle, DC); + end; +end; + +function TTBXToolWindow.GetFloatingBorderSize: TPoint; +begin + CurrentTheme.GetViewBorder(GetWinViewType(Self) or TVT_FLOATING, Result); +end; + +function TTBXToolWindow.GetFloatingWindowParentClass: TTBFloatingWindowParentClass; +begin + Result := TTBXFloatingWindowParent; +end; + +procedure TTBXToolWindow.GetToolbarInfo(out ToolbarInfo: TTBXToolbarInfo); +begin + FillChar(ToolbarInfo, SizeOf(ToolbarInfo), 0); + ToolbarInfo.WindowHandle := WindowHandle; + ToolbarInfo.ViewType := GetWinViewType(Self); + if CurrentDock <> nil then + ToolbarInfo.IsVertical := CurrentDock.Position in [dpLeft,dpRight]; + ToolbarInfo.AllowDrag := CurrentDock.AllowDrag; + ToolbarInfo.DragHandleStyle := Ord(DragHandleStyle); + ToolbarInfo.ClientWidth := ClientWidth; + ToolbarInfo.ClientHeight := ClientHeight; + if ToolbarInfo.AllowDrag and CloseButtonWhenDocked then + begin + ToolbarInfo.CloseButtonState := CDBS_VISIBLE; + if CloseButtonDown then ToolbarInfo.CloseButtonState := ToolbarInfo.CloseButtonState or CDBS_PRESSED; + if CloseButtonHover then ToolbarInfo.CloseButtonState := ToolbarInfo.CloseButtonState or CDBS_HOT; + end; + ToolbarInfo.BorderStyle := BorderStyle; + ToolbarInfo.EffectiveColor := EffectiveColor; + CurrentTheme.GetViewBorder(ToolbarInfo.ViewType, ToolbarInfo.BorderSize); +end; + +procedure TTBXToolWindow.SetParent(AParent: TWinControl); +begin + inherited; + if AParent is TTBXFloatingWindowParent then + TTBXFloatingWindowParent(AParent).SnapDistance := SnapDistance; +end; + +procedure TTBXToolWindow.SetSnapDistance(Value: Integer); +begin + if Value < 0 then Value := 0; + FSnapDistance := Value; + if (Parent <> nil) and (Parent is TTBXFloatingWindowParent) then + TTBXFloatingWindowParent(Parent).SnapDistance := Value; +end; + +procedure TTBXToolWindow.TBMGetEffectiveColor(var Message: TMessage); +begin + Message.WParam := EffectiveColor; + Message.Result := 1; +end; + +procedure TTBXToolWindow.TBMGetViewType(var Message: TMessage); +begin + Message.Result := TVT_TOOLWINDOW; + if Floating then Message.Result := Message.Result or TVT_FLOATING; + if Resizable then Message.Result := Message.Result or TVT_RESIZABLE; +end; + +procedure TTBXToolWindow.TBMThemeChange(var Message: TMessage); +begin + case Message.WParam of + TSC_BEFOREVIEWCHANGE: BeginUpdate; + TSC_AFTERVIEWCHANGE: + begin + EndUpdate; + UpdateEffectiveColor; + if HandleAllocated and not (csDestroying in ComponentState) then + if Parent is TTBXFloatingWindowParent then + UpdateNCArea(TTBXFloatingWindowParent(Parent), GetWinViewType(Self)) + else + UpdateNCArea(Self, GetWinViewType(Self)); + UpdateChildColors; + Invalidate; + end; + end; +end; + +procedure TTBXToolWindow.UpdateChildColors; +var + M: TMessage; +begin + M.Msg := CM_PARENTCOLORCHANGED; + M.WParam := 1; + M.LParam := EffectiveColor; + M.Result := 0; + Broadcast(M); +end; + +procedure TTBXToolWindow.UpdateEffectiveColor; +begin + if Color = clNone then FEffectiveColor := CurrentTheme.GetViewColor(GetWinViewType(Self)) + else FEffectiveColor := Color; +end; + +procedure TTBXToolWindow.WMEraseBkgnd(var Message: TWmEraseBkgnd); +var + Canvas: TCanvas; + R, CR: TRect; + Transparent: Boolean; +begin + Transparent := False; + CR := ClientRect; + if Color = clNone then + if Docked and (TDockAccess(CurrentDock).UsingBackground) and CurrentDock.BackgroundOnToolbars + and not CurrentTheme.SolidToolbarClientArea then + begin + R := CurrentDock.ClientRect; + R.TopLeft := ScreenToClient(CurrentDock.ClientToScreen(R.TopLeft)); + R.BottomRight := ScreenToClient(CurrentDock.ClientToScreen(R.BottomRight)); + SaveDC(Message.DC); + with CR do IntersectClipRect(Message.DC, Left, Top, Right, Bottom); + TDockAccess(CurrentDock).DrawBackground(Message.DC, R); + RestoreDC(Message.DC, -1); + Message.Result := 1; + Transparent := True; + end; + + Canvas := TCanvas.Create; + Canvas.Handle := Message.DC; + try + if Docked then + begin + R := CurrentDock.ClientRect; + R.TopLeft := ScreenToClient(CurrentDock.ClientToScreen(R.TopLeft)); + R.BottomRight := ScreenToClient(CurrentDock.ClientToScreen(R.BottomRight)); + end + else R := Rect(0, 0, 0, 0); + CurrentTheme.PaintBackgnd(Canvas, R, CR, CR, EffectiveColor, Transparent, GetWinViewType(Self)); + Message.Result := 1; + finally + Canvas.Handle := 0; + Canvas.Free; + end; +end; + +//============================================================================// + +{ Additional system colors } + +type + TColorEntry = packed record + ColorPtr: ^TColor; + Name: string; + end; + +var + ColorRegistry: array of TColorEntry; + +procedure AddTBXColor(var AColor: TColor; const AName: string); +var + L: Integer; +begin + L := Length(ColorRegistry); + SetLength(ColorRegistry, L + 1); + with ColorRegistry[L] do + begin + ColorPtr := @AColor; + Name := AName; + end; +end; + +function TBXColorToString(Color: TColor): string; +var + I: Integer; +begin + if not ColorToIdent(Color, Result) then + begin + for I := 0 to Length(ColorRegistry) - 1 do + if ColorRegistry[I].ColorPtr^ = Color then + begin + Result := ColorRegistry[I].Name; + Exit; + end; + FmtStr(Result, '%s%.8x', [HexDisplayPrefix, Color]); + end; +end; + +function TBXIdentToColor(const Ident: string; var Color: Longint): Boolean; +var + I: Integer; +begin + for I := 0 to Length(ColorRegistry) - 1 do + if CompareText(ColorRegistry[I].Name, Ident) = 0 then + begin + Color := ColorRegistry[I].ColorPtr^; + Result := True; + Exit; + end; + Result := IdentToColor(Ident, Color); +end; + +function TBXStringToColor(S: string): TColor; +begin + if not TBXIdentToColor(S, Longint(Result)) then Result := StringToColor(S); +end; + +procedure TBXGetColorValues(Proc: TGetStrProc); +var + I: Integer; +begin + GetColorValues(Proc); + for I := 0 to Length(ColorRegistry) - 1 do Proc(ColorRegistry[I].Name); +end; + +procedure TBXSetTheme(const AThemeName: string); +begin + TBXNexus.SetTheme(AThemeName); +end; + +function TBXCurrentTheme: string; +begin + Result := TBXNexus.GetTheme; +end; + + +//============================================================================// + + +{ TTBXNexus } + +procedure TTBXNexus.AddNotifie(AObject: TObject); +begin + if FNotifies.IndexOf(AObject) < 0 then FNotifies.Add(AObject); + Exit; asm db 0,'TBX (C) 2001-2003 Alex Denisov',0 end; +end; + +procedure TTBXNexus.Broadcast(Msg: Cardinal; WParam, LParam: Integer); +var + M: TMessage; + I: Integer; +begin + if FNotifies.Count > 0 then + begin + M.Msg := Msg; + M.WParam := WParam; + M.LParam := LParam; + M.Result := 0; + for I := 0 to FNotifies.Count - 1 do TObject(FNotifies[I]).Dispatch(M); + end; +end; + +constructor TTBXNexus.Create(const DefaultTheme: string); +begin + FNotifies := TList.Create; + CurrentTheme := GetTBXTheme(DefaultTheme); + AddTBXSysChangeNotification(Self); +end; + +destructor TTBXNexus.Destroy; +begin + RemoveTBXSysChangeNotification(Self); + ReleaseTBXTheme(CurrentTheme); + FNotifies.Free; + inherited; +end; + +function TTBXNexus.GetTheme: string; +begin + Result := CurrentTheme.Name; +end; + +procedure TTBXNexus.RemoveNotifie(AObject: TObject); +begin + FNotifies.Remove(AObject); +end; + +procedure TTBXNexus.SetTheme(const AThemeName: string); +begin + if IsTBXThemeAvailable(AThemeName) then + begin + ReleaseTBXTheme(CurrentTheme); + CurrentTheme := GetTBXTheme(AThemeName); + Broadcast(TBM_THEMECHANGE, TSC_BEFOREVIEWCHANGE, 1); + Broadcast(TBM_THEMECHANGE, TSC_VIEWCHANGE, 1); + Broadcast(TBM_THEMECHANGE, TSC_AFTERVIEWCHANGE, 1); + end; +end; + +procedure TTBXNexus.TBXSysCommand(var Message: TMessage); +begin + { Retranslate TBX_SYSCOMMAND to TBM_THEMECHANGE } + if Message.Msg = TBX_SYSCOMMAND then + Broadcast(TBM_THEMECHANGE, Message.WParam, 0); +end; + +procedure InitAdditionalSysColors; +begin + AddTBXColor(clHotLight, 'clHotLight'); +{$IFNDEF JR_D6} + AddTBXColor(clMoneyGreen, 'clMoneyGreen'); + AddTBXColor(clSkyBlue, 'clSkyBlue'); + AddTBXColor(clCream, 'clCream'); + AddTBXColor(clMedGray, 'clMedGray'); +{$ENDIF} +end; + +{ TTBXDock } + +procedure TTBXDock.CMColorChanged(var Message: TMessage); +var + I: Integer; +begin + inherited; + for I := 0 to Self.ControlCount - 1 do + if Controls[I] is TWinControl then + InvalidateAll(TWinControl(Controls[I])); +end; + +constructor TTBXDock.Create(AOwner: TComponent); +begin + inherited; + Color := clNone; + AddThemeNotification(Self); +end; + +destructor TTBXDock.Destroy; +begin + RemoveThemeNotification(Self); + inherited; +end; + +procedure TTBXDock.DrawBackground(DC: HDC; const DrawRect: TRect); +const + DOCK_POSITIONS: array [TTBDockPosition] of Integer = (DP_TOP, DP_BOTTOM, DP_LEFT, DP_RIGHT); +var + Canvas: TCanvas; +begin + if UseParentBackground then DrawParentBackground(Self, DC, ClientRect) + else if ThemedBackground then + begin + Canvas := TCanvas.Create; + Canvas.Handle := DC; + CurrentTheme.PaintDock(Canvas, ClientRect, DrawRect, DOCK_POSITIONS[Position]); + Canvas.Handle := 0; + Canvas.Free; + end + else inherited; +end; + +procedure TTBXDock.Resize; +var + I, J: Integer; + V: TTBItemViewer; + R: TRect; +begin + inherited Resize; + if UsingBackground then + begin + for J := 0 to ToolbarCount - 1 do + begin + Invalidate; + if Toolbars[J] is TTBXToolbar then with TTBXToolbar(Toolbars[J]) do + begin + for I := 0 to View.ViewerCount - 1 do + begin + V := View.Viewers[I]; + if V.Show and not IsRectEmpty(V.BoundsRect) and not (V.Item is TTBControlItem) + then View.Invalidate(V); + end; + Update; + if HandleAllocated then + RedrawWindow(Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or RDW_ERASE); + for I := 0 to View.ViewerCount - 1 do + begin + V := View.Viewers[I]; + if V.Show and not IsRectEmpty(V.BoundsRect) and not (V.Item is TTBControlItem) + then + begin + R := V.BoundsRect; + ValidateRect(Handle, @R); + end; + end; + end + else if Toolbars[J] is TTBXToolWindow then with TTBXToolWindow(Toolbars[J]) do + begin + if HandleAllocated then + RedrawWindow(Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or RDW_ERASE); + end; + end; + end; +end; + +procedure TTBXDock.SetUseParentBackground(Value: Boolean); +begin + if Value <> FUseParentBackground then + begin + FUseParentBackground := Value; + if HandleAllocated then + RedrawWindow(Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or + RDW_ERASE or RDW_ALLCHILDREN); + end; +end; + +procedure TTBXDock.TBMGetEffectiveColor(var Message: TMessage); +begin + if Color <> clNone then Message.WParam := Color + else if Parent <> nil then Message.WParam := GetEffectiveColor(Parent) + else Message.WParam := clBtnFace; + Message.Result := 1; +end; + +procedure TTBXDock.TBMThemeChange(var Message: TMessage); +begin + case Message.WParam of + TSC_AFTERVIEWCHANGE: + begin + Invalidate; + end; + end; +end; + +function TTBXDock.ThemedBackground: Boolean; +begin + Result := (Background = nil) and (Color = clNone) and CurrentTheme.PaintDockBackground; +end; + +function TTBXDock.UsingBackground: Boolean; +begin + Result := UseParentBackground or (ThemedBackground and not FMoving) or + inherited UsingBackground; +end; + +procedure TTBXDock.WMEraseBkgnd(var Message: TWMEraseBkgnd); +var + R: TRect; + C: TColor; +begin + R := Self.ClientRect; + if UsingBackground then + begin + DrawBackground(Message.DC, R); + Message.Result := 1; + end + else + begin + C := Color; + if C = clNone then C := GetEffectiveColor(Parent); + FillRectEx(Message.DC, R, C); + Message.Result := 1; + end; +end; + +procedure TTBXDock.WMMove(var Message: TWMMove); +begin + FMoving := True; + inherited; + FMoving := False; +end; + +procedure TTBXDock.WMSize(var Message: TWMSize); +begin + FResizing := True; + inherited; + FResizing := False; +end; + +initialization + CurrentTheme := nil; + RegisterTBXTheme('Default', TTBXDefaultTheme); + TBXNexus := TTBXNexus.Create('Default'); + InitAdditionalSysColors; + +finalization + TBXNexus.Free; + ColorRegistry := nil; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXDefaultTheme.pas b/official/2.1.6+2.1.beta1/TBX/TBXDefaultTheme.pas new file mode 100644 index 0000000..9defed9 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXDefaultTheme.pas @@ -0,0 +1,1788 @@ +unit TBXDefaultTheme; + +// TBX Package +// Copyright 2001-2004 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// $Id: TBXDefaultTheme.pas 16 2004-05-26 02:02:55Z Alex@ZEISS $ + +interface + +{$I ..\..\Source\TB2Ver.inc} +{$I TBX.inc} + +uses + Windows, Messages, Graphics, TBXThemes, ImgList; + +type + TTBXDefaultTheme = class(TTBXTheme) + private + procedure TBXSysCommand(var Message: TMessage); message TBX_SYSCOMMAND; + protected + ToolbarColor: TColor; + ToolbarText: TColor; + DockPanelColor: TColor; + StatusBarColor: TColor; + procedure SetupColorCache; virtual; + public + constructor Create(const AName: string); override; + destructor Destroy; override; + + { Metrics Access, etc. } + function GetBooleanMetrics(Index: Integer): Boolean; override; + function GetImageOffset(Canvas: TCanvas; const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList): TPoint; override; + function GetIntegerMetrics(Index: Integer): Integer; override; + procedure GetMargins(MarginID: Integer; out Margins: TTBXMargins); override; + + function GetItemColor(const ItemInfo: TTBXItemInfo): TColor; override; + function GetItemTextColor(const ItemInfo: TTBXItemInfo): TColor; override; + function GetItemImageBackground(const ItemInfo: TTBXItemInfo): TColor; override; + function GetPopupShadowType: Integer; override; + procedure GetViewBorder(ViewType: Integer; out Border: TPoint); override; + function GetViewColor(ViewType: Integer): TColor; override; + procedure GetViewMargins(ViewType: Integer; out Margins: TTBXMargins); override; + + { Painting routines } + procedure PaintBackgnd(Canvas: TCanvas; const ADockRect, ARect, AClipRect: TRect; AColor: TColor; Transparent: Boolean; AViewType: Integer); override; + procedure PaintButton(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintCaption(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo; const ACaption: string; AFormat: Cardinal; Rotated: Boolean); override; + procedure PaintCheckMark(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintChevron(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintDock(Canvas: TCanvas; const ClientRect, DockRect: TRect; DockPosition: Integer); override; + procedure PaintDockPanelNCArea(Canvas: TCanvas; R: TRect; const DockPanelInfo: TTBXDockPanelInfo); override; + procedure PaintDropDownArrow(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintEditButton(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo; ButtonInfo: TTBXEditBtnInfo); override; + procedure PaintEditFrame(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo; const EditInfo: TTBXEditInfo); override; + procedure PaintFloatingBorder(Canvas: TCanvas; const ARect: TRect; const WindowInfo: TTBXWindowInfo); override; + procedure PaintFrame(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintImage(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList; ImageIndex: Integer); override; + procedure PaintMDIButton(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo; ButtonKind: Cardinal); override; + procedure PaintMenuItem(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo); override; + procedure PaintMenuItemFrame(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintPageScrollButton(Canvas: TCanvas; const ARect: TRect; ButtonType: Integer; Hot: Boolean); override; + procedure PaintPopupNCArea(Canvas: TCanvas; R: TRect; const PopupInfo: TTBXPopupInfo); override; + procedure PaintSeparator(Canvas: TCanvas; ARect: TRect; ItemInfo: TTBXItemInfo; Horizontal, LineSeparator: Boolean); override; + procedure PaintToolbarNCArea(Canvas: TCanvas; R: TRect; const ToolbarInfo: TTBXToolbarInfo); override; + procedure PaintFrameControl(Canvas: TCanvas; R: TRect; Kind, State: Integer; Params: Pointer); override; + procedure PaintStatusBar(Canvas: TCanvas; R: TRect; Part: Integer); override; + end; + +implementation + +uses + Classes, Controls, CommCtrl, TBXUtils, TBXUxThemes, TB2Common, TB2Item, TBX, Forms; + +var + SmCaptionFont: TFont; + +procedure InitializeStock; +var + NonClientMetrics: TNonClientMetrics; +begin + SmCaptionFont := TFont.Create; + NonClientMetrics.cbSize := SizeOf(NonClientMetrics); + if SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @NonClientMetrics, 0) then + SmCaptionFont.Handle := CreateFontIndirect(NonClientMetrics.lfSmCaptionFont); +end; + +procedure FinalizeStock; +begin + SmCaptionFont.Free; + SmCaptionFont := nil; +end; + +procedure DrawButtonBitmap(Canvas: TCanvas; R: TRect); +const + Pattern: array [0..15] of Byte = ($C6, 0, $6C, 0, $38, 0, $38, 0, $6C, 0, $C6, 0, 0, 0, 0, 0); +begin + DrawGlyph(Canvas.Handle, R, 7, 6, Pattern[0], clBtnText); +end; + +{ TTBXDefaultTheme } + +constructor TTBXDefaultTheme.Create; +begin + inherited; + AddTBXSysChangeNotification(Self); + SetupColorCache; +end; + +destructor TTBXDefaultTheme.Destroy; +begin + RemoveTBXSysChangeNotification(Self); + inherited; +end; + +function TTBXDefaultTheme.GetBooleanMetrics(Index: Integer): Boolean; +begin + case Index of + TMB_OFFICEXPPOPUPALIGNMENT: Result := False; + TMB_EDITMENUFULLSELECT: Result := False; + TMB_EDITHEIGHTEVEN: Result := False; + TMB_PAINTDOCKBACKGROUND: Result := USE_THEMES; + TMB_SOLIDTOOLBARNCAREA: Result := False; + TMB_SOLIDTOOLBARCLIENTAREA: Result := False; + else + Result := False; + end; +end; + +function TTBXDefaultTheme.GetIntegerMetrics(Index: Integer): Integer; +const + DEFAULT = -1; +var + Sz: TSize; +begin + case Index of + TMI_SPLITBTN_ARROWWIDTH: + if USE_THEMES then + begin + if GetThemePartSize(TOOLBAR_THEME, StockCompatibleBitmap.Canvas.Handle, + TP_SPLITBUTTONDROPDOWN, TS_NORMAL, nil, TS_TRUE, Sz) = S_OK then + begin + Result := Sz.cx + 2; + end + else Result := 11; + end + else Result := 11; + + TMI_DROPDOWN_ARROWWIDTH: Result := 8; + TMI_DROPDOWN_ARROWMARGIN: Result := 3; + + TMI_MENU_IMGTEXTSPACE: Result := 1; + TMI_MENU_LCAPTIONMARGIN: Result := 2; + TMI_MENU_RCAPTIONMARGIN: Result := 2; + TMI_MENU_SEPARATORSIZE: Result := DEFAULT; + TMI_MENU_MDI_DW: Result := 2; + TMI_MENU_MDI_DH: Result := 4; + + TMI_TLBR_SEPARATORSIZE: Result := 6; + + TMI_EDIT_FRAMEWIDTH: Result := 2; + TMI_EDIT_TEXTMARGINHORZ: Result := 2; + TMI_EDIT_TEXTMARGINVERT: Result := 1; + TMI_EDIT_BTNWIDTH: Result := 13; + TMI_EDIT_MENURIGHTINDENT: Result := 0; + else + Result := DEFAULT; + end; +end; + +function TTBXDefaultTheme.GetViewColor(ViewType: Integer): TColor; +begin + Result := ToolbarColor; + if (ViewType and VT_TOOLBAR) = VT_TOOLBAR then Result := ToolbarColor + else if (ViewType and VT_POPUP) = VT_POPUP then + begin + if (ViewType and PVT_POPUPMENU) = PVT_POPUPMENU then Result := clPopup + else if (ViewType and PVT_LISTBOX) = PVT_LISTBOX then Result := clWindow + else if (ViewType and PVT_TOOLBOX) = PVT_TOOLBOX then Result := ToolbarColor + else if (ViewType and PVT_CHEVRONMENU) = PVT_CHEVRONMENU then Result := clPopup; + end + else if (ViewType and VT_DOCKPANEL) = VT_DOCKPANEL then Result := DockPanelColor + else if (ViewType and VT_STATUSBAR) = VT_STATUSBAR then Result := StatusBarColor + else Result := clBtnFace; +end; + +function TTBXDefaultTheme.GetItemColor(const ItemInfo: TTBXItemInfo): TColor; +var + IsMenuItem: Boolean; +begin + with ItemInfo do + begin + IsMenuItem := ((ViewType and PVT_POPUPMENU) = PVT_POPUPMENU) and ((ItemOptions and IO_TOOLBARSTYLE) = 0); + if not USE_THEMES then + begin + if IsMenuItem and (ItemInfo.HoverKind <> hkNone) then Result := clHighlight + else Result := GetViewColor(ItemInfo.ViewType); + end + else + Result := GetViewColor(ItemInfo.ViewType); + end; +end; + +function TTBXDefaultTheme.GetItemTextColor(const ItemInfo: TTBXItemInfo): TColor; +var + InMenuBar, ToolbarStyle, ShowInactive: Boolean; +begin + Result := clBtnText; + with ItemInfo do + begin + InMenuBar := (ViewType and TVT_MENUBAR) = TVT_MENUBAR; + ToolbarStyle := Boolean(ItemOptions and IO_TOOLBARSTYLE); + ShowInactive := InMenubar and not Boolean(ItemOptions and IO_APPACTIVE); + + if not ToolbarStyle and not Enabled and (HoverKind = hkKeyboardHover) then Result := clGrayText + else if Enabled then + begin + if not ToolbarStyle or (InMenuBar and USE_FLATMENUS) then + begin + if HoverKind <> hkNone then Result := clHighlightText + else if ShowInactive then Result := clGrayText + else Result := clPopupText + end + else if ShowInactive then Result := clGrayText; + end + else Result := clGrayText; + end; +end; + +function TTBXDefaultTheme.GetItemImageBackground(const ItemInfo: TTBXItemInfo): TColor; +var + IsFlatMenuItem, InFlatMenuBar, InFlatChevronBar: Boolean; +begin + with ItemInfo do + begin + InFlatMenuBar := ((ViewType and TVT_MENUBAR) = TVT_MENUBAR) and USE_FLATMENUS; + InFlatChevronBar := ((ViewType and PVT_CHEVRONMENU) = PVT_CHEVRONMENU) and USE_FLATMENUS; + IsFlatMenuItem := ((ViewType and PVT_POPUPMENU) = PVT_POPUPMENU) and ((ItemOptions and IO_TOOLBARSTYLE) = 0) and USE_FLATMENUS; + + if InFlatMenuBar and (HoverKind <> hkNone) then Result := clHighlight + else if InFlatChevronBar or IsFlatMenuItem and (HoverKind <> hkNone) then Result := ToolbarColor + else Result := GetViewColor(ViewType); + end; +end; + +procedure TTBXDefaultTheme.GetViewBorder(ViewType: Integer; out Border: TPoint); +const + XMetrics: array [Boolean] of Integer = (SM_CXDLGFRAME, SM_CXFRAME); + YMetrics: array [Boolean] of Integer = (SM_CYDLGFRAME, SM_CYFRAME); +var + Resizable: Boolean; + Sz: Integer; +begin + Sz := 0; + if (ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + if (ViewType and TVT_FLOATING) = TVT_FLOATING then + begin + Resizable := (ViewType and TVT_RESIZABLE) = TVT_RESIZABLE; + Border.X := GetSystemMetrics(XMetrics[Resizable]); + Border.Y := GetSystemMetrics(YMetrics[Resizable]); + Exit; + end + else Sz := 2; + end + else if (ViewType and VT_POPUP) = VT_POPUP then + begin +{$IFNDEF OFFICE2K_COMBOS} + if (ViewType and PVT_LISTBOX) = PVT_LISTBOX then Sz := 1 + else Sz := 3; +{$ELSE} + Sz := 3; +{$ENDIF} + end + else if (ViewType and VT_DOCKPANEL) = VT_DOCKPANEL then + begin + if (ViewType and DPVT_FLOATING) = DPVT_FLOATING then + begin + Resizable := (ViewType and DPVT_RESIZABLE) = DPVT_RESIZABLE; + Border.X := GetSystemMetrics(XMetrics[Resizable]); + Border.Y := GetSystemMetrics(YMetrics[Resizable]); + Exit; + end + else Sz := 2; + end; + Border.X := Sz; + Border.Y := Sz; +end; + +procedure TTBXDefaultTheme.GetMargins(MarginID: Integer; out Margins: TTBXMargins); +var + R, R2: TRect; +begin + with Margins do + case MarginID of + MID_TOOLBARITEM: + begin + LeftWidth := 2; RightWidth := 2; + TopHeight := 2; BottomHeight := 2; + if USE_THEMES then + GetThemeMargins(TOOLBAR_THEME, StockBitmap1.Canvas.Handle, TP_BUTTON, TS_HOT, TMT_CAPTIONMARGINS, + nil, TMargins(Margins)); + end; + + MID_MENUITEM: + begin + LeftWidth := 0; RightWidth := 0; + TopHeight := 2; BottomHeight := 2; + end; + + MID_STATUSPANE: + begin + if USE_THEMES then + begin + R := Rect(0, 0, 100, 100); + GetThemeBackgroundContentRect(STATUSBAR_THEME, StockBitmap1.Canvas.Handle, SP_PANE, 0, R, @R2); + LeftWidth := R2.Left - R.Left; + RightWidth := R.Right - R2.Right; + TopHeight := R2.Top - R.Top; + BottomHeight := R.Bottom - R2.Bottom; + end + else + begin + LeftWidth := 1; RightWidth := 3; + TopHeight := 1; BottomHeight := 1; + end; + end; + else + LeftWidth := 0; RightWidth := 0; + TopHeight := 0; BottomHeight := 0; + end; +end; + +procedure TTBXDefaultTheme.PaintBackgnd(Canvas: TCanvas; const ADockRect, ARect, AClipRect: TRect; + AColor: TColor; Transparent: Boolean; AViewType: Integer); +var + DC: HDC; + R: TRect; +begin + DC := Canvas.Handle; + if not Transparent then + begin + IntersectRect(R, ARect, AClipRect); + FillRectEx(DC, R, AColor); + end; +end; + +procedure TTBXDefaultTheme.PaintCaption(Canvas: TCanvas; + const ARect: TRect; const ItemInfo: TTBXItemInfo; const ACaption: string; + AFormat: Cardinal; Rotated: Boolean); +var + R: TRect; + C: TColor; + InMenuBar, ToolbarStyle: Boolean; + + procedure _Draw(Color: TColor); + begin + Canvas.Font.Color := Color; + if not Rotated then Windows.DrawText(Canvas.Handle, PChar(ACaption), Length(ACaption), R, AFormat) + else DrawRotatedText(Canvas.Handle, ACaption, R, AFormat); + end; + +begin + with ItemInfo, Canvas do + begin + R := ARect; + C := Font.Color; + { Apply theme-dependent color only when Font.Color = clNone } + if C = clNone then C := GetItemTextColor(ItemInfo); + Brush.Style := bsClear; + InMenuBar := (ViewType and TVT_MENUBAR) = TVT_MENUBAR; + ToolbarStyle := Boolean(ItemOptions and IO_TOOLBARSTYLE); + if not ToolbarStyle and not Enabled and (HoverKind = hkKeyboardHover) then _Draw(C) + else if Enabled then + begin + if ToolbarStyle and (Pushed or Selected) and not (InMenuBar and USE_FLATMENUS) then + OffsetRect(R, 1, 1); + _Draw(C); + end + else if USE_THEMES then _Draw(C) + else + begin + OffsetRect(R, 1, 1); + _Draw(clBtnHighlight); + OffsetRect(R, -1, -1); + _Draw(clBtnShadow); + end; + Brush.Style := bsSolid; + end; +end; + +procedure TTBXDefaultTheme.PaintCheckMark(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); +var + DC: HDC; + X, Y: Integer; + C: TColor; +begin + DC := Canvas.Handle; + X := (ARect.Left + ARect.Right) div 2 - 1; + Y := (ARect.Top + ARect.Bottom) div 2 + 1; + if ItemInfo.Enabled + then C := clBtnText + else C := clGrayText; + if ItemInfo.ItemOptions and IO_RADIO > 0 then + begin + RoundRectEx(DC, X-2, Y-4, X+4, Y+2, 2, 2, + MixColors(C, clBtnHighlight, 128), clNone); + RoundRectEx(DC, X-2, Y-4, X+4, Y+2, 6, 6, C, C); + if ItemInfo.Enabled then + RoundRectEx(DC, X-3, Y-5, X+5, Y+3, 6, 6, clBtnHighlight, clNone); + end + else begin + PolyLineEx(DC, [Point(X-2, Y-2), Point(X, Y), Point(X+4, Y-4), + Point(X+4, Y-3), Point(X, Y+1), Point(X-2, Y-1), Point(X-2, Y-2)], C); + if ItemInfo.Enabled then + PolyLineEx(DC, [Point(X-3, Y-2), Point(X-3, Y-1), Point(X, Y+2), + Point(X+5, Y-3), Point(X+5, Y-5)], clBtnHighlight); + end; +end; + +procedure TTBXDefaultTheme.PaintChevron(Canvas: TCanvas; ARect: TRect; + const ItemInfo: TTBXItemInfo); +const + Pattern: array [Boolean, 0..15] of Byte = ( + ($CC, 0, $66, 0, $33, 0, $66, 0, $CC, 0, 0, 0, 0, 0, 0, 0), + ($88, 0, $D8, 0, $70, 0, $20, 0, $88, 0, $D8, 0, $70, 0, $20, 0)); +var + DC: HDC; + R2: TRect; + P: PByte; + W, H: Integer; +begin + DC := Canvas.Handle; + R2 := ARect; + PaintButton(Canvas, R2, ItemInfo); + + if not ItemInfo.IsVertical then + begin + Inc(R2.Top, 4); + R2.Bottom := R2.Top + 5; + W := 8; + H := 5; + end + else + begin + R2.Left := R2.Right - 9; + R2.Right := R2.Left + 5; + W := 5; + H := 8; + end; + if ItemInfo.Pushed then OffsetRect(R2, 1, 1); + + P := @Pattern[ItemInfo.IsVertical][0]; + if ItemInfo.Enabled then DrawGlyph(DC, R2, W, H, P^, clBtnText) + else + begin + OffsetRect(R2, 1, 1); + DrawGlyph(DC, R2, W, H, P^, clBtnHighlight); + OffsetRect(R2, -1, -1); + DrawGlyph(DC, R2, W, H, P^, clBtnShadow); + end; +end; + +procedure TTBXDefaultTheme.PaintEditButton(Canvas: TCanvas; const ARect: TRect; + var ItemInfo: TTBXItemInfo; ButtonInfo: TTBXEditBtnInfo); +var + DC: HDC; + BtnDisabled, BtnHot, BtnPressed, Embedded: Boolean; + StateFlags: Integer; + R, BR: TRect; + C: TColor; + X, Y: Integer; + + procedure DrawEnabled(var R: TRect); + begin + if BtnPressed then + Windows.DrawEdge(Canvas.Handle, R, BDR_SUNKENOUTER, BF_RECT or BF_ADJUST) + else if BtnHot then + Windows.DrawEdge(Canvas.Handle, R, BDR_RAISEDINNER, BF_RECT or BF_ADJUST) + else if not Embedded then + FrameRectEx(DC, R, clWindow, False); + end; + + procedure DrawUp; + begin + X := (R.Left + R.Right) div 2 + Ord(BtnPressed); + Y := (R.Top * 3 + R.Bottom + 3) div 4 + Ord(BtnPressed); + if not BtnDisabled then + begin + if Boolean(ItemInfo.ItemOptions and IO_TOOLBARSTYLE) then C := clPopupText + else C := clBtnText; + end + else with Canvas do + begin + Inc(X); Inc(Y); + Pen.Color := clBtnHighlight; Brush.Color := clBtnHighlight; + Polygon([Point(X - 2, Y), Point(X + 2, Y), Point(X, Y - 2)]); + Dec(X); Dec(Y); + C := clBtnShadow; + end; + Canvas.Pen.Color := C; Canvas.Brush.Color := C; + Canvas.Polygon([Point(X - 2, Y), Point(X + 2, Y), Point(X, Y - 2)]) + end; + + procedure DrawDn; + begin + X := (R.Left + R.Right) div 2 + Ord(BtnPressed); + Y := (R.Top + R.Bottom * 3 - 4) div 4 + Ord(BtnPressed); + if not BtnDisabled then + begin + if Boolean(ItemInfo.ItemOptions and IO_TOOLBARSTYLE) then C := clPopupText + else C := clBtnText; + end + else with Canvas do + begin + Inc(X); Inc(Y); + Pen.Color := clBtnHighlight; Brush.Color := clBtnHighlight; + Polygon([Point(X - 2, Y), Point(X + 2, Y), Point(X, Y + 2)]); + Dec(X); Dec(Y); + C := clBtnShadow; + end; + Canvas.Pen.Color := C; Canvas.Brush.Color := C; + Canvas.Polygon([Point(X - 2, Y), Point(X + 2, Y), Point(X, Y + 2)]) + end; + +begin + DC := Canvas.Handle; + R := ARect; + with Canvas, ItemInfo do + begin + Embedded := ((ViewType and VT_TOOLBAR) = VT_TOOLBAR) and + ((ViewType and TVT_EMBEDDED) = TVT_EMBEDDED); + + if ButtonInfo.ButtonType = EBT_DROPDOWN then + begin + { DropDown button } + BtnDisabled := (ButtonInfo.ButtonState and EBDS_DISABLED) <> 0; + BtnHot := (ButtonInfo.ButtonState and EBDS_HOT) <> 0; + BtnPressed := (ButtonInfo.ButtonState and EBDS_PRESSED) <> 0; + if USE_THEMES then + begin + if BtnDisabled then StateFlags := CBXS_DISABLED + else if BtnPressed then StateFlags := CBXS_PRESSED + else if BtnHot then StateFlags := CBXS_HOT + else StateFlags := CBXS_NORMAL; + if BtnHot then InflateRect(R, 1, 1); + DrawThemeBackground(COMBO_THEME, Handle, CP_DROPDOWNBUTTON, StateFlags, R, nil); + end + else + begin + Inc(R.Left, 2); + if not BtnDisabled then with R do + begin + if Embedded then FillRectEx(DC, R, clBtnFace); + if BtnPressed or BtnHot then + DrawLineEx(DC, Left - 1, Top, Left - 1, Bottom + 1, ToolbarColor) + else if Embedded then + DrawLineEx(DC, Left - 1, Top, Left - 1, Bottom, clBtnShadow) + else + DrawLineEx(DC, Left - 1, Top, Left - 1, Bottom, clWindow); + DrawEnabled(R); + end; + PaintDropDownArrow(Canvas, R, ItemInfo); + end; + end + else if ButtonInfo.ButtonType = EBT_SPIN then + begin + { Paint spin buttons } + BtnDisabled := (ButtonInfo.ButtonState and EBSS_DISABLED) <> 0; + BtnHot := (ButtonInfo.ButtonState and EBSS_HOT) <> 0; + if USE_THEMES then + begin + if BtnHot then InflateRect(R, 1, 1); + + { Upper with XP themes } + BR := R; + BR.Bottom := (R.Top + R.Bottom - 1) div 2; + BtnPressed := (ButtonInfo.ButtonState and EBSS_UP) <> 0; + if BtnDisabled then StateFlags := UPS_DISABLED + else if BtnPressed then StateFlags := UPS_PRESSED + else if BtnHot then StateFlags := UPS_HOT + else StateFlags := UPS_NORMAL; + DrawThemeBackground(SPIN_THEME, Handle, SPNP_UP, StateFlags, BR, nil); + + { Lower with XP themes } + BR := R; + BR.Top := (R.Top + R.Bottom) div 2; + BtnPressed := (ButtonInfo.ButtonState and EBSS_DOWN) <> 0; + if BtnDisabled then StateFlags := DNS_DISABLED + else if BtnPressed then StateFlags := DNS_PRESSED + else if BtnHot then StateFlags := DNS_HOT + else StateFlags := DNS_NORMAL; + DrawThemeBackground(SPIN_THEME, Handle, SPNP_DOWN, StateFlags, BR, nil); + end + else + begin + Inc(R.Left, 2); + + if not BtnDisabled then with R do + if BtnPressed or BtnHot then + DrawLineEx(DC, Left - 1, Top - 1, Left - 1, Bottom + 1, ToolbarColor) + else if Embedded then + DrawLineEx(DC, Left - 1, Top, Left - 1, Bottom, clBtnShadow) + else + DrawLineEx(DC, Left - 1, Top, Left - 1, Bottom, clWindow); + + + BR := R; + BR.Bottom := (R.Top + R.Bottom + 1) div 2; + BtnPressed := (ButtonInfo.ButtonState and EBSS_UP) <> 0; + if BtnHot or BtnPressed then Dec(BR.Bottom); + if not BtnDisabled then DrawEnabled(BR); + DrawUp; + + BR := R; + BR.Top := (R.Top + R.Bottom) div 2; + BtnPressed := (ButtonInfo.ButtonState and EBSS_DOWN) <> 0; + if BtnHot or BtnPressed then Inc(BR.Top); + if not BtnDisabled then DrawEnabled(BR); + DrawDn; + end; + end; + end; +end; + +procedure TTBXDefaultTheme.PaintEditFrame(Canvas: TCanvas; + const ARect: TRect; var ItemInfo: TTBXItemInfo; const EditInfo: TTBXEditInfo); +var + R: TRect; + W: Integer; +begin + R := ARect; + PaintFrame(Canvas, R, ItemInfo); + W := EditFrameWidth; + InflateRect(R, -W, -W); + with EditInfo do if RightBtnWidth > 0 then Dec(R.Right, RightBtnWidth - 2); + Canvas.Brush.Color := clWindow; + if ItemInfo.Enabled then Canvas.FillRect(R); + with EditInfo do if LeftBtnWidth > 0 then Inc(R.Left, LeftBtnWidth - 2); + if EditInfo.RightBtnWidth > 0 then + begin + R := ARect; + InflateRect(R, -W, -W); + R.Left := R.Right - EditInfo.RightBtnWidth; + PaintEditButton(Canvas, R, ItemInfo, EditInfo.RightBtnInfo); + end; +end; + +procedure TTBXDefaultTheme.PaintDropDownArrow(Canvas: TCanvas; + const ARect: TRect; const ItemInfo: TTBXItemInfo); +var + X, Y: Integer; + + procedure Draw(AColor: TColor); + begin + Canvas.Pen.Color := AColor; + Canvas.Brush.Color := AColor; + if ItemInfo.IsVertical then Canvas.Polygon([Point(X, Y + 2), Point(X, Y - 2), Point(X - 2, Y)]) + else Canvas.Polygon([Point(X - 2, Y), Point(X + 2, Y), Point(X, Y + 2)]); + end; + +begin + with ItemInfo, ARect do + begin + X := (Left + Right) div 2; + Y := (Top + Bottom) div 2 - 1; + + if (Pushed or Selected) and (ComboPart <> cpSplitRight) then + begin + Inc(X); Inc(Y); + end; + + if Enabled then + begin + if Boolean(ItemOptions and IO_TOOLBARSTYLE) then Draw(clPopupText) + else Draw(clBtnText); + end + else + begin + Inc(X); Inc(Y); + Draw(clBtnHighlight); + Dec(X); Dec(Y); + Draw(clBtnShadow); + end; + end; +end; + +procedure TTBXDefaultTheme.PaintButton(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); +const + XPPart: array [TTBXComboPart] of Integer = (TP_BUTTON, TP_DROPDOWNBUTTON, + TP_SPLITBUTTON, TP_SPLITBUTTONDROPDOWN); + Edge: array [Boolean] of Integer = (BDR_RAISEDINNER, EDGE_RAISED); +var + R: TRect; + Flags, RegionFlags: Cardinal; + InMenuBar, ShowHover, Embedded, ShowFlatSL: Boolean; + Region: HRGN; + DC: HDC; + Brush, OldBrush: HBrush; +begin + R := ARect; + DC := Canvas.Handle; + with ItemInfo do + begin + ShowHover := (Enabled and (HoverKind <> hkNone)) or + (not Enabled and (HoverKind = hkKeyboardHover)); + + InMenuBar := (ViewType and TVT_MENUBAR) = TVT_MENUBAR; + Embedded := ((ViewType and VT_TOOLBAR) = VT_TOOLBAR) and + ((ViewType and TVT_EMBEDDED) = TVT_EMBEDDED); + + if not InMenuBar and USE_THEMES then + begin + { The support for XP themes in menus is not yet implemented since standard + XP themes seem to have no theming for menus } + + if not Enabled then + begin + if HoverKind = hkKeyboardHover then Flags := TS_HOT + else Flags := TS_DISABLED; + end + else if ItemInfo.Pushed then Flags := TS_PRESSED + else if ItemInfo.Selected then + begin + if HoverKind <> hkNone then Flags := TS_HOTCHECKED + else Flags := TS_CHECKED; + end + else if HoverKind <> hkNone then Flags := TS_HOT + else Flags := TS_NORMAL; + + if Embedded or Boolean(ItemOptions and IO_DESIGNING) then + begin + { There is no state for non-transparent normal toolbar button, trying to + simulate it with regions... } + RegionFlags := TS_HOT; + if ComboPart = cpSplitRight then Dec(R.Left); + GetThemeBackgroundRegion(TOOLBAR_THEME, Canvas.Handle, XPPart[ComboPart], RegionFlags, R, Region); + if ComboPart = cpSplitRight then Inc(R.Left); + if Embedded or not Boolean(ItemOptions and IO_DESIGNING) then + begin + Brush := CreateBrushEx(ToolbarColor); + OldBrush := SelectObject(DC, Brush); + FillRgn(DC, Region, Brush); + SelectObject(DC, OldBrush); + DeleteObject(Brush); + end; + Brush := CreateBrushEx(clBtnShadow); + OldBrush := SelectObject(DC, Brush); + FrameRgn(DC, Region, Brush, 1, 1); + SelectObject(DC, OldBrush); + DeleteObject(Brush); + DeleteObject(Region); + end; + + DrawThemeBackground(TOOLBAR_THEME, DC, XPPart[ComboPart], Flags, R, nil); + end + else + begin + if InMenuBar and USE_FLATMENUS then + begin + if ((Pushed or Selected) and Enabled) or ShowHover then + FillRectEx(DC, R, clHighlight); + Exit; + end; +{$IFDEF NARROWCOMBOBUTTON} + if (ItemInfo.ComboPart = cpSplitRight) and not (InMenuBar or USE_THEMES) then Dec(R.Right, 2); +{$ENDIF} + if USE_FLATMENUS and (((Pushed or Selected) and Enabled) or ShowHover) then + FillRectEx(DC, R, ToolbarColor); + if Embedded then with Canvas do + begin + Flags := BF_RECT or BF_MIDDLE or BF_ADJUST; + if not ShowHover or (Pushed or Selected or not Enabled) then Flags := Flags or BF_FLAT; + ShowFlatSL := (ComboPart = cpSplitLeft) and not (ShowHover or Pushed); + if ShowFlatSL then Inc(R.Right); + Windows.DrawEdge(Handle, R, EDGE_RAISED, Flags); + if Selected and Enabled and (HoverKind = hkNone) then + DitherRect(DC, R, ToolbarColor, clBtnHighlight); + if ShowFlatSL then Dec(R.Right); + end + else if (Pushed or Selected) and Enabled then with Canvas do + begin + Windows.DrawEdge(Handle, R, BDR_SUNKENOUTER, BF_RECT or BF_ADJUST); + if not Pushed and (HoverKind = hkNone) then + DitherRect(DC, R, ToolbarColor, clBtnHighlight); + end + else if ShowHover or Boolean(ItemOptions and IO_DESIGNING) then + Windows.DrawEdge(Canvas.Handle, R, BDR_RAISEDINNER, BF_RECT); + if ComboPart = cpSplitRight then PaintDropDownArrow(Canvas, R, ItemInfo); + end; + end; +end; + +procedure TTBXDefaultTheme.PaintFloatingBorder(Canvas: TCanvas; const ARect: TRect; const WindowInfo: TTBXWindowInfo); +const + SPI_GETGRADIENTCAPTIONS = $1008; + DC_GRADIENT = $20; + ActiveCaptionFlags: array [Boolean] of Integer = (0, DC_ACTIVE); + GradientCaptionFlags: array [Boolean] of Integer = (0, DC_GRADIENT); + CaptionBkColors: array [Boolean, Boolean] of Integer = + ((COLOR_INACTIVECAPTION, COLOR_ACTIVECAPTION), + (COLOR_GRADIENTINACTIVECAPTION, COLOR_GRADIENTACTIVECAPTION)); + ButtonStateFlags: array [Boolean] of Integer = (0, DFCS_PUSHED); +var + R, R2: TRect; + DC: HDC; + Flags: Integer; + Gradient, ShowCloseBtn: Boolean; + B: BOOL; +begin + DC := Canvas.Handle; + + with WindowInfo do + if not USE_THEMES then + begin + R := ARect; + if (WRP_BORDER and RedrawPart) <> 0 then + begin + R2 := R; + with FloatingBorderSize do InflateRect(R2, -X, -Y); + SaveDC(DC); + with R2 do ExcludeClipRect(DC, Left, Top, Right, Bottom); + Windows.DrawEdge(DC, R, EDGE_RAISED, BF_RECT or BF_MIDDLE); + RestoreDC(DC, -1); + end; + + if not WindowInfo.ShowCaption then Exit; + Gradient := SystemParametersInfo(SPI_GETGRADIENTCAPTIONS, 0, @B, 0) and B; + ShowCloseBtn := (CDBS_VISIBLE and CloseButtonState) <> 0; + R := GetTBXCloseButtonRect(WindowInfo, True); + + if (WRP_CAPTION and RedrawPart) <> 0 then + begin + if ShowCloseBtn then + begin + SaveDC(DC); + with R do ExcludeClipRect(DC, Left, Top, Right, Bottom); + end; + R2 := GetTBXCaptionRect(WindowInfo, True, ShowCloseBtn); + DrawCaption(ParentHandle, DC, R2, DC_TEXT or DC_SMALLCAP or + ActiveCaptionFlags[Active] or GradientCaptionFlags[Gradient]); + if ShowCloseBtn then RestoreDC(DC, -1); + R2 := GetTBXCaptionRect(WindowInfo, True, False); + R2.Top := R2.Bottom; + Inc(R2.Bottom); + FillRect(DC, R2, GetSysColorBrush(COLOR_BTNFACE)); + end; + + if ShowCloseBtn then + begin + R2 := R; + InflateRect(R2, -2, -2); + if (WRP_CAPTION and RedrawPart) <> 0 then + begin + SaveDC(DC); + with R2 do ExcludeClipRect(DC, Left, Top, Right, Bottom); + FillRect(DC, R, GetSysColorBrush(CaptionBkColors[Gradient, WindowInfo.Active])); + RestoreDC(DC, -1); + end; + if (WRP_CLOSEBTN and RedrawPart) <> 0 then + DrawFrameControl(DC, R2, DFC_CAPTION, DFCS_CAPTIONCLOSE or + ButtonStateFlags[(CDBS_PRESSED and CloseButtonState) <> 0]); + end; + end + else { Use WindowsXP visual styles } + begin + if (WRP_BORDER and RedrawPart) <> 0 then + begin + if Active then Flags := FS_ACTIVE else Flags := FS_INACTIVE; + R := ARect; + R.Top := R.Bottom - FloatingBorderSize.Y; + DrawThemeBackground(WINDOW_THEME, DC, WP_SMALLFRAMEBOTTOM, Flags, R, nil); + R.Top := ARect.Top; + R.Bottom := R.Top + FloatingBorderSize.Y; + {if WindowInfo.ShowCaption then} { TODO : how to paint a captionless window frame } + Inc(R.Bottom, GetSystemMetrics(SM_CYSMCAPTION)); + DrawThemeBackground(WINDOW_THEME, DC, WP_SMALLCAPTION, Flags, R, nil); + R.Top := R.Bottom; + R.Bottom := ARect.Bottom - FloatingBorderSize.Y; + R.Right := R.Left + FloatingBorderSize.X; + DrawThemeBackground(WINDOW_THEME, DC, WP_SMALLFRAMELEFT, Flags, R, nil); + R.Right := ARect.Right; + R.Left := R.Right - FloatingBorderSize.X; + DrawThemeBackground(WINDOW_THEME, DC, WP_SMALLFRAMERIGHT, Flags, R, nil); + end; + + if not ShowCaption then Exit; + + { Get the caption area } + R := ARect; + with FloatingBorderSize do InflateRect(R, -X, -Y); + Dec(R.Bottom, ClientHeight); + + if (WRP_CAPTION and RedrawPart) <> 0 then + begin + R2 := R; + if ((CDBS_VISIBLE and CloseButtonState) <> 0) and ((WRP_CLOSEBTN and RedrawPart) <> 0) then + Dec(R2.Right, GetSystemMetrics(SM_CYSMCAPTION)); + + Canvas.Font.Assign(SmCaptionFont); + if Active then Canvas.Font.Color := clCaptionText + else Canvas.Font.Color := clInactiveCaptionText; + Canvas.Brush.Style := bsClear; + + { This is strange... the DrawThemeText function refuses to work... + Use standard API... } + DrawText(Canvas.Handle, WindowInfo.Caption, -1, R2, + DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS or DT_HIDEPREFIX); + + Canvas.Brush.Style := bsSolid; + end; + + if (CDBS_VISIBLE and CloseButtonState) <> 0 then + begin + Dec(R.Bottom); + R.Left := R.Right - R.Bottom + R.Top; + InflateRect(R, -2, -2); + if (CDBS_PRESSED and CloseButtonState) <> 0 then Flags := CBS_PUSHED + else if (CDBS_HOT and CloseButtonState) <> 0 then Flags := CBS_HOT + else Flags := CBS_NORMAL; + DrawThemeBackground(WINDOW_THEME, DC, WP_SMALLCLOSEBUTTON, Flags, R, nil); + end; + end; +end; + +procedure TTBXDefaultTheme.PaintFrame(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); +var + DC: HDC; + R: TRect; + E, Embedded: Boolean; + Flags, Border: Integer; + C: TColor; +begin + R := ARect; + DC := Canvas.Handle; + with ItemInfo do + begin + E := (Enabled and (HoverKind <> hkNone)) or + (not Enabled and (HoverKind = hkKeyboardHover)); + Embedded := ((ViewType and VT_TOOLBAR) = VT_TOOLBAR) and + ((ViewType and TVT_EMBEDDED) = TVT_EMBEDDED); + if USE_THEMES then + begin + InflateRect(R, -1, -1); + if Embedded then C := clBtnShadow + else C := ToolbarColor; + FrameRectEx(DC, R, C, False); + InflateRect(R, 1, 1); + if Pushed or Selected or E or ((ItemOptions and IO_DESIGNING) <> 0) + then DrawThemeBackground(COMBO_THEME, DC, 0, 0, R, nil); + InflateRect(R, -2, -2); + FrameRectEx(DC, R, clWindow, False); + end + else + begin + if Embedded then + begin + Flags := BF_RECT; + if not (Pushed or Selected or E) then + begin + InflateRect(R, -1, -1); + Flags := Flags or BF_FLAT; + Border := BDR_SUNKENOUTER; + end + else Border := EDGE_SUNKEN; + Windows.DrawEdge(DC, R, Border, Flags); + if (Pushed or Selected or E) then InflateRect(R, -1, -1); + end + else + begin + if Pushed or Selected or E or ((ItemOptions and IO_DESIGNING) <> 0) then + Windows.DrawEdge(DC, R, BDR_SUNKENOUTER, BF_RECT); + InflateRect(R, -1, -1); + FrameRectEx(DC, R, ToolbarColor, True); + FrameRectEx(DC, R, clWindow, False); + end; + end; + end; +end; + +function TTBXDefaultTheme.GetImageOffset(Canvas: TCanvas; const ItemInfo: TTBXItemInfo; + ImageList: TCustomImageList): TPoint; +const + Offsets: array [Boolean] of TPoint = ((X:0; Y:0), (X:1; Y:1)); +begin + with ItemInfo do + Result := Offsets[Pushed or Selected]; +end; + +procedure TTBXDefaultTheme.PaintImage(Canvas: TCanvas; ARect: TRect; + const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList; ImageIndex: Integer); +var + BgColor: TColor; + HiContrast: Boolean; + IsMenuItem: Boolean; +begin + with ItemInfo do + begin + if ImageList is TTBCustomImageList then + begin + if Pushed or Selected then OffsetRect(ARect, 1, 1); + TTBCustomImageList(ImageList).DrawState(Canvas, ARect.Left, ARect.Top, + ImageIndex, Enabled, (HoverKind <> hkNone), Selected); + Exit; + end; + + IsMenuItem := ((ViewType and PVT_POPUPMENU) = PVT_POPUPMENU) and + ((ItemOptions and IO_TOOLBARSTYLE) = 0); + + if (IsMenuItem and USE_FLATMENUS) or (not IsMenuItem and USE_THEMES) then + begin + { The icon painting here is not really made by the uxtheme.dll, this is + just a simulation until I figure out how to work with DrawThemedIcon function } + if Pushed or Selected then OffsetRect(ARect, 1, 1); + BgColor := GetItemImageBackground(ItemInfo); + HiContrast := not IsMenuItem and IsDarkColor(BGColor); + if not Enabled then + DrawTBXIconShadow(Canvas, ARect, ImageList, ImageIndex, 0) + else if Selected or Pushed or (HoverKind <> hkNone) then + DrawTBXIcon(Canvas, ARect, ImageList, ImageIndex, HiContrast) + else if HiContrast or TBXHiContrast or TBXLoColor then + DrawTBXIcon(Canvas, ARect, ImageList, ImageIndex, HiContrast) + else + HighlightTBXIcon(Canvas, ARect, ImageList, ImageIndex, clWindow, 178); + end + else + begin + if Pushed or Selected then OffsetRect(ARect, 1, 1); + ImageList.Draw(Canvas, ARect.Left, ARect.Top, ImageIndex, Enabled); + end; + end; +end; + +procedure TTBXDefaultTheme.PaintMDIButton(Canvas: TCanvas; ARect: TRect; + const ItemInfo: TTBXItemInfo; ButtonKind: Cardinal); +const + PushedFlags: array[Boolean] of UINT = (0, DFCS_PUSHED); +var + XPPart, XPFlags: Cardinal; +begin + if USE_THEMES then + begin + case ButtonKind of + DFCS_CAPTIONMIN: XPPart := WP_MDIMINBUTTON; + DFCS_CAPTIONRESTORE: XPPart := WP_MDIRESTOREBUTTON; + DFCS_CAPTIONCLOSE: XPPart := WP_MDICLOSEBUTTON; + else + XPPart := 0; + end; + if ItemInfo.Pushed then XPFlags := CBS_PUSHED + else if ItemInfo.HoverKind <> hkNone then XPFlags := CBS_HOT + else XPFlags := CBS_NORMAL; + DrawThemeBackground(WINDOW_THEME, Canvas.Handle, XPPart, XPFLags, ARect, nil); + end + else + begin + DrawFrameControl(Canvas.Handle, ARect, DFC_CAPTION, + ButtonKind or PushedFlags[ItemInfo.Pushed]); + end; +end; + +procedure TTBXDefaultTheme.PaintMenuItemFrame(Canvas: TCanvas; + const ARect: TRect; const ItemInfo: TTBXItemInfo); +var + DC: HDC; +begin + DC := Canvas.Handle; + with ItemInfo do if (Enabled and (HoverKind <> hkNone)) or + (not Enabled and (HoverKind = hkKeyboardHover)) then + FillRectEx(DC, ARect, clHighlight); +end; + +procedure TTBXDefaultTheme.PaintMenuItem(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo); +var + DC: HDC; + R: TRect; + ShowImageOrCheck: Boolean; + ShowHover: Boolean; + IsComboItem: Boolean; + X, Y: Integer; + ArrowWidth: Integer; + + procedure DrawArrow(AColor: TColor); + begin + PolygonEx(DC, [Point(X, Y - 3), Point(X, Y + 3), Point(X + 3, Y)], AColor, AColor); + end; + +begin + DC := Canvas.Handle; + with ItemInfo do + begin + ShowImageOrCheck := (ImageWidth > 0) or Selected; + ShowHover := (Enabled and (HoverKind <> hkNone)) or + (not Enabled and (HoverKind = hkKeyboardHover)); + ArrowWidth := GetSystemMetrics(SM_CXMENUCHECK); + + R := ARect; + if ShowImageOrCheck then Inc(R.Left, ItemInfo.PopupMargin + MenuImageTextSpace); + IsComboItem := ((ItemOptions and IO_COMBO) <> 0); + if IsComboItem and Enabled then Dec(R.Right, ArrowWidth); + + PaintMenuItemFrame(Canvas, R, ItemInfo); + + if IsComboItem then + begin + R.Left := ARect.Right - ArrowWidth; + R.Right := ARect.Right; + if Enabled and (HoverKind <> hkNone) then + Windows.DrawEdge(DC, R, BDR_SUNKENOUTER, BF_RECT) + else + begin + Dec(R.Left); + if not ShowHover then DrawEdge(DC, R, EDGE_ETCHED, BF_LEFT) + else DrawEdge(DC, R, BDR_SUNKENOUTER, BF_LEFT); + end; + end; + + if (ItemOptions and IO_SUBMENUITEM) <> 0 then + begin + Y := ARect.Bottom div 2; + X := ARect.Right - ArrowWidth * 2 div 3 - 2; + if not Enabled then + begin + if HoverKind = hkKeyboardHover then DrawArrow(clBtnShadow) + else + begin + Inc(X); Inc(Y); + DrawArrow(clBtnHighlight); + Dec(X); Dec(Y); + DrawArrow(clBtnShadow); + end; + end + else if (HoverKind <> hkNone) and not IsComboItem then DrawArrow(clHighlightText) + else DrawArrow(clPopupText); + end; + + if Enabled and ShowImageOrCheck and ((HoverKind <> hkNone) or Selected) then + begin + R.Left := ARect.Left; + R.Right := R.Left + ItemInfo.PopupMargin; + if USE_FLATMENUS then FillRectEx(DC, R, ToolbarColor); + PaintButton(Canvas, R, ItemInfo); + end; + end; +end; + +procedure TTBXDefaultTheme.PaintPopupNCArea(Canvas: TCanvas; R: TRect; const PopupInfo: TTBXPopupInfo); +var + DC: HDC; +begin + DC := Canvas.Handle; + +{$IFNDEF OFFICE2K_COMBOS} + if (PopupInfo.ViewType and PVT_LISTBOX) = PVT_LISTBOX then + begin + FrameRectEx(DC, R, clWindowFrame, True); + FrameRectEx(DC, R, clWindow, True); + FrameRectEx(DC, R, clWindow, False); + end + else +{$ENDIF} + if USE_FLATMENUS and ((PopupInfo.ViewType and PVT_TOOLBOX) <> PVT_TOOLBOX) then + begin + FrameRectEx(DC, R, clBtnShadow, True); + FrameRectEx(DC, R, clPopup, True); + FrameRectEx(DC, R, clPopup, False); + end + else if (PopupInfo.ViewType and PVT_TOOLBOX) = PVT_TOOLBOX then + begin + Windows.DrawEdge(DC, R, EDGE_RAISED, BF_RECT or BF_ADJUST); + FrameRectEx(DC, R, ToolbarColor, False); + end + else + begin + Windows.DrawEdge(DC, R, EDGE_RAISED, BF_RECT or BF_ADJUST); + FrameRectEx(DC, R, clPopup, False); + end; +end; + +procedure TTBXDefaultTheme.PaintSeparator(Canvas: TCanvas; ARect: TRect; + ItemInfo: TTBXItemInfo; Horizontal, LineSeparator: Boolean); +const + XPFlags: array [Boolean] of Integer = (TP_SEPARATOR, TP_SEPARATORVERT); +var + D: Integer; +begin + { Note: for blank separators, Enabled = False } + with ItemInfo, ARect do if Enabled then + begin + if not USE_THEMES or ((ViewType and PVT_POPUPMENU) = PVT_POPUPMENU) then + begin + D := 0; + if LineSeparator then + if (ViewType and TVT_FLOATING) <> 0 then D := 1 + else D := 4; + + if Horizontal then + begin + if (ItemOptions and IO_TOOLBARSTYLE) = 0 then D := 12; + Top := (Top + Bottom) div 2 - 1; + Inc(Left, D); Dec(Right, D); + Windows.DrawEdge(Canvas.Handle, ARect, EDGE_ETCHED, BF_TOP); + end + else + begin + Left := (Left + Right) div 2 - 1; + Inc(Top, D); Dec(Bottom, D); + Windows.DrawEdge(Canvas.Handle, ARect, EDGE_ETCHED, BF_LEFT); + end; + end + else + DrawThemeBackground(TOOLBAR_THEME, Canvas.Handle, XPFlags[Horizontal], TS_NORMAL, ARect, nil); + end; +end; + +procedure TTBXDefaultTheme.PaintToolbarNCArea(Canvas: TCanvas; R: TRect; const ToolbarInfo: TTBXToolbarInfo); +const + DragHandleSizes: array [Boolean, DHS_DOUBLE..DHS_SINGLE] of Integer = ((9, 0, 6), (14, 14, 14)); + DragHandleOffsets: array [Boolean, DHS_DOUBLE..DHS_SINGLE] of Integer = ((2, 0, 2), (3, 0, 5)); + GripperPart: array [Boolean] of Cardinal = (RP_GRIPPER, RP_GRIPPERVERT); + Pattern: array [0..15] of Byte = (0, 0, $CC, 0, $78, 0, $30, 0, $78, 0, $CC, 0, 0, 0, 0, 0); +var +// DC: HDC; + DHSize: Integer; +// Sz: TSize; + R2: TRect; + Flags: Cardinal; + Z: Integer; + BtnVisible, Horz, CloseButtondown, CloseButtonHover: Boolean; +begin +{ DC := Canvas.Handle; + if ToolbarInfo.EffectiveColor <> clNone then FillRectEx(DC, R, ToolbarInfo.EffectiveColor); } + Canvas.FillRect(R); + + { Border } + if ToolbarInfo.BorderStyle = bsSingle then + if USE_THEMES then + begin + Frame3D(Canvas.Handle, R, Lighten(ToolbarInfo.EffectiveColor, 24), Lighten(ToolbarInfo.EffectiveColor, -32), False); +// DrawThemeEdge(TOOLBAR_THEME, Canvas.Handle, RP_BAND, 0, R, BDR_RAISEDINNER, BF_RECT or BF_ADJUST, @R) + end + else + Windows.DrawEdge(Canvas.Handle, R, BDR_RAISEDINNER, BF_RECT or BF_ADJUST); + + if not ToolbarInfo.AllowDrag then Exit; + + BtnVisible := (ToolbarInfo.CloseButtonState and CDBS_VISIBLE) <> 0; + Horz := not ToolbarInfo.IsVertical; + + DHSize := GetTBXDragHandleSize(ToolbarInfo); + if Horz then R.Right := R.Left + DHSize + else R.Bottom := R.Top + DHSize; + + { Drag handle area } + if ToolbarInfo.DragHandleStyle <> DHS_NONE then + begin + if USE_THEMES then + begin + R2 := R; + if BtnVisible then + if Horz then Inc(R2.Top, DHSize - 1) + else Dec(R2.Right, DHSize - 1); + + { Since GetThemePartSize does not seem to work properly, assume we use default + WindowsXP themes where the gripper pattern repeats itself every 4 pixels } + + if Horz then + begin + R2.Left := (R2.Left + R2.Right - 6) div 2; + R2.Right := R2.Left + 6; + Z := R2.Bottom - R2.Top; + R2.Top := R2.Top - 1 + (Z and $3) shr 1; + R2.Bottom := R2.Top + Z and not $3 + 1; + end + else + begin + R2.Top := (R2.Top + R2.Bottom - 6) div 2; + R2.Bottom := R2.Top + 6; + Z := R2.Right - R2.Left; + R2.Left := R2.Left - 1 + (Z and $3) shr 1; + R2.Right := R2.Left + Z and not $3 + 2; + end; + + DrawThemeBackground(REBAR_THEME, Canvas.Handle, GripperPart[ToolbarInfo.IsVertical], 0, R2, nil) + end + else + begin + R2 := R; + if Horz then + begin + Inc(R2.Left, DragHandleOffsets[BtnVisible, ToolbarInfo.DragHandleStyle]); + if BtnVisible then Inc(R2.Top, DHSize - 2); + R2.Right := R2.Left + 3; + InflateRect(R2, 0, -1); + end + else + begin + Inc(R2.Top, DragHandleOffsets[BtnVisible, ToolbarInfo.DragHandleStyle]); + if BtnVisible then Dec(R2.Right, DHSize - 2); + R2.Bottom := R2.Top + 3; + InflateRect(R2, -1, 0); + end; + + Windows.DrawEdge(Canvas.Handle, R2, BDR_RAISEDINNER, BF_RECT); + Canvas.Pixels[R2.Left, R2.Bottom - 1] := clBtnHighlight; + if ToolbarInfo.DragHandleStyle = DHS_DOUBLE then + begin + if Horz then OffsetRect(R2, 3, 0) + else OffsetRect(R2, 0, 3); + Windows.DrawEdge(Canvas.Handle, R2, BDR_RAISEDINNER, BF_RECT); + Canvas.Pixels[R2.Left, R2.Bottom - 1] := clBtnHighlight; + end; + end; + end; + + { Close Button } + if BtnVisible then + begin + CloseButtonDown := (ToolbarInfo.CloseButtonState and CDBS_PRESSED) <> 0; + CloseButtonHover := (ToolbarInfo.CloseButtonState and CDBS_HOT) <> 0; + R2 := GetTBXDockedCloseButtonRect(ToolbarInfo); + Z := 2; + if USE_THEMES then Z := 1; + if Horz then + begin + Dec(R2.Bottom, Z); + Dec(R2.Right, Z); + end + else + begin + Dec(R2.Bottom, Z); + Inc(R2.Left, Z); + end; + if USE_THEMES then + begin + Flags := TS_NORMAL; + if CloseButtonDown then Flags := TS_PRESSED + else if CloseButtonHover then Flags := TS_HOT; + DrawThemeBackground(TOOLBAR_THEME, Canvas.Handle, TP_BUTTON, Flags, R2, nil); + if CloseButtonDown then OffsetRect(R2, 1, 1); + DrawGlyph(Canvas.Handle, R2, 7, 7, Pattern[0], clBtnText); + end + else + begin + if CloseButtonDown then + begin + Windows.DrawEdge(Canvas.Handle, R2, BDR_SUNKENOUTER, BF_RECT); + OffsetRect(R2, 1, 1); + end + else if CloseButtonHover then + Windows.DrawEdge(Canvas.Handle, R2, BDR_RAISEDINNER, BF_RECT); + DrawGlyph(Canvas.Handle, R2, 7, 7, Pattern[0], clBtnText); + end; + end; +end; + +procedure TTBXDefaultTheme.PaintDock(Canvas: TCanvas; const ClientRect, DockRect: TRect; DockPosition: Integer); +var + R: TRect; +begin + if not USE_THEMES then Exit; + if DockPosition in [DP_LEFT, DP_RIGHT] then + begin + R := DockRect; + Inc(R.Bottom, 1); + DrawThemeBackground(REBAR_THEME, Canvas.Handle, 0, 0, R, nil); + end + else DrawThemeBackground(REBAR_THEME, Canvas.Handle, 0, 0, DockRect, nil); +end; + +procedure TTBXDefaultTheme.PaintDockPanelNCArea(Canvas: TCanvas; R: TRect; const DockPanelInfo: TTBXDockPanelInfo); +var + DC: HDC; + Sz: Integer; + R2: TRect; + Flags: Integer; + CloseButtonDown, CloseButtonHover: Boolean; + + procedure CaptionFill(R: TRect); + const + GRAD: array [Boolean] of TGradientKind = (gkHorz, gkVert); + begin + if USE_THEMES then + GradFill(DC, R, Lighten(ToolbarColor, 12), Lighten(ToolbarColor, -12), GRAD[DockPanelInfo.IsVertical]) + else + FillRectEx(DC, R, ToolbarColor); + end; + +begin + DC := Canvas.Handle; + with Canvas, DockPanelInfo do + begin + Sz := GetSystemMetrics(SM_CYSMCAPTION); + + { Border } + FrameRectEx(DC, R, ToolbarColor, True); + R2 := R; + if ShowCaption then + if IsVertical then Inc(R2.Top, Sz) + else Inc(R2.Left, Sz); + FrameRectEx(DC, R2, clWindow, False); + + if not ShowCaption then Exit; + + { Caption area } + if IsVertical then R.Bottom := R.Top + Sz + else R.Right := R.Left + Sz; + Windows.DrawEdge(Handle, R, BDR_RAISEDINNER, BF_RECT or BF_ADJUST); + + { Close button } + if (CDBS_VISIBLE and CloseButtonState) <> 0 then + begin + CloseButtonDown := (CloseButtonState and CDBS_PRESSED) <> 0; + CloseButtonHover := (CloseButtonState and CDBS_HOT) <> 0; + R2 := R; + Brush.Color := ToolbarColor; + if IsVertical then + begin + R2.Left := R2.Right - Sz; + R.Right := R2.Left; + CaptionFill(R2); + InflateRect(R2, -1, -1); + Inc(R2.Left); + end + else + begin + R2.Top := R2.Bottom - Sz; + R.Bottom := R2.Top; + CaptionFill(R2); + InflateRect(R2, -1, -1); + Dec(R2.Bottom); + end; + + if USE_THEMES then + begin + Flags := TS_NORMAL; + if CloseButtonDown then Flags := TS_PRESSED + else if CloseButtonHover then Flags := TS_HOT; + DrawThemeBackground(TOOLBAR_THEME, DC, TP_BUTTON, Flags, R2, nil); + if CloseButtonDown then OffsetRect(R2, 1, 1); + InflateRect(R2, -2, -2); + end + else + begin + if CloseButtonDown then + begin + Windows.DrawEdge(DC, R2, BDR_SUNKENOUTER, BF_RECT); + OffsetRect(R2, 1, 1); + end + else if CloseButtonHover then + Windows.DrawEdge(DC, R2, BDR_RAISEDINNER, BF_RECT); + InflateRect(R2, -2, -2); + end; + DrawButtonBitmap(Canvas, R2); + end; + + { Caption } + CaptionFill(R); + if IsVertical then InflateRect(R, -2, 0) + else Inflaterect(R, 0, -2); + Font.Assign(SmCaptionFont); + Font.Color := clBtnText; + Brush.Style := bsClear; + Flags := DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS or DT_NOPREFIX; + if IsVertical then DrawText(Canvas.Handle, Caption, -1, R, Flags) + else DrawRotatedText(Canvas.Handle, string(Caption), R, Flags); + Brush.Style := bsSolid; + end; +end; + +function TTBXDefaultTheme.GetPopupShadowType: Integer; +begin + Result := PST_WINDOWSXP; +end; + +procedure TTBXDefaultTheme.GetViewMargins(ViewType: Integer; out Margins: TTBXMargins); +begin + with Margins do + if ((ViewType and VT_TOOLBAR) = VT_TOOLBAR) and + ((ViewType and TVT_FLOATING) = TVT_FLOATING) then + begin + LeftWidth := 4; + TopHeight := 2; + RightWidth := 4; + BottomHeight := 1; + end + else + begin + LeftWidth := 0; + TopHeight := 0; + RightWidth := 0; + BottomHeight := 0; + end; +end; + +procedure TTBXDefaultTheme.PaintPageScrollButton(Canvas: TCanvas; + const ARect: TRect; ButtonType: Integer; Hot: Boolean); +var + R: TRect; + Flags: Integer; + X, Y, Sz: Integer; +begin + R := ARect; + if USE_THEMES then + begin + if Hot then Flags := TS_PRESSED + else Flags := TS_HOT; + DrawThemeBackground(TOOLBAR_THEME, Canvas.Handle, TP_BUTTON, Flags, ARect, nil); + X := (R.Left + R.Right) div 2; + Y := (R.Top + R.Bottom) div 2; + Sz := Min(X - R.Left, Y - R.Top) * 3 div 4; + if Hot then Canvas.Pen.Color := clBtnText; + Canvas.Brush.Color := Canvas.Pen.Color; + case ButtonType of + PSBT_UP: + begin + Inc(Y, Sz div 2); + Canvas.Polygon([Point(X + Sz, Y), Point(X, Y - Sz), Point(X - Sz, Y)]); + end; + PSBT_DOWN: + begin + Y := (R.Top + R.Bottom - 1) div 2; + Dec(Y, Sz div 2); + Canvas.Polygon([Point(X + Sz, Y), Point(X, Y + Sz), Point(X - Sz, Y)]); + end; + PSBT_LEFT: + begin + Inc(X, Sz div 2); + Canvas.Polygon([Point(X, Y + Sz), Point(X - Sz, Y), Point(X, Y - Sz)]); + end; + PSBT_RIGHT: + begin + X := (R.Left + R.Right - 1) div 2; + Dec(X, Sz div 2); + Canvas.Polygon([Point(X, Y + Sz), Point(X + Sz, Y), Point(X, Y - Sz)]); + end; + end; + end + else + begin + if Hot then Flags := DFCS_FLAT + else Flags := 0; + case ButtonType of + PSBT_UP: Flags := Flags or DFCS_SCROLLUP; + PSBT_DOWN: Flags := Flags or DFCS_SCROLLDOWN; + PSBT_LEFT: Flags := Flags or DFCS_SCROLLLEFT; + PSBT_RIGHT: Flags := Flags or DFCS_SCROLLRIGHT; + end; + Windows.DrawFrameControl(Canvas.Handle, R, DFC_SCROLL, Flags); + end; +end; + +procedure TTBXDefaultTheme.PaintFrameControl(Canvas: TCanvas; R: TRect; Kind, State: Integer; Params: Pointer); +var + DC: HDC; + X, Y, Flags: Integer; + C: TColor; + Pen, OldPen: HPen; + Brush, OldBrush: HBrush; + + function FrameColor: TColor; + begin + if Boolean(State and PFS_DISABLED) then Result := clBtnShadow + else if Boolean(State and (PFS_PUSHED or PFS_HOT)) then Result := clNone + else Result := clBtnShadow; + end; + + procedure DiagLine(C: TColor); + begin + with R do + DrawLineEx(DC, Right - 2 - X, Bottom - 2, Right - 1, Bottom - X - 3, C); + Inc(X); + end; + +begin + DC := Canvas.Handle; + case Kind of + PFC_CHECKBOX: + begin + if USE_THEMES then + begin + if Boolean(State and PFS_CHECKED) then Flags := CBS_CHECKEDNORMAL + else if Boolean(State and PFS_MIXED) then Flags := CBS_MIXEDNORMAL + else Flags := CBS_UNCHECKEDNORMAL; + if Boolean(State and PFS_DISABLED) then Inc(Flags, 3) + else if Boolean(State and PFS_PUSHED) then Inc(Flags, 2) + else if Boolean(State and PFS_HOT) then Inc(Flags); + DrawThemeBackground(BUTTON_THEME, DC, BP_CHECKBOX, Flags, R, nil); + end + else + begin + C := FrameColor; + if C = clNone then + begin + if Boolean(State and PFS_MIXED) then Flags := DFCS_BUTTON3STATE or DFCS_CHECKED + else Flags := DFCS_BUTTONCHECK; + if Boolean(State and PFS_CHECKED) then Flags := Flags or DFCS_CHECKED; + if Boolean(State and PFS_PUSHED) then Flags := Flags or DFCS_PUSHED; + DrawFrameControl(DC, R, DFC_BUTTON, Flags); + end + else + begin + InflateRect(R, -1, -1); + FrameRectEx(DC, R, C, True); + if Boolean(State and (PFS_DISABLED or PFS_PUSHED)) then FillRectEx(DC, R, clBtnFace) + else if Boolean(State and PFS_MIXED) then DitherRect(DC, R, clWindow, clBtnFace) + else FillRectEx(DC, R, clWindow); + + if Boolean(State and (PFS_CHECKED or PFS_MIXED)) then + begin + X := (R.Left + R.Right) div 2 - 1; + Y := (R.Top + R.Bottom) div 2 + 1; + if Boolean(State and PFS_DISABLED) then C := clGrayText + else if Boolean(State and PFS_MIXED) then C := clBtnShadow + else C := clBtnText; + PolygonEx(DC, [Point(X-2, Y), Point(X, Y+2), Point(X+4, Y-2), + Point(X+4, Y-4), Point(X, Y), Point(X-2, Y-2), Point(X-2, Y)], C, C); + end; + end; + end; + end; + PFC_RADIOBUTTON: + begin + if USE_THEMES then + begin + if Boolean(State and PFS_CHECKED) then Flags := RBS_CHECKEDNORMAL + else Flags := RBS_UNCHECKEDNORMAL; + if Boolean(State and PFS_DISABLED) then Inc(Flags, 3) + else if Boolean(State and PFS_PUSHED) then Inc(Flags, 2) + else if Boolean(State and PFS_HOT) then Inc(Flags); + DrawThemeBackground(BUTTON_THEME, DC, BP_RADIOBUTTON, Flags, R, nil); + end + else + begin + C := FrameColor; + if C = clNone then + begin + Flags := DFCS_BUTTONRADIO; + if Boolean(State and PFS_CHECKED) then Flags := Flags or DFCS_CHECKED; + if Boolean(State and PFS_PUSHED) then Flags := Flags or DFCS_PUSHED; + DrawFrameControl(DC, R, DFC_BUTTON, Flags); + end + else + begin + Pen := CreatePenEx(C); + if Boolean(State and (PFS_DISABLED or PFS_PUSHED)) then C := clBtnFace + else C := clWindow; + Brush := CreateBrushEx(C); + + InflateRect(R, -1, -1); Inc(R.Left); Dec(R.Bottom); + OldPen := SelectObject(DC, Pen); + OldBrush := SelectObject(DC, Brush); + with R do + Windows.RoundRect(DC, Left, Top, Right, Bottom, Right - Left - 2, Bottom - Top - 2); + SelectObject(DC, OldPen); + SelectObject(DC, OldBrush); + DeleteObject(Pen); + DeleteObject(Brush); + + if Boolean(State and PFS_CHECKED) then + begin + InflateRect(R, -3, -3); + Pen := CreatePenEx(clBtnText); + Brush := CreateBrushEx(clBtnText); + OldPen := SelectObject(DC, Pen); + OldBrush := SelectObject(DC, Brush); + with R do Windows.RoundRect(DC, Left, Top, Right, Bottom, Right - Left, Bottom - Top); + SelectObject(DC, OldPen); + SelectObject(DC, OldBrush); + DeleteObject(Pen); + DeleteObject(Brush); + end; + end; + end; + end; + end; +end; + +procedure TTBXDefaultTheme.PaintStatusBar(Canvas: TCanvas; R: TRect; Part: Integer); +var + DC: HDC; + D, Sz, I, Flags: Integer; + + procedure DiagLine(C: TColor); + begin + with R do + DrawLineEx(DC, Right - 2 - D, Bottom - 2, Right - 1, Bottom - D - 3, C); + Inc(D); + end; + +begin + DC := Canvas.Handle; + case Part of + SBP_BODY: + begin + if USE_THEMES then + DrawThemeBackground(STATUSBAR_THEME, DC, 0, 0, R, nil) + else + FillRectEx(DC, R, StatusBarColor); + end; + SBP_PANE, SBP_LASTPANE: + begin + if USE_THEMES then + begin + if Part = SBP_LASTPANE then Flags := SP_GRIPPERPANE + else Flags := SP_PANE; + DrawThemeBackground(STATUSBAR_THEME, DC, Flags, 0, R, nil); + end + else + begin + if Part = SBP_PANE then Dec(R.Right, 2); + Frame3D(DC, R, clBtnShadow, clBtnHighlight, False); + end; + end; + SBP_GRIPPER: + begin + if USE_THEMES then + DrawThemeBackground(STATUSBAR_THEME, DC, SP_GRIPPER, 0, R, nil) + else + begin + D := 0; + Sz := Min(R.Right - R.Left, R.Bottom - R.Top); + for I := 1 to 3 do + case Sz of + 0..8: + begin + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + end; + 9..11: + begin + DiagLine(StatusBarColor); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + end; + 12..14: + begin + DiagLine(clBtnShadow); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + end; + else + DiagLine(StatusBarColor); + DiagLine(clBtnShadow); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + end; + + with Canvas, R do + begin + Pen.Color := StatusBarColor; + PolylineEx(DC, [ + Point(Right - D - 1, Bottom - 1), + Point(Right - 1, Bottom - 1), + Point(Right - 1, Bottom - D - 2)], + StatusBarColor); + end; + end; + end; + end; +end; + +procedure TTBXDefaultTheme.SetupColorCache; +begin + ToolbarColor := clBtnFace; + ToolbarText := clBtnText; + StatusBarColor := clBtnFace; + if USE_THEMES then + begin + GetThemeColor(TOOLBAR_THEME, 0, 0, TMT_FILLCOLOR, Cardinal(ToolbarColor)); + GetThemeColor(TOOLBAR_THEME, 0, 0, TMT_TEXTCOLOR, Cardinal(ToolbarText)); + GetThemeColor(STATUSBAR_THEME, 0, 0, TMT_FILLCOLOR, Cardinal(StatusBarColor)); + end; + DockPanelColor := NearestMixedColor(ToolbarColor, clWindow, 64); +end; + +procedure TTBXDefaultTheme.TBXSysCommand(var Message: TMessage); +begin + if Message.WParam = TSC_VIEWCHANGE then SetupColorCache; +end; + +initialization + InitializeStock; + +finalization + FinalizeStock; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXDefaultTheme.pas.orig b/official/2.1.6+2.1.beta1/TBX/TBXDefaultTheme.pas.orig new file mode 100644 index 0000000..976041d --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXDefaultTheme.pas.orig @@ -0,0 +1,1777 @@ +unit TBXDefaultTheme; + +// TBX Package +// Copyright 2001-2004 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// $Id: TBXDefaultTheme.pas 16 2004-05-26 02:02:55Z Alex@ZEISS $ + +interface + +{$I TB2Ver.inc} +{$I TBX.inc} + +uses + Windows, Messages, Graphics, TBXThemes, ImgList; + +type + TTBXDefaultTheme = class(TTBXTheme) + private + procedure TBXSysCommand(var Message: TMessage); message TBX_SYSCOMMAND; + protected + ToolbarColor: TColor; + ToolbarText: TColor; + DockPanelColor: TColor; + StatusBarColor: TColor; + procedure SetupColorCache; virtual; + public + constructor Create(const AName: string); override; + destructor Destroy; override; + + { Metrics Access, etc. } + function GetBooleanMetrics(Index: Integer): Boolean; override; + function GetImageOffset(Canvas: TCanvas; const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList): TPoint; override; + function GetIntegerMetrics(Index: Integer): Integer; override; + procedure GetMargins(MarginID: Integer; out Margins: TTBXMargins); override; + + function GetItemColor(const ItemInfo: TTBXItemInfo): TColor; override; + function GetItemTextColor(const ItemInfo: TTBXItemInfo): TColor; override; + function GetItemImageBackground(const ItemInfo: TTBXItemInfo): TColor; override; + function GetPopupShadowType: Integer; override; + procedure GetViewBorder(ViewType: Integer; out Border: TPoint); override; + function GetViewColor(ViewType: Integer): TColor; override; + procedure GetViewMargins(ViewType: Integer; out Margins: TTBXMargins); override; + + { Painting routines } + procedure PaintBackgnd(Canvas: TCanvas; const ADockRect, ARect, AClipRect: TRect; AColor: TColor; Transparent: Boolean; AViewType: Integer); override; + procedure PaintButton(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintCaption(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo; const ACaption: string; AFormat: Cardinal; Rotated: Boolean); override; + procedure PaintCheckMark(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintChevron(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintDock(Canvas: TCanvas; const ClientRect, DockRect: TRect; DockPosition: Integer); override; + procedure PaintDockPanelNCArea(Canvas: TCanvas; R: TRect; const DockPanelInfo: TTBXDockPanelInfo); override; + procedure PaintDropDownArrow(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintEditButton(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo; ButtonInfo: TTBXEditBtnInfo); override; + procedure PaintEditFrame(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo; const EditInfo: TTBXEditInfo); override; + procedure PaintFloatingBorder(Canvas: TCanvas; const ARect: TRect; const WindowInfo: TTBXWindowInfo); override; + procedure PaintFrame(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintImage(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList; ImageIndex: Integer); override; + procedure PaintMDIButton(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo; ButtonKind: Cardinal); override; + procedure PaintMenuItem(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo); override; + procedure PaintMenuItemFrame(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintPageScrollButton(Canvas: TCanvas; const ARect: TRect; ButtonType: Integer; Hot: Boolean); override; + procedure PaintPopupNCArea(Canvas: TCanvas; R: TRect; const PopupInfo: TTBXPopupInfo); override; + procedure PaintSeparator(Canvas: TCanvas; ARect: TRect; ItemInfo: TTBXItemInfo; Horizontal, LineSeparator: Boolean); override; + procedure PaintToolbarNCArea(Canvas: TCanvas; R: TRect; const ToolbarInfo: TTBXToolbarInfo); override; + procedure PaintFrameControl(Canvas: TCanvas; R: TRect; Kind, State: Integer; Params: Pointer); override; + procedure PaintStatusBar(Canvas: TCanvas; R: TRect; Part: Integer); override; + end; + +implementation + +uses + Classes, Controls, CommCtrl, TBXUtils, TBXUxThemes, TB2Common, TB2Item, TBX, Forms; + +var + SmCaptionFont: TFont; + +procedure InitializeStock; +var + NonClientMetrics: TNonClientMetrics; +begin + SmCaptionFont := TFont.Create; + NonClientMetrics.cbSize := SizeOf(NonClientMetrics); + if SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @NonClientMetrics, 0) then + SmCaptionFont.Handle := CreateFontIndirect(NonClientMetrics.lfSmCaptionFont); +end; + +procedure FinalizeStock; +begin + SmCaptionFont.Free; + SmCaptionFont := nil; +end; + +procedure DrawButtonBitmap(Canvas: TCanvas; R: TRect); +const + Pattern: array [0..15] of Byte = ($C6, 0, $6C, 0, $38, 0, $38, 0, $6C, 0, $C6, 0, 0, 0, 0, 0); +begin + DrawGlyph(Canvas.Handle, R, 7, 6, Pattern[0], clBtnText); +end; + +{ TTBXDefaultTheme } + +constructor TTBXDefaultTheme.Create; +begin + inherited; + AddTBXSysChangeNotification(Self); + SetupColorCache; +end; + +destructor TTBXDefaultTheme.Destroy; +begin + RemoveTBXSysChangeNotification(Self); + inherited; +end; + +function TTBXDefaultTheme.GetBooleanMetrics(Index: Integer): Boolean; +begin + case Index of + TMB_OFFICEXPPOPUPALIGNMENT: Result := False; + TMB_EDITMENUFULLSELECT: Result := False; + TMB_EDITHEIGHTEVEN: Result := False; + TMB_PAINTDOCKBACKGROUND: Result := USE_THEMES; + TMB_SOLIDTOOLBARNCAREA: Result := False; + TMB_SOLIDTOOLBARCLIENTAREA: Result := False; + else + Result := False; + end; +end; + +function TTBXDefaultTheme.GetIntegerMetrics(Index: Integer): Integer; +const + DEFAULT = -1; +var + Sz: TSize; +begin + case Index of + TMI_SPLITBTN_ARROWWIDTH: + if USE_THEMES then + begin + if GetThemePartSize(TOOLBAR_THEME, StockCompatibleBitmap.Canvas.Handle, + TP_SPLITBUTTONDROPDOWN, TS_NORMAL, nil, TS_TRUE, Sz) = S_OK then + begin + Result := Sz.cx + 2; + end + else Result := 11; + end + else Result := 11; + + TMI_DROPDOWN_ARROWWIDTH: Result := 8; + TMI_DROPDOWN_ARROWMARGIN: Result := 3; + + TMI_MENU_IMGTEXTSPACE: Result := 1; + TMI_MENU_LCAPTIONMARGIN: Result := 2; + TMI_MENU_RCAPTIONMARGIN: Result := 2; + TMI_MENU_SEPARATORSIZE: Result := DEFAULT; + TMI_MENU_MDI_DW: Result := 2; + TMI_MENU_MDI_DH: Result := 4; + + TMI_TLBR_SEPARATORSIZE: Result := 6; + + TMI_EDIT_FRAMEWIDTH: Result := 2; + TMI_EDIT_TEXTMARGINHORZ: Result := 2; + TMI_EDIT_TEXTMARGINVERT: Result := 1; + TMI_EDIT_BTNWIDTH: Result := 13; + TMI_EDIT_MENURIGHTINDENT: Result := 0; + else + Result := DEFAULT; + end; +end; + +function TTBXDefaultTheme.GetViewColor(ViewType: Integer): TColor; +begin + Result := ToolbarColor; + if (ViewType and VT_TOOLBAR) = VT_TOOLBAR then Result := ToolbarColor + else if (ViewType and VT_POPUP) = VT_POPUP then + begin + if (ViewType and PVT_POPUPMENU) = PVT_POPUPMENU then Result := clPopup + else if (ViewType and PVT_LISTBOX) = PVT_LISTBOX then Result := clWindow + else if (ViewType and PVT_TOOLBOX) = PVT_TOOLBOX then Result := ToolbarColor + else if (ViewType and PVT_CHEVRONMENU) = PVT_CHEVRONMENU then Result := clPopup; + end + else if (ViewType and VT_DOCKPANEL) = VT_DOCKPANEL then Result := DockPanelColor + else if (ViewType and VT_STATUSBAR) = VT_STATUSBAR then Result := StatusBarColor + else Result := clBtnFace; +end; + +function TTBXDefaultTheme.GetItemColor(const ItemInfo: TTBXItemInfo): TColor; +var + IsMenuItem: Boolean; +begin + with ItemInfo do + begin + IsMenuItem := ((ViewType and PVT_POPUPMENU) = PVT_POPUPMENU) and ((ItemOptions and IO_TOOLBARSTYLE) = 0); + if not USE_THEMES then + begin + if IsMenuItem and (ItemInfo.HoverKind <> hkNone) then Result := clHighlight + else Result := GetViewColor(ItemInfo.ViewType); + end + else + Result := GetViewColor(ItemInfo.ViewType); + end; +end; + +function TTBXDefaultTheme.GetItemTextColor(const ItemInfo: TTBXItemInfo): TColor; +var + InMenuBar, ToolbarStyle, ShowInactive: Boolean; +begin + Result := clBtnText; + with ItemInfo do + begin + InMenuBar := (ViewType and TVT_MENUBAR) = TVT_MENUBAR; + ToolbarStyle := Boolean(ItemOptions and IO_TOOLBARSTYLE); + ShowInactive := InMenubar and not Boolean(ItemOptions and IO_APPACTIVE); + + if not ToolbarStyle and not Enabled and (HoverKind = hkKeyboardHover) then Result := clGrayText + else if Enabled then + begin + if not ToolbarStyle or (InMenuBar and USE_FLATMENUS) then + begin + if HoverKind <> hkNone then Result := clHighlightText + else if ShowInactive then Result := clGrayText + else Result := clPopupText + end + else if ShowInactive then Result := clGrayText; + end + else Result := clGrayText; + end; +end; + +function TTBXDefaultTheme.GetItemImageBackground(const ItemInfo: TTBXItemInfo): TColor; +var + IsFlatMenuItem, InFlatMenuBar, InFlatChevronBar: Boolean; +begin + with ItemInfo do + begin + InFlatMenuBar := ((ViewType and TVT_MENUBAR) = TVT_MENUBAR) and USE_FLATMENUS; + InFlatChevronBar := ((ViewType and PVT_CHEVRONMENU) = PVT_CHEVRONMENU) and USE_FLATMENUS; + IsFlatMenuItem := ((ViewType and PVT_POPUPMENU) = PVT_POPUPMENU) and ((ItemOptions and IO_TOOLBARSTYLE) = 0) and USE_FLATMENUS; + + if InFlatMenuBar and (HoverKind <> hkNone) then Result := clHighlight + else if InFlatChevronBar or IsFlatMenuItem and (HoverKind <> hkNone) then Result := ToolbarColor + else Result := GetViewColor(ViewType); + end; +end; + +procedure TTBXDefaultTheme.GetViewBorder(ViewType: Integer; out Border: TPoint); +const + XMetrics: array [Boolean] of Integer = (SM_CXDLGFRAME, SM_CXFRAME); + YMetrics: array [Boolean] of Integer = (SM_CYDLGFRAME, SM_CYFRAME); +var + Resizable: Boolean; + Sz: Integer; +begin + Sz := 0; + if (ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + if (ViewType and TVT_FLOATING) = TVT_FLOATING then + begin + Resizable := (ViewType and TVT_RESIZABLE) = TVT_RESIZABLE; + Border.X := GetSystemMetrics(XMetrics[Resizable]); + Border.Y := GetSystemMetrics(YMetrics[Resizable]); + Exit; + end + else Sz := 2; + end + else if (ViewType and VT_POPUP) = VT_POPUP then + begin +{$IFNDEF OFFICE2K_COMBOS} + if (ViewType and PVT_LISTBOX) = PVT_LISTBOX then Sz := 1 + else Sz := 3; +{$ELSE} + Sz := 3; +{$ENDIF} + end + else if (ViewType and VT_DOCKPANEL) = VT_DOCKPANEL then + begin + if (ViewType and DPVT_FLOATING) = DPVT_FLOATING then + begin + Resizable := (ViewType and DPVT_RESIZABLE) = DPVT_RESIZABLE; + Border.X := GetSystemMetrics(XMetrics[Resizable]); + Border.Y := GetSystemMetrics(YMetrics[Resizable]); + Exit; + end + else Sz := 2; + end; + Border.X := Sz; + Border.Y := Sz; +end; + +procedure TTBXDefaultTheme.GetMargins(MarginID: Integer; out Margins: TTBXMargins); +var + R, R2: TRect; +begin + with Margins do + case MarginID of + MID_TOOLBARITEM: + begin + LeftWidth := 2; RightWidth := 2; + TopHeight := 2; BottomHeight := 2; + if USE_THEMES then + GetThemeMargins(TOOLBAR_THEME, StockBitmap1.Canvas.Handle, TP_BUTTON, TS_HOT, TMT_CAPTIONMARGINS, + nil, TMargins(Margins)); + end; + + MID_MENUITEM: + begin + LeftWidth := 0; RightWidth := 0; + TopHeight := 2; BottomHeight := 2; + end; + + MID_STATUSPANE: + begin + if USE_THEMES then + begin + R := Rect(0, 0, 100, 100); + GetThemeBackgroundContentRect(STATUSBAR_THEME, StockBitmap1.Canvas.Handle, SP_PANE, 0, R, @R2); + LeftWidth := R2.Left - R.Left; + RightWidth := R.Right - R2.Right; + TopHeight := R2.Top - R.Top; + BottomHeight := R.Bottom - R2.Bottom; + end + else + begin + LeftWidth := 1; RightWidth := 3; + TopHeight := 1; BottomHeight := 1; + end; + end; + else + LeftWidth := 0; RightWidth := 0; + TopHeight := 0; BottomHeight := 0; + end; +end; + +procedure TTBXDefaultTheme.PaintBackgnd(Canvas: TCanvas; const ADockRect, ARect, AClipRect: TRect; + AColor: TColor; Transparent: Boolean; AViewType: Integer); +var + DC: HDC; + R: TRect; +begin + DC := Canvas.Handle; + if not Transparent then + begin + IntersectRect(R, ARect, AClipRect); + FillRectEx(DC, R, AColor); + end; +end; + +procedure TTBXDefaultTheme.PaintCaption(Canvas: TCanvas; + const ARect: TRect; const ItemInfo: TTBXItemInfo; const ACaption: string; + AFormat: Cardinal; Rotated: Boolean); +var + R: TRect; + C: TColor; + InMenuBar, ToolbarStyle: Boolean; + + procedure _Draw(Color: TColor); + begin + Canvas.Font.Color := Color; + if not Rotated then Windows.DrawText(Canvas.Handle, PChar(ACaption), Length(ACaption), R, AFormat) + else DrawRotatedText(Canvas.Handle, ACaption, R, AFormat); + end; + +begin + with ItemInfo, Canvas do + begin + R := ARect; + C := Font.Color; + { Apply theme-dependent color only when Font.Color = clNone } + if C = clNone then C := GetItemTextColor(ItemInfo); + Brush.Style := bsClear; + InMenuBar := (ViewType and TVT_MENUBAR) = TVT_MENUBAR; + ToolbarStyle := Boolean(ItemOptions and IO_TOOLBARSTYLE); + if not ToolbarStyle and not Enabled and (HoverKind = hkKeyboardHover) then _Draw(C) + else if Enabled then + begin + if ToolbarStyle and (Pushed or Selected) and not (InMenuBar and USE_FLATMENUS) then + OffsetRect(R, 1, 1); + _Draw(C); + end + else if USE_THEMES then _Draw(C) + else + begin + OffsetRect(R, 1, 1); + _Draw(clBtnHighlight); + OffsetRect(R, -1, -1); + _Draw(clBtnShadow); + end; + Brush.Style := bsSolid; + end; +end; + +procedure TTBXDefaultTheme.PaintCheckMark(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); +var + X, Y: Integer; +begin + X := (ARect.Left + ARect.Right) div 2 - 1; + Y := (ARect.Top + ARect.Bottom) div 2 + 2; + if ItemInfo.Enabled then Canvas.Pen.Color := clBtnText + else Canvas.Pen.Color := clGrayText; + Canvas.Polyline([Point(X-2, Y-2), Point(X, Y), Point(X+4, Y-4), + Point(X+4, Y-3), Point(X, Y+1), Point(X-2, Y-1), Point(X-2, Y-2)]); + if ItemInfo.Enabled then + begin + Canvas.Pen.Color := clBtnHighlight; + Canvas.Polyline([Point(X-3, Y-2), Point(X-3, Y-1), Point(X, Y+2), + Point(X+5, Y-3), Point(X+5, Y-5)]); + end; +end; + +procedure TTBXDefaultTheme.PaintChevron(Canvas: TCanvas; ARect: TRect; + const ItemInfo: TTBXItemInfo); +const + Pattern: array [Boolean, 0..15] of Byte = ( + ($CC, 0, $66, 0, $33, 0, $66, 0, $CC, 0, 0, 0, 0, 0, 0, 0), + ($88, 0, $D8, 0, $70, 0, $20, 0, $88, 0, $D8, 0, $70, 0, $20, 0)); +var + DC: HDC; + R2: TRect; + P: PByte; + W, H: Integer; +begin + DC := Canvas.Handle; + R2 := ARect; + PaintButton(Canvas, R2, ItemInfo); + + if not ItemInfo.IsVertical then + begin + Inc(R2.Top, 4); + R2.Bottom := R2.Top + 5; + W := 8; + H := 5; + end + else + begin + R2.Left := R2.Right - 9; + R2.Right := R2.Left + 5; + W := 5; + H := 8; + end; + if ItemInfo.Pushed then OffsetRect(R2, 1, 1); + + P := @Pattern[ItemInfo.IsVertical][0]; + if ItemInfo.Enabled then DrawGlyph(DC, R2, W, H, P^, clBtnText) + else + begin + OffsetRect(R2, 1, 1); + DrawGlyph(DC, R2, W, H, P^, clBtnHighlight); + OffsetRect(R2, -1, -1); + DrawGlyph(DC, R2, W, H, P^, clBtnShadow); + end; +end; + +procedure TTBXDefaultTheme.PaintEditButton(Canvas: TCanvas; const ARect: TRect; + var ItemInfo: TTBXItemInfo; ButtonInfo: TTBXEditBtnInfo); +var + DC: HDC; + BtnDisabled, BtnHot, BtnPressed, Embedded: Boolean; + StateFlags: Integer; + R, BR: TRect; + C: TColor; + X, Y: Integer; + + procedure DrawEnabled(var R: TRect); + begin + if BtnPressed then + Windows.DrawEdge(Canvas.Handle, R, BDR_SUNKENOUTER, BF_RECT or BF_ADJUST) + else if BtnHot then + Windows.DrawEdge(Canvas.Handle, R, BDR_RAISEDINNER, BF_RECT or BF_ADJUST) + else if not Embedded then + FrameRectEx(DC, R, clWindow, False); + end; + + procedure DrawUp; + begin + X := (R.Left + R.Right) div 2 + Ord(BtnPressed); + Y := (R.Top * 3 + R.Bottom + 3) div 4 + Ord(BtnPressed); + if not BtnDisabled then + begin + if Boolean(ItemInfo.ItemOptions and IO_TOOLBARSTYLE) then C := clPopupText + else C := clBtnText; + end + else with Canvas do + begin + Inc(X); Inc(Y); + Pen.Color := clBtnHighlight; Brush.Color := clBtnHighlight; + Polygon([Point(X - 2, Y), Point(X + 2, Y), Point(X, Y - 2)]); + Dec(X); Dec(Y); + C := clBtnShadow; + end; + Canvas.Pen.Color := C; Canvas.Brush.Color := C; + Canvas.Polygon([Point(X - 2, Y), Point(X + 2, Y), Point(X, Y - 2)]) + end; + + procedure DrawDn; + begin + X := (R.Left + R.Right) div 2 + Ord(BtnPressed); + Y := (R.Top + R.Bottom * 3 - 4) div 4 + Ord(BtnPressed); + if not BtnDisabled then + begin + if Boolean(ItemInfo.ItemOptions and IO_TOOLBARSTYLE) then C := clPopupText + else C := clBtnText; + end + else with Canvas do + begin + Inc(X); Inc(Y); + Pen.Color := clBtnHighlight; Brush.Color := clBtnHighlight; + Polygon([Point(X - 2, Y), Point(X + 2, Y), Point(X, Y + 2)]); + Dec(X); Dec(Y); + C := clBtnShadow; + end; + Canvas.Pen.Color := C; Canvas.Brush.Color := C; + Canvas.Polygon([Point(X - 2, Y), Point(X + 2, Y), Point(X, Y + 2)]) + end; + +begin + DC := Canvas.Handle; + R := ARect; + with Canvas, ItemInfo do + begin + Embedded := ((ViewType and VT_TOOLBAR) = VT_TOOLBAR) and + ((ViewType and TVT_EMBEDDED) = TVT_EMBEDDED); + + if ButtonInfo.ButtonType = EBT_DROPDOWN then + begin + { DropDown button } + BtnDisabled := (ButtonInfo.ButtonState and EBDS_DISABLED) <> 0; + BtnHot := (ButtonInfo.ButtonState and EBDS_HOT) <> 0; + BtnPressed := (ButtonInfo.ButtonState and EBDS_PRESSED) <> 0; + if USE_THEMES then + begin + if BtnDisabled then StateFlags := CBXS_DISABLED + else if BtnPressed then StateFlags := CBXS_PRESSED + else if BtnHot then StateFlags := CBXS_HOT + else StateFlags := CBXS_NORMAL; + if BtnHot then InflateRect(R, 1, 1); + DrawThemeBackground(COMBO_THEME, Handle, CP_DROPDOWNBUTTON, StateFlags, R, nil); + end + else + begin + Inc(R.Left, 2); + if not BtnDisabled then with R do + begin + if Embedded then FillRectEx(DC, R, clBtnFace); + if BtnPressed or BtnHot then + DrawLineEx(DC, Left - 1, Top, Left - 1, Bottom + 1, ToolbarColor) + else if Embedded then + DrawLineEx(DC, Left - 1, Top, Left - 1, Bottom, clBtnShadow) + else + DrawLineEx(DC, Left - 1, Top, Left - 1, Bottom, clWindow); + DrawEnabled(R); + end; + PaintDropDownArrow(Canvas, R, ItemInfo); + end; + end + else if ButtonInfo.ButtonType = EBT_SPIN then + begin + { Paint spin buttons } + BtnDisabled := (ButtonInfo.ButtonState and EBSS_DISABLED) <> 0; + BtnHot := (ButtonInfo.ButtonState and EBSS_HOT) <> 0; + if USE_THEMES then + begin + if BtnHot then InflateRect(R, 1, 1); + + { Upper with XP themes } + BR := R; + BR.Bottom := (R.Top + R.Bottom - 1) div 2; + BtnPressed := (ButtonInfo.ButtonState and EBSS_UP) <> 0; + if BtnDisabled then StateFlags := UPS_DISABLED + else if BtnPressed then StateFlags := UPS_PRESSED + else if BtnHot then StateFlags := UPS_HOT + else StateFlags := UPS_NORMAL; + DrawThemeBackground(SPIN_THEME, Handle, SPNP_UP, StateFlags, BR, nil); + + { Lower with XP themes } + BR := R; + BR.Top := (R.Top + R.Bottom) div 2; + BtnPressed := (ButtonInfo.ButtonState and EBSS_DOWN) <> 0; + if BtnDisabled then StateFlags := DNS_DISABLED + else if BtnPressed then StateFlags := DNS_PRESSED + else if BtnHot then StateFlags := DNS_HOT + else StateFlags := DNS_NORMAL; + DrawThemeBackground(SPIN_THEME, Handle, SPNP_DOWN, StateFlags, BR, nil); + end + else + begin + Inc(R.Left, 2); + + if not BtnDisabled then with R do + if BtnPressed or BtnHot then + DrawLineEx(DC, Left - 1, Top - 1, Left - 1, Bottom + 1, ToolbarColor) + else if Embedded then + DrawLineEx(DC, Left - 1, Top, Left - 1, Bottom, clBtnShadow) + else + DrawLineEx(DC, Left - 1, Top, Left - 1, Bottom, clWindow); + + + BR := R; + BR.Bottom := (R.Top + R.Bottom + 1) div 2; + BtnPressed := (ButtonInfo.ButtonState and EBSS_UP) <> 0; + if BtnHot or BtnPressed then Dec(BR.Bottom); + if not BtnDisabled then DrawEnabled(BR); + DrawUp; + + BR := R; + BR.Top := (R.Top + R.Bottom) div 2; + BtnPressed := (ButtonInfo.ButtonState and EBSS_DOWN) <> 0; + if BtnHot or BtnPressed then Inc(BR.Top); + if not BtnDisabled then DrawEnabled(BR); + DrawDn; + end; + end; + end; +end; + +procedure TTBXDefaultTheme.PaintEditFrame(Canvas: TCanvas; + const ARect: TRect; var ItemInfo: TTBXItemInfo; const EditInfo: TTBXEditInfo); +var + R: TRect; + W: Integer; +begin + R := ARect; + PaintFrame(Canvas, R, ItemInfo); + W := EditFrameWidth; + InflateRect(R, -W, -W); + with EditInfo do if RightBtnWidth > 0 then Dec(R.Right, RightBtnWidth - 2); + Canvas.Brush.Color := clWindow; + if ItemInfo.Enabled then Canvas.FillRect(R); + with EditInfo do if LeftBtnWidth > 0 then Inc(R.Left, LeftBtnWidth - 2); + if EditInfo.RightBtnWidth > 0 then + begin + R := ARect; + InflateRect(R, -W, -W); + R.Left := R.Right - EditInfo.RightBtnWidth; + PaintEditButton(Canvas, R, ItemInfo, EditInfo.RightBtnInfo); + end; +end; + +procedure TTBXDefaultTheme.PaintDropDownArrow(Canvas: TCanvas; + const ARect: TRect; const ItemInfo: TTBXItemInfo); +var + X, Y: Integer; + + procedure Draw(AColor: TColor); + begin + Canvas.Pen.Color := AColor; + Canvas.Brush.Color := AColor; + if ItemInfo.IsVertical then Canvas.Polygon([Point(X, Y + 2), Point(X, Y - 2), Point(X - 2, Y)]) + else Canvas.Polygon([Point(X - 2, Y), Point(X + 2, Y), Point(X, Y + 2)]); + end; + +begin + with ItemInfo, ARect do + begin + X := (Left + Right) div 2; + Y := (Top + Bottom) div 2 - 1; + + if (Pushed or Selected) and (ComboPart <> cpSplitRight) then + begin + Inc(X); Inc(Y); + end; + + if Enabled then + begin + if Boolean(ItemOptions and IO_TOOLBARSTYLE) then Draw(clPopupText) + else Draw(clBtnText); + end + else + begin + Inc(X); Inc(Y); + Draw(clBtnHighlight); + Dec(X); Dec(Y); + Draw(clBtnShadow); + end; + end; +end; + +procedure TTBXDefaultTheme.PaintButton(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); +const + XPPart: array [TTBXComboPart] of Integer = (TP_BUTTON, TP_DROPDOWNBUTTON, + TP_SPLITBUTTON, TP_SPLITBUTTONDROPDOWN); + Edge: array [Boolean] of Integer = (BDR_RAISEDINNER, EDGE_RAISED); +var + R: TRect; + Flags, RegionFlags: Cardinal; + InMenuBar, ShowHover, Embedded, ShowFlatSL: Boolean; + Region: HRGN; + DC: HDC; + Brush, OldBrush: HBrush; +begin + R := ARect; + DC := Canvas.Handle; + with ItemInfo do + begin + ShowHover := (Enabled and (HoverKind <> hkNone)) or + (not Enabled and (HoverKind = hkKeyboardHover)); + + InMenuBar := (ViewType and TVT_MENUBAR) = TVT_MENUBAR; + Embedded := ((ViewType and VT_TOOLBAR) = VT_TOOLBAR) and + ((ViewType and TVT_EMBEDDED) = TVT_EMBEDDED); + + if not InMenuBar and USE_THEMES then + begin + { The support for XP themes in menus is not yet implemented since standard + XP themes seem to have no theming for menus } + + if not Enabled then + begin + if HoverKind = hkKeyboardHover then Flags := TS_HOT + else Flags := TS_DISABLED; + end + else if ItemInfo.Pushed then Flags := TS_PRESSED + else if ItemInfo.Selected then + begin + if HoverKind <> hkNone then Flags := TS_HOTCHECKED + else Flags := TS_CHECKED; + end + else if HoverKind <> hkNone then Flags := TS_HOT + else Flags := TS_NORMAL; + + if Embedded or Boolean(ItemOptions and IO_DESIGNING) then + begin + { There is no state for non-transparent normal toolbar button, trying to + simulate it with regions... } + RegionFlags := TS_HOT; + if ComboPart = cpSplitRight then Dec(R.Left); + GetThemeBackgroundRegion(TOOLBAR_THEME, Canvas.Handle, XPPart[ComboPart], RegionFlags, R, Region); + if ComboPart = cpSplitRight then Inc(R.Left); + if Embedded or not Boolean(ItemOptions and IO_DESIGNING) then + begin + Brush := CreateBrushEx(ToolbarColor); + OldBrush := SelectObject(DC, Brush); + FillRgn(DC, Region, Brush); + SelectObject(DC, OldBrush); + DeleteObject(Brush); + end; + Brush := CreateBrushEx(clBtnShadow); + OldBrush := SelectObject(DC, Brush); + FrameRgn(DC, Region, Brush, 1, 1); + SelectObject(DC, OldBrush); + DeleteObject(Brush); + DeleteObject(Region); + end; + + DrawThemeBackground(TOOLBAR_THEME, DC, XPPart[ComboPart], Flags, R, nil); + end + else + begin + if InMenuBar and USE_FLATMENUS then + begin + if ((Pushed or Selected) and Enabled) or ShowHover then + FillRectEx(DC, R, clHighlight); + Exit; + end; +{$IFDEF NARROWCOMBOBUTTON} + if (ItemInfo.ComboPart = cpSplitRight) and not (InMenuBar or USE_THEMES) then Dec(R.Right, 2); +{$ENDIF} + if USE_FLATMENUS and (((Pushed or Selected) and Enabled) or ShowHover) then + FillRectEx(DC, R, ToolbarColor); + if Embedded then with Canvas do + begin + Flags := BF_RECT or BF_MIDDLE or BF_ADJUST; + if not ShowHover or (Pushed or Selected or not Enabled) then Flags := Flags or BF_FLAT; + ShowFlatSL := (ComboPart = cpSplitLeft) and not (ShowHover or Pushed); + if ShowFlatSL then Inc(R.Right); + Windows.DrawEdge(Handle, R, EDGE_RAISED, Flags); + if Selected and Enabled and (HoverKind = hkNone) then + DitherRect(DC, R, ToolbarColor, clBtnHighlight); + if ShowFlatSL then Dec(R.Right); + end + else if (Pushed or Selected) and Enabled then with Canvas do + begin + Windows.DrawEdge(Handle, R, BDR_SUNKENOUTER, BF_RECT or BF_ADJUST); + if not Pushed and (HoverKind = hkNone) then + DitherRect(DC, R, ToolbarColor, clBtnHighlight); + end + else if ShowHover or Boolean(ItemOptions and IO_DESIGNING) then + Windows.DrawEdge(Canvas.Handle, R, BDR_RAISEDINNER, BF_RECT); + if ComboPart = cpSplitRight then PaintDropDownArrow(Canvas, R, ItemInfo); + end; + end; +end; + +procedure TTBXDefaultTheme.PaintFloatingBorder(Canvas: TCanvas; const ARect: TRect; const WindowInfo: TTBXWindowInfo); +const + SPI_GETGRADIENTCAPTIONS = $1008; + DC_GRADIENT = $20; + ActiveCaptionFlags: array [Boolean] of Integer = (0, DC_ACTIVE); + GradientCaptionFlags: array [Boolean] of Integer = (0, DC_GRADIENT); + CaptionBkColors: array [Boolean, Boolean] of Integer = + ((COLOR_INACTIVECAPTION, COLOR_ACTIVECAPTION), + (COLOR_GRADIENTINACTIVECAPTION, COLOR_GRADIENTACTIVECAPTION)); + ButtonStateFlags: array [Boolean] of Integer = (0, DFCS_PUSHED); +var + R, R2: TRect; + DC: HDC; + Flags: Integer; + Gradient, ShowCloseBtn: Boolean; + B: BOOL; +begin + DC := Canvas.Handle; + + with WindowInfo do + if not USE_THEMES then + begin + R := ARect; + if (WRP_BORDER and RedrawPart) <> 0 then + begin + R2 := R; + with FloatingBorderSize do InflateRect(R2, -X, -Y); + SaveDC(DC); + with R2 do ExcludeClipRect(DC, Left, Top, Right, Bottom); + Windows.DrawEdge(DC, R, EDGE_RAISED, BF_RECT or BF_MIDDLE); + RestoreDC(DC, -1); + end; + + if not WindowInfo.ShowCaption then Exit; + Gradient := SystemParametersInfo(SPI_GETGRADIENTCAPTIONS, 0, @B, 0) and B; + ShowCloseBtn := (CDBS_VISIBLE and CloseButtonState) <> 0; + R := GetTBXCloseButtonRect(WindowInfo, True); + + if (WRP_CAPTION and RedrawPart) <> 0 then + begin + if ShowCloseBtn then + begin + SaveDC(DC); + with R do ExcludeClipRect(DC, Left, Top, Right, Bottom); + end; + R2 := GetTBXCaptionRect(WindowInfo, True, ShowCloseBtn); + DrawCaption(ParentHandle, DC, R2, DC_TEXT or DC_SMALLCAP or + ActiveCaptionFlags[Active] or GradientCaptionFlags[Gradient]); + if ShowCloseBtn then RestoreDC(DC, -1); + R2 := GetTBXCaptionRect(WindowInfo, True, False); + R2.Top := R2.Bottom; + Inc(R2.Bottom); + FillRect(DC, R2, GetSysColorBrush(COLOR_BTNFACE)); + end; + + if ShowCloseBtn then + begin + R2 := R; + InflateRect(R2, -2, -2); + if (WRP_CAPTION and RedrawPart) <> 0 then + begin + SaveDC(DC); + with R2 do ExcludeClipRect(DC, Left, Top, Right, Bottom); + FillRect(DC, R, GetSysColorBrush(CaptionBkColors[Gradient, WindowInfo.Active])); + RestoreDC(DC, -1); + end; + if (WRP_CLOSEBTN and RedrawPart) <> 0 then + DrawFrameControl(DC, R2, DFC_CAPTION, DFCS_CAPTIONCLOSE or + ButtonStateFlags[(CDBS_PRESSED and CloseButtonState) <> 0]); + end; + end + else { Use WindowsXP visual styles } + begin + if (WRP_BORDER and RedrawPart) <> 0 then + begin + if Active then Flags := FS_ACTIVE else Flags := FS_INACTIVE; + R := ARect; + R.Top := R.Bottom - FloatingBorderSize.Y; + DrawThemeBackground(WINDOW_THEME, DC, WP_SMALLFRAMEBOTTOM, Flags, R, nil); + R.Top := ARect.Top; + R.Bottom := R.Top + FloatingBorderSize.Y; + {if WindowInfo.ShowCaption then} { TODO : how to paint a captionless window frame } + Inc(R.Bottom, GetSystemMetrics(SM_CYSMCAPTION)); + DrawThemeBackground(WINDOW_THEME, DC, WP_SMALLCAPTION, Flags, R, nil); + R.Top := R.Bottom; + R.Bottom := ARect.Bottom - FloatingBorderSize.Y; + R.Right := R.Left + FloatingBorderSize.X; + DrawThemeBackground(WINDOW_THEME, DC, WP_SMALLFRAMELEFT, Flags, R, nil); + R.Right := ARect.Right; + R.Left := R.Right - FloatingBorderSize.X; + DrawThemeBackground(WINDOW_THEME, DC, WP_SMALLFRAMERIGHT, Flags, R, nil); + end; + + if not ShowCaption then Exit; + + { Get the caption area } + R := ARect; + with FloatingBorderSize do InflateRect(R, -X, -Y); + Dec(R.Bottom, ClientHeight); + + if (WRP_CAPTION and RedrawPart) <> 0 then + begin + R2 := R; + if ((CDBS_VISIBLE and CloseButtonState) <> 0) and ((WRP_CLOSEBTN and RedrawPart) <> 0) then + Dec(R2.Right, GetSystemMetrics(SM_CYSMCAPTION)); + + Canvas.Font.Assign(SmCaptionFont); + if Active then Canvas.Font.Color := clCaptionText + else Canvas.Font.Color := clInactiveCaptionText; + Canvas.Brush.Style := bsClear; + + { This is strange... the DrawThemeText function refuses to work... + Use standard API... } + DrawText(Canvas.Handle, WindowInfo.Caption, -1, R2, + DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS or DT_HIDEPREFIX); + + Canvas.Brush.Style := bsSolid; + end; + + if (CDBS_VISIBLE and CloseButtonState) <> 0 then + begin + Dec(R.Bottom); + R.Left := R.Right - R.Bottom + R.Top; + InflateRect(R, -2, -2); + if (CDBS_PRESSED and CloseButtonState) <> 0 then Flags := CBS_PUSHED + else if (CDBS_HOT and CloseButtonState) <> 0 then Flags := CBS_HOT + else Flags := CBS_NORMAL; + DrawThemeBackground(WINDOW_THEME, DC, WP_SMALLCLOSEBUTTON, Flags, R, nil); + end; + end; +end; + +procedure TTBXDefaultTheme.PaintFrame(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); +var + DC: HDC; + R: TRect; + E, Embedded: Boolean; + Flags, Border: Integer; + C: TColor; +begin + R := ARect; + DC := Canvas.Handle; + with ItemInfo do + begin + E := (Enabled and (HoverKind <> hkNone)) or + (not Enabled and (HoverKind = hkKeyboardHover)); + Embedded := ((ViewType and VT_TOOLBAR) = VT_TOOLBAR) and + ((ViewType and TVT_EMBEDDED) = TVT_EMBEDDED); + if USE_THEMES then + begin + InflateRect(R, -1, -1); + if Embedded then C := clBtnShadow + else C := ToolbarColor; + FrameRectEx(DC, R, C, False); + InflateRect(R, 1, 1); + if Pushed or Selected or E or ((ItemOptions and IO_DESIGNING) <> 0) + then DrawThemeBackground(COMBO_THEME, DC, 0, 0, R, nil); + InflateRect(R, -2, -2); + FrameRectEx(DC, R, clWindow, False); + end + else + begin + if Embedded then + begin + Flags := BF_RECT; + if not (Pushed or Selected or E) then + begin + InflateRect(R, -1, -1); + Flags := Flags or BF_FLAT; + Border := BDR_SUNKENOUTER; + end + else Border := EDGE_SUNKEN; + Windows.DrawEdge(DC, R, Border, Flags); + if (Pushed or Selected or E) then InflateRect(R, -1, -1); + end + else + begin + if Pushed or Selected or E or ((ItemOptions and IO_DESIGNING) <> 0) then + Windows.DrawEdge(DC, R, BDR_SUNKENOUTER, BF_RECT); + InflateRect(R, -1, -1); + FrameRectEx(DC, R, ToolbarColor, True); + FrameRectEx(DC, R, clWindow, False); + end; + end; + end; +end; + +function TTBXDefaultTheme.GetImageOffset(Canvas: TCanvas; const ItemInfo: TTBXItemInfo; + ImageList: TCustomImageList): TPoint; +const + Offsets: array [Boolean] of TPoint = ((X:0; Y:0), (X:1; Y:1)); +begin + with ItemInfo do + Result := Offsets[Pushed or Selected]; +end; + +procedure TTBXDefaultTheme.PaintImage(Canvas: TCanvas; ARect: TRect; + const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList; ImageIndex: Integer); +var + BgColor: TColor; + HiContrast: Boolean; + IsMenuItem: Boolean; +begin + with ItemInfo do + begin + if ImageList is TTBCustomImageList then + begin + if Pushed or Selected then OffsetRect(ARect, 1, 1); + TTBCustomImageList(ImageList).DrawState(Canvas, ARect.Left, ARect.Top, + ImageIndex, Enabled, (HoverKind <> hkNone), Selected); + Exit; + end; + + IsMenuItem := ((ViewType and PVT_POPUPMENU) = PVT_POPUPMENU) and + ((ItemOptions and IO_TOOLBARSTYLE) = 0); + + if (IsMenuItem and USE_FLATMENUS) or (not IsMenuItem and USE_THEMES) then + begin + { The icon painting here is not really made by the uxtheme.dll, this is + just a simulation until I figure out how to work with DrawThemedIcon function } + if Pushed or Selected then OffsetRect(ARect, 1, 1); + BgColor := GetItemImageBackground(ItemInfo); + HiContrast := not IsMenuItem and IsDarkColor(BGColor); + if not Enabled then + DrawTBXIconShadow(Canvas, ARect, ImageList, ImageIndex, 0) + else if Selected or Pushed or (HoverKind <> hkNone) then + DrawTBXIcon(Canvas, ARect, ImageList, ImageIndex, HiContrast) + else if HiContrast or TBXHiContrast or TBXLoColor then + DrawTBXIcon(Canvas, ARect, ImageList, ImageIndex, HiContrast) + else + HighlightTBXIcon(Canvas, ARect, ImageList, ImageIndex, clWindow, 178); + end + else + begin + if Pushed or Selected then OffsetRect(ARect, 1, 1); + ImageList.Draw(Canvas, ARect.Left, ARect.Top, ImageIndex, Enabled); + end; + end; +end; + +procedure TTBXDefaultTheme.PaintMDIButton(Canvas: TCanvas; ARect: TRect; + const ItemInfo: TTBXItemInfo; ButtonKind: Cardinal); +const + PushedFlags: array[Boolean] of UINT = (0, DFCS_PUSHED); +var + XPPart, XPFlags: Cardinal; +begin + if USE_THEMES then + begin + case ButtonKind of + DFCS_CAPTIONMIN: XPPart := WP_MDIMINBUTTON; + DFCS_CAPTIONRESTORE: XPPart := WP_MDIRESTOREBUTTON; + DFCS_CAPTIONCLOSE: XPPart := WP_MDICLOSEBUTTON; + else + XPPart := 0; + end; + if ItemInfo.Pushed then XPFlags := CBS_PUSHED + else if ItemInfo.HoverKind <> hkNone then XPFlags := CBS_HOT + else XPFlags := CBS_NORMAL; + DrawThemeBackground(WINDOW_THEME, Canvas.Handle, XPPart, XPFLags, ARect, nil); + end + else + begin + DrawFrameControl(Canvas.Handle, ARect, DFC_CAPTION, + ButtonKind or PushedFlags[ItemInfo.Pushed]); + end; +end; + +procedure TTBXDefaultTheme.PaintMenuItemFrame(Canvas: TCanvas; + const ARect: TRect; const ItemInfo: TTBXItemInfo); +var + DC: HDC; +begin + DC := Canvas.Handle; + with ItemInfo do if (Enabled and (HoverKind <> hkNone)) or + (not Enabled and (HoverKind = hkKeyboardHover)) then + FillRectEx(DC, ARect, clHighlight); +end; + +procedure TTBXDefaultTheme.PaintMenuItem(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo); +var + DC: HDC; + R: TRect; + ShowImageOrCheck: Boolean; + ShowHover: Boolean; + IsComboItem: Boolean; + X, Y: Integer; + ArrowWidth: Integer; + + procedure DrawArrow(AColor: TColor); + begin + PolygonEx(DC, [Point(X, Y - 3), Point(X, Y + 3), Point(X + 3, Y)], AColor, AColor); + end; + +begin + DC := Canvas.Handle; + with ItemInfo do + begin + ShowImageOrCheck := (ImageWidth > 0) or Selected; + ShowHover := (Enabled and (HoverKind <> hkNone)) or + (not Enabled and (HoverKind = hkKeyboardHover)); + ArrowWidth := GetSystemMetrics(SM_CXMENUCHECK); + + R := ARect; + if ShowImageOrCheck then Inc(R.Left, ItemInfo.PopupMargin + MenuImageTextSpace); + IsComboItem := ((ItemOptions and IO_COMBO) <> 0); + if IsComboItem and Enabled then Dec(R.Right, ArrowWidth); + + PaintMenuItemFrame(Canvas, R, ItemInfo); + + if IsComboItem then + begin + R.Left := ARect.Right - ArrowWidth; + R.Right := ARect.Right; + if Enabled and (HoverKind <> hkNone) then + Windows.DrawEdge(DC, R, BDR_SUNKENOUTER, BF_RECT) + else + begin + Dec(R.Left); + if not ShowHover then DrawEdge(DC, R, EDGE_ETCHED, BF_LEFT) + else DrawEdge(DC, R, BDR_SUNKENOUTER, BF_LEFT); + end; + end; + + if (ItemOptions and IO_SUBMENUITEM) <> 0 then + begin + Y := ARect.Bottom div 2; + X := ARect.Right - ArrowWidth * 2 div 3 - 2; + if not Enabled then + begin + if HoverKind = hkKeyboardHover then DrawArrow(clBtnShadow) + else + begin + Inc(X); Inc(Y); + DrawArrow(clBtnHighlight); + Dec(X); Dec(Y); + DrawArrow(clBtnShadow); + end; + end + else if (HoverKind <> hkNone) and not IsComboItem then DrawArrow(clHighlightText) + else DrawArrow(clPopupText); + end; + + if Enabled and ShowImageOrCheck and ((HoverKind <> hkNone) or Selected) then + begin + R.Left := ARect.Left; + R.Right := R.Left + ItemInfo.PopupMargin; + if USE_FLATMENUS then FillRectEx(DC, R, ToolbarColor); + PaintButton(Canvas, R, ItemInfo); + end; + end; +end; + +procedure TTBXDefaultTheme.PaintPopupNCArea(Canvas: TCanvas; R: TRect; const PopupInfo: TTBXPopupInfo); +var + DC: HDC; +begin + DC := Canvas.Handle; + +{$IFNDEF OFFICE2K_COMBOS} + if (PopupInfo.ViewType and PVT_LISTBOX) = PVT_LISTBOX then + begin + FrameRectEx(DC, R, clWindowFrame, True); + FrameRectEx(DC, R, clWindow, True); + FrameRectEx(DC, R, clWindow, False); + end + else +{$ENDIF} + if USE_FLATMENUS and ((PopupInfo.ViewType and PVT_TOOLBOX) <> PVT_TOOLBOX) then + begin + FrameRectEx(DC, R, clBtnShadow, True); + FrameRectEx(DC, R, clPopup, True); + FrameRectEx(DC, R, clPopup, False); + end + else if (PopupInfo.ViewType and PVT_TOOLBOX) = PVT_TOOLBOX then + begin + Windows.DrawEdge(DC, R, EDGE_RAISED, BF_RECT or BF_ADJUST); + FrameRectEx(DC, R, ToolbarColor, False); + end + else + begin + Windows.DrawEdge(DC, R, EDGE_RAISED, BF_RECT or BF_ADJUST); + FrameRectEx(DC, R, clPopup, False); + end; +end; + +procedure TTBXDefaultTheme.PaintSeparator(Canvas: TCanvas; ARect: TRect; + ItemInfo: TTBXItemInfo; Horizontal, LineSeparator: Boolean); +const + XPFlags: array [Boolean] of Integer = (TP_SEPARATOR, TP_SEPARATORVERT); +var + D: Integer; +begin + { Note: for blank separators, Enabled = False } + with ItemInfo, ARect do if Enabled then + begin + if not USE_THEMES or ((ViewType and PVT_POPUPMENU) = PVT_POPUPMENU) then + begin + D := 0; + if LineSeparator then + if (ViewType and TVT_FLOATING) <> 0 then D := 1 + else D := 4; + + if Horizontal then + begin + if (ItemOptions and IO_TOOLBARSTYLE) = 0 then D := 12; + Top := (Top + Bottom) div 2 - 1; + Inc(Left, D); Dec(Right, D); + Windows.DrawEdge(Canvas.Handle, ARect, EDGE_ETCHED, BF_TOP); + end + else + begin + Left := (Left + Right) div 2 - 1; + Inc(Top, D); Dec(Bottom, D); + Windows.DrawEdge(Canvas.Handle, ARect, EDGE_ETCHED, BF_LEFT); + end; + end + else + DrawThemeBackground(TOOLBAR_THEME, Canvas.Handle, XPFlags[Horizontal], TS_NORMAL, ARect, nil); + end; +end; + +procedure TTBXDefaultTheme.PaintToolbarNCArea(Canvas: TCanvas; R: TRect; const ToolbarInfo: TTBXToolbarInfo); +const + DragHandleSizes: array [Boolean, DHS_DOUBLE..DHS_SINGLE] of Integer = ((9, 0, 6), (14, 14, 14)); + DragHandleOffsets: array [Boolean, DHS_DOUBLE..DHS_SINGLE] of Integer = ((2, 0, 2), (3, 0, 5)); + GripperPart: array [Boolean] of Cardinal = (RP_GRIPPER, RP_GRIPPERVERT); + Pattern: array [0..15] of Byte = (0, 0, $CC, 0, $78, 0, $30, 0, $78, 0, $CC, 0, 0, 0, 0, 0); +var +// DC: HDC; + DHSize: Integer; +// Sz: TSize; + R2: TRect; + Flags: Cardinal; + Z: Integer; + BtnVisible, Horz, CloseButtondown, CloseButtonHover: Boolean; +begin +{ DC := Canvas.Handle; + if ToolbarInfo.EffectiveColor <> clNone then FillRectEx(DC, R, ToolbarInfo.EffectiveColor); } + Canvas.FillRect(R); + + { Border } + if ToolbarInfo.BorderStyle = bsSingle then + if USE_THEMES then + begin + Frame3D(Canvas.Handle, R, Lighten(ToolbarInfo.EffectiveColor, 24), Lighten(ToolbarInfo.EffectiveColor, -32), False); +// DrawThemeEdge(TOOLBAR_THEME, Canvas.Handle, RP_BAND, 0, R, BDR_RAISEDINNER, BF_RECT or BF_ADJUST, @R) + end + else + Windows.DrawEdge(Canvas.Handle, R, BDR_RAISEDINNER, BF_RECT or BF_ADJUST); + + if not ToolbarInfo.AllowDrag then Exit; + + BtnVisible := (ToolbarInfo.CloseButtonState and CDBS_VISIBLE) <> 0; + Horz := not ToolbarInfo.IsVertical; + + DHSize := GetTBXDragHandleSize(ToolbarInfo); + if Horz then R.Right := R.Left + DHSize + else R.Bottom := R.Top + DHSize; + + { Drag handle area } + if ToolbarInfo.DragHandleStyle <> DHS_NONE then + begin + if USE_THEMES then + begin + R2 := R; + if BtnVisible then + if Horz then Inc(R2.Top, DHSize - 1) + else Dec(R2.Right, DHSize - 1); + + { Since GetThemePartSize does not seem to work properly, assume we use default + WindowsXP themes where the gripper pattern repeats itself every 4 pixels } + + if Horz then + begin + R2.Left := (R2.Left + R2.Right - 6) div 2; + R2.Right := R2.Left + 6; + Z := R2.Bottom - R2.Top; + R2.Top := R2.Top - 1 + (Z and $3) shr 1; + R2.Bottom := R2.Top + Z and not $3 + 1; + end + else + begin + R2.Top := (R2.Top + R2.Bottom - 6) div 2; + R2.Bottom := R2.Top + 6; + Z := R2.Right - R2.Left; + R2.Left := R2.Left - 1 + (Z and $3) shr 1; + R2.Right := R2.Left + Z and not $3 + 2; + end; + + DrawThemeBackground(REBAR_THEME, Canvas.Handle, GripperPart[ToolbarInfo.IsVertical], 0, R2, nil) + end + else + begin + R2 := R; + if Horz then + begin + Inc(R2.Left, DragHandleOffsets[BtnVisible, ToolbarInfo.DragHandleStyle]); + if BtnVisible then Inc(R2.Top, DHSize - 2); + R2.Right := R2.Left + 3; + InflateRect(R2, 0, -1); + end + else + begin + Inc(R2.Top, DragHandleOffsets[BtnVisible, ToolbarInfo.DragHandleStyle]); + if BtnVisible then Dec(R2.Right, DHSize - 2); + R2.Bottom := R2.Top + 3; + InflateRect(R2, -1, 0); + end; + + Windows.DrawEdge(Canvas.Handle, R2, BDR_RAISEDINNER, BF_RECT); + Canvas.Pixels[R2.Left, R2.Bottom - 1] := clBtnHighlight; + if ToolbarInfo.DragHandleStyle = DHS_DOUBLE then + begin + if Horz then OffsetRect(R2, 3, 0) + else OffsetRect(R2, 0, 3); + Windows.DrawEdge(Canvas.Handle, R2, BDR_RAISEDINNER, BF_RECT); + Canvas.Pixels[R2.Left, R2.Bottom - 1] := clBtnHighlight; + end; + end; + end; + + { Close Button } + if BtnVisible then + begin + CloseButtonDown := (ToolbarInfo.CloseButtonState and CDBS_PRESSED) <> 0; + CloseButtonHover := (ToolbarInfo.CloseButtonState and CDBS_HOT) <> 0; + R2 := GetTBXDockedCloseButtonRect(ToolbarInfo); + Z := 2; + if USE_THEMES then Z := 1; + if Horz then + begin + Dec(R2.Bottom, Z); + Dec(R2.Right, Z); + end + else + begin + Dec(R2.Bottom, Z); + Inc(R2.Left, Z); + end; + if USE_THEMES then + begin + Flags := TS_NORMAL; + if CloseButtonDown then Flags := TS_PRESSED + else if CloseButtonHover then Flags := TS_HOT; + DrawThemeBackground(TOOLBAR_THEME, Canvas.Handle, TP_BUTTON, Flags, R2, nil); + if CloseButtonDown then OffsetRect(R2, 1, 1); + DrawGlyph(Canvas.Handle, R2, 7, 7, Pattern[0], clBtnText); + end + else + begin + if CloseButtonDown then + begin + Windows.DrawEdge(Canvas.Handle, R2, BDR_SUNKENOUTER, BF_RECT); + OffsetRect(R2, 1, 1); + end + else if CloseButtonHover then + Windows.DrawEdge(Canvas.Handle, R2, BDR_RAISEDINNER, BF_RECT); + DrawGlyph(Canvas.Handle, R2, 7, 7, Pattern[0], clBtnText); + end; + end; +end; + +procedure TTBXDefaultTheme.PaintDock(Canvas: TCanvas; const ClientRect, DockRect: TRect; DockPosition: Integer); +var + R: TRect; +begin + if not USE_THEMES then Exit; + if DockPosition in [DP_LEFT, DP_RIGHT] then + begin + R := DockRect; + Inc(R.Bottom, 1); + DrawThemeBackground(REBAR_THEME, Canvas.Handle, 0, 0, R, nil); + end + else DrawThemeBackground(REBAR_THEME, Canvas.Handle, 0, 0, DockRect, nil); +end; + +procedure TTBXDefaultTheme.PaintDockPanelNCArea(Canvas: TCanvas; R: TRect; const DockPanelInfo: TTBXDockPanelInfo); +var + DC: HDC; + Sz: Integer; + R2: TRect; + Flags: Integer; + CloseButtonDown, CloseButtonHover: Boolean; + + procedure CaptionFill(R: TRect); + const + GRAD: array [Boolean] of TGradientKind = (gkHorz, gkVert); + begin + if USE_THEMES then + GradFill(DC, R, Lighten(ToolbarColor, 12), Lighten(ToolbarColor, -12), GRAD[DockPanelInfo.IsVertical]) + else + FillRectEx(DC, R, ToolbarColor); + end; + +begin + DC := Canvas.Handle; + with Canvas, DockPanelInfo do + begin + Sz := GetSystemMetrics(SM_CYSMCAPTION); + + { Border } + FrameRectEx(DC, R, ToolbarColor, True); + R2 := R; + if ShowCaption then + if IsVertical then Inc(R2.Top, Sz) + else Inc(R2.Left, Sz); + FrameRectEx(DC, R2, clWindow, False); + + if not ShowCaption then Exit; + + { Caption area } + if IsVertical then R.Bottom := R.Top + Sz + else R.Right := R.Left + Sz; + Windows.DrawEdge(Handle, R, BDR_RAISEDINNER, BF_RECT or BF_ADJUST); + + { Close button } + if (CDBS_VISIBLE and CloseButtonState) <> 0 then + begin + CloseButtonDown := (CloseButtonState and CDBS_PRESSED) <> 0; + CloseButtonHover := (CloseButtonState and CDBS_HOT) <> 0; + R2 := R; + Brush.Color := ToolbarColor; + if IsVertical then + begin + R2.Left := R2.Right - Sz; + R.Right := R2.Left; + CaptionFill(R2); + InflateRect(R2, -1, -1); + Inc(R2.Left); + end + else + begin + R2.Top := R2.Bottom - Sz; + R.Bottom := R2.Top; + CaptionFill(R2); + InflateRect(R2, -1, -1); + Dec(R2.Bottom); + end; + + if USE_THEMES then + begin + Flags := TS_NORMAL; + if CloseButtonDown then Flags := TS_PRESSED + else if CloseButtonHover then Flags := TS_HOT; + DrawThemeBackground(TOOLBAR_THEME, DC, TP_BUTTON, Flags, R2, nil); + if CloseButtonDown then OffsetRect(R2, 1, 1); + InflateRect(R2, -2, -2); + end + else + begin + if CloseButtonDown then + begin + Windows.DrawEdge(DC, R2, BDR_SUNKENOUTER, BF_RECT); + OffsetRect(R2, 1, 1); + end + else if CloseButtonHover then + Windows.DrawEdge(DC, R2, BDR_RAISEDINNER, BF_RECT); + InflateRect(R2, -2, -2); + end; + DrawButtonBitmap(Canvas, R2); + end; + + { Caption } + CaptionFill(R); + if IsVertical then InflateRect(R, -2, 0) + else Inflaterect(R, 0, -2); + Font.Assign(SmCaptionFont); + Font.Color := clBtnText; + Brush.Style := bsClear; + Flags := DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS or DT_NOPREFIX; + if IsVertical then DrawText(Canvas.Handle, Caption, -1, R, Flags) + else DrawRotatedText(Canvas.Handle, string(Caption), R, Flags); + Brush.Style := bsSolid; + end; +end; + +function TTBXDefaultTheme.GetPopupShadowType: Integer; +begin + Result := PST_WINDOWSXP; +end; + +procedure TTBXDefaultTheme.GetViewMargins(ViewType: Integer; out Margins: TTBXMargins); +begin + with Margins do + if ((ViewType and VT_TOOLBAR) = VT_TOOLBAR) and + ((ViewType and TVT_FLOATING) = TVT_FLOATING) then + begin + LeftWidth := 4; + TopHeight := 2; + RightWidth := 4; + BottomHeight := 1; + end + else + begin + LeftWidth := 0; + TopHeight := 0; + RightWidth := 0; + BottomHeight := 0; + end; +end; + +procedure TTBXDefaultTheme.PaintPageScrollButton(Canvas: TCanvas; + const ARect: TRect; ButtonType: Integer; Hot: Boolean); +var + R: TRect; + Flags: Integer; + X, Y, Sz: Integer; +begin + R := ARect; + if USE_THEMES then + begin + if Hot then Flags := TS_PRESSED + else Flags := TS_HOT; + DrawThemeBackground(TOOLBAR_THEME, Canvas.Handle, TP_BUTTON, Flags, ARect, nil); + X := (R.Left + R.Right) div 2; + Y := (R.Top + R.Bottom) div 2; + Sz := Min(X - R.Left, Y - R.Top) * 3 div 4; + if Hot then Canvas.Pen.Color := clBtnText; + Canvas.Brush.Color := Canvas.Pen.Color; + case ButtonType of + PSBT_UP: + begin + Inc(Y, Sz div 2); + Canvas.Polygon([Point(X + Sz, Y), Point(X, Y - Sz), Point(X - Sz, Y)]); + end; + PSBT_DOWN: + begin + Y := (R.Top + R.Bottom - 1) div 2; + Dec(Y, Sz div 2); + Canvas.Polygon([Point(X + Sz, Y), Point(X, Y + Sz), Point(X - Sz, Y)]); + end; + PSBT_LEFT: + begin + Inc(X, Sz div 2); + Canvas.Polygon([Point(X, Y + Sz), Point(X - Sz, Y), Point(X, Y - Sz)]); + end; + PSBT_RIGHT: + begin + X := (R.Left + R.Right - 1) div 2; + Dec(X, Sz div 2); + Canvas.Polygon([Point(X, Y + Sz), Point(X + Sz, Y), Point(X, Y - Sz)]); + end; + end; + end + else + begin + if Hot then Flags := DFCS_FLAT + else Flags := 0; + case ButtonType of + PSBT_UP: Flags := Flags or DFCS_SCROLLUP; + PSBT_DOWN: Flags := Flags or DFCS_SCROLLDOWN; + PSBT_LEFT: Flags := Flags or DFCS_SCROLLLEFT; + PSBT_RIGHT: Flags := Flags or DFCS_SCROLLRIGHT; + end; + Windows.DrawFrameControl(Canvas.Handle, R, DFC_SCROLL, Flags); + end; +end; + +procedure TTBXDefaultTheme.PaintFrameControl(Canvas: TCanvas; R: TRect; Kind, State: Integer; Params: Pointer); +var + DC: HDC; + X, Y, Flags: Integer; + C: TColor; + Pen, OldPen: HPen; + Brush, OldBrush: HBrush; + + function FrameColor: TColor; + begin + if Boolean(State and PFS_DISABLED) then Result := clBtnShadow + else if Boolean(State and (PFS_PUSHED or PFS_HOT)) then Result := clNone + else Result := clBtnShadow; + end; + + procedure DiagLine(C: TColor); + begin + with R do + DrawLineEx(DC, Right - 2 - X, Bottom - 2, Right - 1, Bottom - X - 3, C); + Inc(X); + end; + +begin + DC := Canvas.Handle; + case Kind of + PFC_CHECKBOX: + begin + if USE_THEMES then + begin + if Boolean(State and PFS_CHECKED) then Flags := CBS_CHECKEDNORMAL + else if Boolean(State and PFS_MIXED) then Flags := CBS_MIXEDNORMAL + else Flags := CBS_UNCHECKEDNORMAL; + if Boolean(State and PFS_DISABLED) then Inc(Flags, 3) + else if Boolean(State and PFS_PUSHED) then Inc(Flags, 2) + else if Boolean(State and PFS_HOT) then Inc(Flags); + DrawThemeBackground(BUTTON_THEME, DC, BP_CHECKBOX, Flags, R, nil); + end + else + begin + C := FrameColor; + if C = clNone then + begin + if Boolean(State and PFS_MIXED) then Flags := DFCS_BUTTON3STATE or DFCS_CHECKED + else Flags := DFCS_BUTTONCHECK; + if Boolean(State and PFS_CHECKED) then Flags := Flags or DFCS_CHECKED; + if Boolean(State and PFS_PUSHED) then Flags := Flags or DFCS_PUSHED; + DrawFrameControl(DC, R, DFC_BUTTON, Flags); + end + else + begin + InflateRect(R, -1, -1); + FrameRectEx(DC, R, C, True); + if Boolean(State and (PFS_DISABLED or PFS_PUSHED)) then FillRectEx(DC, R, clBtnFace) + else if Boolean(State and PFS_MIXED) then DitherRect(DC, R, clWindow, clBtnFace) + else FillRectEx(DC, R, clWindow); + + if Boolean(State and (PFS_CHECKED or PFS_MIXED)) then + begin + X := (R.Left + R.Right) div 2 - 1; + Y := (R.Top + R.Bottom) div 2 + 1; + if Boolean(State and PFS_DISABLED) then C := clGrayText + else if Boolean(State and PFS_MIXED) then C := clBtnShadow + else C := clBtnText; + PolygonEx(DC, [Point(X-2, Y), Point(X, Y+2), Point(X+4, Y-2), + Point(X+4, Y-4), Point(X, Y), Point(X-2, Y-2), Point(X-2, Y)], C, C); + end; + end; + end; + end; + PFC_RADIOBUTTON: + begin + if USE_THEMES then + begin + if Boolean(State and PFS_CHECKED) then Flags := RBS_CHECKEDNORMAL + else Flags := RBS_UNCHECKEDNORMAL; + if Boolean(State and PFS_DISABLED) then Inc(Flags, 3) + else if Boolean(State and PFS_PUSHED) then Inc(Flags, 2) + else if Boolean(State and PFS_HOT) then Inc(Flags); + DrawThemeBackground(BUTTON_THEME, DC, BP_RADIOBUTTON, Flags, R, nil); + end + else + begin + C := FrameColor; + if C = clNone then + begin + Flags := DFCS_BUTTONRADIO; + if Boolean(State and PFS_CHECKED) then Flags := Flags or DFCS_CHECKED; + if Boolean(State and PFS_PUSHED) then Flags := Flags or DFCS_PUSHED; + DrawFrameControl(DC, R, DFC_BUTTON, Flags); + end + else + begin + Pen := CreatePenEx(C); + if Boolean(State and (PFS_DISABLED or PFS_PUSHED)) then C := clBtnFace + else C := clWindow; + Brush := CreateBrushEx(C); + + InflateRect(R, -1, -1); Inc(R.Left); Dec(R.Bottom); + OldPen := SelectObject(DC, Pen); + OldBrush := SelectObject(DC, Brush); + with R do + Windows.RoundRect(DC, Left, Top, Right, Bottom, Right - Left - 2, Bottom - Top - 2); + SelectObject(DC, OldPen); + SelectObject(DC, OldBrush); + DeleteObject(Pen); + DeleteObject(Brush); + + if Boolean(State and PFS_CHECKED) then + begin + InflateRect(R, -3, -3); + Pen := CreatePenEx(clBtnText); + Brush := CreateBrushEx(clBtnText); + OldPen := SelectObject(DC, Pen); + OldBrush := SelectObject(DC, Brush); + with R do Windows.RoundRect(DC, Left, Top, Right, Bottom, Right - Left, Bottom - Top); + SelectObject(DC, OldPen); + SelectObject(DC, OldBrush); + DeleteObject(Pen); + DeleteObject(Brush); + end; + end; + end; + end; + end; +end; + +procedure TTBXDefaultTheme.PaintStatusBar(Canvas: TCanvas; R: TRect; Part: Integer); +var + DC: HDC; + D, Sz, I, Flags: Integer; + + procedure DiagLine(C: TColor); + begin + with R do + DrawLineEx(DC, Right - 2 - D, Bottom - 2, Right - 1, Bottom - D - 3, C); + Inc(D); + end; + +begin + DC := Canvas.Handle; + case Part of + SBP_BODY: + begin + if USE_THEMES then + DrawThemeBackground(STATUSBAR_THEME, DC, 0, 0, R, nil) + else + FillRectEx(DC, R, StatusBarColor); + end; + SBP_PANE, SBP_LASTPANE: + begin + if USE_THEMES then + begin + if Part = SBP_LASTPANE then Flags := SP_GRIPPERPANE + else Flags := SP_PANE; + DrawThemeBackground(STATUSBAR_THEME, DC, Flags, 0, R, nil); + end + else + begin + if Part = SBP_PANE then Dec(R.Right, 2); + Frame3D(DC, R, clBtnShadow, clBtnHighlight, False); + end; + end; + SBP_GRIPPER: + begin + if USE_THEMES then + DrawThemeBackground(STATUSBAR_THEME, DC, SP_GRIPPER, 0, R, nil) + else + begin + D := 0; + Sz := Min(R.Right - R.Left, R.Bottom - R.Top); + for I := 1 to 3 do + case Sz of + 0..8: + begin + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + end; + 9..11: + begin + DiagLine(StatusBarColor); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + end; + 12..14: + begin + DiagLine(clBtnShadow); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + end; + else + DiagLine(StatusBarColor); + DiagLine(clBtnShadow); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + end; + + with Canvas, R do + begin + Pen.Color := StatusBarColor; + PolylineEx(DC, [ + Point(Right - D - 1, Bottom - 1), + Point(Right - 1, Bottom - 1), + Point(Right - 1, Bottom - D - 2)], + StatusBarColor); + end; + end; + end; + end; +end; + +procedure TTBXDefaultTheme.SetupColorCache; +begin + ToolbarColor := clBtnFace; + ToolbarText := clBtnText; + StatusBarColor := clBtnFace; + if USE_THEMES then + begin + GetThemeColor(TOOLBAR_THEME, 0, 0, TMT_FILLCOLOR, Cardinal(ToolbarColor)); + GetThemeColor(TOOLBAR_THEME, 0, 0, TMT_TEXTCOLOR, Cardinal(ToolbarText)); + GetThemeColor(STATUSBAR_THEME, 0, 0, TMT_FILLCOLOR, Cardinal(StatusBarColor)); + end; + DockPanelColor := NearestMixedColor(ToolbarColor, clWindow, 64); +end; + +procedure TTBXDefaultTheme.TBXSysCommand(var Message: TMessage); +begin + if Message.WParam = TSC_VIEWCHANGE then SetupColorCache; +end; + +initialization + InitializeStock; + +finalization + FinalizeStock; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXDkPanels.pas b/official/2.1.6+2.1.beta1/TBX/TBXDkPanels.pas new file mode 100644 index 0000000..c1924f6 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXDkPanels.pas @@ -0,0 +1,5552 @@ +unit TBXDkPanels; + +// TBX Package +// Copyright 2001-2004 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// $Id: TBXDkPanels.pas 21 2004-05-29 22:16:01Z Alex@ZEISS $ + +interface + +{$I ..\..\Source\TB2Ver.inc} +{$I TBX.inc} + +uses + Windows, Messages, Classes, Graphics, Controls, StdCtrls, ExtCtrls, Forms, + TB2Dock, TB2Item, TBX, TBXThemes, ImgList, Menus; + +const + { New hit test constants for page scrollers } + HTSCROLLPREV = 30; + HTSCROLLNEXT = 31; + +type + { TTBXControlMargins } + + TTBXControlMargins = class(TPersistent) + private + FLeft, FTop, FRight, FBottom: Integer; + FOnChange: TNotifyEvent; + procedure SetBottom(Value: Integer); + procedure SetLeft(Value: Integer); + procedure SetRight(Value: Integer); + procedure SetTop(Value: Integer); + public + procedure Assign(Src: TPersistent); override; + procedure Modified; dynamic; + property OnChange: TNotifyEvent read FOnChange write FOnChange; + published + property Left: Integer read FLeft write SetLeft default 0; + property Top: Integer read FTop write SetTop default 0; + property Right: Integer read FRight write SetRight default 0; + property Bottom: Integer read FBottom write SetBottom default 0; + end; + + { TTBXMultiDock } + + TTBXMultiDock = class(TTBDock) + protected + LastValidRowSize: Integer; + function Accepts(ADockableWindow: TTBCustomDockableWindow): Boolean; override; + procedure ValidateInsert(AComponent: TComponent); override; + public + procedure ArrangeToolbars; override; + procedure Paint; override; + procedure ResizeVisiblePanels(NewSize: Integer); + end; + + + { TTBXCustomDockablePanel } + + TDPCaptionRotation = (dpcrAuto, dpcrAlwaysHorz, dpcrAlwaysVert); + TTBXResizingStage = (rsBeginResizing, rsResizing, rsEndResizing); + TTBXDockedResizing = procedure(Sender: TObject; Vertical: Boolean; + var NewSize: Integer; Stage: TTBXResizingStage; var AllowResize: Boolean) of object; + TDockKinds = set of (dkStandardDock, dkMultiDock); + + {TTBXDockablePanel = class(TTBCustomDockableWindow)} {vb-} + TTBXCustomDockablePanel = class(TTBCustomDockableWindow) {vb+} + private + FBorderSize: Integer; + FCaptionRotation: TDPCaptionRotation; + FDockedWidth: Integer; + FDockedHeight: Integer; + FEffectiveColor: TColor; + FFloatingWidth: Integer; + FFloatingHeight: Integer; + FHorzResizeCursor: TCursor; {vb+} + FHorzSplitCursor : TCursor; {vb+} + FIsResizing: Boolean; + FIsSplitting: Boolean; + FMinClientWidth: Integer; + FMinClientHeight: Integer; + FMaxClientWidth: Integer; + FMaxClientHeight: Integer; + FSmoothDockedResize: Boolean; + FSnapDistance: Integer; + FShowCaptionWhenDocked: Boolean; + FSplitHeight: Integer; + FSplitWidth: Integer; + FSupportedDocks: TDockKinds; + FVertResizeCursor: TCursor; {vb+} + FVertSplitCursor : TCursor; {vb+} + FOnDockedResizing: TTBXDockedResizing; + function CalcSize(ADock: TTBDock): TPoint; + procedure SetBorderSize(Value: Integer); + procedure SetCaptionRotation(Value: TDPCaptionRotation); + procedure SetDockedHeight(Value: Integer); + procedure SetDockedWidth(Value: Integer); + procedure SetFloatingHeight(Value: Integer); + procedure SetFloatingWidth(Value: Integer); + procedure SetMinClientHeight(Value: Integer); + procedure SetMinClientWidth(Value: Integer); + procedure SetShowCaptionWhenDocked(Value: Boolean); + procedure SetSnapDistance(Value: Integer); + procedure CMColorChanged(var Message: TMessage); message CM_COLORCHANGED; + procedure CMControlChange(var Message: TCMControlChange); message CM_CONTROLCHANGE; + procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED; + procedure TBMGetEffectiveColor(var Message: TMessage); message TBM_GETEFFECTIVECOLOR; + procedure TBMGetViewType(var Message: TMessage); message TBM_GETVIEWTYPE; + procedure TBMThemeChange(var Message: TMessage); message TBM_THEMECHANGE; + procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND; + procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST; + procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE; + procedure WMNCLButtonDown(var Message: TWMNCLButtonDown); message WM_NCLBUTTONDOWN; + procedure WMSetCursor(var Message: TWMSetCursor); message WM_SETCURSOR; + procedure WMWindowPosChanged(var Message: TWMWindowPosChanged); message WM_WINDOWPOSCHANGED; + procedure SetSplitHeight(Value: Integer); + procedure SetSplitWidth(Value: Integer); + protected + BlockSizeUpdate: Boolean; + procedure AdjustClientRect(var Rect: TRect); override; + procedure BeginDockedSizing(HitTest: Integer); + procedure BeginSplitResizing(HitTest: Integer); + function CalcNCSizes: TPoint; override; + function CanAutoSize(var NewWidth, NewHeight: Integer): Boolean; override; + function CanDockTo(ADock: TTBDock): Boolean; override; + function CanSplitResize(EdgePosition: TTBDockPosition): Boolean; + procedure ConstrainedResize(var MinWidth, MinHeight, MaxWidth, MaxHeight: Integer); override; + function DoArrange(CanMoveControls: Boolean; PreviousDockType: TTBDockType; NewFloating: Boolean; NewDock: TTBDock): TPoint; override; + function DoBeginDockedResizing(Vertical: Boolean): Boolean; virtual; + function DoDockedResizing(Vertical: Boolean; var NewSize: Integer): Boolean; virtual; + function DoEndDockedResizing(Vertical: Boolean): Boolean; virtual; + procedure DrawNCArea(const DrawToDC: Boolean; const ADC: HDC; const Clip: HRGN); override; + procedure GetBaseSize(var ASize: TPoint); override; + function GetDockedCloseButtonRect(LeftRight: Boolean): TRect; override; + procedure GetDockPanelInfo(out DockPanelInfo: TTBXDockPanelInfo); virtual; + function GetFloatingWindowParentClass: TTBFloatingWindowParentClass; override; + procedure GetMinMaxSize(var AMinClientWidth, AMinClientHeight, AMaxClientWidth, AMaxClientHeight: Integer); override; + function GetViewType: Integer; + function IsVertCaption: Boolean; virtual; + procedure Loaded; override; + procedure Paint; override; + procedure SetParent(AParent: TWinControl); override; + procedure SizeChanging(const AWidth, AHeight: Integer); override; + procedure UpdateEffectiveColor; + property IsResizing: Boolean read FIsResizing; + property IsSplitting: Boolean read FIsSplitting; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function GetFloatingBorderSize: TPoint; override; + procedure ReadPositionData(const Data: TTBReadPositionData); override; + procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override; + procedure UpdateChildColors; + procedure WritePositionData(const Data: TTBWritePositionData); override; + property EffectiveColor: TColor read FEffectiveColor; + property CaptionRotation: TDPCaptionRotation read FCaptionRotation write SetCaptionRotation default dpcrAuto; + property Color default clNone; + property CloseButtonWhenDocked default True; + property DblClickUndock default False; + { client size constraints should be restored before other size related properties } + property MaxClientHeight: Integer read FMaxClientHeight write FMaxClientHeight default 0; + property MaxClientWidth: Integer read FMaxClientWidth write FMaxClientWidth default 0; + property MinClientHeight: Integer read FMinClientHeight write SetMinClientHeight default 32; + property MinClientWidth: Integer read FMinClientWidth write SetMinClientWidth default 32; + property BorderSize: Integer read FBorderSize write SetBorderSize default 0; + property DockedWidth: Integer read FDockedWidth write SetDockedWidth default 128; + property DockedHeight: Integer read FDockedHeight write SetDockedHeight default 128; + property FloatingWidth: Integer read FFloatingWidth write SetFloatingWidth default 0; + property FloatingHeight: Integer read FFloatingHeight write SetFloatingHeight default 0; + property Height stored False; + property HorzResizeCursor: TCursor read FHorzResizeCursor write FHorzResizeCursor default crSizeWE; {vb+} + property HorzSplitCursor: TCursor read FHorzSplitCursor write FHorzSplitCursor default crHSplit; {vb+} + property ShowCaptionWhenDocked: Boolean read FShowCaptionWhenDocked write SetShowCaptionWhenDocked default True; + property SplitHeight: Integer read FSplitHeight write SetSplitHeight default 0; + property SplitWidth: Integer read FSplitWidth write SetSplitWidth default 0; + property SupportedDocks: TDockKinds read FSupportedDocks write FSupportedDocks; + property SmoothDockedResize: Boolean read FSmoothDockedResize write FSmoothDockedResize default True; + property SnapDistance: Integer read FSnapDistance write SetSnapDistance default 0; + property VertResizeCursor: TCursor read FVertResizeCursor write FVertResizeCursor default crSizeNS; {vb+} + property VertSplitCursor: TCursor read FVertSplitCursor write FVertSplitCursor default crVSplit; {vb+} + property Width stored False; + property OnDockedResizing: TTBXDockedResizing read FOnDockedResizing write FOnDockedResizing; + end; {vb+} + + { TTBXDockablePanel } + + TTBXDockablePanel = class(TTBXCustomDockablePanel) {vb+} + published + { client size constraints should be restored before other size related properties } + property MaxClientHeight; + property MaxClientWidth; + property MinClientHeight; + property MinClientWidth; + + property ActivateParent; + property Align; + property Anchors; + property BorderSize; + property BorderStyle; + property Caption; + property CaptionRotation; + property Color; + property CloseButton; + property CloseButtonWhenDocked; + property CurrentDock; + property DblClickUndock; + property DefaultDock; + property DockableTo; + property DockedWidth; + property DockedHeight; + property DockMode; + property DockPos; + property DockRow; + property FloatingWidth; + property FloatingHeight; + property FloatingMode; + property Font; + property Height; + property HideWhenInactive; + property HorzResizeCursor; {vb+} + property HorzSplitCursor; {vb+} + property LastDock; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property Resizable; + property ShowCaption; + property ShowCaptionWhenDocked; + property ShowHint; + property SplitHeight; + property SplitWidth; + property SupportedDocks; + property SmoothDrag; + property SmoothDockedResize; + property SnapDistance; + property TabOrder; + property UseLastDock; + property VertResizeCursor; {vb+} + property VertSplitCursor; {vb+} + property Visible; + property Width stored False; + + property OnClose; + property OnCloseQuery; + {$IFDEF JR_D5} + property OnContextPopup; + {$ENDIF} + property OnDragDrop; + property OnDragOver; + property OnDockChanged; + property OnDockChanging; + property OnDockChangingHidden; + property OnDockedResizing; + property OnMouseDown; + property OnMouseMove; + property OnMouseUp; + property OnMove; + property OnRecreated; + property OnRecreating; + property OnResize; + property OnVisibleChanged; + end; + + { TTBXPanelObject } + + TControlPaintOptions = set of (cpoDoubleBuffered); + + TTBXPanelObject = class(TCustomControl) + private + FDisableScroll: Boolean; + FMouseInControl: Boolean; + FPaintOptions: TControlPaintOptions; + FPushed: Boolean; + FSmartFocus: Boolean; + FSpaceAsClick: Boolean; + FOnMouseEnter: TNotifyEvent; + FOnMouseLeave: TNotifyEvent; + procedure CMParentColorChanged(var Message: TMessage); message CM_PARENTCOLORCHANGED; + procedure CMEnabledChanged(var Message: TMessage); message CM_ENABLEDCHANGED; + procedure MouseTimerHandler(Sender: TObject); + procedure RemoveMouseTimer; + procedure SetPaintOptions(Value: TControlPaintOptions); + procedure TBMThemeChange(var Message); message TBM_THEMECHANGE; + procedure WMEraseBkgnd(var Message: TMessage); message WM_ERASEBKGND; + procedure WMKillFocus(var Message: TMessage); message WM_KILLFOCUS; + procedure WMSetFocus(var Message: TMessage); message WM_SETFOCUS; + protected + procedure CreateParams(var Params: TCreateParams); override; + procedure DoMouseEnter; virtual; + procedure DoMouseLeave; virtual; + procedure KeyDown(var Key: Word; Shift: TShiftState); override; + procedure KeyUp(var Key: Word; Shift: TShiftState); override; + procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; + procedure MouseMove(Shift: TShiftState; X, Y: Integer); override; + procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; + function GetMinHeight: Integer; virtual; + function GetMinWidth: Integer; virtual; + property Color default clNone; + property MouseInControl: Boolean read FMouseInControl; + property PaintOptions: TControlPaintOptions read FPaintOptions write SetPaintOptions; + property ParentColor default False; + property Pushed: Boolean read FPushed; + property SpaceAsClick: Boolean read FSpaceAsClick write FSpaceAsClick default False; + property SmartFocus: Boolean read FSmartFocus write FSmartFocus default False; + property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter; + property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure MakeVisible; + procedure MouseEntered; + procedure MouseLeft; + end; + + { TTBXAlignmentPanel } + + TTBXAlignmentPanel = class(TTBXPanelObject) + private + FMargins: TTBXControlMargins; + procedure MarginsChangeHandler(Sender: TObject); + procedure SetMargins(Value: TTBXControlMargins); + protected + procedure AdjustClientRect(var Rect: TRect); override; + procedure Paint; override; + function GetMinHeight: Integer; override; + function GetMinWidth: Integer; override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + published + property ParentColor; + property Align; + property Anchors; + property AutoSize; + property Color; + property Constraints; + property DragCursor; + property DragKind; + property DragMode; + property Enabled; + property Font; + property Margins: TTBXControlMargins read FMargins write SetMargins; + property ParentFont; + property ShowHint; + property TabOrder; + property TabStop; + property Visible; + property OnClick; +{$IFDEF JR_D5} + property OnContextPopup; +{$ENDIF} + property OnDblClick; + property OnDragDrop; + property OnDragOver; + property OnEndDock; + property OnEndDrag; + property OnMouseDown; + property OnMouseEnter; + property OnMouseLeave; + property OnMouseMove; + property OnMouseUp; + property OnStartDock; + property OnStartDrag; + end; + + { TTBXTextObject } + + TTBXTextObject = class(TTBXPanelObject) + private + FAlignment: TLeftRight; + FMargins: TTBXControlMargins; + FWrapping: TTextWrapping; + FShowAccelChar: Boolean; + FUpdating: Boolean; + procedure CMEnabledChanged(var Message: TMessage); message CM_ENABLEDCHANGED; + procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED; + procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED; + procedure MarginsChangeHandler(Sender: TObject); + procedure SetAlignment(Value: TLeftRight); + procedure SetMargins(Value: TTBXControlMargins); + procedure SetShowAccelChar(Value: Boolean); + procedure SetWrapping(Value: TTextWrapping); + protected + procedure AdjustFont(AFont: TFont); virtual; + procedure AdjustHeight; + procedure CreateParams(var Params: TCreateParams); override; + function CanAutoSize(var NewWidth, NewHeight: Integer): Boolean; override; + procedure DoAdjustHeight(ACanvas: TCanvas; var NewHeight: Integer); virtual; + function DoDrawText(ACanvas: TCanvas; var Rect: TRect; Flags: Longint): Integer; virtual; + procedure DoMarginsChanged; virtual; + function GetFocusRect(const R: TRect): TRect; virtual; + function GetLabelText: string; virtual; + function GetTextAlignment: TAlignment; virtual; + function GetTextMargins: TRect; virtual; + procedure Loaded; override; + procedure Paint; override; + property Alignment: TLeftRight read FAlignment write SetAlignment default taLeftJustify; + property AutoSize default True; + property PaintOptions default [cpoDoubleBuffered]; + property ShowAccelChar: Boolean read FShowAccelChar write SetShowAccelChar default True; + property Margins: TTBXControlMargins read FMargins write SetMargins; + property Wrapping: TTextWrapping read FWrapping write SetWrapping default twNone; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function GetControlsAlignment: TAlignment; override; + end; + + { TTBXCustomLabel } + + TTBXCustomLabel = class(TTBXTextObject) + private + FFocusControl: TWinControl; + FUnderline: Boolean; + FUnderlineColor: TColor; + procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR; + procedure SetUnderline(Value: Boolean); + procedure SetUnderlineColor(Value: TColor); + procedure SetFocusControl(Value: TWinControl); + protected + function GetTextMargins: TRect; override; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure Paint; override; + property FocusControl: TWinControl read FFocusControl write SetFocusControl; + property Underline: Boolean read FUnderline write SetUnderline default False; + property UnderlineColor: TColor read FUnderlineColor write SetUnderlineColor default clBtnShadow; + property Wrapping default twWrap; + public + constructor Create(AOwner: TComponent); override; + end; + + { TTBXLabel } + + TTBXLabel = class(TTBXCustomLabel) + published + property Action; {vb+} + property Align; + property Alignment; + property Anchors; + property AutoSize; + property BiDiMode; + property Caption; + property Color; + property Constraints; + property DragCursor; + property DragKind; + property DragMode; + property Enabled; + property FocusControl; + property Font; + property Margins; +// property PaintOptions; + property ParentBiDiMode; + property ParentColor; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property ShowAccelChar; + property ShowHint; + property Underline; + property UnderlineColor; + property Visible; + property Wrapping; + property OnClick; +{$IFDEF JR_D5} + property OnContextPopup; +{$ENDIF} + property OnDblClick; + property OnDragDrop; + property OnDragOver; + property OnEndDock; + property OnEndDrag; + property OnMouseDown; + property OnMouseEnter; + property OnMouseLeave; + property OnMouseMove; + property OnMouseUp; + property OnStartDock; + property OnStartDrag; + end; + + { TTBXCustomLink } + + TTBXCustomLink = class(TTBXTextObject) + private + FImageChangeLink: TChangeLink; + FImageIndex: TImageIndex; + FImages: TCustomImageList; + procedure ImageListChange(Sender: TObject); + procedure SetImageIndex(Value: TImageIndex); + procedure SetImages(Value: TCustomImageList); + procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR; + procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY; + procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST; + protected + procedure AdjustFont(AFont: TFont); override; + procedure DoAdjustHeight(ACanvas: TCanvas; var NewHeight: Integer); override; + procedure DoMouseEnter; override; + procedure DoMouseLeave; override; + function GetFocusRect(const R: TRect): TRect; override; + function GetTextAlignment: TAlignment; override; + function GetTextMargins: TRect; override; + procedure Paint; override; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + property Cursor default crHandPoint; + property ImageIndex: TImageIndex read FImageIndex write SetImageIndex; + property Images: TCustomImageList read FImages write SetImages; + property SmartFocus default True; + property TabStop default True; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function GetControlsAlignment: TAlignment; override; + end; + + { TTBXLink } + + TTBXLink = class(TTBXCustomLink) + published + property Action; {vb+} + property Align; + property Alignment; + property Anchors; + property AutoSize; + property BiDiMode; + property Caption; + property Color; + property Constraints; + property DragCursor; + property DragKind; + property DragMode; + property Enabled; + property Font; + property ImageIndex; + property Images; + property Margins; +// property PaintOptions; + property ParentBiDiMode; + property ParentColor; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property ShowAccelChar; + property ShowHint; + property SmartFocus; + property TabOrder; + property TabStop; + property Visible; + property Wrapping; + property OnClick; +{$IFDEF JR_D5} + property OnContextPopup; +{$ENDIF} + property OnDblClick; + property OnDragDrop; + property OnDragOver; + property OnEndDock; + property OnEndDrag; + property OnEnter; + property OnExit; + property OnMouseDown; + property OnMouseEnter; + property OnMouseLeave; + property OnMouseMove; + property OnMouseUp; + property OnStartDock; + property OnStartDrag; + end; + + { TTBXCustomButton } + TTBXCustomButton = class; + TButtonLayout = (blGlyphLeft, blGlyphTop, blGlyphRight, blGlyphBottom); + TButtonStyle = (bsNormal, bsFlat); + TDropDownEvent = procedure(Sender: TTBXCustomButton; var AllowDropDown: Boolean) of object; + + TTBXCustomButton = class(TTBXTextObject) + private + FAlignment: TAlignment; + FAllowAllUnchecked: Boolean; + FBorderSize: Integer; + FChecked: Boolean; + FDropdownCombo: Boolean; + FDropdownMenu: TPopupMenu; + FButtonStyle: TButtonStyle; + FGlyphSpacing: Integer; + FGroupIndex: Integer; + FImageChangeLink: TChangeLink; + FImageIndex: TImageIndex; + FImages: TCustomImageList; + FInClick: Boolean; + FLayout: TButtonLayout; + FMenuVisible: Boolean; + FModalResult: TModalResult; + FRepeating: Boolean; + FRepeatDelay: Integer; + FRepeatInterval: Integer; + FRepeatTimer: TTimer; + FOnDropDown: TDropDownEvent; + procedure ImageListChange(Sender: TObject); + procedure RepeatTimerHandler(Sender: TObject); + procedure SetAlignment(Value: TAlignment); + procedure SetAllowAllUnchecked(Value: Boolean); + procedure SetBorderSize(Value: Integer); + procedure SetButtonStyle(Value: TButtonStyle); + procedure SetChecked(Value: Boolean); + procedure SetDropdownCombo(Value: Boolean); + procedure SetDropdownMenu(Value: TPopupMenu); + procedure SetGlyphSpacing(Value: Integer); + procedure SetGroupIndex(Value: Integer); + procedure SetImageIndex(Value: TImageIndex); + procedure SetImages(Value: TCustomImageList); + procedure SetLayout(Value: TButtonLayout); + procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR; + procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY; + procedure WMCancelMode(var Message: TWMCancelMode); message WM_CANCELMODE; + procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK; + procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST; + protected + function ArrowVisible: Boolean; + procedure DoAdjustHeight(ACanvas: TCanvas; var NewHeight: Integer); override; + function DoDrawText(ACanvas: TCanvas; var Rect: TRect; Flags: Longint): Integer; override; + function DoDropDown: Boolean; virtual; + procedure DoMouseEnter; override; + procedure DoMouseLeave; override; + function GetFocusRect(const R: TRect): TRect; override; + procedure GetItemInfo(out ItemInfo: TTBXItemInfo); virtual; + function GetTextAlignment: TAlignment; override; + function GetTextMargins: TRect; override; + procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; + procedure MouseMove(Shift: TShiftState; X, Y: Integer); override; + procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; + procedure Paint; override; + function PtInButtonPart(const Pt: TPoint): Boolean; virtual; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure UpdateCheckedState; + property Alignment: TAlignment read FAlignment write SetAlignment default taCenter; + property AllowAllUnchecked: Boolean read FAllowAllUnchecked write SetAllowAllUnchecked default False; + property BorderSize: Integer read FBorderSize write SetBorderSize default 4; + property ButtonStyle: TButtonStyle read FButtonStyle write SetButtonStyle default bsNormal; + property Checked: Boolean read FChecked write SetChecked default False; + property DropdownCombo: Boolean read FDropdownCombo write SetDropdownCombo default False; + property DropdownMenu: TPopupMenu read FDropdownMenu write SetDropdownMenu; + property GlyphSpacing: Integer read FGlyphSpacing write SetGlyphSpacing default 4; + property GroupIndex: Integer read FGroupIndex write SetGroupIndex default 0; + property ImageIndex: TImageIndex read FImageIndex write SetImageIndex; + property Images: TCustomImageList read FImages write SetImages; + property Layout: TButtonLayout read FLayout write SetLayout default blGlyphLeft; + property ModalResult: TModalResult read FModalResult write FModalResult default 0; + property Repeating: Boolean read FRepeating write FRepeating default False; + property RepeatDelay: Integer read FRepeatDelay write FRepeatDelay default 400; + property RepeatInterval: Integer read FRepeatInterval write FRepeatInterval default 100; + property SmartFocus default True; + property TabStop default True; + property OnDropDown: TDropDownEvent read FOnDropDown write FOnDropDown; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure Click; override; + function GetControlsAlignment: TAlignment; override; + end; + + { TTBXButton } + TTBXButton = class(TTBXCustomButton) + published + property Action; {vb+} + property Align; + property Alignment; + property GroupIndex; + property AllowAllUnchecked; + property Anchors; + property AutoSize; + property BiDiMode; + property BorderSize; + property ButtonStyle; + property Caption; + property Checked; + property Constraints; + property DragCursor; + property DragKind; + property DragMode; + property DropDownCombo; + property DropDownMenu; + property Enabled; + property Font; + property GlyphSpacing; + property ImageIndex; + property Images; + property Layout; + property Margins; + property ModalResult; +// property PaintOptions; + property ParentBiDiMode; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property Repeating; + property RepeatDelay; + property RepeatInterval; + property ShowAccelChar; + property ShowHint; + property SmartFocus; + property TabOrder; + property TabStop; + property Visible; + property Wrapping; + property OnClick; +{$IFDEF JR_D5} + property OnContextPopup; +{$ENDIF} + property OnDblClick; + property OnDragDrop; + property OnDragOver; + property OnDropDown; + property OnEndDock; + property OnEndDrag; + property OnMouseDown; + property OnMouseEnter; + property OnMouseLeave; + property OnMouseMove; + property OnMouseUp; + property OnStartDock; + property OnStartDrag; + end; + + { TTBXCustomCheckBox } + + TTBXCustomCheckBox = class(TTBXTextObject) + private + FAllowGrayed: Boolean; + FState: TCheckBoxState; + FOnChange: TNotifyEvent; + function GetChecked: Boolean; + procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR; + procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY; + procedure CNCommand(var Message: TWMCommand); message CN_COMMAND; + procedure SetChecked(Value: Boolean); + procedure SetState(Value: TCheckBoxState); + procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST; + protected + procedure Click; override; + procedure DoAdjustHeight(ACanvas: TCanvas; var NewHeight: Integer); override; + procedure DoChange; virtual; + procedure DoMouseEnter; override; + procedure DoMouseLeave; override; + function DoSetState(var NewState: TCheckBoxState): Boolean; virtual; + function GetGlyphSize: Integer; + function GetFocusRect(const R: TRect): TRect; override; + function GetTextAlignment: TAlignment; override; + function GetTextMargins: TRect; override; + procedure Paint; override; + procedure Toggle; virtual; + property AllowGrayed: Boolean read FAllowGrayed write FAllowGrayed default False; + property Checked: Boolean read GetChecked write SetChecked stored False; + property SmartFocus default True; + property State: TCheckBoxState read FState write SetState default cbUnchecked; + property TabStop default True; + property OnChange: TNotifyEvent read FOnChange write FOnChange; + public + constructor Create(AOwner: TComponent); override; + end; + + TTBXCheckBox = class(TTBXCustomCheckBox) + published + property Action; {vb+} + property Align; + property Alignment; + property AllowGrayed; + property Anchors; + property AutoSize; + property BiDiMode; + property Caption; + property Checked; + property Color; + property Constraints; + property DragCursor; + property DragKind; + property DragMode; + property Enabled; + property Font; + property Margins; +// property PaintOptions; + property ParentBiDiMode; + property ParentColor; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property ShowAccelChar; + property ShowHint; + property SmartFocus; + property State; + property TabOrder; + property TabStop; + property Visible; + property Wrapping; + property OnChange; + property OnClick; +{$IFDEF JR_D5} + property OnContextPopup; +{$ENDIF} + property OnDblClick; + property OnDragDrop; + property OnDragOver; + property OnEndDock; + property OnEndDrag; + property OnMouseDown; + property OnMouseEnter; + property OnMouseLeave; + property OnMouseMove; + property OnMouseUp; + property OnStartDock; + property OnStartDrag; + end; + + { TTBXCustomRadioButton } + + TTBXCustomRadioButton = class(TTBXTextObject) + private + FChecked: Boolean; + FGroupIndex: Integer; + FOnChange: TNotifyEvent; + procedure SetChecked(Value: Boolean); + procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR; + procedure CNCommand(var Message: TWMCommand); message CN_COMMAND; + procedure SetGroupIndex(Value: Integer); + procedure TurnSiblingsOff; + procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST; + protected + procedure Click; override; + procedure DoAdjustHeight(ACanvas: TCanvas; var NewHeight: Integer); override; + procedure DoChange; virtual; + procedure DoMouseEnter; override; + procedure DoMouseLeave; override; + function DoSetChecked(var Value: Boolean): Boolean; virtual; + function GetGlyphSize: Integer; + function GetFocusRect(const R: TRect): TRect; override; + function GetTextAlignment: TAlignment; override; + function GetTextMargins: TRect; override; + procedure Paint; override; + property Checked: Boolean read FChecked write SetChecked default False; + property GroupIndex: Integer read FGroupIndex write SetGroupIndex default 0; + property SmartFocus default True; + property TabStop default True; + property OnChange: TNotifyEvent read FOnChange write FOnChange; + public + constructor Create(AOwner: TComponent); override; + end; + + TTBXRadioButton = class(TTBXCustomRadioButton) + published + property Action; {vb+} + property Align; + property Alignment; + property Anchors; + property AutoSize; + property BiDiMode; + property Caption; + property Checked; + property Color; + property Constraints; + property DragCursor; + property DragKind; + property DragMode; + property Enabled; + property Font; + property GroupIndex; + property Margins; +// property PaintOptions; + property ParentBiDiMode; + property ParentColor; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property ShowAccelChar; + property ShowHint; + property SmartFocus; + property TabOrder; + property TabStop; + property Visible; + property Wrapping; + property OnChange; + property OnClick; +{$IFDEF JR_D5} + property OnContextPopup; +{$ENDIF} + property OnDblClick; + property OnDragDrop; + property OnDragOver; + property OnEndDock; + property OnEndDrag; + property OnMouseDown; + property OnMouseEnter; + property OnMouseLeave; + property OnMouseMove; + property OnMouseUp; + property OnStartDock; + property OnStartDrag; + end; + + { TTBXPageScroller } + + TTBXPageScrollerOrientation = (tpsoVertical, tpsoHorizontal); + TTBXPageScrollerButtons = set of (tpsbPrev, tpsbNext); + + TTBXCustomPageScroller = class(TWinControl) + private + FAutoRangeCount: Integer; + FAutoRange: Boolean; + FAutoScroll: Boolean; + FButtonSize: Integer; + FMargin: Integer; + FOrientation: TTBXPageScrollerOrientation; + FPosition: Integer; + FPosRange: Integer; + FRange: Integer; + FScrollDirection: Integer; + FScrollCounter: Integer; + FScrollPending: Boolean; + FScrollTimer: TTimer; + FUpdatingButtons: Boolean; + FVisibleButtons: TTBXPageScrollerButtons; + procedure CalcAutoRange; + function IsRangeStored: Boolean; + procedure ScrollTimerTimer(Sender: TObject); + procedure SetButtonSize(Value: Integer); + procedure SetAutoRange(Value: Boolean); + procedure SetOrientation(Value: TTBXPageScrollerOrientation); + procedure SetPosition(Value: Integer); + procedure SetRange(Value: Integer); + procedure StopScrolling; + procedure ValidatePosition(var NewPos: Integer); + procedure CMParentColorChanged(var Message: TMessage); message CM_PARENTCOLORCHANGED; + procedure WMMouseMove(var Message: TWMMouseMove); message WM_MOUSEMOVE; + procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE; + procedure WMEraseBkgnd(var Message: TWmEraseBkgnd); message WM_ERASEBKGND; + procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST; + procedure WMNCLButtonDown(var Message: TWMNCLButtonDown); message WM_NCLBUTTONDOWN; + procedure WMNCMouseLeave(var Message: TMessage); message $2A2 {WM_NCMOUSELEAVE}; + procedure WMNCMouseMove(var Message: TWMNCMouseMove); message WM_NCMOUSEMOVE; + procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT; + procedure WMSize(var Message: TWMSize); message WM_SIZE; + protected + procedure AdjustClientRect(var Rect: TRect); override; + procedure AlignControls(AControl: TControl; var ARect: TRect); override; + function AutoScrollEnabled: Boolean; virtual; + procedure BeginScrolling(HitTest: Integer); + function CalcClientArea: TRect; + function CanAutoSize(var NewWidth, NewHeight: Integer): Boolean; override; + procedure ConstrainedResize(var MinWidth, MinHeight, MaxWidth, MaxHeight: Integer); override; + procedure CreateParams(var Params: TCreateParams); override; + procedure DoSetRange(Value: Integer); virtual; + procedure DrawNCArea(const DrawToDC: Boolean; const ADC: HDC; const Clip: HRGN); virtual; + procedure HandleScrollTimer; virtual; + procedure Loaded; override; + procedure RecalcNCArea; + procedure Resizing; virtual; + procedure UpdateButtons; + property AutoScroll: Boolean read FAutoScroll write FAutoScroll default True; + property ButtonSize: Integer read FButtonSize write SetButtonSize default 10; + property Orientation: TTBXPageScrollerOrientation read FOrientation write SetOrientation default tpsoVertical; + property Position: Integer read FPosition write SetPosition default 0; + property Margin: Integer read FMargin write FMargin default 0; + property Range: Integer read FRange write SetRange stored IsRangeStored; + public + constructor Create(AOwner: TComponent); override; + procedure DisableAutoRange; + procedure EnableAutoRange; + procedure ScrollToCenter(ARect: TRect); overload; + procedure ScrollToCenter(AControl: TControl); overload; + property AutoRange: Boolean read FAutoRange write SetAutoRange default False; + end; + + TTBXPageScroller = class(TTBXCustomPageScroller) + public + property Position; + published + property Align; + property Anchors; + property AutoRange; + property AutoScroll; + property ButtonSize; + property Color; + property Constraints; + property DockSite; + property DragCursor; + property DragKind; + property DragMode; + property DoubleBuffered; + property Enabled; + property Ctl3D; + property Font; + property Margin; + property Orientation; + property ParentBiDiMode; + property ParentColor; + property ParentCtl3D; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property Range; + property ShowHint; + property TabOrder; + property TabStop; + property Visible; + property OnCanResize; + property OnClick; + property OnConstrainedResize; +{$IFDEF JR_D5} + property OnContextPopup; +{$ENDIF} + property OnDblClick; + property OnDockDrop; + property OnDockOver; + property OnDragDrop; + property OnDragOver; + property OnEndDock; + property OnEndDrag; + property OnEnter; + property OnExit; + property OnGetSiteInfo; + property OnMouseDown; + property OnMouseMove; + property OnMouseUp; + property OnMouseWheel; + property OnMouseWheelDown; + property OnMouseWheelUp; + property OnResize; + property OnStartDock; + property OnStartDrag; + property OnUnDock; + end; + +implementation + +uses + TB2Common, TBXUtils, SysUtils; + +type + TWinControlAccess = class(TWinControl); + TDockAccess = class(TTBXMultiDock); + TTBDockableWindowAccess = class(TTBCustomDockableWindow); + +const + { Constants for TTBXDockablePanel-specific registry values. Do not localize! } + rvDockedWidth = 'DPDockedWidth'; + rvDockedHeight = 'DPDockedHeight'; + rvFloatingWidth = 'DPFloatingWidth'; + rvFloatingHeight = 'DPFloatingHeight'; + rvSplitWidth = 'DPSplitWidth'; + rvSplitHeight = 'DPSplitHeight'; + + HT_TB2k_Border = 2000; + HT_TB2k_Close = 2001; + HT_TB2k_Caption = 2002; + HT_TBX_SPLITRESIZELEFT = 86; + HT_TBX_SPLITRESIZERIGHT = 87; + HT_TBX_SPLITRESIZETOP = 88; + HT_TBX_SPLITRESIZEBOTTOM = 89; + DockedBorderSize = 2; + ScrollDelay = 300; + ScrollInterval = 75; + +var + MouseTimer: TTimer = nil; + MouseInObject: TTBXPanelObject = nil; + ObjectCount: Integer = 0; + + +procedure UpdateNCArea(Control: TWinControl; ViewType: Integer); +var + W, H: Integer; +begin + with Control do + begin + { Keep the client rect at the same position relative to screen } + W := ClientWidth; + H := ClientHeight; + SetWindowPos(Handle, 0, 0, 0, 0, 0, + SWP_FRAMECHANGED or SWP_NOACTIVATE or SWP_NOZORDER or SWP_NOREDRAW or SWP_NOMOVE or SWP_NOSIZE); + W := W - ClientWidth; + H := H - ClientHeight; + if (W <> 0) or (H <> 0) then + SetWindowPos(Handle, 0, Left - W div 2, Top - H div 2, Width + W, Height + H, + SWP_FRAMECHANGED or SWP_NOACTIVATE or SWP_NOZORDER); + RedrawWindow(Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or + RDW_ERASE or RDW_UPDATENOW or RDW_ALLCHILDREN); + end; +end; + +function GetMinControlHeight(Control: TControl): Integer; +begin + if Control.Align = alClient then + begin + if Control is TTBXPanelObject then Result := TTBXPanelObject(Control).GetMinHeight + else Result := Control.Constraints.MinHeight; + end + else Result := Control.Height; +end; + +function GetMinControlWidth(Control: TControl): Integer; +begin + if Control.Align = alClient then + begin + if Control is TTBXPanelObject then Result := TTBXPanelObject(Control).GetMinWidth + else Result := Control.Constraints.MinWidth; + end + else Result := Control.Width; +end; + +function IsActivated(AWinControl: TWinControl): Boolean; +var + C: TWinControl; +begin + { Returns true if AWinControl contains a focused control } + C := Screen.ActiveControl; + Result := True; + while C <> nil do + if C = AWinControl then Exit + else C := C.Parent; + Result := False; +end; + +procedure ApplyMargins(var R: TRect; const Margins: TTBXControlMargins); overload; +begin + with Margins do + begin + Inc(R.Left, Left); Inc(R.Top, Top); + Dec(R.Right, Right); Dec(R.Bottom, Bottom); + end; +end; + +procedure ApplyMargins(var R: TRect; const Margins: TRect); overload; +begin + with Margins do + begin + Inc(R.Left, Left); Inc(R.Top, Top); + Dec(R.Right, Right); Dec(R.Bottom, Bottom); + end; +end; + +procedure DrawFocusRect2(Canvas: TCanvas; const R: TRect); +var + DC: HDC; + C1, C2: TColor; +begin + DC := Canvas.Handle; + C1 := SetTextColor(DC, clBlack); + C2 := SetBkColor(DC, clWhite); + Canvas.DrawFocusRect(R); + SetTextColor(DC, C1); + SetBkColor(DC, C2); +end; + +function GetRealAlignment(Control: TControl): TAlignment; +const + ReverseAlignment: array [TAlignment] of TAlignment = (taRightJustify, taLeftJustify, taCenter); +begin + Result := Control.GetControlsAlignment; + if Control.UseRightToLeftAlignment then Result := ReverseAlignment[Result]; +end; + +function CompareEffectiveDockPos(const Item1, Item2, ExtraData: Pointer): Integer; far; +begin + Result := TTBCustomDockableWindow(Item1).EffectiveDockPos - TTBCustomDockableWindow(Item2).EffectiveDockPos; +end; + +function CompareDockPos(const Item1, Item2, ExtraData: Pointer): Integer; far; +var + P1, P2: Integer; +begin + P1 := TTBCustomDockableWindow(Item1).DockPos; + P2 := TTBCustomDockableWindow(Item2).DockPos; + if csLoading in TTBCustomDockableWindow(Item1).ComponentState then + begin + if P1 < 0 then P1 := MaxInt; + if P2 < 0 then P2 := MaxInt; + end; + Result := P1 - P2; +end; + + +//----------------------------------------------------------------------------// + +{ TTBXControlMargins } + +procedure TTBXControlMargins.Assign(Src: TPersistent); +begin + inherited; + Modified; +end; + +procedure TTBXControlMargins.Modified; +begin + if Assigned(FOnChange) then FOnChange(Self); +end; + +procedure TTBXControlMargins.SetBottom(Value: Integer); +begin + if FBottom <> Value then + begin + FBottom := Value; + Modified; + end; +end; + +procedure TTBXControlMargins.SetLeft(Value: Integer); +begin + if FLeft <> Value then + begin + FLeft := Value; + Modified; + end; +end; + +procedure TTBXControlMargins.SetRight(Value: Integer); +begin + if FRight <> Value then + begin + FRight := Value; + Modified; + end; +end; + +procedure TTBXControlMargins.SetTop(Value: Integer); +begin + if FTop <> Value then + begin + FTop := Value; + Modified; + end; +end; + +//----------------------------------------------------------------------------// + +{ TTBXMultiDock } + +function TTBXMultiDock.Accepts(ADockableWindow: TTBCustomDockableWindow): Boolean; +begin + Result := ADockableWindow is TTBXDockablePanel; +end; + +procedure TTBXMultiDock.ArrangeToolbars; +const + DSGN_DROPZONESIZE = 16; +type + TPosRec = record + Panel: TTBXDockablePanel; + MinSize, MaxSize, Size, Pos: Integer; + CanStretch: Boolean; + end; +var + NewDockList: TList; + PosData: array of TPosRec; + LeftRight: Boolean; + I, J, K, L, DragIndex, ResizeIndex, ForcedWidth: Integer; + EmptySize, ClientW, ClientH, DockSize, TotalSize, TotalMinimumSize, TotalMaximumSize: Integer; + {DragIndexPos: Integer;} {vb-} + T: TTBXDockablePanel; + S: TPoint; + CurRowPixel, CurRowSize: Integer; + StretchPanelCount: Integer; + Stretching: Boolean; + AccDelta, Acc: Extended; + Delta, IntAcc: Integer; + MinWidth, MaxWidth, EffectiveMinWidth, EffectiveMaxWidth: Integer; + R: TRect; + + function IndexOfDraggingToolbar(const List: TList): Integer; {vb+} + { Returns index of toolbar in List that's currently being dragged, or -1 } + var + I: Integer; + begin + for I := 0 to List.Count-1 do + if TTBCustomDockableWindow(List[I]).DragMode then begin + Result := I; + Exit; + end; + Result := -1; + end; + + procedure GetSizes(Panel: TTBXDockablePanel; out Size, MinSize, MaxSize: Integer); + var + Sz: TPoint; + MinWidth, MinHeight, MaxWidth, MaxHeight: Integer; + begin + Panel.GetBaseSize(Sz); + if LeftRight then + begin + Size := Panel.SplitHeight; + end + else + begin + Size := Panel.SplitWidth; + end; + MinWidth := 0; MaxWidth := 0; MinHeight := 0; MaxHeight := 0; + Panel.ConstrainedResize(MinWidth, MinHeight, MaxWidth, MaxHeight); + if not LeftRight then begin MinSize := MinWidth; MaxSize := MaxWidth end + else begin MinSize := MinHeight; MaxSize := MaxHeight end; + if MaxSize < MinSize then + begin + MaxSize := DockSize; + if MaxSize < MinSize then MaxSize := MinSize; + end; + if Size < MinSize then Size := MinSize + else if Size > MaxSize then Size := MaxSize; + end; + + procedure GetMinMaxWidth(Panel: TTBXDockablePanel; out Min, Max: Integer); + var + MinWidth, MinHeight, MaxWidth, MaxHeight: Integer; + begin + MinWidth := 0; MaxWidth := 0; MinHeight := 0; MaxHeight := 0; + Panel.ConstrainedResize(MinWidth, MinHeight, MaxWidth, MaxHeight); + if LeftRight then begin Min := MinWidth; Max := MaxWidth end + else begin Min := MinHeight; Max := MaxHeight end; + end; + +begin + if (DisableArrangeToolbars > 0) or (csLoading in ComponentState) then + begin + ArrangeToolbarsNeeded := True; + Exit; + end; + NewDockList := nil; + PosData := nil; + DisableArrangeToolbars := DisableArrangeToolbars + 1; + try + LeftRight := Position in [dpLeft, dpRight]; + + if not HasVisibleToolbars then + begin + EmptySize := Ord(FixAlign); + if csDesigning in ComponentState then EmptySize := 7; + if not LeftRight then ChangeWidthHeight(Width, EmptySize) + else ChangeWidthHeight(EmptySize, Height); + Exit; + end; + + ClientW := Width - NonClientWidth; + if ClientW < 0 then ClientW := 0; + ClientH := Height - NonClientHeight; + if ClientH < 0 then ClientH := 0; + if not LeftRight then DockSize := ClientW + else DockSize := ClientH; + + { Leave some space for dropping other panels in design time } + if csDesigning in ComponentState then Dec(DockSize, DSGN_DROPZONESIZE); + if DockSize < 0 then DockSize := 0; + + + for I := DockList.Count - 1 downto 0 do + begin + T := DockList[I]; + if csDestroying in T.ComponentState then + begin + DockList.Delete(I); + DockVisibleList.Remove(T); + end; + end; + + { always limit to one row } + for I := 0 to DockList.Count - 1 do + with TTBCustomDockableWindow(DockList[I]) do DockRow := 0; + + { Copy DockList to NewDockList, and ensure it is in correct ordering + according to DockRow/DockPos } + NewDockList := TList.Create; + NewDockList.Count := DockList.Count; + for I := 0 to NewDockList.Count - 1 do NewDockList[I] := DockList[I]; + {I := NewDockList.IndexOf(DragToolbar); {vb-} + I := IndexOfDraggingToolbar(NewDockList); {vb+} + ListSortEx(NewDockList, CompareDockPos, nil); + {DragIndex := NewDockList.IndexOf(DragToolbar); {vb-} + DragIndex := IndexOfDraggingToolbar(NewDockList); {vb+} + {if (I <> -1) and DragSplitting then {vb-} + if (I <> -1) and + TTBCustomDockableWindow(NewDockList[DragIndex]).DragSplitting then {vb+} + begin + { When splitting, don't allow the toolbar being dragged to change + positions in the dock list } + NewDockList.Move(DragIndex, I); + DragIndex := I; + end; + ListSortEx(DockVisibleList, CompareDockPos, nil); + + { Create a temporary array that holds new position data for the toolbars + and get size info } + SetLength(PosData, 0); + for I := 0 to NewDockList.Count - 1 do + begin + T := NewDockList[I]; + if ToolbarVisibleOnDock(T) then + begin + SetLength(PosData, Length(PosData) + 1); + with PosData[Length(PosData) - 1] do + begin + Panel := T as TTBXDockablePanel; + Pos := Panel.DockPos; + GetSizes(Panel, Size, MinSize, MaxSize{, OrigWidth}); + end; + end; + end; + + { Update drag index... } + if DragIndex >= 0 then + for I := 0 to Length(PosData) - 1 do + if NewDockList.IndexOf(PosData[I].Panel) = DragIndex then + begin + DragIndex := I; + Break; + end; + + { Count total sizes and set initial positions } + {DragIndexPos := 0;} {vb-} + TotalSize := 0; TotalMinimumSize := 0; TotalMaximumSize := 0; + for I := 0 to Length(PosData) - 1 do + with PosData[I] do + begin + {if I = DragIndex then DragIndexPos := Panel.DockPos;} {vb-} + Pos := TotalSize; + Inc(TotalSize, Size); + Inc(TotalMinimumSize, MinSize); + Inc(TotalMaximumSize, MaxSize); + end; + + if DockSize <> TotalSize then + begin + begin + { Proportionally stretch and shrink toolbars } + + if TotalMinimumSize >= DockSize then + for I := 0 to Length(PosData) - 1 do PosData[I].Size := PosData[I].MinSize + else if TotalMaximumSize <= DockSize then + for I := 0 to Length(PosData) - 1 do PosData[I].Size := PosData[I].MaxSize + else + begin + Delta := DockSize - TotalSize; + StretchPanelCount := 0; + Stretching := TotalSize < DockSize; // otherwise, shrinking + + for I := 0 to Length(PosData) - 1 do + with PosData[I] do + begin + if Stretching then CanStretch := Size < MaxSize + else CanStretch := Size > MinSize; + if CanStretch then Inc(StretchPanelCount); + end; + Assert(StretchPanelCount > 0); + + while Delta <> 0 do + begin + Assert(StretchPanelCount <> 0); + AccDelta := Delta / StretchPanelCount; + Acc := 0; IntAcc := 0; + for I := 0 to Length(PosData) - 1 do + with PosData[I] do if CanStretch then + begin + Acc := Acc + AccDelta; + Inc(Size, Round(Acc) - IntAcc); + IntAcc := Round(Acc); + end; + + TotalSize := 0; + for I := 0 to Length(PosData) - 1 do + with PosData[I] do + begin + if CanStretch then + if Stretching then + begin + if Size > MaxSize then + begin + Size := MaxSize; + CanStretch := False; + Dec(StretchPanelCount); + end; + end + else + begin + if Size < MinSize then + begin + Size := MinSize; + CanStretch := False; + Dec(StretchPanelCount); + end; + end; + Inc(TotalSize, Size); + end; + Delta := DockSize - TotalSize; + end; + end; + + TotalSize := 0; + for I := 0 to Length(PosData) - 1 do + with PosData[I] do + begin + Pos := TotalSize; + Inc(TotalSize, Size); + end; + end + end; + + for I := 0 to NewDockList.Count - 1 do + begin + for J := 0 to Length(PosData) - 1 do + with PosData[J] do + begin + if Panel = NewDockList[I] then + begin + Panel.EffectiveDockRowAccess := 0; + Panel.EffectiveDockPosAccess := PosData[J].Pos; + end; + end; + if CommitNewPositions then + begin + T := NewDockList[I]; + T.DockRow := T.EffectiveDockRow; + T.DockPos := T.EffectiveDockPos; + DockList[I] := NewDockList[I]; + end; + end; + + ResizeIndex := -1; + for I := 0 to Length(PosData) - 1 do + with PosData[I] do + if Panel is TTBXDockablePanel and Panel.IsResizing then + begin + ResizeIndex := I; + Break; + end; + + { Calculate the size of the dock } + if ResizeIndex < 0 then + begin + CurRowSize := 0; + for I := 0 to Length(PosData) - 1 do + with PosData[I] do + begin + Panel.CurrentSize := Size; + Panel.GetBaseSize(S); + if LeftRight then K := S.X + Panel.CalcNCSizes.X else K := S.Y + Panel.CalcNCSizes.Y; + if (DragIndex = I) and (Length(PosData) > 1) and (LastValidRowSize > 0) then K := 0; + if K > CurRowSize then CurRowSize := K; + end; + end + else + begin + EffectiveMinWidth := 0; + EffectiveMaxWidth := 0; + for I := 0 to Length(PosData) - 1 do + begin + GetMinMaxWidth(PosData[I].Panel, MinWidth, MaxWidth); + if MinWidth > EffectiveMinWidth then EffectiveMinWidth := MinWidth; + if (MaxWidth >= MinWidth) and (MaxWidth < EffectiveMaxWidth) then EffectiveMaxWidth := MaxWidth; + end; + if LeftRight then CurRowSize := PosData[ResizeIndex].Panel.Width + else CurRowSize := PosData[ResizeIndex].Panel.Height; + if (EffectiveMaxWidth > EffectiveMinWidth) and (CurRowSize > EffectiveMaxWidth) then CurRowSize := EffectiveMaxWidth; + if CurRowSize < EffectiveMinWidth then CurRowSize := EffectiveMinWidth; + end; + if CurRowSize > 0 then LastValidRowSize := CurRowSize; + + { Now actually move the toolbars } + for I := 0 to Length(PosData) - 1 do + with PosData[I] do + begin + if LeftRight then R := Bounds(0, Pos, CurRowSize, Size) + else R := Bounds(Pos, 0, Size, CurRowSize); + Panel.BoundsRect := R; + { This is to fix some weird behavior in design time } + if csDesigning in ComponentState then + with R do MoveWindow(Panel.Handle, Left, Top, Right - Left, Bottom - Top, True); + end; + + { Set the size of the dock } + if not LeftRight then ChangeWidthHeight(Width, CurRowSize + NonClientHeight) + else ChangeWidthHeight(CurRowSize + NonClientWidth, Height); + + finally + DisableArrangeToolbars := DisableArrangeToolbars - 1; + ArrangeToolbarsNeeded := False; + CommitNewPositions := False; + SetLength(PosData, 0); + NewDockList.Free; + end; +end; + +procedure TTBXMultiDock.Paint; +var + R: TRect; +begin + { Draw dotted border in design mode } + if csDesigning in ComponentState then + begin + R := ClientRect; + with Canvas do + begin + Pen.Style := psSolid; + Pen.Color := clBtnHighlight; + Brush.Color := clBtnHighlight; + Brush.Style := bsFDiagonal; + Rectangle(R.Left, R.Top, R.Right, R.Bottom); + Pen.Style := psSolid; + end; + end; +end; + +procedure TTBXMultiDock.ResizeVisiblePanels(NewSize: Integer); +var + I: Integer; +begin + BeginUpdate; + try + for I := 0 to DockVisibleList.Count - 1 do + if Position in [dpLeft, dpRight] then + TTBXDockablePanel(DockVisibleList[I]).DockedWidth := NewSize + else + TTBXDockablePanel(DockVisibleList[I]).DockedHeight := NewSize; + finally + EndUpdate; + end; +end; + +procedure TTBXMultiDock.ValidateInsert(AComponent: TComponent); +begin + if not (AComponent is TTBXDockablePanel) then + raise EInvalidOperation.CreateFmt('Cannot insert %s into TTBXMultiDock', [AComponent.ClassName]); +end; + +//----------------------------------------------------------------------------// + +{ TTBXPanelObject } + +procedure TTBXPanelObject.CMEnabledChanged(var Message: TMessage); +begin + inherited; + if not Enabled and FMouseInControl then + begin + FMouseInControl := False; + RemoveMouseTimer; + DoMouseLeave; + Invalidate; + Perform(WM_CANCELMODE, 0, 0); + end; +end; + +procedure TTBXPanelObject.CMParentColorChanged(var Message: TMessage); +begin + if Message.WParam = 0 then + begin + Message.WParam := 1; + Message.LParam := GetEffectiveColor(Parent); + end; + inherited; + Invalidate; +end; + +constructor TTBXPanelObject.Create(AOwner: TComponent); +begin + inherited; + ControlStyle := ControlStyle + [csAcceptsControls, csClickEvents, csDoubleClicks] - [csOpaque]; + if MouseTimer = nil then + begin + MouseTimer := TTimer.Create(nil); + MouseTimer.Enabled := False; + MouseTimer.Interval := 125; + end; + Inc(ObjectCount); + ParentColor := False; + Color := clNone; + AddThemeNotification(Self); +end; + +procedure TTBXPanelObject.CreateParams(var Params: TCreateParams); +begin + inherited CreateParams(Params); + if not (csDesigning in ComponentState) then + with Params.WindowClass do style := style and not (CS_HREDRAW or CS_VREDRAW); +// if cpoTransparent in PaintOptions then +// Params.ExStyle := Params.ExStyle or WS_EX_TRANSPARENT; +end; + +destructor TTBXPanelObject.Destroy; +begin + RemoveThemeNotification(Self); + RemoveMouseTimer; + Dec(ObjectCount); + if ObjectCount = 0 then + begin + MouseTimer.Free; + MouseTimer := nil; + end; + inherited; +end; + +procedure TTBXPanelObject.DoMouseEnter; +begin + if Assigned(FOnMouseEnter) then FOnMouseEnter(Self); +end; + +procedure TTBXPanelObject.DoMouseLeave; +begin + if Assigned(FOnMouseLeave) then FOnMouseLeave(Self); +end; + +function TTBXPanelObject.GetMinHeight: Integer; +begin + Result := Height; +end; + +function TTBXPanelObject.GetMinWidth: Integer; +begin + Result := Width; +end; + +procedure TTBXPanelObject.KeyDown(var Key: Word; Shift: TShiftState); +begin + inherited; + if SpaceAsClick and (Key = VK_SPACE) then + begin + FPushed := True; + Invalidate; + end; +end; + +procedure TTBXPanelObject.KeyUp(var Key: Word; Shift: TShiftState); +begin + if SpaceAsClick and Pushed and (Key = VK_SPACE) then + begin + FPushed := False; + Click; + Invalidate; + end; + inherited; +end; + +procedure TTBXPanelObject.MakeVisible; + + procedure HandleScroll(SW: TControl); + begin + if SW is TScrollingWinControl then TScrollingWinControl(SW).ScrollInView(Self) + else if SW is TTBXCustomPageScroller then TTBXCustomPageScroller(SW).ScrollToCenter(Self) + else if (Parent <> nil) and (Parent <> SW) then HandleScroll(Parent); + end; + +begin + HandleScroll(Parent); +end; + +procedure TTBXPanelObject.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); +begin + if (Button = mbLeft) and not FPushed then + begin + FPushed := True; + Invalidate; + end; + if Enabled then MouseEntered; + if not SmartFocus and CanFocus then SetFocus + else if SmartFocus and CanFocus and Assigned(Parent) and IsActivated(Parent) then + begin + FDisableScroll := True; + SetFocus; + FDisableScroll := False; + end; + inherited; +end; + +procedure TTBXPanelObject.MouseEntered; +begin + if Enabled and not FMouseInControl then + begin + FMouseInControl := True; + DoMouseEnter; + end; +end; + +procedure TTBXPanelObject.MouseLeft; +begin + if Enabled and FMouseInControl then + begin + FMouseInControl := False; + RemoveMouseTimer; + DoMouseLeave; + Invalidate; + end; +end; + +procedure TTBXPanelObject.MouseMove(Shift: TShiftState; X, Y: Integer); +var + P: TPoint; + DragTarget: TControl; +begin + P := ClientToScreen(Point(X, Y)); + DragTarget := FindDragTarget(P, True); + if (MouseInObject <> Self) and (DragTarget = Self) then + begin + if Assigned(MouseInObject) then MouseInObject.MouseLeft; + MouseInObject := Self; + MouseTimer.OnTimer := MouseTimerHandler; + MouseTimer.Enabled := True; + MouseEntered; + end + else if (DragTarget <> Self) and (Mouse.Capture = Handle) and FMouseInControl then + begin + MouseLeft; + end; + inherited; +end; + +procedure TTBXPanelObject.MouseTimerHandler(Sender: TObject); +var + P: TPoint; +begin + GetCursorPos(P); + if FindDragTarget(P, True) <> Self then MouseLeft; +end; + +procedure TTBXPanelObject.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); +begin + FPushed := False; + Invalidate; + inherited; +end; + +procedure TTBXPanelObject.RemoveMouseTimer; +begin + if MouseInObject = Self then + begin + MouseTimer.Enabled := False; + MouseInObject := nil; + end; +end; + +procedure TTBXPanelObject.SetPaintOptions(Value: TControlPaintOptions); +begin + if Value <> FPaintOptions then + begin + FPaintOptions := Value; + if cpoDoubleBuffered in Value then DoubleBuffered := True + else DoubleBuffered := False; + RecreateWnd; + end; +end; + +procedure TTBXPanelObject.TBMThemeChange(var Message); +var + R: TRect; +begin + if HandleAllocated then + begin + R := ClientRect; + InvalidateRect(Handle, @R, True); + end; +end; + +procedure TTBXPanelObject.WMEraseBkgnd(var Message: TMessage); +begin + if not DoubleBuffered or (Message.wParam = Message.lParam) then + begin + if Color = clNone then + DrawParentBackground(Self, TWMEraseBkgnd(Message).DC, ClientRect) + else + FillRectEx(TWMEraseBkgnd(Message).DC, ClientRect, Color); + end; + Message.Result := 1; +end; + +procedure TTBXPanelObject.WMKillFocus(var Message: TMessage); +begin + FPushed := False; + Invalidate; +end; + +procedure TTBXPanelObject.WMSetFocus(var Message: TMessage); +begin + inherited; + if not FDisableScroll then MakeVisible; + Invalidate; +end; + +//----------------------------------------------------------------------------// + +{ TTBXDockablePanel } + +procedure TTBXCustomDockablePanel.AdjustClientRect(var Rect: TRect); +begin + inherited AdjustClientRect(Rect); + if BorderSize <> 0 then InflateRect(Rect, -BorderSize, -BorderSize); +end; + +procedure TTBXCustomDockablePanel.BeginDockedSizing(HitTest: Integer); +var + OrigPos, OldPos: TPoint; + Msg: TMsg; + DockRect, DragRect, OrigDragRect, OldDragRect: TRect; + NCSizes: TPoint; + EdgeRect, OldEdgeRect: TRect; + ScreenDC: HDC; + EraseEdgeRect, CommitResizing: Boolean; + Form: TCustomForm; + LeftRight: Boolean; + + function RectToScreen(const R: TRect): TRect; + begin + Result := R; + Result.TopLeft := Parent.ClientToScreen(Result.TopLeft); + Result.BottomRight := Parent.ClientToScreen(Result.BottomRight); + end; + + function RectToClient(const R: TRect): TRect; + begin + Result := R; + Result.TopLeft := Parent.ScreenToClient(Result.TopLeft); + Result.BottomRight := Parent.ScreenToClient(Result.BottomRight); + end; + + function GetEdgeRect(const R: TRect): TRect; + begin + Result := DockRect; + case HitTest of + HTLEFT: begin Result.Left := R.Left - 1; Result.Right := R.Left + 1 end; + HTRIGHT: begin Result.Left := R.Right - 1; Result.Right := R.Right + 1 end; + HTTOP: begin Result.Top := R.Top - 1; Result.Bottom := R.Top + 1 end; + HTBOTTOM: begin Result.Top := R.Bottom - 1; Result.Bottom := R.Bottom + 1 end; + end; + end; + + procedure MouseMoved; + var + Pos: TPoint; + NewWidth: Integer; + NewHeight: Integer; + begin + GetCursorPos(Pos); + if (Pos.X = OldPos.X) and (Pos.Y = OldPos.Y) then Exit; + DragRect := OrigDragRect; + case HitTest of + HTLEFT: + begin + NewWidth := DragRect.Right - (DragRect.Left + Pos.X - OrigPos.X - 1); + if DoDockedResizing(False, NewWidth) then + DragRect.Left := DragRect.Right - NewWidth; + end; + HTRIGHT: + begin + NewWidth := (DragRect.Right + Pos.X - OrigPos.X) - DragRect.Left; + if DoDockedResizing(False, NewWidth) then + DragRect.Right := DragRect.Left + NewWidth; + end; + HTTOP: + begin + NewHeight := DragRect.Bottom - (DragRect.Top + Pos.Y - OrigPos.Y - 1); + if DoDockedResizing(True, NewHeight) then + DragRect.Top := DragRect.Bottom - NewHeight; + end; + HTBOTTOM: + begin + NewHeight := (DragRect.Bottom + Pos.Y - OrigPos.Y) - DragRect.Top; + if DoDockedResizing(True, NewHeight) then + DragRect.Bottom := DragRect.Top + NewHeight; + end; + end; + if not CompareMem(@OldDragRect, @DragRect, SizeOf(TRect)) then + begin + if SmoothDockedResize then + begin + CurrentDock.BeginUpdate; + if HitTest in [HTLEFT, HTRIGHT] then + begin + BlockSizeUpdate := True; + DockedWidth := DragRect.Right - DragRect.Left - NCSizes.X; + end + else + begin + BlockSizeUpdate := True; + DockedHeight := DragRect.Bottom - DragRect.Top - NCSizes.Y; + end; + BlockSizeUpdate := False; + CurrentDock.EndUpdate; + end + else + begin + EdgeRect := GetEdgeRect(DragRect); + DrawDraggingOutline(ScreenDC, EdgeRect, OldEdgeRect); + OldEdgeRect := EdgeRect; + EraseEdgeRect := True; + end; + OldPos := Pos; + OldDragRect := DragRect; + end; + end; + +begin + LeftRight := HitTest in [HTLEFT, HTRIGHT]; + if DoBeginDockedResizing(HitTest in [HTTOP, HTBOTTOM]) then + try + SetCapture(Handle); + ScreenDC := GetDC(0); + OrigDragRect := RectToScreen(BoundsRect); + DockRect := RectToScreen(CurrentDock.ClientRect); + OldDragRect := Rect(0, 0, 0, 0); + NCSizes := CalcNCSizes; + DragRect := OrigDragRect; + GetCursorPos(OrigPos); + OldPos := OrigPos; + FIsResizing := True; + + if not SmoothDockedResize then + begin + EdgeRect := GetEdgeRect(DragRect); + DrawDraggingOutline(ScreenDC, EdgeRect, Rect(0, 0, 0, 0)); + OldEdgeRect := EdgeRect; + EraseEdgeRect := True; + end + else EraseEdgeRect := False; + + while GetCapture = Handle do + begin + case Integer(GetMessage(Msg, 0, 0, 0)) of + -1: Break; + 0: begin + PostQuitMessage(Msg.WParam); + Break; + end; + end; + case Msg.Message of + WM_KEYDOWN, WM_KEYUP: if Msg.WParam = VK_ESCAPE then Break; + WM_MOUSEMOVE: MouseMoved; + WM_LBUTTONDOWN, WM_LBUTTONDBLCLK:Break; + WM_LBUTTONUP: Break; + WM_RBUTTONDOWN..WM_MBUTTONDBLCLK:; + else + TranslateMessage(Msg); + DispatchMessage(Msg); + end; + end; + finally + if GetCapture = Handle then ReleaseCapture; + CommitResizing := DoEndDockedResizing(HitTest in [HTTOP, HTBOTTOM]); + if EraseEdgeRect then + begin + DrawDraggingOutline(ScreenDC, Rect(0, 0, 0, 0), OldEdgeRect); + if CommitResizing and not IsRectEmpty(OldDragRect) then + with OldDragRect do + begin + BlockSizeUpdate := True; + if LeftRight then DockedWidth := Right - Left - NCSizes.X + else DockedHeight := Bottom - Top - NCSizes.Y; + BlockSizeUpdate := False; + end; + end + else if not CommitResizing then + begin + BlockSizeUpdate := True; + BoundsRect := RectToClient(OrigDragRect); + BlockSizeUpdate := False; + end; + ReleaseDC(0, ScreenDC); + FIsResizing := False; + if csDesigning in ComponentState then + begin + Form := GetParentForm(Self); + if (Form <> nil) and (Form.Designer <> nil) then Form.Designer.Modified; + end; + end; +end; + +procedure TTBXCustomDockablePanel.BeginSplitResizing(HitTest: Integer); +type + TPosRec = record + Panel: TTBXDockablePanel; + OrigPos, OrigSize, OrigWidth, Pos, Size, MinSize, MaxSize: Integer; + end; +var + Dock: TDockAccess; + PosData: array of TPosRec; + I: Integer; + LeftRight, Smooth, CommitResizing: Boolean; + DockSize, TotalSize, TotalMinSize, TotalMaxSize: Integer; + OrigCursorPos, OldCursorPos: TPoint; + Msg: TMsg; + EffectiveIndex: Integer; + {EffectivePanel: TTBXDockablePanel;} {vb-} + EffectivePanel: TTBXCustomDockablePanel; {vb+} + PanelRect, DockRect, EdgeRect, OrigEdgeRect, OldEdgeRect: TRect; + EdgePosition: TTBDockPosition; + ScreenDC: HDC; + EraseEdgeRect: Boolean; + Form: TCustomForm; + Delta: Integer; + + procedure GetSizes(Panel: TTBXDockablePanel; out Size, MinSize, MaxSize, W: Integer); + var + Sz: TPoint; + MinWidth, MinHeight, MaxWidth, MaxHeight: Integer; + begin + Panel.GetBaseSize(Sz); + if not LeftRight then + begin + Size := Panel.Width; + W := Panel.Height; + end + else + begin + Size := Panel.Height; + W := Panel.Width; + end; + MinWidth := 0; MaxWidth := 0; MinHeight := 0; MaxHeight := 0; + Panel.ConstrainedResize(MinWidth, MinHeight, MaxWidth, MaxHeight); + if not LeftRight then begin MinSize := MinWidth; MaxSize := MaxWidth; end + else begin MinSize := MinHeight; MaxSize := MaxHeight end; + if MaxSize < MinSize then + begin + MaxSize := DockSize; + if MaxSize < MinSize then MaxSize := MinSize; + end; + if Size < MinSize then Size := MinSize + else if Size > MaxSize then Size := MaxSize; + end; + + procedure BlockSizeUpdates(DoBlock: Boolean); + var + I: Integer; + begin + for I := 0 to Length(PosData) - 1 do + with PosData[I].Panel do BlockSizeUpdate := DoBlock; + end; + + procedure SetSizes(RestoreOriginal: Boolean = False); + var + I: Integer; + R: TRect; + begin + Dock.BeginUpdate; + BlockSizeUpdates(True); + for I := 0 to Length(PosData) - 1 do + with PosData[I] do + begin + if LeftRight then + begin + if RestoreOriginal then R := Bounds(0, OrigPos, OrigWidth, OrigSize) + else R := Bounds(0, Pos, OrigWidth, Size); + end + else + begin + if RestoreOriginal then R := Bounds(OrigPos, 0, OrigSize, OrigWidth) + else R := Bounds(Pos, 0, Size, OrigWidth); + end; + if LeftRight then Panel.SplitHeight := Size + else Panel.SplitWidth := Size; + Panel.BoundsRect := R; + + { This is to fix some weird behavior in design time } + if csDesigning in ComponentState then + with R do MoveWindow(Panel.Handle, Left, Top, Right - Left, Bottom - Top, True); + end; + BlockSizeUpdates(False); + Dock.EndUpdate; + end; + + function GetEdgeRect(R: TRect): TRect; + begin + Result := R; + case EdgePosition of + dpRight: begin Result.Left := Result.Right - 1; Inc(Result.Right); end; + dpBottom: begin Result.Top := Result.Bottom - 1; Inc(Result.Bottom); end; + end; + end; + + function RectToScreen(const R: TRect): TRect; + begin + Result := R; + Result.TopLeft := Parent.ClientToScreen(Result.TopLeft); + Result.BottomRight := Parent.ClientToScreen(Result.BottomRight); + end; + + function RectToClient(const R: TRect): TRect; + begin + Result := R; + Result.TopLeft := Parent.ScreenToClient(Result.TopLeft); + Result.BottomRight := Parent.ScreenToClient(Result.BottomRight); + end; + + procedure MouseMoved; + var + CursorPos: TPoint; + I, P, Acc: Integer; + begin + GetCursorPos(CursorPos); + if (CursorPos.X = OldCursorPos.X) and (CursorPos.Y = OldCursorPos.Y) then Exit; + case EdgePosition of + dpRight: Delta := CursorPos.X - OrigCursorPos.X; + dpBottom: Delta := CursorPos.Y - OrigCursorPos.Y; + end; + if Delta = 0 then Exit; + + for I := 0 to Length(PosData) - 1 do + with PosData[I] do + begin + Pos := OrigPos; + Size := OrigSize; + end; + + Acc := Delta; + for I := EffectiveIndex downto 0 do + with PosData[I] do + begin + Inc(Size, Acc); Acc := 0; + if Size > MaxSize then + begin + Acc := Size - MaxSize; + Size := MaxSize; + end + else if Size < MinSize then + begin + Acc := Size - MinSize; + Size := MinSize; + end; + if Acc = 0 then Break; + end; + + if Acc <> 0 then Dec(Delta, Acc); + + Acc := Delta; + for I := EffectiveIndex + 1 to Length(PosData) - 1 do + with PosData[I] do + begin + Dec(Size, Acc); Acc := 0; + if Size > MaxSize then + begin + Acc := MaxSize - Size; + Size := MaxSize; + end + else if Size < MinSize then + begin + Acc := MinSize - Size; + Size := MinSize; + end; + if Acc = 0 then Break; + end; + + if Acc <> 0 then + begin + Dec(Delta, Acc); + for I := 0 to EffectiveIndex do with PosData[I] do Size := OrigSize; + Acc := Delta; + for I := EffectiveIndex downto 0 do + with PosData[I] do + begin + Inc(Size, Acc); Acc := 0; + if Size > MaxSize then + begin + Acc := Size - MaxSize; + Size := MaxSize; + end + else if Size < MinSize then + begin + Acc := Size - MinSize; + Size := MinSize; + end; + if Acc = 0 then Break; + end; + end; + + P := 0; + for I := 0 to Length(PosData) - 1 do + with PosData[I] do begin Pos := P; Inc(P, Size); end; + + if Smooth then SetSizes + else + begin + EdgeRect := DockRect; + if LeftRight then + begin + Inc(EdgeRect.Top, PosData[EffectiveIndex + 1].Pos - 1); + EdgeRect.Bottom := EdgeRect.Top + 2; + end + else + begin + Inc(EdgeRect.Left, PosData[EffectiveIndex + 1].Pos - 1); + EdgeRect.Right := EdgeRect.Left + 2; + end; + DrawDraggingOutline(ScreenDC, EdgeRect, OldEdgeRect); + EraseEdgeRect := True; + end; + + OldCursorPos := CursorPos; + OldEdgeRect := EdgeRect; + end; + +begin + if not (CurrentDock is TTBXMultiDock) then Exit; + Dock := TDockAccess(CurrentDock); + + SetLength(PosData, Dock.DockVisibleList.Count); + for I := 0 to Dock.DockVisibleList.Count - 1 do + with PosData[I] do + begin + { only docks with TTBXDockablePanels can be resized } + if not (TTBCustomDockableWindow(Dock.DockVisibleList[I]) is TTBXDockablePanel) then Exit; + Panel := TTBXDockablePanel(Dock.DockVisibleList[I]); + end; + + LeftRight := Dock.Position in [dpLeft, dpRight]; + if not LeftRight then DockSize := Dock.Width - Dock.NonClientWidth + else DockSize := Dock.Height - Dock.NonClientHeight; + if DockSize < 0 then DockSize := 0; + + { See if we can actually resize anything } + TotalSize := 0; TotalMinSize := 0; TotalMaxSize := 0; + for I := 0 to Length(PosData) - 1 do + with PosData[I] do + begin + GetSizes(Panel, Size, MinSize, MaxSize, OrigWidth); + OrigSize := Size; + OrigPos := TotalSize; + Pos := OrigPos; + Inc(TotalSize, Size); + Inc(TotalMinSize, MinSize); + Inc(TotalMaxSize, MaxSize); + end; + if (TotalMinSize > DockSize) or (TotalMaxSize < DockSize) then Exit; + + { Get effective edge and panel } + case HitTest of + HT_TBX_SPLITRESIZETOP: EdgePosition := dpTop; + HT_TBX_SPLITRESIZEBOTTOM: EdgePosition := dpBottom; + HT_TBX_SPLITRESIZELEFT: EdgePosition := dpLeft; + else + EdgePosition := dpRight; + end; + Smooth := True; + EffectivePanel := Self; + for I := 0 to Length(PosData) - 1 do + with PosData[I] do + begin + if not Panel.SmoothDockedResize then Smooth := False; + if Panel = Self then + begin + EffectiveIndex := I; + if EdgePosition in [dpLeft, dpTop] then + begin + Assert(I > 0); + EffectivePanel := PosData[I - 1].Panel; + if EdgePosition = dpLeft then EdgePosition := dpRight + else EdgePosition := dpBottom; + Dec(EffectiveIndex); + end; + end; + end; + + try + SetCapture(Handle); + ScreenDC := GetDC(0); + with EffectivePanel do PanelRect := RectToScreen(BoundsRect); + DockRect := RectToScreen(Dock.ClientRect); + GetCursorPos(OrigCursorPos); + OldCursorPos := OrigCursorPos; + OrigEdgeRect := GetEdgeRect(PanelRect); + OldEdgeRect := Rect(0, 0, 0, 0); + EdgeRect := OrigEdgeRect; + FIsSplitting := True; + + if not Smooth then + begin + DrawDraggingOutline(ScreenDC, EdgeRect, Rect(0, 0, 0, 0)); + OldEdgeRect := EdgeRect; + EraseEdgeRect := True; + end + else EraseEdgeRect := False; + + while GetCapture = Handle do + begin + case Integer(GetMessage(Msg, 0, 0, 0)) of + -1: Break; + 0: begin + PostQuitMessage(Msg.WParam); + Break; + end; + end; + case Msg.Message of + WM_KEYDOWN, WM_KEYUP: if Msg.WParam = VK_ESCAPE then Break; + WM_MOUSEMOVE: MouseMoved; + WM_LBUTTONDOWN, WM_LBUTTONDBLCLK:Break; + WM_LBUTTONUP: Break; + WM_RBUTTONDOWN..WM_MBUTTONDBLCLK:; + else + TranslateMessage(Msg); + DispatchMessage(Msg); + end; + end; + finally + if GetCapture = Handle then ReleaseCapture; + CommitResizing := True; + if EraseEdgeRect then + begin + DrawDraggingOutline(ScreenDC, Rect(0, 0, 0, 0), OldEdgeRect); + if CommitResizing then SetSizes; + end + else if not CommitResizing then SetSizes(True); + ReleaseDC(0, ScreenDC); + FIsSplitting := False; + if csDesigning in ComponentState then + begin + Form := GetParentForm(Self); + if (Form <> nil) and (Form.Designer <> nil) then Form.Designer.Modified; + end; + end; +end; + +function TTBXCustomDockablePanel.CalcNCSizes: TPoint; +begin + if not Docked then + begin + Result.X := 0; + Result.Y := 0; + end + else + begin + Result.X := DockedBorderSize * 2; + Result.Y := DockedBorderSize * 2; + if ShowCaptionWhenDocked then + if IsVertCaption then Inc(Result.X, GetSystemMetrics(SM_CYSMCAPTION)) + else Inc(Result.Y, GetSystemMetrics(SM_CYSMCAPTION)); + end; +end; + +function TTBXCustomDockablePanel.CalcSize(ADock: TTBDock): TPoint; +begin + if Assigned(ADock) then + begin + if ADock.Position in [dpLeft, dpRight] then + begin + Result.X := FDockedWidth; + Result.Y := ADock.ClientHeight - CalcNCSizes.Y; + end + else + begin + Result.X := ADock.ClientWidth - CalcNCSizes.X; + Result.Y := FDockedHeight; + end; + end + else + begin + { if floating width and height are yet undefined, copy them from docked width and height } + if FFloatingWidth = 0 then + begin + if Docked and (CurrentDock.Position in [dpTop, dpBottom]) then + FFloatingWidth := Width {CurrentDock.ClientWidth} - CalcNCSizes.X + else + FFloatingWidth := FDockedWidth; + end; + + if FFloatingHeight = 0 then + begin + if Docked and (CurrentDock.Position in [dpLeft, dpRight]) then + FFloatingHeight := {CurrentDock.ClientHeight} Height - CalcNCSizes.Y + else + FFloatingHeight := FDockedHeight; + end; + + Result.X := FFloatingWidth; + Result.Y := FFloatingHeight; + end; +end; + +function TTBXCustomDockablePanel.CanAutoSize(var NewWidth, NewHeight: Integer): Boolean; +begin + Result := True; +end; + +function TTBXCustomDockablePanel.CanDockTo(ADock: TTBDock): Boolean; +begin + Result := inherited CanDockTo(ADock); + if Result then + begin + if ADock is TTBXMultiDock then + begin + Result := dkMultiDock in SupportedDocks; + end + else + begin + Result := dkStandardDock in SupportedDocks;; + end; + end; +end; + +function TTBXCustomDockablePanel.CanSplitResize(EdgePosition: TTBDockPosition): Boolean; +var + Dock: TDockAccess; +begin + Result := Docked and (CurrentDock is TTBXMultiDock) and HandleAllocated; + if not Result then Exit; + Dock := TDockAccess(CurrentDock); + ListSortEx(Dock.DockVisibleList, CompareEffectiveDockPos, nil); + if Dock.Position in [dpLeft, dpRight] then + begin + case EdgePosition of + dpTop: Result := EffectiveDockPos > 0; + dpBottom: Result := Dock.DockVisibleList.Last <> Self; + else + Result := False; + end; + end + else + begin + case EdgePosition of + dpLeft: Result := EffectiveDockPos > 0; + dpRight: Result := Dock.DockVisibleList.Last <> Self; + else + Result := False; + end; + end; +end; + +procedure TTBXCustomDockablePanel.CMColorChanged(var Message: TMessage); +begin + UpdateEffectiveColor; + Brush.Color := Color; + if Docked and HandleAllocated then + begin + RedrawWindow(Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or + RDW_ERASE or RDW_UPDATENOW or RDW_ALLCHILDREN); + end; + Invalidate; + UpdateChildColors; +end; + +procedure TTBXCustomDockablePanel.CMControlChange(var Message: TCMControlChange); +begin + inherited; + if Message.Inserting and (Color = clNone) then + Message.Control.Perform(CM_PARENTCOLORCHANGED, 1, EffectiveColor); +end; + +procedure TTBXCustomDockablePanel.CMTextChanged(var Message: TMessage); +begin + inherited; + if HandleAllocated then + begin + if Docked then RedrawWindow(Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE) + else RedrawWindow(TTBXFloatingWindowParent(Parent).Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE); + end; +end; + +procedure TTBXCustomDockablePanel.ConstrainedResize(var MinWidth, MinHeight, MaxWidth, MaxHeight: Integer); +var + Sz: TPoint; +begin + Sz := CalcNCSizes; + if MinClientWidth > 0 then MinWidth := MinClientWidth + Sz.X; + if MinClientHeight > 0 then MinHeight := MinClientHeight + Sz.Y; + if MaxClientWidth > 0 then MaxWidth := MaxClientWidth + Sz.X; + if MaxClientHeight > 0 then MaxHeight := MaxClientHeight + Sz.Y; +end; + +constructor TTBXCustomDockablePanel.Create(AOwner: TComponent); +begin + inherited; + FMinClientWidth := 32; + FMinClientHeight := 32; + FDockedWidth := 128; + FDockedHeight := 128; + FHorzResizeCursor := crSizeWE; {vb+} + FHorzSplitCursor := crHSplit; {vb+} + FVertResizeCursor := crSizeNS; {vb+} + FVertSplitCursor := crVSplit; {vb+} + CloseButtonWhenDocked := True; + DblClickUndock := False; + FShowCaptionWhenDocked := True; + FSmoothDockedResize := True; + BlockSizeUpdate := True; + SetBounds(Left, Top, 128, 128); + BlockSizeUpdate := False; + FullSize := True; + Color := clNone; + AddThemeNotification(Self); + SupportedDocks := [dkStandardDock, dkMultiDock]; +end; + +destructor TTBXCustomDockablePanel.Destroy; +begin + RemoveThemeNotification(Self); + inherited; +end; + +function TTBXCustomDockablePanel.DoArrange(CanMoveControls: Boolean; + PreviousDockType: TTBDockType; NewFloating: Boolean; NewDock: TTBDock): TPoint; +begin + Result := CalcSize(NewDock); +end; + +function TTBXCustomDockablePanel.DoBeginDockedResizing(Vertical: Boolean): Boolean; +var + Sz: Integer; +begin + Result := True; + if Vertical then Sz := Height else Sz := Width; + if Assigned(FOnDockedResizing) then FOnDockedResizing(Self, Vertical, Sz, rsBeginResizing, Result); + if Result then + if Vertical then Height := Sz else Width := Sz; +end; + +function TTBXCustomDockablePanel.DoDockedResizing(Vertical: Boolean; var NewSize: Integer): Boolean; +const + MIN_PARENT_CLIENT_SIZE = 32; +var + NCSizes: TPoint; + CW, CH: Integer; + DockParent: TWinControl; + ClientSize: TPoint; +begin + NCSizes := CalcNCSizes; + DockParent := Parent.Parent; + ClientSize := GetClientSizeEx(DockParent); + + Assert(DockParent <> nil); + if not Vertical then + begin + CW := ClientSize.X - MIN_PARENT_CLIENT_SIZE + Width; + if NewSize > CW then NewSize := CW; + CW := NewSize - NCSizes.X; + if CW < MinClientWidth then CW := MinClientWidth + else if (MaxClientWidth > MinClientWidth) and (CW > MaxClientWidth) then CW := MaxClientWidth; + NewSize := CW + NCSizes.X; + end + else + begin + CH := ClientSize.Y - MIN_PARENT_CLIENT_SIZE + Height; + if NewSize > CH then NewSize := CH; + CH := NewSize - NCSizes.Y; + if CH < MinClientHeight then CH := MinClientHeight + else if (MaxClientHeight > MinClientHeight) and (CH > MaxClientHeight) then CH := MaxClientHeight; + NewSize := CH + NCSizes.Y; + end; + Result := True; + if Assigned(FOnDockedResizing) then FOnDockedResizing(Self, Vertical, NewSize, rsResizing, Result); +end; + +function TTBXCustomDockablePanel.DoEndDockedResizing(Vertical: Boolean): Boolean; +var + Sz: Integer; +begin + Result := True; + if Vertical then Sz := Height else Sz := Width; + if Assigned(FOnDockedResizing) then + FOnDockedResizing(Self, Vertical, Sz, rsEndResizing, Result); + if Result then + if Vertical then Height := Sz else Width := Sz; +end; + +procedure TTBXCustomDockablePanel.DrawNCArea(const DrawToDC: Boolean; + const ADC: HDC; const Clip: HRGN); +var + DC: HDC; + R, CR: TRect; + ACanvas: TCanvas; + Sz: Integer; + DockPanelInfo: TTBXDockPanelInfo; + S: string; +begin + if not Docked or not HandleAllocated then Exit; + + if not DrawToDC then DC := GetWindowDC(Handle) + else DC := ADC; + + Assert(DC <> 0, 'TTBXToolWindow.DrawNCArea Error'); + try + GetDockPanelInfo(DockPanelInfo); + GetWindowRect(Handle, R); + OffsetRect(R, -R.Left, -R.Top); + if not DrawToDC then + begin + SelectNCUpdateRgn(Handle, DC, Clip); + CR := R; + with DockPanelInfo.BorderSize, CR do + begin + InflateRect(CR, -X, -Y); + if DockPanelInfo.ShowCaption then + begin + Sz := GetSystemMetrics(SM_CYSMCAPTION); + if DockPanelInfo.IsVertical then Inc(Top, Sz) + else Inc(Left, Sz); + end; + ExcludeClipRect(DC, Left, Top, Right, Bottom); + end; + end; + S := Caption; + DockPanelInfo.Caption := PChar(S); + ACanvas := TCanvas.Create; + try + ACanvas.Handle := DC; + ACanvas.Brush.Color := EffectiveColor; + CurrentTheme.PaintDockPanelNCArea(ACanvas, R, DockPanelInfo); + finally + ACanvas.Handle := 0; + ACanvas.Free; + end; + finally + if not DrawToDC then ReleaseDC(Handle, DC); + end; +end; + +procedure TTBXCustomDockablePanel.GetBaseSize(var ASize: TPoint); +begin + ASize := CalcSize(CurrentDock); +end; + +function TTBXCustomDockablePanel.GetDockedCloseButtonRect(LeftRight: Boolean): TRect; +var + X, Y, Z: Integer; +begin + Z := GetSystemMetrics(SM_CYSMCAPTION) - 1; + if LeftRight or not IsVertCaption then + begin + X := (ClientWidth + DockedBorderSize) - Z; + Y := DockedBorderSize; + end + else + begin + X := DockedBorderSize; + Y := ClientHeight + DockedBorderSize - Z; + end; + Result := Bounds(X, Y, Z, Z); +end; + +procedure TTBXCustomDockablePanel.GetDockPanelInfo(out DockPanelInfo: TTBXDockPanelInfo); +begin + FillChar(DockPanelInfo, SizeOf(DockPanelInfo), 0); + DockPanelInfo.WindowHandle := WindowHandle; + DockPanelInfo.ViewType := GetViewType; + if CurrentDock <> nil then DockPanelInfo.IsVertical := not IsVertCaption; + DockPanelInfo.AllowDrag := CurrentDock.AllowDrag; + DockPanelInfo.BorderStyle := BorderStyle; + CurrentTheme.GetViewBorder(DockPanelInfo.ViewType, DockPanelInfo.BorderSize); + DockPanelInfo.ClientWidth := ClientWidth; + DockPanelInfo.ClientHeight := ClientHeight; + DockPanelInfo.ShowCaption := ShowCaptionWhenDocked; + DockPanelInfo.EffectiveColor := EffectiveColor; + if ShowCaptionWhenDocked and CloseButtonWhenDocked then + begin + DockPanelInfo.CloseButtonState := CDBS_VISIBLE; + if CloseButtonDown then DockPanelInfo.CloseButtonState := DockPanelInfo.CloseButtonState or CDBS_PRESSED; + if CloseButtonHover then DockPanelInfo.CloseButtonState := DockPanelInfo.CloseButtonState or CDBS_HOT; + end; +end; + +function TTBXCustomDockablePanel.GetFloatingBorderSize: TPoint; +begin + CurrentTheme.GetViewBorder(GetViewType or DPVT_FLOATING, Result); +end; + +function TTBXCustomDockablePanel.GetFloatingWindowParentClass: TTBFloatingWindowParentClass; +begin + Result := TTBXFloatingWindowParent; +end; + +procedure TTBXCustomDockablePanel.GetMinMaxSize(var AMinClientWidth, AMinClientHeight, + AMaxClientWidth, AMaxClientHeight: Integer); +begin + AMinClientWidth := FMinClientWidth; + AMinClientHeight := FMinClientHeight; + AMaxClientWidth := FMaxClientWidth; + AMaxClientHeight := FMaxClientHeight; +end; + +function TTBXCustomDockablePanel.GetViewType: Integer; +begin + Result := DPVT_NORMAL; + if Floating then Result := Result or DPVT_FLOATING; + if Resizable then Result := Result or DPVT_RESIZABLE; +end; + +function TTBXCustomDockablePanel.IsVertCaption: Boolean; +begin + case CaptionRotation of + dpcrAlwaysHorz: Result := False; + dpcrAlwaysVert: Result := Docked; + else // dpcrAuto: + Result := Docked and (CurrentDock.Position in [dpTop, dpBottom]); + end; +end; + +procedure TTBXCustomDockablePanel.Loaded; +begin + inherited; + UpdateChildColors; +end; + +procedure TTBXCustomDockablePanel.Paint; +begin + if csDesigning in ComponentState then with Canvas do + begin + Pen.Style := psDot; + Pen.Color := clBtnShadow; + Brush.Style := bsClear; + with ClientRect do Rectangle(Left, Top, Right, Bottom); + Pen.Style := psSolid; + end; +end; + +procedure TTBXCustomDockablePanel.ReadPositionData(const Data: TTBReadPositionData); +begin + with Data do + begin + FDockedWidth := ReadIntProc(Name, rvDockedWidth, FDockedWidth, ExtraData); + FDockedHeight := ReadIntProc(Name, rvDockedHeight, FDockedHeight, ExtraData); + FFloatingWidth := ReadIntProc(Name, rvFloatingWidth, FFloatingWidth, ExtraData); + FFloatingHeight := ReadIntProc(Name, rvFloatingHeight, FFloatingHeight, ExtraData); + FSplitWidth := ReadIntProc(Name, rvSplitWidth, FSplitWidth, ExtraData); + FSplitHeight := ReadIntProc(Name, rvSplitHeight, FSplitHeight, ExtraData); + end; +end; + +procedure TTBXCustomDockablePanel.SetBorderSize(Value: Integer); +begin + if FBorderSize <> Value then + begin + FBorderSize := Value; + Realign; + end; +end; + +procedure TTBXCustomDockablePanel.SetBounds(ALeft, ATop, AWidth, AHeight: Integer); +begin + inherited SetBounds(ALeft, ATop, AWidth, AHeight); +end; + +procedure TTBXCustomDockablePanel.SetCaptionRotation(Value: TDPCaptionRotation); +begin + if FCaptionRotation <> Value then + begin + FCaptionRotation := Value; + if Docked and HandleAllocated then + SetWindowPos(Handle, 0, 0, 0, 0, 0, SWP_FRAMECHANGED or + SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE or SWP_NOZORDER); + end; +end; + +procedure TTBXCustomDockablePanel.SetDockedHeight(Value: Integer); +begin + if Value < MinClientHeight then Value := MinClientHeight; + if Value <> FDockedHeight then + begin + FDockedHeight := Value; + if Docked and (CurrentDock.Position in [dpTop, dpBottom]) then + begin + BlockSizeUpdate := True; + Height := Value + CalcNCSizes.Y; + BlockSizeUpdate := False; + end; + end; +end; + +procedure TTBXCustomDockablePanel.SetDockedWidth(Value: Integer); +begin + if Value < MinClientWidth then Value := MinClientWidth; + if Value <> FDockedWidth then + begin + FDockedWidth := Value; + if Docked and (CurrentDock.Position in [dpLeft, dpRight]) then + begin + BlockSizeUpdate := True; + Width := Value + CalcNCSizes.X; + BlockSizeUpdate := False; + end; + end; +end; + +procedure TTBXCustomDockablePanel.SetFloatingHeight(Value: Integer); +begin + { FloatingHeight (and floating width) can be set to 0 while panel is docked. + This will force to restore floating dimensions from docked size } + if Value < 0 then Value := 0; + if not Docked and (Value < MinClientHeight) then Value := MinClientHeight; + if Value <> FFloatingHeight then + begin + FFloatingHeight := Value; + if not Docked then + begin + BlockSizeUpdate := True; + Height := Value + CalcNCSizes.Y; + BlockSizeUpdate := False; + end; + end; +end; + +procedure TTBXCustomDockablePanel.SetFloatingWidth(Value: Integer); +begin + { See comment for TTBXDockablePanel.SetFloatingHeight } + if Value < 0 then Value := 0; + if not Docked and (Value < MinClientWidth) then Value := MinClientWidth; + if Value <> FFloatingWidth then + begin + FFloatingWidth := Value; + if not Docked then + begin + BlockSizeUpdate := True; + Width := Value + CalcNCSizes.X; + BlockSizeUpdate := False; + end; + end; +end; + +procedure TTBXCustomDockablePanel.SetMinClientHeight(Value: Integer); +begin + if Value < 8 then Value := 8; + FMinClientHeight := Value; +end; + +procedure TTBXCustomDockablePanel.SetMinClientWidth(Value: Integer); +begin + if Value < 8 then Value := 8; + FMinClientWidth := Value; +end; + +procedure TTBXCustomDockablePanel.SetParent(AParent: TWinControl); +begin + inherited; + if AParent is TTBXFloatingWindowParent then + TTBXFloatingWindowParent(AParent).SnapDistance := SnapDistance; +end; + +procedure TTBXCustomDockablePanel.SetShowCaptionWhenDocked(Value: Boolean); +begin + if FShowCaptionWhenDocked <> Value then + begin + FShowCaptionWhenDocked := Value; + if Docked then + begin + if HandleAllocated then + SetWindowPos(Handle, 0, 0, 0, 0, 0, SWP_FRAMECHANGED or + SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE or SWP_NOZORDER); + end; + end; +end; + +procedure TTBXCustomDockablePanel.SetSnapDistance(Value: Integer); +begin + if Value < 0 then Value := 0; + FSnapDistance := Value; + if (Parent <> nil) and (Parent is TTBXFloatingWindowParent) then + TTBXFloatingWindowParent(Parent).SnapDistance := Value; +end; + +procedure TTBXCustomDockablePanel.SetSplitHeight(Value: Integer); +begin + if Value < 0 then Value := 0; + if FSplitHeight <> Value then + begin + FSplitHeight := Value; + if Docked and (CurrentDock.Position in [dpLeft, dpRight]) and + (CurrentDock is TTBXMultiDock) then CurrentDock.ArrangeToolbars; + end; +end; + +procedure TTBXCustomDockablePanel.SetSplitWidth(Value: Integer); +begin + if Value < 0 then Value := 0; + if FSplitWidth <> Value then + begin + FSplitWidth := Value; + if Docked and (CurrentDock.Position in [dpTop, dpBottom]) and + (CurrentDock is TTBXMultiDock) then CurrentDock.ArrangeToolbars; + end; +end; + +procedure TTBXCustomDockablePanel.SizeChanging(const AWidth, AHeight: Integer); +begin + if not BlockSizeUpdate then + begin + if Docked and (CurrentDock.Position in [dpLeft, dpRight]) then + FDockedWidth := AWidth - CalcNCSizes.X + else if Floating then + FFloatingWidth := AWidth - CalcNCSizes.X; + + if Docked and (CurrentDock.Position in [dpTop, dpBottom]) then + FDockedHeight := AHeight - CalcNCSizes.Y + else if Floating then + FFloatingHeight := AHeight - CalcNCSizes.Y; + end; +end; + +procedure TTBXCustomDockablePanel.TBMGetEffectiveColor(var Message: TMessage); +begin + Message.WParam := EffectiveColor; + Message.Result := 1; +end; + +procedure TTBXCustomDockablePanel.TBMGetViewType(var Message: TMessage); +begin + Message.Result := GetViewType; +end; + +procedure TTBXCustomDockablePanel.TBMThemeChange(var Message: TMessage); +var + M: TMessage; +begin + case Message.WParam of + TSC_BEFOREVIEWCHANGE: BeginUpdate; + TSC_AFTERVIEWCHANGE: + begin + EndUpdate; + UpdateEffectiveColor; + + if HandleAllocated and not (csDestroying in ComponentState) and + (Parent is TTBXFloatingWindowParent) then + UpdateNCArea(TTBXFloatingWindowParent(Parent), GetViewType) + else + UpdateNCArea(Self, GetViewType); + + Invalidate; + + M.Msg := CM_PARENTCOLORCHANGED; + M.WParam := 1; + M.LParam := EffectiveColor; + M.Result := 0; + Broadcast(M); + end; + end; +end; + +procedure TTBXCustomDockablePanel.UpdateChildColors; +var + M: TMessage; +begin + M.Msg := CM_PARENTCOLORCHANGED; + M.WParam := 1; + M.LParam := EffectiveColor; + M.Result := 0; + Broadcast(M); +end; + +procedure TTBXCustomDockablePanel.UpdateEffectiveColor; +begin + if Color = clNone then FEffectiveColor := CurrentTheme.GetViewColor(GetViewType) + else FEffectiveColor := Color; +end; + +procedure TTBXCustomDockablePanel.WMEraseBkgnd(var Message: TWMEraseBkgnd); +var + BRUSH: HBRUSH; +begin + BRUSH := CreateSolidBrush(ColorToRGB(EffectiveColor)); + FillRect(Message.DC, Clientrect, BRUSH); + DeleteObject(BRUSH); + Message.Result := 1; +end; + +procedure TTBXCustomDockablePanel.WMNCCalcSize(var Message: TWMNCCalcSize); +begin + Message.Result := 0; + if Docked then + with Message.CalcSize_Params^ do + begin + InflateRect(rgrc[0], -DockedBorderSize, -DockedBorderSize); + if ShowCaptionWhenDocked then + if IsVertCaption then Inc(rgrc[0].Left, GetSystemMetrics(SM_CYSMCAPTION)) + else Inc(rgrc[0].Top, GetSystemMetrics(SM_CYSMCAPTION)) + end; +end; + +procedure TTBXCustomDockablePanel.WMNCHitTest(var Message: TWMNCHitTest); +const + CResizeMargin = 2; +var + P: TPoint; + R: TRect; + Sz: Integer; + IsVertical, UseDefaultHandler: Boolean; +begin + if Docked then + begin + UseDefaultHandler := False; + if csDesigning in ComponentState then with Message do + begin + P := SmallPointToPoint(Pos); + GetWindowRect(Handle, R); + if PtInRect(R, P) then + begin + Result := 0; + case CurrentDock.Position of + dpLeft: if P.X >= R.Right - CResizeMargin then Result := HTRIGHT; + dpTop: if P.Y >= R.Bottom - CResizeMargin then Result := HTBOTTOM; + dpRight: if P.X <= R.Left + CResizeMargin then Result := HTLEFT; + dpBottom: if P.Y <= R.Top + CResizeMargin then Result := HTTOP; + end; + if Result = 0 then + begin + if (P.X >= R.Right - CResizeMargin) and CanSplitResize(dpRight) then Result := HT_TBX_SPLITRESIZERIGHT + else if (P.Y >= R.Bottom - CResizeMargin) and CanSplitResize(dpBottom) then Result := HT_TBX_SPLITRESIZEBOTTOM + else if (P.X <= R.Left + CResizeMargin) and CanSplitResize(dpLeft) then Result := HT_TBX_SPLITRESIZELEFT + else if (P.Y <= R.Top + CResizeMargin) and CanSplitResize(dpTop) then Result := HT_TBX_SPLITRESIZETOP; + end; + UseDefaultHandler := Result <> 0; + end; + if UseDefaultHandler then DefaultHandler(Message) + else inherited; + end; + + with Message do + begin + P := SmallPointToPoint(Pos); + GetWindowRect(Handle, R); + if Resizable then + case CurrentDock.Position of + dpLeft: if P.X >= R.Right - CResizeMargin then Result := HTRIGHT; + dpTop: if P.Y >= R.Bottom - CResizeMargin then Result := HTBOTTOM; + dpRight: if P.X <= R.Left + CResizeMargin then Result := HTLEFT; + dpBottom: if P.Y <= R.Top + CResizeMargin then Result := HTTOP; + end; + if Result = 0 then + begin + if (P.X >= R.Right - CResizeMargin) and CanSplitResize(dpRight) then Result := HT_TBX_SPLITRESIZERIGHT + else if (P.Y >= R.Bottom - CResizeMargin) and CanSplitResize(dpBottom) then Result := HT_TBX_SPLITRESIZEBOTTOM + else if (P.X <= R.Left + CResizeMargin) and CanSplitResize(dpLeft) then Result := HT_TBX_SPLITRESIZELEFT + else if (P.Y <= R.Top + CResizeMargin) and CanSplitResize(dpTop) then Result := HT_TBX_SPLITRESIZETOP; + end; + if (Result <> HTCLIENT) and ((Result < HTLEFT) or (Result > HTBOTTOM)) and + ((Result < HT_TBX_SPLITRESIZELEFT) or (Result > HT_TBX_SPLITRESIZEBOTTOM)) then + begin + Result := HTNOWHERE; + InflateRect(R, -DockedBorderSize, -DockedBorderSize); + + if PtInRect(R, P) and ShowCaptionWhenDocked and not (csDesigning in ComponentState) then + begin + { caption area } + IsVertical := not IsVertCaption; + if CloseButtonWhenDocked then + begin + Sz := GetSystemMetrics(SM_CYSMCAPTION); + if IsVertical then Inc(Sz, 4) else Dec(Sz, 4); + end + else Sz := 0; + + if (IsVertical and (P.X >= R.Right - Sz) and (P.Y < R.Top + Sz)) or + (not IsVertical and (P.Y >= R.Bottom - Sz) and (P.X < R.Left + Sz)) then + Result := HT_TB2k_Close + else + Result := HT_TB2k_Border; + end; + end; + end; + end + else inherited; +end; + +procedure TTBXCustomDockablePanel.WMNCLButtonDown(var Message: TWMNCLButtonDown); +var + OldCursor: HCURSOR; +begin + if Message.HitTest in [HTLEFT..HTBOTTOM] then BeginDockedSizing(Message.HitTest) + else if Message.HitTest in [HT_TBX_SPLITRESIZELEFT..HT_TBX_SPLITRESIZEBOTTOM] then BeginSplitResizing(Message.HitTest) + else + begin + if (Message.HitTest = HT_TB2k_Border) and IsMovable then + begin + OldCursor := SetCursor(LoadCursor(0, IDC_SIZEALL)); + try + inherited; + finally + SetCursor(OldCursor); + end; + end + else inherited; + end; +end; + +procedure TTBXCustomDockablePanel.WMSetCursor(var Message: TWMSetCursor); +var Cur: TCursor; {vb+} +begin + {if Docked and CurrentDock.AllowDrag and + (Message.CursorWnd = WindowHandle) and + (Smallint(Message.HitTest) = HT_TB2k_Border) and + ShowCaptionWhenDocked then + begin + SetCursor(LoadCursor(0, IDC_ARROW)); + Message.Result := 1; + Exit; + end + else if Docked and CurrentDock.AllowDrag and (Message.CursorWnd = WindowHandle) then + begin + if (Message.HitTest = HT_TBX_SPLITRESIZELEFT) or (Message.HitTest = HT_TBX_SPLITRESIZERIGHT) then + begin + SetCursor(LoadCursor(0, IDC_SIZEWE)); + Message.Result := 1; + Exit; + end + else if (Message.HitTest = HT_TBX_SPLITRESIZETOP) or (Message.HitTest = HT_TBX_SPLITRESIZEBOTTOM) then + begin + SetCursor(LoadCursor(0, IDC_SIZENS)); + Message.Result := 1; + Exit; + end; + end; } {vb-} + if Docked and CurrentDock.AllowDrag and + (Message.CursorWnd = WindowHandle) then + begin + Cur := crNone; + case Message.HitTest of + HTLEFT, HTRIGHT: + Cur := HorzResizeCursor; + HTTOP, HTBOTTOM: + Cur := VertResizeCursor; + HT_TBX_SPLITRESIZELEFT, HT_TBX_SPLITRESIZERIGHT: + Cur := HorzSplitCursor; + HT_TBX_SPLITRESIZETOP, HT_TBX_SPLITRESIZEBOTTOM: + Cur := VertSplitCursor; + HT_TB2k_Border: + if ShowCaptionWhenDocked then Cur := crArrow; + end; + if Cur <> crNone then + begin + SetCursor(Screen.Cursors[Cur]); + Message.Result := 1; + Exit; + end; + end; + inherited; +end; + +procedure TTBXCustomDockablePanel.WMWindowPosChanged(var Message: TWMWindowPosChanged); +begin + inherited; + if (Message.WindowPos^.flags and SWP_NOSIZE) = 0 then + begin + Realign; + Update; + end; + if (Message.WindowPos^.flags and SWP_SHOWWINDOW) <> 0 then + begin + UpdateEffectiveColor; + UpdateChildColors; + end; +end; + +procedure TTBXCustomDockablePanel.WritePositionData(const Data: TTBWritePositionData); +begin + with Data do + begin + WriteIntProc(Name, rvDockedWidth, FDockedWidth, ExtraData); + WriteIntProc(Name, rvDockedHeight, FDockedHeight, ExtraData); + WriteIntProc(Name, rvFloatingWidth, FFloatingWidth, ExtraData); + WriteIntProc(Name, rvFloatingHeight, FFloatingHeight, ExtraData); + WriteIntProc(Name, rvSplitWidth, FSplitWidth, ExtraData); + WriteIntProc(Name, rvSplitHeight, FSplitHeight, ExtraData); + end; +end; + +//----------------------------------------------------------------------------// + +{ TTBXTextObject } + +procedure TTBXTextObject.AdjustFont(AFont: TFont); +begin +end; + +procedure TTBXTextObject.AdjustHeight; +var + NewHeight: Integer; +begin + if HandleAllocated and not FUpdating and ([csReading, csLoading] * ComponentState = []) and AutoSize then + begin + FUpdating := True; + try + NewHeight := 0; + DoAdjustHeight(StockCompatibleBitmap.Canvas, NewHeight); + SetBounds(Left, Top, Width, NewHeight); + finally + FUpdating := False; + end; + end; +end; + +function TTBXTextObject.CanAutoSize(var NewWidth, NewHeight: Integer): Boolean; +begin + if not FUpdating and ([csReading, csLoading] * ComponentState = []) and AutoSize then + begin + FUpdating := True; + try + NewHeight := 0; + DoAdjustHeight(StockCompatibleBitmap.Canvas, NewHeight); + Result := True; + finally + FUpdating := False; + end; + end + else Result := False; +end; + +procedure TTBXTextObject.CMEnabledChanged(var Message: TMessage); +begin + inherited; + Invalidate; +end; + +procedure TTBXTextObject.CMFontChanged(var Message: TMessage); +begin + inherited; + Invalidate; + AdjustHeight; +end; + +procedure TTBXTextObject.CMTextChanged(var Message: TMessage); +begin + inherited; + Invalidate; + AdjustHeight; +end; + +constructor TTBXTextObject.Create(AOwner: TComponent); +begin + inherited; + ControlStyle := ControlStyle + [csSetCaption, csDoubleClicks]; + FMargins := TTBXControlMargins.Create; + FMargins.OnChange := MarginsChangeHandler; + FShowAccelChar := True; + PaintOptions := [cpoDoubleBuffered]; + AutoSize := True; + Width := 100; +end; + +procedure TTBXTextObject.CreateParams(var Params: TCreateParams); +begin + inherited; + if not (csDesigning in ComponentState) then + with Params.WindowClass do style := style or CS_HREDRAW; +end; + +destructor TTBXTextObject.Destroy; +begin + FMargins.Free; + inherited; +end; + +procedure TTBXTextObject.DoAdjustHeight(ACanvas: TCanvas; var NewHeight: Integer); +const + WordWraps: array [TTextWrapping] of Word = (0, DT_END_ELLIPSIS, DT_PATH_ELLIPSIS, DT_WORDBREAK); +var + R: TRect; + EffectiveMargins: TRect; +begin + R := ClientRect; + EffectiveMargins := GetTextMargins; + with Margins do + begin + Inc(EffectiveMargins.Left, Left); Inc(EffectiveMargins.Right, Right); + Inc(EffectiveMargins.Top, Top); Inc(EffectiveMargins.Bottom, Bottom); + end; + ApplyMargins(R, EffectiveMargins); + NewHeight := DoDrawText(ACanvas, R, (DT_EXPANDTABS or DT_CALCRECT) or WordWraps[Wrapping]); + with EffectiveMargins do Inc(NewHeight, Top + Bottom); +end; + +function TTBXTextObject.DoDrawText(ACanvas: TCanvas; var Rect: TRect; Flags: Integer): Integer; +var + Text: string; +begin + Text := GetLabelText; + if (Flags and DT_CALCRECT <> 0) and ((Text = '') or + (Text[1] = '&') and (Text[2] = #0)) then Text := Text + ' '; + Flags := DrawTextBiDiModeFlags(Flags); + ACanvas.Font := Font; + AdjustFont(ACanvas.Font); + + if Flags and DT_CALCRECT = DT_CALCRECT then + begin + Flags := Flags and not DT_VCENTER; + Result := DrawText(ACanvas.Handle, PChar(Text), Length(Text), Rect, Flags); + end + else if not Enabled then + begin + OffsetRect(Rect, 1, 1); + ACanvas.Font.Color := clBtnHighlight; + DrawText(ACanvas.Handle, PChar(Text), Length(Text), Rect, Flags); + OffsetRect(Rect, -1, -1); + ACanvas.Font.Color := clBtnShadow; + Result := DrawText(ACanvas.Handle, PChar(Text), Length(Text), Rect, Flags); + end + else + begin + Result := DrawText(ACanvas.Handle, PChar(Text), Length(Text), Rect, Flags); + end; +end; + +procedure TTBXTextObject.DoMarginsChanged; +begin + Invalidate; + AdjustHeight; +end; + +function TTBXTextObject.GetControlsAlignment: TAlignment; +begin + Result := FAlignment; +end; + +function TTBXTextObject.GetFocusRect(const R: TRect): TRect; +begin + { R is the client rectangle without the margins } + Result := Rect(0, 0, 0, 0); +end; + +function TTBXTextObject.GetLabelText: string; +begin + Result := Caption; +end; + +function TTBXTextObject.GetTextAlignment: TAlignment; +begin + Result := Alignment; +end; + +function TTBXTextObject.GetTextMargins: TRect; +const + ZeroRect: TRect = (Left: 0; Top: 0; Right: 0; Bottom: 0); +begin + Result := ZeroRect; +end; + +procedure TTBXTextObject.Loaded; +begin + inherited; + AdjustHeight; +end; + +procedure TTBXTextObject.MarginsChangeHandler(Sender: TObject); +begin + DoMarginsChanged; +end; + +procedure TTBXTextObject.Paint; +const + Alignments: array [TAlignment] of Integer = (DT_LEFT, DT_RIGHT, DT_CENTER); + WordWraps: array [TTextWrapping] of Integer = (DT_SINGLELINE, + DT_SINGLELINE or DT_END_ELLIPSIS, + DT_SINGLELINE or DT_PATH_ELLIPSIS, DT_WORDBREAK); + ShowAccelChars: array [Boolean] of Integer = (DT_NOPREFIX, 0); +var + R, R2: TRect; + DrawStyle: Longint; + CaptionHeight: Integer; +begin + with Canvas do + begin + R := ClientRect; + ApplyMargins(R, Margins); + if Focused then DrawFocusRect2(Canvas, GetFocusRect(R)); + DrawStyle := DT_EXPANDTABS or WordWraps[Wrapping] or + Alignments[GetRealAlignment(Self)] or ShowAccelChars[ShowAccelChar]; + Brush.Style := bsClear; + ApplyMargins(R, GetTextMargins); + R2 := R; + CaptionHeight := DoDrawText(Canvas, R2, DrawStyle or DT_CALCRECT); + R.Top := (R.Top + R.Bottom - CaptionHeight) div 2; + R.Bottom := R.Top + CaptionHeight; + DoDrawText(Canvas, R, DrawStyle); + Brush.Style := bsSolid; + end; +end; + +procedure TTBXTextObject.SetAlignment(Value: TLeftRight); +begin + FAlignment := Value; + Invalidate; +end; + +procedure TTBXTextObject.SetMargins(Value: TTBXControlMargins); +begin + FMargins.Assign(Value); +end; + +procedure TTBXTextObject.SetShowAccelChar(Value: Boolean); +begin + if FShowAccelChar <> Value then + begin + FShowAccelChar := Value; + AdjustHeight; + Invalidate; + end; +end; + +procedure TTBXTextObject.SetWrapping(Value: TTextWrapping); +begin + FWrapping := Value; + Invalidate; + AdjustHeight; +end; + +//----------------------------------------------------------------------------// + +{ TTBXCustomLabel } + +procedure TTBXCustomLabel.CMDialogChar(var Message: TCMDialogChar); +begin + if (FFocusControl <> nil) and Enabled and ShowAccelChar and IsAccel(Message.CharCode, Caption) then + with FFocusControl do if CanFocus then + begin + SetFocus; + Message.Result := 1; + end; +end; + +constructor TTBXCustomLabel.Create(AOwner: TComponent); +begin + inherited; + Wrapping := twWrap; + FUnderlineColor := clBtnShadow; + TabStop := False; +end; + +function TTBXCustomLabel.GetTextMargins: TRect; +const + BottomMargin: array [Boolean] of Integer = (0, 1); +begin + with Result do + begin + Left := 0; + Top := 0; + Right := 0; + Result.Bottom := BottomMargin[Underline]; + end; +end; + +procedure TTBXCustomLabel.Notification(AComponent: TComponent; Operation: TOperation); +begin + inherited; + inherited Notification(AComponent, Operation); + if (Operation = opRemove) and (AComponent = FFocusControl) then FFocusControl := nil; +end; + +procedure TTBXCustomLabel.Paint; +var + Rect: TRect; +begin + inherited; + if Underline then with Canvas do + begin + Rect := ClientRect; + ApplyMargins(Rect, Margins); + ApplyMargins(Rect, GetTextMargins); + Pen.Color := UnderlineColor; + MoveTo(Rect.Left, Rect.Bottom); + LineTo(Rect.Right, Rect.Bottom); + end; +end; + +procedure TTBXCustomLabel.SetFocusControl(Value: TWinControl); +begin + if FFocusControl <> Value then + begin + if FFocusControl <> nil then FFocusControl.RemoveFreeNotification(Self); + FFocusControl := Value; + if FFocusControl <> nil then FFocusControl.FreeNotification(Self); + end; +end; + +procedure TTBXCustomLabel.SetUnderline(Value: Boolean); +begin + if Value <> FUnderline then + begin + FUnderline := Value; + Invalidate; + AdjustHeight; + end; +end; + +procedure TTBXCustomLabel.SetUnderlineColor(Value: TColor); +begin + FUnderlineColor := Value; + Invalidate; +end; + +//----------------------------------------------------------------------------// + +{ TTBXCustomLink } + +procedure TTBXCustomLink.AdjustFont(AFont: TFont); +begin + if MouseInControl then AFont.Style := AFont.Style + [fsUnderline]; +end; + +procedure TTBXCustomLink.CMDialogChar(var Message: TCMDialogChar); +begin + with Message do + if Enabled and ShowAccelChar and IsAccel(CharCode, GetLabelText) and CanFocus and Visible then + begin + Click; + Result := 1; + end + else inherited; +end; + +procedure TTBXCustomLink.CMDialogKey(var Message: TCMDialogKey); +begin + with Message do + if (CharCode = VK_RETURN) and Focused and + (KeyDataToShiftState(Message.KeyData) = []) then + begin + Click; + Result := 1; + end + else inherited; +end; + +constructor TTBXCustomLink.Create(AOwner: TComponent); +begin + inherited; + FImageChangeLink := TChangeLink.Create; + FImageChangeLink.OnChange := ImageListChange; + SmartFocus := True; + SpaceAsClick := True; + TabStop := True; + Cursor := crHandPoint; +end; + +destructor TTBXCustomLink.Destroy; +begin + FImageChangeLink.Free; + inherited; +end; + +procedure TTBXCustomLink.DoAdjustHeight(ACanvas: TCanvas; var NewHeight: Integer); +begin + inherited DoAdjustHeight(ACanvas, NewHeight); + if Images <> nil then + if NewHeight < Images.Height + 4 then NewHeight := Images.Height + 4; +end; + +procedure TTBXCustomLink.DoMouseEnter; +begin + inherited; + Invalidate; +end; + +procedure TTBXCustomLink.DoMouseLeave; +begin + inherited; + Invalidate; +end; + +function TTBXCustomLink.GetControlsAlignment: TAlignment; +begin + Result := GetTextAlignment; +end; + +function TTBXCustomLink.GetFocusRect(const R: TRect): TRect; +const + WordWraps: array [TTextWrapping] of Integer = (DT_SINGLELINE or DT_VCENTER, + DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS, + DT_SINGLELINE or DT_VCENTER or DT_PATH_ELLIPSIS, DT_WORDBREAK); +var + TR: TRect; + ShowImage: Boolean; +begin + Result := R; + ShowImage := Assigned(Images) and (ImageIndex >= 0) and (ImageIndex < Images.Count); + + { Text Rectangle } + TR := R; + ApplyMargins(TR, GetTextMargins); + DoDrawText(Canvas, TR, (DT_EXPANDTABS or DT_CALCRECT) or WordWraps[Wrapping] or DT_LEFT); + + if ShowImage then + begin + if GetRealAlignment(Self) = taLeftJustify then + begin + Result.Left := R.Left; + Result.Right := TR.Right; + end + else + begin + Result.Left := TR.Left; + Result.Right := R.Right; + end; + end + else + begin + Result.Right := TR.Right; + Result.Left := TR.Left; + end; + Dec(Result.Left, 2); + Inc(Result.Right, 2); +end; + +function TTBXCustomLink.GetTextAlignment: TAlignment; +begin + Result := taLeftJustify; +end; + +function TTBXCustomLink.GetTextMargins: TRect; +begin + Result := Rect(2, 1, 2, 1); + if Assigned(Images) then with Result do + begin + if GetRealAlignment(Self) = taLeftJustify then Inc(Left, Images.Width + 5) + else Inc(Right, Images.Width + 5); + end; +end; + +procedure TTBXCustomLink.ImageListChange(Sender: TObject); +begin + if Sender = Images then + begin + Invalidate; + AdjustHeight; + end; +end; + +procedure TTBXCustomLink.Notification(AComponent: TComponent; Operation: TOperation); +begin + inherited; + if (AComponent = Images) and (Operation = opRemove) then Images := nil; +end; + +procedure TTBXCustomLink.Paint; +var + Rect, R: TRect; +begin + inherited; + if Assigned(Images) and (ImageIndex >= 0) and (ImageIndex < Images.Count) then + with Canvas do + begin + Rect := ClientRect; + ApplyMargins(Rect, Margins); + + if GetRealAlignment(Self) = taLeftJustify then R.Left := Rect.Left + 2 + else R.Left := Rect.Right - 2 - Images.Width; + + R.Top := (Rect.Top + Rect.Bottom - Images.Height) div 2; + R.Right := R.Left + Images.Width; + R.Bottom := R.Top + Images.Height; + + if Enabled then Images.Draw(Canvas, R.Left, R.Top, ImageIndex) + else DrawTBXImage(Canvas, R, Images, ImageIndex, ISF_DISABLED); + end; +end; + +procedure TTBXCustomLink.SetImageIndex(Value: TImageIndex); +begin + if FImageIndex <> Value then + begin + FImageIndex := Value; + if Assigned(Images) then Invalidate; + end; +end; + +procedure TTBXCustomLink.SetImages(Value: TCustomImageList); +begin + if FImages <> nil then FImages.UnRegisterChanges(FImageChangeLink); + FImages := Value; + if FImages <> nil then + begin + FImages.RegisterChanges(FImageChangeLink); + FImages.FreeNotification(Self); + end; + Invalidate; + AdjustHeight; +end; + +procedure TTBXCustomLink.WMNCHitTest(var Message: TWMNCHitTest); +var + P: TPoint; + R: TRect; +begin + inherited; + if not (csDesigning in ComponentState) then + begin + P := ScreenToClient(SmallPointToPoint(Message.Pos)); + R := ClientRect; + ApplyMargins(R, Margins); + R := GetFocusRect(R); + if not PtInRect(R, P) then Message.Result := HTTRANSPARENT; + end; +end; + +//----------------------------------------------------------------------------// + +{ TTBXCustomButton } + +function TTBXCustomButton.ArrowVisible: Boolean; +begin + Result := DropDownMenu <> nil; +end; + +procedure TTBXCustomButton.Click; +var + Form: TCustomForm; + Pt: TPoint; + R: TRect; + SaveAlignment: TPopupAlignment; + + procedure RemoveClicks; + var + RepostList: TList; + Repost: Boolean; + I: Integer; + Msg: TMsg; + P: TPoint; + begin + RepostList := TList.Create; + try + while PeekMessage(Msg, 0, WM_LBUTTONDOWN, WM_MBUTTONDBLCLK, PM_REMOVE) do + with Msg do + begin + Repost := True; + case Message of + WM_QUIT: begin + { Throw back any WM_QUIT messages } + PostQuitMessage(wParam); + Break; + end; + WM_LBUTTONDOWN, WM_LBUTTONDBLCLK, + WM_RBUTTONDOWN, WM_RBUTTONDBLCLK, + WM_MBUTTONDOWN, WM_MBUTTONDBLCLK: begin + P := SmallPointToPoint(TSmallPoint(lParam)); + Windows.ClientToScreen(hwnd, P); + if FindDragTarget(P, True) = Self then Repost := False; + end; + end; + if Repost then + begin + RepostList.Add(AllocMem(SizeOf(TMsg))); + PMsg(RepostList.Last)^ := Msg; + end; + end; + finally + for I := 0 to RepostList.Count-1 do + begin + with PMsg(RepostList[I])^ do PostMessage(hwnd, message, wParam, lParam); + FreeMem(RepostList[I]); + end; + RepostList.Free; + end; + end; + +begin + if FRepeating and not FMenuVisible then inherited + else + try + FInClick := True; + if (GroupIndex <> 0) and not FMenuVisible then SetChecked(not Checked); + MouseLeft; + if (DropDownMenu = nil) or (DropDownCombo and not FMenuVisible) then + begin + if ModalResult <> 0 then + begin + Form := GetParentForm(Self); + if Form <> nil then Form.ModalResult := ModalResult; + end; + inherited; + end + else + begin + MouseCapture := False; + SaveAlignment := paLeft; // to avoid compiler warnings + if DoDropDown then + try + Pt := Point(0, Height); + Pt := ClientToScreen(Pt); + SaveAlignment := DropDownMenu.Alignment; + DropDownMenu.PopupComponent := Self; + + if DropDownMenu is TTBXPopupMenu then + begin + R := ClientRect; + ApplyMargins(R, Margins); + R.TopLeft := ClientToScreen(R.TopLeft); + R.BottomRight := ClientToScreen(R.BottomRight); + TTBXPopupMenu(DropDownMenu).PopupEx(R); + end + else DropDownMenu.Popup(Pt.X, Pt.Y); + finally + DropDownMenu.Alignment := SaveAlignment; + if Pushed then FPushed := False; + Invalidate; + RemoveClicks; + end + else inherited; + end; + finally + FInClick := False; + end; +end; + +procedure TTBXCustomButton.CMDialogChar(var Message: TCMDialogChar); +begin + with Message do + if Enabled and ShowAccelChar and IsAccel(CharCode, GetLabelText) and CanFocus and Visible then + begin + Click; + Result := 1; + end + else inherited; +end; + +procedure TTBXCustomButton.CMDialogKey(var Message: TCMDialogKey); +begin + with Message do + if (CharCode = VK_RETURN) and Focused and + (KeyDataToShiftState(Message.KeyData) = []) then + begin + Click; + Result := 1; + end + else inherited; +end; + +constructor TTBXCustomButton.Create(AOwner: TComponent); +begin + inherited; + FAlignment := taCenter; + FBorderSize := 4; + FGlyphSpacing := 4; + FImageChangeLink := TChangeLink.Create; + FImageChangeLink.OnChange := ImageListChange; + FRepeatDelay := 400; + FRepeatInterval := 100; + SmartFocus := True; + SpaceAsClick := True; + TabStop := True; +end; + +destructor TTBXCustomButton.Destroy; +begin + FImageChangeLink.Free; + inherited; +end; + +procedure TTBXCustomButton.DoAdjustHeight(ACanvas: TCanvas; var NewHeight: Integer); +var + Sz: Integer; +begin + if Length(GetLabelText) = 0 then + begin + if Images <> nil then NewHeight := Images.Height + BorderSize * 2 + else if BorderSize * 2 >= 16 then NewHeight := BorderSize * 2 + else NewHeight := 16; + end + else + begin + inherited DoAdjustHeight(ACanvas, NewHeight); + if Images <> nil then + if Layout in [blGlyphLeft, blGlyphRight] then + begin + Sz := Images.Height + BorderSize * 2; + if NewHeight < Sz then NewHeight := Sz; + end; + end; +end; + +function TTBXCustomButton.DoDrawText(ACanvas: TCanvas; var Rect: TRect; Flags: Integer): Integer; +var + ItemInfo: TTBXItemInfo; + Text: string; +begin + Text := GetLabelText; + if (Flags and DT_CALCRECT <> 0) and ((Text = '') or + (Text[1] = '&') and (Text[2] = #0)) then Text := Text + ' '; + Flags := DrawTextBiDiModeFlags(Flags); + ACanvas.Font := Font; + AdjustFont(ACanvas.Font); + + if Flags and DT_CALCRECT = DT_CALCRECT then + begin + Flags := Flags and not DT_VCENTER; + Result := DrawText(ACanvas.Handle, PChar(Text), Length(Text), Rect, Flags); + end + else + begin + GetItemInfo(ItemInfo); + ACanvas.Font.Color := clNone; + CurrentTheme.PaintCaption(Canvas, Rect, ItemInfo, Text, Flags, False); + Flags := Flags or DT_CALCRECT; + Result := DrawText(ACanvas.Handle, PChar(Text), Length(Text), Rect, Flags); + end; +end; + +function TTBXCustomButton.DoDropDown: Boolean; +begin + Result := FDropDownMenu <> nil; + if Result and Assigned(FOnDropDown) then FOnDropDown(Self, Result); +end; + +procedure TTBXCustomButton.DoMouseEnter; +begin + inherited; + Invalidate; +end; + +procedure TTBXCustomButton.DoMouseLeave; +begin + inherited; + Invalidate; +end; + +function TTBXCustomButton.GetControlsAlignment: TAlignment; +begin + Result := GetTextAlignment; +end; + +function TTBXCustomButton.GetFocusRect(const R: TRect): TRect; +begin + Result := R; + InflateRect(Result, -2, -2); +end; + +procedure TTBXCustomButton.GetItemInfo(out ItemInfo: TTBXItemInfo); +const + ViewTypes: array [TButtonStyle] of Integer = + (VT_TOOLBAR or TVT_EMBEDDED, VT_TOOLBAR); +begin + FillChar(ItemInfo, SizeOf(ItemInfo), 0); + ItemInfo.ViewType := ViewTypes[ButtonStyle]; + ItemInfo.Enabled := Enabled; + ItemInfo.ItemOptions := IO_TOOLBARSTYLE or IO_APPACTIVE; + ItemInfo.Pushed := Pushed and (MouseInControl or FMenuVisible); + if FMenuVisible and DropDownCombo then ItemInfo.Pushed := False; + if FMenuVisible then ItemInfo.IsPopupParent := True; + ItemInfo.Selected := Checked; + ItemInfo.IsVertical := False; + if ArrowVisible and DropDownCombo then ItemInfo.ComboPart := cpCombo; + if MouseInControl or FMenuVisible then ItemInfo.HoverKind := hkMouseHover; +end; + +function TTBXCustomButton.GetTextAlignment: TAlignment; +begin + Result := FAlignment; +end; + +function TTBXCustomButton.GetTextMargins: TRect; +var + L, Sz: Integer; + IsSpecialDropDown: Boolean; +begin + Result := Rect(BorderSize, BorderSize, BorderSize, BorderSize); + L := Length(GetLabelText); + if (Images <> nil) and (L > 0) then Sz := GlyphSpacing + else Sz := 0; + if Assigned(Images) then with Result do + case Layout of + blGlyphLeft: Inc(Left, Images.Width + Sz); + blGlyphTop: Inc(Top, Images.Height + Sz); + blGlyphRight: Inc(Right, Images.Width + Sz); + blGlyphBottom: Inc(Bottom, Images.Height + Sz); + end; + if ArrowVisible then + begin + if DropDownCombo then Inc(Result.Right, CurrentTheme.SplitBtnArrowWidth) + else + begin + IsSpecialDropDown := (L > 0) and (Images <> nil) and (Layout in [blGlyphTop, blGlyphBottom]); + if not IsSpecialDropDown then Inc(Result.Right, CurrentTheme.DropDownArrowWidth); + end; + end; +end; + +procedure TTBXCustomButton.ImageListChange(Sender: TObject); +begin + if Sender = Images then + begin + Invalidate; + AdjustHeight; + end; +end; + +procedure TTBXCustomButton.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); +var + R: TRect; +begin + inherited; + if Enabled and (Button = mbLeft) then + begin + R := ClientRect; + ApplyMargins(R, Margins); + FMenuVisible := not FInClick and Assigned(DropDownMenu) and + (not DropDownCombo or (X >= R.Right - CurrentTheme.SplitBtnArrowWidth)); + try + if FMenuVisible then + begin + ControlState := ControlState - [csClicked]; + if not FInClick then + begin + Click; + end; + end + else if Repeating then + begin + Click; + ControlState := ControlState - [csClicked]; + if not Assigned(FRepeatTimer) then FRepeatTimer := TTimer.Create(Self); + FRepeatTimer.Interval := RepeatDelay; + FRepeatTimer.OnTimer := RepeatTimerHandler; + FRepeatTimer.Enabled := True; + end; + finally + FMenuVisible := False; + end; + end; +end; + +procedure TTBXCustomButton.MouseMove(Shift: TShiftState; X, Y: Integer); +begin + inherited; + if Assigned(FRepeatTimer) and PtInButtonPart(Point(X, Y)) then FRepeatTimer.Enabled := True; +end; + +procedure TTBXCustomButton.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); +begin + inherited; + if Button = mbLeft then + begin + FRepeatTimer.Free; + FRepeatTimer := nil; + end; +end; + +procedure TTBXCustomButton.Notification(AComponent: TComponent; Operation: TOperation); +begin + inherited; + if Operation = opRemove then + begin + if AComponent = Images then Images := nil + else if AComponent = DropdownMenu then DropdownMenu := nil; + end; +end; + +procedure TTBXCustomButton.Paint; +const + Alignments: array [TAlignment] of Integer = (DT_LEFT, DT_RIGHT, DT_CENTER); + WordWraps: array [TTextWrapping] of Integer = (DT_SINGLELINE, + DT_SINGLELINE or DT_END_ELLIPSIS, + DT_SINGLELINE or DT_PATH_ELLIPSIS, DT_WORDBREAK); + ShowAccelChars: array [Boolean] of Integer = (DT_NOPREFIX, 0); +var + CR, IR, TR: TRect; + W, X: Integer; + Text: string; + ItemInfo: TTBXItemInfo; + RealAlignment: TAlignment; + CaptionHeight: Integer; + DrawStyle: Cardinal; + ShowArrow: Boolean; +begin + CR := ClientRect; + ApplyMargins(CR, Margins); + + ShowArrow := ArrowVisible; + GetItemInfo(ItemInfo); + if ShowArrow and DropDownCombo then + begin + TR := CR; + TR.Left := TR.Right - CurrentTheme.SplitBtnArrowWidth; + CR.Right := TR.Left; + + ItemInfo.ComboPart := cpSplitRight; + ItemInfo.Pushed := FMenuVisible; + CurrentTheme.PaintButton(Canvas, TR, ItemInfo); + + ItemInfo.ComboPart := cpSplitLeft; + ItemInfo.Pushed := Pushed and not FMenuVisible; + CurrentTheme.PaintButton(Canvas, CR, ItemInfo); + end + else CurrentTheme.PaintButton(Canvas, CR, ItemInfo); + if Focused then DrawFocusRect2(Canvas, GetFocusRect(CR)); + InflateRect(CR, -BorderSize, -BorderSize); + + if ShowArrow and not DropDownCombo then + begin + TR := CR; + TR.Left := TR.Right - CurrentTheme.DropdownArrowWidth; + CurrentTheme.PaintDropDownArrow(Canvas, TR, ItemInfo); + CR.Right := TR.Left - CurrentTheme.DropdownArrowMargin; + end; + + Text := GetLabelText; + DrawStyle := 0; + + if (Length(Text) > 0) or (Images <> nil) then + begin + RealAlignment := GetRealAlignment(Self); + + if Length(Text) = 0 then + begin + IR.Top := (CR.Top + CR.Bottom - Images.Height) div 2; + IR.Bottom := IR.Top + Images.Height; + + case RealAlignment of + taLeftJustify: IR.Left := CR.Left; + taRightJustify: IR.Left := CR.Right - Images.Width; + else + IR.Left := (CR.Left + CR.Right - Images.Width) div 2; + end; + IR.Right := IR.Left + Images.Width; + end + else + begin + TR := CR; + DrawStyle := DT_EXPANDTABS or WordWraps[Wrapping] or + Alignments[RealAlignment] or ShowAccelChars[ShowAccelChar]; + if (Images = nil) or (Layout in [blGlyphTop, blGlyphBottom]) then + begin + CaptionHeight := DoDrawText(Canvas, TR, DrawStyle or DT_CALCRECT); + TR := CR; + if Images = nil then + begin + TR.Top := (TR.Top + TR.Bottom - CaptionHeight) div 2; + end + else + begin + TR.Top := (CR.Top + CR.Bottom - Images.Height - GlyphSpacing - CaptionHeight) div 2; + IR.Top := TR.Top; + if Layout = blGlyphTop then Inc(TR.Top, Images.Height + GlyphSpacing) + else Inc(IR.Top, CaptionHeight + GlyphSpacing); + TR.Bottom := TR.Top + CaptionHeight; + IR.Bottom := IR.Top + Images.Height; + case RealAlignment of + taLeftJustify: IR.Left := CR.Left; + taRightJustify: IR.Left := CR.Right - Images.Width; + else + IR.Left := (CR.Left + CR.Right - Images.Width) div 2; + end; + IR.Right := IR.Left + Images.Width; + end; + end + else + begin + IR.Left := CR.Left; + if Layout = blGlyphLeft then Inc(TR.Left, Images.Width + GlyphSpacing) + else Dec(TR.Right, Images.Width + GlyphSpacing); + IR.Right := IR.Left + Images.Width; + IR.Top := (CR.Top + CR.Bottom - Images.Height) div 2; + IR.Bottom := IR.Top + Images.Height; + CaptionHeight := DoDrawText(Canvas, TR, DrawStyle or DT_CALCRECT); + TR.Top := (CR.Top + CR.Bottom - CaptionHeight) div 2; + TR.Bottom := TR.Top + CaptionHeight; + W := Images.Width + GlyphSpacing + TR.Right - TR.Left; + case RealAlignment of + taLeftJustify: X := CR.Left; + taRightJustify: X := CR.Right - W; + else + X := (CR.Left + CR.Right - W) div 2; + end; + case Layout of + blGlyphLeft: + begin + if X < CR.Left then X := CR.Left; + IR.Left := X; + IR.Right := X + Images.Width; + OffsetRect(TR, IR.Right + GlyphSpacing - TR.Left, 0); + if TR.Right > CR.Right then TR.Right := CR.Right; + DrawStyle := DrawStyle and not DT_RIGHT and not DT_CENTER or DT_LEFT; + end; + blGlyphRight: + begin + OffsetRect(TR, X - TR.Left, 0); + IR.Left := TR.Right + GlyphSpacing; + IR.Right := IR.Left + Images.Width; + DrawStyle := DrawStyle and not DT_CENTER and not DT_LEFT or DT_RIGHT; + end; + end; + end; + end; + + if Images <> nil then + CurrentTheme.PaintImage(Canvas, IR, ItemInfo, Images, ImageIndex); + + if Length(Text) > 0 then + begin + Brush.Style := bsClear; + DoDrawText(Canvas, TR, DrawStyle); + Brush.Style := bsSolid; + end; + end; +end; + +function TTBXCustomButton.PtInButtonPart(const Pt: TPoint): Boolean; +var + R: TRect; +begin + R := ClientRect; + ApplyMargins(R, Margins); + Result := PtInRect(R, Pt); +end; + +procedure TTBXCustomButton.RepeatTimerHandler(Sender: TObject); +var + P: TPoint; +begin + FRepeatTimer.Interval := RepeatInterval; + GetCursorPos(P); + P := ScreenToClient(P); + if not MouseCapture then + begin + FRepeatTimer.Free; + FRepeatTimer := nil; + end + else if Repeating and Pushed and PtInButtonPart(P) then Click + else FRepeatTimer.Enabled := False; +end; + +procedure TTBXCustomButton.SetAlignment(Value: TAlignment); +begin + FAlignment := Value; + Invalidate; +end; + +procedure TTBXCustomButton.SetAllowAllUnchecked(Value: Boolean); +begin + if FAllowAllUnchecked <> Value then + begin + FAllowAllUnchecked := Value; + UpdateCheckedState; + end; +end; + +procedure TTBXCustomButton.SetBorderSize(Value: Integer); +begin + FBorderSize := Value; + Invalidate; + AdjustHeight; +end; + +procedure TTBXCustomButton.SetButtonStyle(Value: TButtonStyle); +begin + FButtonStyle := Value; + Invalidate; +end; + +procedure TTBXCustomButton.SetChecked(Value: Boolean); +begin + if FGroupIndex = 0 then Value := False; + if FChecked <> Value then + begin + if FChecked and not AllowAllUnchecked then Exit; + FChecked := Value; + Invalidate; + if Value then UpdateCheckedState; + end; +end; + +procedure TTBXCustomButton.SetDropdownCombo(Value: Boolean); +begin + FDropdownCombo := Value; + Invalidate; +end; + +procedure TTBXCustomButton.SetDropdownMenu(Value: TPopupMenu); +begin + if FDropdownMenu <> Value then + begin + if FDropDownMenu <> nil then RemoveFreeNotification(FDropDownMenu); + FDropDownMenu := Value; + if FDropDownMenu <> nil then FreeNotification(FDropDownMenu); + Invalidate; + end; +end; + +procedure TTBXCustomButton.SetGlyphSpacing(Value: Integer); +begin + FGlyphSpacing := Value; + Invalidate; + AdjustHeight; +end; + +procedure TTBXCustomButton.SetGroupIndex(Value: Integer); +begin + if FGroupIndex <> Value then + begin + FGroupIndex := Value; + UpdateCheckedState; + end; +end; + +procedure TTBXCustomButton.SetImageIndex(Value: TImageIndex); +begin + if FImageIndex <> Value then + begin + FImageIndex := Value; + if Assigned(Images) then Invalidate; + end; +end; + +procedure TTBXCustomButton.SetImages(Value: TCustomImageList); +begin + if FImages <> nil then FImages.UnRegisterChanges(FImageChangeLink); + FImages := Value; + if FImages <> nil then + begin + FImages.RegisterChanges(FImageChangeLink); + FImages.FreeNotification(Self); + end; + Invalidate; + AdjustHeight; +end; + +procedure TTBXCustomButton.SetLayout(Value: TButtonLayout); +begin + FLayout := Value; + Invalidate; + AdjustHeight; +end; + +procedure TTBXCustomButton.UpdateCheckedState; +var + I: Integer; + C: TControl; +begin + if (FGroupIndex <> 0) and (Parent <> nil) then with Parent do + for I := 0 to ControlCount - 1 do + begin + C := Controls[I]; + if (C <> Self) and (C is TTBXCustomButton) then + with TTBXCustomButton(C) do + if FGroupIndex = Self.FGroupIndex then + begin + if Self.Checked and FChecked then + begin + FChecked := False; + Invalidate; + end; + FAllowAllUnchecked := Self.AllowAllUnchecked; + end; + end; +end; + +procedure TTBXCustomButton.WMCancelMode(var Message: TWMCancelMode); +begin + FRepeatTimer.Free; + FRepeatTimer := nil; + MouseLeft; +end; + +procedure TTBXCustomButton.WMLButtonDblClk(var Message: TWMLButtonDblClk); +begin + Perform(WM_LBUTTONDOWN, Message.Keys, Longint(Message.Pos)); +end; + +//----------------------------------------------------------------------------// + +procedure TTBXCustomButton.WMNCHitTest(var Message: TWMNCHitTest); +var + P: TPoint; + R: TRect; +begin + inherited; + if not (csDesigning in ComponentState) then + begin + P := ScreenToClient(SmallPointToPoint(Message.Pos)); + R := ClientRect; + ApplyMargins(R, Margins); + if not PtInRect(R, P) then Message.Result := HTTRANSPARENT; + end; +end; + +{ TTBXAlignmentPanel } + +procedure TTBXAlignmentPanel.AdjustClientRect(var Rect: TRect); +begin + inherited AdjustClientRect(Rect); + with Margins do + begin + Inc(Rect.Left, Left); + Inc(Rect.Top, Top); + Dec(Rect.Right, Right); + Dec(Rect.Bottom, Bottom); + end; +end; + +constructor TTBXAlignmentPanel.Create(AOwner: TComponent); +begin + inherited; + FMargins := TTBXControlMargins.Create; + FMargins.OnChange := MarginsChangeHandler; +end; + +destructor TTBXAlignmentPanel.Destroy; +begin + FMargins.Free; + inherited; +end; + +function TTBXAlignmentPanel.GetMinHeight: Integer; +var + I: Integer; + Control: TControl; +begin + Result := 0; + for I := 0 to ControlCount - 1 do + begin + Control := Controls[I]; + if Control.Visible then + if Control.Align in [alTop, alBottom] then Inc(Result, Control.Height) + else if Control.Align = alClient then Inc(Result, GetMinControlHeight(Control)); + end; + Inc(Result, Margins.Top + Margins.Bottom); +end; + +function TTBXAlignmentPanel.GetMinWidth: Integer; +var + I: Integer; + Control: TControl; +begin + Result := 0; + for I := 0 to ControlCount - 1 do + begin + Control := Controls[I]; + if Control.Visible then + if Control.Align in [alLeft, alRight] then Inc(Result, Control.Width) + else if Control.Align = alClient then Inc(Result, GetMinControlWidth(Control)); + end; + Inc(Result, Margins.Left + Margins.Right); +end; + +procedure TTBXAlignmentPanel.MarginsChangeHandler(Sender: TObject); +begin + Realign; + Invalidate; +end; + +procedure TTBXAlignmentPanel.Paint; +var + R: TRect; + DC: HDC; +begin + if csDesigning in ComponentState then + begin + DC := Canvas.Handle; + R := ClientRect; + SaveDC(DC); + InflateRect(R, -1, -1); + with R do ExcludeClipRect(DC, Left, Top, Right, Bottom); + InflateRect(R, 1, 1); + DitherRect(DC, R, clBtnFace, clBtnShadow); + RestoreDC(DC, -1); + end; +end; + +procedure TTBXAlignmentPanel.SetMargins(Value: TTBXControlMargins); +begin + FMargins.Assign(Value); +end; + +//----------------------------------------------------------------------------// + +{ TTBXCustomPageScroller } + +procedure TTBXCustomPageScroller.AdjustClientRect(var Rect: TRect); +begin + if Orientation = tpsoVertical then + begin + if tpsbPrev in FVisibleButtons then Dec(Rect.Top, ButtonSize); + if tpsbNext in FVisibleButtons then Inc(Rect.Bottom, ButtonSize); + OffsetRect(Rect, 0, -Position); + if Range > Rect.Bottom - Rect.Top then Rect.Bottom := Rect.Top + Range; + end + else + begin + if tpsbPrev in FVisibleButtons then Dec(Rect.Left, ButtonSize); + if tpsbNext in FVisibleButtons then Inc(Rect.Right, ButtonSize); + OffsetRect(Rect, -Position, 0); + if Range > Rect.Right - Rect.Left then Rect.Right := Rect.Left + Range; + end; +end; + +procedure TTBXCustomPageScroller.AlignControls(AControl: TControl; var ARect: TRect); +begin + CalcAutoRange; + UpdateButtons; + ARect := ClientRect; + inherited AlignControls(AControl, ARect); +end; + +function TTBXCustomPageScroller.AutoScrollEnabled: Boolean; +begin + Result := not AutoSize and not (DockSite and UseDockManager); +end; + +procedure TTBXCustomPageScroller.BeginScrolling(HitTest: Integer); +var + Msg: TMsg; +begin + if HitTest = HTSCROLLPREV then FScrollDirection := -1 else FScrollDirection := 1; + try + SetCapture(Handle); + FScrollCounter := FScrollDirection * 8; + FScrollPending := True; + FScrollTimer.Enabled := True; + DrawNCArea(False, 0, 0); + HandleScrollTimer; + FScrollPending := True; + FScrollTimer.Interval := ScrollDelay; + + while GetCapture = Handle do + begin + case Integer(GetMessage(Msg, 0, 0, 0)) of + -1: Break; + 0: begin + PostQuitMessage(Msg.WParam); + Break; + end; + end; + case Msg.Message of + WM_KEYDOWN, WM_KEYUP: if Msg.WParam = VK_ESCAPE then Break; + WM_LBUTTONDOWN, WM_LBUTTONDBLCLK: begin + Break; + end; + WM_LBUTTONUP: + begin + Break; + end; + WM_RBUTTONDOWN..WM_MBUTTONDBLCLK:; + WM_TIMER: + begin + HandleScrollTimer; + end; + else + TranslateMessage(Msg); + DispatchMessage(Msg); + end; + end; + finally + StopScrolling; + if GetCapture = Handle then ReleaseCapture; + end; +end; + +procedure TTBXCustomPageScroller.CalcAutoRange; +var + I: Integer; + Bias: Integer; + NewRange, AlignMargin: Integer; + CW, CH: Integer; + Control: TControl; +begin + if (FAutoRangeCount <= 0) and AutoRange then + begin + if AutoScrollEnabled then + begin + NewRange := 0; + AlignMargin := 0; + if Position > 0 then Bias := ButtonSize + else Bias := 0; + CW := ClientWidth; + CH := ClientHeight; + DisableAlign; + for I := 0 to ControlCount - 1 do + begin + Control := Controls[I]; + if Control.Visible or (csDesigning in Control.ComponentState) and + not (csNoDesignVisible in Control.ControlStyle) then + begin + if Orientation = tpsoVertical then + begin + if Control.Align in [alTop, alBottom, alClient] then + Control.Width := CW; + case Control.Align of + alTop, alNone: + if (Control.Align = alTop) or (Control.Anchors * [akTop, akBottom] = [akTop]) then + NewRange := Max(NewRange, Position + Control.Top + Control.Height + Bias); + alBottom: Inc(AlignMargin, Control.Height); + alClient: Inc(AlignMargin, GetMinControlHeight(Control)); + end + end + else + begin + if Control.Align in [alLeft, alRight, alClient] then + Control.Height := CH; + case Control.Align of + alLeft, alNone: + if (Control.Align = alLeft) or (Control.Anchors * [akLeft, akRight] = [akLeft]) then + NewRange := Max(NewRange, Position + Control.Left + Control.Width + Bias); + alRight: Inc(AlignMargin, Control.Width); + alClient: Inc(AlignMargin, GetMinControlWidth(Control)); + end; + end; + end; + end; + EnableAlign; + DoSetRange(NewRange + AlignMargin + Margin); + end + else DoSetRange(0); + end; +end; + +function TTBXCustomPageScroller.CalcClientArea: TRect; +begin + Result := ClientRect; + if Orientation = tpsoVertical then + begin + if tpsbPrev in FVisibleButtons then Dec(Result.Top, ButtonSize); + if tpsbNext in FVisibleButtons then Inc(Result.Bottom, ButtonSize); + end + else + begin + if tpsbPrev in FVisibleButtons then Dec(Result.Left, ButtonSize); + if tpsbNext in FVisibleButtons then Inc(Result.Right, ButtonSize); + end; +end; + +function TTBXCustomPageScroller.CanAutoSize(var NewWidth, NewHeight: Integer): Boolean; +begin + Result := NewHeight > FButtonSize * 3; +end; + +procedure TTBXCustomPageScroller.CMParentColorChanged(var Message: TMessage); +begin + if (Message.WParam = 0) then + begin + Message.WParam := 1; + Message.LParam := GetEffectiveColor(Parent); + end; + inherited; +end; + +procedure TTBXCustomPageScroller.ConstrainedResize(var MinWidth, MinHeight, MaxWidth, MaxHeight: Integer); +begin + // do not call inherited here +end; + +constructor TTBXCustomPageScroller.Create(AOwner: TComponent); +begin + inherited; + ControlStyle := ControlStyle + [csAcceptsControls, csClickEvents, csDoubleClicks]; + FAutoScroll := True; + FButtonSize := 10; + FScrollTimer := TTimer.Create(Self); + FScrollTimer.Enabled := False; + FScrollTimer.Interval := 60; + FScrollTimer.OnTimer := ScrollTimerTimer; + Width := 64; + Height := 64; +end; + +procedure TTBXCustomPageScroller.CreateParams(var Params: TCreateParams); +begin + inherited CreateParams(Params); + with Params.WindowClass do style := style and not (CS_HREDRAW or CS_VREDRAW); +end; + +procedure TTBXCustomPageScroller.DisableAutoRange; +begin + Inc(FAutoRangeCount); +end; + +procedure TTBXCustomPageScroller.DoSetRange(Value: Integer); +begin + FRange := Value; + if FRange < 0 then FRange := 0; + UpdateButtons; +end; + +procedure TTBXCustomPageScroller.DrawNCArea(const DrawToDC: Boolean; + const ADC: HDC; const Clip: HRGN); +const + CBtns: array [TTBXPageScrollerOrientation, Boolean] of Integer = + ((PSBT_UP, PSBT_DOWN), (PSBT_LEFT, PSBT_RIGHT)); +var + DC: HDC; + R, CR, BR: TRect; + ACanvas: TCanvas; + PrevBtnSize, NextBtnSize: Integer; +begin + if FVisibleButtons = [] then Exit; + if not DrawToDC then DC := GetWindowDC(Handle) + else DC := ADC; + try + GetWindowRect(Handle, R); + OffsetRect(R, -R.Left, -R.Top); + if not DrawToDC then + begin + SelectNCUpdateRgn(Handle, DC, Clip); + CR := R; + PrevBtnSize := 0; + NextBtnSize := 0; + if tpsbPrev in FVisibleButtons then PrevBtnSize := ButtonSize; + if tpsbNext in FVisibleButtons then NextBtnSize := ButtonSize; + if Orientation = tpsoVertical then + begin + Inc(CR.Top, PrevBtnSize); + Dec(CR.Bottom, NextBtnSize); + end + else + begin + Inc(CR.Left, PrevBtnSize); + Dec(CR.Right, NextBtnSize); + end; + with CR do ExcludeClipRect(DC, Left, Top, Right, Bottom); + end; + + ACanvas := TCanvas.Create; + try + ACanvas.Handle := DC; + ACanvas.Brush.Color := Color; + ACanvas.FillRect(R); + + if tpsbPrev in FVisibleButtons then + begin + BR := R; + if Orientation = tpsoVertical then BR.Bottom := BR.Top + ButtonSize + else BR.Right := BR.Left + ButtonSize; + CurrentTheme.PaintPageScrollButton(ACanvas, BR, CBtns[Orientation, False], + FScrollDirection < 0); + end; + if tpsbNext in FVisibleButtons then + begin + BR := R; + if Orientation = tpsoVertical then BR.Top := BR.Bottom - ButtonSize + else BR.Left := BR.Right - ButtonSize; + CurrentTheme.PaintPageScrollButton(ACanvas, BR, CBtns[Orientation, True], + FScrollDirection > 0); + end; + finally + ACanvas.Handle := 0; + ACanvas.Free; + end; + finally + if not DrawToDC then ReleaseDC(Handle, DC); + end; +end; + +procedure TTBXCustomPageScroller.EnableAutoRange; +begin + if FAutoRangeCount > 0 then + begin + Dec(FAutoRangeCount); + if FAutoRangeCount = 0 then CalcAutoRange; + end; +end; + +procedure TTBXCustomPageScroller.HandleScrollTimer; +var + Pt: TPoint; + R: TRect; + OldPosition: Integer; + OldDirection: Integer; +begin + GetCursorPos(Pt); + GetWindowRect(Handle, R); + if not PtInRect(R, Pt) then + begin + StopScrolling; + end + else if FScrollDirection = 0 then + begin + FScrollTimer.Enabled := False; + FScrollCounter := 0; + end + else + begin + OldPosition := Position; + OldDirection := FScrollDirection; + if ((FScrollDirection > 0) and (FScrollCounter < 0)) or + ((FScrollDirection < 0) and (FScrollCounter > 0)) then FScrollCounter := 0; + if FScrollDirection > 0 then Inc(FScrollCounter) + else Dec(FScrollCounter); + Position := Position + FScrollCounter; + if Position = OldPosition then + begin + ReleaseCapture; + FScrollTimer.Enabled := False; + DrawNCArea(False, 0, 0); + end + else + begin + if FScrollPending or (FScrollDirection * OldDirection <= 0) or + (FScrollDirection * OldDirection <= 0) then + DrawNCArea(False, 0, 0); + end; + end; + if FScrollPending then FScrollTimer.Interval := ScrollInterval; + FScrollPending := False; +end; + +function TTBXCustomPageScroller.IsRangeStored: Boolean; +begin + Result := not AutoRange; +end; + +procedure TTBXCustomPageScroller.Loaded; +begin + inherited; + UpdateButtons; +end; + +procedure TTBXCustomPageScroller.RecalcNCArea; +begin + SetWindowPos(Handle, 0, 0, 0, 0, 0, + SWP_FRAMECHANGED or SWP_NOACTIVATE or SWP_NOZORDER or SWP_NOMOVE or SWP_NOSIZE); +end; + +procedure TTBXCustomPageScroller.Resizing; +begin + // do nothing by default +end; + +procedure TTBXCustomPageScroller.ScrollTimerTimer(Sender: TObject); +begin + HandleScrollTimer; +end; + +procedure TTBXCustomPageScroller.ScrollToCenter(ARect: TRect); +var + X, Y: Integer; +begin + if Orientation = tpsoVertical then + begin + if ARect.Bottom - ARect.Top < Range then Y := (ARect.Top + ARect.Bottom) div 2 + else Y := ARect.Top; + Position := Position + Y - Height div 2; + end + else + begin + if ARect.Right - ARect.Left < Range then X := (ARect.Left + ARect.Right) div 2 + else X := ARect.Left; + Position := Position + X - Width div 2; + end; +end; + +procedure TTBXCustomPageScroller.ScrollToCenter(AControl: TControl); +var + R: TRect; +begin + R := AControl.ClientRect; + R.TopLeft := ScreenToClient(AControl.ClientToScreen(R.TopLeft)); + R.BottomRight := ScreenToClient(AControl.ClientToScreen(R.BottomRight)); + ScrollToCenter(R); +end; + +procedure TTBXCustomPageScroller.SetAutoRange(Value: Boolean); +begin + if FAutoRange <> Value then + begin + FAutoRange := Value; + if Value then CalcAutoRange else Range := 0; + end; +end; + +procedure TTBXCustomPageScroller.SetButtonSize(Value: Integer); +begin + if FButtonSize <> Value then + begin + FButtonSize := Value; + UpdateButtons; + end; +end; + +procedure TTBXCustomPageScroller.SetOrientation(Value: TTBXPageScrollerOrientation); +begin + if Orientation <> Value then + begin + FOrientation := Value; + Realign; + end; +end; + +procedure TTBXCustomPageScroller.SetPosition(Value: Integer); +var + OldPos: Integer; +begin + if csReading in ComponentState then FPosition := Value + else + begin + ValidatePosition(Value); + if FPosition <> Value then + begin + OldPos := FPosition; + FPosition := Value; + + if OldPos > 0 then Inc(OldPos, ButtonSize); + if Value > 0 then Inc(Value, ButtonSize); + + if Orientation = tpsoHorizontal then ScrollBy(OldPos - Value, 0) + else ScrollBy(0, OldPos - Value); + UpdateButtons; + end; + end; +end; + +procedure TTBXCustomPageScroller.SetRange(Value: Integer); +begin + FAutoRange := False; + DoSetRange(Value); +end; + +procedure TTBXCustomPageScroller.StopScrolling; +begin + if (FScrollDirection <> 0) or (FScrollCounter <> 0) or (FScrollTimer.Enabled) then + begin + FScrollDirection := 0; + FScrollCounter := 0; + FScrollTimer.Enabled := False; + if HandleAllocated and IsWindowVisible(Handle) then DrawNCArea(False, 0, 0); + end; +end; + +procedure TTBXCustomPageScroller.UpdateButtons; +var + Sz: Integer; + OldVisibleButtons: TTBXPageScrollerButtons; + RealignNeeded: Boolean; +begin + RealignNeeded := False; + if not FUpdatingButtons and HandleAllocated then + try + FUpdatingButtons := True; + if Orientation = tpsoHorizontal then Sz := Width + else Sz := Height; + OldVisibleButtons := FVisibleButtons; + FVisibleButtons := []; + + FPosRange := Range - Sz; + if FPosRange < 0 then FPosRange := 0; + if FPosition > FPosRange - 1 then + begin + FPosition := FPosRange; + RealignNeeded := True; + end; + + if Sz > ButtonSize * 3 then + begin + if Position > 0 then Include(FVisibleButtons, tpsbPrev); + if Range - Position > Sz then Include(FVisibleButtons, tpsbNext); + end; + if FVisibleButtons <> OldVisibleButtons then + begin + RecalcNCArea; + RealignNeeded := True; + end; + finally + FUpdatingButtons := False; + if RealignNeeded then Realign; + end; +end; + +procedure TTBXCustomPageScroller.ValidatePosition(var NewPos: Integer); +begin + if NewPos < 0 then NewPos := 0; + if NewPos > FPosRange then NewPos := FPosRange; +end; + +procedure TTBXCustomPageScroller.WMEraseBkgnd(var Message: TWmEraseBkgnd); +begin + if Color = clNone then + begin + DrawParentBackground(Self, Message.DC, ClientRect); + Message.Result := 1; + end + else inherited; +end; + +procedure TTBXCustomPageScroller.WMMouseMove(var Message: TWMMouseMove); +begin + if AutoScroll then StopScrolling; + inherited; +end; + +procedure TTBXCustomPageScroller.WMNCCalcSize(var Message: TWMNCCalcSize); +begin + with Message.CalcSize_Params^ do + begin + if Orientation = tpsoVertical then + begin + if tpsbPrev in FVisibleButtons then Inc(rgrc[0].Top, ButtonSize); + if tpsbNext in FVisibleButtons then Dec(rgrc[0].Bottom, ButtonSize); + end + else + begin + if tpsbPrev in FVisibleButtons then Inc(rgrc[0].Left, ButtonSize); + if tpsbNext in FVisibleButtons then Dec(rgrc[0].Right, ButtonSize); + end; + Message.Result := 0; + end; +end; + +procedure TTBXCustomPageScroller.WMNCHitTest(var Message: TWMNCHitTest); +var + Pt: TPoint; + R: TRect; +begin + DefaultHandler(Message); + with Message do if Result <> HTCLIENT then + begin + Pt := SmallPointToPoint(Pos); + GetWindowRect(Handle, R); + if PtInRect(R, Pt) then + begin + if (tpsbPrev in FVisibleButtons) then + begin + if Orientation = tpsoVertical then + begin + if Pt.Y < R.Top + ButtonSize then Result := HTSCROLLPREV + end + else + begin + if Pt.X < R.Left + ButtonSize then Result := HTSCROLLPREV + end; + end; + if (tpsbNext in FVisibleButtons) then + begin + if Orientation = tpsoVertical then + begin + if Pt.Y >= R.Bottom - ButtonSize then Result := HTSCROLLNEXT; + end + else + begin + if Pt.X >= R.Right - ButtonSize then Result := HTSCROLLNEXT; + end; + end; + end; + end; +end; + +procedure TTBXCustomPageScroller.WMNCLButtonDown(var Message: TWMNCLButtonDown); +begin + if (Win32MajorVersion >= 5) or + (Win32MajorVersion = 4) and (Win32MinorVersion >= 10) then + CallTrackMouseEvent(Handle, TME_LEAVE or $10 {TME_NONCLIENT}); + + if not AutoScroll and (Message.HitTest in [HTSCROLLPREV, HTSCROLLNEXT]) then + BeginScrolling(Message.HitTest) + else + inherited; +end; + +procedure TTBXCustomPageScroller.WMNCMouseLeave(var Message: TMessage); +begin + if AutoScroll then StopScrolling; + inherited; +end; + +procedure TTBXCustomPageScroller.WMNCMouseMove(var Message: TWMNCMouseMove); +var + OldScrollDirection: Integer; +begin + if (Win32MajorVersion >= 5) or + (Win32MajorVersion = 4) and (Win32MinorVersion >= 10) then + CallTrackMouseEvent(Handle, TME_LEAVE or $10 {TME_NONCLIENT}); + + if AutoScroll then + begin + OldScrollDirection := FScrollDirection; + case Message.HitTest of + HTSCROLLPREV: FScrollDirection := -1; + HTSCROLLNEXT: FScrollDirection := 1; + else + StopScrolling; + inherited; + Exit; + end; + if OldScrollDirection <> FScrollDirection then + begin + FScrollCounter := 0; + FScrollPending := True; + FScrollTimer.Interval := ScrollDelay; + FScrollTimer.Enabled := True; + DrawNCArea(False, 0, 0); + end; + end; +end; + +procedure TTBXCustomPageScroller.WMNCPaint(var Message: TMessage); +begin + DrawNCArea(False, 0, HRGN(Message.WParam)); +end; + +procedure TTBXCustomPageScroller.WMSize(var Message: TWMSize); +begin + FUpdatingButtons := True; + try + CalcAutoRange; + finally + FUpdatingButtons := False; + end; + Inc(FAutoRangeCount); + inherited; + Resizing; + Dec(FAutoRangeCount); +end; + +{ TTBXCustomCheckBox } + +procedure TTBXCustomCheckBox.Click; +begin + Toggle; + Invalidate; + inherited; +end; + +procedure TTBXCustomCheckBox.CMDialogChar(var Message: TCMDialogChar); +begin + with Message do + if Enabled and ShowAccelChar and IsAccel(CharCode, GetLabelText) and CanFocus and Visible then + begin + Click; + Result := 1; + end + else inherited; +end; + +procedure TTBXCustomCheckBox.CMDialogKey(var Message: TCMDialogKey); +begin + with Message do + if (CharCode = VK_RETURN) and Focused and + (KeyDataToShiftState(Message.KeyData) = []) then + begin + Click; + Result := 1; + end + else inherited; +end; + +procedure TTBXCustomCheckBox.CNCommand(var Message: TWMCommand); +begin + if Message.NotifyCode = BN_CLICKED then Toggle; +end; + +constructor TTBXCustomCheckBox.Create(AOwner: TComponent); +begin + inherited; + SmartFocus := True; + SpaceAsClick := True; + TabStop := True; +end; + +procedure TTBXCustomCheckBox.DoAdjustHeight(ACanvas: TCanvas; var NewHeight: Integer); +begin + inherited DoAdjustHeight(ACanvas, NewHeight); + if NewHeight < GetGlyphSize + 4 then NewHeight := GetGlyphSize + 4; +end; + +procedure TTBXCustomCheckBox.DoChange; +begin + if Assigned(FOnChange) then FOnChange(Self); +end; + +procedure TTBXCustomCheckBox.DoMouseEnter; +begin + inherited; + Invalidate; +end; + +procedure TTBXCustomCheckBox.DoMouseLeave; +begin + inherited; + Invalidate; +end; + +function TTBXCustomCheckBox.DoSetState(var NewState: TCheckBoxState): Boolean; +begin + Result := True; +end; + +function TTBXCustomCheckBox.GetChecked: Boolean; +begin + Result := State = cbChecked; +end; + +function TTBXCustomCheckBox.GetFocusRect(const R: TRect): TRect; +const + Alignments: array [TLeftRight] of Word = (DT_LEFT, DT_RIGHT); + WordWraps: array [TTextWrapping] of Integer = (DT_SINGLELINE or DT_VCENTER, + DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS, + DT_SINGLELINE or DT_VCENTER or DT_PATH_ELLIPSIS, DT_WORDBREAK); +var + TR: TRect; +begin + TR := R; + ApplyMargins(TR, GetTextMargins); + DoDrawText(Canvas, TR, (DT_EXPANDTABS or DT_CALCRECT) or WordWraps[Wrapping] or Alignments[Alignment]); + Result := R; + Result.Right := TR.Right + 2; + Result.Left := TR.Left - 2; +end; + +function TTBXCustomCheckBox.GetGlyphSize: Integer; +begin + Result := 13; +end; + +function TTBXCustomCheckBox.GetTextAlignment: TAlignment; +begin + Result := taLeftJustify; +end; + +function TTBXCustomCheckBox.GetTextMargins: TRect; +begin + Result := Rect(2, 2, 2, 2); + with Result do + if GetRealAlignment(Self) = taLeftJustify then Inc(Left, GetGlyphSize + 6) + else Inc(Right, GetGlyphSize + 6); +end; + +procedure TTBXCustomCheckBox.Paint; +const + EnabledState: array [Boolean] of Integer = (PFS_DISABLED, 0); + StateFlags: array [TCheckBoxState] of Integer = (0, PFS_CHECKED, PFS_MIXED); + HotState: array [Boolean] of Integer = (0, PFS_HOT); + PushedState: array [Boolean] of Integer = (0, PFS_PUSHED); + FocusedState: array [Boolean] of Integer = (0, PFS_FOCUSED); +var + Rect: TRect; + Sz, Flags: Integer; +begin + inherited; + with Canvas do + begin + Rect := ClientRect; + ApplyMargins(Rect, Margins); + Sz := GetGlyphSize; + if Alignment = taLeftJustify then Rect.Right := Rect.Left + GetGlyphSize + else Rect.Left := Rect.Right - GetGlyphSize; + Rect.Top := (Rect.Top + Rect.Bottom + 1 - Sz) div 2; + Rect.Bottom := Rect.Top + Sz; + Brush.Color := clBtnShadow; + Flags := EnabledState[Enabled]; + if Enabled then Flags := Flags or StateFlags[State] or + HotState[MouseInControl] or PushedState[Pushed and MouseInControl] or FocusedState[Focused]; + CurrentTheme.PaintFrameControl(Canvas, Rect, PFC_CHECKBOX, Flags, nil); + end; +end; + +procedure TTBXCustomCheckBox.SetChecked(Value: Boolean); +begin + if Value then State := cbChecked else State := cbUnchecked; +end; + +procedure TTBXCustomCheckBox.SetState(Value: TCheckBoxState); +begin + if (FState <> Value) and DoSetState(Value) then + begin + FState := Value; + Invalidate; + DoChange; + end; +end; + +procedure TTBXCustomCheckBox.Toggle; +begin + case State of + cbUnchecked: if AllowGrayed then State := cbGrayed else State := cbChecked; + cbChecked: State := cbUnchecked; + cbGrayed: State := cbChecked; + end; +end; + +procedure TTBXCustomCheckBox.WMNCHitTest(var Message: TWMNCHitTest); +var + P: TPoint; + R: TRect; + SL, SR: Integer; +begin + inherited; + if not (csDesigning in ComponentState) then + begin + P := ScreenToClient(SmallPointToPoint(Message.Pos)); + R := ClientRect; + ApplyMargins(R, Margins); + SL := R.Left; SR := R.Right; + R := GetFocusRect(R); + if GetRealAlignment(Self) = taLeftJustify then R.Left := SL + else R.Right := SR; + if not PtInRect(R, P) then Message.Result := HTTRANSPARENT; + end; +end; + +{ TTBXCustomRadioButton } + +procedure TTBXCustomRadioButton.Click; +begin + if not Checked then Checked := True; + Invalidate; + inherited; +end; + +procedure TTBXCustomRadioButton.CMDialogChar(var Message: TCMDialogChar); +begin + with Message do + if Enabled and ShowAccelChar and IsAccel(CharCode, GetLabelText) and CanFocus and Visible then + begin + Click; + Result := 1; + end + else inherited; +end; + +procedure TTBXCustomRadioButton.CNCommand(var Message: TWMCommand); +begin + if Message.NotifyCode = BN_CLICKED then Checked := not Checked; +end; + +constructor TTBXCustomRadioButton.Create(AOwner: TComponent); +begin + inherited; + SmartFocus := True; + SpaceAsClick := True; + TabStop := True; +end; + +procedure TTBXCustomRadioButton.DoAdjustHeight(ACanvas: TCanvas; var NewHeight: Integer); +begin + inherited DoAdjustHeight(ACanvas, NewHeight); + if NewHeight < GetGlyphSize + 4 then NewHeight := GetGlyphSize + 4; +end; + +procedure TTBXCustomRadioButton.DoChange; +begin + if Assigned(FOnChange) then FOnChange(Self); +end; + +procedure TTBXCustomRadioButton.DoMouseEnter; +begin + inherited; + Invalidate; +end; + +procedure TTBXCustomRadioButton.DoMouseLeave; +begin + inherited; + Invalidate; +end; + +function TTBXCustomRadioButton.DoSetChecked(var Value: Boolean): Boolean; +begin + Result := True; +end; + +function TTBXCustomRadioButton.GetFocusRect(const R: TRect): TRect; +const + Alignments: array [TLeftRight] of Word = (DT_LEFT, DT_RIGHT); + WordWraps: array [TTextWrapping] of Integer = (DT_SINGLELINE or DT_VCENTER, + DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS, + DT_SINGLELINE or DT_VCENTER or DT_PATH_ELLIPSIS, DT_WORDBREAK); +var + TR: TRect; +begin + TR := R; + ApplyMargins(TR, GetTextMargins); + DoDrawText(Canvas, TR, (DT_EXPANDTABS or DT_CALCRECT) or WordWraps[Wrapping] or Alignments[Alignment]); + Result := R; + Result.Right := TR.Right + 2; + Result.Left := TR.Left - 2; +end; + +function TTBXCustomRadioButton.GetGlyphSize: Integer; +begin + Result := 13; +end; + +function TTBXCustomRadioButton.GetTextAlignment: TAlignment; +begin + Result := taLeftJustify; +end; + +function TTBXCustomRadioButton.GetTextMargins: TRect; +begin + Result := Rect(2, 2, 2, 2); + with Result do + if GetRealAlignment(Self) = taLeftJustify then Inc(Left, GetGlyphSize + 6) + else Inc(Right, GetGlyphSize + 6); +end; + +procedure TTBXCustomRadioButton.Paint; +const + EnabledState: array [Boolean] of Integer = (PFS_DISABLED, 0); + CheckedState: array [Boolean] of Integer = (0, PFS_CHECKED); + HotState: array [Boolean] of Integer = (0, PFS_HOT); + PushedState: array [Boolean] of Integer = (0, PFS_PUSHED); + FocusedState: array [Boolean] of Integer = (0, PFS_FOCUSED); +var + Rect: TRect; + Sz, Flags: Integer; +begin + inherited; + with Canvas do + begin + Rect := ClientRect; + with Margins do + begin + Inc(Rect.Left, Left); + Inc(Rect.Top, Top); + Dec(Rect.Right, Right); + Dec(Rect.Bottom, Bottom); + end; + Sz := GetGlyphSize; + if Alignment = taLeftJustify then Rect.Right := Rect.Left + GetGlyphSize + else Rect.Left := Rect.Right - GetGlyphSize; + Rect.Top := (Rect.Top + Rect.Bottom + 1 - Sz) div 2; + Rect.Bottom := Rect.Top + Sz; + Brush.Color := clBtnShadow; + Flags := EnabledState[Enabled]; + if Enabled then Flags := Flags or CheckedState[Checked] or + HotState[MouseInControl] or PushedState[Pushed and MouseInControl] or FocusedState[Focused]; + CurrentTheme.PaintFrameControl(Canvas, Rect, PFC_RADIOBUTTON, Flags, nil); + end; +end; + +procedure TTBXCustomRadioButton.SetChecked(Value: Boolean); +begin + if (Value <> FChecked) and DoSetChecked(Value) then + begin + FChecked := Value; + TabStop := Value; + if Value then TurnSiblingsOff; + Invalidate; + DoChange; + end; +end; + +procedure TTBXCustomRadioButton.SetGroupIndex(Value: Integer); +begin + FGroupIndex := Value; + if Checked then TurnSiblingsOff; +end; + +procedure TTBXCustomRadioButton.TurnSiblingsOff; +var + I: Integer; + Sibling: TControl; +begin + if Parent <> nil then + with Parent do + for I := 0 to ControlCount - 1 do + begin + Sibling := Controls[I]; + if (Sibling <> Self) and (Sibling is TTBXCustomRadioButton) then + with TTBXCustomRadioButton(Sibling) do + begin + if GroupIndex = Self.GroupIndex then SetChecked(False); + end; + end; +end; + +procedure TTBXCustomRadioButton.WMNCHitTest(var Message: TWMNCHitTest); +var + P: TPoint; + R: TRect; + SL, SR: Integer; +begin + inherited; + if not (csDesigning in ComponentState) then + begin + P := ScreenToClient(SmallPointToPoint(Message.Pos)); + R := ClientRect; + ApplyMargins(R, Margins); + SL := R.Left; SR := R.Right; + R := GetFocusRect(R); + if GetRealAlignment(Self) = taLeftJustify then R.Left := SL + else R.Right := SR; + if not PtInRect(R, P) then Message.Result := HTTRANSPARENT; + end; +end; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXDkPanels.pas.orig b/official/2.1.6+2.1.beta1/TBX/TBXDkPanels.pas.orig new file mode 100644 index 0000000..8c6af97 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXDkPanels.pas.orig @@ -0,0 +1,5459 @@ +unit TBXDkPanels; + +// TBX Package +// Copyright 2001-2004 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// $Id: TBXDkPanels.pas 21 2004-05-29 22:16:01Z Alex@ZEISS $ + +interface + +{$I TB2Ver.inc} +{$I TBX.inc} + +uses + Windows, Messages, Classes, Graphics, Controls, StdCtrls, ExtCtrls, Forms, + TB2Dock, TB2Item, TBX, TBXThemes, ImgList, Menus; + +const + { New hit test constants for page scrollers } + HTSCROLLPREV = 30; + HTSCROLLNEXT = 31; + +type + { TTBXDockablePanel } + + TTBXControlMargins = class(TPersistent) + private + FLeft, FTop, FRight, FBottom: Integer; + FOnChange: TNotifyEvent; + procedure SetBottom(Value: Integer); + procedure SetLeft(Value: Integer); + procedure SetRight(Value: Integer); + procedure SetTop(Value: Integer); + public + procedure Assign(Src: TPersistent); override; + procedure Modified; dynamic; + property OnChange: TNotifyEvent read FOnChange write FOnChange; + published + property Left: Integer read FLeft write SetLeft default 0; + property Top: Integer read FTop write SetTop default 0; + property Right: Integer read FRight write SetRight default 0; + property Bottom: Integer read FBottom write SetBottom default 0; + end; + + { TTBXMultiDock } + + TTBXMultiDock = class(TTBDock) + protected + LastValidRowSize: Integer; + function Accepts(ADockableWindow: TTBCustomDockableWindow): Boolean; override; + procedure ValidateInsert(AComponent: TComponent); override; + public + procedure Paint; override; + procedure ResizeVisiblePanels(NewSize: Integer); + procedure ArrangeToolbars; override; + end; + + + { TTBXDockablePanel } + + TDPCaptionRotation = (dpcrAuto, dpcrAlwaysHorz, dpcrAlwaysVert); + TTBXResizingStage = (rsBeginResizing, rsResizing, rsEndResizing); + TTBXDockedResizing = procedure(Sender: TObject; Vertical: Boolean; + var NewSize: Integer; Stage: TTBXResizingStage; var AllowResize: Boolean) of object; + TDockKinds = set of (dkStandardDock, dkMultiDock); + + TTBXDockablePanel = class(TTBCustomDockableWindow) + private + FBorderSize: Integer; + FCaptionRotation: TDPCaptionRotation; + FDockedWidth: Integer; + FDockedHeight: Integer; + FEffectiveColor: TColor; + FFloatingWidth: Integer; + FFloatingHeight: Integer; + FIsResizing: Boolean; + FIsSplitting: Boolean; + FMinClientWidth: Integer; + FMinClientHeight: Integer; + FMaxClientWidth: Integer; + FMaxClientHeight: Integer; + FSmoothDockedResize: Boolean; + FSnapDistance: Integer; + FShowCaptionWhenDocked: Boolean; + FSplitHeight: Integer; + FSplitWidth: Integer; + FSupportedDocks: TDockKinds; + FOnDockedResizing: TTBXDockedResizing; + function CalcSize(ADock: TTBDock): TPoint; + procedure SetBorderSize(Value: Integer); + procedure SetCaptionRotation(Value: TDPCaptionRotation); + procedure SetDockedHeight(Value: Integer); + procedure SetDockedWidth(Value: Integer); + procedure SetFloatingHeight(Value: Integer); + procedure SetFloatingWidth(Value: Integer); + procedure SetMinClientHeight(Value: Integer); + procedure SetMinClientWidth(Value: Integer); + procedure SetShowCaptionWhenDocked(Value: Boolean); + procedure SetSnapDistance(Value: Integer); + procedure CMColorChanged(var Message: TMessage); message CM_COLORCHANGED; + procedure CMControlChange(var Message: TCMControlChange); message CM_CONTROLCHANGE; + procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED; + procedure TBMGetEffectiveColor(var Message: TMessage); message TBM_GETEFFECTIVECOLOR; + procedure TBMGetViewType(var Message: TMessage); message TBM_GETVIEWTYPE; + procedure TBMThemeChange(var Message: TMessage); message TBM_THEMECHANGE; + procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND; + procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST; + procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE; + procedure WMNCLButtonDown(var Message: TWMNCLButtonDown); message WM_NCLBUTTONDOWN; + procedure WMSetCursor(var Message: TWMSetCursor); message WM_SETCURSOR; + procedure WMWindowPosChanged(var Message: TWMWindowPosChanged); message WM_WINDOWPOSCHANGED; + procedure SetSplitHeight(Value: Integer); + procedure SetSplitWidth(Value: Integer); + protected + BlockSizeUpdate: Boolean; + procedure AdjustClientRect(var Rect: TRect); override; + procedure BeginDockedSizing(HitTest: Integer); + procedure BeginSplitResizing(HitTest: Integer); + function CalcNCSizes: TPoint; override; + function CanAutoSize(var NewWidth, NewHeight: Integer): Boolean; override; + function CanDockTo(ADock: TTBDock): Boolean; override; + function CanSplitResize(EdgePosition: TTBDockPosition): Boolean; + procedure ConstrainedResize(var MinWidth, MinHeight, MaxWidth, MaxHeight: Integer); override; + function DoArrange(CanMoveControls: Boolean; PreviousDockType: TTBDockType; NewFloating: Boolean; NewDock: TTBDock): TPoint; override; + function DoBeginDockedResizing(Vertical: Boolean): Boolean; virtual; + function DoDockedResizing(Vertical: Boolean; var NewSize: Integer): Boolean; virtual; + function DoEndDockedResizing(Vertical: Boolean): Boolean; virtual; + procedure DrawNCArea(const DrawToDC: Boolean; const ADC: HDC; const Clip: HRGN); override; + procedure GetBaseSize(var ASize: TPoint); override; + function GetDockedCloseButtonRect(LeftRight: Boolean): TRect; override; + procedure GetDockPanelInfo(out DockPanelInfo: TTBXDockPanelInfo); virtual; + function GetFloatingWindowParentClass: TTBFloatingWindowParentClass; override; + procedure GetMinMaxSize(var AMinClientWidth, AMinClientHeight, AMaxClientWidth, AMaxClientHeight: Integer); override; + function GetViewType: Integer; + function IsVertCaption: Boolean; virtual; + procedure Loaded; override; + procedure Paint; override; + procedure SetParent(AParent: TWinControl); override; + procedure SizeChanging(const AWidth, AHeight: Integer); override; + procedure UpdateEffectiveColor; + property IsResizing: Boolean read FIsResizing; + property IsSplitting: Boolean read FIsSplitting; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function GetFloatingBorderSize: TPoint; override; + procedure ReadPositionData(const Data: TTBReadPositionData); override; + procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override; + procedure UpdateChildColors; + procedure WritePositionData(const Data: TTBWritePositionData); override; + property EffectiveColor: TColor read FEffectiveColor; + published + { client size constraints should be restored before other size related properties } + property MaxClientHeight: Integer read FMaxClientHeight write FMaxClientHeight default 0; + property MaxClientWidth: Integer read FMaxClientWidth write FMaxClientWidth default 0; + property MinClientHeight: Integer read FMinClientHeight write SetMinClientHeight default 32; + property MinClientWidth: Integer read FMinClientWidth write SetMinClientWidth default 32; + + property ActivateParent; + property Align; + property Anchors; + property BorderSize: Integer read FBorderSize write SetBorderSize default 0; + property BorderStyle; + property Caption; + property CaptionRotation: TDPCaptionRotation read FCaptionRotation write SetCaptionRotation default dpcrAuto; + property Color default clNone; + property CloseButton; + property CloseButtonWhenDocked default True; + property CurrentDock; + property DblClickUndock default False; + property DefaultDock; + property DockableTo; + property DockedWidth: Integer read FDockedWidth write SetDockedWidth default 128; + property DockedHeight: Integer read FDockedHeight write SetDockedHeight default 128; + property DockMode; + property DockPos; + property DockRow; + property FloatingWidth: Integer read FFloatingWidth write SetFloatingWidth default 0; + property FloatingHeight: Integer read FFloatingHeight write SetFloatingHeight default 0; + property FloatingMode; + property Font; + property Height stored False; + property HideWhenInactive; + property LastDock; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property Resizable; + property ShowCaption; + property ShowCaptionWhenDocked: Boolean read FShowCaptionWhenDocked write SetShowCaptionWhenDocked default True; + property ShowHint; + property SplitHeight: Integer read FSplitHeight write SetSplitHeight default 0; + property SplitWidth: Integer read FSplitWidth write SetSplitWidth default 0; + property SupportedDocks: TDockKinds read FSupportedDocks write FSupportedDocks; + property SmoothDrag; + property SmoothDockedResize: Boolean read FSmoothDockedResize write FSmoothDockedResize default True; + property SnapDistance: Integer read FSnapDistance write SetSnapDistance default 0; + property TabOrder; + property UseLastDock; + property Visible; + property Width stored False; + + property OnClose; + property OnCloseQuery; + {$IFDEF JR_D5} + property OnContextPopup; + {$ENDIF} + property OnDragDrop; + property OnDragOver; + property OnDockChanged; + property OnDockChanging; + property OnDockChangingHidden; + property OnDockedResizing: TTBXDockedResizing read FOnDockedResizing write FOnDockedResizing; + property OnMouseDown; + property OnMouseMove; + property OnMouseUp; + property OnMove; + property OnRecreated; + property OnRecreating; + property OnResize; + property OnVisibleChanged; + end; + + { TTBXPanelObject } + + TControlPaintOptions = set of (cpoDoubleBuffered); + + TTBXPanelObject = class(TCustomControl) + private + FDisableScroll: Boolean; + FMouseInControl: Boolean; + FPaintOptions: TControlPaintOptions; + FPushed: Boolean; + FSmartFocus: Boolean; + FSpaceAsClick: Boolean; + FOnMouseEnter: TNotifyEvent; + FOnMouseLeave: TNotifyEvent; + procedure CMParentColorChanged(var Message: TMessage); message CM_PARENTCOLORCHANGED; + procedure CMEnabledChanged(var Message: TMessage); message CM_ENABLEDCHANGED; + procedure MouseTimerHandler(Sender: TObject); + procedure RemoveMouseTimer; + procedure SetPaintOptions(Value: TControlPaintOptions); + procedure TBMThemeChange(var Message); message TBM_THEMECHANGE; + procedure WMEraseBkgnd(var Message: TMessage); message WM_ERASEBKGND; + procedure WMKillFocus(var Message: TMessage); message WM_KILLFOCUS; + procedure WMSetFocus(var Message: TMessage); message WM_SETFOCUS; + protected + procedure CreateParams(var Params: TCreateParams); override; + procedure DoMouseEnter; virtual; + procedure DoMouseLeave; virtual; + procedure KeyDown(var Key: Word; Shift: TShiftState); override; + procedure KeyUp(var Key: Word; Shift: TShiftState); override; + procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; + procedure MouseMove(Shift: TShiftState; X, Y: Integer); override; + procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; + function GetMinHeight: Integer; virtual; + function GetMinWidth: Integer; virtual; + property Color default clNone; + property MouseInControl: Boolean read FMouseInControl; + property PaintOptions: TControlPaintOptions read FPaintOptions write SetPaintOptions; + property ParentColor default False; + property Pushed: Boolean read FPushed; + property SpaceAsClick: Boolean read FSpaceAsClick write FSpaceAsClick default False; + property SmartFocus: Boolean read FSmartFocus write FSmartFocus default False; + property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter; + property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure MakeVisible; + procedure MouseEntered; + procedure MouseLeft; + end; + + { TTBXAlignmentPanel } + + TTBXAlignmentPanel = class(TTBXPanelObject) + private + FMargins: TTBXControlMargins; + procedure MarginsChangeHandler(Sender: TObject); + procedure SetMargins(Value: TTBXControlMargins); + protected + procedure AdjustClientRect(var Rect: TRect); override; + procedure Paint; override; + function GetMinHeight: Integer; override; + function GetMinWidth: Integer; override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + published + property ParentColor; + property Align; + property Anchors; + property AutoSize; + property Color; + property Constraints; + property DragCursor; + property DragKind; + property DragMode; + property Enabled; + property Font; + property Margins: TTBXControlMargins read FMargins write SetMargins; + property ParentFont; + property ShowHint; + property TabOrder; + property TabStop; + property Visible; + property OnClick; +{$IFDEF JR_D5} + property OnContextPopup; +{$ENDIF} + property OnDblClick; + property OnDragDrop; + property OnDragOver; + property OnEndDock; + property OnEndDrag; + property OnMouseDown; + property OnMouseEnter; + property OnMouseLeave; + property OnMouseMove; + property OnMouseUp; + property OnStartDock; + property OnStartDrag; + end; + + { TTBXTextObject } + + TTBXTextObject = class(TTBXPanelObject) + private + FAlignment: TLeftRight; + FMargins: TTBXControlMargins; + FWrapping: TTextWrapping; + FShowAccelChar: Boolean; + FUpdating: Boolean; + procedure CMEnabledChanged(var Message: TMessage); message CM_ENABLEDCHANGED; + procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED; + procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED; + procedure MarginsChangeHandler(Sender: TObject); + procedure SetAlignment(Value: TLeftRight); + procedure SetMargins(Value: TTBXControlMargins); + procedure SetShowAccelChar(Value: Boolean); + procedure SetWrapping(Value: TTextWrapping); + protected + procedure AdjustFont(AFont: TFont); virtual; + procedure AdjustHeight; + procedure CreateParams(var Params: TCreateParams); override; + function CanAutoSize(var NewWidth, NewHeight: Integer): Boolean; override; + procedure DoAdjustHeight(ACanvas: TCanvas; var NewHeight: Integer); virtual; + function DoDrawText(ACanvas: TCanvas; var Rect: TRect; Flags: Longint): Integer; virtual; + procedure DoMarginsChanged; virtual; + function GetFocusRect(const R: TRect): TRect; virtual; + function GetLabelText: string; virtual; + function GetTextAlignment: TAlignment; virtual; + function GetTextMargins: TRect; virtual; + procedure Loaded; override; + procedure Paint; override; + property Alignment: TLeftRight read FAlignment write SetAlignment default taLeftJustify; + property AutoSize default True; + property PaintOptions default [cpoDoubleBuffered]; + property ShowAccelChar: Boolean read FShowAccelChar write SetShowAccelChar default True; + property Margins: TTBXControlMargins read FMargins write SetMargins; + property Wrapping: TTextWrapping read FWrapping write SetWrapping default twNone; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function GetControlsAlignment: TAlignment; override; + end; + + { TTBXCustomLabel } + + TTBXCustomLabel = class(TTBXTextObject) + private + FFocusControl: TWinControl; + FUnderline: Boolean; + FUnderlineColor: TColor; + procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR; + procedure SetUnderline(Value: Boolean); + procedure SetUnderlineColor(Value: TColor); + procedure SetFocusControl(Value: TWinControl); + protected + function GetTextMargins: TRect; override; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure Paint; override; + property FocusControl: TWinControl read FFocusControl write SetFocusControl; + property Underline: Boolean read FUnderline write SetUnderline default False; + property UnderlineColor: TColor read FUnderlineColor write SetUnderlineColor default clBtnShadow; + property Wrapping default twWrap; + public + constructor Create(AOwner: TComponent); override; + end; + + { TTBXLabel } + + TTBXLabel = class(TTBXCustomLabel) + published + property Align; + property Alignment; + property Anchors; + property AutoSize; + property BiDiMode; + property Caption; + property Color; + property Constraints; + property DragCursor; + property DragKind; + property DragMode; + property Enabled; + property FocusControl; + property Font; + property Margins; +// property PaintOptions; + property ParentBiDiMode; + property ParentColor; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property ShowAccelChar; + property ShowHint; + property Underline; + property UnderlineColor; + property Visible; + property Wrapping; + property OnClick; +{$IFDEF JR_D5} + property OnContextPopup; +{$ENDIF} + property OnDblClick; + property OnDragDrop; + property OnDragOver; + property OnEndDock; + property OnEndDrag; + property OnMouseDown; + property OnMouseEnter; + property OnMouseLeave; + property OnMouseMove; + property OnMouseUp; + property OnStartDock; + property OnStartDrag; + end; + + { TTBXCustomLink } + + TTBXCustomLink = class(TTBXTextObject) + private + FImageChangeLink: TChangeLink; + FImageIndex: TImageIndex; + FImages: TCustomImageList; + procedure ImageListChange(Sender: TObject); + procedure SetImageIndex(Value: TImageIndex); + procedure SetImages(Value: TCustomImageList); + procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR; + procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY; + procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST; + protected + procedure AdjustFont(AFont: TFont); override; + procedure DoAdjustHeight(ACanvas: TCanvas; var NewHeight: Integer); override; + procedure DoMouseEnter; override; + procedure DoMouseLeave; override; + function GetFocusRect(const R: TRect): TRect; override; + function GetTextAlignment: TAlignment; override; + function GetTextMargins: TRect; override; + procedure Paint; override; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + property Cursor default crHandPoint; + property ImageIndex: TImageIndex read FImageIndex write SetImageIndex; + property Images: TCustomImageList read FImages write SetImages; + property SmartFocus default True; + property TabStop default True; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function GetControlsAlignment: TAlignment; override; + end; + + { TTBXLink } + + TTBXLink = class(TTBXCustomLink) + published + property Align; + property Alignment; + property Anchors; + property AutoSize; + property BiDiMode; + property Caption; + property Color; + property Constraints; + property DragCursor; + property DragKind; + property DragMode; + property Enabled; + property Font; + property ImageIndex; + property Images; + property Margins; +// property PaintOptions; + property ParentBiDiMode; + property ParentColor; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property ShowAccelChar; + property ShowHint; + property SmartFocus; + property TabOrder; + property TabStop; + property Visible; + property Wrapping; + property OnClick; +{$IFDEF JR_D5} + property OnContextPopup; +{$ENDIF} + property OnDblClick; + property OnDragDrop; + property OnDragOver; + property OnEndDock; + property OnEndDrag; + property OnEnter; + property OnExit; + property OnMouseDown; + property OnMouseEnter; + property OnMouseLeave; + property OnMouseMove; + property OnMouseUp; + property OnStartDock; + property OnStartDrag; + end; + + { TTBXCustomButton } + TTBXCustomButton = class; + TButtonLayout = (blGlyphLeft, blGlyphTop, blGlyphRight, blGlyphBottom); + TButtonStyle = (bsNormal, bsFlat); + TDropDownEvent = procedure(Sender: TTBXCustomButton; var AllowDropDown: Boolean) of object; + + TTBXCustomButton = class(TTBXTextObject) + private + FAlignment: TAlignment; + FAllowAllUnchecked: Boolean; + FBorderSize: Integer; + FChecked: Boolean; + FDropdownCombo: Boolean; + FDropdownMenu: TPopupMenu; + FButtonStyle: TButtonStyle; + FGlyphSpacing: Integer; + FGroupIndex: Integer; + FImageChangeLink: TChangeLink; + FImageIndex: TImageIndex; + FImages: TCustomImageList; + FInClick: Boolean; + FLayout: TButtonLayout; + FMenuVisible: Boolean; + FModalResult: TModalResult; + FRepeating: Boolean; + FRepeatDelay: Integer; + FRepeatInterval: Integer; + FRepeatTimer: TTimer; + FOnDropDown: TDropDownEvent; + procedure ImageListChange(Sender: TObject); + procedure RepeatTimerHandler(Sender: TObject); + procedure SetAlignment(Value: TAlignment); + procedure SetAllowAllUnchecked(Value: Boolean); + procedure SetBorderSize(Value: Integer); + procedure SetButtonStyle(Value: TButtonStyle); + procedure SetChecked(Value: Boolean); + procedure SetDropdownCombo(Value: Boolean); + procedure SetDropdownMenu(Value: TPopupMenu); + procedure SetGlyphSpacing(Value: Integer); + procedure SetGroupIndex(Value: Integer); + procedure SetImageIndex(Value: TImageIndex); + procedure SetImages(Value: TCustomImageList); + procedure SetLayout(Value: TButtonLayout); + procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR; + procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY; + procedure WMCancelMode(var Message: TWMCancelMode); message WM_CANCELMODE; + procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK; + procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST; + protected + function ArrowVisible: Boolean; + procedure DoAdjustHeight(ACanvas: TCanvas; var NewHeight: Integer); override; + function DoDrawText(ACanvas: TCanvas; var Rect: TRect; Flags: Longint): Integer; override; + function DoDropDown: Boolean; virtual; + procedure DoMouseEnter; override; + procedure DoMouseLeave; override; + function GetFocusRect(const R: TRect): TRect; override; + procedure GetItemInfo(out ItemInfo: TTBXItemInfo); virtual; + function GetTextAlignment: TAlignment; override; + function GetTextMargins: TRect; override; + procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; + procedure MouseMove(Shift: TShiftState; X, Y: Integer); override; + procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; + procedure Paint; override; + function PtInButtonPart(const Pt: TPoint): Boolean; virtual; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure UpdateCheckedState; + property Alignment: TAlignment read FAlignment write SetAlignment default taCenter; + property AllowAllUnchecked: Boolean read FAllowAllUnchecked write SetAllowAllUnchecked default False; + property BorderSize: Integer read FBorderSize write SetBorderSize default 4; + property ButtonStyle: TButtonStyle read FButtonStyle write SetButtonStyle default bsNormal; + property Checked: Boolean read FChecked write SetChecked default False; + property DropdownCombo: Boolean read FDropdownCombo write SetDropdownCombo default False; + property DropdownMenu: TPopupMenu read FDropdownMenu write SetDropdownMenu; + property GlyphSpacing: Integer read FGlyphSpacing write SetGlyphSpacing default 4; + property GroupIndex: Integer read FGroupIndex write SetGroupIndex default 0; + property ImageIndex: TImageIndex read FImageIndex write SetImageIndex; + property Images: TCustomImageList read FImages write SetImages; + property Layout: TButtonLayout read FLayout write SetLayout default blGlyphLeft; + property ModalResult: TModalResult read FModalResult write FModalResult default 0; + property Repeating: Boolean read FRepeating write FRepeating default False; + property RepeatDelay: Integer read FRepeatDelay write FRepeatDelay default 400; + property RepeatInterval: Integer read FRepeatInterval write FRepeatInterval default 100; + property SmartFocus default True; + property TabStop default True; + property OnDropDown: TDropDownEvent read FOnDropDown write FOnDropDown; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure Click; override; + function GetControlsAlignment: TAlignment; override; + end; + + { TTBXButton } + TTBXButton = class(TTBXCustomButton) + published + property Align; + property Alignment; + property GroupIndex; + property AllowAllUnchecked; + property Anchors; + property AutoSize; + property BiDiMode; + property BorderSize; + property ButtonStyle; + property Caption; + property Checked; + property Constraints; + property DragCursor; + property DragKind; + property DragMode; + property DropDownCombo; + property DropDownMenu; + property Enabled; + property Font; + property GlyphSpacing; + property ImageIndex; + property Images; + property Layout; + property Margins; + property ModalResult; +// property PaintOptions; + property ParentBiDiMode; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property Repeating; + property RepeatDelay; + property RepeatInterval; + property ShowAccelChar; + property ShowHint; + property SmartFocus; + property TabOrder; + property TabStop; + property Visible; + property Wrapping; + property OnClick; +{$IFDEF JR_D5} + property OnContextPopup; +{$ENDIF} + property OnDblClick; + property OnDragDrop; + property OnDragOver; + property OnDropDown; + property OnEndDock; + property OnEndDrag; + property OnMouseDown; + property OnMouseEnter; + property OnMouseLeave; + property OnMouseMove; + property OnMouseUp; + property OnStartDock; + property OnStartDrag; + end; + + { TTBXCustomCheckBox } + + TTBXCustomCheckBox = class(TTBXTextObject) + private + FAllowGrayed: Boolean; + FState: TCheckBoxState; + FOnChange: TNotifyEvent; + function GetChecked: Boolean; + procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR; + procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY; + procedure CNCommand(var Message: TWMCommand); message CN_COMMAND; + procedure SetChecked(Value: Boolean); + procedure SetState(Value: TCheckBoxState); + procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST; + protected + procedure Click; override; + procedure DoAdjustHeight(ACanvas: TCanvas; var NewHeight: Integer); override; + procedure DoChange; virtual; + procedure DoMouseEnter; override; + procedure DoMouseLeave; override; + function DoSetState(var NewState: TCheckBoxState): Boolean; virtual; + function GetGlyphSize: Integer; + function GetFocusRect(const R: TRect): TRect; override; + function GetTextAlignment: TAlignment; override; + function GetTextMargins: TRect; override; + procedure Paint; override; + procedure Toggle; virtual; + property AllowGrayed: Boolean read FAllowGrayed write FAllowGrayed default False; + property Checked: Boolean read GetChecked write SetChecked stored False; + property SmartFocus default True; + property State: TCheckBoxState read FState write SetState default cbUnchecked; + property TabStop default True; + property OnChange: TNotifyEvent read FOnChange write FOnChange; + public + constructor Create(AOwner: TComponent); override; + end; + + TTBXCheckBox = class(TTBXCustomCheckBox) + published + property Align; + property Alignment; + property AllowGrayed; + property Anchors; + property AutoSize; + property BiDiMode; + property Caption; + property Checked; + property Color; + property Constraints; + property DragCursor; + property DragKind; + property DragMode; + property Enabled; + property Font; + property Margins; +// property PaintOptions; + property ParentBiDiMode; + property ParentColor; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property ShowAccelChar; + property ShowHint; + property SmartFocus; + property State; + property TabOrder; + property TabStop; + property Visible; + property Wrapping; + property OnChange; + property OnClick; +{$IFDEF JR_D5} + property OnContextPopup; +{$ENDIF} + property OnDblClick; + property OnDragDrop; + property OnDragOver; + property OnEndDock; + property OnEndDrag; + property OnMouseDown; + property OnMouseEnter; + property OnMouseLeave; + property OnMouseMove; + property OnMouseUp; + property OnStartDock; + property OnStartDrag; + end; + + { TTBXCustomRadioButton } + + TTBXCustomRadioButton = class(TTBXTextObject) + private + FChecked: Boolean; + FGroupIndex: Integer; + FOnChange: TNotifyEvent; + procedure SetChecked(Value: Boolean); + procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR; + procedure CNCommand(var Message: TWMCommand); message CN_COMMAND; + procedure SetGroupIndex(Value: Integer); + procedure TurnSiblingsOff; + procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST; + protected + procedure Click; override; + procedure DoAdjustHeight(ACanvas: TCanvas; var NewHeight: Integer); override; + procedure DoChange; virtual; + procedure DoMouseEnter; override; + procedure DoMouseLeave; override; + function DoSetChecked(var Value: Boolean): Boolean; virtual; + function GetGlyphSize: Integer; + function GetFocusRect(const R: TRect): TRect; override; + function GetTextAlignment: TAlignment; override; + function GetTextMargins: TRect; override; + procedure Paint; override; + property Checked: Boolean read FChecked write SetChecked default False; + property GroupIndex: Integer read FGroupIndex write SetGroupIndex default 0; + property SmartFocus default True; + property TabStop default True; + property OnChange: TNotifyEvent read FOnChange write FOnChange; + public + constructor Create(AOwner: TComponent); override; + end; + + TTBXRadioButton = class(TTBXCustomRadioButton) + published + property Align; + property Alignment; + property Anchors; + property AutoSize; + property BiDiMode; + property Caption; + property Checked; + property Color; + property Constraints; + property DragCursor; + property DragKind; + property DragMode; + property Enabled; + property Font; + property GroupIndex; + property Margins; +// property PaintOptions; + property ParentBiDiMode; + property ParentColor; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property ShowAccelChar; + property ShowHint; + property SmartFocus; + property TabOrder; + property TabStop; + property Visible; + property Wrapping; + property OnChange; + property OnClick; +{$IFDEF JR_D5} + property OnContextPopup; +{$ENDIF} + property OnDblClick; + property OnDragDrop; + property OnDragOver; + property OnEndDock; + property OnEndDrag; + property OnMouseDown; + property OnMouseEnter; + property OnMouseLeave; + property OnMouseMove; + property OnMouseUp; + property OnStartDock; + property OnStartDrag; + end; + + { TTBXPageScroller } + + TTBXPageScrollerOrientation = (tpsoVertical, tpsoHorizontal); + TTBXPageScrollerButtons = set of (tpsbPrev, tpsbNext); + + TTBXCustomPageScroller = class(TWinControl) + private + FAutoRangeCount: Integer; + FAutoRange: Boolean; + FAutoScroll: Boolean; + FButtonSize: Integer; + FMargin: Integer; + FOrientation: TTBXPageScrollerOrientation; + FPosition: Integer; + FPosRange: Integer; + FRange: Integer; + FScrollDirection: Integer; + FScrollCounter: Integer; + FScrollPending: Boolean; + FScrollTimer: TTimer; + FUpdatingButtons: Boolean; + FVisibleButtons: TTBXPageScrollerButtons; + procedure CalcAutoRange; + function IsRangeStored: Boolean; + procedure ScrollTimerTimer(Sender: TObject); + procedure SetButtonSize(Value: Integer); + procedure SetAutoRange(Value: Boolean); + procedure SetOrientation(Value: TTBXPageScrollerOrientation); + procedure SetPosition(Value: Integer); + procedure SetRange(Value: Integer); + procedure StopScrolling; + procedure ValidatePosition(var NewPos: Integer); + procedure CMParentColorChanged(var Message: TMessage); message CM_PARENTCOLORCHANGED; + procedure WMMouseMove(var Message: TWMMouseMove); message WM_MOUSEMOVE; + procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE; + procedure WMEraseBkgnd(var Message: TWmEraseBkgnd); message WM_ERASEBKGND; + procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST; + procedure WMNCLButtonDown(var Message: TWMNCLButtonDown); message WM_NCLBUTTONDOWN; + procedure WMNCMouseLeave(var Message: TMessage); message $2A2 {WM_NCMOUSELEAVE}; + procedure WMNCMouseMove(var Message: TWMNCMouseMove); message WM_NCMOUSEMOVE; + procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT; + procedure WMSize(var Message: TWMSize); message WM_SIZE; + protected + procedure AdjustClientRect(var Rect: TRect); override; + procedure AlignControls(AControl: TControl; var ARect: TRect); override; + function AutoScrollEnabled: Boolean; virtual; + procedure BeginScrolling(HitTest: Integer); + function CalcClientArea: TRect; + function CanAutoSize(var NewWidth, NewHeight: Integer): Boolean; override; + procedure ConstrainedResize(var MinWidth, MinHeight, MaxWidth, MaxHeight: Integer); override; + procedure CreateParams(var Params: TCreateParams); override; + procedure DoSetRange(Value: Integer); virtual; + procedure DrawNCArea(const DrawToDC: Boolean; const ADC: HDC; const Clip: HRGN); virtual; + procedure HandleScrollTimer; virtual; + procedure Loaded; override; + procedure RecalcNCArea; + procedure Resizing; virtual; + procedure UpdateButtons; + property AutoScroll: Boolean read FAutoScroll write FAutoScroll default True; + property ButtonSize: Integer read FButtonSize write SetButtonSize default 10; + property Orientation: TTBXPageScrollerOrientation read FOrientation write SetOrientation default tpsoVertical; + property Position: Integer read FPosition write SetPosition default 0; + property Margin: Integer read FMargin write FMargin default 0; + property Range: Integer read FRange write SetRange stored IsRangeStored; + public + constructor Create(AOwner: TComponent); override; + procedure DisableAutoRange; + procedure EnableAutoRange; + procedure ScrollToCenter(ARect: TRect); overload; + procedure ScrollToCenter(AControl: TControl); overload; + property AutoRange: Boolean read FAutoRange write SetAutoRange default False; + end; + + TTBXPageScroller = class(TTBXCustomPageScroller) + public + property Position; + published + property Align; + property Anchors; + property AutoRange; + property AutoScroll; + property ButtonSize; + property Color; + property Constraints; + property DockSite; + property DragCursor; + property DragKind; + property DragMode; + property DoubleBuffered; + property Enabled; + property Ctl3D; + property Font; + property Margin; + property Orientation; + property ParentBiDiMode; + property ParentColor; + property ParentCtl3D; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property Range; + property ShowHint; + property TabOrder; + property TabStop; + property Visible; + property OnCanResize; + property OnClick; + property OnConstrainedResize; +{$IFDEF JR_D5} + property OnContextPopup; +{$ENDIF} + property OnDblClick; + property OnDockDrop; + property OnDockOver; + property OnDragDrop; + property OnDragOver; + property OnEndDock; + property OnEndDrag; + property OnEnter; + property OnExit; + property OnGetSiteInfo; + property OnMouseDown; + property OnMouseMove; + property OnMouseUp; + property OnMouseWheel; + property OnMouseWheelDown; + property OnMouseWheelUp; + property OnResize; + property OnStartDock; + property OnStartDrag; + property OnUnDock; + end; + +implementation + +uses + TB2Common, TBXUtils, SysUtils; + +type + TWinControlAccess = class(TWinControl); + TDockAccess = class(TTBXMultiDock); + TTBDockableWindowAccess = class(TTBCustomDockableWindow); + +const + { Constants for TTBXDockablePanel-specific registry values. Do not localize! } + rvDockedWidth = 'DPDockedWidth'; + rvDockedHeight = 'DPDockedHeight'; + rvFloatingWidth = 'DPFloatingWidth'; + rvFloatingHeight = 'DPFloatingHeight'; + rvSplitWidth = 'DPSplitWidth'; + rvSplitHeight = 'DPSplitHeight'; + + HT_TB2k_Border = 2000; + HT_TB2k_Close = 2001; + HT_TB2k_Caption = 2002; + HT_TBX_SPLITRESIZELEFT = 86; + HT_TBX_SPLITRESIZERIGHT = 87; + HT_TBX_SPLITRESIZETOP = 88; + HT_TBX_SPLITRESIZEBOTTOM = 89; + DockedBorderSize = 2; + ScrollDelay = 300; + ScrollInterval = 75; + +var + MouseTimer: TTimer = nil; + MouseInObject: TTBXPanelObject = nil; + ObjectCount: Integer = 0; + + +procedure UpdateNCArea(Control: TWinControl; ViewType: Integer); +var + W, H: Integer; +begin + with Control do + begin + { Keep the client rect at the same position relative to screen } + W := ClientWidth; + H := ClientHeight; + SetWindowPos(Handle, 0, 0, 0, 0, 0, + SWP_FRAMECHANGED or SWP_NOACTIVATE or SWP_NOZORDER or SWP_NOREDRAW or SWP_NOMOVE or SWP_NOSIZE); + W := W - ClientWidth; + H := H - ClientHeight; + if (W <> 0) or (H <> 0) then + SetWindowPos(Handle, 0, Left - W div 2, Top - H div 2, Width + W, Height + H, + SWP_FRAMECHANGED or SWP_NOACTIVATE or SWP_NOZORDER); + RedrawWindow(Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or + RDW_ERASE or RDW_UPDATENOW or RDW_ALLCHILDREN); + end; +end; + +function GetMinControlHeight(Control: TControl): Integer; +begin + if Control.Align = alClient then + begin + if Control is TTBXPanelObject then Result := TTBXPanelObject(Control).GetMinHeight + else Result := Control.Constraints.MinHeight; + end + else Result := Control.Height; +end; + +function GetMinControlWidth(Control: TControl): Integer; +begin + if Control.Align = alClient then + begin + if Control is TTBXPanelObject then Result := TTBXPanelObject(Control).GetMinWidth + else Result := Control.Constraints.MinWidth; + end + else Result := Control.Width; +end; + +function IsActivated(AWinControl: TWinControl): Boolean; +var + C: TWinControl; +begin + { Returns true if AWinControl contains a focused control } + C := Screen.ActiveControl; + Result := True; + while C <> nil do + if C = AWinControl then Exit + else C := C.Parent; + Result := False; +end; + +procedure ApplyMargins(var R: TRect; const Margins: TTBXControlMargins); overload; +begin + with Margins do + begin + Inc(R.Left, Left); Inc(R.Top, Top); + Dec(R.Right, Right); Dec(R.Bottom, Bottom); + end; +end; + +procedure ApplyMargins(var R: TRect; const Margins: TRect); overload; +begin + with Margins do + begin + Inc(R.Left, Left); Inc(R.Top, Top); + Dec(R.Right, Right); Dec(R.Bottom, Bottom); + end; +end; + +procedure DrawFocusRect2(Canvas: TCanvas; const R: TRect); +var + DC: HDC; + C1, C2: TColor; +begin + DC := Canvas.Handle; + C1 := SetTextColor(DC, clBlack); + C2 := SetBkColor(DC, clWhite); + Canvas.DrawFocusRect(R); + SetTextColor(DC, C1); + SetBkColor(DC, C2); +end; + +function GetRealAlignment(Control: TControl): TAlignment; +const + ReverseAlignment: array [TAlignment] of TAlignment = (taRightJustify, taLeftJustify, taCenter); +begin + Result := Control.GetControlsAlignment; + if Control.UseRightToLeftAlignment then Result := ReverseAlignment[Result]; +end; + +function CompareEffectiveDockPos(const Item1, Item2, ExtraData: Pointer): Integer; far; +begin + Result := TTBCustomDockableWindow(Item1).EffectiveDockPos - TTBCustomDockableWindow(Item2).EffectiveDockPos; +end; + +function CompareDockPos(const Item1, Item2, ExtraData: Pointer): Integer; far; +var + P1, P2: Integer; +begin + P1 := TTBCustomDockableWindow(Item1).DockPos; + P2 := TTBCustomDockableWindow(Item2).DockPos; + if csLoading in TTBCustomDockableWindow(Item1).ComponentState then + begin + if P1 < 0 then P1 := MaxInt; + if P2 < 0 then P2 := MaxInt; + end; + Result := P1 - P2; +end; + + +//----------------------------------------------------------------------------// + +{ TTBXControlMargins } + +procedure TTBXControlMargins.Assign(Src: TPersistent); +begin + inherited; + Modified; +end; + +procedure TTBXControlMargins.Modified; +begin + if Assigned(FOnChange) then FOnChange(Self); +end; + +procedure TTBXControlMargins.SetBottom(Value: Integer); +begin + if FBottom <> Value then + begin + FBottom := Value; + Modified; + end; +end; + +procedure TTBXControlMargins.SetLeft(Value: Integer); +begin + if FLeft <> Value then + begin + FLeft := Value; + Modified; + end; +end; + +procedure TTBXControlMargins.SetRight(Value: Integer); +begin + if FRight <> Value then + begin + FRight := Value; + Modified; + end; +end; + +procedure TTBXControlMargins.SetTop(Value: Integer); +begin + if FTop <> Value then + begin + FTop := Value; + Modified; + end; +end; + +//----------------------------------------------------------------------------// + +{ TTBXMultiDock } + +function TTBXMultiDock.Accepts(ADockableWindow: TTBCustomDockableWindow): Boolean; +begin + Result := ADockableWindow is TTBXDockablePanel; +end; + +procedure TTBXMultiDock.ArrangeToolbars; +const + DSGN_DROPZONESIZE = 16; +type + TPosRec = record + Panel: TTBXDockablePanel; + MinSize, MaxSize, Size, Pos: Integer; + CanStretch: Boolean; + end; +var + NewDockList: TList; + PosData: array of TPosRec; + LeftRight: Boolean; + I, J, K, L, DragIndex, ResizeIndex, ForcedWidth: Integer; + EmptySize, ClientW, ClientH, DockSize, TotalSize, TotalMinimumSize, TotalMaximumSize: Integer; + DragIndexPos: Integer; + T: TTBXDockablePanel; + S: TPoint; + CurRowPixel, CurRowSize: Integer; + StretchPanelCount: Integer; + Stretching: Boolean; + AccDelta, Acc: Extended; + Delta, IntAcc: Integer; + MinWidth, MaxWidth, EffectiveMinWidth, EffectiveMaxWidth: Integer; + R: TRect; + + procedure GetSizes(Panel: TTBXDockablePanel; out Size, MinSize, MaxSize: Integer); + var + Sz: TPoint; + MinWidth, MinHeight, MaxWidth, MaxHeight: Integer; + begin + Panel.GetBaseSize(Sz); + if LeftRight then + begin + Size := Panel.SplitHeight; + end + else + begin + Size := Panel.SplitWidth; + end; + MinWidth := 0; MaxWidth := 0; MinHeight := 0; MaxHeight := 0; + Panel.ConstrainedResize(MinWidth, MinHeight, MaxWidth, MaxHeight); + if not LeftRight then begin MinSize := MinWidth; MaxSize := MaxWidth end + else begin MinSize := MinHeight; MaxSize := MaxHeight end; + if MaxSize < MinSize then + begin + MaxSize := DockSize; + if MaxSize < MinSize then MaxSize := MinSize; + end; + if Size < MinSize then Size := MinSize + else if Size > MaxSize then Size := MaxSize; + end; + + procedure GetMinMaxWidth(Panel: TTBXDockablePanel; out Min, Max: Integer); + var + MinWidth, MinHeight, MaxWidth, MaxHeight: Integer; + begin + MinWidth := 0; MaxWidth := 0; MinHeight := 0; MaxHeight := 0; + Panel.ConstrainedResize(MinWidth, MinHeight, MaxWidth, MaxHeight); + if LeftRight then begin Min := MinWidth; Max := MaxWidth end + else begin Min := MinHeight; Max := MaxHeight end; + end; + +begin + if (DisableArrangeToolbars > 0) or (csLoading in ComponentState) then + begin + ArrangeToolbarsNeeded := True; + Exit; + end; + NewDockList := nil; + PosData := nil; + DisableArrangeToolbars := DisableArrangeToolbars + 1; + try + LeftRight := Position in [dpLeft, dpRight]; + + if not HasVisibleToolbars then + begin + EmptySize := Ord(FixAlign); + if csDesigning in ComponentState then EmptySize := 7; + if not LeftRight then ChangeWidthHeight(Width, EmptySize) + else ChangeWidthHeight(EmptySize, Height); + Exit; + end; + + ClientW := Width - NonClientWidth; + if ClientW < 0 then ClientW := 0; + ClientH := Height - NonClientHeight; + if ClientH < 0 then ClientH := 0; + if not LeftRight then DockSize := ClientW + else DockSize := ClientH; + + { Leave some space for dropping other panels in design time } + if csDesigning in ComponentState then Dec(DockSize, DSGN_DROPZONESIZE); + if DockSize < 0 then DockSize := 0; + + + for I := DockList.Count - 1 downto 0 do + begin + T := DockList[I]; + if csDestroying in T.ComponentState then + begin + DockList.Delete(I); + DockVisibleList.Remove(T); + end; + end; + + { always limit to one row } + for I := 0 to DockList.Count - 1 do + with TTBCustomDockableWindow(DockList[I]) do DockRow := 0; + + { Copy DockList to NewDockList, and ensure it is in correct ordering + according to DockRow/DockPos } + NewDockList := TList.Create; + NewDockList.Count := DockList.Count; + for I := 0 to NewDockList.Count - 1 do NewDockList[I] := DockList[I]; + I := NewDockList.IndexOf(DragToolbar); + ListSortEx(NewDockList, CompareDockPos, nil); + DragIndex := NewDockList.IndexOf(DragToolbar); + if (I <> -1) and DragSplitting then + begin + { When splitting, don't allow the toolbar being dragged to change + positions in the dock list } + NewDockList.Move(DragIndex, I); + DragIndex := I; + end; + ListSortEx(DockVisibleList, CompareDockPos, nil); + + { Create a temporary array that holds new position data for the toolbars + and get size info } + SetLength(PosData, 0); + for I := 0 to NewDockList.Count - 1 do + begin + T := NewDockList[I]; + if ToolbarVisibleOnDock(T) then + begin + SetLength(PosData, Length(PosData) + 1); + with PosData[Length(PosData) - 1] do + begin + Panel := T as TTBXDockablePanel; + Pos := Panel.DockPos; + GetSizes(Panel, Size, MinSize, MaxSize{, OrigWidth}); + end; + end; + end; + + { Update drag index... } + if DragIndex >= 0 then + for I := 0 to Length(PosData) - 1 do + if NewDockList.IndexOf(PosData[I].Panel) = DragIndex then + begin + DragIndex := I; + Break; + end; + + { Count total sizes and set initial positions } + DragIndexPos := 0; + TotalSize := 0; TotalMinimumSize := 0; TotalMaximumSize := 0; + for I := 0 to Length(PosData) - 1 do + with PosData[I] do + begin + if I = DragIndex then DragIndexPos := Panel.DockPos; + Pos := TotalSize; + Inc(TotalSize, Size); + Inc(TotalMinimumSize, MinSize); + Inc(TotalMaximumSize, MaxSize); + end; + + if DockSize <> TotalSize then + begin + begin + { Proportionally stretch and shrink toolbars } + + if TotalMinimumSize >= DockSize then + for I := 0 to Length(PosData) - 1 do PosData[I].Size := PosData[I].MinSize + else if TotalMaximumSize <= DockSize then + for I := 0 to Length(PosData) - 1 do PosData[I].Size := PosData[I].MaxSize + else + begin + Delta := DockSize - TotalSize; + StretchPanelCount := 0; + Stretching := TotalSize < DockSize; // otherwise, shrinking + + for I := 0 to Length(PosData) - 1 do + with PosData[I] do + begin + if Stretching then CanStretch := Size < MaxSize + else CanStretch := Size > MinSize; + if CanStretch then Inc(StretchPanelCount); + end; + Assert(StretchPanelCount > 0); + + while Delta <> 0 do + begin + Assert(StretchPanelCount <> 0); + AccDelta := Delta / StretchPanelCount; + Acc := 0; IntAcc := 0; + for I := 0 to Length(PosData) - 1 do + with PosData[I] do if CanStretch then + begin + Acc := Acc + AccDelta; + Inc(Size, Round(Acc) - IntAcc); + IntAcc := Round(Acc); + end; + + TotalSize := 0; + for I := 0 to Length(PosData) - 1 do + with PosData[I] do + begin + if CanStretch then + if Stretching then + begin + if Size > MaxSize then + begin + Size := MaxSize; + CanStretch := False; + Dec(StretchPanelCount); + end; + end + else + begin + if Size < MinSize then + begin + Size := MinSize; + CanStretch := False; + Dec(StretchPanelCount); + end; + end; + Inc(TotalSize, Size); + end; + Delta := DockSize - TotalSize; + end; + end; + + TotalSize := 0; + for I := 0 to Length(PosData) - 1 do + with PosData[I] do + begin + Pos := TotalSize; + Inc(TotalSize, Size); + end; + end + end; + + for I := 0 to NewDockList.Count - 1 do + begin + for J := 0 to Length(PosData) - 1 do + with PosData[J] do + begin + if Panel = NewDockList[I] then + begin + Panel.EffectiveDockRowAccess := 0; + Panel.EffectiveDockPosAccess := PosData[J].Pos; + end; + end; + if CommitNewPositions then + begin + T := NewDockList[I]; + T.DockRow := T.EffectiveDockRow; + T.DockPos := T.EffectiveDockPos; + DockList[I] := NewDockList[I]; + end; + end; + + ResizeIndex := -1; + for I := 0 to Length(PosData) - 1 do + with PosData[I] do + if Panel is TTBXDockablePanel and Panel.IsResizing then + begin + ResizeIndex := I; + Break; + end; + + { Calculate the size of the dock } + if ResizeIndex < 0 then + begin + CurRowSize := 0; + for I := 0 to Length(PosData) - 1 do + with PosData[I] do + begin + Panel.CurrentSize := Size; + Panel.GetBaseSize(S); + if LeftRight then K := S.X + Panel.CalcNCSizes.X else K := S.Y + Panel.CalcNCSizes.Y; + if (DragIndex = I) and (Length(PosData) > 1) and (LastValidRowSize > 0) then K := 0; + if K > CurRowSize then CurRowSize := K; + end; + end + else + begin + EffectiveMinWidth := 0; + EffectiveMaxWidth := 0; + for I := 0 to Length(PosData) - 1 do + begin + GetMinMaxWidth(PosData[I].Panel, MinWidth, MaxWidth); + if MinWidth > EffectiveMinWidth then EffectiveMinWidth := MinWidth; + if (MaxWidth >= MinWidth) and (MaxWidth < EffectiveMaxWidth) then EffectiveMaxWidth := MaxWidth; + end; + if LeftRight then CurRowSize := PosData[ResizeIndex].Panel.Width + else CurRowSize := PosData[ResizeIndex].Panel.Height; + if (EffectiveMaxWidth > EffectiveMinWidth) and (CurRowSize > EffectiveMaxWidth) then CurRowSize := EffectiveMaxWidth; + if CurRowSize < EffectiveMinWidth then CurRowSize := EffectiveMinWidth; + end; + if CurRowSize > 0 then LastValidRowSize := CurRowSize; + + { Now actually move the toolbars } + for I := 0 to Length(PosData) - 1 do + with PosData[I] do + begin + if LeftRight then R := Bounds(0, Pos, CurRowSize, Size) + else R := Bounds(Pos, 0, Size, CurRowSize); + Panel.BoundsRect := R; + { This is to fix some weird behavior in design time } + if csDesigning in ComponentState then + with R do MoveWindow(Panel.Handle, Left, Top, Right - Left, Bottom - Top, True); + end; + + { Set the size of the dock } + if not LeftRight then ChangeWidthHeight(Width, CurRowSize + NonClientHeight) + else ChangeWidthHeight(CurRowSize + NonClientWidth, Height); + + finally + DisableArrangeToolbars := DisableArrangeToolbars - 1; + ArrangeToolbarsNeeded := False; + CommitNewPositions := False; + SetLength(PosData, 0); + NewDockList.Free; + end; +end; + +procedure TTBXMultiDock.Paint; +var + R: TRect; +begin + { Draw dotted border in design mode } + if csDesigning in ComponentState then + begin + R := ClientRect; + with Canvas do + begin + Pen.Style := psSolid; + Pen.Color := clBtnHighlight; + Brush.Color := clBtnHighlight; + Brush.Style := bsFDiagonal; + Rectangle(R.Left, R.Top, R.Right, R.Bottom); + Pen.Style := psSolid; + end; + end; +end; + +procedure TTBXMultiDock.ResizeVisiblePanels(NewSize: Integer); +var + I: Integer; +begin + BeginUpdate; + try + for I := 0 to DockVisibleList.Count - 1 do + if Position in [dpLeft, dpRight] then + TTBXDockablePanel(DockVisibleList[I]).DockedWidth := NewSize + else + TTBXDockablePanel(DockVisibleList[I]).DockedHeight := NewSize; + finally + EndUpdate; + end; +end; + +procedure TTBXMultiDock.ValidateInsert(AComponent: TComponent); +begin + if not (AComponent is TTBXDockablePanel) then + raise EInvalidOperation.CreateFmt('Cannot insert %s into TTBXMultiDock', [AComponent.ClassName]); +end; + +//----------------------------------------------------------------------------// + +{ TTBXPanelObject } + +procedure TTBXPanelObject.CMEnabledChanged(var Message: TMessage); +begin + inherited; + if not Enabled and FMouseInControl then + begin + FMouseInControl := False; + RemoveMouseTimer; + DoMouseLeave; + Invalidate; + Perform(WM_CANCELMODE, 0, 0); + end; +end; + +procedure TTBXPanelObject.CMParentColorChanged(var Message: TMessage); +begin + if Message.WParam = 0 then + begin + Message.WParam := 1; + Message.LParam := GetEffectiveColor(Parent); + end; + inherited; + Invalidate; +end; + +constructor TTBXPanelObject.Create(AOwner: TComponent); +begin + inherited; + ControlStyle := ControlStyle + [csAcceptsControls, csClickEvents, csDoubleClicks] - [csOpaque]; + if MouseTimer = nil then + begin + MouseTimer := TTimer.Create(nil); + MouseTimer.Enabled := False; + MouseTimer.Interval := 125; + end; + Inc(ObjectCount); + ParentColor := False; + Color := clNone; + AddThemeNotification(Self); +end; + +procedure TTBXPanelObject.CreateParams(var Params: TCreateParams); +begin + inherited CreateParams(Params); + if not (csDesigning in ComponentState) then + with Params.WindowClass do style := style and not (CS_HREDRAW or CS_VREDRAW); +// if cpoTransparent in PaintOptions then +// Params.ExStyle := Params.ExStyle or WS_EX_TRANSPARENT; +end; + +destructor TTBXPanelObject.Destroy; +begin + RemoveThemeNotification(Self); + RemoveMouseTimer; + Dec(ObjectCount); + if ObjectCount = 0 then + begin + MouseTimer.Free; + MouseTimer := nil; + end; + inherited; +end; + +procedure TTBXPanelObject.DoMouseEnter; +begin + if Assigned(FOnMouseEnter) then FOnMouseEnter(Self); +end; + +procedure TTBXPanelObject.DoMouseLeave; +begin + if Assigned(FOnMouseLeave) then FOnMouseLeave(Self); +end; + +function TTBXPanelObject.GetMinHeight: Integer; +begin + Result := Height; +end; + +function TTBXPanelObject.GetMinWidth: Integer; +begin + Result := Width; +end; + +procedure TTBXPanelObject.KeyDown(var Key: Word; Shift: TShiftState); +begin + inherited; + if SpaceAsClick and (Key = VK_SPACE) then + begin + FPushed := True; + Invalidate; + end; +end; + +procedure TTBXPanelObject.KeyUp(var Key: Word; Shift: TShiftState); +begin + if SpaceAsClick and Pushed and (Key = VK_SPACE) then + begin + FPushed := False; + Click; + Invalidate; + end; + inherited; +end; + +procedure TTBXPanelObject.MakeVisible; + + procedure HandleScroll(SW: TControl); + begin + if SW is TScrollingWinControl then TScrollingWinControl(SW).ScrollInView(Self) + else if SW is TTBXCustomPageScroller then TTBXCustomPageScroller(SW).ScrollToCenter(Self) + else if (Parent <> nil) and (Parent <> SW) then HandleScroll(Parent); + end; + +begin + HandleScroll(Parent); +end; + +procedure TTBXPanelObject.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); +begin + if (Button = mbLeft) and not FPushed then + begin + FPushed := True; + Invalidate; + end; + if Enabled then MouseEntered; + if not SmartFocus and CanFocus then SetFocus + else if SmartFocus and CanFocus and Assigned(Parent) and IsActivated(Parent) then + begin + FDisableScroll := True; + SetFocus; + FDisableScroll := False; + end; + inherited; +end; + +procedure TTBXPanelObject.MouseEntered; +begin + if Enabled and not FMouseInControl then + begin + FMouseInControl := True; + DoMouseEnter; + end; +end; + +procedure TTBXPanelObject.MouseLeft; +begin + if Enabled and FMouseInControl then + begin + FMouseInControl := False; + RemoveMouseTimer; + DoMouseLeave; + Invalidate; + end; +end; + +procedure TTBXPanelObject.MouseMove(Shift: TShiftState; X, Y: Integer); +var + P: TPoint; + DragTarget: TControl; +begin + P := ClientToScreen(Point(X, Y)); + DragTarget := FindDragTarget(P, True); + if (MouseInObject <> Self) and (DragTarget = Self) then + begin + if Assigned(MouseInObject) then MouseInObject.MouseLeft; + MouseInObject := Self; + MouseTimer.OnTimer := MouseTimerHandler; + MouseTimer.Enabled := True; + MouseEntered; + end + else if (DragTarget <> Self) and (Mouse.Capture = Handle) and FMouseInControl then + begin + MouseLeft; + end; + inherited; +end; + +procedure TTBXPanelObject.MouseTimerHandler(Sender: TObject); +var + P: TPoint; +begin + GetCursorPos(P); + if FindDragTarget(P, True) <> Self then MouseLeft; +end; + +procedure TTBXPanelObject.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); +begin + FPushed := False; + Invalidate; + inherited; +end; + +procedure TTBXPanelObject.RemoveMouseTimer; +begin + if MouseInObject = Self then + begin + MouseTimer.Enabled := False; + MouseInObject := nil; + end; +end; + +procedure TTBXPanelObject.SetPaintOptions(Value: TControlPaintOptions); +begin + if Value <> FPaintOptions then + begin + FPaintOptions := Value; + if cpoDoubleBuffered in Value then DoubleBuffered := True + else DoubleBuffered := False; + RecreateWnd; + end; +end; + +procedure TTBXPanelObject.TBMThemeChange(var Message); +var + R: TRect; +begin + if HandleAllocated then + begin + R := ClientRect; + InvalidateRect(Handle, @R, True); + end; +end; + +procedure TTBXPanelObject.WMEraseBkgnd(var Message: TMessage); +begin + if not DoubleBuffered or (Message.wParam = Message.lParam) then + begin + if Color = clNone then + DrawParentBackground(Self, TWMEraseBkgnd(Message).DC, ClientRect) + else + FillRectEx(TWMEraseBkgnd(Message).DC, ClientRect, Color); + end; + Message.Result := 1; +end; + +procedure TTBXPanelObject.WMKillFocus(var Message: TMessage); +begin + FPushed := False; + Invalidate; +end; + +procedure TTBXPanelObject.WMSetFocus(var Message: TMessage); +begin + inherited; + if not FDisableScroll then MakeVisible; + Invalidate; +end; + +//----------------------------------------------------------------------------// + +{ TTBXDockablePanel } + +procedure TTBXDockablePanel.AdjustClientRect(var Rect: TRect); +begin + inherited AdjustClientRect(Rect); + if BorderSize <> 0 then InflateRect(Rect, -BorderSize, -BorderSize); +end; + +procedure TTBXDockablePanel.BeginDockedSizing(HitTest: Integer); +var + OrigPos, OldPos: TPoint; + Msg: TMsg; + DockRect, DragRect, OrigDragRect, OldDragRect: TRect; + NCSizes: TPoint; + EdgeRect, OldEdgeRect: TRect; + ScreenDC: HDC; + EraseEdgeRect, CommitResizing: Boolean; + Form: TCustomForm; + LeftRight: Boolean; + + function RectToScreen(const R: TRect): TRect; + begin + Result := R; + Result.TopLeft := Parent.ClientToScreen(Result.TopLeft); + Result.BottomRight := Parent.ClientToScreen(Result.BottomRight); + end; + + function RectToClient(const R: TRect): TRect; + begin + Result := R; + Result.TopLeft := Parent.ScreenToClient(Result.TopLeft); + Result.BottomRight := Parent.ScreenToClient(Result.BottomRight); + end; + + function GetEdgeRect(const R: TRect): TRect; + begin + Result := DockRect; + case HitTest of + HTLEFT: begin Result.Left := R.Left - 1; Result.Right := R.Left + 1 end; + HTRIGHT: begin Result.Left := R.Right - 1; Result.Right := R.Right + 1 end; + HTTOP: begin Result.Top := R.Top - 1; Result.Bottom := R.Top + 1 end; + HTBOTTOM: begin Result.Top := R.Bottom - 1; Result.Bottom := R.Bottom + 1 end; + end; + end; + + procedure MouseMoved; + var + Pos: TPoint; + NewWidth: Integer; + NewHeight: Integer; + begin + GetCursorPos(Pos); + if (Pos.X = OldPos.X) and (Pos.Y = OldPos.Y) then Exit; + DragRect := OrigDragRect; + case HitTest of + HTLEFT: + begin + NewWidth := DragRect.Right - (DragRect.Left + Pos.X - OrigPos.X - 1); + if DoDockedResizing(False, NewWidth) then + DragRect.Left := DragRect.Right - NewWidth; + end; + HTRIGHT: + begin + NewWidth := (DragRect.Right + Pos.X - OrigPos.X) - DragRect.Left; + if DoDockedResizing(False, NewWidth) then + DragRect.Right := DragRect.Left + NewWidth; + end; + HTTOP: + begin + NewHeight := DragRect.Bottom - (DragRect.Top + Pos.Y - OrigPos.Y - 1); + if DoDockedResizing(True, NewHeight) then + DragRect.Top := DragRect.Bottom - NewHeight; + end; + HTBOTTOM: + begin + NewHeight := (DragRect.Bottom + Pos.Y - OrigPos.Y) - DragRect.Top; + if DoDockedResizing(True, NewHeight) then + DragRect.Bottom := DragRect.Top + NewHeight; + end; + end; + if not CompareMem(@OldDragRect, @DragRect, SizeOf(TRect)) then + begin + if SmoothDockedResize then + begin + CurrentDock.BeginUpdate; + if HitTest in [HTLEFT, HTRIGHT] then + begin + BlockSizeUpdate := True; + DockedWidth := DragRect.Right - DragRect.Left - NCSizes.X; + end + else + begin + BlockSizeUpdate := True; + DockedHeight := DragRect.Bottom - DragRect.Top - NCSizes.Y; + end; + BlockSizeUpdate := False; + CurrentDock.EndUpdate; + end + else + begin + EdgeRect := GetEdgeRect(DragRect); + DrawDraggingOutline(ScreenDC, EdgeRect, OldEdgeRect); + OldEdgeRect := EdgeRect; + EraseEdgeRect := True; + end; + OldPos := Pos; + OldDragRect := DragRect; + end; + end; + +begin + LeftRight := HitTest in [HTLEFT, HTRIGHT]; + if DoBeginDockedResizing(HitTest in [HTTOP, HTBOTTOM]) then + try + SetCapture(Handle); + ScreenDC := GetDC(0); + OrigDragRect := RectToScreen(BoundsRect); + DockRect := RectToScreen(CurrentDock.ClientRect); + OldDragRect := Rect(0, 0, 0, 0); + NCSizes := CalcNCSizes; + DragRect := OrigDragRect; + GetCursorPos(OrigPos); + OldPos := OrigPos; + FIsResizing := True; + + if not SmoothDockedResize then + begin + EdgeRect := GetEdgeRect(DragRect); + DrawDraggingOutline(ScreenDC, EdgeRect, Rect(0, 0, 0, 0)); + OldEdgeRect := EdgeRect; + EraseEdgeRect := True; + end + else EraseEdgeRect := False; + + while GetCapture = Handle do + begin + case Integer(GetMessage(Msg, 0, 0, 0)) of + -1: Break; + 0: begin + PostQuitMessage(Msg.WParam); + Break; + end; + end; + case Msg.Message of + WM_KEYDOWN, WM_KEYUP: if Msg.WParam = VK_ESCAPE then Break; + WM_MOUSEMOVE: MouseMoved; + WM_LBUTTONDOWN, WM_LBUTTONDBLCLK:Break; + WM_LBUTTONUP: Break; + WM_RBUTTONDOWN..WM_MBUTTONDBLCLK:; + else + TranslateMessage(Msg); + DispatchMessage(Msg); + end; + end; + finally + if GetCapture = Handle then ReleaseCapture; + CommitResizing := DoEndDockedResizing(HitTest in [HTTOP, HTBOTTOM]); + if EraseEdgeRect then + begin + DrawDraggingOutline(ScreenDC, Rect(0, 0, 0, 0), OldEdgeRect); + if CommitResizing then with OldDragRect do + begin + BlockSizeUpdate := True; + if LeftRight then DockedWidth := Right - Left - NCSizes.X + else DockedHeight := Bottom - Top - NCSizes.Y; + BlockSizeUpdate := False; + end; + end + else if not CommitResizing then + begin + BlockSizeUpdate := True; + BoundsRect := RectToClient(OrigDragRect); + BlockSizeUpdate := False; + end; + ReleaseDC(0, ScreenDC); + FIsResizing := False; + if csDesigning in ComponentState then + begin + Form := GetParentForm(Self); + if (Form <> nil) and (Form.Designer <> nil) then Form.Designer.Modified; + end; + end; +end; + +procedure TTBXDockablePanel.BeginSplitResizing(HitTest: Integer); +type + TPosRec = record + Panel: TTBXDockablePanel; + OrigPos, OrigSize, OrigWidth, Pos, Size, MinSize, MaxSize: Integer; + end; +var + Dock: TDockAccess; + PosData: array of TPosRec; + I: Integer; + LeftRight, Smooth, CommitResizing: Boolean; + DockSize, TotalSize, TotalMinSize, TotalMaxSize: Integer; + OrigCursorPos, OldCursorPos: TPoint; + Msg: TMsg; + EffectiveIndex: Integer; + EffectivePanel: TTBXDockablePanel; + PanelRect, DockRect, EdgeRect, OrigEdgeRect, OldEdgeRect: TRect; + EdgePosition: TTBDockPosition; + ScreenDC: HDC; + EraseEdgeRect: Boolean; + Form: TCustomForm; + Delta: Integer; + + procedure GetSizes(Panel: TTBXDockablePanel; out Size, MinSize, MaxSize, W: Integer); + var + Sz: TPoint; + MinWidth, MinHeight, MaxWidth, MaxHeight: Integer; + begin + Panel.GetBaseSize(Sz); + if not LeftRight then + begin + Size := Panel.Width; + W := Panel.Height; + end + else + begin + Size := Panel.Height; + W := Panel.Width; + end; + MinWidth := 0; MaxWidth := 0; MinHeight := 0; MaxHeight := 0; + Panel.ConstrainedResize(MinWidth, MinHeight, MaxWidth, MaxHeight); + if not LeftRight then begin MinSize := MinWidth; MaxSize := MaxWidth; end + else begin MinSize := MinHeight; MaxSize := MaxHeight end; + if MaxSize < MinSize then + begin + MaxSize := DockSize; + if MaxSize < MinSize then MaxSize := MinSize; + end; + if Size < MinSize then Size := MinSize + else if Size > MaxSize then Size := MaxSize; + end; + + procedure BlockSizeUpdates(DoBlock: Boolean); + var + I: Integer; + begin + for I := 0 to Length(PosData) - 1 do + with PosData[I].Panel do BlockSizeUpdate := DoBlock; + end; + + procedure SetSizes(RestoreOriginal: Boolean = False); + var + I: Integer; + R: TRect; + begin + Dock.BeginUpdate; + BlockSizeUpdates(True); + for I := 0 to Length(PosData) - 1 do + with PosData[I] do + begin + if LeftRight then + begin + if RestoreOriginal then R := Bounds(0, OrigPos, OrigWidth, OrigSize) + else R := Bounds(0, Pos, OrigWidth, Size); + end + else + begin + if RestoreOriginal then R := Bounds(OrigPos, 0, OrigSize, OrigWidth) + else R := Bounds(Pos, 0, Size, OrigWidth); + end; + if LeftRight then Panel.SplitHeight := Size + else Panel.SplitWidth := Size; + Panel.BoundsRect := R; + + { This is to fix some weird behavior in design time } + if csDesigning in ComponentState then + with R do MoveWindow(Panel.Handle, Left, Top, Right - Left, Bottom - Top, True); + end; + BlockSizeUpdates(False); + Dock.EndUpdate; + end; + + function GetEdgeRect(R: TRect): TRect; + begin + Result := R; + case EdgePosition of + dpRight: begin Result.Left := Result.Right - 1; Inc(Result.Right); end; + dpBottom: begin Result.Top := Result.Bottom - 1; Inc(Result.Bottom); end; + end; + end; + + function RectToScreen(const R: TRect): TRect; + begin + Result := R; + Result.TopLeft := Parent.ClientToScreen(Result.TopLeft); + Result.BottomRight := Parent.ClientToScreen(Result.BottomRight); + end; + + function RectToClient(const R: TRect): TRect; + begin + Result := R; + Result.TopLeft := Parent.ScreenToClient(Result.TopLeft); + Result.BottomRight := Parent.ScreenToClient(Result.BottomRight); + end; + + procedure MouseMoved; + var + CursorPos: TPoint; + I, P, Acc: Integer; + begin + GetCursorPos(CursorPos); + if (CursorPos.X = OldCursorPos.X) and (CursorPos.Y = OldCursorPos.Y) then Exit; + case EdgePosition of + dpRight: Delta := CursorPos.X - OrigCursorPos.X; + dpBottom: Delta := CursorPos.Y - OrigCursorPos.Y; + end; + if Delta = 0 then Exit; + + for I := 0 to Length(PosData) - 1 do + with PosData[I] do + begin + Pos := OrigPos; + Size := OrigSize; + end; + + Acc := Delta; + for I := EffectiveIndex downto 0 do + with PosData[I] do + begin + Inc(Size, Acc); Acc := 0; + if Size > MaxSize then + begin + Acc := Size - MaxSize; + Size := MaxSize; + end + else if Size < MinSize then + begin + Acc := Size - MinSize; + Size := MinSize; + end; + if Acc = 0 then Break; + end; + + if Acc <> 0 then Dec(Delta, Acc); + + Acc := Delta; + for I := EffectiveIndex + 1 to Length(PosData) - 1 do + with PosData[I] do + begin + Dec(Size, Acc); Acc := 0; + if Size > MaxSize then + begin + Acc := MaxSize - Size; + Size := MaxSize; + end + else if Size < MinSize then + begin + Acc := MinSize - Size; + Size := MinSize; + end; + if Acc = 0 then Break; + end; + + if Acc <> 0 then + begin + Dec(Delta, Acc); + for I := 0 to EffectiveIndex do with PosData[I] do Size := OrigSize; + Acc := Delta; + for I := EffectiveIndex downto 0 do + with PosData[I] do + begin + Inc(Size, Acc); Acc := 0; + if Size > MaxSize then + begin + Acc := Size - MaxSize; + Size := MaxSize; + end + else if Size < MinSize then + begin + Acc := Size - MinSize; + Size := MinSize; + end; + if Acc = 0 then Break; + end; + end; + + P := 0; + for I := 0 to Length(PosData) - 1 do + with PosData[I] do begin Pos := P; Inc(P, Size); end; + + if Smooth then SetSizes + else + begin + EdgeRect := DockRect; + if LeftRight then + begin + Inc(EdgeRect.Top, PosData[EffectiveIndex + 1].Pos - 1); + EdgeRect.Bottom := EdgeRect.Top + 2; + end + else + begin + Inc(EdgeRect.Left, PosData[EffectiveIndex + 1].Pos - 1); + EdgeRect.Right := EdgeRect.Left + 2; + end; + DrawDraggingOutline(ScreenDC, EdgeRect, OldEdgeRect); + EraseEdgeRect := True; + end; + + OldCursorPos := CursorPos; + OldEdgeRect := EdgeRect; + end; + +begin + if not (CurrentDock is TTBXMultiDock) then Exit; + Dock := TDockAccess(CurrentDock); + + SetLength(PosData, Dock.DockVisibleList.Count); + for I := 0 to Dock.DockVisibleList.Count - 1 do + with PosData[I] do + begin + { only docks with TTBXDockablePanels can be resized } + if not (TTBCustomDockableWindow(Dock.DockVisibleList[I]) is TTBXDockablePanel) then Exit; + Panel := TTBXDockablePanel(Dock.DockVisibleList[I]); + end; + + LeftRight := Dock.Position in [dpLeft, dpRight]; + if not LeftRight then DockSize := Dock.Width - Dock.NonClientWidth + else DockSize := Dock.Height - Dock.NonClientHeight; + if DockSize < 0 then DockSize := 0; + + { See if we can actually resize anything } + TotalSize := 0; TotalMinSize := 0; TotalMaxSize := 0; + for I := 0 to Length(PosData) - 1 do + with PosData[I] do + begin + GetSizes(Panel, Size, MinSize, MaxSize, OrigWidth); + OrigSize := Size; + OrigPos := TotalSize; + Pos := OrigPos; + Inc(TotalSize, Size); + Inc(TotalMinSize, MinSize); + Inc(TotalMaxSize, MaxSize); + end; + if (TotalMinSize > DockSize) or (TotalMaxSize < DockSize) then Exit; + + { Get effective edge and panel } + case HitTest of + HT_TBX_SPLITRESIZETOP: EdgePosition := dpTop; + HT_TBX_SPLITRESIZEBOTTOM: EdgePosition := dpBottom; + HT_TBX_SPLITRESIZELEFT: EdgePosition := dpLeft; + else + EdgePosition := dpRight; + end; + Smooth := True; + EffectivePanel := Self; + for I := 0 to Length(PosData) - 1 do + with PosData[I] do + begin + if not Panel.SmoothDockedResize then Smooth := False; + if Panel = Self then + begin + EffectiveIndex := I; + if EdgePosition in [dpLeft, dpTop] then + begin + Assert(I > 0); + EffectivePanel := PosData[I - 1].Panel; + if EdgePosition = dpLeft then EdgePosition := dpRight + else EdgePosition := dpBottom; + Dec(EffectiveIndex); + end; + end; + end; + + try + SetCapture(Handle); + ScreenDC := GetDC(0); + with EffectivePanel do PanelRect := RectToScreen(BoundsRect); + DockRect := RectToScreen(Dock.ClientRect); + GetCursorPos(OrigCursorPos); + OldCursorPos := OrigCursorPos; + OrigEdgeRect := GetEdgeRect(PanelRect); + OldEdgeRect := Rect(0, 0, 0, 0); + EdgeRect := OrigEdgeRect; + FIsSplitting := True; + + if not Smooth then + begin + DrawDraggingOutline(ScreenDC, EdgeRect, Rect(0, 0, 0, 0)); + OldEdgeRect := EdgeRect; + EraseEdgeRect := True; + end + else EraseEdgeRect := False; + + while GetCapture = Handle do + begin + case Integer(GetMessage(Msg, 0, 0, 0)) of + -1: Break; + 0: begin + PostQuitMessage(Msg.WParam); + Break; + end; + end; + case Msg.Message of + WM_KEYDOWN, WM_KEYUP: if Msg.WParam = VK_ESCAPE then Break; + WM_MOUSEMOVE: MouseMoved; + WM_LBUTTONDOWN, WM_LBUTTONDBLCLK:Break; + WM_LBUTTONUP: Break; + WM_RBUTTONDOWN..WM_MBUTTONDBLCLK:; + else + TranslateMessage(Msg); + DispatchMessage(Msg); + end; + end; + finally + if GetCapture = Handle then ReleaseCapture; + CommitResizing := True; + if EraseEdgeRect then + begin + DrawDraggingOutline(ScreenDC, Rect(0, 0, 0, 0), OldEdgeRect); + if CommitResizing then SetSizes; + end + else if not CommitResizing then SetSizes(True); + ReleaseDC(0, ScreenDC); + FIsSplitting := False; + if csDesigning in ComponentState then + begin + Form := GetParentForm(Self); + if (Form <> nil) and (Form.Designer <> nil) then Form.Designer.Modified; + end; + end; +end; + +function TTBXDockablePanel.CalcNCSizes: TPoint; +begin + if not Docked then + begin + Result.X := 0; + Result.Y := 0; + end + else + begin + Result.X := DockedBorderSize * 2; + Result.Y := DockedBorderSize * 2; + if ShowCaptionWhenDocked then + if IsVertCaption then Inc(Result.X, GetSystemMetrics(SM_CYSMCAPTION)) + else Inc(Result.Y, GetSystemMetrics(SM_CYSMCAPTION)); + end; +end; + +function TTBXDockablePanel.CalcSize(ADock: TTBDock): TPoint; +begin + if Assigned(ADock) then + begin + if ADock.Position in [dpLeft, dpRight] then + begin + Result.X := FDockedWidth; + Result.Y := ADock.ClientHeight - CalcNCSizes.Y; + end + else + begin + Result.X := ADock.ClientWidth - CalcNCSizes.X; + Result.Y := FDockedHeight; + end; + end + else + begin + { if floating width and height are yet undefined, copy them from docked width and height } + if FFloatingWidth = 0 then + begin + if Docked and (CurrentDock.Position in [dpTop, dpBottom]) then + FFloatingWidth := Width {CurrentDock.ClientWidth} - CalcNCSizes.X + else + FFloatingWidth := FDockedWidth; + end; + + if FFloatingHeight = 0 then + begin + if Docked and (CurrentDock.Position in [dpLeft, dpRight]) then + FFloatingHeight := {CurrentDock.ClientHeight} Height - CalcNCSizes.Y + else + FFloatingHeight := FDockedHeight; + end; + + Result.X := FFloatingWidth; + Result.Y := FFloatingHeight; + end; +end; + +function TTBXDockablePanel.CanAutoSize(var NewWidth, NewHeight: Integer): Boolean; +begin + Result := True; +end; + +function TTBXDockablePanel.CanDockTo(ADock: TTBDock): Boolean; +begin + Result := inherited CanDockTo(ADock); + if Result then + begin + if ADock is TTBXMultiDock then + begin + Result := dkMultiDock in SupportedDocks; + end + else + begin + Result := dkStandardDock in SupportedDocks;; + end; + end; +end; + +function TTBXDockablePanel.CanSplitResize(EdgePosition: TTBDockPosition): Boolean; +var + Dock: TDockAccess; +begin + Result := Docked and (CurrentDock is TTBXMultiDock) and HandleAllocated; + if not Result then Exit; + Dock := TDockAccess(CurrentDock); + ListSortEx(Dock.DockVisibleList, CompareEffectiveDockPos, nil); + if Dock.Position in [dpLeft, dpRight] then + begin + case EdgePosition of + dpTop: Result := EffectiveDockPos > 0; + dpBottom: Result := Dock.DockVisibleList.Last <> Self; + else + Result := False; + end; + end + else + begin + case EdgePosition of + dpLeft: Result := EffectiveDockPos > 0; + dpRight: Result := Dock.DockVisibleList.Last <> Self; + else + Result := False; + end; + end; +end; + +procedure TTBXDockablePanel.CMColorChanged(var Message: TMessage); +begin + UpdateEffectiveColor; + Brush.Color := Color; + if Docked and HandleAllocated then + begin + RedrawWindow(Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or + RDW_ERASE or RDW_UPDATENOW or RDW_ALLCHILDREN); + end; + Invalidate; + UpdateChildColors; +end; + +procedure TTBXDockablePanel.CMControlChange(var Message: TCMControlChange); +begin + inherited; + if Message.Inserting and (Color = clNone) then + Message.Control.Perform(CM_PARENTCOLORCHANGED, 1, EffectiveColor); +end; + +procedure TTBXDockablePanel.CMTextChanged(var Message: TMessage); +begin + inherited; + if HandleAllocated then + begin + if Docked then RedrawWindow(Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE) + else RedrawWindow(TTBXFloatingWindowParent(Parent).Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE); + end; +end; + +procedure TTBXDockablePanel.ConstrainedResize(var MinWidth, MinHeight, MaxWidth, MaxHeight: Integer); +var + Sz: TPoint; +begin + Sz := CalcNCSizes; + if MinClientWidth > 0 then MinWidth := MinClientWidth + Sz.X; + if MinClientHeight > 0 then MinHeight := MinClientHeight + Sz.Y; + if MaxClientWidth > 0 then MaxWidth := MaxClientWidth + Sz.X; + if MaxClientHeight > 0 then MaxHeight := MaxClientHeight + Sz.Y; +end; + +constructor TTBXDockablePanel.Create(AOwner: TComponent); +begin + inherited; + FMinClientWidth := 32; + FMinClientHeight := 32; + FDockedWidth := 128; + FDockedHeight := 128; + CloseButtonWhenDocked := True; + DblClickUndock := False; + FShowCaptionWhenDocked := True; + FSmoothDockedResize := True; + BlockSizeUpdate := True; + SetBounds(Left, Top, 128, 128); + BlockSizeUpdate := False; + FullSize := True; + Color := clNone; + AddThemeNotification(Self); + SupportedDocks := [dkStandardDock, dkMultiDock]; +end; + +destructor TTBXDockablePanel.Destroy; +begin + RemoveThemeNotification(Self); + inherited; +end; + +function TTBXDockablePanel.DoArrange(CanMoveControls: Boolean; + PreviousDockType: TTBDockType; NewFloating: Boolean; NewDock: TTBDock): TPoint; +begin + Result := CalcSize(NewDock); +end; + +function TTBXDockablePanel.DoBeginDockedResizing(Vertical: Boolean): Boolean; +var + Sz: Integer; +begin + Result := True; + if Vertical then Sz := Height else Sz := Width; + if Assigned(FOnDockedResizing) then FOnDockedResizing(Self, Vertical, Sz, rsBeginResizing, Result); + if Result then + if Vertical then Height := Sz else Width := Sz; +end; + +function TTBXDockablePanel.DoDockedResizing(Vertical: Boolean; var NewSize: Integer): Boolean; +const + MIN_PARENT_CLIENT_SIZE = 32; +var + NCSizes: TPoint; + CW, CH: Integer; + DockParent: TWinControl; + ClientSize: TPoint; +begin + NCSizes := CalcNCSizes; + DockParent := Parent.Parent; + ClientSize := GetClientSizeEx(DockParent); + + Assert(DockParent <> nil); + if not Vertical then + begin + CW := ClientSize.X - MIN_PARENT_CLIENT_SIZE + Width; + if NewSize > CW then NewSize := CW; + CW := NewSize - NCSizes.X; + if CW < MinClientWidth then CW := MinClientWidth + else if (MaxClientWidth > MinClientWidth) and (CW > MaxClientWidth) then CW := MaxClientWidth; + NewSize := CW + NCSizes.X; + end + else + begin + CH := ClientSize.Y - MIN_PARENT_CLIENT_SIZE + Height; + if NewSize > CH then NewSize := CH; + CH := NewSize - NCSizes.Y; + if CH < MinClientHeight then CH := MinClientHeight + else if (MaxClientHeight > MinClientHeight) and (CH > MaxClientHeight) then CH := MaxClientHeight; + NewSize := CH + NCSizes.Y; + end; + Result := True; + if Assigned(FOnDockedResizing) then FOnDockedResizing(Self, Vertical, NewSize, rsResizing, Result); +end; + +function TTBXDockablePanel.DoEndDockedResizing(Vertical: Boolean): Boolean; +var + Sz: Integer; +begin + Result := True; + if Vertical then Sz := Height else Sz := Width; + if Assigned(FOnDockedResizing) then + FOnDockedResizing(Self, Vertical, Sz, rsEndResizing, Result); + if Result then + if Vertical then Height := Sz else Width := Sz; +end; + +procedure TTBXDockablePanel.DrawNCArea(const DrawToDC: Boolean; + const ADC: HDC; const Clip: HRGN); +var + DC: HDC; + R, CR: TRect; + ACanvas: TCanvas; + Sz: Integer; + DockPanelInfo: TTBXDockPanelInfo; + S: string; +begin + if not Docked or not HandleAllocated then Exit; + + if not DrawToDC then DC := GetWindowDC(Handle) + else DC := ADC; + + Assert(DC <> 0, 'TTBXToolWindow.DrawNCArea Error'); + try + GetDockPanelInfo(DockPanelInfo); + GetWindowRect(Handle, R); + OffsetRect(R, -R.Left, -R.Top); + if not DrawToDC then + begin + SelectNCUpdateRgn(Handle, DC, Clip); + CR := R; + with DockPanelInfo.BorderSize, CR do + begin + InflateRect(CR, -X, -Y); + if DockPanelInfo.ShowCaption then + begin + Sz := GetSystemMetrics(SM_CYSMCAPTION); + if DockPanelInfo.IsVertical then Inc(Top, Sz) + else Inc(Left, Sz); + end; + ExcludeClipRect(DC, Left, Top, Right, Bottom); + end; + end; + S := Caption; + DockPanelInfo.Caption := PChar(S); + ACanvas := TCanvas.Create; + try + ACanvas.Handle := DC; + ACanvas.Brush.Color := EffectiveColor; + CurrentTheme.PaintDockPanelNCArea(ACanvas, R, DockPanelInfo); + finally + ACanvas.Handle := 0; + ACanvas.Free; + end; + finally + if not DrawToDC then ReleaseDC(Handle, DC); + end; +end; + +procedure TTBXDockablePanel.GetBaseSize(var ASize: TPoint); +begin + ASize := CalcSize(CurrentDock); +end; + +function TTBXDockablePanel.GetDockedCloseButtonRect(LeftRight: Boolean): TRect; +var + X, Y, Z: Integer; +begin + Z := GetSystemMetrics(SM_CYSMCAPTION) - 1; + if LeftRight or not IsVertCaption then + begin + X := (ClientWidth + DockedBorderSize) - Z; + Y := DockedBorderSize; + end + else + begin + X := DockedBorderSize; + Y := ClientHeight + DockedBorderSize - Z; + end; + Result := Bounds(X, Y, Z, Z); +end; + +procedure TTBXDockablePanel.GetDockPanelInfo(out DockPanelInfo: TTBXDockPanelInfo); +begin + FillChar(DockPanelInfo, SizeOf(DockPanelInfo), 0); + DockPanelInfo.WindowHandle := WindowHandle; + DockPanelInfo.ViewType := GetViewType; + if CurrentDock <> nil then DockPanelInfo.IsVertical := not IsVertCaption; + DockPanelInfo.AllowDrag := CurrentDock.AllowDrag; + DockPanelInfo.BorderStyle := BorderStyle; + CurrentTheme.GetViewBorder(DockPanelInfo.ViewType, DockPanelInfo.BorderSize); + DockPanelInfo.ClientWidth := ClientWidth; + DockPanelInfo.ClientHeight := ClientHeight; + DockPanelInfo.ShowCaption := ShowCaptionWhenDocked; + DockPanelInfo.EffectiveColor := EffectiveColor; + if ShowCaptionWhenDocked and CloseButtonWhenDocked then + begin + DockPanelInfo.CloseButtonState := CDBS_VISIBLE; + if CloseButtonDown then DockPanelInfo.CloseButtonState := DockPanelInfo.CloseButtonState or CDBS_PRESSED; + if CloseButtonHover then DockPanelInfo.CloseButtonState := DockPanelInfo.CloseButtonState or CDBS_HOT; + end; +end; + +function TTBXDockablePanel.GetFloatingBorderSize: TPoint; +begin + CurrentTheme.GetViewBorder(GetViewType or DPVT_FLOATING, Result); +end; + +function TTBXDockablePanel.GetFloatingWindowParentClass: TTBFloatingWindowParentClass; +begin + Result := TTBXFloatingWindowParent; +end; + +procedure TTBXDockablePanel.GetMinMaxSize(var AMinClientWidth, AMinClientHeight, + AMaxClientWidth, AMaxClientHeight: Integer); +begin + AMinClientWidth := FMinClientWidth; + AMinClientHeight := FMinClientHeight; + AMaxClientWidth := FMaxClientWidth; + AMaxClientHeight := FMaxClientHeight; +end; + +function TTBXDockablePanel.GetViewType: Integer; +begin + Result := DPVT_NORMAL; + if Floating then Result := Result or DPVT_FLOATING; + if Resizable then Result := Result or DPVT_RESIZABLE; +end; + +function TTBXDockablePanel.IsVertCaption: Boolean; +begin + case CaptionRotation of + dpcrAlwaysHorz: Result := False; + dpcrAlwaysVert: Result := Docked; + else // dpcrAuto: + Result := Docked and (CurrentDock.Position in [dpTop, dpBottom]); + end; +end; + +procedure TTBXDockablePanel.Loaded; +begin + inherited; + UpdateChildColors; +end; + +procedure TTBXDockablePanel.Paint; +begin + if csDesigning in ComponentState then with Canvas do + begin + Pen.Style := psDot; + Pen.Color := clBtnShadow; + Brush.Style := bsClear; + with ClientRect do Rectangle(Left, Top, Right, Bottom); + Pen.Style := psSolid; + end; +end; + +procedure TTBXDockablePanel.ReadPositionData(const Data: TTBReadPositionData); +begin + with Data do + begin + FDockedWidth := ReadIntProc(Name, rvDockedWidth, FDockedWidth, ExtraData); + FDockedHeight := ReadIntProc(Name, rvDockedHeight, FDockedHeight, ExtraData); + FFloatingWidth := ReadIntProc(Name, rvFloatingWidth, FFloatingWidth, ExtraData); + FFloatingHeight := ReadIntProc(Name, rvFloatingHeight, FFloatingHeight, ExtraData); + FSplitWidth := ReadIntProc(Name, rvSplitWidth, FSplitWidth, ExtraData); + FSplitHeight := ReadIntProc(Name, rvSplitHeight, FSplitHeight, ExtraData); + end; +end; + +procedure TTBXDockablePanel.SetBorderSize(Value: Integer); +begin + if FBorderSize <> Value then + begin + FBorderSize := Value; + Realign; + end; +end; + +procedure TTBXDockablePanel.SetBounds(ALeft, ATop, AWidth, AHeight: Integer); +begin + inherited SetBounds(ALeft, ATop, AWidth, AHeight); +end; + +procedure TTBXDockablePanel.SetCaptionRotation(Value: TDPCaptionRotation); +begin + if FCaptionRotation <> Value then + begin + FCaptionRotation := Value; + if Docked and HandleAllocated then + SetWindowPos(Handle, 0, 0, 0, 0, 0, SWP_FRAMECHANGED or + SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE or SWP_NOZORDER); + end; +end; + +procedure TTBXDockablePanel.SetDockedHeight(Value: Integer); +begin + if Value < MinClientHeight then Value := MinClientHeight; + if Value <> FDockedHeight then + begin + FDockedHeight := Value; + if Docked and (CurrentDock.Position in [dpTop, dpBottom]) then + begin + BlockSizeUpdate := True; + Height := Value + CalcNCSizes.Y; + BlockSizeUpdate := False; + end; + end; +end; + +procedure TTBXDockablePanel.SetDockedWidth(Value: Integer); +begin + if Value < MinClientWidth then Value := MinClientWidth; + if Value <> FDockedWidth then + begin + FDockedWidth := Value; + if Docked and (CurrentDock.Position in [dpLeft, dpRight]) then + begin + BlockSizeUpdate := True; + Width := Value + CalcNCSizes.X; + BlockSizeUpdate := False; + end; + end; +end; + +procedure TTBXDockablePanel.SetFloatingHeight(Value: Integer); +begin + { FloatingHeight (and floating width) can be set to 0 while panel is docked. + This will force to restore floating dimensions from docked size } + if Value < 0 then Value := 0; + if not Docked and (Value < MinClientHeight) then Value := MinClientHeight; + if Value <> FFloatingHeight then + begin + FFloatingHeight := Value; + if not Docked then + begin + BlockSizeUpdate := True; + Height := Value + CalcNCSizes.Y; + BlockSizeUpdate := False; + end; + end; +end; + +procedure TTBXDockablePanel.SetFloatingWidth(Value: Integer); +begin + { See comment for TTBXDockablePanel.SetFloatingHeight } + if Value < 0 then Value := 0; + if not Docked and (Value < MinClientWidth) then Value := MinClientWidth; + if Value <> FFloatingWidth then + begin + FFloatingWidth := Value; + if not Docked then + begin + BlockSizeUpdate := True; + Width := Value + CalcNCSizes.X; + BlockSizeUpdate := False; + end; + end; +end; + +procedure TTBXDockablePanel.SetMinClientHeight(Value: Integer); +begin + if Value < 8 then Value := 8; + FMinClientHeight := Value; +end; + +procedure TTBXDockablePanel.SetMinClientWidth(Value: Integer); +begin + if Value < 8 then Value := 8; + FMinClientWidth := Value; +end; + +procedure TTBXDockablePanel.SetParent(AParent: TWinControl); +begin + inherited; + if AParent is TTBXFloatingWindowParent then + TTBXFloatingWindowParent(AParent).SnapDistance := SnapDistance; +end; + +procedure TTBXDockablePanel.SetShowCaptionWhenDocked(Value: Boolean); +begin + if FShowCaptionWhenDocked <> Value then + begin + FShowCaptionWhenDocked := Value; + if Docked then + begin + if HandleAllocated then + SetWindowPos(Handle, 0, 0, 0, 0, 0, SWP_FRAMECHANGED or + SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE or SWP_NOZORDER); + end; + end; +end; + +procedure TTBXDockablePanel.SetSnapDistance(Value: Integer); +begin + if Value < 0 then Value := 0; + FSnapDistance := Value; + if (Parent <> nil) and (Parent is TTBXFloatingWindowParent) then + TTBXFloatingWindowParent(Parent).SnapDistance := Value; +end; + +procedure TTBXDockablePanel.SetSplitHeight(Value: Integer); +begin + if Value < 0 then Value := 0; + if FSplitHeight <> Value then + begin + FSplitHeight := Value; + if Docked and (CurrentDock.Position in [dpLeft, dpRight]) and + (CurrentDock is TTBXMultiDock) then CurrentDock.ArrangeToolbars; + end; +end; + +procedure TTBXDockablePanel.SetSplitWidth(Value: Integer); +begin + if Value < 0 then Value := 0; + if FSplitWidth <> Value then + begin + FSplitWidth := Value; + if Docked and (CurrentDock.Position in [dpTop, dpBottom]) and + (CurrentDock is TTBXMultiDock) then CurrentDock.ArrangeToolbars; + end; +end; + +procedure TTBXDockablePanel.SizeChanging(const AWidth, AHeight: Integer); +begin + if not BlockSizeUpdate then + begin + if Docked and (CurrentDock.Position in [dpLeft, dpRight]) then + FDockedWidth := AWidth - CalcNCSizes.X + else if Floating then + FFloatingWidth := AWidth - CalcNCSizes.X; + + if Docked and (CurrentDock.Position in [dpTop, dpBottom]) then + FDockedHeight := AHeight - CalcNCSizes.Y + else if Floating then + FFloatingHeight := AHeight - CalcNCSizes.Y; + end; +end; + +procedure TTBXDockablePanel.TBMGetEffectiveColor(var Message: TMessage); +begin + Message.WParam := EffectiveColor; + Message.Result := 1; +end; + +procedure TTBXDockablePanel.TBMGetViewType(var Message: TMessage); +begin + Message.Result := GetViewType; +end; + +procedure TTBXDockablePanel.TBMThemeChange(var Message: TMessage); +var + M: TMessage; +begin + case Message.WParam of + TSC_BEFOREVIEWCHANGE: BeginUpdate; + TSC_AFTERVIEWCHANGE: + begin + EndUpdate; + UpdateEffectiveColor; + + if HandleAllocated and not (csDestroying in ComponentState) and + (Parent is TTBXFloatingWindowParent) then + UpdateNCArea(TTBXFloatingWindowParent(Parent), GetViewType) + else + UpdateNCArea(Self, GetViewType); + + Invalidate; + + M.Msg := CM_PARENTCOLORCHANGED; + M.WParam := 1; + M.LParam := EffectiveColor; + M.Result := 0; + Broadcast(M); + end; + end; +end; + +procedure TTBXDockablePanel.UpdateChildColors; +var + M: TMessage; +begin + M.Msg := CM_PARENTCOLORCHANGED; + M.WParam := 1; + M.LParam := EffectiveColor; + M.Result := 0; + Broadcast(M); +end; + +procedure TTBXDockablePanel.UpdateEffectiveColor; +begin + if Color = clNone then FEffectiveColor := CurrentTheme.GetViewColor(GetViewType) + else FEffectiveColor := Color; +end; + +procedure TTBXDockablePanel.WMEraseBkgnd(var Message: TWMEraseBkgnd); +var + BRUSH: HBRUSH; +begin + BRUSH := CreateSolidBrush(ColorToRGB(EffectiveColor)); + FillRect(Message.DC, Clientrect, BRUSH); + DeleteObject(BRUSH); + Message.Result := 1; +end; + +procedure TTBXDockablePanel.WMNCCalcSize(var Message: TWMNCCalcSize); +begin + Message.Result := 0; + if Docked then + with Message.CalcSize_Params^ do + begin + InflateRect(rgrc[0], -DockedBorderSize, -DockedBorderSize); + if ShowCaptionWhenDocked then + if IsVertCaption then Inc(rgrc[0].Left, GetSystemMetrics(SM_CYSMCAPTION)) + else Inc(rgrc[0].Top, GetSystemMetrics(SM_CYSMCAPTION)) + end; +end; + +procedure TTBXDockablePanel.WMNCHitTest(var Message: TWMNCHitTest); +const + CResizeMargin = 2; +var + P: TPoint; + R: TRect; + Sz: Integer; + IsVertical, UseDefaultHandler: Boolean; +begin + if Docked then + begin + UseDefaultHandler := False; + if csDesigning in ComponentState then with Message do + begin + P := SmallPointToPoint(Pos); + GetWindowRect(Handle, R); + if PtInRect(R, P) then + begin + Result := 0; + case CurrentDock.Position of + dpLeft: if P.X >= R.Right - CResizeMargin then Result := HTRIGHT; + dpTop: if P.Y >= R.Bottom - CResizeMargin then Result := HTBOTTOM; + dpRight: if P.X <= R.Left + CResizeMargin then Result := HTLEFT; + dpBottom: if P.Y <= R.Top + CResizeMargin then Result := HTTOP; + end; + if Result = 0 then + begin + if (P.X >= R.Right - CResizeMargin) and CanSplitResize(dpRight) then Result := HT_TBX_SPLITRESIZERIGHT + else if (P.Y >= R.Bottom - CResizeMargin) and CanSplitResize(dpBottom) then Result := HT_TBX_SPLITRESIZEBOTTOM + else if (P.X <= R.Left + CResizeMargin) and CanSplitResize(dpLeft) then Result := HT_TBX_SPLITRESIZELEFT + else if (P.Y <= R.Top + CResizeMargin) and CanSplitResize(dpTop) then Result := HT_TBX_SPLITRESIZETOP; + end; + UseDefaultHandler := Result <> 0; + end; + if UseDefaultHandler then DefaultHandler(Message) + else inherited; + end; + + with Message do + begin + P := SmallPointToPoint(Pos); + GetWindowRect(Handle, R); + if Resizable then + case CurrentDock.Position of + dpLeft: if P.X >= R.Right - CResizeMargin then Result := HTRIGHT; + dpTop: if P.Y >= R.Bottom - CResizeMargin then Result := HTBOTTOM; + dpRight: if P.X <= R.Left + CResizeMargin then Result := HTLEFT; + dpBottom: if P.Y <= R.Top + CResizeMargin then Result := HTTOP; + end; + if Result = 0 then + begin + if (P.X >= R.Right - CResizeMargin) and CanSplitResize(dpRight) then Result := HT_TBX_SPLITRESIZERIGHT + else if (P.Y >= R.Bottom - CResizeMargin) and CanSplitResize(dpBottom) then Result := HT_TBX_SPLITRESIZEBOTTOM + else if (P.X <= R.Left + CResizeMargin) and CanSplitResize(dpLeft) then Result := HT_TBX_SPLITRESIZELEFT + else if (P.Y <= R.Top + CResizeMargin) and CanSplitResize(dpTop) then Result := HT_TBX_SPLITRESIZETOP; + end; + if (Result <> HTCLIENT) and ((Result < HTLEFT) or (Result > HTBOTTOM)) and + ((Result < HT_TBX_SPLITRESIZELEFT) or (Result > HT_TBX_SPLITRESIZEBOTTOM)) then + begin + Result := HTNOWHERE; + InflateRect(R, -DockedBorderSize, -DockedBorderSize); + + if PtInRect(R, P) and ShowCaptionWhenDocked and not (csDesigning in ComponentState) then + begin + { caption area } + IsVertical := not IsVertCaption; + if CloseButtonWhenDocked then + begin + Sz := GetSystemMetrics(SM_CYSMCAPTION); + if IsVertical then Inc(Sz, 4) else Dec(Sz, 4); + end + else Sz := 0; + + if (IsVertical and (P.X >= R.Right - Sz) and (P.Y < R.Top + Sz)) or + (not IsVertical and (P.Y >= R.Bottom - Sz) and (P.X < R.Left + Sz)) then + Result := HT_TB2k_Close + else + Result := HT_TB2k_Border; + end; + end; + end; + end + else inherited; +end; + +procedure TTBXDockablePanel.WMNCLButtonDown(var Message: TWMNCLButtonDown); +var + OldCursor: HCURSOR; +begin + if Message.HitTest in [HTLEFT..HTBOTTOM] then BeginDockedSizing(Message.HitTest) + else if Message.HitTest in [HT_TBX_SPLITRESIZELEFT..HT_TBX_SPLITRESIZEBOTTOM] then BeginSplitResizing(Message.HitTest) + else + begin + if (Message.HitTest = HT_TB2k_Border) and IsMovable then + begin + OldCursor := SetCursor(LoadCursor(0, IDC_SIZEALL)); + try + inherited; + finally + SetCursor(OldCursor); + end; + end + else inherited; + end; +end; + +procedure TTBXDockablePanel.WMSetCursor(var Message: TWMSetCursor); +begin + if Docked and CurrentDock.AllowDrag and + (Message.CursorWnd = WindowHandle) and + (Smallint(Message.HitTest) = HT_TB2k_Border) and + ShowCaptionWhenDocked then + begin + SetCursor(LoadCursor(0, IDC_ARROW)); + Message.Result := 1; + Exit; + end + else if Docked and CurrentDock.AllowDrag and (Message.CursorWnd = WindowHandle) then + begin + if (Message.HitTest = HT_TBX_SPLITRESIZELEFT) or (Message.HitTest = HT_TBX_SPLITRESIZERIGHT) then + begin + SetCursor(LoadCursor(0, IDC_SIZEWE)); + Message.Result := 1; + Exit; + end + else if (Message.HitTest = HT_TBX_SPLITRESIZETOP) or (Message.HitTest = HT_TBX_SPLITRESIZEBOTTOM) then + begin + SetCursor(LoadCursor(0, IDC_SIZENS)); + Message.Result := 1; + Exit; + end; + end; + inherited; +end; + +procedure TTBXDockablePanel.WMWindowPosChanged(var Message: TWMWindowPosChanged); +begin + inherited; + if (Message.WindowPos^.flags and SWP_NOSIZE) = 0 then + begin + Realign; + Update; + end; + if (Message.WindowPos^.flags and SWP_SHOWWINDOW) <> 0 then + begin + UpdateEffectiveColor; + UpdateChildColors; + end; +end; + +procedure TTBXDockablePanel.WritePositionData(const Data: TTBWritePositionData); +begin + with Data do + begin + WriteIntProc(Name, rvDockedWidth, FDockedWidth, ExtraData); + WriteIntProc(Name, rvDockedHeight, FDockedHeight, ExtraData); + WriteIntProc(Name, rvFloatingWidth, FFloatingWidth, ExtraData); + WriteIntProc(Name, rvFloatingHeight, FFloatingHeight, ExtraData); + WriteIntProc(Name, rvSplitWidth, FSplitWidth, ExtraData); + WriteIntProc(Name, rvSplitHeight, FSplitHeight, ExtraData); + end; +end; + +//----------------------------------------------------------------------------// + +{ TTBXTextObject } + +procedure TTBXTextObject.AdjustFont(AFont: TFont); +begin +end; + +procedure TTBXTextObject.AdjustHeight; +var + NewHeight: Integer; +begin + if HandleAllocated and not FUpdating and ([csReading, csLoading] * ComponentState = []) and AutoSize then + begin + FUpdating := True; + try + NewHeight := 0; + DoAdjustHeight(StockCompatibleBitmap.Canvas, NewHeight); + SetBounds(Left, Top, Width, NewHeight); + finally + FUpdating := False; + end; + end; +end; + +function TTBXTextObject.CanAutoSize(var NewWidth, NewHeight: Integer): Boolean; +begin + if not FUpdating and ([csReading, csLoading] * ComponentState = []) and AutoSize then + begin + FUpdating := True; + try + NewHeight := 0; + DoAdjustHeight(StockCompatibleBitmap.Canvas, NewHeight); + Result := True; + finally + FUpdating := False; + end; + end + else Result := False; +end; + +procedure TTBXTextObject.CMEnabledChanged(var Message: TMessage); +begin + inherited; + Invalidate; +end; + +procedure TTBXTextObject.CMFontChanged(var Message: TMessage); +begin + inherited; + Invalidate; + AdjustHeight; +end; + +procedure TTBXTextObject.CMTextChanged(var Message: TMessage); +begin + inherited; + Invalidate; + AdjustHeight; +end; + +constructor TTBXTextObject.Create(AOwner: TComponent); +begin + inherited; + ControlStyle := ControlStyle + [csSetCaption] - [csDoubleClicks]; + FMargins := TTBXControlMargins.Create; + FMargins.OnChange := MarginsChangeHandler; + FShowAccelChar := True; + PaintOptions := [cpoDoubleBuffered]; + AutoSize := True; + Width := 100; +end; + +procedure TTBXTextObject.CreateParams(var Params: TCreateParams); +begin + inherited; + if not (csDesigning in ComponentState) then + with Params.WindowClass do style := style or CS_HREDRAW; +end; + +destructor TTBXTextObject.Destroy; +begin + FMargins.Free; + inherited; +end; + +procedure TTBXTextObject.DoAdjustHeight(ACanvas: TCanvas; var NewHeight: Integer); +const + WordWraps: array [TTextWrapping] of Word = (0, DT_END_ELLIPSIS, DT_PATH_ELLIPSIS, DT_WORDBREAK); +var + R: TRect; + EffectiveMargins: TRect; +begin + R := ClientRect; + EffectiveMargins := GetTextMargins; + with Margins do + begin + Inc(EffectiveMargins.Left, Left); Inc(EffectiveMargins.Right, Right); + Inc(EffectiveMargins.Top, Top); Inc(EffectiveMargins.Bottom, Bottom); + end; + ApplyMargins(R, EffectiveMargins); + NewHeight := DoDrawText(ACanvas, R, (DT_EXPANDTABS or DT_CALCRECT) or WordWraps[Wrapping]); + with EffectiveMargins do Inc(NewHeight, Top + Bottom); +end; + +function TTBXTextObject.DoDrawText(ACanvas: TCanvas; var Rect: TRect; Flags: Integer): Integer; +var + Text: string; +begin + Text := GetLabelText; + if (Flags and DT_CALCRECT <> 0) and ((Text = '') or + (Text[1] = '&') and (Text[2] = #0)) then Text := Text + ' '; + Flags := DrawTextBiDiModeFlags(Flags); + ACanvas.Font := Font; + AdjustFont(ACanvas.Font); + + if Flags and DT_CALCRECT = DT_CALCRECT then + begin + Flags := Flags and not DT_VCENTER; + Result := DrawText(ACanvas.Handle, PChar(Text), Length(Text), Rect, Flags); + end + else if not Enabled then + begin + OffsetRect(Rect, 1, 1); + ACanvas.Font.Color := clBtnHighlight; + DrawText(ACanvas.Handle, PChar(Text), Length(Text), Rect, Flags); + OffsetRect(Rect, -1, -1); + ACanvas.Font.Color := clBtnShadow; + Result := DrawText(ACanvas.Handle, PChar(Text), Length(Text), Rect, Flags); + end + else + begin + Result := DrawText(ACanvas.Handle, PChar(Text), Length(Text), Rect, Flags); + end; +end; + +procedure TTBXTextObject.DoMarginsChanged; +begin + Invalidate; + AdjustHeight; +end; + +function TTBXTextObject.GetControlsAlignment: TAlignment; +begin + Result := FAlignment; +end; + +function TTBXTextObject.GetFocusRect(const R: TRect): TRect; +begin + { R is the client rectangle without the margins } + Result := Rect(0, 0, 0, 0); +end; + +function TTBXTextObject.GetLabelText: string; +begin + Result := Caption; +end; + +function TTBXTextObject.GetTextAlignment: TAlignment; +begin + Result := Alignment; +end; + +function TTBXTextObject.GetTextMargins: TRect; +const + ZeroRect: TRect = (Left: 0; Top: 0; Right: 0; Bottom: 0); +begin + Result := ZeroRect; +end; + +procedure TTBXTextObject.Loaded; +begin + inherited; + AdjustHeight; +end; + +procedure TTBXTextObject.MarginsChangeHandler(Sender: TObject); +begin + DoMarginsChanged; +end; + +procedure TTBXTextObject.Paint; +const + Alignments: array [TAlignment] of Integer = (DT_LEFT, DT_RIGHT, DT_CENTER); + WordWraps: array [TTextWrapping] of Integer = (DT_SINGLELINE, + DT_SINGLELINE or DT_END_ELLIPSIS, + DT_SINGLELINE or DT_PATH_ELLIPSIS, DT_WORDBREAK); + ShowAccelChars: array [Boolean] of Integer = (DT_NOPREFIX, 0); +var + R, R2: TRect; + DrawStyle: Longint; + CaptionHeight: Integer; +begin + with Canvas do + begin + R := ClientRect; + ApplyMargins(R, Margins); + if Focused then DrawFocusRect2(Canvas, GetFocusRect(R)); + DrawStyle := DT_EXPANDTABS or WordWraps[Wrapping] or + Alignments[GetRealAlignment(Self)] or ShowAccelChars[ShowAccelChar]; + Brush.Style := bsClear; + ApplyMargins(R, GetTextMargins); + R2 := R; + CaptionHeight := DoDrawText(Canvas, R2, DrawStyle or DT_CALCRECT); + R.Top := (R.Top + R.Bottom - CaptionHeight) div 2; + R.Bottom := R.Top + CaptionHeight; + DoDrawText(Canvas, R, DrawStyle); + Brush.Style := bsSolid; + end; +end; + +procedure TTBXTextObject.SetAlignment(Value: TLeftRight); +begin + FAlignment := Value; + Invalidate; +end; + +procedure TTBXTextObject.SetMargins(Value: TTBXControlMargins); +begin + FMargins.Assign(Value); +end; + +procedure TTBXTextObject.SetShowAccelChar(Value: Boolean); +begin + if FShowAccelChar <> Value then + begin + FShowAccelChar := Value; + AdjustHeight; + Invalidate; + end; +end; + +procedure TTBXTextObject.SetWrapping(Value: TTextWrapping); +begin + FWrapping := Value; + Invalidate; + AdjustHeight; +end; + +//----------------------------------------------------------------------------// + +{ TTBXCustomLabel } + +procedure TTBXCustomLabel.CMDialogChar(var Message: TCMDialogChar); +begin + if (FFocusControl <> nil) and Enabled and ShowAccelChar and IsAccel(Message.CharCode, Caption) then + with FFocusControl do if CanFocus then + begin + SetFocus; + Message.Result := 1; + end; +end; + +constructor TTBXCustomLabel.Create(AOwner: TComponent); +begin + inherited; + Wrapping := twWrap; + FUnderlineColor := clBtnShadow; + TabStop := False; +end; + +function TTBXCustomLabel.GetTextMargins: TRect; +const + BottomMargin: array [Boolean] of Integer = (0, 1); +begin + with Result do + begin + Left := 0; + Top := 0; + Right := 0; + Result.Bottom := BottomMargin[Underline]; + end; +end; + +procedure TTBXCustomLabel.Notification(AComponent: TComponent; Operation: TOperation); +begin + inherited; + inherited Notification(AComponent, Operation); + if (Operation = opRemove) and (AComponent = FFocusControl) then FFocusControl := nil; +end; + +procedure TTBXCustomLabel.Paint; +var + Rect: TRect; +begin + inherited; + if Underline then with Canvas do + begin + Rect := ClientRect; + ApplyMargins(Rect, Margins); + ApplyMargins(Rect, GetTextMargins); + Pen.Color := UnderlineColor; + MoveTo(Rect.Left, Rect.Bottom); + LineTo(Rect.Right, Rect.Bottom); + end; +end; + +procedure TTBXCustomLabel.SetFocusControl(Value: TWinControl); +begin + if FFocusControl <> Value then + begin + if FFocusControl <> nil then FFocusControl.RemoveFreeNotification(Self); + FFocusControl := Value; + if FFocusControl <> nil then FFocusControl.FreeNotification(Self); + end; +end; + +procedure TTBXCustomLabel.SetUnderline(Value: Boolean); +begin + if Value <> FUnderline then + begin + FUnderline := Value; + Invalidate; + AdjustHeight; + end; +end; + +procedure TTBXCustomLabel.SetUnderlineColor(Value: TColor); +begin + FUnderlineColor := Value; + Invalidate; +end; + +//----------------------------------------------------------------------------// + +{ TTBXCustomLink } + +procedure TTBXCustomLink.AdjustFont(AFont: TFont); +begin + if MouseInControl then AFont.Style := AFont.Style + [fsUnderline]; +end; + +procedure TTBXCustomLink.CMDialogChar(var Message: TCMDialogChar); +begin + with Message do + if Enabled and ShowAccelChar and IsAccel(CharCode, GetLabelText) and CanFocus and Visible then + begin + Click; + Result := 1; + end + else inherited; +end; + +procedure TTBXCustomLink.CMDialogKey(var Message: TCMDialogKey); +begin + with Message do + if (CharCode = VK_RETURN) and Focused and + (KeyDataToShiftState(Message.KeyData) = []) then + begin + Click; + Result := 1; + end + else inherited; +end; + +constructor TTBXCustomLink.Create(AOwner: TComponent); +begin + inherited; + FImageChangeLink := TChangeLink.Create; + FImageChangeLink.OnChange := ImageListChange; + SmartFocus := True; + SpaceAsClick := True; + TabStop := True; + Cursor := crHandPoint; +end; + +destructor TTBXCustomLink.Destroy; +begin + FImageChangeLink.Free; + inherited; +end; + +procedure TTBXCustomLink.DoAdjustHeight(ACanvas: TCanvas; var NewHeight: Integer); +begin + inherited DoAdjustHeight(ACanvas, NewHeight); + if Images <> nil then + if NewHeight < Images.Height + 4 then NewHeight := Images.Height + 4; +end; + +procedure TTBXCustomLink.DoMouseEnter; +begin + inherited; + Invalidate; +end; + +procedure TTBXCustomLink.DoMouseLeave; +begin + inherited; + Invalidate; +end; + +function TTBXCustomLink.GetControlsAlignment: TAlignment; +begin + Result := GetTextAlignment; +end; + +function TTBXCustomLink.GetFocusRect(const R: TRect): TRect; +const + WordWraps: array [TTextWrapping] of Integer = (DT_SINGLELINE or DT_VCENTER, + DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS, + DT_SINGLELINE or DT_VCENTER or DT_PATH_ELLIPSIS, DT_WORDBREAK); +var + TR: TRect; + ShowImage: Boolean; +begin + Result := R; + ShowImage := Assigned(Images) and (ImageIndex >= 0) and (ImageIndex < Images.Count); + + { Text Rectangle } + TR := R; + ApplyMargins(TR, GetTextMargins); + DoDrawText(Canvas, TR, (DT_EXPANDTABS or DT_CALCRECT) or WordWraps[Wrapping] or DT_LEFT); + + if ShowImage then + begin + if GetRealAlignment(Self) = taLeftJustify then + begin + Result.Left := R.Left; + Result.Right := TR.Right; + end + else + begin + Result.Left := TR.Left; + Result.Right := R.Right; + end; + end + else + begin + Result.Right := TR.Right; + Result.Left := TR.Left; + end; + Dec(Result.Left, 2); + Inc(Result.Right, 2); +end; + +function TTBXCustomLink.GetTextAlignment: TAlignment; +begin + Result := taLeftJustify; +end; + +function TTBXCustomLink.GetTextMargins: TRect; +begin + Result := Rect(2, 1, 2, 1); + if Assigned(Images) then with Result do + begin + if GetRealAlignment(Self) = taLeftJustify then Inc(Left, Images.Width + 5) + else Inc(Right, Images.Width + 5); + end; +end; + +procedure TTBXCustomLink.ImageListChange(Sender: TObject); +begin + if Sender = Images then + begin + Invalidate; + AdjustHeight; + end; +end; + +procedure TTBXCustomLink.Notification(AComponent: TComponent; Operation: TOperation); +begin + inherited; + if (AComponent = Images) and (Operation = opRemove) then Images := nil; +end; + +procedure TTBXCustomLink.Paint; +var + Rect, R: TRect; +begin + inherited; + if Assigned(Images) and (ImageIndex >= 0) and (ImageIndex < Images.Count) then + with Canvas do + begin + Rect := ClientRect; + ApplyMargins(Rect, Margins); + + if GetRealAlignment(Self) = taLeftJustify then R.Left := Rect.Left + 2 + else R.Left := Rect.Right - 2 - Images.Width; + + R.Top := (Rect.Top + Rect.Bottom - Images.Height) div 2; + R.Right := R.Left + Images.Width; + R.Bottom := R.Top + Images.Height; + + if Enabled then Images.Draw(Canvas, R.Left, R.Top, ImageIndex) + else DrawTBXImage(Canvas, R, Images, ImageIndex, ISF_DISABLED); + end; +end; + +procedure TTBXCustomLink.SetImageIndex(Value: TImageIndex); +begin + if FImageIndex <> Value then + begin + FImageIndex := Value; + if Assigned(Images) then Invalidate; + end; +end; + +procedure TTBXCustomLink.SetImages(Value: TCustomImageList); +begin + if FImages <> nil then FImages.UnRegisterChanges(FImageChangeLink); + FImages := Value; + if FImages <> nil then + begin + FImages.RegisterChanges(FImageChangeLink); + FImages.FreeNotification(Self); + end; + Invalidate; + AdjustHeight; +end; + +procedure TTBXCustomLink.WMNCHitTest(var Message: TWMNCHitTest); +var + P: TPoint; + R: TRect; +begin + inherited; + if not (csDesigning in ComponentState) then + begin + P := ScreenToClient(SmallPointToPoint(Message.Pos)); + R := ClientRect; + ApplyMargins(R, Margins); + R := GetFocusRect(R); + if not PtInRect(R, P) then Message.Result := HTTRANSPARENT; + end; +end; + +//----------------------------------------------------------------------------// + +{ TTBXCustomButton } + +function TTBXCustomButton.ArrowVisible: Boolean; +begin + Result := DropDownMenu <> nil; +end; + +procedure TTBXCustomButton.Click; +var + Form: TCustomForm; + Pt: TPoint; + R: TRect; + SaveAlignment: TPopupAlignment; + + procedure RemoveClicks; + var + RepostList: TList; + Repost: Boolean; + I: Integer; + Msg: TMsg; + P: TPoint; + begin + RepostList := TList.Create; + try + while PeekMessage(Msg, 0, WM_LBUTTONDOWN, WM_MBUTTONDBLCLK, PM_REMOVE) do + with Msg do + begin + Repost := True; + case Message of + WM_QUIT: begin + { Throw back any WM_QUIT messages } + PostQuitMessage(wParam); + Break; + end; + WM_LBUTTONDOWN, WM_LBUTTONDBLCLK, + WM_RBUTTONDOWN, WM_RBUTTONDBLCLK, + WM_MBUTTONDOWN, WM_MBUTTONDBLCLK: begin + P := SmallPointToPoint(TSmallPoint(lParam)); + Windows.ClientToScreen(hwnd, P); + if FindDragTarget(P, True) = Self then Repost := False; + end; + end; + if Repost then + begin + RepostList.Add(AllocMem(SizeOf(TMsg))); + PMsg(RepostList.Last)^ := Msg; + end; + end; + finally + for I := 0 to RepostList.Count-1 do + begin + with PMsg(RepostList[I])^ do PostMessage(hwnd, message, wParam, lParam); + FreeMem(RepostList[I]); + end; + RepostList.Free; + end; + end; + +begin + if FRepeating and not FMenuVisible then inherited + else + try + FInClick := True; + if (GroupIndex <> 0) and not FMenuVisible then SetChecked(not Checked); + MouseLeft; + if (DropDownMenu = nil) or (DropDownCombo and not FMenuVisible) then + begin + if ModalResult <> 0 then + begin + Form := GetParentForm(Self); + if Form <> nil then Form.ModalResult := ModalResult; + end; + inherited; + end + else + begin + MouseCapture := False; + SaveAlignment := paLeft; // to avoid compiler warnings + if DoDropDown then + try + Pt := Point(0, Height); + Pt := ClientToScreen(Pt); + SaveAlignment := DropDownMenu.Alignment; + DropDownMenu.PopupComponent := Self; + + if DropDownMenu is TTBXPopupMenu then + begin + R := ClientRect; + ApplyMargins(R, Margins); + R.TopLeft := ClientToScreen(R.TopLeft); + R.BottomRight := ClientToScreen(R.BottomRight); + TTBXPopupMenu(DropDownMenu).PopupEx(R); + end + else DropDownMenu.Popup(Pt.X, Pt.Y); + finally + DropDownMenu.Alignment := SaveAlignment; + if Pushed then FPushed := False; + Invalidate; + RemoveClicks; + end + else inherited; + end; + finally + FInClick := False; + end; +end; + +procedure TTBXCustomButton.CMDialogChar(var Message: TCMDialogChar); +begin + with Message do + if Enabled and ShowAccelChar and IsAccel(CharCode, GetLabelText) and CanFocus and Visible then + begin + Click; + Result := 1; + end + else inherited; +end; + +procedure TTBXCustomButton.CMDialogKey(var Message: TCMDialogKey); +begin + with Message do + if (CharCode = VK_RETURN) and Focused and + (KeyDataToShiftState(Message.KeyData) = []) then + begin + Click; + Result := 1; + end + else inherited; +end; + +constructor TTBXCustomButton.Create(AOwner: TComponent); +begin + inherited; + FAlignment := taCenter; + FBorderSize := 4; + FGlyphSpacing := 4; + FImageChangeLink := TChangeLink.Create; + FImageChangeLink.OnChange := ImageListChange; + FRepeatDelay := 400; + FRepeatInterval := 100; + SmartFocus := True; + SpaceAsClick := True; + TabStop := True; +end; + +destructor TTBXCustomButton.Destroy; +begin + FImageChangeLink.Free; + inherited; +end; + +procedure TTBXCustomButton.DoAdjustHeight(ACanvas: TCanvas; var NewHeight: Integer); +var + Sz: Integer; +begin + if Length(GetLabelText) = 0 then + begin + if Images <> nil then NewHeight := Images.Height + BorderSize * 2 + else if BorderSize * 2 >= 16 then NewHeight := BorderSize * 2 + else NewHeight := 16; + end + else + begin + inherited DoAdjustHeight(ACanvas, NewHeight); + if Images <> nil then + if Layout in [blGlyphLeft, blGlyphRight] then + begin + Sz := Images.Height + BorderSize * 2; + if NewHeight < Sz then NewHeight := Sz; + end; + end; +end; + +function TTBXCustomButton.DoDrawText(ACanvas: TCanvas; var Rect: TRect; Flags: Integer): Integer; +var + ItemInfo: TTBXItemInfo; + Text: string; +begin + Text := GetLabelText; + if (Flags and DT_CALCRECT <> 0) and ((Text = '') or + (Text[1] = '&') and (Text[2] = #0)) then Text := Text + ' '; + Flags := DrawTextBiDiModeFlags(Flags); + ACanvas.Font := Font; + AdjustFont(ACanvas.Font); + + if Flags and DT_CALCRECT = DT_CALCRECT then + begin + Flags := Flags and not DT_VCENTER; + Result := DrawText(ACanvas.Handle, PChar(Text), Length(Text), Rect, Flags); + end + else + begin + GetItemInfo(ItemInfo); + ACanvas.Font.Color := clNone; + CurrentTheme.PaintCaption(Canvas, Rect, ItemInfo, Text, Flags, False); + Flags := Flags or DT_CALCRECT; + Result := DrawText(ACanvas.Handle, PChar(Text), Length(Text), Rect, Flags); + end; +end; + +function TTBXCustomButton.DoDropDown: Boolean; +begin + Result := FDropDownMenu <> nil; + if Result and Assigned(FOnDropDown) then FOnDropDown(Self, Result); +end; + +procedure TTBXCustomButton.DoMouseEnter; +begin + inherited; + Invalidate; +end; + +procedure TTBXCustomButton.DoMouseLeave; +begin + inherited; + Invalidate; +end; + +function TTBXCustomButton.GetControlsAlignment: TAlignment; +begin + Result := GetTextAlignment; +end; + +function TTBXCustomButton.GetFocusRect(const R: TRect): TRect; +begin + Result := R; + InflateRect(Result, -2, -2); +end; + +procedure TTBXCustomButton.GetItemInfo(out ItemInfo: TTBXItemInfo); +const + ViewTypes: array [TButtonStyle] of Integer = + (VT_TOOLBAR or TVT_EMBEDDED, VT_TOOLBAR); +begin + FillChar(ItemInfo, SizeOf(ItemInfo), 0); + ItemInfo.ViewType := ViewTypes[ButtonStyle]; + ItemInfo.Enabled := Enabled; + ItemInfo.ItemOptions := IO_TOOLBARSTYLE or IO_APPACTIVE; + ItemInfo.Pushed := Pushed and (MouseInControl or FMenuVisible); + if FMenuVisible and DropDownCombo then ItemInfo.Pushed := False; + if FMenuVisible then ItemInfo.IsPopupParent := True; + ItemInfo.Selected := Checked; + ItemInfo.IsVertical := False; + if ArrowVisible and DropDownCombo then ItemInfo.ComboPart := cpCombo; + if MouseInControl or FMenuVisible then ItemInfo.HoverKind := hkMouseHover; +end; + +function TTBXCustomButton.GetTextAlignment: TAlignment; +begin + Result := FAlignment; +end; + +function TTBXCustomButton.GetTextMargins: TRect; +var + L, Sz: Integer; + IsSpecialDropDown: Boolean; +begin + Result := Rect(BorderSize, BorderSize, BorderSize, BorderSize); + L := Length(GetLabelText); + if (Images <> nil) and (L > 0) then Sz := GlyphSpacing + else Sz := 0; + if Assigned(Images) then with Result do + case Layout of + blGlyphLeft: Inc(Left, Images.Width + Sz); + blGlyphTop: Inc(Top, Images.Height + Sz); + blGlyphRight: Inc(Right, Images.Width + Sz); + blGlyphBottom: Inc(Bottom, Images.Height + Sz); + end; + if ArrowVisible then + begin + if DropDownCombo then Inc(Result.Right, CurrentTheme.SplitBtnArrowWidth) + else + begin + IsSpecialDropDown := (L > 0) and (Images <> nil) and (Layout in [blGlyphTop, blGlyphBottom]); + if not IsSpecialDropDown then Inc(Result.Right, CurrentTheme.DropDownArrowWidth); + end; + end; +end; + +procedure TTBXCustomButton.ImageListChange(Sender: TObject); +begin + if Sender = Images then + begin + Invalidate; + AdjustHeight; + end; +end; + +procedure TTBXCustomButton.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); +var + R: TRect; +begin + inherited; + if Enabled and (Button = mbLeft) then + begin + R := ClientRect; + ApplyMargins(R, Margins); + FMenuVisible := not FInClick and Assigned(DropDownMenu) and + (not DropDownCombo or (X >= R.Right - CurrentTheme.SplitBtnArrowWidth)); + try + if FMenuVisible then + begin + ControlState := ControlState - [csClicked]; + if not FInClick then + begin + Click; + end; + end + else if Repeating then + begin + Click; + ControlState := ControlState - [csClicked]; + if not Assigned(FRepeatTimer) then FRepeatTimer := TTimer.Create(Self); + FRepeatTimer.Interval := RepeatDelay; + FRepeatTimer.OnTimer := RepeatTimerHandler; + FRepeatTimer.Enabled := True; + end; + finally + FMenuVisible := False; + end; + end; +end; + +procedure TTBXCustomButton.MouseMove(Shift: TShiftState; X, Y: Integer); +begin + inherited; + if Assigned(FRepeatTimer) and PtInButtonPart(Point(X, Y)) then FRepeatTimer.Enabled := True; +end; + +procedure TTBXCustomButton.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); +begin + inherited; + if Button = mbLeft then + begin + FRepeatTimer.Free; + FRepeatTimer := nil; + end; +end; + +procedure TTBXCustomButton.Notification(AComponent: TComponent; Operation: TOperation); +begin + inherited; + if Operation = opRemove then + begin + if AComponent = Images then Images := nil + else if AComponent = DropdownMenu then DropdownMenu := nil; + end; +end; + +procedure TTBXCustomButton.Paint; +const + Alignments: array [TAlignment] of Integer = (DT_LEFT, DT_RIGHT, DT_CENTER); + WordWraps: array [TTextWrapping] of Integer = (DT_SINGLELINE, + DT_SINGLELINE or DT_END_ELLIPSIS, + DT_SINGLELINE or DT_PATH_ELLIPSIS, DT_WORDBREAK); + ShowAccelChars: array [Boolean] of Integer = (DT_NOPREFIX, 0); +var + CR, IR, TR: TRect; + W, X: Integer; + Text: string; + ItemInfo: TTBXItemInfo; + RealAlignment: TAlignment; + CaptionHeight: Integer; + DrawStyle: Cardinal; + ShowArrow: Boolean; +begin + CR := ClientRect; + ApplyMargins(CR, Margins); + + ShowArrow := ArrowVisible; + GetItemInfo(ItemInfo); + if ShowArrow and DropDownCombo then + begin + TR := CR; + TR.Left := TR.Right - CurrentTheme.SplitBtnArrowWidth; + CR.Right := TR.Left; + + ItemInfo.ComboPart := cpSplitRight; + ItemInfo.Pushed := FMenuVisible; + CurrentTheme.PaintButton(Canvas, TR, ItemInfo); + + ItemInfo.ComboPart := cpSplitLeft; + ItemInfo.Pushed := Pushed and not FMenuVisible; + CurrentTheme.PaintButton(Canvas, CR, ItemInfo); + end + else CurrentTheme.PaintButton(Canvas, CR, ItemInfo); + if Focused then DrawFocusRect2(Canvas, GetFocusRect(CR)); + InflateRect(CR, -BorderSize, -BorderSize); + + if ShowArrow and not DropDownCombo then + begin + TR := CR; + TR.Left := TR.Right - CurrentTheme.DropdownArrowWidth; + CurrentTheme.PaintDropDownArrow(Canvas, TR, ItemInfo); + CR.Right := TR.Left - CurrentTheme.DropdownArrowMargin; + end; + + Text := GetLabelText; + DrawStyle := 0; + + if (Length(Text) > 0) or (Images <> nil) then + begin + RealAlignment := GetRealAlignment(Self); + + if Length(Text) = 0 then + begin + IR.Top := (CR.Top + CR.Bottom - Images.Height) div 2; + IR.Bottom := IR.Top + Images.Height; + + case RealAlignment of + taLeftJustify: IR.Left := CR.Left; + taRightJustify: IR.Left := CR.Right - Images.Width; + else + IR.Left := (CR.Left + CR.Right - Images.Width) div 2; + end; + IR.Right := IR.Left + Images.Width; + end + else + begin + TR := CR; + DrawStyle := DT_EXPANDTABS or WordWraps[Wrapping] or + Alignments[RealAlignment] or ShowAccelChars[ShowAccelChar]; + if (Images = nil) or (Layout in [blGlyphTop, blGlyphBottom]) then + begin + CaptionHeight := DoDrawText(Canvas, TR, DrawStyle or DT_CALCRECT); + TR := CR; + if Images = nil then + begin + TR.Top := (TR.Top + TR.Bottom - CaptionHeight) div 2; + end + else + begin + TR.Top := (CR.Top + CR.Bottom - Images.Height - GlyphSpacing - CaptionHeight) div 2; + IR.Top := TR.Top; + if Layout = blGlyphTop then Inc(TR.Top, Images.Height + GlyphSpacing) + else Inc(IR.Top, CaptionHeight + GlyphSpacing); + TR.Bottom := TR.Top + CaptionHeight; + IR.Bottom := IR.Top + Images.Height; + case RealAlignment of + taLeftJustify: IR.Left := CR.Left; + taRightJustify: IR.Left := CR.Right - Images.Width; + else + IR.Left := (CR.Left + CR.Right - Images.Width) div 2; + end; + IR.Right := IR.Left + Images.Width; + end; + end + else + begin + IR.Left := CR.Left; + if Layout = blGlyphLeft then Inc(TR.Left, Images.Width + GlyphSpacing) + else Dec(TR.Right, Images.Width + GlyphSpacing); + IR.Right := IR.Left + Images.Width; + IR.Top := (CR.Top + CR.Bottom - Images.Height) div 2; + IR.Bottom := IR.Top + Images.Height; + CaptionHeight := DoDrawText(Canvas, TR, DrawStyle or DT_CALCRECT); + TR.Top := (CR.Top + CR.Bottom - CaptionHeight) div 2; + TR.Bottom := TR.Top + CaptionHeight; + W := Images.Width + GlyphSpacing + TR.Right - TR.Left; + case RealAlignment of + taLeftJustify: X := CR.Left; + taRightJustify: X := CR.Right - W; + else + X := (CR.Left + CR.Right - W) div 2; + end; + case Layout of + blGlyphLeft: + begin + if X < CR.Left then X := CR.Left; + IR.Left := X; + IR.Right := X + Images.Width; + OffsetRect(TR, IR.Right + GlyphSpacing - TR.Left, 0); + if TR.Right > CR.Right then TR.Right := CR.Right; + DrawStyle := DrawStyle and not DT_RIGHT and not DT_CENTER or DT_LEFT; + end; + blGlyphRight: + begin + OffsetRect(TR, X - TR.Left, 0); + IR.Left := TR.Right + GlyphSpacing; + IR.Right := IR.Left + Images.Width; + DrawStyle := DrawStyle and not DT_CENTER and not DT_LEFT or DT_RIGHT; + end; + end; + end; + end; + + if Images <> nil then + CurrentTheme.PaintImage(Canvas, IR, ItemInfo, Images, ImageIndex); + + if Length(Text) > 0 then + begin + Brush.Style := bsClear; + DoDrawText(Canvas, TR, DrawStyle); + Brush.Style := bsSolid; + end; + end; +end; + +function TTBXCustomButton.PtInButtonPart(const Pt: TPoint): Boolean; +var + R: TRect; +begin + R := ClientRect; + ApplyMargins(R, Margins); + Result := PtInRect(R, Pt); +end; + +procedure TTBXCustomButton.RepeatTimerHandler(Sender: TObject); +var + P: TPoint; +begin + FRepeatTimer.Interval := RepeatInterval; + GetCursorPos(P); + P := ScreenToClient(P); + if not MouseCapture then + begin + FRepeatTimer.Free; + FRepeatTimer := nil; + end + else if Repeating and Pushed and PtInButtonPart(P) then Click + else FRepeatTimer.Enabled := False; +end; + +procedure TTBXCustomButton.SetAlignment(Value: TAlignment); +begin + FAlignment := Value; + Invalidate; +end; + +procedure TTBXCustomButton.SetAllowAllUnchecked(Value: Boolean); +begin + if FAllowAllUnchecked <> Value then + begin + FAllowAllUnchecked := Value; + UpdateCheckedState; + end; +end; + +procedure TTBXCustomButton.SetBorderSize(Value: Integer); +begin + FBorderSize := Value; + Invalidate; + AdjustHeight; +end; + +procedure TTBXCustomButton.SetButtonStyle(Value: TButtonStyle); +begin + FButtonStyle := Value; + Invalidate; +end; + +procedure TTBXCustomButton.SetChecked(Value: Boolean); +begin + if FGroupIndex = 0 then Value := False; + if FChecked <> Value then + begin + if FChecked and not AllowAllUnchecked then Exit; + FChecked := Value; + Invalidate; + if Value then UpdateCheckedState; + end; +end; + +procedure TTBXCustomButton.SetDropdownCombo(Value: Boolean); +begin + FDropdownCombo := Value; + Invalidate; +end; + +procedure TTBXCustomButton.SetDropdownMenu(Value: TPopupMenu); +begin + if FDropdownMenu <> Value then + begin + if FDropDownMenu <> nil then RemoveFreeNotification(FDropDownMenu); + FDropDownMenu := Value; + if FDropDownMenu <> nil then FreeNotification(FDropDownMenu); + Invalidate; + end; +end; + +procedure TTBXCustomButton.SetGlyphSpacing(Value: Integer); +begin + FGlyphSpacing := Value; + Invalidate; + AdjustHeight; +end; + +procedure TTBXCustomButton.SetGroupIndex(Value: Integer); +begin + if FGroupIndex <> Value then + begin + FGroupIndex := Value; + UpdateCheckedState; + end; +end; + +procedure TTBXCustomButton.SetImageIndex(Value: TImageIndex); +begin + if FImageIndex <> Value then + begin + FImageIndex := Value; + if Assigned(Images) then Invalidate; + end; +end; + +procedure TTBXCustomButton.SetImages(Value: TCustomImageList); +begin + if FImages <> nil then FImages.UnRegisterChanges(FImageChangeLink); + FImages := Value; + if FImages <> nil then + begin + FImages.RegisterChanges(FImageChangeLink); + FImages.FreeNotification(Self); + end; + Invalidate; + AdjustHeight; +end; + +procedure TTBXCustomButton.SetLayout(Value: TButtonLayout); +begin + FLayout := Value; + Invalidate; + AdjustHeight; +end; + +procedure TTBXCustomButton.UpdateCheckedState; +var + I: Integer; + C: TControl; +begin + if (FGroupIndex <> 0) and (Parent <> nil) then with Parent do + for I := 0 to ControlCount - 1 do + begin + C := Controls[I]; + if (C <> Self) and (C is TTBXCustomButton) then + with TTBXCustomButton(C) do + if FGroupIndex = Self.FGroupIndex then + begin + if Self.Checked and FChecked then + begin + FChecked := False; + Invalidate; + end; + FAllowAllUnchecked := Self.AllowAllUnchecked; + end; + end; +end; + +procedure TTBXCustomButton.WMCancelMode(var Message: TWMCancelMode); +begin + FRepeatTimer.Free; + FRepeatTimer := nil; + MouseLeft; +end; + +procedure TTBXCustomButton.WMLButtonDblClk(var Message: TWMLButtonDblClk); +begin + Perform(WM_LBUTTONDOWN, Message.Keys, Longint(Message.Pos)); +end; + +//----------------------------------------------------------------------------// + +procedure TTBXCustomButton.WMNCHitTest(var Message: TWMNCHitTest); +var + P: TPoint; + R: TRect; +begin + inherited; + if not (csDesigning in ComponentState) then + begin + P := ScreenToClient(SmallPointToPoint(Message.Pos)); + R := ClientRect; + ApplyMargins(R, Margins); + if not PtInRect(R, P) then Message.Result := HTTRANSPARENT; + end; +end; + +{ TTBXAlignmentPanel } + +procedure TTBXAlignmentPanel.AdjustClientRect(var Rect: TRect); +begin + inherited AdjustClientRect(Rect); + with Margins do + begin + Inc(Rect.Left, Left); + Inc(Rect.Top, Top); + Dec(Rect.Right, Right); + Dec(Rect.Bottom, Bottom); + end; +end; + +constructor TTBXAlignmentPanel.Create(AOwner: TComponent); +begin + inherited; + FMargins := TTBXControlMargins.Create; + FMargins.OnChange := MarginsChangeHandler; +end; + +destructor TTBXAlignmentPanel.Destroy; +begin + FMargins.Free; + inherited; +end; + +function TTBXAlignmentPanel.GetMinHeight: Integer; +var + I: Integer; + Control: TControl; +begin + Result := 0; + for I := 0 to ControlCount - 1 do + begin + Control := Controls[I]; + if Control.Visible then + if Control.Align in [alTop, alBottom] then Inc(Result, Control.Height) + else if Control.Align = alClient then Inc(Result, GetMinControlHeight(Control)); + end; + Inc(Result, Margins.Top + Margins.Bottom); +end; + +function TTBXAlignmentPanel.GetMinWidth: Integer; +var + I: Integer; + Control: TControl; +begin + Result := 0; + for I := 0 to ControlCount - 1 do + begin + Control := Controls[I]; + if Control.Visible then + if Control.Align in [alLeft, alRight] then Inc(Result, Control.Width) + else if Control.Align = alClient then Inc(Result, GetMinControlWidth(Control)); + end; + Inc(Result, Margins.Left + Margins.Right); +end; + +procedure TTBXAlignmentPanel.MarginsChangeHandler(Sender: TObject); +begin + Realign; + Invalidate; +end; + +procedure TTBXAlignmentPanel.Paint; +var + R: TRect; + DC: HDC; +begin + if csDesigning in ComponentState then + begin + DC := Canvas.Handle; + R := ClientRect; + SaveDC(DC); + InflateRect(R, -1, -1); + with R do ExcludeClipRect(DC, Left, Top, Right, Bottom); + InflateRect(R, 1, 1); + DitherRect(DC, R, clBtnFace, clBtnShadow); + RestoreDC(DC, -1); + end; +end; + +procedure TTBXAlignmentPanel.SetMargins(Value: TTBXControlMargins); +begin + FMargins.Assign(Value); +end; + +//----------------------------------------------------------------------------// + +{ TTBXCustomPageScroller } + +procedure TTBXCustomPageScroller.AdjustClientRect(var Rect: TRect); +begin + if Orientation = tpsoVertical then + begin + if tpsbPrev in FVisibleButtons then Dec(Rect.Top, ButtonSize); + if tpsbNext in FVisibleButtons then Inc(Rect.Bottom, ButtonSize); + OffsetRect(Rect, 0, -Position); + if Range > Rect.Bottom - Rect.Top then Rect.Bottom := Rect.Top + Range; + end + else + begin + if tpsbPrev in FVisibleButtons then Dec(Rect.Left, ButtonSize); + if tpsbNext in FVisibleButtons then Inc(Rect.Right, ButtonSize); + OffsetRect(Rect, -Position, 0); + if Range > Rect.Right - Rect.Left then Rect.Right := Rect.Left + Range; + end; +end; + +procedure TTBXCustomPageScroller.AlignControls(AControl: TControl; var ARect: TRect); +begin + CalcAutoRange; + UpdateButtons; + ARect := ClientRect; + inherited AlignControls(AControl, ARect); +end; + +function TTBXCustomPageScroller.AutoScrollEnabled: Boolean; +begin + Result := not AutoSize and not (DockSite and UseDockManager); +end; + +procedure TTBXCustomPageScroller.BeginScrolling(HitTest: Integer); +var + Msg: TMsg; +begin + if HitTest = HTSCROLLPREV then FScrollDirection := -1 else FScrollDirection := 1; + try + SetCapture(Handle); + FScrollCounter := FScrollDirection * 8; + FScrollPending := True; + FScrollTimer.Enabled := True; + DrawNCArea(False, 0, 0); + HandleScrollTimer; + FScrollPending := True; + FScrollTimer.Interval := ScrollDelay; + + while GetCapture = Handle do + begin + case Integer(GetMessage(Msg, 0, 0, 0)) of + -1: Break; + 0: begin + PostQuitMessage(Msg.WParam); + Break; + end; + end; + case Msg.Message of + WM_KEYDOWN, WM_KEYUP: if Msg.WParam = VK_ESCAPE then Break; + WM_LBUTTONDOWN, WM_LBUTTONDBLCLK: begin + Break; + end; + WM_LBUTTONUP: + begin + Break; + end; + WM_RBUTTONDOWN..WM_MBUTTONDBLCLK:; + WM_TIMER: + begin + HandleScrollTimer; + end; + else + TranslateMessage(Msg); + DispatchMessage(Msg); + end; + end; + finally + StopScrolling; + if GetCapture = Handle then ReleaseCapture; + end; +end; + +procedure TTBXCustomPageScroller.CalcAutoRange; +var + I: Integer; + Bias: Integer; + NewRange, AlignMargin: Integer; + CW, CH: Integer; + Control: TControl; +begin + if (FAutoRangeCount <= 0) and AutoRange then + begin + if AutoScrollEnabled then + begin + NewRange := 0; + AlignMargin := 0; + if Position > 0 then Bias := ButtonSize + else Bias := 0; + CW := ClientWidth; + CH := ClientHeight; + DisableAlign; + for I := 0 to ControlCount - 1 do + begin + Control := Controls[I]; + if Control.Visible or (csDesigning in Control.ComponentState) and + not (csNoDesignVisible in Control.ControlStyle) then + begin + if Orientation = tpsoVertical then + begin + if Control.Align in [alTop, alBottom, alClient] then + Control.Width := CW; + case Control.Align of + alTop, alNone: + if (Control.Align = alTop) or (Control.Anchors * [akTop, akBottom] = [akTop]) then + NewRange := Max(NewRange, Position + Control.Top + Control.Height + Bias); + alBottom: Inc(AlignMargin, Control.Height); + alClient: Inc(AlignMargin, GetMinControlHeight(Control)); + end + end + else + begin + if Control.Align in [alLeft, alRight, alClient] then + Control.Height := CH; + case Control.Align of + alLeft, alNone: + if (Control.Align = alLeft) or (Control.Anchors * [akLeft, akRight] = [akLeft]) then + NewRange := Max(NewRange, Position + Control.Left + Control.Width + Bias); + alRight: Inc(AlignMargin, Control.Width); + alClient: Inc(AlignMargin, GetMinControlWidth(Control)); + end; + end; + end; + end; + EnableAlign; + DoSetRange(NewRange + AlignMargin + Margin); + end + else DoSetRange(0); + end; +end; + +function TTBXCustomPageScroller.CalcClientArea: TRect; +begin + Result := ClientRect; + if Orientation = tpsoVertical then + begin + if tpsbPrev in FVisibleButtons then Dec(Result.Top, ButtonSize); + if tpsbNext in FVisibleButtons then Inc(Result.Bottom, ButtonSize); + end + else + begin + if tpsbPrev in FVisibleButtons then Dec(Result.Left, ButtonSize); + if tpsbNext in FVisibleButtons then Inc(Result.Right, ButtonSize); + end; +end; + +function TTBXCustomPageScroller.CanAutoSize(var NewWidth, NewHeight: Integer): Boolean; +begin + Result := NewHeight > FButtonSize * 3; +end; + +procedure TTBXCustomPageScroller.CMParentColorChanged(var Message: TMessage); +begin + if (Message.WParam = 0) then + begin + Message.WParam := 1; + Message.LParam := GetEffectiveColor(Parent); + end; + inherited; +end; + +procedure TTBXCustomPageScroller.ConstrainedResize(var MinWidth, MinHeight, MaxWidth, MaxHeight: Integer); +begin + // do not call inherited here +end; + +constructor TTBXCustomPageScroller.Create(AOwner: TComponent); +begin + inherited; + ControlStyle := ControlStyle + [csAcceptsControls, csClickEvents, csDoubleClicks]; + FAutoScroll := True; + FButtonSize := 10; + FScrollTimer := TTimer.Create(Self); + FScrollTimer.Enabled := False; + FScrollTimer.Interval := 60; + FScrollTimer.OnTimer := ScrollTimerTimer; + Width := 64; + Height := 64; +end; + +procedure TTBXCustomPageScroller.CreateParams(var Params: TCreateParams); +begin + inherited CreateParams(Params); + with Params.WindowClass do style := style and not (CS_HREDRAW or CS_VREDRAW); +end; + +procedure TTBXCustomPageScroller.DisableAutoRange; +begin + Inc(FAutoRangeCount); +end; + +procedure TTBXCustomPageScroller.DoSetRange(Value: Integer); +begin + FRange := Value; + if FRange < 0 then FRange := 0; + UpdateButtons; +end; + +procedure TTBXCustomPageScroller.DrawNCArea(const DrawToDC: Boolean; + const ADC: HDC; const Clip: HRGN); +const + CBtns: array [TTBXPageScrollerOrientation, Boolean] of Integer = + ((PSBT_UP, PSBT_DOWN), (PSBT_LEFT, PSBT_RIGHT)); +var + DC: HDC; + R, CR, BR: TRect; + ACanvas: TCanvas; + PrevBtnSize, NextBtnSize: Integer; +begin + if FVisibleButtons = [] then Exit; + if not DrawToDC then DC := GetWindowDC(Handle) + else DC := ADC; + try + GetWindowRect(Handle, R); + OffsetRect(R, -R.Left, -R.Top); + if not DrawToDC then + begin + SelectNCUpdateRgn(Handle, DC, Clip); + CR := R; + PrevBtnSize := 0; + NextBtnSize := 0; + if tpsbPrev in FVisibleButtons then PrevBtnSize := ButtonSize; + if tpsbNext in FVisibleButtons then NextBtnSize := ButtonSize; + if Orientation = tpsoVertical then + begin + Inc(CR.Top, PrevBtnSize); + Dec(CR.Bottom, NextBtnSize); + end + else + begin + Inc(CR.Left, PrevBtnSize); + Dec(CR.Right, NextBtnSize); + end; + with CR do ExcludeClipRect(DC, Left, Top, Right, Bottom); + end; + + ACanvas := TCanvas.Create; + try + ACanvas.Handle := DC; + ACanvas.Brush.Color := Color; + ACanvas.FillRect(R); + + if tpsbPrev in FVisibleButtons then + begin + BR := R; + if Orientation = tpsoVertical then BR.Bottom := BR.Top + ButtonSize + else BR.Right := BR.Left + ButtonSize; + CurrentTheme.PaintPageScrollButton(ACanvas, BR, CBtns[Orientation, False], + FScrollDirection < 0); + end; + if tpsbNext in FVisibleButtons then + begin + BR := R; + if Orientation = tpsoVertical then BR.Top := BR.Bottom - ButtonSize + else BR.Left := BR.Right - ButtonSize; + CurrentTheme.PaintPageScrollButton(ACanvas, BR, CBtns[Orientation, True], + FScrollDirection > 0); + end; + finally + ACanvas.Handle := 0; + ACanvas.Free; + end; + finally + if not DrawToDC then ReleaseDC(Handle, DC); + end; +end; + +procedure TTBXCustomPageScroller.EnableAutoRange; +begin + if FAutoRangeCount > 0 then + begin + Dec(FAutoRangeCount); + if FAutoRangeCount = 0 then CalcAutoRange; + end; +end; + +procedure TTBXCustomPageScroller.HandleScrollTimer; +var + Pt: TPoint; + R: TRect; + OldPosition: Integer; + OldDirection: Integer; +begin + GetCursorPos(Pt); + GetWindowRect(Handle, R); + if not PtInRect(R, Pt) then + begin + StopScrolling; + end + else if FScrollDirection = 0 then + begin + FScrollTimer.Enabled := False; + FScrollCounter := 0; + end + else + begin + OldPosition := Position; + OldDirection := FScrollDirection; + if ((FScrollDirection > 0) and (FScrollCounter < 0)) or + ((FScrollDirection < 0) and (FScrollCounter > 0)) then FScrollCounter := 0; + if FScrollDirection > 0 then Inc(FScrollCounter) + else Dec(FScrollCounter); + Position := Position + FScrollCounter; + if Position = OldPosition then + begin + ReleaseCapture; + FScrollTimer.Enabled := False; + DrawNCArea(False, 0, 0); + end + else + begin + if FScrollPending or (FScrollDirection * OldDirection <= 0) or + (FScrollDirection * OldDirection <= 0) then + DrawNCArea(False, 0, 0); + end; + end; + if FScrollPending then FScrollTimer.Interval := ScrollInterval; + FScrollPending := False; +end; + +function TTBXCustomPageScroller.IsRangeStored: Boolean; +begin + Result := not AutoRange; +end; + +procedure TTBXCustomPageScroller.Loaded; +begin + inherited; + UpdateButtons; +end; + +procedure TTBXCustomPageScroller.RecalcNCArea; +begin + SetWindowPos(Handle, 0, 0, 0, 0, 0, + SWP_FRAMECHANGED or SWP_NOACTIVATE or SWP_NOZORDER or SWP_NOMOVE or SWP_NOSIZE); +end; + +procedure TTBXCustomPageScroller.Resizing; +begin + // do nothing by default +end; + +procedure TTBXCustomPageScroller.ScrollTimerTimer(Sender: TObject); +begin + HandleScrollTimer; +end; + +procedure TTBXCustomPageScroller.ScrollToCenter(ARect: TRect); +var + X, Y: Integer; +begin + if Orientation = tpsoVertical then + begin + if ARect.Bottom - ARect.Top < Range then Y := (ARect.Top + ARect.Bottom) div 2 + else Y := ARect.Top; + Position := Position + Y - Height div 2; + end + else + begin + if ARect.Right - ARect.Left < Range then X := (ARect.Left + ARect.Right) div 2 + else X := ARect.Left; + Position := Position + X - Width div 2; + end; +end; + +procedure TTBXCustomPageScroller.ScrollToCenter(AControl: TControl); +var + R: TRect; +begin + R := AControl.ClientRect; + R.TopLeft := ScreenToClient(AControl.ClientToScreen(R.TopLeft)); + R.BottomRight := ScreenToClient(AControl.ClientToScreen(R.BottomRight)); + ScrollToCenter(R); +end; + +procedure TTBXCustomPageScroller.SetAutoRange(Value: Boolean); +begin + if FAutoRange <> Value then + begin + FAutoRange := Value; + if Value then CalcAutoRange else Range := 0; + end; +end; + +procedure TTBXCustomPageScroller.SetButtonSize(Value: Integer); +begin + if FButtonSize <> Value then + begin + FButtonSize := Value; + UpdateButtons; + end; +end; + +procedure TTBXCustomPageScroller.SetOrientation(Value: TTBXPageScrollerOrientation); +begin + if Orientation <> Value then + begin + FOrientation := Value; + Realign; + end; +end; + +procedure TTBXCustomPageScroller.SetPosition(Value: Integer); +var + OldPos: Integer; +begin + if csReading in ComponentState then FPosition := Value + else + begin + ValidatePosition(Value); + if FPosition <> Value then + begin + OldPos := FPosition; + FPosition := Value; + + if OldPos > 0 then Inc(OldPos, ButtonSize); + if Value > 0 then Inc(Value, ButtonSize); + + if Orientation = tpsoHorizontal then ScrollBy(OldPos - Value, 0) + else ScrollBy(0, OldPos - Value); + UpdateButtons; + end; + end; +end; + +procedure TTBXCustomPageScroller.SetRange(Value: Integer); +begin + FAutoRange := False; + DoSetRange(Value); +end; + +procedure TTBXCustomPageScroller.StopScrolling; +begin + if (FScrollDirection <> 0) or (FScrollCounter <> 0) or (FScrollTimer.Enabled) then + begin + FScrollDirection := 0; + FScrollCounter := 0; + FScrollTimer.Enabled := False; + if HandleAllocated and IsWindowVisible(Handle) then DrawNCArea(False, 0, 0); + end; +end; + +procedure TTBXCustomPageScroller.UpdateButtons; +var + Sz: Integer; + OldVisibleButtons: TTBXPageScrollerButtons; + RealignNeeded: Boolean; +begin + RealignNeeded := False; + if not FUpdatingButtons and HandleAllocated then + try + FUpdatingButtons := True; + if Orientation = tpsoHorizontal then Sz := Width + else Sz := Height; + OldVisibleButtons := FVisibleButtons; + FVisibleButtons := []; + + FPosRange := Range - Sz; + if FPosRange < 0 then FPosRange := 0; + if FPosition > FPosRange - 1 then + begin + FPosition := FPosRange; + RealignNeeded := True; + end; + + if Sz > ButtonSize * 3 then + begin + if Position > 0 then Include(FVisibleButtons, tpsbPrev); + if Range - Position > Sz then Include(FVisibleButtons, tpsbNext); + end; + if FVisibleButtons <> OldVisibleButtons then + begin + RecalcNCArea; + RealignNeeded := True; + end; + finally + FUpdatingButtons := False; + if RealignNeeded then Realign; + end; +end; + +procedure TTBXCustomPageScroller.ValidatePosition(var NewPos: Integer); +begin + if NewPos < 0 then NewPos := 0; + if NewPos > FPosRange then NewPos := FPosRange; +end; + +procedure TTBXCustomPageScroller.WMEraseBkgnd(var Message: TWmEraseBkgnd); +begin + if Color = clNone then + begin + DrawParentBackground(Self, Message.DC, ClientRect); + Message.Result := 1; + end + else inherited; +end; + +procedure TTBXCustomPageScroller.WMMouseMove(var Message: TWMMouseMove); +begin + if AutoScroll then StopScrolling; + inherited; +end; + +procedure TTBXCustomPageScroller.WMNCCalcSize(var Message: TWMNCCalcSize); +begin + with Message.CalcSize_Params^ do + begin + if Orientation = tpsoVertical then + begin + if tpsbPrev in FVisibleButtons then Inc(rgrc[0].Top, ButtonSize); + if tpsbNext in FVisibleButtons then Dec(rgrc[0].Bottom, ButtonSize); + end + else + begin + if tpsbPrev in FVisibleButtons then Inc(rgrc[0].Left, ButtonSize); + if tpsbNext in FVisibleButtons then Dec(rgrc[0].Right, ButtonSize); + end; + Message.Result := 0; + end; +end; + +procedure TTBXCustomPageScroller.WMNCHitTest(var Message: TWMNCHitTest); +var + Pt: TPoint; + R: TRect; +begin + DefaultHandler(Message); + with Message do if Result <> HTCLIENT then + begin + Pt := SmallPointToPoint(Pos); + GetWindowRect(Handle, R); + if PtInRect(R, Pt) then + begin + if (tpsbPrev in FVisibleButtons) then + begin + if Orientation = tpsoVertical then + begin + if Pt.Y < R.Top + ButtonSize then Result := HTSCROLLPREV + end + else + begin + if Pt.X < R.Left + ButtonSize then Result := HTSCROLLPREV + end; + end; + if (tpsbNext in FVisibleButtons) then + begin + if Orientation = tpsoVertical then + begin + if Pt.Y >= R.Bottom - ButtonSize then Result := HTSCROLLNEXT; + end + else + begin + if Pt.X >= R.Right - ButtonSize then Result := HTSCROLLNEXT; + end; + end; + end; + end; +end; + +procedure TTBXCustomPageScroller.WMNCLButtonDown(var Message: TWMNCLButtonDown); +begin + if (Win32MajorVersion >= 5) or + (Win32MajorVersion = 4) and (Win32MinorVersion >= 10) then + CallTrackMouseEvent(Handle, TME_LEAVE or $10 {TME_NONCLIENT}); + + if not AutoScroll and (Message.HitTest in [HTSCROLLPREV, HTSCROLLNEXT]) then + BeginScrolling(Message.HitTest) + else + inherited; +end; + +procedure TTBXCustomPageScroller.WMNCMouseLeave(var Message: TMessage); +begin + if AutoScroll then StopScrolling; + inherited; +end; + +procedure TTBXCustomPageScroller.WMNCMouseMove(var Message: TWMNCMouseMove); +var + OldScrollDirection: Integer; +begin + if (Win32MajorVersion >= 5) or + (Win32MajorVersion = 4) and (Win32MinorVersion >= 10) then + CallTrackMouseEvent(Handle, TME_LEAVE or $10 {TME_NONCLIENT}); + + if AutoScroll then + begin + OldScrollDirection := FScrollDirection; + case Message.HitTest of + HTSCROLLPREV: FScrollDirection := -1; + HTSCROLLNEXT: FScrollDirection := 1; + else + StopScrolling; + inherited; + Exit; + end; + if OldScrollDirection <> FScrollDirection then + begin + FScrollCounter := 0; + FScrollPending := True; + FScrollTimer.Interval := ScrollDelay; + FScrollTimer.Enabled := True; + DrawNCArea(False, 0, 0); + end; + end; +end; + +procedure TTBXCustomPageScroller.WMNCPaint(var Message: TMessage); +begin + DrawNCArea(False, 0, HRGN(Message.WParam)); +end; + +procedure TTBXCustomPageScroller.WMSize(var Message: TWMSize); +begin + FUpdatingButtons := True; + try + CalcAutoRange; + finally + FUpdatingButtons := False; + end; + Inc(FAutoRangeCount); + inherited; + Resizing; + Dec(FAutoRangeCount); +end; + +{ TTBXCustomCheckBox } + +procedure TTBXCustomCheckBox.Click; +begin + Toggle; + Invalidate; + inherited; +end; + +procedure TTBXCustomCheckBox.CMDialogChar(var Message: TCMDialogChar); +begin + with Message do + if Enabled and ShowAccelChar and IsAccel(CharCode, GetLabelText) and CanFocus and Visible then + begin + Click; + Result := 1; + end + else inherited; +end; + +procedure TTBXCustomCheckBox.CMDialogKey(var Message: TCMDialogKey); +begin + with Message do + if (CharCode = VK_RETURN) and Focused and + (KeyDataToShiftState(Message.KeyData) = []) then + begin + Click; + Result := 1; + end + else inherited; +end; + +procedure TTBXCustomCheckBox.CNCommand(var Message: TWMCommand); +begin + if Message.NotifyCode = BN_CLICKED then Toggle; +end; + +constructor TTBXCustomCheckBox.Create(AOwner: TComponent); +begin + inherited; + SmartFocus := True; + SpaceAsClick := True; + TabStop := True; +end; + +procedure TTBXCustomCheckBox.DoAdjustHeight(ACanvas: TCanvas; var NewHeight: Integer); +begin + inherited DoAdjustHeight(ACanvas, NewHeight); + if NewHeight < GetGlyphSize + 4 then NewHeight := GetGlyphSize + 4; +end; + +procedure TTBXCustomCheckBox.DoChange; +begin + if Assigned(FOnChange) then FOnChange(Self); +end; + +procedure TTBXCustomCheckBox.DoMouseEnter; +begin + inherited; + Invalidate; +end; + +procedure TTBXCustomCheckBox.DoMouseLeave; +begin + inherited; + Invalidate; +end; + +function TTBXCustomCheckBox.DoSetState(var NewState: TCheckBoxState): Boolean; +begin + Result := True; +end; + +function TTBXCustomCheckBox.GetChecked: Boolean; +begin + Result := State = cbChecked; +end; + +function TTBXCustomCheckBox.GetFocusRect(const R: TRect): TRect; +const + Alignments: array [TLeftRight] of Word = (DT_LEFT, DT_RIGHT); + WordWraps: array [TTextWrapping] of Integer = (DT_SINGLELINE or DT_VCENTER, + DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS, + DT_SINGLELINE or DT_VCENTER or DT_PATH_ELLIPSIS, DT_WORDBREAK); +var + TR: TRect; +begin + TR := R; + ApplyMargins(TR, GetTextMargins); + DoDrawText(Canvas, TR, (DT_EXPANDTABS or DT_CALCRECT) or WordWraps[Wrapping] or Alignments[Alignment]); + Result := R; + Result.Right := TR.Right + 2; + Result.Left := TR.Left - 2; +end; + +function TTBXCustomCheckBox.GetGlyphSize: Integer; +begin + Result := 13; +end; + +function TTBXCustomCheckBox.GetTextAlignment: TAlignment; +begin + Result := taLeftJustify; +end; + +function TTBXCustomCheckBox.GetTextMargins: TRect; +begin + Result := Rect(2, 2, 2, 2); + with Result do + if GetRealAlignment(Self) = taLeftJustify then Inc(Left, GetGlyphSize + 6) + else Inc(Right, GetGlyphSize + 6); +end; + +procedure TTBXCustomCheckBox.Paint; +const + EnabledState: array [Boolean] of Integer = (PFS_DISABLED, 0); + StateFlags: array [TCheckBoxState] of Integer = (0, PFS_CHECKED, PFS_MIXED); + HotState: array [Boolean] of Integer = (0, PFS_HOT); + PushedState: array [Boolean] of Integer = (0, PFS_PUSHED); + FocusedState: array [Boolean] of Integer = (0, PFS_FOCUSED); +var + Rect: TRect; + Sz, Flags: Integer; +begin + inherited; + with Canvas do + begin + Rect := ClientRect; + ApplyMargins(Rect, Margins); + Sz := GetGlyphSize; + if Alignment = taLeftJustify then Rect.Right := Rect.Left + GetGlyphSize + else Rect.Left := Rect.Right - GetGlyphSize; + Rect.Top := (Rect.Top + Rect.Bottom + 1 - Sz) div 2; + Rect.Bottom := Rect.Top + Sz; + Brush.Color := clBtnShadow; + Flags := EnabledState[Enabled]; + if Enabled then Flags := Flags or StateFlags[State] or + HotState[MouseInControl] or PushedState[Pushed and MouseInControl] or FocusedState[Focused]; + CurrentTheme.PaintFrameControl(Canvas, Rect, PFC_CHECKBOX, Flags, nil); + end; +end; + +procedure TTBXCustomCheckBox.SetChecked(Value: Boolean); +begin + if Value then State := cbChecked else State := cbUnchecked; +end; + +procedure TTBXCustomCheckBox.SetState(Value: TCheckBoxState); +begin + if (FState <> Value) and DoSetState(Value) then + begin + FState := Value; + Invalidate; + DoChange; + end; +end; + +procedure TTBXCustomCheckBox.Toggle; +begin + case State of + cbUnchecked: if AllowGrayed then State := cbGrayed else State := cbChecked; + cbChecked: State := cbUnchecked; + cbGrayed: State := cbChecked; + end; +end; + +procedure TTBXCustomCheckBox.WMNCHitTest(var Message: TWMNCHitTest); +var + P: TPoint; + R: TRect; + SL, SR: Integer; +begin + inherited; + if not (csDesigning in ComponentState) then + begin + P := ScreenToClient(SmallPointToPoint(Message.Pos)); + R := ClientRect; + ApplyMargins(R, Margins); + SL := R.Left; SR := R.Right; + R := GetFocusRect(R); + if GetRealAlignment(Self) = taLeftJustify then R.Left := SL + else R.Right := SR; + if not PtInRect(R, P) then Message.Result := HTTRANSPARENT; + end; +end; + +{ TTBXCustomRadioButton } + +procedure TTBXCustomRadioButton.Click; +begin + if not Checked then Checked := True; + Invalidate; + inherited; +end; + +procedure TTBXCustomRadioButton.CMDialogChar(var Message: TCMDialogChar); +begin + with Message do + if Enabled and ShowAccelChar and IsAccel(CharCode, GetLabelText) and CanFocus and Visible then + begin + Click; + Result := 1; + end + else inherited; +end; + +procedure TTBXCustomRadioButton.CNCommand(var Message: TWMCommand); +begin + if Message.NotifyCode = BN_CLICKED then Checked := not Checked; +end; + +constructor TTBXCustomRadioButton.Create(AOwner: TComponent); +begin + inherited; + SmartFocus := True; + SpaceAsClick := True; + TabStop := True; +end; + +procedure TTBXCustomRadioButton.DoAdjustHeight(ACanvas: TCanvas; var NewHeight: Integer); +begin + inherited DoAdjustHeight(ACanvas, NewHeight); + if NewHeight < GetGlyphSize + 4 then NewHeight := GetGlyphSize + 4; +end; + +procedure TTBXCustomRadioButton.DoChange; +begin + if Assigned(FOnChange) then FOnChange(Self); +end; + +procedure TTBXCustomRadioButton.DoMouseEnter; +begin + inherited; + Invalidate; +end; + +procedure TTBXCustomRadioButton.DoMouseLeave; +begin + inherited; + Invalidate; +end; + +function TTBXCustomRadioButton.DoSetChecked(var Value: Boolean): Boolean; +begin + Result := True; +end; + +function TTBXCustomRadioButton.GetFocusRect(const R: TRect): TRect; +const + Alignments: array [TLeftRight] of Word = (DT_LEFT, DT_RIGHT); + WordWraps: array [TTextWrapping] of Integer = (DT_SINGLELINE or DT_VCENTER, + DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS, + DT_SINGLELINE or DT_VCENTER or DT_PATH_ELLIPSIS, DT_WORDBREAK); +var + TR: TRect; +begin + TR := R; + ApplyMargins(TR, GetTextMargins); + DoDrawText(Canvas, TR, (DT_EXPANDTABS or DT_CALCRECT) or WordWraps[Wrapping] or Alignments[Alignment]); + Result := R; + Result.Right := TR.Right + 2; + Result.Left := TR.Left - 2; +end; + +function TTBXCustomRadioButton.GetGlyphSize: Integer; +begin + Result := 13; +end; + +function TTBXCustomRadioButton.GetTextAlignment: TAlignment; +begin + Result := taLeftJustify; +end; + +function TTBXCustomRadioButton.GetTextMargins: TRect; +begin + Result := Rect(2, 2, 2, 2); + with Result do + if GetRealAlignment(Self) = taLeftJustify then Inc(Left, GetGlyphSize + 6) + else Inc(Right, GetGlyphSize + 6); +end; + +procedure TTBXCustomRadioButton.Paint; +const + EnabledState: array [Boolean] of Integer = (PFS_DISABLED, 0); + CheckedState: array [Boolean] of Integer = (0, PFS_CHECKED); + HotState: array [Boolean] of Integer = (0, PFS_HOT); + PushedState: array [Boolean] of Integer = (0, PFS_PUSHED); + FocusedState: array [Boolean] of Integer = (0, PFS_FOCUSED); +var + Rect: TRect; + Sz, Flags: Integer; +begin + inherited; + with Canvas do + begin + Rect := ClientRect; + with Margins do + begin + Inc(Rect.Left, Left); + Inc(Rect.Top, Top); + Dec(Rect.Right, Right); + Dec(Rect.Bottom, Bottom); + end; + Sz := GetGlyphSize; + if Alignment = taLeftJustify then Rect.Right := Rect.Left + GetGlyphSize + else Rect.Left := Rect.Right - GetGlyphSize; + Rect.Top := (Rect.Top + Rect.Bottom + 1 - Sz) div 2; + Rect.Bottom := Rect.Top + Sz; + Brush.Color := clBtnShadow; + Flags := EnabledState[Enabled]; + if Enabled then Flags := Flags or CheckedState[Checked] or + HotState[MouseInControl] or PushedState[Pushed and MouseInControl] or FocusedState[Focused]; + CurrentTheme.PaintFrameControl(Canvas, Rect, PFC_RADIOBUTTON, Flags, nil); + end; +end; + +procedure TTBXCustomRadioButton.SetChecked(Value: Boolean); +begin + if (Value <> FChecked) and DoSetChecked(Value) then + begin + FChecked := Value; + TabStop := Value; + if Value then TurnSiblingsOff; + Invalidate; + DoChange; + end; +end; + +procedure TTBXCustomRadioButton.SetGroupIndex(Value: Integer); +begin + FGroupIndex := Value; + if Checked then TurnSiblingsOff; +end; + +procedure TTBXCustomRadioButton.TurnSiblingsOff; +var + I: Integer; + Sibling: TControl; +begin + if Parent <> nil then + with Parent do + for I := 0 to ControlCount - 1 do + begin + Sibling := Controls[I]; + if (Sibling <> Self) and (Sibling is TTBXCustomRadioButton) then + with TTBXCustomRadioButton(Sibling) do + begin + if GroupIndex = Self.GroupIndex then SetChecked(False); + end; + end; +end; + +procedure TTBXCustomRadioButton.WMNCHitTest(var Message: TWMNCHitTest); +var + P: TPoint; + R: TRect; + SL, SR: Integer; +begin + inherited; + if not (csDesigning in ComponentState) then + begin + P := ScreenToClient(SmallPointToPoint(Message.Pos)); + R := ClientRect; + ApplyMargins(R, Margins); + SL := R.Left; SR := R.Right; + R := GetFocusRect(R); + if GetRealAlignment(Self) = taLeftJustify then R.Left := SL + else R.Right := SR; + if not PtInRect(R, P) then Message.Result := HTTRANSPARENT; + end; +end; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXExtItems.pas b/official/2.1.6+2.1.beta1/TBX/TBXExtItems.pas new file mode 100644 index 0000000..618a993 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXExtItems.pas @@ -0,0 +1,2376 @@ +unit TBXExtItems; + +// TBX Package +// Copyright 2001-2004 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// $Id: TBXExtItems.pas 16 2004-05-26 02:02:55Z Alex@ZEISS $ + +interface + +{$I ..\..\Source\TB2Ver.inc} +{$I TBX.inc} + +{$DEFINE COMPATIBLE} + +uses + Windows, Messages, Classes, SysUtils, Graphics, Controls, StdCtrls, ExtCtrls, + TBX, TBXThemes, TB2Item, TB2Toolbar, TB2ExtItems, TBXLists, TB2MRU; + +const + tcrNumericProperty = 3; + tcrSpinButton = 4; + tcrList = 5; + +type + TTBXEditItemViewer = class; + TTBXEditChange = procedure(Sender: TObject; const Text: string) of object; + + { TTBXEditItem } + { Extends standard TTBEditItem, providing additional features and some + combo box functionality, which is used in descendants } + + TTBXEditItem = class(TTBEditItem) + private + FAlignment: TAlignment; + FAutoCompleteCounter: Integer; + FEditorFontSettings: TFontSettings; + FFontSettings: TFontSettings; + FIsChanging: Boolean; + FLastEditChange: string; + FPasswordChar: Char; + FReadOnly: Boolean; + FShowImage: Boolean; + FOnChange: TTBXEditChange; + procedure FontSettingsChanged(Sender: TObject); + procedure SetAlignment(Value: TAlignment); + procedure SetPasswordChar(Value: Char); + procedure SetShowImage(const Value: Boolean); + procedure SetFontSettings(Value: TFontSettings); + protected + function DoAcceptText(var NewText: string): Boolean; override; + function DoAutoComplete(var AText: string): Boolean; virtual; + procedure DoBeginEdit(Viewer: TTBEditItemViewer); override; + procedure DoChange(const AText: string); virtual; + procedure DoTextChanged(Reason: Integer); override; + function GetImageIndex: Integer; virtual; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + procedure GetPopupPosition(ParentView: TTBView; PopupWindow: TTBPopupWindow; var PopupPositionRec: TTBPopupPositionRec); override; + function GetPopupWindowClass: TTBPopupWindowClass; override; + procedure HandleEditChange(Edit: TEdit); virtual; + public + function StartEditing(AView: TTBView): Boolean; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + published + property Alignment: TAlignment read FAlignment write SetAlignment default taLeftJustify; + property EditorFontSettings: TFontSettings read FEditorFontSettings write FEditorFontSettings; + property ExtendedAccept; + property FontSettings: TFontSettings read FFontSettings write SetFontSettings; + property ImageIndex; + property Images; + property PasswordChar: Char read FPasswordChar write SetPasswordChar default #0; + property ReadOnly: Boolean read FReadOnly write FReadOnly default False; + property ShowImage: Boolean read FShowImage write SetShowImage default False; + property OnChange: TTBXEditChange read FOnChange write FOnChange; + property OnSelect; + end; + + TTBXEditItemViewer = class(TTBEditItemViewer) + private + procedure EditChangeHandler(Sender: TObject); + function MeasureEditCaption: TSize; + function MeasureTextHeight: Integer; + procedure HandleEditChange(Edit: TEdit); + protected + OldWndProc: TWndMethod; + procedure CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); override; + function DoExecute: Boolean; override; + function HandleEditMessage(var Message: TMessage): Boolean; virtual; + function GetAccRole: Integer; override; + procedure GetItemInfo(out ItemInfo: TTBXItemInfo; IsHoverItem, IsPushed, UseMenuColor: Boolean); virtual; + function GetEditControlClass: TEditClass; override; + procedure GetEditInfo(out EditInfo: TTBXEditInfo; const ItemInfo: TTBXItemInfo); virtual; + function GetIndentBefore: Integer; virtual; + function GetIndentAfter: Integer; virtual; + procedure GetEditRect(var R: TRect); override; + function IsToolbarSize: Boolean; override; + procedure NewEditWndProc(var Message: TMessage); + procedure Paint(const Canvas: TCanvas; const ClientAreaRect: TRect; IsHoverItem, IsPushed, UseDisabledShadow: Boolean); override; + function ShowImage: Boolean; virtual; + public + function IsToolbarStyle: Boolean; override; + end; + + { TTBXSpinEditItem } + TTBXCustomSpinEditItem = class; + + TSEValueType = (evtInteger, evtFloat, evtHex); + TDecimal = 0..10; + TSEChangeEvent = procedure(Sender: TTBXCustomSpinEditItem; const AValue: Extended) of object; + TSEConvertEvent = procedure(Sender: TTBXCustomSpinEditItem; const APrefix, APostfix: string; var AValue: Extended; var CanConvert: Boolean) of object; + TSEStepEvent = procedure(Sender: TTBXCustomSpinEditItem; Step: Integer; const OldValue: Extended; var NewValue: Extended) of object; + TSETextToValueEvent = procedure(Sender: TTBXCustomSpinEditItem; const AText: string; out AValue: Extended; var CanConvert: Boolean) of object; + TSEValueToTextEvent = procedure(Sender: TTBXCustomSpinEditItem; const AValue: Extended; var Text: string) of object; + + TTBXCustomSpinEditItem = class(TTBXEditItem) + private + FDecimal: TDecimal; + FLastGoodValue: Extended; + FMaxValue: Extended; + FMinValue: Extended; + FIncrement: Extended; + FSpaceBeforePostfix: Boolean; + FSpaceAfterPrefix: Boolean; + FPostfix: string; + FPrefix: string; + FSnap: Boolean; + FValueType: TSEValueType; + FOnConvert: TSEConvertEvent; + FOnTextToValue: TSETextToValueEvent; + FOnValueChange: TSEChangeEvent; + FOnValueToText: TSEValueToTextEvent; + FOnStep: TSEStepEvent; + function IsIncrementStored: Boolean; + function IsMinValueStored: Boolean; + function IsMaxValueStored: Boolean; + function IsValueStored: Boolean; + function GetValue: Extended; + procedure SetValue(NewValue: Extended); + procedure SetValueType(NewType: TSEValueType); + procedure SetDecimal(NewDecimal: TDecimal); + procedure SetIncrement(const NewIncrement: Extended); + procedure SetPostfix(const NewPostfix: string); + procedure SetPrefix(const NewPrefix: string); + procedure SetSpaceAfterPrefix(UseSpace: Boolean); + procedure SetSpaceBeforePostfix(UseSpace: Boolean); + function ValidateUnits(const S: string): Boolean; + function GetAsInteger: Integer; + procedure SetAsInteger(AValue: Integer); + protected + function CheckValue(const V: Extended): Extended; + procedure ClickUp; + procedure ClickDown; + function DoAcceptText(var NewText: string): Boolean; override; + function DoConvert(const APrefix, APostfix: string; var AValue: Extended): Boolean; virtual; + procedure DoStep(Step: Integer; const OldValue: Extended; var NewValue: Extended); virtual; + procedure DoTextChanged(Reason: Integer); override; + function DoTextToValue(const AText: string; out AValue: Extended): Boolean; virtual; + procedure DoValueChange(const V: Extended); virtual; + procedure DoValueToText(const NewValue: Extended; var NewText: string); virtual; + function GetAsText(AValue: Extended): string; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + function ParseValue(const S: string; out V: Extended): Boolean; + procedure SetValueEx(NewValue: Extended; Reason: Integer); + property Alignment default taRightJustify; + property OnConvert: TSEConvertEvent read FOnConvert write FOnConvert; + property OnStep: TSEStepEvent read FOnStep write FOnStep; + property OnTextToValue: TSETextToValueEvent read FOnTextToValue write FOnTextToValue; + property OnValueChange: TSEChangeEvent read FOnValueChange write FOnValueChange; + property OnValueToText: TSEValueToTextEvent read FOnValueToText write FOnValueToText; + public + constructor Create(AOwner: TComponent); override; + property ValueType: TSEValueType read FValueType write SetValueType default evtInteger; + property AsInteger: Integer read GetAsInteger write SetAsInteger stored False; + property Decimal: TDecimal read FDecimal write SetDecimal default 2; + property Increment: Extended read FIncrement write SetIncrement stored IsIncrementStored; + property MaxValue: Extended read FMaxValue write FMaxValue stored IsMaxValueStored; + property MinValue: Extended read FMinValue write FMinValue stored IsMinValueStored; + property Postfix: string read FPostfix write SetPostfix; + property Prefix: string read FPrefix write SetPrefix; + property Snap: Boolean read FSnap write FSnap default True; + property SpaceAfterPrefix: Boolean read FSpaceAfterPrefix write SetSpaceAfterPrefix; + property SpaceBeforePostfix: Boolean read FSpaceBeforePostfix write SetSpaceBeforePostfix; + property Value: Extended read GetValue write SetValue stored IsValueStored; + published + property Text stored False; + end; + + TTBXSpinEditItem = class(TTBXCustomSpinEditItem) + published + property ValueType; + property Alignment; + property Decimal; + property Increment; + property MaxValue; + property MinValue; + property Postfix; + property Prefix; + property Snap; + property SpaceAfterPrefix; + property SpaceBeforePostfix; + property Value; + property OnConvert; + property OnStep; + property OnTextToValue; + property OnValueChange; + property OnValueToText; + end; + + TSEBtnState = (ebsNone, ebsUp, ebsDown); + + TTBXSpinEditViewer = class(TTBXEditItemViewer) + private + FBtnState: TSEBtnState; + FBtnTimer: TTimer; + procedure TimerHandler(Sender: TObject); + protected + function GetIndentAfter: Integer; override; + procedure GetEditInfo(out EditInfo: TTBXEditInfo; const ItemInfo: TTBXItemInfo); override; + function HandleEditMessage(var Message: TMessage): Boolean; override; + procedure InvalidateButtons; + function IsPtInButtonPart(X, Y: Integer): Boolean; override; + procedure LosingCapture; override; + procedure MouseDown(Shift: TShiftState; X, Y: Integer; var MouseDownOnMenu: Boolean); override; + procedure MouseUp(X, Y: Integer; MouseWasDownOnMenu: Boolean); override; + public + destructor Destroy; override; + end; + + { TTBXCustomDropDownItem } + { An extended edit item tb2k with a button. The dropdown list support is + implemented in descendants, such as TTBXComboBoxItem } + + TTBXCustomDropDownItem = class(TTBXEditItem) + private + FAlwaysSelectFirst: Boolean; + FDropDownList: Boolean; + protected + function CreatePopup(const ParentView: TTBView; const ParentViewer: TTBItemViewer; + const PositionAsSubmenu, SelectFirstItem, Customizing: Boolean; + const APopupPoint: TPoint; const Alignment: TTBPopupAlignment): TTBPopupWindow; override; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + public + constructor Create(AOwner: TComponent); override; + property AlwaysSelectFirst: Boolean read FAlwaysSelectFirst write FAlwaysSelectFirst default True; + property DropDownList: Boolean read FDropDownList write FDropDownList default False; + end; + + TTBXDropDownItem = class(TTBXCustomDropDownItem) + published + property AlwaysSelectFirst; + property DropDownList; + property LinkSubitems; + property SubMenuImages; + end; + + TTBXDropDownItemViewer = class(TTBXEditItemViewer) + protected + procedure GetCursor(const Pt: TPoint; var ACursor: HCURSOR); override; + procedure GetEditInfo(out EditInfo: TTBXEditInfo; const ItemInfo: TTBXItemInfo); override; + function GetIndentAfter: Integer; override; + function HandleEditMessage(var Message: TMessage): Boolean; override; + function IsPtInButtonPart(X, Y: Integer): Boolean; override; + procedure KeyDown(var Key: Word; Shift: TShiftState); override; + end; + +{$IFDEF COMPATIBLE} + { For compatibility with previous versions } + TTBXComboItem = class(TTBXDropDownItem); +{$ENDIF} + + { TTBXComboBoxItem } + { A combination of dropdown combo with a stringlist subitem } + TTBXComboBoxItem = class; + TTBXCAdjustImageIndex = procedure(Sender: TTBXComboBoxItem; const AText: string; + AIndex: Integer; var ImageIndex: Integer) of object; + + TTBXComboBoxItem = class(TTBXCustomDropDownItem) + private + FAutoComplete: Boolean; + FList: TTBXStringList; + FOnItemClick: TNotifyEvent; + FOnAdjustImageIndex: TTBXCAdjustImageIndex; + procedure AdjustImageIndexHandler(Sender: TTBXCustomList; AItemIndex: Integer; var ImageIndex: Integer); + function GetItemIndex: Integer; + function GetMaxVisibleItems: Integer; + function GetMaxWidth: Integer; + function GetMinWidth: Integer; + function GetStrings: TStrings; + function GetShowListImages: Boolean; + function GetOnClearItem: TTBXLPaintEvent; + function GetOnDrawItem: TTBXLPaintEvent; + function GetOnMeasureHeight: TTBXLMeasureHeight; + function GetOnMeasureWidth: TTBXLMeasureWidth; + procedure ListChangeHandler(Sender: TObject); + procedure ListClickHandler(Sender: TObject); + procedure SetItemIndex(Value: Integer); + procedure SetMaxVisibleItems(Value: Integer); + procedure SetMaxWidth(Value: Integer); + procedure SetMinWidth(Value: Integer); + procedure SetOnClearItem(Value: TTBXLPaintEvent); + procedure SetOnDrawItem(Value: TTBXLPaintEvent); + procedure SetOnMeasureHeight(Value: TTBXLMeasureHeight); + procedure SetOnMeasureWidth(Value: TTBXLMeasureWidth); + procedure SetStrings(Value: TStrings); + procedure SetShowListImages(Value: Boolean); + protected + CachedImageIndex: Integer; + CacheValid: Boolean; + IsChanging: Boolean; + procedure AdjustImageIndex(const AText: string; AIndex: Integer; var ImageIndex: Integer); virtual; + function DoAutoComplete(var AText: string): Boolean; override; + procedure DoListChange; virtual; + procedure DoListClick; virtual; + procedure DoPopup(Sender: TTBCustomItem; FromLink: Boolean); override; + function GetImageIndex: Integer; override; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + function GetStringListClass: TTBXStringListClass; virtual; + procedure HandleEditChange(Edit: TEdit); override; + public + constructor Create(AOwner: TComponent); override; + procedure Loaded; override; + property ItemIndex: Integer read GetItemIndex write SetItemIndex default -1; + published + property AutoComplete: Boolean read FAutoComplete write FAutoComplete default True; + property DropDownList; + property MaxListWidth: Integer read GetMaxWidth write SetMaxWidth default 0; + property MaxVisibleItems: Integer read GetMaxVisibleItems write SetMaxVisibleItems default 8; + property MinListWidth: Integer read GetMinWidth write SetMinWidth default 64; + property ShowListImages: Boolean read GetShowListImages write SetShowListImages default False; + property Strings: TStrings read GetStrings write SetStrings; + property SubMenuImages; + property OnChange; + property OnAdjustImageIndex: TTBXCAdjustImageIndex read FOnAdjustImageIndex write FOnAdjustImageIndex; + property OnClearItem: TTBXLPaintEvent read GetOnClearItem write SetOnClearItem; + property OnDrawItem: TTBXLPaintEvent read GetOnDrawItem write SetOnDrawItem; + property OnItemClick: TNotifyEvent read FOnItemClick write FOnItemClick; + property OnMeasureHeight: TTBXLMeasureHeight read GetOnMeasureHeight write SetOnMeasureHeight; + property OnMeasureWidth: TTBXLMeasureWidth read GetOnMeasureWidth write SetOnMeasureWidth; + property OnPopup; + end; + +{$IFDEF COMPATIBLE} + { For compatibility with previous versions } + TTBXComboList = class(TTBXComboBoxItem); +{$ENDIF} + + TTBXComboBoxItemViewer = class(TTBXDropDownItemViewer) + protected + function HandleEditMessage(var Message: TMessage): Boolean; override; + end; + + { TTBXLabelItem } + + TTBXLabelOrientation = (tbxoAuto, tbxoHorizontal, tbxoVertical); + TNonNegativeInt = 0..MaxInt; + + TTBXLabelItem = class(TTBCustomItem) + private + FCaption: TCaption; + FFontSettings: TFontSettings; + FMargin: Integer; + FShowAccelChar: Boolean; + FOrientation: TTBXLabelOrientation; + FOnAdjustFont: TAdjustFontEvent; + procedure FontSettingsChanged(Sender: TObject); + procedure SetMargin(Value: Integer); + procedure SetOrientation(Value: TTBXLabelOrientation); + procedure SetCaption(const Value: TCaption); + procedure SetFontSettings(Value: TFontSettings); + procedure SetShowAccelChar(Value: Boolean); + protected + function GetItemViewerClass (AView: TTBView): TTBItemViewerClass; override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure UpdateCaption(const Value: TCaption); + published + property Caption: TCaption read FCaption write SetCaption; + property Enabled; + property FontSettings: TFontSettings read FFontSettings write SetFontSettings; + property Margin: Integer read FMargin write SetMargin default 0; + property Orientation: TTBXLabelOrientation read FOrientation write SetOrientation default tbxoAuto; + property ShowAccelChar: Boolean read FShowAccelChar write SetShowAccelChar default True; + property Visible; + property OnAdjustFont: TAdjustFontEvent read FOnAdjustFont write FOnAdjustFont; + end; + + TTBXLabelItemViewer = class(TTBItemViewer) + protected + function GetCaptionText: string; override; + function GetIsHoriz: Boolean; virtual; + procedure DoAdjustFont(AFont: TFont; StateFlags: Integer); virtual; + procedure CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); override; + procedure Paint(const Canvas: TCanvas; const ClientAreaRect: TRect; + IsHoverItem, IsPushed, UseDisabledShadow: Boolean); override; + function IsToolbarSize: Boolean; override; + public + function IsToolbarStyle: Boolean; override; + end; + + { TTBXColorItem } + + TTBXColorItem = class(TTBXCustomItem) + private + FColor: TColor; + procedure SetColor(Value: TColor); + protected + function GetItemViewerClass (AView: TTBView): TTBItemViewerClass; override; + public + constructor Create(AOwner: TComponent); override; + published + property Action; + property AutoCheck; + property Caption; + property Checked; + property Color: TColor read FColor write SetColor default clWhite; + property DisplayMode; + property Enabled; + property FontSettings; + property GroupIndex; + property HelpContext; + property Hint; + property InheritOptions; + property MaskOptions; + property MinHeight; + property MinWidth; + property Options; + property ShortCut; + property Visible; + property OnAdjustFont; + property OnClick; + end; + + TTBXColorItemViewer = class(TTBXItemViewer) + protected + procedure DoPaintCaption(Canvas: TCanvas; const ClientAreaRect: TRect; + var CaptionRect: TRect; IsTextRotated: Boolean; var PaintDefault: Boolean); override; + function GetImageShown: Boolean; override; + function GetImageSize: TSize; override; + procedure DrawItemImage(Canvas: TCanvas; ARect: TRect; ItemInfo: TTBXItemInfo); override; + public + constructor Create(AView: TTBView; AItem: TTBCustomItem; AGroupLevel: Integer); override; + end; + + { TTBXMRUList } + + TTBXMRUList = class(TTBMRUList) + private + FKeyShift: Integer; + procedure SetKeyShift(Value: Integer); + protected + function GetFirstKey: Integer; override; + function GetItemClass: TTBCustomItemClass; override; + procedure SetItemCaptions; override; + published + property KeyShift: Integer read FKeyShift write SetKeyShift default 0; + end; + + { TTBXMRUListItem } + + TTBXMRUListItem = class(TTBXCustomItem) + private + FMRUList: TTBMRUList; + procedure SetMRUList(Value: TTBMRUList); + protected + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + public + constructor Create(AOwner: TComponent); override; + published + property MRUList: TTBMRUList read FMRUList write SetMRUList; + end; + +implementation + +uses TB2Common, TB2Consts, TypInfo, Math, ImgList {$IFNDEF JR_D5}, DsgnIntf{$ENDIF}; + +const + { Repeat intervals for spin edit items } + SE_FIRSTINTERVAL = 400; + SE_INTERVAL = 100; + +type + TTBViewAccess = class(TTBView); + TTBItemAccess = class(TTBCustomItem); + TTBMRUListAccess = class(TTBMRUList); + TCustomEditAccess = class(TCustomEdit); + TFontSettingsAccess = class(TFontSettings); + +{ Misc. functions } + +function StartsText(const ASubText, AText: string): Boolean; +var + P: PChar; + L, L2: Integer; +begin + P := PChar(AText); + L := Length(ASubText); + L2 := Length(AText); + if L > L2 then Result := False + else Result := CompareString(LOCALE_USER_DEFAULT, NORM_IGNORECASE, + P, L, PChar(ASubText), L) = 2; +end; + +//============================================================================// + +{ TTBXEdit } + +type + TTBXEdit = class(TEdit) + private + FAlignment: TAlignment; + procedure SetAlignment(Value: TAlignment); + protected + procedure CreateParams(var Params: TCreateParams); override; + public + property Alignment: TAlignment read FAlignment write SetAlignment; + end; + +procedure TTBXEdit.CreateParams(var Params: TCreateParams); +const + Alignments: array[TAlignment] of Cardinal = (ES_LEFT, ES_RIGHT, ES_CENTER); +begin + inherited CreateParams(Params); + Params.Style := Params.Style or Alignments[FAlignment]; +end; + +procedure TTBXEdit.SetAlignment(Value: TAlignment); +begin + if Value <> FAlignment then + begin + FAlignment := Value; + RecreateWnd; + end; +end; + + +//============================================================================// + +{ TTBXEditItem } + +constructor TTBXEditItem.Create(AOwner: TComponent); +begin + inherited; + FEditorFontSettings := TFontSettings.Create; + FFontSettings := TFontSettings.Create; + TFontSettingsAccess(FEditorFontSettings).OnChange := FontSettingsChanged; + TFontSettingsAccess(FFontSettings).OnChange := FontSettingsChanged; +end; + +destructor TTBXEditItem.Destroy; +begin + FFontSettings.Free; + FEditorFontSettings.Free; + inherited; +end; + +function TTBXEditItem.DoAcceptText(var NewText: string): Boolean; +begin + Result := inherited DoAcceptText(NewText); +// if not Result then DoChange(Text); +end; + +function TTBXEditItem.DoAutoComplete(var AText: string): Boolean; +begin + Result := False; +end; + +procedure TTBXEditItem.DoBeginEdit(Viewer: TTBEditItemViewer); +begin + with Viewer do + begin + TTBXEdit(EditControl).Alignment := Alignment; + EditControl.PasswordChar := PasswordChar; + EditControl.SelectAll; + EditControl.ReadOnly := ReadOnly; + EditorFontSettings.Apply(EditControl.Font); + FAutoCompleteCounter := 0; + inherited; + if Viewer is TTBXEditItemViewer then + begin + EditControl.OnChange := TTBXEditItemViewer(Viewer).EditChangeHandler; + TTBXEditItemViewer(Viewer).OldWndProc := EditControl.WindowProc; + EditControl.WindowProc := TTBXEditItemViewer(Viewer).NewEditWndProc; + end; + end; +end; + +procedure TTBXEditItem.DoChange(const AText: string); +begin + if Assigned(FOnChange) then FOnChange(Self, AText); +end; + +procedure TTBXEditItem.DoTextChanged(Reason: Integer); +begin + if not ((Reason = tcrEditControl) and (Text = FLastEditChange)) then + DoChange(Text); +end; + +procedure TTBXEditItem.FontSettingsChanged(Sender: TObject); +begin + Change(True); +end; + +function TTBXEditItem.GetImageIndex: Integer; +begin + Result := ImageIndex; +end; + +function TTBXEditItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + if not (tboUseEditWhenVertical in EditOptions) and + (AView.Orientation = tbvoVertical) then + Result := TTBXItemViewer + else + Result := TTBXEditItemViewer; +end; + +procedure TTBXEditItem.GetPopupPosition(ParentView: TTBView; + PopupWindow: TTBPopupWindow; var PopupPositionRec: TTBPopupPositionRec); +var + VT: Integer; +begin + inherited; + VT := GetWinViewType(PopupWindow); + PopupPositionRec.PlaySound := not (VT and PVT_LISTBOX = PVT_LISTBOX); +end; + +function TTBXEditItem.GetPopupWindowClass: TTBPopupWindowClass; +begin + Result := TTBXPopupWindow; +end; + +procedure TTBXEditItem.HandleEditChange(Edit: TEdit); +var + S, S2: string; +begin + if not FIsChanging then + begin + FIsChanging := True; + try + S := Edit.Text; + S2 := S; + if (Length(S) > 0) and (FAutoCompleteCounter > 0) and DoAutoComplete(S2) then + begin + Edit.Text := S2; + Edit.SelStart := Length(S); + Edit.SelLength := Length(S2) - Length(S); + S := S2; + end; + {if S <> FLastEditChange then} {vb-} + if AnsiCompareText(S, FLastEditChange) <> 0 then {vb+} + begin + DoChange(S); // note, Edit.Text may be different from Self.Text + FLastEditChange := S; + end; + finally + FIsChanging := False; + end; + end; +end; + +procedure TTBXEditItem.SetAlignment(Value: TAlignment); +begin + if Value <> FAlignment then + begin + FAlignment := Value; + Change(True); + end; +end; + +procedure TTBXEditItem.SetFontSettings(Value: TFontSettings); +begin + FFontSettings.Assign(Value); +end; + +procedure TTBXEditItem.SetPasswordChar(Value: Char); +begin + if Value <> FPasswordChar then + begin + FPasswordChar := Value; + Change(True); + end; +end; + +procedure TTBXEditItem.SetShowImage(const Value: Boolean); +begin + FShowImage := Value; + Change(True); +end; + +function TTBXEditItem.StartEditing(AView: TTBView): Boolean; +var + V: TTBItemViewer; + SaveText: string; +begin + Result := False; + V := AView.Find(Self); + if V is TTBXEditItemViewer then + begin + SaveText := Text; + TTBXEditItemViewer(V).DoExecute; + Result := Text <> SaveText; + end; +end; + + +//============================================================================// + +{ TTBXEditItemViewer } + +procedure TTBXEditItemViewer.CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); +var + W, B: Integer; + EditBoxHeight: Integer; + EditCaptionSize: TSize; +begin + if Self.Item is TTBXEditItem then with CurrentTheme do + begin + B := EditFrameWidth; + + AWidth := TTBXEditItem(Item).EditWidth; + if not IsToolbarStyle then + begin + EditCaptionSize := MeasureEditCaption; + W := EditCaptionSize.CX; + if W > 0 then Inc(W, MenuLeftCaptionMargin + MenuRightCaptionMargin + MenuImageTextSpace); + Inc(AWidth, GetPopupMargin(Self) + MenuImageTextSpace + W + EditMenuRightIndent); + end + else + begin + EditCaptionSize.CX := 0; + EditCaptionSize.CY := 0; + end; + + EditBoxHeight := MeasureTextHeight + 1; + Inc(EditBoxHeight, EditTextMarginVert * 2 + B * 2); + AHeight := Max(EditBoxHeight, EditCaptionSize.CY); + if not IsToolbarStyle then AHeight := AHeight; + if EditHeightEven then AHeight := (AHeight + 1) and not $01 + else AHeight := AHeight or $01; + end + else inherited; +end; + +procedure TTBXEditItemViewer.EditChangeHandler(Sender: TObject); +begin + HandleEditChange((Sender as TEdit)); +end; + +procedure TTBXEditItemViewer.HandleEditChange(Edit: TEdit); +begin + TTBXEditItem(Item).HandleEditChange(Edit); +end; + +procedure TTBXEditItemViewer.GetEditInfo(out EditInfo: TTBXEditInfo; const ItemInfo: TTBXItemInfo); +begin + FillChar(EditInfo, SizeOf(EditInfo), 0); + EditInfo.LeftBtnWidth := GetIndentBefore; + EditInfo.RightBtnWidth := GetIndentAfter; +end; + +function TTBXEditItemViewer.GetAccRole: Integer; +const + ROLE_SYSTEM_SPINBUTTON = $34; + ROLE_SYSTEM_COMBOBOX = $2E; +begin + Result := inherited GetAccRole; + if Self is TTBXSpinEditViewer then Result := ROLE_SYSTEM_SPINBUTTON + else if Self is TTBXDropDownItemViewer then Result := ROLE_SYSTEM_COMBOBOX; +end; + +procedure TTBXEditItemViewer.GetItemInfo(out ItemInfo: TTBXItemInfo; IsHoverItem, IsPushed, UseMenuColor: Boolean); +const + CToolbarStyle: array [Boolean] of Integer = (0, IO_TOOLBARSTYLE); + CDesigning: array [Boolean] of Integer = (0, IO_DESIGNING); +var + Item: TTBXEditItem; +begin + Item := TTBXEditItem(Self.Item); + + FillChar(ItemInfo, SizeOf(TTBXItemInfo), 0); + ItemInfo.ViewType := GetViewType(View); + ItemInfo.ItemOptions := CToolbarStyle[IsToolbarStyle] + or CDesigning[csDesigning in Item.ComponentState]; + ItemInfo.Enabled := Item.Enabled or View.Customizing; + ItemInfo.Pushed := IsPushed; + ItemInfo.Selected := Item.Checked; + if IsHoverItem then + begin + if not ItemInfo.Enabled and not View.MouseOverSelected then + ItemInfo.HoverKind := hkKeyboardHover + else + if ItemInfo.Enabled then ItemInfo.HoverKind := hkMouseHover; + end + else ItemInfo.HoverKind := hkNone; + if not IsToolbarStyle then ItemInfo.PopupMargin := GetPopupMargin(Self); +end; + +procedure TTBXEditItemViewer.GetEditRect(var R: TRect); +const + TB2K_EDIT_BORDER = 3; +var + W, B: Integer; +begin + if Item is TTBXEditItem then with CurrentTheme do + begin + R := BoundsRect; + if not IsToolbarStyle then + begin + W := MeasureEditCaption.CX; + if W > 0 then Inc(W, MenuLeftCaptionMargin + MenuRightCaptionMargin + MenuImageTextSpace); + Inc(R.Left, GetPopupMargin(Self) + MenuImageTextSpace + W); + Dec(R.Right, EditMenuRightIndent); + end; + + B := EditFrameWidth - TB2K_EDIT_BORDER; + InflateRect(R, -B - EditTextMarginHorz , -B - EditTextMarginVert); + Inc(R.Left, GetIndentBefore); + Dec(R.Right, GetIndentAfter); + end + else inherited; +end; + +function TTBXEditItemViewer.GetIndentAfter: Integer; +begin + Result := 0; +end; + +function TTBXEditItemViewer.GetIndentBefore: Integer; +var + ImgList: TCustomImageList; +begin + if ShowImage then + begin + ImgList := GetImageList; + if ImgList <> nil then Result := ImgList.Width + 2 + else Result := 0; + end + else Result := 0; +end; + +function TTBXEditItemViewer.HandleEditMessage(var Message: TMessage): Boolean; +const + CharKeys = [VK_SPACE, $30..$5A, VK_NUMPAD0..VK_DIVIDE, $BA..$F5]; +begin + if Message.Msg = WM_KEYDOWN then + begin + if Message.WParam in CharKeys then Inc(TTBXEditItem(Item).FAutoCompleteCounter) + end + else if Message.Msg = WM_KEYUP then + begin + if Message.WParam in CharKeys then Dec(TTBXEditItem(Item).FAutoCompleteCounter); + end; + Result := False; +end; + +procedure TTBXEditItemViewer.NewEditWndProc(var Message: TMessage); +begin + if Assigned(OldWndProc) and not HandleEditMessage(Message) then OldWndProc(Message); +end; + +procedure TTBXEditItemViewer.Paint(const Canvas: TCanvas; + const ClientAreaRect: TRect; IsHoverItem, IsPushed, UseDisabledShadow: Boolean); +const + FillColors: array [Boolean] of Integer = (COLOR_BTNFACE, COLOR_WINDOW); + TextColors: array [Boolean] of Integer = (COLOR_GRAYTEXT, COLOR_WINDOWTEXT); + Alignments: array [TAlignment] of Integer = (DT_LEFT, DT_RIGHT, DT_CENTER); +var + DC: HDC; + Item: TTBXEditItem; + S: string; + R, R2: TRect; + M, W: Integer; + ItemInfo: TTBXItemInfo; + EditInfo: TTBXEditInfo; + ImgList: TCustomImageList; + ImgIndex: Integer; + Fnt, OldFnt: HFont; + C, OldColor: TColor; +begin + DC := Canvas.Handle; + Item := TTBXEditItem(Self.Item); + GetItemInfo(ItemInfo, IsHoverItem, IsPushed, UseDisabledShadow); + GetEditInfo(EditInfo, ItemInfo); + R := ClientAreaRect; + + if not IsToolbarStyle then with CurrentTheme do + begin + S := Item.EditCaption; + + if Length(S) > 0 then + begin + { measure EditCaption } + Fnt := TTBXEditItem(Item).FontSettings.CreateTransformedFont(TTBViewAccess(View).GetFont.Handle, C); + OldFnt := SelectObject(DC, Fnt); + W := GetTextWidth(DC, S, True) + MenuImageTextSpace + MenuLeftCaptionMargin + MenuRightCaptionMargin; + SelectObject(DC, OldFnt); + end + else + begin + Fnt := 0; // to suppress compiler warning + W := 0; + end; + + M := GetPopupMargin(Self); + if not EditMenuFullSelect then R.Right := M + W + else Dec(R.Right, EditMenuRightIndent); + PaintMenuItemFrame(Canvas, R, ItemInfo); + Inc(R.Left, M + MenuImageTextSpace); + R.Right := ClientAreaRect.Right - EditMenuRightIndent; + + if Length(S) > 0 then + begin + Inc(R.Left, MenuLeftCaptionMargin); + C := ColorToRGB(GetItemTextColor(ItemInfo)); + OldFnt := SelectObject(DC, Fnt); + OldColor := SetTextColor(DC, C); + PaintCaption(Canvas, R, ItemInfo, S, DT_SINGLELINE or DT_LEFT or DT_VCENTER, False); + SetTextColor(DC, OldColor); + W := GetTextWidth(DC, S, True); + SelectObject(DC, OldFnt); + DeleteObject(Fnt); + Inc(R.Left, W + MenuRightCaptionMargin + MenuImageTextSpace); + end; + end; + + CurrentTheme.PaintEditFrame(Canvas, R, ItemInfo, EditInfo); + W := CurrentTheme.EditFrameWidth; + InflateRect(R, -W - CurrentTheme.EditTextMarginHorz, -W - CurrentTheme.EditTextMarginVert); + + if ShowImage then + begin + ImgList := GetImageList; + if ImgList <> nil then + begin + R2.Left := R.Left; + R2.Right := R.Left + ImgList.Width; + R2.Top := (R.Top + R.Bottom + 1 - ImgList.Height) div 2; + R2.Bottom := R2.Top + ImgList.Height; + ImgIndex := TTBXEditItem(Item).GetImageIndex; + if Item.Enabled then ImgList.Draw(Canvas, R.Left, R2.Top, ImgIndex) + else DrawTBXImage(Canvas, R2, ImgList, ImgIndex, ISF_DISABLED); + end; + end; + Inc(R.Left, EditInfo.LeftBtnWidth); + Dec(R.Right, EditInfo.RightBtnWidth + 1); + + if Item.Text <> '' then + begin + S := Item.Text; + if TTBXEditItem(Item).PasswordChar <> #0 then S := StringOfChar(TTBXEditItem(Item).PasswordChar, Length(S)); + Fnt := Item.EditorFontSettings.CreateTransformedFont(TTBViewAccess(View).GetFont.Handle, C); + OldFnt := SelectObject(DC, Fnt); + SetBkMode(DC, TRANSPARENT); + SetBkColor(DC, GetSysColor(FillColors[Item.Enabled])); + SetTextColor(DC, GetSysColor(TextColors[Item.Enabled])); + DrawText(DC, PChar(S), Length(S), R, DT_SINGLELINE or DT_NOPREFIX or Alignments[Item.Alignment]); + SelectObject(DC, OldFnt); + DeleteObject(Fnt); + end; + +{ if not IsToolbarStyle then + begin + R := ClientAreaRect; + Self.GetEditRect(R); + OffsetRect(R, -BoundsRect.Left, -BoundsRect.Top); + Canvas.FrameRect(R); + end; } +end; + +function TTBXEditItemViewer.GetEditControlClass: TEditClass; +begin + Result := TTBXEdit; +end; + +function TTBXEditItemViewer.ShowImage: Boolean; +begin + Result := TTBXEditItem(Item).ShowImage; +end; + +function TTBXEditItemViewer.IsToolbarSize: Boolean; +begin + Result := inherited IsToolbarSize; + Result := Result or ((GetViewType(View) and PVT_TOOLBOX) = PVT_TOOLBOX); +end; + +function TTBXEditItemViewer.IsToolbarStyle: Boolean; +begin + Result := inherited IsToolbarStyle; + Result := Result or ((GetViewType(View) and PVT_TOOLBOX) = PVT_TOOLBOX); +end; + +function TTBXEditItemViewer.MeasureEditCaption: TSize; +var + DC: HDC; + Fnt, OldFnt: HFont; + DummyColor: TColor; + TextMetric: TTextMetric; + S: string; +begin + Result.cx := 0; + Result.cy := 0; + if Item is TTBXEditItem then + begin + S := StripAccelChars(TTBXEditItem(Item).EditCaption); + if Length(S) > 0 then + begin + DummyColor := clWhite; + DC := GetDC(0); + Fnt := TTBXEditItem(Item).FontSettings.CreateTransformedFont(TTBViewAccess(View).GetFont.Handle, DummyColor); + OldFnt := SelectObject(DC, Fnt); + GetTextExtentPoint32(DC, PChar(S), Length(S), Result); + GetTextMetrics(DC, TextMetric); + Inc(Result.cy, TextMetric.tmExternalLeading); + SelectObject(DC, OldFnt); + DeleteObject(Fnt); + ReleaseDC(0, DC); + end; + end; +end; + +function TTBXEditItemViewer.MeasureTextHeight: Integer; +var + DC: HDC; + Fnt, OldFnt: HFont; + DummyColor: TColor; + TextMetric: TTextMetric; +begin + Result := 0; + if Item is TTBXEditItem then + begin + DummyColor := clWhite; + DC := GetDC(0); + Fnt := TTBXEditItem(Item).EditorFontSettings.CreateTransformedFont(TTBViewAccess(View).GetFont.Handle, DummyColor); + OldFnt := SelectObject(DC, Fnt); + Result := GetTextHeight(DC); + GetTextMetrics(DC, TextMetric); + Inc(Result, TextMetric.tmExternalLeading); + SelectObject(DC, OldFnt); + DeleteObject(Fnt); + ReleaseDC(0, DC); + end; +end; + +function TTBXEditItemViewer.DoExecute: Boolean; +begin + if Item is TTBXEditItem then + begin + TTBXEditItem(Item).FLastEditChange := ''; + Result := inherited DoExecute; + with TTBXEditItem(Item) do + begin + if FLastEditChange <> Text then DoChange(Text); + FLastEditChange := ''; + end; + end + else Result := inherited DoExecute; +end; + + +//============================================================================// + +{ TTBXCustomDropDownItem } + +constructor TTBXCustomDropDownItem.Create(AOwner: TComponent); +begin + inherited; + ItemStyle := ItemStyle + [tbisCombo, tbisSubmenu, tbisSubitemsEditable] - [tbisDontSelectFirst]; + FAlwaysSelectFirst := True; +end; + +function TTBXCustomDropDownItem.CreatePopup(const ParentView: TTBView; + const ParentViewer: TTBItemViewer; const PositionAsSubmenu, + SelectFirstItem, Customizing: Boolean; const APopupPoint: TPoint; + const Alignment: TTBPopupAlignment): TTBPopupWindow; +var + SelectFirst: Boolean; +begin + if AlwaysSelectFirst then SelectFirst := True + else SelectFirst := SelectFirstItem; + Result := inherited CreatePopup(ParentView, ParentViewer, PositionAsSubmenu, + SelectFirst, Customizing, APopupPoint, Alignment); +end; + +function TTBXCustomDropDownItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + if not (tboUseEditWhenVertical in EditOptions) and (AView.Orientation = tbvoVertical) then + Result := TTBXItemViewer + else + Result := TTBXDropDownItemViewer; +end; + + +//----------------------------------------------------------------------------// + +{ TTBXDropDownItemViewer } + +procedure TTBXDropDownItemViewer.GetCursor(const Pt: TPoint; var ACursor: HCURSOR); +begin + if not TTBXCustomDropDownItem(Item).DropDownList then inherited; +end; + +procedure TTBXDropDownItemViewer.GetEditInfo(out EditInfo: TTBXEditInfo; const ItemInfo: TTBXItemInfo); +const + CDisabled: array [Boolean] of Integer = (EBDS_DISABLED, 0); + CHot: array [Boolean] of Integer = (0, EBDS_HOT); + CPressed: array [Boolean] of Integer = (0, EBDS_PRESSED); +begin + inherited GetEditInfo(EditInfo, ItemInfo); + EditInfo.RightBtnInfo.ButtonType := EBT_DROPDOWN; + EditInfo.RightBtnInfo.ButtonState := CDisabled[ItemInfo.Enabled] or + CHot[ItemInfo.HoverKind = hkMouseHover] or CPressed[ItemInfo.Pushed]; +end; + +function TTBXDropDownItemViewer.GetIndentAfter: Integer; +begin + if IsToolbarStyle then Result := CurrentTheme.EditBtnWidth + else Result := GetSystemMetrics(SM_CXMENUCHECK) + 2; +end; + +function TTBXDropDownItemViewer.HandleEditMessage(var Message: TMessage): Boolean; +begin + if Message.Msg = WM_KEYDOWN then + begin + if TWMKeyDown(Message).CharCode = VK_F4 then + begin + {TTBViewAccess(View).OpenChildPopup(True);} {vb-} + if (View.OpenViewer = Self) // WasAlreadyOpen {vb+} + then View.CloseChildPopups + else View.OpenChildPopup(True); + Result := True; + Exit; + end; + end; + + Result := inherited HandleEditMessage(Message); +end; + +function TTBXDropDownItemViewer.IsPtInButtonPart(X, Y: Integer): Boolean; +begin + Result := not (tbisSubmenu in TTBXCustomDropDownItem(Item).ItemStyle); + if TTBXCustomDropDownItem(Item).DropDownList then Result := False + else if (tbisCombo in TTBXCustomDropDownItem(Item).ItemStyle) then + Result := X < (BoundsRect.Right - BoundsRect.Left) - GetIndentAfter; +end; + +procedure TTBXDropDownItemViewer.KeyDown(var Key: Word; Shift: TShiftState); +begin + if not TTBXCustomDropDownItem(Item).DropDownList then inherited; +end; + +//============================================================================// + +{ TTBXComboBoxItem } + +procedure TTBXComboBoxItem.AdjustImageIndex(const AText: string; + AIndex: Integer; var ImageIndex: Integer); +begin + if Assigned(FOnAdjustImageIndex) then FOnAdjustImageIndex(Self, AText, AIndex, ImageIndex); +end; + +procedure TTBXComboBoxItem.AdjustImageIndexHandler(Sender: TTBXCustomList; + AItemIndex: Integer; var ImageIndex: Integer); +begin + AdjustImageIndex(FList.Strings[AItemIndex], AItemIndex, ImageIndex); +end; + +constructor TTBXComboBoxItem.Create(AOwner: TComponent); +begin + inherited; + ItemStyle := ItemStyle - [tbisSubItemsEditable]; + FAutoComplete := True; + FList := GetStringListClass.Create(Self); + FList.OnChange := ListChangeHandler; + FList.OnClick := ListClickHandler; + FList.OnAdjustImageIndex := AdjustImageIndexHandler; + MinListWidth := 64; +end; + +function TTBXComboBoxItem.DoAutoComplete(var AText: string): Boolean; +var + I: Integer; + S, R: string; + TemplateL, MinL, L: Integer; +begin + Result := False; + if Length(AText) > 0 then + begin + { choose the shortest matching string from items } + TemplateL := Length(AText); + MinL := MaxInt; + SetLength(R, 0); + for I := 0 to FList.Strings.Count - 1 do + begin + S := FList.Strings[I]; + L := Length(S); + if (L >= TemplateL) and (L < MinL) and StartsText(AText, S) then + begin + R := S; + MinL := L; + if MinL = TemplateL then Break; + end; + end; + Result := Length(R) > 0; + if Result then AText := R; + end; +end; + +procedure TTBXComboBoxItem.DoListChange; +begin + { Update text in edit item. This will call OnChange automatically } + if (FList.ItemIndex >= 0) and (FList.ItemIndex < FList.Strings.Count) then + begin + IsChanging := True; + try + if Text <> FList.Strings[Flist.ItemIndex] then + begin + SetTextEx(FList.Strings[FList.ItemIndex], tcrList); + end; + finally + IsChanging := False; + end; + end; +end; + +procedure TTBXComboBoxItem.DoListClick; +begin + if Assigned(FOnItemClick) then FOnItemClick(Self); +end; + +procedure TTBXComboBoxItem.DoPopup(Sender: TTBCustomItem; FromLink: Boolean); +begin + inherited; + FList.ItemIndex := FList.Strings.IndexOf(Text); +end; + +function TTBXComboBoxItem.GetImageIndex: Integer; +begin + if not CacheValid then + begin + CachedImageIndex := ImageIndex; + if ItemIndex >= 0 then CachedImageIndex := ItemIndex; + AdjustImageIndex(Text, -1, CachedImageIndex); + CacheValid := True; + end; + Result := CachedImageIndex; +end; + +function TTBXComboBoxItem.GetItemIndex: Integer; +begin + Result := FList.ItemIndex; +end; + +function TTBXComboBoxItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + if not (tboUseEditWhenVertical in EditOptions) and + (AView.Orientation = tbvoVertical) then + Result := TTBXItemViewer + else + Result := TTBXComboBoxItemViewer; +end; + +function TTBXComboBoxItem.GetMaxVisibleItems: Integer; +begin + Result := FList.MaxVisibleItems; +end; + +function TTBXComboBoxItem.GetMaxWidth: Integer; +begin + Result := FList.MaxWidth; +end; + +function TTBXComboBoxItem.GetMinWidth: Integer; +begin + Result := FList.MinWidth; +end; + +function TTBXComboBoxItem.GetOnClearItem: TTBXLPaintEvent; +begin + Result := FList.OnClearItem; +end; + +function TTBXComboBoxItem.GetOnDrawItem: TTBXLPaintEvent; +begin + Result := FList.OnDrawItem; +end; + +function TTBXComboBoxItem.GetOnMeasureHeight: TTBXLMeasureHeight; +begin + Result := FList.OnMeasureHeight; +end; + +function TTBXComboBoxItem.GetOnMeasureWidth: TTBXLMeasureWidth; +begin + Result := FList.OnMeasureWidth; +end; + +function TTBXComboBoxItem.GetShowListImages: Boolean; +begin + Result := FList.ShowImages; +end; + +function TTBXComboBoxItem.GetStringListClass: TTBXStringListClass; +begin + Result := TTBXStringList; +end; + +function TTBXComboBoxItem.GetStrings: TStrings; +begin + Result := FList.Strings; +end; + +procedure TTBXComboBoxItem.HandleEditChange(Edit: TEdit); +begin + CacheValid := False; + inherited; +end; + +procedure TTBXComboBoxItem.ListChangeHandler(Sender: TObject); +begin + CacheValid := False; + DoListChange; +end; + +procedure TTBXComboBoxItem.ListClickHandler(Sender: TObject); +begin + CacheValid := False; + DoListClick; +end; + +procedure TTBXComboBoxItem.Loaded; +begin + inherited; + if FList.Strings.IndexOf(Text) >= 0 then + begin + IsChanging := True; + try + FList.ItemIndex := FList.Strings.IndexOf(Text); + finally + IsChanging := False; + end; + end; + if not (csDesigning in ComponentState) then Add(FList); +end; + +procedure TTBXComboBoxItem.SetItemIndex(Value: Integer); +begin + FList.ItemIndex := Value; +end; + +procedure TTBXComboBoxItem.SetMaxVisibleItems(Value: Integer); +begin + FList.MaxVisibleItems := Value; +end; + +procedure TTBXComboBoxItem.SetMaxWidth(Value: Integer); +begin + FList.MaxWidth := Value; +end; + +procedure TTBXComboBoxItem.SetMinWidth(Value: Integer); +begin + FList.MinWidth := Value; +end; + +procedure TTBXComboBoxItem.SetOnClearItem(Value: TTBXLPaintEvent); +begin + FList.OnClearItem := Value; +end; + +procedure TTBXComboBoxItem.SetOnDrawItem(Value: TTBXLPaintEvent); +begin + FList.OnDrawItem := Value; +end; + +procedure TTBXComboBoxItem.SetOnMeasureHeight(Value: TTBXLMeasureHeight); +begin + FList.OnMeasureHeight := Value; +end; + +procedure TTBXComboBoxItem.SetOnMeasureWidth(Value: TTBXLMeasureWidth); +begin + FList.OnMeasureWidth := Value; +end; + +procedure TTBXComboBoxItem.SetShowListImages(Value: Boolean); +begin + FList.ShowImages := Value; +end; + +procedure TTBXComboBoxItem.SetStrings(Value: TStrings); +begin + FList.Strings := Value; +end; + + +//============================================================================// + +{ TTBXComboBoxItemViewer } + +function TTBXComboBoxItemViewer.HandleEditMessage(var Message: TMessage): Boolean; +begin + if (Message.Msg = WM_KEYDOWN) then with TTBXComboBoxItem(Item) do + begin + case Message.wParam of + VK_UP: + begin + if ItemIndex > 0 then {vb+} + ItemIndex := ItemIndex- 1; + EditControl.Text := Text; + EditControl.SelectAll; + Result := True; + end; + + VK_DOWN: + begin + if ItemIndex < Strings.Count- 1 then {vb+} + ItemIndex := ItemIndex+ 1; + EditControl.Text := Text; + EditControl.SelectAll; + Result := True; + end; + else + Result := inherited HandleEditMessage(Message); + end + end + else Result := inherited HandleEditMessage(Message); +end; + + +//============================================================================// + +{ TTBXLabelItem } + +constructor TTBXLabelItem.Create(AOwner: TComponent); +begin + inherited; + FFontSettings := TFontSettings.Create; + TFontSettingsAccess(FFontSettings).OnChange := FontSettingsChanged; + FShowAccelChar := True; + ItemStyle := ItemStyle - [tbisSelectable] + [tbisClicksTransparent, tbisStretch]; +end; + +destructor TTBXLabelItem.Destroy; +begin + FFontSettings.Free; + inherited; +end; + +procedure TTBXLabelItem.FontSettingsChanged(Sender: TObject); +begin + Change(True); +end; + +function TTBXLabelItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBXLabelItemViewer; +end; + +procedure TTBXLabelItem.SetCaption(const Value: TCaption); +begin + FCaption := Value; + Change(True); +end; + +procedure TTBXLabelItem.SetFontSettings(Value: TFontSettings); +begin + FFontSettings := Value; +end; + +{procedure TTBXLabelItem.SetFontSize(Value: TTBXFontSize); +begin + FFontSize := Value; + Change(True); +end; } + +procedure TTBXLabelItem.SetMargin(Value: Integer); +begin + FMargin := Value; + Change(True); +end; + +procedure TTBXLabelItem.SetOrientation(Value: TTBXLabelOrientation); +begin + FOrientation := Value; + Change(True); +end; + +procedure TTBXLabelItem.SetShowAccelChar(Value: Boolean); +begin + FShowAccelChar := Value; + Change(True); +end; + +procedure TTBXLabelItem.UpdateCaption(const Value: TCaption); +begin + FCaption := Value; + Change(False); +end; + + +//============================================================================// + +{ TTBXLabelItemViewer } + +procedure TTBXLabelItemViewer.CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); +var + DC: HDC; + S: string; + TextMetrics: TTextMetric; + RotatedFont, SaveFont: HFont; +begin + Canvas.Font := TTBViewAccess(View).GetFont; + DoAdjustFont(Canvas.Font, 0); + S := GetCaptionText; + if Length(S) = 0 then S := '0'; + DC := Canvas.Handle; + if IsToolbarStyle then + begin + AWidth := TTBXLabelItem(Item).Margin; + AHeight := AWidth; + if Length(S) > 0 then + begin + if GetIsHoriz then + begin + GetTextMetrics(DC, TextMetrics); + Inc(AHeight, TextMetrics.tmHeight); + Inc(AWidth, GetTextWidth(DC, S, TTBXLabelItem(Item).ShowAccelChar)); + end + else + begin + RotatedFont := CreateRotatedFont(DC); + SaveFont := SelectObject(DC, RotatedFont); + GetTextMetrics(DC, TextMetrics); + Inc(AWidth, TextMetrics.tmHeight); + Inc(AHeight, GetTextWidth(DC, S, TTBXLabelItem(Item).ShowAccelChar)); + SelectObject(DC, SaveFont); + DeleteObject(RotatedFont); + end; + end; + end + else + begin + if Length(S) > 0 then + begin + GetTextMetrics(DC, TextMetrics); + AHeight := TextMetrics.tmHeight; + AWidth := GetTextWidth(DC, S, TTBXLabelItem(Item).ShowAccelChar); + end; + end; + + if AWidth < 6 then AWidth := 6; + if AHeight < 6 then AHeight := 6; + with TTBXLabelItem(Item) do + begin + Inc(AWidth, Margin shl 1 + 1); + Inc(AHeight, Margin shl 1 + 1); + end; +end; + +procedure TTBXLabelItemViewer.DoAdjustFont(AFont: TFont; StateFlags: Integer); +begin + if Item is TTBXLabelItem then + with TTBXLabelItem(Item) do + begin + FontSettings.Apply(AFont); + if Assigned(FOnAdjustFont) then FOnAdjustFont(Item, Self, AFont, StateFlags); + end; +end; + +function TTBXLabelItemViewer.GetCaptionText: string; +var + P: Integer; +begin + Result := TTBXLabelItem(Item).Caption; + P := Pos(#9, Result); + if P <> 0 then SetLength(Result, P - 1); +end; + +function TTBXLabelItemViewer.GetIsHoriz: Boolean; +begin + with TTBXLabelItem(Item) do + case Orientation of + tbxoHorizontal: Result := True; + tbxoVertical: Result := False; + else // tbxoAuto + Result := View.Orientation <> tbvoVertical; + end; +end; + +function TTBXLabelItemViewer.IsToolbarSize: Boolean; +begin + Result := inherited IsToolbarSize; + Result := Result or ((GetViewType(View) and PVT_TOOLBOX) = PVT_TOOLBOX); +end; + +function TTBXLabelItemViewer.IsToolbarStyle: Boolean; +begin + Result := inherited IsToolbarStyle; + Result := Result or ((GetViewType(View) and PVT_TOOLBOX) = PVT_TOOLBOX); +end; + +procedure TTBXLabelItemViewer.Paint(const Canvas: TCanvas; + const ClientAreaRect: TRect; IsHoverItem, IsPushed, UseDisabledShadow: Boolean); +const + CEnabledStates: array [Boolean] of Integer = (ISF_DISABLED, 0); + CDesigning: array [Boolean] of Integer = (0, IO_DESIGNING); + CPrefixes: array [Boolean] of Integer = (DT_NOPREFIX, 0); +var + Fmt: Cardinal; + ItemInfo: TTBXItemInfo; + R: TRect; +begin + FillChar(ItemInfo, SizeOf(ItemInfo), 0); + ItemInfo.ViewType := GetViewType(View); + ItemInfo.ItemOptions := IO_TOOLBARSTYLE or CDesigning[csDesigning in Item.ComponentState]; + ItemInfo.Enabled := Item.Enabled or View.Customizing; + ItemInfo.Pushed := False; + ItemInfo.Selected := False; + ItemInfo.ImageShown := False; + ItemInfo.ImageWidth := 0; + ItemInfo.ImageHeight := 0; + ItemInfo.HoverKind := hkNone; + ItemInfo.IsPopupParent := False; + ItemInfo.IsVertical := not GetIsHoriz; + + Canvas.Font := TTBViewAccess(View).GetFont; + Canvas.Font.Color := CurrentTheme.GetItemTextColor(ItemInfo); + DoAdjustFont(Canvas.Font, CEnabledStates[ItemInfo.Enabled]); + Canvas.Brush.Style := bsClear; + Fmt := DT_SINGLELINE or DT_CENTER or DT_VCENTER or CPrefixes[TTBXLabelItem(Item).ShowAccelChar]; + R := ClientAreaRect; + CurrentTheme.PaintCaption(Canvas, R, ItemInfo, GetCaptionText, Fmt, ItemInfo.IsVertical); + Canvas.Brush.Style := bsSolid; +end; + + +//============================================================================// + +{ TTBXColorItem } + +constructor TTBXColorItem.Create(AOwner: TComponent); +begin + inherited; + FColor := clWhite; +end; + +function TTBXColorItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBXColorItemViewer; +end; + +procedure TTBXColorItem.SetColor(Value: TColor); +begin + if FColor <> Value then + begin + FColor := Value; + Change(False); + end; +end; + + +//============================================================================// + +{ TTBXColorItemViewer } + +procedure TTBXColorItemViewer.DrawItemImage(Canvas: TCanvas; ARect: TRect; ItemInfo: TTBXItemInfo); +begin + with ItemInfo, Canvas do if Enabled then + begin + if ((ItemOptions and IO_TOOLBARSTYLE) = 0) then InflateRect(ARect, -2, -2); + if TTBXColorItem(Item).Color <> clNone then + begin + Brush.Color := clBtnShadow; + FrameRect(ARect); + InflateRect(ARect, -1, -1); + Brush.Color := TTBXColorItem(Item).Color; + FillRect(ARect); + end; + end + else + begin + Inc(ARect.Right); + Inc(ARect.Bottom); + DrawEdge(Handle, ARect, BDR_SUNKENOUTER or BDR_RAISEDINNER, BF_RECT); + end; +end; + +procedure TTBXColorItemViewer.DoPaintCaption(Canvas: TCanvas; + const ClientAreaRect: TRect; var CaptionRect: TRect; + IsTextRotated: Boolean; var PaintDefault: Boolean); +begin + if (GetViewType(View) and PVT_TOOLBOX) = PVT_TOOLBOX then + begin + { Center Caption } + OffsetRect(CaptionRect, -CaptionRect.Left, 0); + OffsetRect(CaptionRect, (ClientAreaRect.Right - CaptionRect.Right) div 2, 0); + end; +end; + +function TTBXColorItemViewer.GetImageSize: TSize; +begin + if IsToolbarStyle then + begin + Result.CX := 12; + Result.CY := 12; + end + else + begin + Result.CX := 16; + Result.CY := 16; + end; +end; + +function TTBXColorItemViewer.GetImageShown: Boolean; +begin + Result := ((Item.DisplayMode in [nbdmDefault, nbdmImageAndText]) or + (IsToolbarStyle and (Item.DisplayMode = nbdmTextOnlyInMenus))); +end; + +constructor TTBXColorItemViewer.Create(AView: TTBView; AItem: TTBCustomItem; AGroupLevel: Integer); +begin + inherited; + Wide := False; +end; + +//============================================================================// + +{ TTBXMRUList } + +function TTBXMRUList.GetFirstKey:Integer; +begin + Result := FKeyShift; +end; + +function TTBXMRUList.GetItemClass: TTBCustomItemClass; +begin + Result := TTBXCustomItem; +end; + +procedure TTBXMRUList.SetItemCaptions; +var + I: Integer; +begin + inherited; + if Container is TTBXCustomItem then + for I := 0 to Items.Count - 1 do + TTBXCustomItem(Items[I]).FontSettings := TTBXCustomItem(Container).FontSettings; +end; + +procedure TTBXMRUList.SetKeyShift(Value: Integer); +begin + if Value < 0 then Value := 0; + FKeyShift := Value; + SetItemCaptions; +end; + + +//============================================================================// + +{ TTBXMRUListItem } + +constructor TTBXMRUListItem.Create(AOwner: TComponent); +begin + inherited; + ItemStyle := ItemStyle + [tbisEmbeddedGroup]; + Caption := STBMRUListItemDefCaption[1] + 'TBX ' + + Copy(STBMRUListItemDefCaption, 2, Length(STBMRUListItemDefCaption) - 1); +end; + +procedure TTBXMRUListItem.Notification(AComponent: TComponent; + Operation: TOperation); +begin + inherited; + if (AComponent = FMRUList) and (Operation = opRemove) then MRUList := nil; +end; + +procedure TTBXMRUListItem.SetMRUList(Value: TTBMRUList); +begin + if FMRUList <> Value then + begin + FMRUList := Value; + if Assigned(Value) then + begin + Value.FreeNotification(Self); + LinkSubitems := TTBMRUListAccess(Value).Container; + end + else LinkSubitems := nil; + end; +end; + +{ TTBXCustomSpinEditItem } + +function TTBXCustomSpinEditItem.CheckValue(const V: Extended): Extended; +begin + Result := V; + if FMaxValue <> FMinValue then + begin + if V < FMinValue then Result := FMinValue + else if V > FMaxValue then Result := FMaxValue; + end; +end; + +procedure TTBXCustomSpinEditItem.ClickDown; +var + OldValue, NewValue: Extended; +begin + OldValue := GetValue; + if Snap then + NewValue := Ceil(OldValue / Increment - 1 - Increment * 0.0001) * Increment + else + NewValue := OldValue - FIncrement; + DoStep(-1, OldValue, NewValue); + SetValueEx(NewValue, tcrSpinButton); +end; + +procedure TTBXCustomSpinEditItem.ClickUp; +var + OldValue, NewValue: Extended; +begin + OldValue := GetValue; + if Snap then + NewValue := Floor(OldValue / Increment + 1 + Increment * 0.0001) * Increment + else + NewValue := OldValue + FIncrement; + DoStep(+1, OldValue, NewValue); + SetValueEx(NewValue, tcrSpinButton); +end; + +constructor TTBXCustomSpinEditItem.Create(AOwner: TComponent); +begin + inherited; + FAlignment := taRightJustify; + FDecimal := 2; + FIncrement := 1; + FSnap := True; + Text := '0'; +end; + +function TTBXCustomSpinEditItem.DoAcceptText(var NewText: string): Boolean; +var + V: Extended; +begin + if ParseValue(NewText, V) then + begin + NewText := GetAsText(V); + Result := True; + end + else Result := False; +end; + +function TTBXCustomSpinEditItem.DoConvert(const APrefix, APostfix: string; var AValue: Extended): Boolean; +begin + Result := True; + if Assigned(FOnConvert) then FOnConvert(Self, APrefix, APostfix, AValue, Result); +end; + +procedure TTBXCustomSpinEditItem.DoStep(Step: Integer; const OldValue: Extended; var NewValue: Extended); +begin + if Assigned(FOnStep) then FOnStep(Self, Step, OldValue, NewValue); +end; + +procedure TTBXCustomSpinEditItem.DoTextChanged(Reason: Integer); +begin + if Reason = tcrEditControl then + SetValueEx(GetValue, tcrNumericProperty); +end; + +function TTBXCustomSpinEditItem.DoTextToValue(const AText: string; out AValue: Extended): Boolean; +begin + Result := False; + if Assigned(FOnTextToValue) then FOnTextToValue(Self, AText, AValue, Result); +end; + +procedure TTBXCustomSpinEditItem.DoValueChange(const V: Extended); +begin + if Assigned(FOnValueChange) then FOnValueChange(Self, V); +end; + +procedure TTBXCustomSpinEditItem.DoValueToText(const NewValue: Extended; var NewText: string); +begin + if Assigned(FOnValueToText) then FOnValueToText(Self, NewValue, NewText); +end; + +function TTBXCustomSpinEditItem.GetAsInteger: Integer; +begin + Result := Round(Value); +end; + +function TTBXCustomSpinEditItem.GetAsText(AValue: Extended): string; +begin + AValue := CheckValue(AValue); + if ValueType = evtFloat then Result := FloatToStrF(AValue, ffFixed, 15, FDecimal) + else if ValueType = evtHex then Result := IntToHex(Round(AValue), 1) + else Result := IntToStr(Round(AValue)); + + if Length(Prefix) > 0 then + begin + if SpaceAfterPrefix then Result := ' ' + Result; + Result := Prefix + Result; + end; + if Length(Postfix) > 0 then + begin + if SpaceBeforePostfix then Result := Result + ' '; + Result := Result + Postfix; + end; + DoValueToText(AValue, Result); +end; + +function TTBXCustomSpinEditItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + if not (tboUseEditWhenVertical in EditOptions) and + (AView.Orientation = tbvoVertical) then + Result := TTBXItemViewer + else + Result := TTBXSpinEditViewer; +end; + +function TTBXCustomSpinEditItem.GetValue: Extended; +begin + if not ParseValue(Text, Result) then + Result := FLastGoodValue; +end; + +function TTBXCustomSpinEditItem.IsIncrementStored: Boolean; +begin + Result := FIncrement <> 1; +end; + +function TTBXCustomSpinEditItem.IsMaxValueStored: Boolean; +begin + Result := FMaxValue <> 0; +end; + +function TTBXCustomSpinEditItem.IsMinValueStored: Boolean; +begin + Result := FMinValue <> 0; +end; + +function TTBXCustomSpinEditItem.IsValueStored: Boolean; +begin + Result := GetValue <> 0; +end; + +function TTBXCustomSpinEditItem.ParseValue(const S: string; out V: Extended): Boolean; +const + CWhiteSpace = [' ', #9]; + CDigits = ['0'..'9']; + CHexDigits = CDigits + ['A'..'F']; + CInvalidUnitChars = [#0..#31, ' ', '*', '+', ',', '-', '.', '/', '0'..'9', '^']; + CInvalidHexUnitChars = CInvalidUnitChars + ['A'..'F']; +var + P: PChar; + Sign1: Integer; + Value1: Extended; + Value2: Extended; + Operator: Char; + PrefixString, PostfixString: string; + + procedure SkipWhiteSpace; + begin + while P^ in CWhiteSpace do Inc(P); + end; + + function GetInt: Integer; + begin + Result := 0; + while P^ in CDigits do + begin + Result := Result * 10 + (Integer(P^) - Integer('0')); + Inc(P); + end; + end; + + function GetInt2: Extended; + begin + Result := 0; + while P^ in CDigits do + begin + Result := Result * 10 + (Integer(P^) - Integer('0')); + Inc(P); + end; + end; + + function GetNumber(out PrefixString, PostfixString: string; out R: Extended): Boolean; + var + PStart: PChar; + Tmp: Integer; + ExponentSign, IR: Integer; + Count1, Count2: Integer; + E: Extended; + begin + R := 0; + Result := False; + + { Read prefix } + PStart := P; + if ValueType <> evtHex then while not (P^ in CInvalidUnitChars) do Inc(P) + else while not (P^ in CInvalidHexUnitChars) do Inc(P); + SetString(PrefixString, PStart, P - PStart); + SkipWhiteSpace; + + { Read value } + if ValueType in [evtFloat, evtInteger] then + begin + if (ValueType = evtInteger) and not (P^ in CDigits) then Exit; + + { get the integer part } + PStart := P; + R := GetInt2; + Count1 := P - PStart; + + if (ValueType = evtFloat) and (P^ = DecimalSeparator) then + begin + Inc(P); + PStart := P; + E := GetInt2; + R := R + E / IntPower(10, P - PStart); + Count2 := P - PStart; + end + else Count2 := 0; + + if (Count1 = 0) and (Count2 = 0) then Exit; // '.' (or ',') is not a number + + if (ValueType = evtFloat) and (P^ in ['e', 'E']) and (PChar(P + 1)^ in ['+', '-', '0'..'9']) then + begin + Inc(P); + ExponentSign := 1; + if P^ = '-' then + begin + ExponentSign := -1; + Inc(P); + end + else if P^ = '+' then Inc(P); + if not (P^ in CDigits) then Exit; + Tmp := GetInt; + if Tmp >= 5000 then Exit; + R := R * IntPower(10, Tmp * ExponentSign); + end; + end + else { evtHex } + begin + IR := 0; + if not (P^ in CHexDigits) then Exit; + while P^ in CHexDigits do + begin + IR := IR shl 4; + if P^ in CDigits then Inc(IR, Integer(P^) - Integer('0')) + else if P^ in ['a'..'f'] then Inc(IR, Integer(P^) - Integer('a') + 10) + else Inc(IR, Integer(P^) - Integer('A') + 10); + Inc(P); + end; + R := IR; + end; + SkipWhiteSpace; + + { Read postfix } + PStart := P; + if ValueType <> evtHex then while not (P^ in CInvalidUnitChars) do Inc(P) + else while not (P^ in CInvalidHexUnitChars) do Inc(P); + SetString(PostfixString, PStart, P - PStart); + SkipWhiteSpace; + + Result := True; + end; + +begin + V := 0; + + { Try text-to-value conversion for predefined "constants" } + Result := DoTextToValue(S, V); + if Result then Exit; + + { Parse the string for values and expressions } + if Length(S) = 0 then Exit; + P := PChar(S); + SkipWhiteSpace; + + { Read the sign } + Sign1 := 1; + if P^ = '-' then + begin + Sign1 := -1; + Inc(P); + SkipWhiteSpace; + end + else if P^ = '+' then + begin + Inc(P); + SkipWhiteSpace; + end; + + { Read value } + if not GetNumber(PrefixString, PostfixString, Value1) then Exit; + if not DoConvert(PrefixString, PostfixString, Value1) then Exit; + Value1 := Value1 * Sign1; + V := Value1; + + { Read operator } + if P^ in ['*', '+', '-', '/'] then + begin + Operator := P^; + Inc(P); + SkipWhiteSpace; + if not GetNumber(PrefixString, PostfixString, Value2) then Exit; + if not DoConvert(PrefixString, PostfixString, Value2) then Exit; + case Operator of + '*': V := V * Value2; + '+': V := V + Value2; + '-': V := V - Value2; + '/': if Value2 <> 0 then V := V / Value2 else Exit; + end; + end; + + if P^ = #0 then Result := True; +end; + +procedure TTBXCustomSpinEditItem.SetAsInteger(AValue: Integer); +begin + Value := AValue; +end; + +procedure TTBXCustomSpinEditItem.SetDecimal(NewDecimal: TDecimal); +begin + if NewDecimal <> FDecimal then + begin + FDecimal := NewDecimal; + SetValueEx(GetValue, tcrNumericProperty); + end; +end; + +procedure TTBXCustomSpinEditItem.SetIncrement(const NewIncrement: Extended); +begin + if NewIncrement <= 0 then + raise EPropertyError.Create('Increment should be a positive value'); + FIncrement := NewIncrement; +end; + +procedure TTBXCustomSpinEditItem.SetPostfix(const NewPostfix: string); +begin + if not ValidateUnits(NewPostfix) then + raise EPropertyError.Create('Invalid postfix'); + FPostfix := NewPostfix; + SetValueEx(GetValue, tcrNumericProperty); +end; + +procedure TTBXCustomSpinEditItem.SetPrefix(const NewPrefix: string); +begin + if not ValidateUnits(NewPrefix) then + raise EPropertyError.Create('Invalid prefix'); + FPrefix := NewPrefix; + SetValueEx(GetValue, tcrNumericProperty); +end; + +procedure TTBXCustomSpinEditItem.SetSpaceAfterPrefix(UseSpace: Boolean); +begin + FSpaceAfterPrefix := UseSpace; + SetValueEx(GetValue, tcrNumericProperty); +end; + +procedure TTBXCustomSpinEditItem.SetSpaceBeforePostfix(UseSpace: Boolean); +begin + FSpaceBeforePostfix := UseSpace; + SetValueEx(GetValue, tcrNumericProperty); +end; + +procedure TTBXCustomSpinEditItem.SetValue(NewValue: Extended); +begin + SetTextEx(GetAsText(NewValue), tcrNumericProperty); + if FLastGoodValue <> NewValue then + begin + FLastGoodValue := NewValue; + DoValueChange(NewValue); + end; +end; + +procedure TTBXCustomSpinEditItem.SetValueEx(NewValue: Extended; Reason: Integer); +begin + SetTextEx(GetAsText(NewValue), Reason); + if FLastGoodValue <> NewValue then + begin + FLastGoodValue := NewValue; + DoValueChange(NewValue); + end; +end; + +procedure TTBXCustomSpinEditItem.SetValueType(NewType: TSEValueType); +var + V: Extended; +begin + if NewType <> FValueType then + begin + V := GetValue; + FValueType := NewType; + SetValueEx(V, tcrNumericProperty); + if NewType in [evtInteger, evtHex] then FIncrement := Max(Round(FIncrement), 1); + end; +end; + +function TTBXCustomSpinEditItem.ValidateUnits(const S: string): Boolean; +const + InvalidChars = [#0..#31, ' ', '*', '+', ',', '-', '.', '/', '0'..'9', '^']; +var + I: Integer; +begin + Result := False; + if Length(S) > 0 then + for I := 1 to Length(S) do + if S[I] in InvalidChars then Exit; + Result := True; +end; + +{ TTBXSpinEditViewer } + +destructor TTBXSpinEditViewer.Destroy; +begin + FBtnTimer.Free; + inherited; +end; + +procedure TTBXSpinEditViewer.GetEditInfo(out EditInfo: TTBXEditInfo; const ItemInfo: TTBXItemInfo); +const + CDisabled: array [Boolean] of Integer = (EBSS_DISABLED, 0); + CHot: array [Boolean] of Integer = (0, EBSS_HOT); + CUpDnState: array [TSEBtnState] of Integer = (0, EBSS_UP, EBSS_DOWN); +begin + inherited GetEditInfo(EditInfo, ItemInfo); + EditInfo.RightBtnInfo.ButtonType := EBT_SPIN; + EditInfo.RightBtnInfo.ButtonState := CDisabled[ItemInfo.Enabled] or + CHot[ItemInfo.HoverKind = hkMouseHover] or CUpDnState[FBtnState]; +end; + +function TTBXSpinEditViewer.GetIndentAfter: Integer; +begin + if IsToolbarStyle then Result := CurrentTheme.EditBtnWidth + 2 + else Result := GetSystemMetrics(SM_CXMENUCHECK) + 2; +end; + +function TTBXSpinEditViewer.HandleEditMessage(var Message: TMessage): Boolean; +var + Item: TTBXCustomSpinEditItem; + + function Val: Extended; + begin + if not Item.ParseValue(EditControl.Text, Result) then Result := Item.FLastGoodValue; + end; + +begin + Item := TTBXCustomSpinEditItem(Self.Item); + if Message.Msg = WM_CHAR then + case TWMChar(Message).CharCode of + VK_TAB: + begin + Item.Value := Val; + EditControl.Text := Item.Text; + end; + VK_RETURN: + begin + Item.Value := Val; + EditControl.Text := Item.Text; + end; + VK_ESCAPE: + begin +// Item.Value := Item.GetValue; + end; + end + else if Message.Msg = WM_KEYDOWN then + case TWMKeyDown(Message).CharCode of + VK_UP: + begin + Item.ClickUp; + EditControl.Text := Item.Text; + EditControl.SelectAll; + Result := True; + Exit; + end; + VK_DOWN: + begin + Item.ClickDown; + EditControl.Text := Item.Text; + EditControl.SelectAll; + Result := True; + Exit; + end; + end; + + Result := inherited HandleEditMessage(Message); +end; + +procedure TTBXSpinEditViewer.InvalidateButtons; +var + R: TRect; +begin + with TTBXSpinEditItem(Item) do + if Show and not IsRectEmpty(BoundsRect) then + begin + R := BoundsRect; + R.Left := R.Right - GetIndentAfter; + InvalidateRect(View.Window.Handle, @R, False); + Include(State, tbisInvalidated); + end; +end; + +function TTBXSpinEditViewer.IsPtInButtonPart(X, Y: Integer): Boolean; +begin + Result := X <= (BoundsRect.Right - BoundsRect.Left) - GetIndentAfter; +end; + +procedure TTBXSpinEditViewer.LosingCapture; +begin + FBtnTimer.Free; + FBtnTimer := nil; + inherited; +end; + +procedure TTBXSpinEditViewer.MouseDown(Shift: TShiftState; X, Y: Integer; var MouseDownOnMenu: Boolean); +begin + if not Item.Enabled then Exit; + FBtnState := ebsNone; + if X >= BoundsRect.Right - BoundsRect.Left - GetIndentAfter then + begin + if Y < (BoundsRect.Bottom - BoundsRect.Top) div 2 then + begin + FBtnState := ebsUp; + TTBXSpinEditItem(Item).ClickUp; + end + else + begin + FBtnState := ebsDown; + TTBXSpinEditItem(Item).ClickDown; + end; + + if FBtnTimer = nil then + begin + FBtnTimer := TTimer.Create(nil); + FBtnTimer.OnTimer := TimerHandler; + end; + FBtnTimer.Interval := SE_FIRSTINTERVAL; + FBtnTimer.Enabled := True; + end; + + if FBtnState <> ebsNone then + begin + InvalidateButtons; + inherited; + View.SetCapture; + end + else inherited; +end; + +procedure TTBXSpinEditViewer.MouseUp(X, Y: Integer; MouseWasDownOnMenu: Boolean); +begin + if FBtnState <> ebsNone then + begin + FBtnState := ebsNone; + FBtnTimer.Free; + FBtnTimer := nil; + InvalidateButtons; + end; + inherited; +end; + +procedure TTBXSpinEditViewer.TimerHandler(Sender: TObject); +begin + FBtnTimer.Interval := SE_INTERVAL; + if FBtnState = ebsUp then TTBXSpinEditItem(Item).ClickUp + else if FBtnState = ebsDown then TTBXSpinEditItem(Item).ClickDown + else + begin + FBtnTimer.Free; + FBtnTimer := nil; + end; +end; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXExtItems.pas.orig b/official/2.1.6+2.1.beta1/TBX/TBXExtItems.pas.orig new file mode 100644 index 0000000..5e1f2d0 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXExtItems.pas.orig @@ -0,0 +1,2370 @@ +unit TBXExtItems; + +// TBX Package +// Copyright 2001-2004 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// $Id: TBXExtItems.pas 16 2004-05-26 02:02:55Z Alex@ZEISS $ + +interface + +{$I TB2Ver.inc} +{$I TBX.inc} + +{$DEFINE COMPATIBLE} + +uses + Windows, Messages, Classes, SysUtils, Graphics, Controls, StdCtrls, ExtCtrls, + TBX, TBXThemes, TB2Item, TB2Toolbar, TB2ExtItems, TBXLists, TB2MRU; + +const + tcrNumericProperty = 3; + tcrSpinButton = 4; + tcrList = 5; + +type + TTBXEditItemViewer = class; + TTBXEditChange = procedure(Sender: TObject; const Text: string) of object; + + { TTBXEditItem } + { Extends standard TTBEditItem, providing additional features and some + combo box functionality, which is used in descendants } + + TTBXEditItem = class(TTBEditItem) + private + FAlignment: TAlignment; + FAutoCompleteCounter: Integer; + FEditorFontSettings: TFontSettings; + FFontSettings: TFontSettings; + FIsChanging: Boolean; + FLastEditChange: string; + FPasswordChar: Char; + FReadOnly: Boolean; + FShowImage: Boolean; + FOnChange: TTBXEditChange; + procedure FontSettingsChanged(Sender: TObject); + procedure SetAlignment(Value: TAlignment); + procedure SetPasswordChar(Value: Char); + procedure SetShowImage(const Value: Boolean); + procedure SetFontSettings(Value: TFontSettings); + protected + function DoAcceptText(var NewText: string): Boolean; override; + function DoAutoComplete(var AText: string): Boolean; virtual; + procedure DoBeginEdit(Viewer: TTBEditItemViewer); override; + procedure DoChange(const AText: string); virtual; + procedure DoTextChanged(Reason: Integer); override; + function GetImageIndex: Integer; virtual; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + procedure GetPopupPosition(ParentView: TTBView; PopupWindow: TTBPopupWindow; var PopupPositionRec: TTBPopupPositionRec); override; + function GetPopupWindowClass: TTBPopupWindowClass; override; + procedure HandleEditChange(Edit: TEdit); virtual; + public + function StartEditing(AView: TTBView): Boolean; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + published + property Alignment: TAlignment read FAlignment write SetAlignment default taLeftJustify; + property EditorFontSettings: TFontSettings read FEditorFontSettings write FEditorFontSettings; + property ExtendedAccept; + property FontSettings: TFontSettings read FFontSettings write SetFontSettings; + property ImageIndex; + property Images; + property PasswordChar: Char read FPasswordChar write SetPasswordChar default #0; + property ReadOnly: Boolean read FReadOnly write FReadOnly default False; + property ShowImage: Boolean read FShowImage write SetShowImage default False; + property OnChange: TTBXEditChange read FOnChange write FOnChange; + property OnSelect; + end; + + TTBXEditItemViewer = class(TTBEditItemViewer) + private + procedure EditChangeHandler(Sender: TObject); + function MeasureEditCaption: TSize; + function MeasureTextHeight: Integer; + procedure HandleEditChange(Edit: TEdit); + protected + OldWndProc: TWndMethod; + procedure CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); override; + function DoExecute: Boolean; override; + function HandleEditMessage(var Message: TMessage): Boolean; virtual; + function GetAccRole: Integer; override; + procedure GetItemInfo(out ItemInfo: TTBXItemInfo; IsHoverItem, IsPushed, UseMenuColor: Boolean); virtual; + function GetEditControlClass: TEditClass; override; + procedure GetEditInfo(out EditInfo: TTBXEditInfo; const ItemInfo: TTBXItemInfo); virtual; + function GetIndentBefore: Integer; virtual; + function GetIndentAfter: Integer; virtual; + procedure GetEditRect(var R: TRect); override; + function IsToolbarSize: Boolean; override; + procedure NewEditWndProc(var Message: TMessage); + procedure Paint(const Canvas: TCanvas; const ClientAreaRect: TRect; IsHoverItem, IsPushed, UseDisabledShadow: Boolean); override; + function ShowImage: Boolean; virtual; + public + function IsToolbarStyle: Boolean; override; + end; + + { TTBXSpinEditItem } + TTBXCustomSpinEditItem = class; + + TSEValueType = (evtInteger, evtFloat, evtHex); + TDecimal = 0..10; + TSEChangeEvent = procedure(Sender: TTBXCustomSpinEditItem; const AValue: Extended) of object; + TSEConvertEvent = procedure(Sender: TTBXCustomSpinEditItem; const APrefix, APostfix: string; var AValue: Extended; var CanConvert: Boolean) of object; + TSEStepEvent = procedure(Sender: TTBXCustomSpinEditItem; Step: Integer; const OldValue: Extended; var NewValue: Extended) of object; + TSETextToValueEvent = procedure(Sender: TTBXCustomSpinEditItem; const AText: string; out AValue: Extended; var CanConvert: Boolean) of object; + TSEValueToTextEvent = procedure(Sender: TTBXCustomSpinEditItem; const AValue: Extended; var Text: string) of object; + + TTBXCustomSpinEditItem = class(TTBXEditItem) + private + FDecimal: TDecimal; + FLastGoodValue: Extended; + FMaxValue: Extended; + FMinValue: Extended; + FIncrement: Extended; + FSpaceBeforePostfix: Boolean; + FSpaceAfterPrefix: Boolean; + FPostfix: string; + FPrefix: string; + FSnap: Boolean; + FValueType: TSEValueType; + FOnConvert: TSEConvertEvent; + FOnTextToValue: TSETextToValueEvent; + FOnValueChange: TSEChangeEvent; + FOnValueToText: TSEValueToTextEvent; + FOnStep: TSEStepEvent; + function IsIncrementStored: Boolean; + function IsMinValueStored: Boolean; + function IsMaxValueStored: Boolean; + function IsValueStored: Boolean; + function GetValue: Extended; + procedure SetValue(NewValue: Extended); + procedure SetValueType(NewType: TSEValueType); + procedure SetDecimal(NewDecimal: TDecimal); + procedure SetIncrement(const NewIncrement: Extended); + procedure SetPostfix(const NewPostfix: string); + procedure SetPrefix(const NewPrefix: string); + procedure SetSpaceAfterPrefix(UseSpace: Boolean); + procedure SetSpaceBeforePostfix(UseSpace: Boolean); + function ValidateUnits(const S: string): Boolean; + function GetAsInteger: Integer; + procedure SetAsInteger(AValue: Integer); + protected + function CheckValue(const V: Extended): Extended; + procedure ClickUp; + procedure ClickDown; + function DoAcceptText(var NewText: string): Boolean; override; + function DoConvert(const APrefix, APostfix: string; var AValue: Extended): Boolean; virtual; + procedure DoStep(Step: Integer; const OldValue: Extended; var NewValue: Extended); virtual; + procedure DoTextChanged(Reason: Integer); override; + function DoTextToValue(const AText: string; out AValue: Extended): Boolean; virtual; + procedure DoValueChange(const V: Extended); virtual; + procedure DoValueToText(const NewValue: Extended; var NewText: string); virtual; + function GetAsText(AValue: Extended): string; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + function ParseValue(const S: string; out V: Extended): Boolean; + procedure SetValueEx(NewValue: Extended; Reason: Integer); + property Alignment default taRightJustify; + property OnConvert: TSEConvertEvent read FOnConvert write FOnConvert; + property OnStep: TSEStepEvent read FOnStep write FOnStep; + property OnTextToValue: TSETextToValueEvent read FOnTextToValue write FOnTextToValue; + property OnValueChange: TSEChangeEvent read FOnValueChange write FOnValueChange; + property OnValueToText: TSEValueToTextEvent read FOnValueToText write FOnValueToText; + public + constructor Create(AOwner: TComponent); override; + property ValueType: TSEValueType read FValueType write SetValueType default evtInteger; + property AsInteger: Integer read GetAsInteger write SetAsInteger stored False; + property Decimal: TDecimal read FDecimal write SetDecimal default 2; + property Increment: Extended read FIncrement write SetIncrement stored IsIncrementStored; + property MaxValue: Extended read FMaxValue write FMaxValue stored IsMaxValueStored; + property MinValue: Extended read FMinValue write FMinValue stored IsMinValueStored; + property Postfix: string read FPostfix write SetPostfix; + property Prefix: string read FPrefix write SetPrefix; + property Snap: Boolean read FSnap write FSnap default True; + property SpaceAfterPrefix: Boolean read FSpaceAfterPrefix write SetSpaceAfterPrefix; + property SpaceBeforePostfix: Boolean read FSpaceBeforePostfix write SetSpaceBeforePostfix; + property Value: Extended read GetValue write SetValue stored IsValueStored; + published + property Text stored False; + end; + + TTBXSpinEditItem = class(TTBXCustomSpinEditItem) + published + property ValueType; + property Alignment; + property Decimal; + property Increment; + property MaxValue; + property MinValue; + property Postfix; + property Prefix; + property Snap; + property SpaceAfterPrefix; + property SpaceBeforePostfix; + property Value; + property OnConvert; + property OnStep; + property OnTextToValue; + property OnValueChange; + property OnValueToText; + end; + + TSEBtnState = (ebsNone, ebsUp, ebsDown); + + TTBXSpinEditViewer = class(TTBXEditItemViewer) + private + FBtnState: TSEBtnState; + FBtnTimer: TTimer; + procedure TimerHandler(Sender: TObject); + protected + function GetIndentAfter: Integer; override; + procedure GetEditInfo(out EditInfo: TTBXEditInfo; const ItemInfo: TTBXItemInfo); override; + function HandleEditMessage(var Message: TMessage): Boolean; override; + procedure InvalidateButtons; + function IsPtInButtonPart(X, Y: Integer): Boolean; override; + procedure LosingCapture; override; + procedure MouseDown(Shift: TShiftState; X, Y: Integer; var MouseDownOnMenu: Boolean); override; + procedure MouseUp(X, Y: Integer; MouseWasDownOnMenu: Boolean); override; + public + destructor Destroy; override; + end; + + { TTBXCustomDropDownItem } + { An extended edit item tb2k with a button. The dropdown list support is + implemented in descendants, such as TTBXComboBoxItem } + + TTBXCustomDropDownItem = class(TTBXEditItem) + private + FAlwaysSelectFirst: Boolean; + FDropDownList: Boolean; + protected + function CreatePopup(const ParentView: TTBView; const ParentViewer: TTBItemViewer; + const PositionAsSubmenu, SelectFirstItem, Customizing: Boolean; + const APopupPoint: TPoint; const Alignment: TTBPopupAlignment): TTBPopupWindow; override; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + public + constructor Create(AOwner: TComponent); override; + property AlwaysSelectFirst: Boolean read FAlwaysSelectFirst write FAlwaysSelectFirst default True; + property DropDownList: Boolean read FDropDownList write FDropDownList default False; + end; + + TTBXDropDownItem = class(TTBXCustomDropDownItem) + published + property AlwaysSelectFirst; + property DropDownList; + property LinkSubitems; + property SubMenuImages; + end; + + TTBXDropDownItemViewer = class(TTBXEditItemViewer) + protected + procedure GetCursor(const Pt: TPoint; var ACursor: HCURSOR); override; + procedure GetEditInfo(out EditInfo: TTBXEditInfo; const ItemInfo: TTBXItemInfo); override; + function GetIndentAfter: Integer; override; + function HandleEditMessage(var Message: TMessage): Boolean; override; + function IsPtInButtonPart(X, Y: Integer): Boolean; override; + procedure KeyDown(var Key: Word; Shift: TShiftState); override; + end; + +{$IFDEF COMPATIBLE} + { For compatibility with previous versions } + TTBXComboItem = class(TTBXDropDownItem); +{$ENDIF} + + { TTBXComboBoxItem } + { A combination of dropdown combo with a stringlist subitem } + TTBXComboBoxItem = class; + TTBXCAdjustImageIndex = procedure(Sender: TTBXComboBoxItem; const AText: string; + AIndex: Integer; var ImageIndex: Integer) of object; + + TTBXComboBoxItem = class(TTBXCustomDropDownItem) + private + FAutoComplete: Boolean; + FList: TTBXStringList; + FOnItemClick: TNotifyEvent; + FOnAdjustImageIndex: TTBXCAdjustImageIndex; + procedure AdjustImageIndexHandler(Sender: TTBXCustomList; AItemIndex: Integer; var ImageIndex: Integer); + function GetItemIndex: Integer; + function GetMaxVisibleItems: Integer; + function GetMaxWidth: Integer; + function GetMinWidth: Integer; + function GetStrings: TStrings; + function GetShowListImages: Boolean; + function GetOnClearItem: TTBXLPaintEvent; + function GetOnDrawItem: TTBXLPaintEvent; + function GetOnMeasureHeight: TTBXLMeasureHeight; + function GetOnMeasureWidth: TTBXLMeasureWidth; + procedure ListChangeHandler(Sender: TObject); + procedure ListClickHandler(Sender: TObject); + procedure SetItemIndex(Value: Integer); + procedure SetMaxVisibleItems(Value: Integer); + procedure SetMaxWidth(Value: Integer); + procedure SetMinWidth(Value: Integer); + procedure SetOnClearItem(Value: TTBXLPaintEvent); + procedure SetOnDrawItem(Value: TTBXLPaintEvent); + procedure SetOnMeasureHeight(Value: TTBXLMeasureHeight); + procedure SetOnMeasureWidth(Value: TTBXLMeasureWidth); + procedure SetStrings(Value: TStrings); + procedure SetShowListImages(Value: Boolean); + protected + CachedImageIndex: Integer; + CacheValid: Boolean; + IsChanging: Boolean; + procedure AdjustImageIndex(const AText: string; AIndex: Integer; var ImageIndex: Integer); virtual; + function DoAutoComplete(var AText: string): Boolean; override; + procedure DoListChange; virtual; + procedure DoListClick; virtual; + procedure DoPopup(Sender: TTBCustomItem; FromLink: Boolean); override; + function GetImageIndex: Integer; override; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + function GetStringListClass: TTBXStringListClass; virtual; + procedure HandleEditChange(Edit: TEdit); override; + public + constructor Create(AOwner: TComponent); override; + procedure Loaded; override; + property ItemIndex: Integer read GetItemIndex write SetItemIndex default -1; + published + property AutoComplete: Boolean read FAutoComplete write FAutoComplete default True; + property DropDownList; + property MaxListWidth: Integer read GetMaxWidth write SetMaxWidth default 0; + property MaxVisibleItems: Integer read GetMaxVisibleItems write SetMaxVisibleItems default 8; + property MinListWidth: Integer read GetMinWidth write SetMinWidth default 64; + property ShowListImages: Boolean read GetShowListImages write SetShowListImages default False; + property Strings: TStrings read GetStrings write SetStrings; + property SubMenuImages; + property OnChange; + property OnAdjustImageIndex: TTBXCAdjustImageIndex read FOnAdjustImageIndex write FOnAdjustImageIndex; + property OnClearItem: TTBXLPaintEvent read GetOnClearItem write SetOnClearItem; + property OnDrawItem: TTBXLPaintEvent read GetOnDrawItem write SetOnDrawItem; + property OnItemClick: TNotifyEvent read FOnItemClick write FOnItemClick; + property OnMeasureHeight: TTBXLMeasureHeight read GetOnMeasureHeight write SetOnMeasureHeight; + property OnMeasureWidth: TTBXLMeasureWidth read GetOnMeasureWidth write SetOnMeasureWidth; + property OnPopup; + end; + +{$IFDEF COMPATIBLE} + { For compatibility with previous versions } + TTBXComboList = class(TTBXComboBoxItem); +{$ENDIF} + + TTBXComboBoxItemViewer = class(TTBXDropDownItemViewer) + protected + function HandleEditMessage(var Message: TMessage): Boolean; override; + end; + + { TTBXLabelItem } + + TTBXLabelOrientation = (tbxoAuto, tbxoHorizontal, tbxoVertical); + TNonNegativeInt = 0..MaxInt; + + TTBXLabelItem = class(TTBCustomItem) + private + FCaption: TCaption; + FFontSettings: TFontSettings; + FMargin: Integer; + FShowAccelChar: Boolean; + FOrientation: TTBXLabelOrientation; + FOnAdjustFont: TAdjustFontEvent; + procedure FontSettingsChanged(Sender: TObject); + procedure SetMargin(Value: Integer); + procedure SetOrientation(Value: TTBXLabelOrientation); + procedure SetCaption(const Value: TCaption); + procedure SetFontSettings(Value: TFontSettings); + procedure SetShowAccelChar(Value: Boolean); + protected + function GetItemViewerClass (AView: TTBView): TTBItemViewerClass; override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure UpdateCaption(const Value: TCaption); + published + property Caption: TCaption read FCaption write SetCaption; + property Enabled; + property FontSettings: TFontSettings read FFontSettings write SetFontSettings; + property Margin: Integer read FMargin write SetMargin default 0; + property Orientation: TTBXLabelOrientation read FOrientation write SetOrientation default tbxoAuto; + property ShowAccelChar: Boolean read FShowAccelChar write SetShowAccelChar default True; + property Visible; + property OnAdjustFont: TAdjustFontEvent read FOnAdjustFont write FOnAdjustFont; + end; + + TTBXLabelItemViewer = class(TTBItemViewer) + protected + function GetCaptionText: string; override; + function GetIsHoriz: Boolean; virtual; + procedure DoAdjustFont(AFont: TFont; StateFlags: Integer); virtual; + procedure CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); override; + procedure Paint(const Canvas: TCanvas; const ClientAreaRect: TRect; + IsHoverItem, IsPushed, UseDisabledShadow: Boolean); override; + function IsToolbarSize: Boolean; override; + public + function IsToolbarStyle: Boolean; override; + end; + + { TTBXColorItem } + + TTBXColorItem = class(TTBXCustomItem) + private + FColor: TColor; + procedure SetColor(Value: TColor); + protected + function GetItemViewerClass (AView: TTBView): TTBItemViewerClass; override; + public + constructor Create(AOwner: TComponent); override; + published + property Action; + property AutoCheck; + property Caption; + property Checked; + property Color: TColor read FColor write SetColor default clWhite; + property DisplayMode; + property Enabled; + property FontSettings; + property GroupIndex; + property HelpContext; + property Hint; + property InheritOptions; + property MaskOptions; + property MinHeight; + property MinWidth; + property Options; + property ShortCut; + property Visible; + property OnAdjustFont; + property OnClick; + end; + + TTBXColorItemViewer = class(TTBXItemViewer) + protected + procedure DoPaintCaption(Canvas: TCanvas; const ClientAreaRect: TRect; + var CaptionRect: TRect; IsTextRotated: Boolean; var PaintDefault: Boolean); override; + function GetImageShown: Boolean; override; + function GetImageSize: TSize; override; + procedure DrawItemImage(Canvas: TCanvas; ARect: TRect; ItemInfo: TTBXItemInfo); override; + public + constructor Create(AView: TTBView; AItem: TTBCustomItem; AGroupLevel: Integer); override; + end; + + { TTBXMRUList } + + TTBXMRUList = class(TTBMRUList) + private + FKeyShift: Integer; + procedure SetKeyShift(Value: Integer); + protected + function GetFirstKey: Integer; override; + function GetItemClass: TTBCustomItemClass; override; + procedure SetItemCaptions; override; + published + property KeyShift: Integer read FKeyShift write SetKeyShift default 0; + end; + + { TTBXMRUListItem } + + TTBXMRUListItem = class(TTBXCustomItem) + private + FMRUList: TTBMRUList; + procedure SetMRUList(Value: TTBMRUList); + protected + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + public + constructor Create(AOwner: TComponent); override; + published + property MRUList: TTBMRUList read FMRUList write SetMRUList; + end; + +implementation + +uses TB2Common, TB2Consts, TypInfo, Math, ImgList {$IFNDEF JR_D5}, DsgnIntf{$ENDIF}; + +const + { Repeat intervals for spin edit items } + SE_FIRSTINTERVAL = 400; + SE_INTERVAL = 100; + +type + TTBViewAccess = class(TTBView); + TTBItemAccess = class(TTBCustomItem); + TTBMRUListAccess = class(TTBMRUList); + TCustomEditAccess = class(TCustomEdit); + TFontSettingsAccess = class(TFontSettings); + +{ Misc. functions } + +function StartsText(const ASubText, AText: string): Boolean; +var + P: PChar; + L, L2: Integer; +begin + P := PChar(AText); + L := Length(ASubText); + L2 := Length(AText); + if L > L2 then Result := False + else Result := CompareString(LOCALE_USER_DEFAULT, NORM_IGNORECASE, + P, L, PChar(ASubText), L) = 2; +end; + +//============================================================================// + +{ TTBXEdit } + +type + TTBXEdit = class(TEdit) + private + FAlignment: TAlignment; + procedure SetAlignment(Value: TAlignment); + protected + procedure CreateParams(var Params: TCreateParams); override; + public + property Alignment: TAlignment read FAlignment write SetAlignment; + end; + +procedure TTBXEdit.CreateParams(var Params: TCreateParams); +const + Alignments: array[TAlignment] of Cardinal = (ES_LEFT, ES_RIGHT, ES_CENTER); +begin + inherited CreateParams(Params); + Params.Style := Params.Style or Alignments[FAlignment]; +end; + +procedure TTBXEdit.SetAlignment(Value: TAlignment); +begin + if Value <> FAlignment then + begin + FAlignment := Value; + RecreateWnd; + end; +end; + + +//============================================================================// + +{ TTBXEditItem } + +constructor TTBXEditItem.Create(AOwner: TComponent); +begin + inherited; + FEditorFontSettings := TFontSettings.Create; + FFontSettings := TFontSettings.Create; + TFontSettingsAccess(FEditorFontSettings).OnChange := FontSettingsChanged; + TFontSettingsAccess(FFontSettings).OnChange := FontSettingsChanged; +end; + +destructor TTBXEditItem.Destroy; +begin + FFontSettings.Free; + FEditorFontSettings.Free; + inherited; +end; + +function TTBXEditItem.DoAcceptText(var NewText: string): Boolean; +begin + Result := inherited DoAcceptText(NewText); +// if not Result then DoChange(Text); +end; + +function TTBXEditItem.DoAutoComplete(var AText: string): Boolean; +begin + Result := False; +end; + +procedure TTBXEditItem.DoBeginEdit(Viewer: TTBEditItemViewer); +begin + with Viewer do + begin + TTBXEdit(EditControl).Alignment := Alignment; + EditControl.PasswordChar := PasswordChar; + EditControl.SelectAll; + EditControl.ReadOnly := ReadOnly; + EditorFontSettings.Apply(EditControl.Font); + FAutoCompleteCounter := 0; + inherited; + if Viewer is TTBXEditItemViewer then + begin + EditControl.OnChange := TTBXEditItemViewer(Viewer).EditChangeHandler; + TTBXEditItemViewer(Viewer).OldWndProc := EditControl.WindowProc; + EditControl.WindowProc := TTBXEditItemViewer(Viewer).NewEditWndProc; + end; + end; +end; + +procedure TTBXEditItem.DoChange(const AText: string); +begin + if Assigned(FOnChange) then FOnChange(Self, AText); +end; + +procedure TTBXEditItem.DoTextChanged(Reason: Integer); +begin + if not ((Reason = tcrEditControl) and (Text = FLastEditChange)) then + DoChange(Text); +end; + +procedure TTBXEditItem.FontSettingsChanged(Sender: TObject); +begin + Change(True); +end; + +function TTBXEditItem.GetImageIndex: Integer; +begin + Result := ImageIndex; +end; + +function TTBXEditItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + if not (tboUseEditWhenVertical in EditOptions) and + (AView.Orientation = tbvoVertical) then + Result := TTBXItemViewer + else + Result := TTBXEditItemViewer; +end; + +procedure TTBXEditItem.GetPopupPosition(ParentView: TTBView; + PopupWindow: TTBPopupWindow; var PopupPositionRec: TTBPopupPositionRec); +var + VT: Integer; +begin + inherited; + VT := GetWinViewType(PopupWindow); + PopupPositionRec.PlaySound := not (VT and PVT_LISTBOX = PVT_LISTBOX); +end; + +function TTBXEditItem.GetPopupWindowClass: TTBPopupWindowClass; +begin + Result := TTBXPopupWindow; +end; + +procedure TTBXEditItem.HandleEditChange(Edit: TEdit); +var + S, S2: string; +begin + if not FIsChanging then + begin + FIsChanging := True; + try + S := Edit.Text; + S2 := S; + if (Length(S) > 0) and (FAutoCompleteCounter > 0) and DoAutoComplete(S2) then + begin + Edit.Text := S2; + Edit.SelStart := Length(S); + Edit.SelLength := Length(S2) - Length(S); + S := S2; + end; + if S <> FLastEditChange then + begin + DoChange(S); // note, Edit.Text may be different from Self.Text + FLastEditChange := S; + end; + finally + FIsChanging := False; + end; + end; +end; + +procedure TTBXEditItem.SetAlignment(Value: TAlignment); +begin + if Value <> FAlignment then + begin + FAlignment := Value; + Change(True); + end; +end; + +procedure TTBXEditItem.SetFontSettings(Value: TFontSettings); +begin + FFontSettings.Assign(Value); +end; + +procedure TTBXEditItem.SetPasswordChar(Value: Char); +begin + if Value <> FPasswordChar then + begin + FPasswordChar := Value; + Change(True); + end; +end; + +procedure TTBXEditItem.SetShowImage(const Value: Boolean); +begin + FShowImage := Value; + Change(True); +end; + +function TTBXEditItem.StartEditing(AView: TTBView): Boolean; +var + V: TTBItemViewer; + SaveText: string; +begin + Result := False; + V := AView.Find(Self); + if V is TTBXEditItemViewer then + begin + SaveText := Text; + TTBXEditItemViewer(V).DoExecute; + Result := Text <> SaveText; + end; +end; + + +//============================================================================// + +{ TTBXEditItemViewer } + +procedure TTBXEditItemViewer.CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); +var + W, B: Integer; + EditBoxHeight: Integer; + EditCaptionSize: TSize; +begin + if Self.Item is TTBXEditItem then with CurrentTheme do + begin + B := EditFrameWidth; + + AWidth := TTBXEditItem(Item).EditWidth; + if not IsToolbarStyle then + begin + EditCaptionSize := MeasureEditCaption; + W := EditCaptionSize.CX; + if W > 0 then Inc(W, MenuLeftCaptionMargin + MenuRightCaptionMargin + MenuImageTextSpace); + Inc(AWidth, GetPopupMargin(Self) + MenuImageTextSpace + W + EditMenuRightIndent); + end + else + begin + EditCaptionSize.CX := 0; + EditCaptionSize.CY := 0; + end; + + EditBoxHeight := MeasureTextHeight + 1; + Inc(EditBoxHeight, EditTextMarginVert * 2 + B * 2); + AHeight := Max(EditBoxHeight, EditCaptionSize.CY); + if not IsToolbarStyle then AHeight := AHeight; + if EditHeightEven then AHeight := (AHeight + 1) and not $01 + else AHeight := AHeight or $01; + end + else inherited; +end; + +procedure TTBXEditItemViewer.EditChangeHandler(Sender: TObject); +begin + HandleEditChange((Sender as TEdit)); +end; + +procedure TTBXEditItemViewer.HandleEditChange(Edit: TEdit); +begin + TTBXEditItem(Item).HandleEditChange(Edit); +end; + +procedure TTBXEditItemViewer.GetEditInfo(out EditInfo: TTBXEditInfo; const ItemInfo: TTBXItemInfo); +begin + FillChar(EditInfo, SizeOf(EditInfo), 0); + EditInfo.LeftBtnWidth := GetIndentBefore; + EditInfo.RightBtnWidth := GetIndentAfter; +end; + +function TTBXEditItemViewer.GetAccRole: Integer; +const + ROLE_SYSTEM_SPINBUTTON = $34; + ROLE_SYSTEM_COMBOBOX = $2E; +begin + Result := inherited GetAccRole; + if Self is TTBXSpinEditViewer then Result := ROLE_SYSTEM_SPINBUTTON + else if Self is TTBXDropDownItemViewer then Result := ROLE_SYSTEM_COMBOBOX; +end; + +procedure TTBXEditItemViewer.GetItemInfo(out ItemInfo: TTBXItemInfo; IsHoverItem, IsPushed, UseMenuColor: Boolean); +const + CToolbarStyle: array [Boolean] of Integer = (0, IO_TOOLBARSTYLE); + CDesigning: array [Boolean] of Integer = (0, IO_DESIGNING); +var + Item: TTBXEditItem; +begin + Item := TTBXEditItem(Self.Item); + + FillChar(ItemInfo, SizeOf(TTBXItemInfo), 0); + ItemInfo.ViewType := GetViewType(View); + ItemInfo.ItemOptions := CToolbarStyle[IsToolbarStyle] + or CDesigning[csDesigning in Item.ComponentState]; + ItemInfo.Enabled := Item.Enabled or View.Customizing; + ItemInfo.Pushed := IsPushed; + ItemInfo.Selected := Item.Checked; + if IsHoverItem then + begin + if not ItemInfo.Enabled and not View.MouseOverSelected then + ItemInfo.HoverKind := hkKeyboardHover + else + if ItemInfo.Enabled then ItemInfo.HoverKind := hkMouseHover; + end + else ItemInfo.HoverKind := hkNone; + if not IsToolbarStyle then ItemInfo.PopupMargin := GetPopupMargin(Self); +end; + +procedure TTBXEditItemViewer.GetEditRect(var R: TRect); +const + TB2K_EDIT_BORDER = 3; +var + W, B: Integer; +begin + if Item is TTBXEditItem then with CurrentTheme do + begin + R := BoundsRect; + if not IsToolbarStyle then + begin + W := MeasureEditCaption.CX; + if W > 0 then Inc(W, MenuLeftCaptionMargin + MenuRightCaptionMargin + MenuImageTextSpace); + Inc(R.Left, GetPopupMargin(Self) + MenuImageTextSpace + W); + Dec(R.Right, EditMenuRightIndent); + end; + + B := EditFrameWidth - TB2K_EDIT_BORDER; + InflateRect(R, -B - EditTextMarginHorz , -B - EditTextMarginVert); + Inc(R.Left, GetIndentBefore); + Dec(R.Right, GetIndentAfter); + end + else inherited; +end; + +function TTBXEditItemViewer.GetIndentAfter: Integer; +begin + Result := 0; +end; + +function TTBXEditItemViewer.GetIndentBefore: Integer; +var + ImgList: TCustomImageList; +begin + if ShowImage then + begin + ImgList := GetImageList; + if ImgList <> nil then Result := ImgList.Width + 2 + else Result := 0; + end + else Result := 0; +end; + +function TTBXEditItemViewer.HandleEditMessage(var Message: TMessage): Boolean; +const + CharKeys = [VK_SPACE, $30..$5A, VK_NUMPAD0..VK_DIVIDE, $BA..$F5]; +begin + if Message.Msg = WM_KEYDOWN then + begin + if Message.WParam in CharKeys then Inc(TTBXEditItem(Item).FAutoCompleteCounter) + end + else if Message.Msg = WM_KEYUP then + begin + if Message.WParam in CharKeys then Dec(TTBXEditItem(Item).FAutoCompleteCounter); + end; + Result := False; +end; + +procedure TTBXEditItemViewer.NewEditWndProc(var Message: TMessage); +begin + if Assigned(OldWndProc) and not HandleEditMessage(Message) then OldWndProc(Message); +end; + +procedure TTBXEditItemViewer.Paint(const Canvas: TCanvas; + const ClientAreaRect: TRect; IsHoverItem, IsPushed, UseDisabledShadow: Boolean); +const + FillColors: array [Boolean] of Integer = (COLOR_BTNFACE, COLOR_WINDOW); + TextColors: array [Boolean] of Integer = (COLOR_GRAYTEXT, COLOR_WINDOWTEXT); + Alignments: array [TAlignment] of Integer = (DT_LEFT, DT_RIGHT, DT_CENTER); +var + DC: HDC; + Item: TTBXEditItem; + S: string; + R, R2: TRect; + M, W: Integer; + ItemInfo: TTBXItemInfo; + EditInfo: TTBXEditInfo; + ImgList: TCustomImageList; + ImgIndex: Integer; + Fnt, OldFnt: HFont; + C, OldColor: TColor; +begin + DC := Canvas.Handle; + Item := TTBXEditItem(Self.Item); + GetItemInfo(ItemInfo, IsHoverItem, IsPushed, UseDisabledShadow); + GetEditInfo(EditInfo, ItemInfo); + R := ClientAreaRect; + + if not IsToolbarStyle then with CurrentTheme do + begin + S := Item.EditCaption; + + if Length(S) > 0 then + begin + { measure EditCaption } + Fnt := TTBXEditItem(Item).FontSettings.CreateTransformedFont(TTBViewAccess(View).GetFont.Handle, C); + OldFnt := SelectObject(DC, Fnt); + W := GetTextWidth(DC, S, True) + MenuImageTextSpace + MenuLeftCaptionMargin + MenuRightCaptionMargin; + SelectObject(DC, OldFnt); + end + else + begin + Fnt := 0; // to suppress compiler warning + W := 0; + end; + + M := GetPopupMargin(Self); + if not EditMenuFullSelect then R.Right := M + W + else Dec(R.Right, EditMenuRightIndent); + PaintMenuItemFrame(Canvas, R, ItemInfo); + Inc(R.Left, M + MenuImageTextSpace); + R.Right := ClientAreaRect.Right - EditMenuRightIndent; + + if Length(S) > 0 then + begin + Inc(R.Left, MenuLeftCaptionMargin); + C := ColorToRGB(GetItemTextColor(ItemInfo)); + OldFnt := SelectObject(DC, Fnt); + OldColor := SetTextColor(DC, C); + PaintCaption(Canvas, R, ItemInfo, S, DT_SINGLELINE or DT_LEFT or DT_VCENTER, False); + SetTextColor(DC, OldColor); + W := GetTextWidth(DC, S, True); + SelectObject(DC, OldFnt); + DeleteObject(Fnt); + Inc(R.Left, W + MenuRightCaptionMargin + MenuImageTextSpace); + end; + end; + + CurrentTheme.PaintEditFrame(Canvas, R, ItemInfo, EditInfo); + W := CurrentTheme.EditFrameWidth; + InflateRect(R, -W - CurrentTheme.EditTextMarginHorz, -W - CurrentTheme.EditTextMarginVert); + + if ShowImage then + begin + ImgList := GetImageList; + if ImgList <> nil then + begin + R2.Left := R.Left; + R2.Right := R.Left + ImgList.Width; + R2.Top := (R.Top + R.Bottom + 1 - ImgList.Height) div 2; + R2.Bottom := R2.Top + ImgList.Height; + ImgIndex := TTBXEditItem(Item).GetImageIndex; + if Item.Enabled then ImgList.Draw(Canvas, R.Left, R2.Top, ImgIndex) + else DrawTBXImage(Canvas, R2, ImgList, ImgIndex, ISF_DISABLED); + end; + end; + Inc(R.Left, EditInfo.LeftBtnWidth); + Dec(R.Right, EditInfo.RightBtnWidth + 1); + + if Item.Text <> '' then + begin + S := Item.Text; + if TTBXEditItem(Item).PasswordChar <> #0 then S := StringOfChar(TTBXEditItem(Item).PasswordChar, Length(S)); + Fnt := Item.EditorFontSettings.CreateTransformedFont(TTBViewAccess(View).GetFont.Handle, C); + OldFnt := SelectObject(DC, Fnt); + SetBkMode(DC, TRANSPARENT); + SetBkColor(DC, GetSysColor(FillColors[Item.Enabled])); + SetTextColor(DC, GetSysColor(TextColors[Item.Enabled])); + DrawText(DC, PChar(S), Length(S), R, DT_SINGLELINE or DT_NOPREFIX or Alignments[Item.Alignment]); + SelectObject(DC, OldFnt); + DeleteObject(Fnt); + end; + +{ if not IsToolbarStyle then + begin + R := ClientAreaRect; + Self.GetEditRect(R); + OffsetRect(R, -BoundsRect.Left, -BoundsRect.Top); + Canvas.FrameRect(R); + end; } +end; + +function TTBXEditItemViewer.GetEditControlClass: TEditClass; +begin + Result := TTBXEdit; +end; + +function TTBXEditItemViewer.ShowImage: Boolean; +begin + Result := TTBXEditItem(Item).ShowImage; +end; + +function TTBXEditItemViewer.IsToolbarSize: Boolean; +begin + Result := inherited IsToolbarSize; + Result := Result or ((GetViewType(View) and PVT_TOOLBOX) = PVT_TOOLBOX); +end; + +function TTBXEditItemViewer.IsToolbarStyle: Boolean; +begin + Result := inherited IsToolbarStyle; + Result := Result or ((GetViewType(View) and PVT_TOOLBOX) = PVT_TOOLBOX); +end; + +function TTBXEditItemViewer.MeasureEditCaption: TSize; +var + DC: HDC; + Fnt, OldFnt: HFont; + DummyColor: TColor; + TextMetric: TTextMetric; + S: string; +begin + Result.cx := 0; + Result.cy := 0; + if Item is TTBXEditItem then + begin + S := StripAccelChars(TTBXEditItem(Item).EditCaption); + if Length(S) > 0 then + begin + DummyColor := clWhite; + DC := GetDC(0); + Fnt := TTBXEditItem(Item).FontSettings.CreateTransformedFont(TTBViewAccess(View).GetFont.Handle, DummyColor); + OldFnt := SelectObject(DC, Fnt); + GetTextExtentPoint32(DC, PChar(S), Length(S), Result); + GetTextMetrics(DC, TextMetric); + Inc(Result.cy, TextMetric.tmExternalLeading); + SelectObject(DC, OldFnt); + DeleteObject(Fnt); + ReleaseDC(0, DC); + end; + end; +end; + +function TTBXEditItemViewer.MeasureTextHeight: Integer; +var + DC: HDC; + Fnt, OldFnt: HFont; + DummyColor: TColor; + TextMetric: TTextMetric; +begin + Result := 0; + if Item is TTBXEditItem then + begin + DummyColor := clWhite; + DC := GetDC(0); + Fnt := TTBXEditItem(Item).EditorFontSettings.CreateTransformedFont(TTBViewAccess(View).GetFont.Handle, DummyColor); + OldFnt := SelectObject(DC, Fnt); + Result := GetTextHeight(DC); + GetTextMetrics(DC, TextMetric); + Inc(Result, TextMetric.tmExternalLeading); + SelectObject(DC, OldFnt); + DeleteObject(Fnt); + ReleaseDC(0, DC); + end; +end; + +function TTBXEditItemViewer.DoExecute: Boolean; +begin + if Item is TTBXEditItem then + begin + TTBXEditItem(Item).FLastEditChange := ''; + Result := inherited DoExecute; + with TTBXEditItem(Item) do + begin + if FLastEditChange <> Text then DoChange(Text); + FLastEditChange := ''; + end; + end + else Result := inherited DoExecute; +end; + + +//============================================================================// + +{ TTBXCustomDropDownItem } + +constructor TTBXCustomDropDownItem.Create(AOwner: TComponent); +begin + inherited; + ItemStyle := ItemStyle + [tbisCombo, tbisSubmenu, tbisSubitemsEditable] - [tbisDontSelectFirst]; + FAlwaysSelectFirst := True; +end; + +function TTBXCustomDropDownItem.CreatePopup(const ParentView: TTBView; + const ParentViewer: TTBItemViewer; const PositionAsSubmenu, + SelectFirstItem, Customizing: Boolean; const APopupPoint: TPoint; + const Alignment: TTBPopupAlignment): TTBPopupWindow; +var + SelectFirst: Boolean; +begin + if AlwaysSelectFirst then SelectFirst := True + else SelectFirst := SelectFirstItem; + Result := inherited CreatePopup(ParentView, ParentViewer, PositionAsSubmenu, + SelectFirst, Customizing, APopupPoint, Alignment); +end; + +function TTBXCustomDropDownItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + if not (tboUseEditWhenVertical in EditOptions) and (AView.Orientation = tbvoVertical) then + Result := TTBXItemViewer + else + Result := TTBXDropDownItemViewer; +end; + + +//----------------------------------------------------------------------------// + +{ TTBXDropDownItemViewer } + +procedure TTBXDropDownItemViewer.GetCursor(const Pt: TPoint; var ACursor: HCURSOR); +begin + if not TTBXCustomDropDownItem(Item).DropDownList then inherited; +end; + +procedure TTBXDropDownItemViewer.GetEditInfo(out EditInfo: TTBXEditInfo; const ItemInfo: TTBXItemInfo); +const + CDisabled: array [Boolean] of Integer = (EBDS_DISABLED, 0); + CHot: array [Boolean] of Integer = (0, EBDS_HOT); + CPressed: array [Boolean] of Integer = (0, EBDS_PRESSED); +begin + inherited GetEditInfo(EditInfo, ItemInfo); + EditInfo.RightBtnInfo.ButtonType := EBT_DROPDOWN; + EditInfo.RightBtnInfo.ButtonState := CDisabled[ItemInfo.Enabled] or + CHot[ItemInfo.HoverKind = hkMouseHover] or CPressed[ItemInfo.Pushed]; +end; + +function TTBXDropDownItemViewer.GetIndentAfter: Integer; +begin + if IsToolbarStyle then Result := CurrentTheme.EditBtnWidth + else Result := GetSystemMetrics(SM_CXMENUCHECK) + 2; +end; + +function TTBXDropDownItemViewer.HandleEditMessage(var Message: TMessage): Boolean; +begin + if Message.Msg = WM_KEYDOWN then + begin + if TWMKeyDown(Message).CharCode = VK_F4 then + begin + TTBViewAccess(View).OpenChildPopup(True); + Result := True; + Exit; + end; + end; + + Result := inherited HandleEditMessage(Message); +end; + +function TTBXDropDownItemViewer.IsPtInButtonPart(X, Y: Integer): Boolean; +begin + Result := not (tbisSubmenu in TTBXCustomDropDownItem(Item).ItemStyle); + if TTBXCustomDropDownItem(Item).DropDownList then Result := False + else if (tbisCombo in TTBXCustomDropDownItem(Item).ItemStyle) then + Result := X < (BoundsRect.Right - BoundsRect.Left) - GetIndentAfter; +end; + +procedure TTBXDropDownItemViewer.KeyDown(var Key: Word; Shift: TShiftState); +begin + if not TTBXCustomDropDownItem(Item).DropDownList then inherited; +end; + +//============================================================================// + +{ TTBXComboBoxItem } + +procedure TTBXComboBoxItem.AdjustImageIndex(const AText: string; + AIndex: Integer; var ImageIndex: Integer); +begin + if Assigned(FOnAdjustImageIndex) then FOnAdjustImageIndex(Self, AText, AIndex, ImageIndex); +end; + +procedure TTBXComboBoxItem.AdjustImageIndexHandler(Sender: TTBXCustomList; + AItemIndex: Integer; var ImageIndex: Integer); +begin + AdjustImageIndex(FList.Strings[AItemIndex], AItemIndex, ImageIndex); +end; + +constructor TTBXComboBoxItem.Create(AOwner: TComponent); +begin + inherited; + ItemStyle := ItemStyle - [tbisSubItemsEditable]; + FAutoComplete := True; + FList := GetStringListClass.Create(Self); + FList.OnChange := ListChangeHandler; + FList.OnClick := ListClickHandler; + FList.OnAdjustImageIndex := AdjustImageIndexHandler; + MinListWidth := 64; +end; + +function TTBXComboBoxItem.DoAutoComplete(var AText: string): Boolean; +var + I: Integer; + S, R: string; + TemplateL, MinL, L: Integer; +begin + Result := False; + if Length(AText) > 0 then + begin + { choose the shortest matching string from items } + TemplateL := Length(AText); + MinL := MaxInt; + SetLength(R, 0); + for I := 0 to FList.Strings.Count - 1 do + begin + S := FList.Strings[I]; + L := Length(S); + if (L >= TemplateL) and (L < MinL) and StartsText(AText, S) then + begin + R := S; + MinL := L; + if MinL = TemplateL then Break; + end; + end; + Result := Length(R) > 0; + if Result then AText := R; + end; +end; + +procedure TTBXComboBoxItem.DoListChange; +begin + { Update text in edit item. This will call OnChange automatically } + if (FList.ItemIndex >= 0) and (FList.ItemIndex < FList.Strings.Count) then + begin + IsChanging := True; + try + if Text <> FList.Strings[Flist.ItemIndex] then + begin + SetTextEx(FList.Strings[FList.ItemIndex], tcrList); + end; + finally + IsChanging := False; + end; + end; +end; + +procedure TTBXComboBoxItem.DoListClick; +begin + if Assigned(FOnItemClick) then FOnItemClick(Self); +end; + +procedure TTBXComboBoxItem.DoPopup(Sender: TTBCustomItem; FromLink: Boolean); +begin + inherited; + FList.ItemIndex := FList.Strings.IndexOf(Text); +end; + +function TTBXComboBoxItem.GetImageIndex: Integer; +begin + if not CacheValid then + begin + CachedImageIndex := ImageIndex; + if ItemIndex >= 0 then CachedImageIndex := ItemIndex; + AdjustImageIndex(Text, -1, CachedImageIndex); + CacheValid := True; + end; + Result := CachedImageIndex; +end; + +function TTBXComboBoxItem.GetItemIndex: Integer; +begin + Result := FList.ItemIndex; +end; + +function TTBXComboBoxItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + if not (tboUseEditWhenVertical in EditOptions) and + (AView.Orientation = tbvoVertical) then + Result := TTBXItemViewer + else + Result := TTBXComboBoxItemViewer; +end; + +function TTBXComboBoxItem.GetMaxVisibleItems: Integer; +begin + Result := FList.MaxVisibleItems; +end; + +function TTBXComboBoxItem.GetMaxWidth: Integer; +begin + Result := FList.MaxWidth; +end; + +function TTBXComboBoxItem.GetMinWidth: Integer; +begin + Result := FList.MinWidth; +end; + +function TTBXComboBoxItem.GetOnClearItem: TTBXLPaintEvent; +begin + Result := FList.OnClearItem; +end; + +function TTBXComboBoxItem.GetOnDrawItem: TTBXLPaintEvent; +begin + Result := FList.OnDrawItem; +end; + +function TTBXComboBoxItem.GetOnMeasureHeight: TTBXLMeasureHeight; +begin + Result := FList.OnMeasureHeight; +end; + +function TTBXComboBoxItem.GetOnMeasureWidth: TTBXLMeasureWidth; +begin + Result := FList.OnMeasureWidth; +end; + +function TTBXComboBoxItem.GetShowListImages: Boolean; +begin + Result := FList.ShowImages; +end; + +function TTBXComboBoxItem.GetStringListClass: TTBXStringListClass; +begin + Result := TTBXStringList; +end; + +function TTBXComboBoxItem.GetStrings: TStrings; +begin + Result := FList.Strings; +end; + +procedure TTBXComboBoxItem.HandleEditChange(Edit: TEdit); +begin + CacheValid := False; + inherited; +end; + +procedure TTBXComboBoxItem.ListChangeHandler(Sender: TObject); +begin + CacheValid := False; + DoListChange; +end; + +procedure TTBXComboBoxItem.ListClickHandler(Sender: TObject); +begin + CacheValid := False; + DoListClick; +end; + +procedure TTBXComboBoxItem.Loaded; +begin + inherited; + if FList.Strings.IndexOf(Text) >= 0 then + begin + IsChanging := True; + try + FList.ItemIndex := FList.Strings.IndexOf(Text); + finally + IsChanging := False; + end; + end; + if not (csDesigning in ComponentState) then Add(FList); +end; + +procedure TTBXComboBoxItem.SetItemIndex(Value: Integer); +begin + FList.ItemIndex := Value; +end; + +procedure TTBXComboBoxItem.SetMaxVisibleItems(Value: Integer); +begin + FList.MaxVisibleItems := Value; +end; + +procedure TTBXComboBoxItem.SetMaxWidth(Value: Integer); +begin + FList.MaxWidth := Value; +end; + +procedure TTBXComboBoxItem.SetMinWidth(Value: Integer); +begin + FList.MinWidth := Value; +end; + +procedure TTBXComboBoxItem.SetOnClearItem(Value: TTBXLPaintEvent); +begin + FList.OnClearItem := Value; +end; + +procedure TTBXComboBoxItem.SetOnDrawItem(Value: TTBXLPaintEvent); +begin + FList.OnDrawItem := Value; +end; + +procedure TTBXComboBoxItem.SetOnMeasureHeight(Value: TTBXLMeasureHeight); +begin + FList.OnMeasureHeight := Value; +end; + +procedure TTBXComboBoxItem.SetOnMeasureWidth(Value: TTBXLMeasureWidth); +begin + FList.OnMeasureWidth := Value; +end; + +procedure TTBXComboBoxItem.SetShowListImages(Value: Boolean); +begin + FList.ShowImages := Value; +end; + +procedure TTBXComboBoxItem.SetStrings(Value: TStrings); +begin + FList.Strings := Value; +end; + + +//============================================================================// + +{ TTBXComboBoxItemViewer } + +function TTBXComboBoxItemViewer.HandleEditMessage(var Message: TMessage): Boolean; +begin + if (Message.Msg = WM_KEYDOWN) then with TTBXComboBoxItem(Item) do + begin + case Message.wParam of + VK_UP: + begin + ItemIndex := ItemIndex - 1; + EditControl.Text := Text; + EditControl.SelectAll; + Result := True; + end; + + VK_DOWN: + begin + ItemIndex := ItemIndex + 1; + EditControl.Text := Text; + EditControl.SelectAll; + Result := True; + end; + else + Result := inherited HandleEditMessage(Message); + end + end + else Result := inherited HandleEditMessage(Message); +end; + + +//============================================================================// + +{ TTBXLabelItem } + +constructor TTBXLabelItem.Create(AOwner: TComponent); +begin + inherited; + FFontSettings := TFontSettings.Create; + TFontSettingsAccess(FFontSettings).OnChange := FontSettingsChanged; + FShowAccelChar := True; + ItemStyle := ItemStyle - [tbisSelectable] + [tbisClicksTransparent, tbisStretch]; +end; + +destructor TTBXLabelItem.Destroy; +begin + FFontSettings.Free; + inherited; +end; + +procedure TTBXLabelItem.FontSettingsChanged(Sender: TObject); +begin + Change(True); +end; + +function TTBXLabelItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBXLabelItemViewer; +end; + +procedure TTBXLabelItem.SetCaption(const Value: TCaption); +begin + FCaption := Value; + Change(True); +end; + +procedure TTBXLabelItem.SetFontSettings(Value: TFontSettings); +begin + FFontSettings := Value; +end; + +{procedure TTBXLabelItem.SetFontSize(Value: TTBXFontSize); +begin + FFontSize := Value; + Change(True); +end; } + +procedure TTBXLabelItem.SetMargin(Value: Integer); +begin + FMargin := Value; + Change(True); +end; + +procedure TTBXLabelItem.SetOrientation(Value: TTBXLabelOrientation); +begin + FOrientation := Value; + Change(True); +end; + +procedure TTBXLabelItem.SetShowAccelChar(Value: Boolean); +begin + FShowAccelChar := Value; + Change(True); +end; + +procedure TTBXLabelItem.UpdateCaption(const Value: TCaption); +begin + FCaption := Value; + Change(False); +end; + + +//============================================================================// + +{ TTBXLabelItemViewer } + +procedure TTBXLabelItemViewer.CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); +var + DC: HDC; + S: string; + TextMetrics: TTextMetric; + RotatedFont, SaveFont: HFont; +begin + Canvas.Font := TTBViewAccess(View).GetFont; + DoAdjustFont(Canvas.Font, 0); + S := GetCaptionText; + if Length(S) = 0 then S := '0'; + DC := Canvas.Handle; + if IsToolbarStyle then + begin + AWidth := TTBXLabelItem(Item).Margin; + AHeight := AWidth; + if Length(S) > 0 then + begin + if GetIsHoriz then + begin + GetTextMetrics(DC, TextMetrics); + Inc(AHeight, TextMetrics.tmHeight); + Inc(AWidth, GetTextWidth(DC, S, TTBXLabelItem(Item).ShowAccelChar)); + end + else + begin + RotatedFont := CreateRotatedFont(DC); + SaveFont := SelectObject(DC, RotatedFont); + GetTextMetrics(DC, TextMetrics); + Inc(AWidth, TextMetrics.tmHeight); + Inc(AHeight, GetTextWidth(DC, S, TTBXLabelItem(Item).ShowAccelChar)); + SelectObject(DC, SaveFont); + DeleteObject(RotatedFont); + end; + end; + end + else + begin + if Length(S) > 0 then + begin + GetTextMetrics(DC, TextMetrics); + AHeight := TextMetrics.tmHeight; + AWidth := GetTextWidth(DC, S, TTBXLabelItem(Item).ShowAccelChar); + end; + end; + + if AWidth < 6 then AWidth := 6; + if AHeight < 6 then AHeight := 6; + with TTBXLabelItem(Item) do + begin + Inc(AWidth, Margin shl 1 + 1); + Inc(AHeight, Margin shl 1 + 1); + end; +end; + +procedure TTBXLabelItemViewer.DoAdjustFont(AFont: TFont; StateFlags: Integer); +begin + if Item is TTBXLabelItem then + with TTBXLabelItem(Item) do + begin + FontSettings.Apply(AFont); + if Assigned(FOnAdjustFont) then FOnAdjustFont(Item, Self, AFont, StateFlags); + end; +end; + +function TTBXLabelItemViewer.GetCaptionText: string; +var + P: Integer; +begin + Result := TTBXLabelItem(Item).Caption; + P := Pos(#9, Result); + if P <> 0 then SetLength(Result, P - 1); +end; + +function TTBXLabelItemViewer.GetIsHoriz: Boolean; +begin + with TTBXLabelItem(Item) do + case Orientation of + tbxoHorizontal: Result := True; + tbxoVertical: Result := False; + else // tbxoAuto + Result := View.Orientation <> tbvoVertical; + end; +end; + +function TTBXLabelItemViewer.IsToolbarSize: Boolean; +begin + Result := inherited IsToolbarSize; + Result := Result or ((GetViewType(View) and PVT_TOOLBOX) = PVT_TOOLBOX); +end; + +function TTBXLabelItemViewer.IsToolbarStyle: Boolean; +begin + Result := inherited IsToolbarStyle; + Result := Result or ((GetViewType(View) and PVT_TOOLBOX) = PVT_TOOLBOX); +end; + +procedure TTBXLabelItemViewer.Paint(const Canvas: TCanvas; + const ClientAreaRect: TRect; IsHoverItem, IsPushed, UseDisabledShadow: Boolean); +const + CEnabledStates: array [Boolean] of Integer = (ISF_DISABLED, 0); + CDesigning: array [Boolean] of Integer = (0, IO_DESIGNING); + CPrefixes: array [Boolean] of Integer = (DT_NOPREFIX, 0); +var + Fmt: Cardinal; + ItemInfo: TTBXItemInfo; + R: TRect; +begin + FillChar(ItemInfo, SizeOf(ItemInfo), 0); + ItemInfo.ViewType := GetViewType(View); + ItemInfo.ItemOptions := IO_TOOLBARSTYLE or CDesigning[csDesigning in Item.ComponentState]; + ItemInfo.Enabled := Item.Enabled or View.Customizing; + ItemInfo.Pushed := False; + ItemInfo.Selected := False; + ItemInfo.ImageShown := False; + ItemInfo.ImageWidth := 0; + ItemInfo.ImageHeight := 0; + ItemInfo.HoverKind := hkNone; + ItemInfo.IsPopupParent := False; + ItemInfo.IsVertical := not GetIsHoriz; + + Canvas.Font := TTBViewAccess(View).GetFont; + Canvas.Font.Color := CurrentTheme.GetItemTextColor(ItemInfo); + DoAdjustFont(Canvas.Font, CEnabledStates[ItemInfo.Enabled]); + Canvas.Brush.Style := bsClear; + Fmt := DT_SINGLELINE or DT_CENTER or DT_VCENTER or CPrefixes[TTBXLabelItem(Item).ShowAccelChar]; + R := ClientAreaRect; + CurrentTheme.PaintCaption(Canvas, R, ItemInfo, GetCaptionText, Fmt, ItemInfo.IsVertical); + Canvas.Brush.Style := bsSolid; +end; + + +//============================================================================// + +{ TTBXColorItem } + +constructor TTBXColorItem.Create(AOwner: TComponent); +begin + inherited; + FColor := clWhite; +end; + +function TTBXColorItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBXColorItemViewer; +end; + +procedure TTBXColorItem.SetColor(Value: TColor); +begin + if FColor <> Value then + begin + FColor := Value; + Change(False); + end; +end; + + +//============================================================================// + +{ TTBXColorItemViewer } + +procedure TTBXColorItemViewer.DrawItemImage(Canvas: TCanvas; ARect: TRect; ItemInfo: TTBXItemInfo); +begin + with ItemInfo, Canvas do if Enabled then + begin + if ((ItemOptions and IO_TOOLBARSTYLE) = 0) then InflateRect(ARect, -2, -2); + if TTBXColorItem(Item).Color <> clNone then + begin + Brush.Color := clBtnShadow; + FrameRect(ARect); + InflateRect(ARect, -1, -1); + Brush.Color := TTBXColorItem(Item).Color; + FillRect(ARect); + end; + end + else + begin + Inc(ARect.Right); + Inc(ARect.Bottom); + DrawEdge(Handle, ARect, BDR_SUNKENOUTER or BDR_RAISEDINNER, BF_RECT); + end; +end; + +procedure TTBXColorItemViewer.DoPaintCaption(Canvas: TCanvas; + const ClientAreaRect: TRect; var CaptionRect: TRect; + IsTextRotated: Boolean; var PaintDefault: Boolean); +begin + if (GetViewType(View) and PVT_TOOLBOX) = PVT_TOOLBOX then + begin + { Center Caption } + OffsetRect(CaptionRect, -CaptionRect.Left, 0); + OffsetRect(CaptionRect, (ClientAreaRect.Right - CaptionRect.Right) div 2, 0); + end; +end; + +function TTBXColorItemViewer.GetImageSize: TSize; +begin + if IsToolbarStyle then + begin + Result.CX := 12; + Result.CY := 12; + end + else + begin + Result.CX := 16; + Result.CY := 16; + end; +end; + +function TTBXColorItemViewer.GetImageShown: Boolean; +begin + Result := ((Item.DisplayMode in [nbdmDefault, nbdmImageAndText]) or + (IsToolbarStyle and (Item.DisplayMode = nbdmTextOnlyInMenus))); +end; + +constructor TTBXColorItemViewer.Create(AView: TTBView; AItem: TTBCustomItem; AGroupLevel: Integer); +begin + inherited; + Wide := False; +end; + +//============================================================================// + +{ TTBXMRUList } + +function TTBXMRUList.GetFirstKey:Integer; +begin + Result := FKeyShift; +end; + +function TTBXMRUList.GetItemClass: TTBCustomItemClass; +begin + Result := TTBXCustomItem; +end; + +procedure TTBXMRUList.SetItemCaptions; +var + I: Integer; +begin + inherited; + if Container is TTBXCustomItem then + for I := 0 to Items.Count - 1 do + TTBXCustomItem(Items[I]).FontSettings := TTBXCustomItem(Container).FontSettings; +end; + +procedure TTBXMRUList.SetKeyShift(Value: Integer); +begin + if Value < 0 then Value := 0; + FKeyShift := Value; + SetItemCaptions; +end; + + +//============================================================================// + +{ TTBXMRUListItem } + +constructor TTBXMRUListItem.Create(AOwner: TComponent); +begin + inherited; + ItemStyle := ItemStyle + [tbisEmbeddedGroup]; + Caption := STBMRUListItemDefCaption[1] + 'TBX ' + + Copy(STBMRUListItemDefCaption, 2, Length(STBMRUListItemDefCaption) - 1); +end; + +procedure TTBXMRUListItem.Notification(AComponent: TComponent; + Operation: TOperation); +begin + inherited; + if (AComponent = FMRUList) and (Operation = opRemove) then MRUList := nil; +end; + +procedure TTBXMRUListItem.SetMRUList(Value: TTBMRUList); +begin + if FMRUList <> Value then + begin + FMRUList := Value; + if Assigned(Value) then + begin + Value.FreeNotification(Self); + LinkSubitems := TTBMRUListAccess(Value).Container; + end + else LinkSubitems := nil; + end; +end; + +{ TTBXCustomSpinEditItem } + +function TTBXCustomSpinEditItem.CheckValue(const V: Extended): Extended; +begin + Result := V; + if FMaxValue <> FMinValue then + begin + if V < FMinValue then Result := FMinValue + else if V > FMaxValue then Result := FMaxValue; + end; +end; + +procedure TTBXCustomSpinEditItem.ClickDown; +var + OldValue, NewValue: Extended; +begin + OldValue := GetValue; + if Snap then + NewValue := Ceil(OldValue / Increment - 1 - Increment * 0.0001) * Increment + else + NewValue := OldValue - FIncrement; + DoStep(-1, OldValue, NewValue); + SetValueEx(NewValue, tcrSpinButton); +end; + +procedure TTBXCustomSpinEditItem.ClickUp; +var + OldValue, NewValue: Extended; +begin + OldValue := GetValue; + if Snap then + NewValue := Floor(OldValue / Increment + 1 + Increment * 0.0001) * Increment + else + NewValue := OldValue + FIncrement; + DoStep(+1, OldValue, NewValue); + SetValueEx(NewValue, tcrSpinButton); +end; + +constructor TTBXCustomSpinEditItem.Create(AOwner: TComponent); +begin + inherited; + FAlignment := taRightJustify; + FDecimal := 2; + FIncrement := 1; + FSnap := True; + Text := '0'; +end; + +function TTBXCustomSpinEditItem.DoAcceptText(var NewText: string): Boolean; +var + V: Extended; +begin + if ParseValue(NewText, V) then + begin + NewText := GetAsText(V); + Result := True; + end + else Result := False; +end; + +function TTBXCustomSpinEditItem.DoConvert(const APrefix, APostfix: string; var AValue: Extended): Boolean; +begin + Result := True; + if Assigned(FOnConvert) then FOnConvert(Self, APrefix, APostfix, AValue, Result); +end; + +procedure TTBXCustomSpinEditItem.DoStep(Step: Integer; const OldValue: Extended; var NewValue: Extended); +begin + if Assigned(FOnStep) then FOnStep(Self, Step, OldValue, NewValue); +end; + +procedure TTBXCustomSpinEditItem.DoTextChanged(Reason: Integer); +begin + if Reason = tcrEditControl then + SetValueEx(GetValue, tcrNumericProperty); +end; + +function TTBXCustomSpinEditItem.DoTextToValue(const AText: string; out AValue: Extended): Boolean; +begin + Result := False; + if Assigned(FOnTextToValue) then FOnTextToValue(Self, AText, AValue, Result); +end; + +procedure TTBXCustomSpinEditItem.DoValueChange(const V: Extended); +begin + if Assigned(FOnValueChange) then FOnValueChange(Self, V); +end; + +procedure TTBXCustomSpinEditItem.DoValueToText(const NewValue: Extended; var NewText: string); +begin + if Assigned(FOnValueToText) then FOnValueToText(Self, NewValue, NewText); +end; + +function TTBXCustomSpinEditItem.GetAsInteger: Integer; +begin + Result := Round(Value); +end; + +function TTBXCustomSpinEditItem.GetAsText(AValue: Extended): string; +begin + AValue := CheckValue(AValue); + if ValueType = evtFloat then Result := FloatToStrF(AValue, ffFixed, 15, FDecimal) + else if ValueType = evtHex then Result := IntToHex(Round(AValue), 1) + else Result := IntToStr(Round(AValue)); + + if Length(Prefix) > 0 then + begin + if SpaceAfterPrefix then Result := ' ' + Result; + Result := Prefix + Result; + end; + if Length(Postfix) > 0 then + begin + if SpaceBeforePostfix then Result := Result + ' '; + Result := Result + Postfix; + end; + DoValueToText(AValue, Result); +end; + +function TTBXCustomSpinEditItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + if not (tboUseEditWhenVertical in EditOptions) and + (AView.Orientation = tbvoVertical) then + Result := TTBXItemViewer + else + Result := TTBXSpinEditViewer; +end; + +function TTBXCustomSpinEditItem.GetValue: Extended; +begin + if not ParseValue(Text, Result) then + Result := FLastGoodValue; +end; + +function TTBXCustomSpinEditItem.IsIncrementStored: Boolean; +begin + Result := FIncrement <> 1; +end; + +function TTBXCustomSpinEditItem.IsMaxValueStored: Boolean; +begin + Result := FMaxValue <> 0; +end; + +function TTBXCustomSpinEditItem.IsMinValueStored: Boolean; +begin + Result := FMinValue <> 0; +end; + +function TTBXCustomSpinEditItem.IsValueStored: Boolean; +begin + Result := GetValue <> 0; +end; + +function TTBXCustomSpinEditItem.ParseValue(const S: string; out V: Extended): Boolean; +const + CWhiteSpace = [' ', #9]; + CDigits = ['0'..'9']; + CHexDigits = CDigits + ['A'..'F']; + CInvalidUnitChars = [#0..#31, ' ', '*', '+', ',', '-', '.', '/', '0'..'9', '^']; + CInvalidHexUnitChars = CInvalidUnitChars + ['A'..'F']; +var + P: PChar; + Sign1: Integer; + Value1: Extended; + Value2: Extended; + Operator: Char; + PrefixString, PostfixString: string; + + procedure SkipWhiteSpace; + begin + while P^ in CWhiteSpace do Inc(P); + end; + + function GetInt: Integer; + begin + Result := 0; + while P^ in CDigits do + begin + Result := Result * 10 + (Integer(P^) - Integer('0')); + Inc(P); + end; + end; + + function GetInt2: Extended; + begin + Result := 0; + while P^ in CDigits do + begin + Result := Result * 10 + (Integer(P^) - Integer('0')); + Inc(P); + end; + end; + + function GetNumber(out PrefixString, PostfixString: string; out R: Extended): Boolean; + var + PStart: PChar; + Tmp: Integer; + ExponentSign, IR: Integer; + Count1, Count2: Integer; + E: Extended; + begin + R := 0; + Result := False; + + { Read prefix } + PStart := P; + if ValueType <> evtHex then while not (P^ in CInvalidUnitChars) do Inc(P) + else while not (P^ in CInvalidHexUnitChars) do Inc(P); + SetString(PrefixString, PStart, P - PStart); + SkipWhiteSpace; + + { Read value } + if ValueType in [evtFloat, evtInteger] then + begin + if (ValueType = evtInteger) and not (P^ in CDigits) then Exit; + + { get the integer part } + PStart := P; + R := GetInt2; + Count1 := P - PStart; + + if (ValueType = evtFloat) and (P^ = DecimalSeparator) then + begin + Inc(P); + PStart := P; + E := GetInt2; + R := R + E / IntPower(10, P - PStart); + Count2 := P - PStart; + end + else Count2 := 0; + + if (Count1 = 0) and (Count2 = 0) then Exit; // '.' (or ',') is not a number + + if (ValueType = evtFloat) and (P^ in ['e', 'E']) and (PChar(P + 1)^ in ['+', '-', '0'..'9']) then + begin + Inc(P); + ExponentSign := 1; + if P^ = '-' then + begin + ExponentSign := -1; + Inc(P); + end + else if P^ = '+' then Inc(P); + if not (P^ in CDigits) then Exit; + Tmp := GetInt; + if Tmp >= 5000 then Exit; + R := R * IntPower(10, Tmp * ExponentSign); + end; + end + else { evtHex } + begin + IR := 0; + if not (P^ in CHexDigits) then Exit; + while P^ in CHexDigits do + begin + IR := IR shl 4; + if P^ in CDigits then Inc(IR, Integer(P^) - Integer('0')) + else if P^ in ['a'..'f'] then Inc(IR, Integer(P^) - Integer('a') + 10) + else Inc(IR, Integer(P^) - Integer('A') + 10); + Inc(P); + end; + R := IR; + end; + SkipWhiteSpace; + + { Read postfix } + PStart := P; + if ValueType <> evtHex then while not (P^ in CInvalidUnitChars) do Inc(P) + else while not (P^ in CInvalidHexUnitChars) do Inc(P); + SetString(PostfixString, PStart, P - PStart); + SkipWhiteSpace; + + Result := True; + end; + +begin + V := 0; + + { Try text-to-value conversion for predefined "constants" } + Result := DoTextToValue(S, V); + if Result then Exit; + + { Parse the string for values and expressions } + if Length(S) = 0 then Exit; + P := PChar(S); + SkipWhiteSpace; + + { Read the sign } + Sign1 := 1; + if P^ = '-' then + begin + Sign1 := -1; + Inc(P); + SkipWhiteSpace; + end + else if P^ = '+' then + begin + Inc(P); + SkipWhiteSpace; + end; + + { Read value } + if not GetNumber(PrefixString, PostfixString, Value1) then Exit; + if not DoConvert(PrefixString, PostfixString, Value1) then Exit; + Value1 := Value1 * Sign1; + V := Value1; + + { Read operator } + if P^ in ['*', '+', '-', '/'] then + begin + Operator := P^; + Inc(P); + SkipWhiteSpace; + if not GetNumber(PrefixString, PostfixString, Value2) then Exit; + if not DoConvert(PrefixString, PostfixString, Value2) then Exit; + case Operator of + '*': V := V * Value2; + '+': V := V + Value2; + '-': V := V - Value2; + '/': if Value2 <> 0 then V := V / Value2 else Exit; + end; + end; + + if P^ = #0 then Result := True; +end; + +procedure TTBXCustomSpinEditItem.SetAsInteger(AValue: Integer); +begin + Value := AValue; +end; + +procedure TTBXCustomSpinEditItem.SetDecimal(NewDecimal: TDecimal); +begin + if NewDecimal <> FDecimal then + begin + FDecimal := NewDecimal; + SetValueEx(GetValue, tcrNumericProperty); + end; +end; + +procedure TTBXCustomSpinEditItem.SetIncrement(const NewIncrement: Extended); +begin + if NewIncrement <= 0 then + raise EPropertyError.Create('Increment should be a positive value'); + FIncrement := NewIncrement; +end; + +procedure TTBXCustomSpinEditItem.SetPostfix(const NewPostfix: string); +begin + if not ValidateUnits(NewPostfix) then + raise EPropertyError.Create('Invalid postfix'); + FPostfix := NewPostfix; + SetValueEx(GetValue, tcrNumericProperty); +end; + +procedure TTBXCustomSpinEditItem.SetPrefix(const NewPrefix: string); +begin + if not ValidateUnits(NewPrefix) then + raise EPropertyError.Create('Invalid prefix'); + FPrefix := NewPrefix; + SetValueEx(GetValue, tcrNumericProperty); +end; + +procedure TTBXCustomSpinEditItem.SetSpaceAfterPrefix(UseSpace: Boolean); +begin + FSpaceAfterPrefix := UseSpace; + SetValueEx(GetValue, tcrNumericProperty); +end; + +procedure TTBXCustomSpinEditItem.SetSpaceBeforePostfix(UseSpace: Boolean); +begin + FSpaceBeforePostfix := UseSpace; + SetValueEx(GetValue, tcrNumericProperty); +end; + +procedure TTBXCustomSpinEditItem.SetValue(NewValue: Extended); +begin + SetTextEx(GetAsText(NewValue), tcrNumericProperty); + if FLastGoodValue <> NewValue then + begin + FLastGoodValue := NewValue; + DoValueChange(NewValue); + end; +end; + +procedure TTBXCustomSpinEditItem.SetValueEx(NewValue: Extended; Reason: Integer); +begin + SetTextEx(GetAsText(NewValue), Reason); + if FLastGoodValue <> NewValue then + begin + FLastGoodValue := NewValue; + DoValueChange(NewValue); + end; +end; + +procedure TTBXCustomSpinEditItem.SetValueType(NewType: TSEValueType); +var + V: Extended; +begin + if NewType <> FValueType then + begin + V := GetValue; + FValueType := NewType; + SetValueEx(V, tcrNumericProperty); + if NewType in [evtInteger, evtHex] then FIncrement := Max(Round(FIncrement), 1); + end; +end; + +function TTBXCustomSpinEditItem.ValidateUnits(const S: string): Boolean; +const + InvalidChars = [#0..#31, ' ', '*', '+', ',', '-', '.', '/', '0'..'9', '^']; +var + I: Integer; +begin + Result := False; + if Length(S) > 0 then + for I := 1 to Length(S) do + if S[I] in InvalidChars then Exit; + Result := True; +end; + +{ TTBXSpinEditViewer } + +destructor TTBXSpinEditViewer.Destroy; +begin + FBtnTimer.Free; + inherited; +end; + +procedure TTBXSpinEditViewer.GetEditInfo(out EditInfo: TTBXEditInfo; const ItemInfo: TTBXItemInfo); +const + CDisabled: array [Boolean] of Integer = (EBSS_DISABLED, 0); + CHot: array [Boolean] of Integer = (0, EBSS_HOT); + CUpDnState: array [TSEBtnState] of Integer = (0, EBSS_UP, EBSS_DOWN); +begin + inherited GetEditInfo(EditInfo, ItemInfo); + EditInfo.RightBtnInfo.ButtonType := EBT_SPIN; + EditInfo.RightBtnInfo.ButtonState := CDisabled[ItemInfo.Enabled] or + CHot[ItemInfo.HoverKind = hkMouseHover] or CUpDnState[FBtnState]; +end; + +function TTBXSpinEditViewer.GetIndentAfter: Integer; +begin + if IsToolbarStyle then Result := CurrentTheme.EditBtnWidth + 2 + else Result := GetSystemMetrics(SM_CXMENUCHECK) + 2; +end; + +function TTBXSpinEditViewer.HandleEditMessage(var Message: TMessage): Boolean; +var + Item: TTBXCustomSpinEditItem; + + function Val: Extended; + begin + if not Item.ParseValue(EditControl.Text, Result) then Result := Item.FLastGoodValue; + end; + +begin + Item := TTBXCustomSpinEditItem(Self.Item); + if Message.Msg = WM_CHAR then + case TWMChar(Message).CharCode of + VK_TAB: + begin + Item.Value := Val; + EditControl.Text := Item.Text; + end; + VK_RETURN: + begin + Item.Value := Val; + EditControl.Text := Item.Text; + end; + VK_ESCAPE: + begin +// Item.Value := Item.GetValue; + end; + end + else if Message.Msg = WM_KEYDOWN then + case TWMKeyDown(Message).CharCode of + VK_UP: + begin + Item.ClickUp; + EditControl.Text := Item.Text; + EditControl.SelectAll; + Result := True; + Exit; + end; + VK_DOWN: + begin + Item.ClickDown; + EditControl.Text := Item.Text; + EditControl.SelectAll; + Result := True; + Exit; + end; + end; + + Result := inherited HandleEditMessage(Message); +end; + +procedure TTBXSpinEditViewer.InvalidateButtons; +var + R: TRect; +begin + with TTBXSpinEditItem(Item) do + if Show and not IsRectEmpty(BoundsRect) then + begin + R := BoundsRect; + R.Left := R.Right - GetIndentAfter; + InvalidateRect(View.Window.Handle, @R, False); + Include(State, tbisInvalidated); + end; +end; + +function TTBXSpinEditViewer.IsPtInButtonPart(X, Y: Integer): Boolean; +begin + Result := X <= (BoundsRect.Right - BoundsRect.Left) - GetIndentAfter; +end; + +procedure TTBXSpinEditViewer.LosingCapture; +begin + FBtnTimer.Free; + FBtnTimer := nil; + inherited; +end; + +procedure TTBXSpinEditViewer.MouseDown(Shift: TShiftState; X, Y: Integer; var MouseDownOnMenu: Boolean); +begin + if not Item.Enabled then Exit; + FBtnState := ebsNone; + if X >= BoundsRect.Right - BoundsRect.Left - GetIndentAfter then + begin + if Y < (BoundsRect.Bottom - BoundsRect.Top) div 2 then + begin + FBtnState := ebsUp; + TTBXSpinEditItem(Item).ClickUp; + end + else + begin + FBtnState := ebsDown; + TTBXSpinEditItem(Item).ClickDown; + end; + + if FBtnTimer = nil then + begin + FBtnTimer := TTimer.Create(nil); + FBtnTimer.OnTimer := TimerHandler; + end; + FBtnTimer.Interval := SE_FIRSTINTERVAL; + FBtnTimer.Enabled := True; + end; + + if FBtnState <> ebsNone then + begin + InvalidateButtons; + inherited; + View.SetCapture; + end + else inherited; +end; + +procedure TTBXSpinEditViewer.MouseUp(X, Y: Integer; MouseWasDownOnMenu: Boolean); +begin + if FBtnState <> ebsNone then + begin + FBtnState := ebsNone; + FBtnTimer.Free; + FBtnTimer := nil; + InvalidateButtons; + end; + inherited; +end; + +procedure TTBXSpinEditViewer.TimerHandler(Sender: TObject); +begin + FBtnTimer.Interval := SE_INTERVAL; + if FBtnState = ebsUp then TTBXSpinEditItem(Item).ClickUp + else if FBtnState = ebsDown then TTBXSpinEditItem(Item).ClickDown + else + begin + FBtnTimer.Free; + FBtnTimer := nil; + end; +end; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXLists.pas b/official/2.1.6+2.1.beta1/TBX/TBXLists.pas new file mode 100644 index 0000000..7ff67c1 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXLists.pas @@ -0,0 +1,1387 @@ +unit TBXLists; + +// TBX Package +// Copyright 2001-2004 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// $Id: TBXLists.pas 7 2004-02-21 06:07:53Z $ + +interface + +{$I ..\..\Source\TB2Ver.inc} +{$I TBX.inc} + +uses + Windows, Messages, Classes, SysUtils, Controls, Forms, Graphics, TB2Item, TBX, + TBXThemes, TBXUxThemes, ImgList; + +type + { TTBXScrollBar } + + TSBIncrement = 1..1000; + TSBZone = (sbzEmpty, sbzPrev, sbzPagePrev, sbzHandle, sbzPageNext, sbzNext); + TSBAutoScrollEvent = procedure(Sender: TObject; var Direction, Interval: Integer) of object; + + TTBXScrollBar = class + private + FBounds: TRect; + FLeft: Integer; + FHandle: HWND; + FHeight: Integer; + FIncrement: TSBIncrement; + FKind: TScrollBarKind; + FPosition: Integer; + FRange: Integer; + FRight: Integer; + FTop: Integer; + FWidth: Integer; + FWindow: Integer; + FOnChange: TNotifyEvent; + FOnAutoScroll: TSBAutoScrollEvent; + FOnRedrawRequest: TNotifyEvent; + procedure SetBounds(const Value: TRect); + procedure SetKind(Value: TScrollBarKind); + procedure SetPosition(Value: Integer); + procedure SetRange(Value: Integer); + function GetHandle: HWND; + protected + AutoScrollDirection: Integer; + AutoScrolling: Boolean; + AutoScrollInterval: Integer; + Zones: array [TSBZone] of TRect; + MouseDownZone: TSBZone; + MouseDownPoint: TPoint; + MouseDownPosition: Integer; + LastMousePoint: TPoint; + PrevCapture: HWND; + UserChange: Boolean; + procedure AdjustPosition(var NewPosition: Integer); + procedure CreateWnd; + procedure DestroyWnd; + function GetZone(X, Y: Integer): TSBZone; + function GetEffectiveWindow: Integer; + function GetEnabled: Boolean; virtual; + procedure HandleZoneClick(AZone: TSBZone); + procedure MouseDown(Button: TMouseButton; X, Y: Integer); virtual; + procedure MouseMove(X, Y: Integer); virtual; + procedure MouseUp(Button: TMouseButton; X, Y: Integer); virtual; + procedure PaintButton(Canvas: TCanvas; Rect: TRect; Direction: Integer; Pushed, Enabled: Boolean); + procedure PaintHandle(Canvas: TCanvas; Rect: TRect; Pushed, Enabled: Boolean); + procedure PaintTrack(Canvas: TCanvas; Rect: TRect; IsNextZone, Pushed, Enabled: Boolean); + procedure PaintTo(Canvas: TCanvas); + procedure SBWndProc(var Message: TMessage); + procedure StartAutoScroll(Direction, Interval: Integer); + procedure StopAutoScroll; + procedure StartTimer(ID: Integer; Elapse: Integer); + procedure StopTimer(ID: Integer); + procedure TimerElapsed(ID: Integer; var NewElapse: Integer); virtual; + procedure UpdateZones; + property Handle: HWND read GetHandle; + public + constructor Create; + destructor Destroy; override; + procedure Redraw; virtual; + procedure UpdatePosition(NewPosition: Integer); + property Kind: TScrollBarKind read FKind write SetKind; + property Bounds: TRect read FBounds write SetBounds; + property Left: Integer read FLeft; + property Height: Integer read FHeight; + property Increment: TSBIncrement read FIncrement write FIncrement; + property Position: Integer read FPosition write SetPosition; + property Range: Integer read FRange write SetRange; + property Right: Integer read FRight; + property Top: Integer read FTop; + property Width: Integer read FWidth; + property Window: Integer read FWindow write FWindow; + property OnAutoScroll: TSBAutoScrollEvent read FOnAutoScroll write FOnAutoScroll; + property OnChange: TNotifyEvent read FOnChange write FOnChange; + property OnRedrawRequest: TNotifyEvent read FOnRedrawRequest write FOnRedrawRequest; + end; + + { TTBXCustomList } + TTBXCustomList = class; + + TTBXLMeasureHeight = procedure(Sender: TTBXCustomList; ACanvas: TCanvas; var AHeight: Integer) of object; + TTBXLMeasureWidth = procedure(Sender: TTBXCustomList; ACanvas: TCanvas; AIndex: Integer; var AWidth: Integer) of object; + TTBXLPaintEvent = procedure(Sender: TTBXCustomList; ACanvas: TCanvas; ARect: TRect; AIndex, AHoverIndex: Integer; var DrawDefault: Boolean) of object; + TTBXLAdjustImageIndex = procedure(Sender: TTBXCustomList; AItemIndex: Integer; var ImageIndex: Integer) of object; + + TTBXCustomListViewer = class; + + TTBXCustomList = class(TTBXCustomItem) + private + FViewers: TList; + FItemIndex: Integer; + FMinWidth: Integer; + FMaxWidth: Integer; + FMaxVisibleItems: Integer; + FShowImages: Boolean; + FOnChange: TNotifyEvent; + FOnClearItem: TTBXLPaintEvent; + FOnDrawItem: TTBXLPaintEvent; + FOnAdjustImageIndex: TTBXLAdjustImageIndex; + FOnMeasureHeight: TTBXLMeasureHeight; + FOnMeasureWidth: TTBXLMeasureWidth; + procedure SetItemIndex(Value: Integer); + protected + function DoClearItem(ACanvas: TCanvas; ARect: TRect; AIndex, AHoverIndex: Integer): Boolean; virtual; + function DoDrawItem(ACanvas: TCanvas; ARect: TRect; AIndex, AHoverIndex: Integer): Boolean; virtual; + procedure DoMeasureHeight(ACanvas: TCanvas; var AHeight: Integer); virtual; + procedure DoMeasureWidth(ACanvas: TCanvas; AIndex: Integer; var AWidth: Integer); virtual; + procedure DrawItem(ACanvas: TCanvas; AViewer: TTBXCustomListViewer; const ARect: TRect; AIndex, AHoverIndex: Integer); virtual; + function GetImageIndex(ItemIndex: Integer): Integer; virtual; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + function GetItemText(Index: Integer): string; virtual; abstract; + function GetCount: Integer; virtual; abstract; + procedure HandleChange; virtual; + procedure HandleHover(AIndex: Integer); virtual; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + public + constructor Create(AOwner: TComponent); override; + procedure MakeVisible(AIndex: Integer); + property ItemIndex: Integer read FItemIndex write SetItemIndex default -1; + property MaxVisibleItems: Integer read FMaxVisibleItems write FMaxVisibleItems default 8; + property MaxWidth: Integer read FMaxWidth write FMaxWidth default 0; + property MinWidth: Integer read FMinWidth write FMinWidth default 32; + property ShowImages: Boolean read FShowImages write FShowImages default False; + property OnAdjustImageIndex: TTBXLAdjustImageIndex read FOnAdjustImageIndex write FOnAdjustImageIndex; + property OnChange: TNotifyEvent read FOnChange write FOnChange; + property OnClearItem: TTBXLPaintEvent read FOnClearItem write FOnClearItem; + property OnDrawItem: TTBXLPaintEvent read FOnDrawItem write FOnDrawItem; + property OnMeasureHeight: TTBXLMeasureHeight read FOnMeasureHeight write FOnMeasureHeight; + property OnMeasureWidth: TTBXLMeasureWidth read FOnMeasureWidth write FOnMeasureWidth; + end; + + TTBXCustomListViewer = class(TTBXItemViewer) + private + FItemCount: Integer; + FItemHeight: Integer; + FHoverIndex: Integer; + FHeight: Integer; + FLastClientRect: TRect; + FWheelAccumulator: Integer; + FWidth: Integer; + FOffset: Integer; + FScrollBarWidth: Integer; + FScrollBar: TTBXScrollBar; + FVisibleItems: Integer; + procedure ListChangeHandler(NewIndex: Integer); + procedure SBAutoScrollHandler(Sender: TObject; var Direction, Interval: Integer); + procedure SBChangeHandler(Sender: TObject); + procedure SBRedrawHandler(Sender: TObject); + protected + MouseIsDown: Boolean; + MouseInScrollBar: Boolean; + IgnoreMouseUp: Boolean; + IsChanging: Boolean; + procedure AdjustAutoScrollHover(var AIndex: Integer; Direction: Integer); virtual; + procedure CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); override; + procedure DrawItems(const Canvas: TCanvas; const ClientAreaRect: TRect); + function GetItemIndexAt(X, Y: Integer): Integer; + function GetItemRect(Index: Integer): TRect; + function GetItemHeight(ACanvas: TCanvas): Integer; virtual; + function GetItemWidth(ACanvas: TCanvas; Index: Integer): Integer; virtual; + procedure HandleAutoScroll(var Direction, Interval: Integer); virtual; + procedure KeyDown(var Key: Word; Shift: TShiftState); override; + procedure MakeVisible(Index: Integer); + procedure MouseDown(Shift: TShiftState; X, Y: Integer; var MouseDownOnMenu: Boolean); override; + procedure MouseMove(X, Y: Integer); override; + procedure MouseUp(X, Y: Integer; MouseWasDownOnMenu: Boolean); override; + procedure MouseWheel(WheelDelta: Integer; X, Y: Integer); override; + procedure Paint(const Canvas: TCanvas; const ClientAreaRect: TRect; IsHoverItem, IsPushed, UseDisabledShadow: Boolean); override; + procedure UpdateItems; + property HoverIndex: Integer read FHoverIndex write FHoverIndex; + property Offset: Integer read FOffset; {vb+} + property VisibleItems: Integer read FVisibleItems; {vb+} + public + constructor Create(AView: TTBView; AItem: TTBCustomItem; AGroupLevel: Integer); override; + destructor Destroy; override; + end; + + { TTBXStringList } + + TTBXStringList = class(TTBXCustomList) + private + FStrings: TStrings; + procedure SetStrings(Value: TStrings); + protected + function GetItemText(Index: Integer): string; override; + function GetCount: Integer; override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + published + property ItemIndex; + property MaxVisibleItems; + property MaxWidth; + property MinWidth; + property Strings: TStrings read FStrings write SetStrings; + property OnAdjustImageIndex; + property OnChange; + property OnClearItem; + property OnClick; + property OnDrawItem; + property OnMeasureHeight; + property OnMeasureWidth; + end; + + TTBXStringListClass = class of TTBXStringList; + + { TTBXUndoList } + + TTBXUndoList = class(TTBXStringList) + protected + procedure DrawItem(ACanvas: TCanvas; AViewer: TTBXCustomListViewer; const ARect: TRect; AIndex, AHoverIndex: Integer); override; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + procedure HandleHover(AIndex: Integer); override; + end; + + TTBXUndoListViewer = class(TTBXCustomListViewer) + protected + procedure AdjustAutoScrollHover(var AIndex: Integer; Direction: Integer); override; + procedure HandleAutoScroll(var Direction, Interval: Integer); override; + end; + +implementation + +type TTBViewAccess = class(TTBView); + +const + SCROLL_TIMER = 1; + AUTO_SCROLL_TIMER = 2; + MIN_SB_HANDLE_SIZE = 8; + + CImageSpacing = 4; + +//----------------------------------------------------------------------------// + +{ TTBXScrollBar } + +procedure TTBXScrollBar.AdjustPosition(var NewPosition: Integer); +var + W: Integer; +begin + W := GetEffectiveWindow; + if NewPosition + W > Range then NewPosition := Range - W; + if NewPosition < 0 then NewPosition := 0; +end; + +constructor TTBXScrollBar.Create; +begin + FIncrement := 1; +end; + +procedure TTBXScrollBar.CreateWnd; +begin + if FHandle = 0 then FHandle := {$IFDEF JR_D6}Classes.{$ENDIF}AllocateHWnd(SBWndProc); +end; + +destructor TTBXScrollBar.Destroy; +begin + DestroyWnd; + inherited; +end; + +procedure TTBXScrollBar.DestroyWnd; +begin + if FHandle <> 0 then + begin + {$IFDEF JR_D6}Classes.{$ENDIF}DeallocateHWnd(FHandle); + FHandle := 0; + end; +end; + +function TTBXScrollBar.GetEffectiveWindow: Integer; +begin + if Window <= 0 then + begin + if Kind = sbVertical then Result := Height + else Result := Width; + end + else Result := Window; +end; + +function TTBXScrollBar.GetEnabled: Boolean; +begin + Result := Range > GetEffectiveWindow; +end; + +function TTBXScrollBar.GetHandle: HWND; +begin + if FHandle = 0 then CreateWnd; + Result := FHandle; +end; + +function TTBXScrollBar.GetZone(X, Y: Integer): TSBZone; +var + I: Integer; + Pt: TPoint; +begin + Pt.X := X; + Pt.Y := Y; + for I := Ord(sbzPrev) to Ord(sbzNext) do + begin + Result := TSBZone(I); + if PtInRect(Zones[Result], Pt) then Exit; + end; + Result := sbzEmpty; +end; + +procedure TTBXScrollBar.HandleZoneClick(AZone: TSBZone); +begin + UserChange := True; + case AZone of + sbzPrev: Position := Position - Increment; + sbzPagePrev: Position := Position - GetEffectiveWindow; + sbzPageNext: Position := Position + GetEffectiveWindow; + sbzNext: Position := Position + Increment; + end; + UserChange := False; +end; + +procedure TTBXScrollBar.MouseDown(Button: TMouseButton; X, Y: Integer); +begin + if Button = mbLeft then + begin + MouseDownZone := GetZone(X, Y); + MouseDownPoint := Point(X, Y); + MouseDownPosition := Position; + LastMousePoint := MouseDownPoint; + if MouseDownZone in [sbzPrev, sbzPagePrev, sbzPageNext, sbzNext] then + begin + HandleZoneClick(MouseDownZone); + StartTimer(SCROLL_TIMER, 500); + end; + Redraw; + end; +end; + +procedure TTBXScrollBar.MouseMove(X, Y: Integer); +var + Delta: Integer; + ClientSize, HandleSize: Integer; +begin + LastMousePoint := Point(X, Y); + if MouseDownZone = sbzHandle then + begin + if Kind = sbVertical then + begin + Delta := Y - MouseDownPoint.Y; + ClientSize := Zones[sbzPageNext].Bottom - Zones[sbzPagePrev].Top; + end + else + begin + Delta := X - MouseDownPoint.X; + ClientSize := Zones[sbzPageNext].Right - Zones[sbzPagePrev].Left; + end; + HandleSize := Round(ClientSize * Window / Range); + if HandleSize < MIN_SB_HANDLE_SIZE then + Delta := Round(Delta * (Range - Window) / (ClientSize - MIN_SB_HANDLE_SIZE)) + else + Delta := Round(Delta * Range / ClientSize); + + if MouseDownPosition + Delta <> Position then + begin + UserChange := True; + Position := MouseDownPosition + Delta; + UserChange := False; + end; + end; +end; + +procedure TTBXScrollBar.MouseUp(Button: TMouseButton; X, Y: Integer); +begin + StopTimer(SCROLL_TIMER); + if Button = mbLeft then + begin + MouseDownZone := sbzEmpty; + Redraw; + end; +end; + +procedure TTBXScrollBar.PaintButton(Canvas: TCanvas; Rect: TRect; + Direction: Integer; Pushed, Enabled: Boolean); +const + DirectionFlags: array [0..3] of Cardinal = (DFCS_SCROLLLEFT, DFCS_SCROLLUP, + DFCS_SCROLLRIGHT, DFCS_SCROLLDOWN); + EnabledFlags: array [Boolean] of Cardinal = (DFCS_INACTIVE, 0); + PushedFlags: array [Boolean] of Cardinal = (0, DFCS_PUSHED or DFCS_FLAT); + + DirectionXPFlags: array [0..3] of Cardinal = (ABS_LEFTNORMAL, ABS_UPNORMAL, + ABS_RIGHTNORMAL, ABS_DOWNNORMAL); +var + StateFlags: Cardinal; +begin + if USE_THEMES then + begin + StateFlags := DirectionXPFlags[Direction]; + if not Enabled then Inc(StateFlags, 3) + else if Pushed then Inc(StateFlags, 2); + DrawThemeBackground(SCROLLBAR_THEME, Canvas.Handle, SBP_ARROWBTN, StateFlags, Rect, nil); + end + else + begin + DrawFrameControl(Canvas.Handle, Rect, DFC_SCROLL, + DirectionFlags[Direction] or EnabledFlags[Enabled] or PushedFlags[Pushed]); + end; +end; + +procedure TTBXScrollBar.PaintHandle(Canvas: TCanvas; Rect: TRect; Pushed, Enabled: Boolean); +const + PartXPFlags: array [TScrollBarKind] of Cardinal = (SBP_THUMBBTNHORZ, SBP_THUMBBTNVERT); +var + StateFlags: Cardinal; +begin + if USE_THEMES then + begin + StateFlags := SCRBS_NORMAL; + if not Enabled then Inc(StateFlags, 3) + else if Pushed then Inc(StateFlags, 2); + DrawThemeBackground(SCROLLBAR_THEME, Canvas.Handle, PartXPFlags[Kind], StateFlags, Rect, nil); + end + else + begin + DrawEdge(Canvas.Handle, Rect, EDGE_RAISED, BF_RECT or BF_ADJUST); + Canvas.Brush.Color := clBtnFace; + Canvas.FillRect(Rect); + end; +end; + +procedure TTBXScrollBar.PaintTo(Canvas: TCanvas); +var + R: TRect; + E, IsVert: Boolean; + I: Integer; + Dummy: TPoint; +begin + UpdateZones; + IsVert := Kind = sbVertical; + E := GetEnabled; + + OffsetWindowOrgEx(Canvas.Handle, -Bounds.Left, -Bounds.Top, Dummy); + try + + if IsVert then I := 1 else I := 0; + PaintButton(Canvas, Zones[sbzPrev], I, MouseDownZone = sbzPrev, E); + PaintButton(Canvas, Zones[sbzNext], I + 2, MouseDownZone = sbzNext, E); + + if not IsRectEmpty(Zones[sbzEmpty]) then + begin + Canvas.Brush.Color := clScrollBar; + Canvas.Brush.Style := bsSolid; + Canvas.FillRect(Zones[sbzEmpty]); + end; + + if not IsRectEmpty(Zones[sbzPagePrev]) or not IsRectEmpty(Zones[sbzPageNext]) then + begin + R := Zones[sbzPagePrev]; + PaintTrack(Canvas, R, False, MouseDownZone = sbzPagePrev, E); + R := Zones[sbzPageNext]; + PaintTrack(Canvas, R, True, MouseDownZone = sbzPageNext, E); + end; + + if not IsRectEmpty(Zones[sbzHandle]) then + PaintHandle(Canvas, Zones[sbzHandle], MouseDownZone = sbzHandle, E); + + finally + OffsetWindowOrgEx(Canvas.Handle, Bounds.Left, Bounds.Top, Dummy); + end; +end; + +procedure TTBXScrollBar.PaintTrack(Canvas: TCanvas; Rect: TRect; + IsNextZone, Pushed, Enabled: Boolean); +const + PartXPFlags: array [Boolean, TScrollBarKind] of Cardinal = + ((SBP_LOWERTRACKHORZ, SBP_LOWERTRACKVERT), (SBP_UPPERTRACKHORZ, SBP_UPPERTRACKVERT)); +var + StateFlags: Cardinal; +begin + if USE_THEMES then + begin + StateFlags := SCRBS_NORMAL; + if not Enabled then Inc(StateFlags, 3) + else if Pushed then Inc(StateFlags, 2); + DrawThemeBackground(SCROLLBAR_THEME, Canvas.Handle, PartXPFlags[IsNextZone, Kind], + StateFlags, Rect, nil); + end + else + begin + if Pushed then Canvas.Brush.Color := cl3DDkShadow + else Canvas.Brush.Bitmap := AllocPatternBitmap(clBtnHighlight, clScrollBar); + Canvas.FillRect(Rect); + end; +end; + +procedure TTBXScrollBar.Redraw; +begin + if Assigned(FOnRedrawRequest) then FOnRedrawRequest(Self); +end; + +procedure TTBXScrollBar.SBWndProc(var Message: TMessage); +var + I: Integer; + + procedure DefaultHandler; + begin + with Message do + Result := DefWindowProc(FHandle, Msg, wParam, lParam); + end; + +begin + case Message.Msg of + + WM_TIMER: with TWMTimer(Message) do + begin + I := 0; + TimerElapsed(TimerID, I); + if I > 0 then StartTimer(TimerID, I) + else StopTimer(TimerID); + Result := 0; + end; + + else + DefaultHandler; + end; +end; + +procedure TTBXScrollBar.SetBounds(const Value: TRect); +begin + FBounds := Value; + with Value do + begin + FLeft := Left; + FTop := Top; + FWidth := Right - Left; + FHeight := Bottom - Top; + end; + UpdateZones; +end; + +procedure TTBXScrollBar.SetKind(Value: TScrollBarKind); +begin + FKind := Value; + UpdateZones; +end; + +procedure TTBXScrollBar.SetPosition(Value: Integer); +begin + AdjustPosition(Value); + if Value <> FPosition then + begin + FPosition := Value; + if UserChange then + begin + Redraw; + if Assigned(FOnChange) then FOnChange(Self); + end; + end; +end; + +procedure TTBXScrollBar.SetRange(Value: Integer); +begin + if Value < 0 then Value := 0; + if Value <> FRange then + begin + FRange := Value; + Redraw; + SetPosition(Position); + end; +end; + +procedure TTBXScrollBar.StartAutoScroll(Direction, Interval: Integer); +begin + if Direction <> 0 then + begin + AutoScrollDirection := Direction; + AutoScrollInterval := Interval; + if not AutoScrolling then + begin + StartTimer(AUTO_SCROLL_TIMER, Interval); + AutoScrolling := True; + end; + end; +end; + +procedure TTBXScrollBar.StartTimer(ID, Elapse: Integer); +begin + SetTimer(Handle, ID, Elapse, nil); +end; + +procedure TTBXScrollBar.StopAutoScroll; +begin + if AutoScrolling then + begin + AutoScrolling := False; + StopTimer(AUTO_SCROLL_TIMER); + end; +end; + +procedure TTBXScrollBar.StopTimer(ID: Integer); +begin + KillTimer(Handle, ID); +end; + +procedure TTBXScrollBar.TimerElapsed(ID: Integer; var NewElapse: Integer); +begin + case ID of + SCROLL_TIMER: + if MouseDownZone <> sbzEmpty then + if not (MouseDownZone in [sbzPagePrev, sbzPageNext]) or + (GetZone(LastMousePoint.X, LastMousePoint.Y) = MouseDownZone) then + begin + HandleZoneClick(MouseDownZone); + NewElapse := 100; + end; + AUTO_SCROLL_TIMER: if AutoScrolling then + begin + NewElapse := AutoScrollInterval; + UpdatePosition(Position + AutoScrollDirection); + if (Position = 0) or (Position + Window = Range) then NewElapse := 0; + if Assigned(FOnAutoScroll) then + FOnAutoScroll(Self, AutoScrollDirection, AutoScrollInterval); + AutoScrolling := NewElapse > 0; + end; + end; +end; + +procedure TTBXScrollBar.UpdatePosition(NewPosition: Integer); +begin + UserChange := True; + if NewPosition < 0 then NewPosition := 0; + if NewPosition > Range - Window then NewPosition := Range - Window; + Position := NewPosition; + UserChange := False; +end; + +procedure TTBXScrollBar.UpdateZones; +var + SzL, SzT: Integer; + ButtonSize: Integer; + Lo, Hi: Integer; + HandleSize, HandlePos: Integer; + Window: Integer; + IsVert: Boolean; + + procedure SetZone(var R: TRect; Lo, Hi: Integer); + begin + if IsVert then + begin + R.Left := 0; + R.Right := Width; + R.Top := Lo; + R.Bottom := Hi; + end + else + begin + R.Left := Lo; + R.Right := Hi; + R.Top := 0; + R.Bottom := Height; + end; + end; + +begin + IsVert := Kind = sbVertical; + Window := GetEffectiveWindow; + + if IsVert then + begin + SzL := Height; + SzT := Width; + end + else + begin + SzL := Width; + SzT := Height; + end; + + + { Buttons } + ButtonSize := SzT; + if ButtonSize * 2 >= SzL - 2 then ButtonSize := (SzL - 2) div 2; + SetZone(Zones[sbzPrev], 0, ButtonSize); + SetZone(Zones[sbzNext], SzL - ButtonSize, SzL); + + { Handle } + Lo := ButtonSize; + Hi := SzL - ButtonSize; + if GetEnabled and (Hi - Lo > MIN_SB_HANDLE_SIZE + 4) then + begin + HandleSize := Round((Hi - Lo) * Window / Range); + if HandleSize >= MIN_SB_HANDLE_SIZE then + HandlePos := Round((Hi - Lo) * Position / Range) + else + begin + HandleSize := MIN_SB_HANDLE_SIZE; + HandlePos := Round((Hi - Lo - MIN_SB_HANDLE_SIZE) * Position / (Range - Window)); + end; + Inc(HandlePos, Lo); + SetZone(Zones[sbzHandle], HandlePos, HandlePos + HandleSize); + SetZone(Zones[sbzPagePrev], Lo, HandlePos); + SetZone(Zones[sbzPageNext], HandlePos + HandleSize, Hi); + Zones[sbzEmpty].Right := -1; + end + else + begin + { Invalidate invisible zones } + Zones[sbzPagePrev].Right := -1; + Zones[sbzHandle].Right := -1; + Zones[sbzPageNext].Right := -1; + SetZone(Zones[sbzEmpty], Lo, Hi); + end; +end; + +//----------------------------------------------------------------------------// + +{ TTBXCustomList } + +constructor TTBXCustomList.Create(AOwner: TComponent); +begin + inherited; + FMinWidth := 32; + FMaxWidth := 0; + FMaxVisibleItems := 8; + FItemIndex := -1; +end; + +function TTBXCustomList.DoClearItem(ACanvas: TCanvas; ARect: TRect; AIndex, AHoverIndex: Integer): Boolean; +begin + Result := True; + if Assigned(FOnClearItem) then FOnClearItem(Self, ACanvas, ARect, AIndex, AHoverIndex, Result); +end; + +function TTBXCustomList.DoDrawItem(ACanvas: TCanvas; ARect: TRect; AIndex, AHoverIndex: Integer): Boolean; +begin + Result := True; + if Assigned(FOnDrawItem) then FOnDrawItem(Self, ACanvas, ARect, AIndex, AHoverIndex, Result); +end; + +procedure TTBXCustomList.DoMeasureHeight(ACanvas: TCanvas; var AHeight: Integer); +begin + if Assigned(FOnMeasureHeight) then FOnMeasureHeight(Self, ACanvas, AHeight); +end; + +procedure TTBXCustomList.DoMeasureWidth(ACanvas: TCanvas; AIndex: Integer; var AWidth: Integer); +begin + if Assigned(FOnMeasureWidth) then FOnMeasureWidth(Self, ACanvas, AIndex, AWidth); +end; + +procedure TTBXCustomList.DrawItem(ACanvas: TCanvas; AViewer: TTBXCustomListViewer; + const ARect: TRect; AIndex, AHoverIndex: Integer); +const + FillColors: array [Boolean] of TColor = (clWindow, clHighlight); + TextColors: array [Boolean] of TColor = (clWindowText, clHighlightText); +var + S: string; + R, R2: TRect; + ImgList: TCustomImageList; +begin + ACanvas.Brush.Color := FillColors[AIndex = AHoverIndex]; + if DoClearItem(ACanvas, ARect, AIndex, AHoverIndex) then ACanvas.FillRect(ARect); + + ACanvas.Font.Color := TextColors[AIndex = AHoverIndex]; + if DoDrawItem(ACanvas, ARect, AIndex, AHoverIndex) then + begin + R := ARect; + InflateRect(R, -4, 1); + ImgList := AViewer.GetImageList; + if ShowImages and (ImgList <> nil) then + begin + R2.Left := R.Left; + R2.Top := (R.Top + R.Bottom - ImgList.Height) div 2; + R2.Right := R2.Left + ImgList.Width; + R2.Bottom := R2.Top + ImgList.Height; + if Enabled then ImgList.Draw(ACanvas, R2.Left, R2.Top, GetImageIndex(AIndex)) + else DrawTBXImage(ACanvas, R2, ImgList, GetImageIndex(AIndex), ISF_DISABLED); + Inc(R.Left, ImgList.Width + CImageSpacing); + end; + + S := GetItemText(AIndex); + if Length(S) > 0 then + begin + ACanvas.Brush.Style := bsClear; + DrawText(ACanvas.Handle, PChar(S), Length(S), R, DT_SINGLELINE or DT_VCENTER or DT_NOPREFIX); + ACanvas.Brush.Style := bsSolid; + end; + end; +end; + +function TTBXCustomList.GetImageIndex(ItemIndex: Integer): Integer; +begin + Result := ItemIndex; + if Assigned(FOnAdjustImageIndex) then FOnAdjustImageIndex(Self, ItemIndex, Result); +end; + +function TTBXCustomList.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBXCustomListViewer; +end; + +procedure TTBXCustomList.HandleChange; +begin + if Assigned(FOnChange) then FOnChange(Self); +end; + +procedure TTBXCustomList.HandleHover(AIndex: Integer); +begin +end; + +procedure TTBXCustomList.MakeVisible(AIndex: Integer); +var + I: Integer; +begin + if FViewers <> nil then + for I := 0 to FViewers.Count - 1 do + TTBXCustomListViewer(FViewers[I]).MakeVisible(AIndex); +end; + +procedure TTBXCustomList.Notification(AComponent: TComponent; Operation: TOperation); +begin + inherited Notification(AComponent, Operation); + if (Operation = opRemove) and (AComponent = Images) then Images := nil; +end; + +procedure TTBXCustomList.SetItemIndex(Value: Integer); +var + I: Integer; +begin + if Value < 0 then Value := -1; + FItemIndex := Value; + + { Update viewers } + if FViewers <> nil then + for I := 0 to FViewers.Count - 1 do + TTBXCustomListViewer(FViewers[I]).ListChangeHandler(Value); + + if Assigned(FOnChange) then FOnChange(Self); +end; + +//----------------------------------------------------------------------------// + +{ TTBXCustomListViewer } + +procedure TTBXCustomListViewer.AdjustAutoScrollHover(var AIndex: Integer; Direction: Integer); +begin + AIndex := -1; // turn off hover when autoscrolling +end; + +procedure TTBXCustomListViewer.CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); +var + Item: TTBXCustomList; + I, W: Integer; +begin + Item := TTBXCustomList(Self.Item); + Canvas.Font := TTBViewAccess(View).GetFont; + FItemCount := Item.GetCount; + FItemHeight := GetItemHeight(Canvas); + + FVisibleItems := FItemCount; + if FVisibleItems > Item.MaxVisibleItems then FVisibleItems := Item.MaxVisibleItems + else if FVisibleItems <= 0 then FVisibleItems := 1; + + AHeight := FVisibleItems * FItemHeight; + + AWidth := 0; + for I := 0 to FItemCount - 1 do + begin + W := GetItemWidth(Canvas, I); + if W > AWidth then AWidth := W; + end; + + if FItemCount > FVisibleItems then FScrollBarWidth := GetSystemMetrics(SM_CXVSCROLL) + else FScrollBarWidth := 0; + Inc(AWidth, FScrollBarWidth); + + if AWidth < Item.MinWidth then AWidth := Item.MinWidth; + if (Item.MaxWidth > Item.MinWidth) and (AWidth > Item.MaxWidth) then AWidth := Item.MaxWidth; +end; + +constructor TTBXCustomListViewer.Create(AView: TTBView; AItem: TTBCustomItem; AGroupLevel: Integer); +var + Index: Integer; +begin + inherited; + Index := TTBXCustomList(AItem).ItemIndex; + FItemCount := TTBXCustomList(AItem).GetCount; + if (Index >= 0) and (Index < FItemCount) then + with TTBXCustomList(AItem) do + begin + FVisibleItems := GetCount; + if FVisibleItems > MaxVisibleItems then FVisibleItems := MaxVisibleItems; + if Index < FOffset then FOffset := Index + else if Index >= FOffset + FVisibleItems then FOffset := Index - FVisibleItems + 1 + end; + FHoverIndex := Index; + if FHoverIndex > FItemCount then FHoverIndex := -1; + AddToList(TTBXCustomList(AItem).FViewers, Self); +end; + +destructor TTBXCustomListViewer.Destroy; +begin + RemoveFromList(TTBXCustomList(Item).FViewers, Self); + if FScrollBar <> nil then FScrollBar.Free; + inherited; +end; + +procedure TTBXCustomListViewer.DrawItems(const Canvas: TCanvas; const ClientAreaRect: TRect); +var + I: Integer; + R: TRect; +begin + R := ClientAreaRect; + R.Bottom := FItemHeight; + Dec(R.Right, FScrollBarWidth); + Canvas.Font := TTBViewAccess(View).GetFont; + + for I := FOffset to FItemCount - 1 do + begin + if RectVisible(Canvas.Handle, R) then + TTBXCustomList(Item).DrawItem(Canvas, Self, R, I, HoverIndex); + R.Top := R.Bottom; + Inc(R.Bottom, FItemHeight); + if R.Bottom > FHeight then Break; + end; + + if R.Top < ClientAreaRect.Bottom then + begin + R.Bottom := ClientAreaRect.Bottom; + Canvas.Brush.Color := clWindow; + Canvas.FillRect(R); + end; +end; + +function TTBXCustomListViewer.GetItemHeight(ACanvas: TCanvas): Integer; +var + ImgList: TCustomImageList; +begin + Result := ACanvas.TextHeight('Q') + 2; + with TTBXStringList(Item) do + begin + ImgList := GetImageList; + if ShowImages and (ImgList <> nil) and (Result < ImgList.Height + 2) then + Result := ImgList.Height + 2; + DoMeasureHeight(ACanvas, Result); + end; +end; + +function TTBXCustomListViewer.GetItemIndexAt(X, Y: Integer): Integer; +begin + if (X < 0) or (X > FWidth - FScrollBarWidth) then Result := -1 + else + begin + Result := (Y div FItemHeight) + FOffset; + if (Result < FOffset) or (Result >= FOffset + FVisibleItems) or (Result >= FItemCount) then + Result := - 1; + end; +end; + +function TTBXCustomListViewer.GetItemRect(Index: Integer): TRect; +begin + { Note this method works properly only after Draw is called } + Result := FLastClientRect; + Inc(Result.Top, (Index - FOffset) * FItemHeight); + Result.Bottom := Result.Top + FItemHeight; + Dec(Result.Right, FScrollBarWidth); +end; + +function TTBXCustomListViewer.GetItemWidth(ACanvas: TCanvas; Index: Integer): Integer; +var + S: string; + ImgList: TCustomImageList; +begin + with TTBXStringList(Item) do + begin + S := GetItemText(Index); + Result := ACanvas.TextWidth(S); + if ShowImages then + begin + ImgList := GetImageList; + if ImgList <> nil then + begin + Inc(Result, ImgList.Width); + if Length(S) > 0 then Inc(Result, CImageSpacing); + end; + end; + Inc(Result, 8); + DoMeasureWidth(ACanvas, Index, Result) + end; +end; + +procedure TTBXCustomListViewer.HandleAutoScroll(var Direction, Interval: Integer); +begin + // do nothing by default +end; + +procedure TTBXCustomListViewer.KeyDown(var Key: Word; Shift: TShiftState); +var + OldIndex, NewIndex: Integer; +begin + OldIndex := FHoverIndex; + case Key of + VK_UP: NewIndex := OldIndex - 1; + VK_DOWN: NewIndex := OldIndex + 1; + VK_PRIOR: NewIndex := OldIndex - FVisibleItems; + VK_NEXT: NewIndex := OldIndex + FVisibleItems; + VK_HOME: NewIndex := 0; + VK_END: NewIndex := FItemCount - 1; + VK_RETURN: + begin + TTBXCustomList(Item).ItemIndex := FHoverIndex; + Exit; + end; + else + Exit; + end; + Key := 0; + if NewIndex < 0 then NewIndex := 0; + if NewIndex >= FItemCount then NewIndex := FItemCount - 1; + TTBXCustomList(Item).ItemIndex := NewIndex; +end; + +procedure TTBXCustomListViewer.ListChangeHandler(NewIndex: Integer); +begin + if not IsChanging and (NewIndex <> HoverIndex) then + begin + IsChanging := True; + HoverIndex := NewIndex; + TTBXCustomList(Item).HandleHover(NewIndex); + MakeVisible(HoverIndex); + UpdateItems; + IsChanging := False; + end; +end; + +procedure TTBXCustomListViewer.MakeVisible(Index: Integer); +begin + if (Index >= 0) and (Index < FItemCount) then + begin + if Index < FOffset then FScrollBar.UpdatePosition(Index) + else if Index >= FOffset + FVisibleItems then FScrollBar.UpdatePosition(Index - FVisibleItems + 1); + end; +end; + +procedure TTBXCustomListViewer.MouseDown(Shift: TShiftState; X, Y: Integer; var MouseDownOnMenu: Boolean); +begin + if X > FWidth - FScrollBarWidth then + begin + Dec(X, FWidth - FScrollBarWidth); + MouseInScrollBar := True; + FScrollBar.MouseDown(mbLeft, X, Y); + MouseDownOnMenu := False; + end + else + begin + MouseIsDown := True; + MouseMove(X, Y); + end; + inherited; + View.SetCapture; +end; + +procedure TTBXCustomListViewer.MouseMove(X, Y: Integer); +var + NewHoverIndex, OldHoverIndex, IndexLo, IndexHi, I: Integer; + R: TRect; + Canvas: TCanvas; + DC: HDC; + V, Dir: Integer; +begin + if MouseInScrollBar then + begin + Dec(X, FWidth - FScrollBarWidth); + FScrollBar.MouseMove(X, Y); + Exit; + end; + + if not View.Capture and (GetKeyState(VK_LBUTTON) < 0) then + begin + View.SetCapture; + MouseIsDown := True; + end; + + NewHoverIndex := GetItemIndexAt(X, Y); + if FScrollBar <> nil then + begin + if MouseIsDown and ((Y < 0) or (Y >= FHeight)) then + begin + { Get AutoScroll Intervals } + V := Y; + if V >= FHeight then Dec(V, FHeight - 1); + V := Abs(V); + if Y < 0 then Dir := -1 else Dir := 1; + case V of + 0..9: V := 150; + 10..29: V := 100; + 30..50: begin V := 100; Dir := Dir * 2; end; + else + V := 100; + Dir := Dir * 4; + end; + + if ((Dir < 0) and (FOffset > 0)) or + ((Dir > 0) and (FOffset + FVisibleItems < FItemCount)) then + FScrollBar.StartAutoScroll(Dir, V) + else + FScrollBar.StopAutoScroll; + AdjustAutoScrollHover(NewHoverIndex, Dir); + end + else FScrollBar.StopAutoScroll; + end; + + if not MouseIsDown and (NewHoverIndex = -1) then Exit; + + if NewHoverIndex <> FHoverIndex then + begin + Canvas := TCanvas.Create; + DC := GetDC(View.Window.Handle); + OldHoverIndex := FHoverIndex; + FHoverIndex := NewHoverIndex; + try + SetWindowOrgEx(DC, -BoundsRect.Left, -BoundsRect.Top, nil); + Canvas.Handle := DC; + Canvas.Font := TTBViewAccess(View).GetFont; + + IndexLo := OldHoverIndex; + IndexHi := FHoverIndex; + if FHoverIndex < OldHoverIndex then + begin + IndexLo := FHoverIndex; + IndexHi := OldHoverIndex; + end; + for I := IndexLo to IndexHi do + begin + R := GetItemRect(I); + if (R.Top >= 0) and (R.Bottom <= FHeight) and RectVisible(DC, R) then + TTBXCustomList(Item).DrawItem(Canvas, Self, R, I, HoverIndex); + end; + finally + Canvas.Handle := 0; + Canvas.Free; + ReleaseDC(View.Window.Handle, DC); + end; + TTBXCustomList(Item).HandleHover(FHoverIndex); + end; +end; + +procedure TTBXCustomListViewer.MouseUp(X, Y: Integer; MouseWasDownOnMenu: Boolean); +var + DAD: TTBDoneActionData; +begin + if FScrollBar <> nil then FScrollBar.StopAutoScroll; + if MouseInScrollBar then + begin + inherited; + Dec(X, FWidth - FScrollBarWidth); + FScrollBar.MouseUp(mbLeft, X, Y); + DAD := TTBViewAccess(TTBViewAccess(View).GetRootView).DoneActionData; + DAD.DoneAction := tbdaNone; + TTBViewAccess(TTBViewAccess(View).GetRootView).DoneActionData := DAD; + MouseInScrollBar := False; + end + else if MouseIsDown then + begin + MouseIsDown := False; + TTBXCustomList(Item).ItemIndex := FHoverIndex; + inherited; + DAD := TTBViewAccess(TTBViewAccess(View).GetRootView).DoneActionData; + DAD.Sound := False; + TTBViewAccess(TTBViewAccess(View).GetRootView).DoneActionData := DAD; + end; +end; + +procedure TTBXCustomListViewer.MouseWheel(WheelDelta, X, Y: Integer); +var + IsNegative: Boolean; +begin + if FScrollBar <> nil then + begin + Inc(FWheelAccumulator, WheelDelta); + while Abs(FWheelAccumulator) >= WHEEL_DELTA do + begin + IsNegative := FWheelAccumulator < 0; + FWheelAccumulator := Abs(FWheelAccumulator) - WHEEL_DELTA; + if IsNegative then + begin + if FWheelAccumulator <> 0 then FWheelAccumulator := -FWheelAccumulator; + FScrollBar.UpdatePosition(FScrollBar.Position + 1) + end + else + FScrollBar.UpdatePosition(FScrollBar.Position - 1) + end; + end; +end; + +procedure TTBXCustomListViewer.Paint(const Canvas: TCanvas; + const ClientAreaRect: TRect; IsHoverItem, IsPushed, UseDisabledShadow: Boolean); +begin + { Cache some important info for later usage } + FLastClientRect := ClientAreaRect; + with ClientAreaRect do + begin + FWidth := Right - Left; + FHeight := Bottom - Top; + end; + + DrawItems(Canvas, ClientAreaRect); + + if FScrollBarWidth > 0 then + begin + if FScrollBar = nil then + begin + FScrollBar := TTBXScrollBar.Create; + FScrollBar.Kind := sbVertical; + FScrollBar.OnRedrawRequest := SBRedrawHandler; + FScrollBar.OnChange := SBChangeHandler; + FScrollBar.OnAutoScroll := SBAutoScrollHandler; + end; + FScrollBar.Bounds := Rect(ClientAreaRect.Right - FScrollBarWidth, + ClientAreaRect.Top, ClientAreaRect.Right, ClientAreaRect.Bottom); + FScrollBar.Range := FItemCount; + FScrollBar.Window := FVisibleItems; + FScrollBar.Position := FOffset; + FScrollBar.PaintTo(Canvas); + end; +end; + +procedure TTBXCustomListViewer.SBAutoScrollHandler(Sender: TObject; + var Direction, Interval: Integer); +begin + HandleAutoScroll(Direction, Interval); +end; + +procedure TTBXCustomListViewer.SBChangeHandler(Sender: TObject); +begin + FOffset := FScrollBar.Position; + UpdateItems; +end; + +procedure TTBXCustomListViewer.SBRedrawHandler(Sender: TObject); +var + DC: HDC; + Canvas: TCanvas; +begin + Canvas := TCanvas.Create; + DC := GetDC(View.Window.Handle); + try + SetWindowOrgEx(DC, -BoundsRect.Left, -BoundsRect.Top, nil); + Canvas.Handle := DC; + FScrollBar.PaintTo(Canvas); + finally + Canvas.Handle := 0; + Canvas.Free; + ReleaseDC(View.Window.Handle, DC); + end; +end; + +procedure TTBXCustomListViewer.UpdateItems; +var + DC: HDC; + Canvas: TCanvas; +begin + if Assigned(FScrollBar) then FOffset := FScrollBar.Position + else FOffset := 0; + Canvas := TCanvas.Create; + DC := GetDC(View.Window.Handle); + try + SetWindowOrgEx(DC, -BoundsRect.Left, -BoundsRect.Top, nil); + Canvas.Handle := DC; + DrawItems(Canvas, FLastClientRect); + finally + Canvas.Handle := 0; + Canvas.Free; + ReleaseDC(View.Window.Handle, DC); + end; +end; + + +//----------------------------------------------------------------------------// + +{ TTBXStringList } + +constructor TTBXStringList.Create(AOwner: TComponent); +begin + inherited; + FStrings := TStringList.Create; +end; + +destructor TTBXStringList.Destroy; +begin + FStrings.Free; + inherited; +end; + +function TTBXStringList.GetCount: Integer; +begin + Result := FStrings.Count; +end; + +function TTBXStringList.GetItemText(Index: Integer): string; +begin + Result := FStrings[Index]; +end; + +procedure TTBXStringList.SetStrings(Value: TStrings); +begin + FStrings.Assign(Value); +end; + + +//----------------------------------------------------------------------------// + +{ TTBXUndoList } + +procedure TTBXUndoList.DrawItem(ACanvas: TCanvas; AViewer: TTBXCustomListViewer; + const ARect: TRect; AIndex, AHoverIndex: Integer); +const + FillColors: array [Boolean] of TColor = (clWindow, clHighlight); + TextColors: array [Boolean] of TColor = (clWindowText, clHighlightText); +var + S: string; + R: TRect; +begin + ACanvas.Brush.Color := FillColors[AIndex <= AHoverIndex]; + ACanvas.FillRect(ARect); + S := Strings[AIndex]; + if Length(S) > 0 then + begin + R := ARect; + InflateRect(R, -4, 1); + ACanvas.Font.Color := TextColors[AIndex <= AHoverIndex]; + ACanvas.Brush.Style := bsClear; + DrawText(ACanvas.Handle, PChar(S), Length(S), R, DT_SINGLELINE or DT_VCENTER); + ACanvas.Brush.Style := bsSolid; + end; +end; + +function TTBXUndoList.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBXUndoListViewer; +end; + +procedure TTBXUndoList.HandleHover(AIndex: Integer); +begin + ItemIndex := AIndex; +end; + + +//----------------------------------------------------------------------------// + +{ TTBXUndoListViewer } + +procedure TTBXUndoListViewer.AdjustAutoScrollHover(var AIndex: Integer; Direction: Integer); +begin + if Direction < 0 then AIndex := FOffset + else if Direction > 0 then AIndex := FOffset + FVisibleItems - 1; +end; + +procedure TTBXUndoListViewer.HandleAutoScroll(var Direction, Interval: Integer); +begin + inherited; + if Direction < 0 then HoverIndex := FOffset + else if Direction > 0 then HoverIndex := FOffset + FVisibleItems - 1 + else Exit; + TTBXCustomList(Item).HandleHover(HoverIndex); + UpdateItems; +end; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXLists.pas.orig b/official/2.1.6+2.1.beta1/TBX/TBXLists.pas.orig new file mode 100644 index 0000000..7340fb4 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXLists.pas.orig @@ -0,0 +1,1385 @@ +unit TBXLists; + +// TBX Package +// Copyright 2001-2004 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// $Id: TBXLists.pas 7 2004-02-21 06:07:53Z $ + +interface + +{$I TB2Ver.inc} +{$I TBX.inc} + +uses + Windows, Messages, Classes, SysUtils, Controls, Forms, Graphics, TB2Item, TBX, + TBXThemes, TBXUxThemes, ImgList; + +type + { TTBXScrollBar } + + TSBIncrement = 1..1000; + TSBZone = (sbzEmpty, sbzPrev, sbzPagePrev, sbzHandle, sbzPageNext, sbzNext); + TSBAutoScrollEvent = procedure(Sender: TObject; var Direction, Interval: Integer) of object; + + TTBXScrollBar = class + private + FBounds: TRect; + FLeft: Integer; + FHandle: HWND; + FHeight: Integer; + FIncrement: TSBIncrement; + FKind: TScrollBarKind; + FPosition: Integer; + FRange: Integer; + FRight: Integer; + FTop: Integer; + FWidth: Integer; + FWindow: Integer; + FOnChange: TNotifyEvent; + FOnAutoScroll: TSBAutoScrollEvent; + FOnRedrawRequest: TNotifyEvent; + procedure SetBounds(const Value: TRect); + procedure SetKind(Value: TScrollBarKind); + procedure SetPosition(Value: Integer); + procedure SetRange(Value: Integer); + function GetHandle: HWND; + protected + AutoScrollDirection: Integer; + AutoScrolling: Boolean; + AutoScrollInterval: Integer; + Zones: array [TSBZone] of TRect; + MouseDownZone: TSBZone; + MouseDownPoint: TPoint; + MouseDownPosition: Integer; + LastMousePoint: TPoint; + PrevCapture: HWND; + UserChange: Boolean; + procedure AdjustPosition(var NewPosition: Integer); + procedure CreateWnd; + procedure DestroyWnd; + function GetZone(X, Y: Integer): TSBZone; + function GetEffectiveWindow: Integer; + function GetEnabled: Boolean; virtual; + procedure HandleZoneClick(AZone: TSBZone); + procedure MouseDown(Button: TMouseButton; X, Y: Integer); virtual; + procedure MouseMove(X, Y: Integer); virtual; + procedure MouseUp(Button: TMouseButton; X, Y: Integer); virtual; + procedure PaintButton(Canvas: TCanvas; Rect: TRect; Direction: Integer; Pushed, Enabled: Boolean); + procedure PaintHandle(Canvas: TCanvas; Rect: TRect; Pushed, Enabled: Boolean); + procedure PaintTrack(Canvas: TCanvas; Rect: TRect; IsNextZone, Pushed, Enabled: Boolean); + procedure PaintTo(Canvas: TCanvas); + procedure SBWndProc(var Message: TMessage); + procedure StartAutoScroll(Direction, Interval: Integer); + procedure StopAutoScroll; + procedure StartTimer(ID: Integer; Elapse: Integer); + procedure StopTimer(ID: Integer); + procedure TimerElapsed(ID: Integer; var NewElapse: Integer); virtual; + procedure UpdateZones; + property Handle: HWND read GetHandle; + public + constructor Create; + destructor Destroy; override; + procedure Redraw; virtual; + procedure UpdatePosition(NewPosition: Integer); + property Kind: TScrollBarKind read FKind write SetKind; + property Bounds: TRect read FBounds write SetBounds; + property Left: Integer read FLeft; + property Height: Integer read FHeight; + property Increment: TSBIncrement read FIncrement write FIncrement; + property Position: Integer read FPosition write SetPosition; + property Range: Integer read FRange write SetRange; + property Right: Integer read FRight; + property Top: Integer read FTop; + property Width: Integer read FWidth; + property Window: Integer read FWindow write FWindow; + property OnAutoScroll: TSBAutoScrollEvent read FOnAutoScroll write FOnAutoScroll; + property OnChange: TNotifyEvent read FOnChange write FOnChange; + property OnRedrawRequest: TNotifyEvent read FOnRedrawRequest write FOnRedrawRequest; + end; + + { TTBXCustomList } + TTBXCustomList = class; + + TTBXLMeasureHeight = procedure(Sender: TTBXCustomList; ACanvas: TCanvas; var AHeight: Integer) of object; + TTBXLMeasureWidth = procedure(Sender: TTBXCustomList; ACanvas: TCanvas; AIndex: Integer; var AWidth: Integer) of object; + TTBXLPaintEvent = procedure(Sender: TTBXCustomList; ACanvas: TCanvas; ARect: TRect; AIndex, AHoverIndex: Integer; var DrawDefault: Boolean) of object; + TTBXLAdjustImageIndex = procedure(Sender: TTBXCustomList; AItemIndex: Integer; var ImageIndex: Integer) of object; + + TTBXCustomListViewer = class; + + TTBXCustomList = class(TTBXCustomItem) + private + FViewers: TList; + FItemIndex: Integer; + FMinWidth: Integer; + FMaxWidth: Integer; + FMaxVisibleItems: Integer; + FShowImages: Boolean; + FOnChange: TNotifyEvent; + FOnClearItem: TTBXLPaintEvent; + FOnDrawItem: TTBXLPaintEvent; + FOnAdjustImageIndex: TTBXLAdjustImageIndex; + FOnMeasureHeight: TTBXLMeasureHeight; + FOnMeasureWidth: TTBXLMeasureWidth; + procedure SetItemIndex(Value: Integer); + protected + function DoClearItem(ACanvas: TCanvas; ARect: TRect; AIndex, AHoverIndex: Integer): Boolean; virtual; + function DoDrawItem(ACanvas: TCanvas; ARect: TRect; AIndex, AHoverIndex: Integer): Boolean; virtual; + procedure DoMeasureHeight(ACanvas: TCanvas; var AHeight: Integer); virtual; + procedure DoMeasureWidth(ACanvas: TCanvas; AIndex: Integer; var AWidth: Integer); virtual; + procedure DrawItem(ACanvas: TCanvas; AViewer: TTBXCustomListViewer; const ARect: TRect; AIndex, AHoverIndex: Integer); virtual; + function GetImageIndex(ItemIndex: Integer): Integer; virtual; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + function GetItemText(Index: Integer): string; virtual; abstract; + function GetCount: Integer; virtual; abstract; + procedure HandleChange; virtual; + procedure HandleHover(AIndex: Integer); virtual; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + public + constructor Create(AOwner: TComponent); override; + procedure MakeVisible(AIndex: Integer); + property ItemIndex: Integer read FItemIndex write SetItemIndex default -1; + property MaxVisibleItems: Integer read FMaxVisibleItems write FMaxVisibleItems default 8; + property MaxWidth: Integer read FMaxWidth write FMaxWidth default 0; + property MinWidth: Integer read FMinWidth write FMinWidth default 32; + property ShowImages: Boolean read FShowImages write FShowImages default False; + property OnAdjustImageIndex: TTBXLAdjustImageIndex read FOnAdjustImageIndex write FOnAdjustImageIndex; + property OnChange: TNotifyEvent read FOnChange write FOnChange; + property OnClearItem: TTBXLPaintEvent read FOnClearItem write FOnClearItem; + property OnDrawItem: TTBXLPaintEvent read FOnDrawItem write FOnDrawItem; + property OnMeasureHeight: TTBXLMeasureHeight read FOnMeasureHeight write FOnMeasureHeight; + property OnMeasureWidth: TTBXLMeasureWidth read FOnMeasureWidth write FOnMeasureWidth; + end; + + TTBXCustomListViewer = class(TTBXItemViewer) + private + FItemCount: Integer; + FItemHeight: Integer; + FHoverIndex: Integer; + FHeight: Integer; + FLastClientRect: TRect; + FWheelAccumulator: Integer; + FWidth: Integer; + FOffset: Integer; + FScrollBarWidth: Integer; + FScrollBar: TTBXScrollBar; + FVisibleItems: Integer; + procedure ListChangeHandler(NewIndex: Integer); + procedure SBAutoScrollHandler(Sender: TObject; var Direction, Interval: Integer); + procedure SBChangeHandler(Sender: TObject); + procedure SBRedrawHandler(Sender: TObject); + protected + MouseIsDown: Boolean; + MouseInScrollBar: Boolean; + IgnoreMouseUp: Boolean; + IsChanging: Boolean; + procedure AdjustAutoScrollHover(var AIndex: Integer; Direction: Integer); virtual; + procedure CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); override; + procedure DrawItems(const Canvas: TCanvas; const ClientAreaRect: TRect); + function GetItemIndexAt(X, Y: Integer): Integer; + function GetItemRect(Index: Integer): TRect; + function GetItemHeight(ACanvas: TCanvas): Integer; virtual; + function GetItemWidth(ACanvas: TCanvas; Index: Integer): Integer; virtual; + procedure HandleAutoScroll(var Direction, Interval: Integer); virtual; + procedure KeyDown(var Key: Word; Shift: TShiftState); override; + procedure MakeVisible(Index: Integer); + procedure MouseDown(Shift: TShiftState; X, Y: Integer; var MouseDownOnMenu: Boolean); override; + procedure MouseMove(X, Y: Integer); override; + procedure MouseUp(X, Y: Integer; MouseWasDownOnMenu: Boolean); override; + procedure MouseWheel(WheelDelta: Integer; X, Y: Integer); override; + procedure Paint(const Canvas: TCanvas; const ClientAreaRect: TRect; IsHoverItem, IsPushed, UseDisabledShadow: Boolean); override; + procedure UpdateItems; + property HoverIndex: Integer read FHoverIndex write FHoverIndex; + public + constructor Create(AView: TTBView; AItem: TTBCustomItem; AGroupLevel: Integer); override; + destructor Destroy; override; + end; + + { TTBXStringList } + + TTBXStringList = class(TTBXCustomList) + private + FStrings: TStrings; + procedure SetStrings(Value: TStrings); + protected + function GetItemText(Index: Integer): string; override; + function GetCount: Integer; override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + published + property ItemIndex; + property MaxVisibleItems; + property MaxWidth; + property MinWidth; + property Strings: TStrings read FStrings write SetStrings; + property OnAdjustImageIndex; + property OnChange; + property OnClearItem; + property OnClick; + property OnDrawItem; + property OnMeasureHeight; + property OnMeasureWidth; + end; + + TTBXStringListClass = class of TTBXStringList; + + { TTBXUndoList } + + TTBXUndoList = class(TTBXStringList) + protected + procedure DrawItem(ACanvas: TCanvas; AViewer: TTBXCustomListViewer; const ARect: TRect; AIndex, AHoverIndex: Integer); override; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + procedure HandleHover(AIndex: Integer); override; + end; + + TTBXUndoListViewer = class(TTBXCustomListViewer) + protected + procedure AdjustAutoScrollHover(var AIndex: Integer; Direction: Integer); override; + procedure HandleAutoScroll(var Direction, Interval: Integer); override; + end; + +implementation + +type TTBViewAccess = class(TTBView); + +const + SCROLL_TIMER = 1; + AUTO_SCROLL_TIMER = 2; + MIN_SB_HANDLE_SIZE = 8; + + CImageSpacing = 4; + +//----------------------------------------------------------------------------// + +{ TTBXScrollBar } + +procedure TTBXScrollBar.AdjustPosition(var NewPosition: Integer); +var + W: Integer; +begin + W := GetEffectiveWindow; + if NewPosition + W > Range then NewPosition := Range - W; + if NewPosition < 0 then NewPosition := 0; +end; + +constructor TTBXScrollBar.Create; +begin + FIncrement := 1; +end; + +procedure TTBXScrollBar.CreateWnd; +begin + if FHandle = 0 then FHandle := {$IFDEF JR_D6}Classes.{$ENDIF}AllocateHWnd(SBWndProc); +end; + +destructor TTBXScrollBar.Destroy; +begin + DestroyWnd; + inherited; +end; + +procedure TTBXScrollBar.DestroyWnd; +begin + if FHandle <> 0 then + begin + {$IFDEF JR_D6}Classes.{$ENDIF}DeallocateHWnd(FHandle); + FHandle := 0; + end; +end; + +function TTBXScrollBar.GetEffectiveWindow: Integer; +begin + if Window <= 0 then + begin + if Kind = sbVertical then Result := Height + else Result := Width; + end + else Result := Window; +end; + +function TTBXScrollBar.GetEnabled: Boolean; +begin + Result := Range > GetEffectiveWindow; +end; + +function TTBXScrollBar.GetHandle: HWND; +begin + if FHandle = 0 then CreateWnd; + Result := FHandle; +end; + +function TTBXScrollBar.GetZone(X, Y: Integer): TSBZone; +var + I: Integer; + Pt: TPoint; +begin + Pt.X := X; + Pt.Y := Y; + for I := Ord(sbzPrev) to Ord(sbzNext) do + begin + Result := TSBZone(I); + if PtInRect(Zones[Result], Pt) then Exit; + end; + Result := sbzEmpty; +end; + +procedure TTBXScrollBar.HandleZoneClick(AZone: TSBZone); +begin + UserChange := True; + case AZone of + sbzPrev: Position := Position - Increment; + sbzPagePrev: Position := Position - GetEffectiveWindow; + sbzPageNext: Position := Position + GetEffectiveWindow; + sbzNext: Position := Position + Increment; + end; + UserChange := False; +end; + +procedure TTBXScrollBar.MouseDown(Button: TMouseButton; X, Y: Integer); +begin + if Button = mbLeft then + begin + MouseDownZone := GetZone(X, Y); + MouseDownPoint := Point(X, Y); + MouseDownPosition := Position; + LastMousePoint := MouseDownPoint; + if MouseDownZone in [sbzPrev, sbzPagePrev, sbzPageNext, sbzNext] then + begin + HandleZoneClick(MouseDownZone); + StartTimer(SCROLL_TIMER, 500); + end; + Redraw; + end; +end; + +procedure TTBXScrollBar.MouseMove(X, Y: Integer); +var + Delta: Integer; + ClientSize, HandleSize: Integer; +begin + LastMousePoint := Point(X, Y); + if MouseDownZone = sbzHandle then + begin + if Kind = sbVertical then + begin + Delta := Y - MouseDownPoint.Y; + ClientSize := Zones[sbzPageNext].Bottom - Zones[sbzPagePrev].Top; + end + else + begin + Delta := X - MouseDownPoint.X; + ClientSize := Zones[sbzPageNext].Right - Zones[sbzPagePrev].Left; + end; + HandleSize := Round(ClientSize * Window / Range); + if HandleSize < MIN_SB_HANDLE_SIZE then + Delta := Round(Delta * (Range - Window) / (ClientSize - MIN_SB_HANDLE_SIZE)) + else + Delta := Round(Delta * Range / ClientSize); + + if MouseDownPosition + Delta <> Position then + begin + UserChange := True; + Position := MouseDownPosition + Delta; + UserChange := False; + end; + end; +end; + +procedure TTBXScrollBar.MouseUp(Button: TMouseButton; X, Y: Integer); +begin + StopTimer(SCROLL_TIMER); + if Button = mbLeft then + begin + MouseDownZone := sbzEmpty; + Redraw; + end; +end; + +procedure TTBXScrollBar.PaintButton(Canvas: TCanvas; Rect: TRect; + Direction: Integer; Pushed, Enabled: Boolean); +const + DirectionFlags: array [0..3] of Cardinal = (DFCS_SCROLLLEFT, DFCS_SCROLLUP, + DFCS_SCROLLRIGHT, DFCS_SCROLLDOWN); + EnabledFlags: array [Boolean] of Cardinal = (DFCS_INACTIVE, 0); + PushedFlags: array [Boolean] of Cardinal = (0, DFCS_PUSHED or DFCS_FLAT); + + DirectionXPFlags: array [0..3] of Cardinal = (ABS_LEFTNORMAL, ABS_UPNORMAL, + ABS_RIGHTNORMAL, ABS_DOWNNORMAL); +var + StateFlags: Cardinal; +begin + if USE_THEMES then + begin + StateFlags := DirectionXPFlags[Direction]; + if not Enabled then Inc(StateFlags, 3) + else if Pushed then Inc(StateFlags, 2); + DrawThemeBackground(SCROLLBAR_THEME, Canvas.Handle, SBP_ARROWBTN, StateFlags, Rect, nil); + end + else + begin + DrawFrameControl(Canvas.Handle, Rect, DFC_SCROLL, + DirectionFlags[Direction] or EnabledFlags[Enabled] or PushedFlags[Pushed]); + end; +end; + +procedure TTBXScrollBar.PaintHandle(Canvas: TCanvas; Rect: TRect; Pushed, Enabled: Boolean); +const + PartXPFlags: array [TScrollBarKind] of Cardinal = (SBP_THUMBBTNHORZ, SBP_THUMBBTNVERT); +var + StateFlags: Cardinal; +begin + if USE_THEMES then + begin + StateFlags := SCRBS_NORMAL; + if not Enabled then Inc(StateFlags, 3) + else if Pushed then Inc(StateFlags, 2); + DrawThemeBackground(SCROLLBAR_THEME, Canvas.Handle, PartXPFlags[Kind], StateFlags, Rect, nil); + end + else + begin + DrawEdge(Canvas.Handle, Rect, EDGE_RAISED, BF_RECT or BF_ADJUST); + Canvas.Brush.Color := clBtnFace; + Canvas.FillRect(Rect); + end; +end; + +procedure TTBXScrollBar.PaintTo(Canvas: TCanvas); +var + R: TRect; + E, IsVert: Boolean; + I: Integer; + Dummy: TPoint; +begin + UpdateZones; + IsVert := Kind = sbVertical; + E := GetEnabled; + + OffsetWindowOrgEx(Canvas.Handle, -Bounds.Left, -Bounds.Top, Dummy); + try + + if IsVert then I := 1 else I := 0; + PaintButton(Canvas, Zones[sbzPrev], I, MouseDownZone = sbzPrev, E); + PaintButton(Canvas, Zones[sbzNext], I + 2, MouseDownZone = sbzNext, E); + + if not IsRectEmpty(Zones[sbzEmpty]) then + begin + Canvas.Brush.Color := clScrollBar; + Canvas.Brush.Style := bsSolid; + Canvas.FillRect(Zones[sbzEmpty]); + end; + + if not IsRectEmpty(Zones[sbzPagePrev]) or not IsRectEmpty(Zones[sbzPageNext]) then + begin + R := Zones[sbzPagePrev]; + PaintTrack(Canvas, R, False, MouseDownZone = sbzPagePrev, E); + R := Zones[sbzPageNext]; + PaintTrack(Canvas, R, True, MouseDownZone = sbzPageNext, E); + end; + + if not IsRectEmpty(Zones[sbzHandle]) then + PaintHandle(Canvas, Zones[sbzHandle], MouseDownZone = sbzHandle, E); + + finally + OffsetWindowOrgEx(Canvas.Handle, Bounds.Left, Bounds.Top, Dummy); + end; +end; + +procedure TTBXScrollBar.PaintTrack(Canvas: TCanvas; Rect: TRect; + IsNextZone, Pushed, Enabled: Boolean); +const + PartXPFlags: array [Boolean, TScrollBarKind] of Cardinal = + ((SBP_LOWERTRACKHORZ, SBP_LOWERTRACKVERT), (SBP_UPPERTRACKHORZ, SBP_UPPERTRACKVERT)); +var + StateFlags: Cardinal; +begin + if USE_THEMES then + begin + StateFlags := SCRBS_NORMAL; + if not Enabled then Inc(StateFlags, 3) + else if Pushed then Inc(StateFlags, 2); + DrawThemeBackground(SCROLLBAR_THEME, Canvas.Handle, PartXPFlags[IsNextZone, Kind], + StateFlags, Rect, nil); + end + else + begin + if Pushed then Canvas.Brush.Color := cl3DDkShadow + else Canvas.Brush.Bitmap := AllocPatternBitmap(clBtnHighlight, clScrollBar); + Canvas.FillRect(Rect); + end; +end; + +procedure TTBXScrollBar.Redraw; +begin + if Assigned(FOnRedrawRequest) then FOnRedrawRequest(Self); +end; + +procedure TTBXScrollBar.SBWndProc(var Message: TMessage); +var + I: Integer; + + procedure DefaultHandler; + begin + with Message do + Result := DefWindowProc(FHandle, Msg, wParam, lParam); + end; + +begin + case Message.Msg of + + WM_TIMER: with TWMTimer(Message) do + begin + I := 0; + TimerElapsed(TimerID, I); + if I > 0 then StartTimer(TimerID, I) + else StopTimer(TimerID); + Result := 0; + end; + + else + DefaultHandler; + end; +end; + +procedure TTBXScrollBar.SetBounds(const Value: TRect); +begin + FBounds := Value; + with Value do + begin + FLeft := Left; + FTop := Top; + FWidth := Right - Left; + FHeight := Bottom - Top; + end; + UpdateZones; +end; + +procedure TTBXScrollBar.SetKind(Value: TScrollBarKind); +begin + FKind := Value; + UpdateZones; +end; + +procedure TTBXScrollBar.SetPosition(Value: Integer); +begin + AdjustPosition(Value); + if Value <> FPosition then + begin + FPosition := Value; + if UserChange then + begin + Redraw; + if Assigned(FOnChange) then FOnChange(Self); + end; + end; +end; + +procedure TTBXScrollBar.SetRange(Value: Integer); +begin + if Value < 0 then Value := 0; + if Value <> FRange then + begin + FRange := Value; + Redraw; + SetPosition(Position); + end; +end; + +procedure TTBXScrollBar.StartAutoScroll(Direction, Interval: Integer); +begin + if Direction <> 0 then + begin + AutoScrollDirection := Direction; + AutoScrollInterval := Interval; + if not AutoScrolling then + begin + StartTimer(AUTO_SCROLL_TIMER, Interval); + AutoScrolling := True; + end; + end; +end; + +procedure TTBXScrollBar.StartTimer(ID, Elapse: Integer); +begin + SetTimer(Handle, ID, Elapse, nil); +end; + +procedure TTBXScrollBar.StopAutoScroll; +begin + if AutoScrolling then + begin + AutoScrolling := False; + StopTimer(AUTO_SCROLL_TIMER); + end; +end; + +procedure TTBXScrollBar.StopTimer(ID: Integer); +begin + KillTimer(Handle, ID); +end; + +procedure TTBXScrollBar.TimerElapsed(ID: Integer; var NewElapse: Integer); +begin + case ID of + SCROLL_TIMER: + if MouseDownZone <> sbzEmpty then + if not (MouseDownZone in [sbzPagePrev, sbzPageNext]) or + (GetZone(LastMousePoint.X, LastMousePoint.Y) = MouseDownZone) then + begin + HandleZoneClick(MouseDownZone); + NewElapse := 100; + end; + AUTO_SCROLL_TIMER: if AutoScrolling then + begin + NewElapse := AutoScrollInterval; + UpdatePosition(Position + AutoScrollDirection); + if (Position = 0) or (Position + Window = Range) then NewElapse := 0; + if Assigned(FOnAutoScroll) then + FOnAutoScroll(Self, AutoScrollDirection, AutoScrollInterval); + AutoScrolling := NewElapse > 0; + end; + end; +end; + +procedure TTBXScrollBar.UpdatePosition(NewPosition: Integer); +begin + UserChange := True; + if NewPosition < 0 then NewPosition := 0; + if NewPosition > Range - Window then NewPosition := Range - Window; + Position := NewPosition; + UserChange := False; +end; + +procedure TTBXScrollBar.UpdateZones; +var + SzL, SzT: Integer; + ButtonSize: Integer; + Lo, Hi: Integer; + HandleSize, HandlePos: Integer; + Window: Integer; + IsVert: Boolean; + + procedure SetZone(var R: TRect; Lo, Hi: Integer); + begin + if IsVert then + begin + R.Left := 0; + R.Right := Width; + R.Top := Lo; + R.Bottom := Hi; + end + else + begin + R.Left := Lo; + R.Right := Hi; + R.Top := 0; + R.Bottom := Height; + end; + end; + +begin + IsVert := Kind = sbVertical; + Window := GetEffectiveWindow; + + if IsVert then + begin + SzL := Height; + SzT := Width; + end + else + begin + SzL := Width; + SzT := Height; + end; + + + { Buttons } + ButtonSize := SzT; + if ButtonSize * 2 >= SzL - 2 then ButtonSize := (SzL - 2) div 2; + SetZone(Zones[sbzPrev], 0, ButtonSize); + SetZone(Zones[sbzNext], SzL - ButtonSize, SzL); + + { Handle } + Lo := ButtonSize; + Hi := SzL - ButtonSize; + if GetEnabled and (Hi - Lo > MIN_SB_HANDLE_SIZE + 4) then + begin + HandleSize := Round((Hi - Lo) * Window / Range); + if HandleSize >= MIN_SB_HANDLE_SIZE then + HandlePos := Round((Hi - Lo) * Position / Range) + else + begin + HandleSize := MIN_SB_HANDLE_SIZE; + HandlePos := Round((Hi - Lo - MIN_SB_HANDLE_SIZE) * Position / (Range - Window)); + end; + Inc(HandlePos, Lo); + SetZone(Zones[sbzHandle], HandlePos, HandlePos + HandleSize); + SetZone(Zones[sbzPagePrev], Lo, HandlePos); + SetZone(Zones[sbzPageNext], HandlePos + HandleSize, Hi); + Zones[sbzEmpty].Right := -1; + end + else + begin + { Invalidate invisible zones } + Zones[sbzPagePrev].Right := -1; + Zones[sbzHandle].Right := -1; + Zones[sbzPageNext].Right := -1; + SetZone(Zones[sbzEmpty], Lo, Hi); + end; +end; + +//----------------------------------------------------------------------------// + +{ TTBXCustomList } + +constructor TTBXCustomList.Create(AOwner: TComponent); +begin + inherited; + FMinWidth := 32; + FMaxWidth := 0; + FMaxVisibleItems := 8; + FItemIndex := -1; +end; + +function TTBXCustomList.DoClearItem(ACanvas: TCanvas; ARect: TRect; AIndex, AHoverIndex: Integer): Boolean; +begin + Result := True; + if Assigned(FOnClearItem) then FOnClearItem(Self, ACanvas, ARect, AIndex, AHoverIndex, Result); +end; + +function TTBXCustomList.DoDrawItem(ACanvas: TCanvas; ARect: TRect; AIndex, AHoverIndex: Integer): Boolean; +begin + Result := True; + if Assigned(FOnDrawItem) then FOnDrawItem(Self, ACanvas, ARect, AIndex, AHoverIndex, Result); +end; + +procedure TTBXCustomList.DoMeasureHeight(ACanvas: TCanvas; var AHeight: Integer); +begin + if Assigned(FOnMeasureHeight) then FOnMeasureHeight(Self, ACanvas, AHeight); +end; + +procedure TTBXCustomList.DoMeasureWidth(ACanvas: TCanvas; AIndex: Integer; var AWidth: Integer); +begin + if Assigned(FOnMeasureWidth) then FOnMeasureWidth(Self, ACanvas, AIndex, AWidth); +end; + +procedure TTBXCustomList.DrawItem(ACanvas: TCanvas; AViewer: TTBXCustomListViewer; + const ARect: TRect; AIndex, AHoverIndex: Integer); +const + FillColors: array [Boolean] of TColor = (clWindow, clHighlight); + TextColors: array [Boolean] of TColor = (clWindowText, clHighlightText); +var + S: string; + R, R2: TRect; + ImgList: TCustomImageList; +begin + ACanvas.Brush.Color := FillColors[AIndex = AHoverIndex]; + if DoClearItem(ACanvas, ARect, AIndex, AHoverIndex) then ACanvas.FillRect(ARect); + + ACanvas.Font.Color := TextColors[AIndex = AHoverIndex]; + if DoDrawItem(ACanvas, ARect, AIndex, AHoverIndex) then + begin + R := ARect; + InflateRect(R, -4, 1); + ImgList := AViewer.GetImageList; + if ShowImages and (ImgList <> nil) then + begin + R2.Left := R.Left; + R2.Top := (R.Top + R.Bottom - ImgList.Height) div 2; + R2.Right := R2.Left + ImgList.Width; + R2.Bottom := R2.Top + ImgList.Height; + if Enabled then ImgList.Draw(ACanvas, R2.Left, R2.Top, GetImageIndex(AIndex)) + else DrawTBXImage(ACanvas, R2, ImgList, GetImageIndex(AIndex), ISF_DISABLED); + Inc(R.Left, ImgList.Width + CImageSpacing); + end; + + S := GetItemText(AIndex); + if Length(S) > 0 then + begin + ACanvas.Brush.Style := bsClear; + DrawText(ACanvas.Handle, PChar(S), Length(S), R, DT_SINGLELINE or DT_VCENTER or DT_NOPREFIX); + ACanvas.Brush.Style := bsSolid; + end; + end; +end; + +function TTBXCustomList.GetImageIndex(ItemIndex: Integer): Integer; +begin + Result := ItemIndex; + if Assigned(FOnAdjustImageIndex) then FOnAdjustImageIndex(Self, ItemIndex, Result); +end; + +function TTBXCustomList.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBXCustomListViewer; +end; + +procedure TTBXCustomList.HandleChange; +begin + if Assigned(FOnChange) then FOnChange(Self); +end; + +procedure TTBXCustomList.HandleHover(AIndex: Integer); +begin +end; + +procedure TTBXCustomList.MakeVisible(AIndex: Integer); +var + I: Integer; +begin + if FViewers <> nil then + for I := 0 to FViewers.Count - 1 do + TTBXCustomListViewer(FViewers[I]).MakeVisible(AIndex); +end; + +procedure TTBXCustomList.Notification(AComponent: TComponent; Operation: TOperation); +begin + inherited Notification(AComponent, Operation); + if (Operation = opRemove) and (AComponent = Images) then Images := nil; +end; + +procedure TTBXCustomList.SetItemIndex(Value: Integer); +var + I: Integer; +begin + if Value < 0 then Value := -1; + FItemIndex := Value; + + { Update viewers } + if FViewers <> nil then + for I := 0 to FViewers.Count - 1 do + TTBXCustomListViewer(FViewers[I]).ListChangeHandler(Value); + + if Assigned(FOnChange) then FOnChange(Self); +end; + +//----------------------------------------------------------------------------// + +{ TTBXCustomListViewer } + +procedure TTBXCustomListViewer.AdjustAutoScrollHover(var AIndex: Integer; Direction: Integer); +begin + AIndex := -1; // turn off hover when autoscrolling +end; + +procedure TTBXCustomListViewer.CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); +var + Item: TTBXCustomList; + I, W: Integer; +begin + Item := TTBXCustomList(Self.Item); + Canvas.Font := TTBViewAccess(View).GetFont; + FItemCount := Item.GetCount; + FItemHeight := GetItemHeight(Canvas); + + FVisibleItems := FItemCount; + if FVisibleItems > Item.MaxVisibleItems then FVisibleItems := Item.MaxVisibleItems + else if FVisibleItems <= 0 then FVisibleItems := 1; + + AHeight := FVisibleItems * FItemHeight; + + AWidth := 0; + for I := 0 to FItemCount - 1 do + begin + W := GetItemWidth(Canvas, I); + if W > AWidth then AWidth := W; + end; + + if FItemCount > FVisibleItems then FScrollBarWidth := GetSystemMetrics(SM_CXVSCROLL) + else FScrollBarWidth := 0; + Inc(AWidth, FScrollBarWidth); + + if AWidth < Item.MinWidth then AWidth := Item.MinWidth; + if (Item.MaxWidth > Item.MinWidth) and (AWidth > Item.MaxWidth) then AWidth := Item.MaxWidth; +end; + +constructor TTBXCustomListViewer.Create(AView: TTBView; AItem: TTBCustomItem; AGroupLevel: Integer); +var + Index: Integer; +begin + inherited; + Index := TTBXCustomList(AItem).ItemIndex; + FItemCount := TTBXCustomList(AItem).GetCount; + if (Index >= 0) and (Index < FItemCount) then + with TTBXCustomList(AItem) do + begin + FVisibleItems := GetCount; + if FVisibleItems > MaxVisibleItems then FVisibleItems := MaxVisibleItems; + if Index < FOffset then FOffset := Index + else if Index >= FOffset + FVisibleItems then FOffset := Index - FVisibleItems + 1 + end; + FHoverIndex := Index; + if FHoverIndex > FItemCount then FHoverIndex := -1; + AddToList(TTBXCustomList(AItem).FViewers, Self); +end; + +destructor TTBXCustomListViewer.Destroy; +begin + RemoveFromList(TTBXCustomList(Item).FViewers, Self); + if FScrollBar <> nil then FScrollBar.Free; + inherited; +end; + +procedure TTBXCustomListViewer.DrawItems(const Canvas: TCanvas; const ClientAreaRect: TRect); +var + I: Integer; + R: TRect; +begin + R := ClientAreaRect; + R.Bottom := FItemHeight; + Dec(R.Right, FScrollBarWidth); + Canvas.Font := TTBViewAccess(View).GetFont; + + for I := FOffset to FItemCount - 1 do + begin + if RectVisible(Canvas.Handle, R) then + TTBXCustomList(Item).DrawItem(Canvas, Self, R, I, HoverIndex); + R.Top := R.Bottom; + Inc(R.Bottom, FItemHeight); + if R.Bottom > FHeight then Break; + end; + + if R.Top < ClientAreaRect.Bottom then + begin + R.Bottom := ClientAreaRect.Bottom; + Canvas.Brush.Color := clWindow; + Canvas.FillRect(R); + end; +end; + +function TTBXCustomListViewer.GetItemHeight(ACanvas: TCanvas): Integer; +var + ImgList: TCustomImageList; +begin + Result := ACanvas.TextHeight('Q') + 2; + with TTBXStringList(Item) do + begin + ImgList := GetImageList; + if ShowImages and (ImgList <> nil) and (Result < ImgList.Height + 2) then + Result := ImgList.Height + 2; + DoMeasureHeight(ACanvas, Result); + end; +end; + +function TTBXCustomListViewer.GetItemIndexAt(X, Y: Integer): Integer; +begin + if (X < 0) or (X > FWidth - FScrollBarWidth) then Result := -1 + else + begin + Result := (Y div FItemHeight) + FOffset; + if (Result < FOffset) or (Result >= FOffset + FVisibleItems) or (Result >= FItemCount) then + Result := - 1; + end; +end; + +function TTBXCustomListViewer.GetItemRect(Index: Integer): TRect; +begin + { Note this method works properly only after Draw is called } + Result := FLastClientRect; + Inc(Result.Top, (Index - FOffset) * FItemHeight); + Result.Bottom := Result.Top + FItemHeight; + Dec(Result.Right, FScrollBarWidth); +end; + +function TTBXCustomListViewer.GetItemWidth(ACanvas: TCanvas; Index: Integer): Integer; +var + S: string; + ImgList: TCustomImageList; +begin + with TTBXStringList(Item) do + begin + S := GetItemText(Index); + Result := ACanvas.TextWidth(S); + if ShowImages then + begin + ImgList := GetImageList; + if ImgList <> nil then + begin + Inc(Result, ImgList.Width); + if Length(S) > 0 then Inc(Result, CImageSpacing); + end; + end; + Inc(Result, 8); + DoMeasureWidth(ACanvas, Index, Result) + end; +end; + +procedure TTBXCustomListViewer.HandleAutoScroll(var Direction, Interval: Integer); +begin + // do nothing by default +end; + +procedure TTBXCustomListViewer.KeyDown(var Key: Word; Shift: TShiftState); +var + OldIndex, NewIndex: Integer; +begin + OldIndex := FHoverIndex; + case Key of + VK_UP: NewIndex := OldIndex - 1; + VK_DOWN: NewIndex := OldIndex + 1; + VK_PRIOR: NewIndex := OldIndex - FVisibleItems; + VK_NEXT: NewIndex := OldIndex + FVisibleItems; + VK_HOME: NewIndex := 0; + VK_END: NewIndex := FItemCount - 1; + VK_RETURN: + begin + TTBXCustomList(Item).ItemIndex := FHoverIndex; + Exit; + end; + else + Exit; + end; + Key := 0; + if NewIndex < 0 then NewIndex := 0; + if NewIndex >= FItemCount then NewIndex := FItemCount - 1; + TTBXCustomList(Item).ItemIndex := NewIndex; +end; + +procedure TTBXCustomListViewer.ListChangeHandler(NewIndex: Integer); +begin + if not IsChanging and (NewIndex <> HoverIndex) then + begin + IsChanging := True; + HoverIndex := NewIndex; + TTBXCustomList(Item).HandleHover(NewIndex); + MakeVisible(HoverIndex); + UpdateItems; + IsChanging := False; + end; +end; + +procedure TTBXCustomListViewer.MakeVisible(Index: Integer); +begin + if (Index >= 0) and (Index < FItemCount) then + begin + if Index < FOffset then FScrollBar.UpdatePosition(Index) + else if Index >= FOffset + FVisibleItems then FScrollBar.UpdatePosition(Index - FVisibleItems + 1); + end; +end; + +procedure TTBXCustomListViewer.MouseDown(Shift: TShiftState; X, Y: Integer; var MouseDownOnMenu: Boolean); +begin + if X > FWidth - FScrollBarWidth then + begin + Dec(X, FWidth - FScrollBarWidth); + MouseInScrollBar := True; + FScrollBar.MouseDown(mbLeft, X, Y); + MouseDownOnMenu := False; + end + else + begin + MouseIsDown := True; + MouseMove(X, Y); + end; + inherited; + View.SetCapture; +end; + +procedure TTBXCustomListViewer.MouseMove(X, Y: Integer); +var + NewHoverIndex, OldHoverIndex, IndexLo, IndexHi, I: Integer; + R: TRect; + Canvas: TCanvas; + DC: HDC; + V, Dir: Integer; +begin + if MouseInScrollBar then + begin + Dec(X, FWidth - FScrollBarWidth); + FScrollBar.MouseMove(X, Y); + Exit; + end; + + if not View.Capture and (GetKeyState(VK_LBUTTON) < 0) then + begin + View.SetCapture; + MouseIsDown := True; + end; + + NewHoverIndex := GetItemIndexAt(X, Y); + if FScrollBar <> nil then + begin + if MouseIsDown and ((Y < 0) or (Y >= FHeight)) then + begin + { Get AutoScroll Intervals } + V := Y; + if V >= FHeight then Dec(V, FHeight - 1); + V := Abs(V); + if Y < 0 then Dir := -1 else Dir := 1; + case V of + 0..9: V := 150; + 10..29: V := 100; + 30..50: begin V := 100; Dir := Dir * 2; end; + else + V := 100; + Dir := Dir * 4; + end; + + if ((Dir < 0) and (FOffset > 0)) or + ((Dir > 0) and (FOffset + FVisibleItems < FItemCount)) then + FScrollBar.StartAutoScroll(Dir, V) + else + FScrollBar.StopAutoScroll; + AdjustAutoScrollHover(NewHoverIndex, Dir); + end + else FScrollBar.StopAutoScroll; + end; + + if not MouseIsDown and (NewHoverIndex = -1) then Exit; + + if NewHoverIndex <> FHoverIndex then + begin + Canvas := TCanvas.Create; + DC := GetDC(View.Window.Handle); + OldHoverIndex := FHoverIndex; + FHoverIndex := NewHoverIndex; + try + SetWindowOrgEx(DC, -BoundsRect.Left, -BoundsRect.Top, nil); + Canvas.Handle := DC; + Canvas.Font := TTBViewAccess(View).GetFont; + + IndexLo := OldHoverIndex; + IndexHi := FHoverIndex; + if FHoverIndex < OldHoverIndex then + begin + IndexLo := FHoverIndex; + IndexHi := OldHoverIndex; + end; + for I := IndexLo to IndexHi do + begin + R := GetItemRect(I); + if (R.Top >= 0) and (R.Bottom <= FHeight) and RectVisible(DC, R) then + TTBXCustomList(Item).DrawItem(Canvas, Self, R, I, HoverIndex); + end; + finally + Canvas.Handle := 0; + Canvas.Free; + ReleaseDC(View.Window.Handle, DC); + end; + TTBXCustomList(Item).HandleHover(FHoverIndex); + end; +end; + +procedure TTBXCustomListViewer.MouseUp(X, Y: Integer; MouseWasDownOnMenu: Boolean); +var + DAD: TTBDoneActionData; +begin + if FScrollBar <> nil then FScrollBar.StopAutoScroll; + if MouseInScrollBar then + begin + inherited; + Dec(X, FWidth - FScrollBarWidth); + FScrollBar.MouseUp(mbLeft, X, Y); + DAD := TTBViewAccess(TTBViewAccess(View).GetRootView).DoneActionData; + DAD.DoneAction := tbdaNone; + TTBViewAccess(TTBViewAccess(View).GetRootView).DoneActionData := DAD; + MouseInScrollBar := False; + end + else if MouseIsDown then + begin + MouseIsDown := False; + TTBXCustomList(Item).ItemIndex := FHoverIndex; + inherited; + DAD := TTBViewAccess(TTBViewAccess(View).GetRootView).DoneActionData; + DAD.Sound := False; + TTBViewAccess(TTBViewAccess(View).GetRootView).DoneActionData := DAD; + end; +end; + +procedure TTBXCustomListViewer.MouseWheel(WheelDelta, X, Y: Integer); +var + IsNegative: Boolean; +begin + if FScrollBar <> nil then + begin + Inc(FWheelAccumulator, WheelDelta); + while Abs(FWheelAccumulator) >= WHEEL_DELTA do + begin + IsNegative := FWheelAccumulator < 0; + FWheelAccumulator := Abs(FWheelAccumulator) - WHEEL_DELTA; + if IsNegative then + begin + if FWheelAccumulator <> 0 then FWheelAccumulator := -FWheelAccumulator; + FScrollBar.UpdatePosition(FScrollBar.Position + 1) + end + else + FScrollBar.UpdatePosition(FScrollBar.Position - 1) + end; + end; +end; + +procedure TTBXCustomListViewer.Paint(const Canvas: TCanvas; + const ClientAreaRect: TRect; IsHoverItem, IsPushed, UseDisabledShadow: Boolean); +begin + { Cache some important info for later usage } + FLastClientRect := ClientAreaRect; + with ClientAreaRect do + begin + FWidth := Right - Left; + FHeight := Bottom - Top; + end; + + DrawItems(Canvas, ClientAreaRect); + + if FScrollBarWidth > 0 then + begin + if FScrollBar = nil then + begin + FScrollBar := TTBXScrollBar.Create; + FScrollBar.Kind := sbVertical; + FScrollBar.OnRedrawRequest := SBRedrawHandler; + FScrollBar.OnChange := SBChangeHandler; + FScrollBar.OnAutoScroll := SBAutoScrollHandler; + end; + FScrollBar.Bounds := Rect(ClientAreaRect.Right - FScrollBarWidth, + ClientAreaRect.Top, ClientAreaRect.Right, ClientAreaRect.Bottom); + FScrollBar.Range := FItemCount; + FScrollBar.Window := FVisibleItems; + FScrollBar.Position := FOffset; + FScrollBar.PaintTo(Canvas); + end; +end; + +procedure TTBXCustomListViewer.SBAutoScrollHandler(Sender: TObject; + var Direction, Interval: Integer); +begin + HandleAutoScroll(Direction, Interval); +end; + +procedure TTBXCustomListViewer.SBChangeHandler(Sender: TObject); +begin + FOffset := FScrollBar.Position; + UpdateItems; +end; + +procedure TTBXCustomListViewer.SBRedrawHandler(Sender: TObject); +var + DC: HDC; + Canvas: TCanvas; +begin + Canvas := TCanvas.Create; + DC := GetDC(View.Window.Handle); + try + SetWindowOrgEx(DC, -BoundsRect.Left, -BoundsRect.Top, nil); + Canvas.Handle := DC; + FScrollBar.PaintTo(Canvas); + finally + Canvas.Handle := 0; + Canvas.Free; + ReleaseDC(View.Window.Handle, DC); + end; +end; + +procedure TTBXCustomListViewer.UpdateItems; +var + DC: HDC; + Canvas: TCanvas; +begin + if Assigned(FScrollBar) then FOffset := FScrollBar.Position + else FOffset := 0; + Canvas := TCanvas.Create; + DC := GetDC(View.Window.Handle); + try + SetWindowOrgEx(DC, -BoundsRect.Left, -BoundsRect.Top, nil); + Canvas.Handle := DC; + DrawItems(Canvas, FLastClientRect); + finally + Canvas.Handle := 0; + Canvas.Free; + ReleaseDC(View.Window.Handle, DC); + end; +end; + + +//----------------------------------------------------------------------------// + +{ TTBXStringList } + +constructor TTBXStringList.Create(AOwner: TComponent); +begin + inherited; + FStrings := TStringList.Create; +end; + +destructor TTBXStringList.Destroy; +begin + FStrings.Free; + inherited; +end; + +function TTBXStringList.GetCount: Integer; +begin + Result := FStrings.Count; +end; + +function TTBXStringList.GetItemText(Index: Integer): string; +begin + Result := FStrings[Index]; +end; + +procedure TTBXStringList.SetStrings(Value: TStrings); +begin + FStrings.Assign(Value); +end; + + +//----------------------------------------------------------------------------// + +{ TTBXUndoList } + +procedure TTBXUndoList.DrawItem(ACanvas: TCanvas; AViewer: TTBXCustomListViewer; + const ARect: TRect; AIndex, AHoverIndex: Integer); +const + FillColors: array [Boolean] of TColor = (clWindow, clHighlight); + TextColors: array [Boolean] of TColor = (clWindowText, clHighlightText); +var + S: string; + R: TRect; +begin + ACanvas.Brush.Color := FillColors[AIndex <= AHoverIndex]; + ACanvas.FillRect(ARect); + S := Strings[AIndex]; + if Length(S) > 0 then + begin + R := ARect; + InflateRect(R, -4, 1); + ACanvas.Font.Color := TextColors[AIndex <= AHoverIndex]; + ACanvas.Brush.Style := bsClear; + DrawText(ACanvas.Handle, PChar(S), Length(S), R, DT_SINGLELINE or DT_VCENTER); + ACanvas.Brush.Style := bsSolid; + end; +end; + +function TTBXUndoList.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBXUndoListViewer; +end; + +procedure TTBXUndoList.HandleHover(AIndex: Integer); +begin + ItemIndex := AIndex; +end; + + +//----------------------------------------------------------------------------// + +{ TTBXUndoListViewer } + +procedure TTBXUndoListViewer.AdjustAutoScrollHover(var AIndex: Integer; Direction: Integer); +begin + if Direction < 0 then AIndex := FOffset + else if Direction > 0 then AIndex := FOffset + FVisibleItems - 1; +end; + +procedure TTBXUndoListViewer.HandleAutoScroll(var Direction, Interval: Integer); +begin + inherited; + if Direction < 0 then HoverIndex := FOffset + else if Direction > 0 then HoverIndex := FOffset + FVisibleItems - 1 + else Exit; + TTBXCustomList(Item).HandleHover(HoverIndex); + UpdateItems; +end; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXMDI.pas b/official/2.1.6+2.1.beta1/TBX/TBXMDI.pas new file mode 100644 index 0000000..0c7922e --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXMDI.pas @@ -0,0 +1,728 @@ +unit TBXMDI; + + +// TBX Package +// Copyright 2001-2004 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// Parts of the code are converted from original Toolbar2000 sources. +// Original Copyright: +// Copyright (C) 1998-2004 by Jordan Russell. All rights reserved. +// +// $Id: TBXMDI.pas 7 2004-02-21 06:07:53Z $ + + +interface + +{$I ..\..\Source\TB2Ver.inc} +{$I TBX.inc} + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + Menus, TB2Item, TB2Toolbar, TBX; + +type + TTBXMDIButtonsItem = class; + TTBXMDISystemMenuItem = class; + TTBXMDIWindowItem = class; + + TTBXMDIHandler = class(TComponent) + private + FButtonsItem: TTBXMDIButtonsItem; + FSystemMenuItem: TTBXMDISystemMenuItem; + FToolbar: TTBCustomToolbar; + FStretchButtons: Boolean; + procedure SetToolbar(Value: TTBCustomToolbar); + procedure SetStretchButtons(Value: Boolean); + protected + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + published + property Toolbar: TTBCustomToolbar read FToolbar write SetToolbar; + property StretchButtons: Boolean read FStretchButtons write SetStretchButtons default False; + end; + + TTBXMDIWindowItem = class(TTBXCustomItem) + private + FForm: TForm; + FWindowMenu: TMenuItem; + FOnUpdate: TNotifyEvent; + procedure ItemClick(Sender: TObject); + procedure SetForm(AForm: TForm); + protected + procedure EnabledChanged; override; + procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + public + constructor Create(AOwner: TComponent); override; + procedure InitiateAction; override; + published + property Enabled; + property FontSettings; + property OnUpdate: TNotifyEvent read FOnUpdate write FOnUpdate; + end; + + TTBXMDISystemMenuItem = class(TTBXCustomItem) + private + FImageList: TImageList; + procedure CommandClick(Sender: TObject); + protected + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + public + constructor Create(AOwner: TComponent); override; + procedure Click; override; + end; + + TTBXMDISystemMenuItemViewer = class(TTBItemViewer) + protected + procedure CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); override; + procedure Paint(const Canvas: TCanvas; const ClientAreaRect: TRect; + IsSelected, IsPushed, UseDisabledShadow: Boolean); override; + end; + + TTBXMDIButtonType = (tbmbMinimize, tbmbRestore, tbmbClose); + + TTBXMDIButtonItem = class(TTBCustomItem) + private + FButtonType: TTBXMDIButtonType; + protected + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + public + constructor Create(AOwner: TComponent); override; + end; + + TTBXMDIButtonItemViewer = class(TTBItemViewer) + protected + procedure CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); override; + procedure Paint(const Canvas: TCanvas; const ClientAreaRect: TRect; + IsSelected, IsPushed, UseDisabledShadow: Boolean); override; + end; + + TTBXMDISepItem = class(TTBSeparatorItem) + protected + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + end; + + TTBXMDISepItemViewer = class(TTBSeparatorItemViewer) + protected + procedure CalcSize (const Canvas: TCanvas; var AWidth, AHeight: Integer); override; + end; + + TTBXMDIButtonsItem = class(TTBCustomItem) + private + FMinimizeItem: TTBXMDIButtonItem; + FRestoreItem: TTBXMDIButtonItem; + FCloseItem: TTBXMDIButtonItem; + FSep1, FSep2: TTBXMDISepItem; + procedure InvalidateSystemMenuItem; + procedure ItemClick(Sender: TObject); + procedure UpdateState(W: HWND; Maximized: Boolean); + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +{$R TBX_MDI.res} + +uses + TBXThemes, TB2Common, TB2Consts, CommCtrl; + +type + TTBViewAccess = class(TTBView); + TTBCustomToolbarAccess = class(TTBCustomToolbar); + + +//----------------------------------------------------------------------------// + +{ TTBXMDIHandler } + +constructor TTBXMDIHandler.Create (AOwner: TComponent); +begin + inherited; + FSystemMenuItem := TTBXMDISystemMenuItem.Create(Self); + FButtonsItem := TTBXMDIButtonsItem.Create(Self); +end; + +destructor TTBXMDIHandler.Destroy; +begin + Toolbar := nil; + inherited; +end; + +procedure TTBXMDIHandler.Notification(AComponent: TComponent; Operation: TOperation); +begin + inherited; + if (AComponent = FToolbar) and (Operation = opRemove) then Toolbar := nil; +end; + +procedure TTBXMDIHandler.SetStretchButtons(Value: Boolean); +begin + if Value <> FStretchButtons then + begin + FStretchButtons := Value; + with FButtonsItem do + if FStretchButtons then + begin + FMinimizeItem.ItemStyle := FMinimizeItem.ItemStyle + [tbisStretch]; + FRestoreItem.ItemStyle := FRestoreItem.ItemStyle + [tbisStretch]; + FCloseItem.ItemStyle := FCloseItem.ItemStyle + [tbisStretch]; + end + else + begin + FMinimizeItem.ItemStyle := FMinimizeItem.ItemStyle - [tbisStretch]; + FRestoreItem.ItemStyle := FRestoreItem.ItemStyle - [tbisStretch]; + FCloseItem.ItemStyle := FCloseItem.ItemStyle - [tbisStretch]; + end; + end; +end; + +procedure TTBXMDIHandler.SetToolbar(Value: TTBCustomToolbar); +var + Rebuild: Boolean; +begin + if FToolbar <> Value then + begin + if Assigned(FToolbar) then with TTBCustomToolbarAccess(FToolbar) do + begin + Rebuild := False; + if FMDIButtonsItem = FButtonsItem then + begin + FMDIButtonsItem := nil; + Rebuild := True; + end; + if FMDISystemMenuItem = FSystemMenuItem then + begin + FMDISystemMenuItem := nil; + Rebuild := True; + end; + if Rebuild and Assigned(View) then View.RecreateAllViewers; + end; + FToolbar := Value; + if Assigned(Value) then with TTBCustomToolbarAccess(Value) do + begin + FreeNotification(Self); + FMDIButtonsItem := FButtonsItem; + FMDISystemMenuItem := FSystemMenuItem; + View.RecreateAllViewers; + end; + end; +end; + + +//----------------------------------------------------------------------------// + +{ TTBXMDISystemMenuItem } + +constructor TTBXMDISystemMenuItem.Create(AOwner: TComponent); +begin + inherited; + ItemStyle := ItemStyle + [tbisSubMenu, tbisDontSelectFirst] - + [tbisRedrawOnSelChange, tbisRedrawOnMouseOverChange]; + Caption := '&-'; + + FImageList := TImageList.Create(Self); + FImageList.Handle := ImageList_LoadBitmap(HInstance, 'TBXSYSMENUIMAGES', + 16, 0, $C0C0C0); + SubMenuImages := FImageList; +end; + +function TTBXMDISystemMenuItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBXMDISystemMenuItemViewer; +end; + +procedure TTBXMDISystemMenuItem.Click; +var + I: Integer; + Form: TForm; + M: HMENU; + State, ID: UINT; + Item: TTBCustomItem; + Buf: array[0..1023] of Char; +begin + inherited; + Clear; + if Application.MainForm = nil then Exit; + Form := Application.MainForm.ActiveMDIChild; + if Form = nil then Exit; + M := GetSystemMenu(Form.Handle, False); + for I := 0 to GetMenuItemCount(M) - 1 do + begin + State := GetMenuState(M, I, MF_BYPOSITION); + if State and MF_SEPARATOR <> 0 then Add(TTBXSeparatorItem.Create(Self)) + else + begin + Item := TTBXCustomItem.Create(Self); + if State and MF_GRAYED <> 0 then Item.Enabled := False; + if GetMenuString(M, I, Buf, SizeOf(Buf), MF_BYPOSITION) = 0 then Buf[0] := #0; + Item.Caption := Buf; + ID := GetMenuItemID(M, I); + Item.Tag := ID; + case ID and $FFF0 of + SC_RESTORE: Item.ImageIndex := 3; + SC_MINIMIZE: Item.ImageIndex := 2; + SC_MAXIMIZE: Item.ImageIndex := 1; + SC_CLOSE: begin + Item.ImageIndex := 0; + Item.Options := Item.Options + [tboDefault]; + end; + end; + Item.OnClick := CommandClick; + Add(Item); + end; + end; +end; + +procedure TTBXMDISystemMenuItem.CommandClick (Sender: TObject); +var + Form: TForm; +begin + if Assigned(Application.MainForm) then + begin + Form := Application.MainForm.ActiveMDIChild; + if Assigned(Form) then + SendMessage(Form.Handle, WM_SYSCOMMAND, TTBXCustomItem(Sender).Tag, GetMessagePos); + end; +end; + + +//----------------------------------------------------------------------------// + +{ TTBXMDISystemMenuItemViewer } + +procedure TTBXMDISystemMenuItemViewer.CalcSize(const Canvas: TCanvas; + var AWidth, AHeight: Integer); +begin + AWidth := GetSystemMetrics(SM_CXSMICON) + 2; + AHeight := GetSystemMetrics(SM_CYSMICON) + 2; +end; + +procedure TTBXMDISystemMenuItemViewer.Paint(const Canvas: TCanvas; + const ClientAreaRect: TRect; IsSelected, IsPushed, UseDisabledShadow: Boolean); + + function GetIconHandle: HICON; + var + Form: TForm; + begin + Result := 0; + if Assigned(Application.MainForm) then + begin + Form := Application.MainForm.ActiveMDIChild; + if Assigned(Form) then Result := Form.Icon.Handle; + end; + if Result = 0 then Result := Application.Icon.Handle; + if Result = 0 then Result := LoadIcon(0, IDI_APPLICATION); + end; + +var + R: TRect; + IconHandle, TempIcon: HICON; +begin + R := ClientAreaRect; + InflateRect(R, -1, -1); + IconHandle := GetIconHandle; + TempIcon := CopyImage(IconHandle, IMAGE_ICON, R.Right - R.Left, + R.Bottom - R.Top, LR_COPYFROMRESOURCE); + if TempIcon <> 0 then + begin + DrawIconEx(Canvas.Handle, R.Left, R.Top, TempIcon, 0, 0, 0, 0, DI_NORMAL); + DestroyIcon(TempIcon); + end; +end; + + +//----------------------------------------------------------------------------// + +{ TTBXMDIButtonItem } + +constructor TTBXMDIButtonItem.Create (AOwner: TComponent); +begin + inherited; + ItemStyle := ItemStyle - [tbisSelectable] + [tbisRightAlign]; +end; + +function TTBXMDIButtonItem.GetItemViewerClass (AView: TTBView): TTBItemViewerClass; +begin + Result := TTBXMDIButtonItemViewer; +end; + + +//----------------------------------------------------------------------------// + +{ TTBXMDIButtonItemViewer } + +procedure TTBXMDIButtonItemViewer.CalcSize (const Canvas: TCanvas; + var AWidth, AHeight: Integer); +begin + if NewStyleControls then + begin + AWidth := GetSystemMetrics(SM_CXMENUSIZE) - CurrentTheme.MenuMDIDW; + if AWidth < 0 then AWidth := 0; + AHeight := GetSystemMetrics(SM_CYMENUSIZE) - CurrentTheme.MenuMDIDH; + if AHeight < 0 then AHeight := 0; + end + else + begin + AWidth := 16; + AHeight := 14; + end; +end; + +procedure TTBXMDIButtonItemViewer.Paint(const Canvas: TCanvas; + const ClientAreaRect: TRect; IsSelected, IsPushed, UseDisabledShadow: Boolean); +const + ButtonTypeFlags: array [TTBXMDIButtonType] of UINT = (DFCS_CAPTIONMIN, + DFCS_CAPTIONRESTORE, DFCS_CAPTIONCLOSE); + CDesigning: array [Boolean] of Integer = (0, IO_DESIGNING); +var + ItemInfo: TTBXItemInfo; +begin + FillChar(ItemInfo, SizeOf(ItemInfo), 0); + ItemInfo.ViewType := TVT_NORMALTOOLBAR; //GetViewType(View); + ItemInfo.ItemOptions := IO_TOOLBARSTYLE or CDesigning[csDesigning in Item.ComponentState]; + ItemInfo.Enabled := Item.Enabled{ or View.Customizing}; + ItemInfo.Pushed := IsPushed; + ItemInfo.Selected := False; + ItemInfo.ImageShown := False; + ItemInfo.ImageWidth := 0; + ItemInfo.ImageHeight := 0; + if IsSelected then + begin + if not ItemInfo.Enabled and not TTBViewAccess(View).MouseOverSelected then ItemInfo.HoverKind := hkKeyboardHover + else if ItemInfo.Enabled then ItemInfo.HoverKind := hkMouseHover; + end + else ItemInfo.HoverKind := hkNone; + ItemInfo.IsVertical := View.Orientation = tbvoVertical; + + CurrentTheme.PaintMDIButton(Canvas, ClientAreaRect, ItemInfo, + ButtonTypeFlags[TTBXMDIButtonItem(Item).FButtonType]); +end; + + +//----------------------------------------------------------------------------// + +{ TTBXMDISepItem } + +function TTBXMDISepItem.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBXMDISepItemViewer; +end; + + +//----------------------------------------------------------------------------// + +{ TTBXMDISepItemViewer } + +procedure TTBXMDISepItemViewer.CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); +begin + if View.Orientation <> tbvoVertical then + begin + AWidth := 2; + AHeight := 6; + end + else + begin + AWidth := 6; + AHeight := 2; + end; +end; + + +//----------------------------------------------------------------------------// + +{ TTBXMDIButtonsItem } + +var + CBTHookHandle: HHOOK; + MDIButtonsItems: TList; + +function WindowIsMDIChild(W: HWND): Boolean; +var + I: Integer; + MainForm, ChildForm: TForm; +begin + MainForm := Application.MainForm; + if Assigned(MainForm) then + for I := 0 to MainForm.MDIChildCount-1 do + begin + ChildForm := MainForm.MDIChildren[I]; + if ChildForm.HandleAllocated and (ChildForm.Handle = W) then + begin + Result := True; + Exit; + end; + end; + Result := False; +end; + +function CBTHook(Code: Integer; WParam: WPARAM; LParam: LPARAM): LRESULT; stdcall; +var + Maximizing: Boolean; + WindowPlacement: TWindowPlacement; + I: Integer; +begin + case Code of + HCBT_SETFOCUS: + if WindowIsMDIChild(HWND(WParam)) and Assigned(MDIButtonsItems) then + for I := 0 to MDIButtonsItems.Count-1 do + TTBXMDIButtonsItem(MDIButtonsItems[I]).InvalidateSystemMenuItem; + HCBT_MINMAX: + if WindowIsMDIChild(HWND(WParam)) and Assigned(MDIButtonsItems) and + (LParam in [SW_SHOWNORMAL, SW_SHOWMAXIMIZED, SW_MINIMIZE, SW_RESTORE]) then + begin + Maximizing := (LParam = SW_MAXIMIZE); + if (LParam = SW_RESTORE) and not IsZoomed(HWND(WParam)) then + begin + WindowPlacement.length := SizeOf(WindowPlacement); + GetWindowPlacement (HWND(WParam), @WindowPlacement); + Maximizing := (WindowPlacement.flags and WPF_RESTORETOMAXIMIZED <> 0); + end; + for I := 0 to MDIButtonsItems.Count-1 do + TTBXMDIButtonsItem(MDIButtonsItems[I]).UpdateState(HWND(WParam), Maximizing); + end; + HCBT_DESTROYWND: + if WindowIsMDIChild(HWND(WParam)) and Assigned(MDIButtonsItems) then + begin + for I := 0 to MDIButtonsItems.Count-1 do + TTBXMDIButtonsItem(MDIButtonsItems[I]).UpdateState(HWND(WParam), False); + end; + end; + Result := CallNextHookEx(CBTHookHandle, Code, WParam, LParam); +end; + +constructor TTBXMDIButtonsItem.Create(AOwner: TComponent); + + function CreateItem(const AType: TTBXMDIButtonType): TTBXMDIButtonItem; + begin + Result := TTBXMDIButtonItem.Create(Self); + Result.FButtonType := AType; + Result.OnClick := ItemClick; + end; + +begin + inherited; + ItemStyle := ItemStyle + [tbisEmbeddedGroup]; + FMinimizeItem := CreateItem(tbmbMinimize); + FRestoreItem := CreateItem(tbmbRestore); + FCloseItem := CreateItem(tbmbClose); + FSep1 := TTBXMDISepItem.Create(Self); + FSep1.Blank := True; + FSep1.ItemStyle := FSep1.ItemStyle + [tbisRightAlign, tbisNoLineBreak]; + FSep2 := TTBXMDISepItem.Create(Self); + FSep2.Blank := True; + FSep2.ItemStyle := FSep2.ItemStyle + [tbisRightAlign, tbisNoLineBreak]; + Add(FSep1); + Add(FMinimizeItem); + Add(FRestoreItem); + Add(FSep2); + Add(FCloseItem); + UpdateState(0, False); + AddToList(MDIButtonsItems, Self); + if CBTHookHandle = 0 then CBTHookHandle := SetWindowsHookEx(WH_CBT, CBTHook, 0, GetCurrentThreadId); +end; + +destructor TTBXMDIButtonsItem.Destroy; +begin + RemoveFromList(MDIButtonsItems, Self); + if (MDIButtonsItems = nil) and (CBTHookHandle <> 0) then + begin + UnhookWindowsHookEx(CBTHookHandle); + CBTHookHandle := 0; + end; + inherited; +end; + +procedure TTBXMDIButtonsItem.UpdateState(W: HWND; Maximized: Boolean); +var + HasMaxChild, VisibilityChanged: Boolean; + + procedure UpdateVisibleEnabled(const Item: TTBCustomItem; const AEnabled: Boolean); + begin + if (Item.Visible <> HasMaxChild) or (Item.Enabled <> AEnabled) then + begin + Item.Visible := HasMaxChild; + Item.Enabled := AEnabled; + VisibilityChanged := True; + end; + end; + +var + MainForm, ActiveMDIChild, ChildForm: TForm; + I: Integer; +begin + HasMaxChild := False; + MainForm := Application.MainForm; + ActiveMDIChild := nil; + if Assigned(MainForm) then + begin + for I := 0 to MainForm.MDIChildCount-1 do + begin + ChildForm := MainForm.MDIChildren[I]; + if ChildForm.HandleAllocated and + (((ChildForm.Handle = W) and Maximized) or + ((ChildForm.Handle <> W) and IsZoomed(ChildForm.Handle))) then + begin + HasMaxChild := True; + Break; + end; + end; + ActiveMDIChild := MainForm.ActiveMDIChild; + end; + + VisibilityChanged := False; + UpdateVisibleEnabled(TTBXMDIHandler(Owner).FSystemMenuItem, True); + UpdateVisibleEnabled(FSep1, True); + UpdateVisibleEnabled(FMinimizeItem, (ActiveMDIChild = nil) or + (GetWindowLong(ActiveMDIChild.Handle, GWL_STYLE) and WS_MINIMIZEBOX <> 0)); + UpdateVisibleEnabled(FRestoreItem, True); + UpdateVisibleEnabled(FSep2, True); + UpdateVisibleEnabled(FCloseItem, True); + + if VisibilityChanged and Assigned((Owner as TTBXMDIHandler).FToolbar) then + begin + TTBXMDIHandler(Owner).FToolbar.View.InvalidatePositions; + TTBXMDIHandler(Owner).FToolbar.View.TryValidatePositions; + end; +end; + +procedure TTBXMDIButtonsItem.ItemClick (Sender: TObject); +var + MainForm, ChildForm: TForm; + Cmd: WPARAM; +begin + MainForm := Application.MainForm; + if Assigned(MainForm) then begin + ChildForm := MainForm.ActiveMDIChild; + if Assigned(ChildForm) then begin + { Send WM_SYSCOMMAND messages so that we get sounds } + if Sender = FRestoreItem then + Cmd := SC_RESTORE + else if Sender = FCloseItem then + Cmd := SC_CLOSE + else + Cmd := SC_MINIMIZE; + SendMessage(ChildForm.Handle, WM_SYSCOMMAND, Cmd, GetMessagePos); + end; + end; +end; + +procedure TTBXMDIButtonsItem.InvalidateSystemMenuItem; +var + View: TTBView; +begin + if Assigned((Owner as TTBXMDIHandler).FToolbar) then + begin + View := TTBXMDIHandler(Owner).FToolbar.View; + View.Invalidate (View.Find(TTBXMDIHandler(Owner).FSystemMenuItem)); + end; +end; + + +//----------------------------------------------------------------------------// + +{ TTBXMDIWindowItem } + +constructor TTBXMDIWindowItem.Create(AOwner: TComponent); +var + Form: TForm; +begin + inherited; + ItemStyle := ItemStyle + [tbisEmbeddedGroup]; + Caption := STBMDIWindowItemDefCaption; + FWindowMenu := TMenuItem.Create(Self); + + if not(csDesigning in ComponentState) then + begin + { Need to set WindowMenu before MDI children are created. Otherwise the + list incorrectly shows the first 9 child windows, even if window 10+ is + active. } + Form := Application.MainForm; + if (Form = nil) and (Screen.FormCount > 0) then Form := Screen.Forms[0]; + SetForm (Form); + end; +end; + +procedure TTBXMDIWindowItem.GetChildren (Proc: TGetChildProc; Root: TComponent); +begin +end; + +procedure TTBXMDIWindowItem.Notification (AComponent: TComponent; Operation: TOperation); +begin + inherited; + if (Operation = opRemove) and (AComponent = FForm) then SetForm (nil); +end; + +procedure TTBXMDIWindowItem.SetForm (AForm: TForm); +begin + if FForm <> AForm then + begin + if Assigned(FForm) and (FForm.WindowMenu = FWindowMenu) then FForm.WindowMenu := nil; + FForm := AForm; + if Assigned(FForm) then FForm.FreeNotification (Self); + end; + if Assigned(FForm) then FForm.WindowMenu := FWindowMenu; +end; + +procedure TTBXMDIWindowItem.EnabledChanged; +var + I: Integer; +begin + inherited; + for I := 0 to Count-1 do Items[I].Enabled := Enabled; +end; + +procedure TTBXMDIWindowItem.InitiateAction; +var + MainForm: TForm; + I: Integer; + M: HMENU; + Item: TTBXCustomItem; + ItemCount: Integer; + Buf: array[0..1023] of Char; +begin + inherited; + if csDesigning in ComponentState then Exit; + MainForm := Application.MainForm; + if Assigned(MainForm) then SetForm(MainForm); + if FForm = nil then Exit; + if FForm.ClientHandle <> 0 then + { This is needed, otherwise windows selected on the More Windows dialog + don't move back into the list } + SendMessage (FForm.ClientHandle, WM_MDIREFRESHMENU, 0, 0); + M := FWindowMenu.Handle; + ItemCount := GetMenuItemCount(M) - 1; + if ItemCount < 0 then ItemCount := 0; + while Count < ItemCount do + begin + Item := TTBXCustomItem.Create(Self); + Item.Enabled := Enabled; + Item.OnClick := ItemClick; + Item.FontSettings := FontSettings; + Add(Item); + end; + while Count > ItemCount do Items[Count - 1].Free; + for I := 0 to ItemCount - 1 do + begin + Item := TTBXCustomItem(Items[I]); + Item.Tag := GetMenuItemID(M, I + 1); + if GetMenuString(M, I + 1, Buf, SizeOf(Buf), MF_BYPOSITION) = 0 then Buf[0] := #0; + Item.Caption := Buf; + Item.Checked := GetMenuState(M, I + 1, MF_BYPOSITION) and MF_CHECKED <> 0; + Item.FontSettings := FontSettings; + end; + if Assigned(FOnUpdate) then FOnUpdate(Self); +end; + +procedure TTBXMDIWindowItem.ItemClick (Sender: TObject); +var + Form: TForm; +begin + Form := Application.MainForm; + if Assigned(Form) then PostMessage(Form.Handle, WM_COMMAND, TTBXCustomItem(Sender).Tag, 0); +end; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXOffice2003Theme.pas b/official/2.1.6+2.1.beta1/TBX/TBXOffice2003Theme.pas new file mode 100644 index 0000000..47d2420 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXOffice2003Theme.pas @@ -0,0 +1,2040 @@ +unit TBXOffice2003Theme; + +// TBX Package +// Copyright 2001-2004 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// Office2003 theme +// Copyright (c) Yury Plashenkov (Sep. 2005) +// +// Version for TBX version 2.1 + +interface + +{$I ..\..\Source\TB2Ver.inc} +{$I TBX.inc} + +// PngComponents is a set of components that allows you to include in your +// application semitransparent PNG images +// I advise you to get it from http://www.thany.org/ +// After installing, use TPngImageList (from PngComponents package) instead of +// "classic" TImageList + +// Comment next string if you use Toolbar2000 version different from 2.1.6 +{$DEFINE TB2K_VER216} + +// Uncomment next string if you want to see highlighted icons +//{$DEFINE HIGHLIGHTTOOLBARICONS} + +// Uncomment next string to turn on gradient captions on dockpanels +//{$DEFINE DOCKPANELGRADIENTCAPTION} + +uses + Windows, Messages, Graphics, Classes, TBXThemes, ImgList, TBXUxThemes; + +type + TItemPart = (ipBody, ipText, ipFrame); + TBtnItemState = (bisNormal, bisDisabled, bisSelected, bisPressed, bisHot, + bisDisabledHot, bisSelectedHot, bisPopupParent); + TMenuItemState = (misNormal, misDisabled, misHot, misDisabledHot); + TWinFramePart = (wfpBorder, wfpCaption, wfpCaptionText); + + TOffice2003Scheme = (osBlue, osMetallic, osGreen, osUnknown); + + TTBXOffice2003Theme = class(TTBXTheme) + private + FOnSetupColorCache: TNotifyEvent; + procedure TBXSysCommand(var Message: TMessage); message TBX_SYSCOMMAND; + protected + DockColor: TColor; + + ToolbarColor1: TColor; + ToolbarColor2: TColor; + ToolbarFrameColor1: TColor; + ToolbarFrameColor2: TColor; + SeparatorColor1: TColor; + SeparatorColor2: TColor; + DragHandleColor1: TColor; + DragHandleColor2: TColor; + + EmbeddedColor: TColor; + EmbeddedFrameColor: TColor; + EmbeddedDisabledColor: TColor; + + PopupColor: TColor; + PopupFrameColor: TColor; + + DockPanelColor: TColor; + WinFrameColors: array[TWinFramePart] of TColor; + MenuItemColors: array[TMenuItemState, TItemPart] of TColor; + BtnItemColors: array[TBtnItemState, ipText..ipFrame] of TColor; + BtnBodyColors: array[TBtnItemState, Boolean] of TColor; + + StatusPanelFrameColor: TColor; + FMDIAreaColor: TColor; + + procedure SetupColorCache; virtual; + protected + function GetPartColor(const ItemInfo: TTBXItemInfo; ItemPart: TItemPart): TColor; + function GetBtnColor(const ItemInfo: TTBXItemInfo; ItemPart: TItemPart; GradColor2: Boolean = False): TColor; + public + constructor Create(const AName: string); override; + destructor Destroy; override; + + function GetBooleanMetrics(Index: Integer): Boolean; override; + function GetIntegerMetrics(Index: Integer): Integer; override; + procedure GetMargins(MarginID: Integer; out Margins: TTBXMargins); override; + function GetImageOffset(Canvas: TCanvas; const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList): TPoint; override; + function GetItemColor(const ItemInfo: TTBXItemInfo): TColor; override; + function GetItemTextColor(const ItemInfo: TTBXItemInfo): TColor; override; + function GetItemImageBackground(const ItemInfo: TTBXItemInfo): TColor; override; + function GetPopupShadowType: Integer; override; + procedure GetViewBorder(ViewType: Integer; out Border: TPoint); override; + function GetViewColor(AViewType: Integer): TColor; override; + procedure GetViewMargins(ViewType: Integer; out Margins: TTBXMargins); override; + + procedure PaintBackgnd(Canvas: TCanvas; const ADockRect, ARect, AClipRect: TRect; AColor: TColor; Transparent: Boolean; AViewType: Integer); override; + procedure PaintButton(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintCaption(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo; const ACaption: string; AFormat: Cardinal; Rotated: Boolean); override; + procedure PaintCheckMark(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintChevron(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintDock(Canvas: TCanvas; const ClientRect, DockRect: TRect; DockPosition: Integer); override; + procedure PaintDockPanelNCArea(Canvas: TCanvas; R: TRect; const DockPanelInfo: TTBXDockPanelInfo); override; + procedure PaintDropDownArrow(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintEditButton(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo; ButtonInfo: TTBXEditBtnInfo); override; + procedure PaintEditFrame(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo; const EditInfo: TTBXEditInfo); override; + procedure PaintFloatingBorder(Canvas: TCanvas; const ARect: TRect; const WindowInfo: TTBXWindowInfo); override; + procedure PaintFrame(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintImage(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList; ImageIndex: Integer); override; + procedure PaintMDIButton(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo; ButtonKind: Cardinal); override; + procedure PaintMenuItem(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo); override; + procedure PaintMenuItemFrame(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintPageScrollButton(Canvas: TCanvas; const ARect: TRect; ButtonType: Integer; Hot: Boolean); override; + procedure PaintPopupNCArea(Canvas: TCanvas; R: TRect; const PopupInfo: TTBXPopupInfo); override; + procedure PaintSeparator(Canvas: TCanvas; ARect: TRect; ItemInfo: TTBXItemInfo; Horizontal, LineSeparator: Boolean); override; + procedure PaintToolbarNCArea(Canvas: TCanvas; R: TRect; const ToolbarInfo: TTBXToolbarInfo); override; + procedure PaintFrameControl(Canvas: TCanvas; R: TRect; Kind, State: Integer; Params: Pointer); override; + procedure PaintStatusBar(Canvas: TCanvas; R: TRect; Part: Integer); override; + + property MDIAreaColor: TColor read FMDIAreaColor; + + property OnSetupColorCache: TNotifyEvent read FOnSetupColorCache write FOnSetupColorCache; + end; + +function GetOffice2003Scheme: TOffice2003Scheme; +procedure PaintGradient(DC: HDC; const ARect: TRect; Color1, Color2: TColor); +procedure PaintIrregularGradient(DC: HDC; const ARect: TRect; Color1, Color2: TColor; Horz: Boolean); +function GetMDIWorkspaceColor: TColor; + +implementation + +uses TBXUtils, TB2Common, TB2Item, Controls, CommCtrl, Forms, SysUtils; + +function GetOffice2003Scheme: TOffice2003Scheme; +const + MaxChars = 1024; +var + pszThemeFileName, pszColorBuff, pszSizeBuf: PWideChar; + S: string; +begin + Result := osUnknown; + if USE_THEMES then + begin + GetMem(pszThemeFileName, 2 * MaxChars); + GetMem(pszColorBuff, 2 * MaxChars); + GetMem(pszSizeBuf, 2 * MaxChars); + try + if not Failed(GetCurrentThemeName(pszThemeFileName, MaxChars, pszColorBuff, MaxChars, pszSizeBuf, MaxChars)) then + if UpperCase(ExtractFileName(pszThemeFileName)) = 'LUNA.MSSTYLES' then + begin + S := UpperCase(pszColorBuff); + if S = 'NORMALCOLOR' then + Result := osBlue + else if S = 'METALLIC' then + Result := osMetallic + else if S = 'HOMESTEAD' then + Result := osGreen; + end; + finally + FreeMem(pszSizeBuf); + FreeMem(pszColorBuff); + FreeMem(pszThemeFileName); + end; + end; +end; + +procedure PaintGradient(DC: HDC; const ARect: TRect; Color1, Color2: TColor); +var + r1, g1, b1, r2, g2, b2: Byte; + I, Size: Integer; + hbr: HBRUSH; + lprc: TRect; +begin + Color1 := ColorToRGB(Color1); + Color2 := ColorToRGB(Color2); + if Color1 = Color2 then + FillRectEx(DC, ARect, Color1) + else + begin + Size := ARect.Bottom - ARect.Top; + if Size <= 0 then Exit; + + r1 := GetRValue(Color1); + g1 := GetGValue(Color1); + b1 := GetBValue(Color1); + r2 := GetRValue(Color2); + g2 := GetGValue(Color2); + b2 := GetBValue(Color2); + + lprc := ARect; + lprc.Bottom := lprc.Top + 1; + + Dec(Size); + for I := 0 to Size do + begin + hbr := CreateSolidBrush(RGB((r2 - r1) * I div Size + r1, (g2 - g1) * I div Size + g1, (b2 - b1) * I div Size + b1)); + FillRect(DC, lprc, hbr); + DeleteObject(hbr); + OffsetRect(lprc, 0, 1); + end; + end; +end; + +var + IrregularGradientValue: Integer; + +procedure PaintIrregularGradient(DC: HDC; const ARect: TRect; Color1, Color2: TColor; Horz: Boolean); +var + r1, g1, b1, r2, g2, b2: Integer; + rm1, gm1, bm1, rm2, gm2, bm2: Integer; + lprc: TRect; + I, Size, Middle: Integer; + hbr: HBRUSH; +begin + Color1 := ColorToRGB(Color1); + Color2 := ColorToRGB(Color2); + if Color1 = Color2 then + FillRectEx(DC, ARect, Color1) + else + begin + if IsRectEmpty(ARect) then Exit; + + r1 := GetRValue(Color1); + g1 := GetGValue(Color1); + b1 := GetBValue(Color1); + r2 := GetRValue(Color2); + g2 := GetGValue(Color2); + b2 := GetBValue(Color2); + + lprc := ARect; + + if Horz then + begin + Size := ARect.Right - ARect.Left; + lprc.Right := lprc.Left + 1; + end + else + begin + Size := ARect.Bottom - ARect.Top; + lprc.Bottom := lprc.Top + 1; + end; + + Middle := Size div 2; + + rm1 := (r2 - r1) * IrregularGradientValue div 40 + r1; + gm1 := (g2 - g1) * IrregularGradientValue div 40 + g1; + bm1 := (b2 - b1) * IrregularGradientValue div 40 + b1; + rm2 := (rm1 - r1) * Size div Middle + r1; + gm2 := (gm1 - g1) * Size div Middle + g1; + bm2 := (bm1 - b1) * Size div Middle + b1; + + Dec(Size); + for I := 0 to Middle - 1 do + begin + hbr := CreateSolidBrush(RGB((rm2 - r1) * I div Size + r1, (gm2 - g1) * I div Size + g1, (bm2 - b1) * I div Size + b1)); + FillRect(DC, lprc, hbr); + DeleteObject(hbr); + OffsetRect(lprc, Ord(Horz), Ord(not Horz)); + end; + + hbr := CreateSolidBrush(RGB(rm1, gm1, bm1)); + FillRect(DC, lprc, hbr); + DeleteObject(hbr); + OffsetRect(lprc, Ord(Horz), Ord(not Horz)); + + rm1 := rm1 * 2 - r2; + gm1 := gm1 * 2 - g2; + bm1 := bm1 * 2 - b2; + + for I := Middle + 1 to Size do + begin + hbr := CreateSolidBrush(RGB((r2 - rm1) * I div Size + rm1, (g2 - gm1) * I div Size + gm1, (b2 - bm1) * I div Size + bm1)); + FillRect(DC, lprc, hbr); + DeleteObject(hbr); + OffsetRect(lprc, Ord(Horz), Ord(not Horz)); + end; + end; +end; + +function GetMDIWorkspaceColor: TColor; +const + MDIColors: array[TOffice2003Scheme] of TColor = ($AE9990, $B39A9B, $7BA097, clBtnShadow); +begin + Result := MDIColors[GetOffice2003Scheme]; +end; + +var + StockImgList: TImageList; + CounterLock: Integer; + +procedure InitializeStock; +begin + StockImgList := TImageList.Create(nil); + StockImgList.Handle := ImageList_LoadBitmap(HInstance, 'TBXGLYPHS', 16, 0, clWhite); +end; + +procedure FinalizeStock; +begin + StockImgList.Free; +end; + +{ TTBXOffice2003Theme } + +function TTBXOffice2003Theme.GetBooleanMetrics(Index: Integer): Boolean; +begin + case Index of + TMB_OFFICEXPPOPUPALIGNMENT: Result := True; + TMB_EDITMENUFULLSELECT: Result := True; + TMB_EDITHEIGHTEVEN: Result := False; + TMB_SOLIDTOOLBARNCAREA: Result := False; + TMB_SOLIDTOOLBARCLIENTAREA: Result := True; + TMB_PAINTDOCKBACKGROUND: Result := True; + else + Result := False; + end; +end; + +function TTBXOffice2003Theme.GetIntegerMetrics(Index: Integer): Integer; +begin + case Index of + TMI_SPLITBTN_ARROWWIDTH: Result := 12; + + TMI_DROPDOWN_ARROWWIDTH: Result := 8; + TMI_DROPDOWN_ARROWMARGIN: Result := 3; + + TMI_MENU_IMGTEXTSPACE: Result := 5; + TMI_MENU_LCAPTIONMARGIN: Result := 3; + TMI_MENU_RCAPTIONMARGIN: Result := 3; + TMI_MENU_SEPARATORSIZE: Result := 3; + TMI_MENU_MDI_DW: Result := 2; + TMI_MENU_MDI_DH: Result := 2; + + TMI_TLBR_SEPARATORSIZE: Result := 6; + + TMI_EDIT_FRAMEWIDTH: Result := 1; + TMI_EDIT_TEXTMARGINHORZ: Result := 2; + TMI_EDIT_TEXTMARGINVERT: Result := 2; + TMI_EDIT_BTNWIDTH: Result := 14; + TMI_EDIT_MENURIGHTINDENT: Result := 1; + else + Result := -1; + end; +end; + +function TTBXOffice2003Theme.GetViewColor(AViewType: Integer): TColor; +begin + Result := DockColor; + if (AViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + if (AViewType and TVT_MENUBAR) = TVT_MENUBAR then Result := DockColor + else Result := ToolbarColor1; + end + else if (AViewType and VT_POPUP) = VT_POPUP then + begin + if (AViewType and PVT_LISTBOX) = PVT_LISTBOX then Result := clWindow + else Result := PopupColor; + end + else if (AViewType and VT_DOCKPANEL) = VT_DOCKPANEL then Result := DockPanelColor; +end; + +function TTBXOffice2003Theme.GetBtnColor(const ItemInfo: TTBXItemInfo; ItemPart: TItemPart; GradColor2: Boolean = False): TColor; +const + BFlags1: array [Boolean] of TBtnItemState = (bisDisabled, bisDisabledHot); + BFlags2: array [Boolean] of TBtnItemState = (bisSelected, bisSelectedHot); + BFlags3: array [Boolean] of TBtnItemState = (bisNormal, bisHot); +var + B: TBtnItemState; + Embedded: Boolean; +begin + with ItemInfo do + begin + Embedded := (ViewType and VT_TOOLBAR = VT_TOOLBAR) and (ViewType and TVT_EMBEDDED = TVT_EMBEDDED); + if not Enabled then B := BFlags1[HoverKind = hkKeyboardHover] + else if ItemInfo.IsPopupParent then B := bisPopupParent + else if Pushed then B := bisPressed + else if Selected then B := BFlags2[HoverKind <> hkNone] + else B := BFlags3[HoverKind <> hkNone]; + if ItemPart = ipBody then + Result := BtnBodyColors[B, GradColor2] + else + Result := BtnItemColors[B, ItemPart]; + if Embedded and (Result = clNone) then + begin + if ItemPart = ipBody then Result := EmbeddedColor; + if (ItemPart = ipFrame) and not Selected then Result := EmbeddedFrameColor; + end; + end; +end; + +function TTBXOffice2003Theme.GetPartColor(const ItemInfo: TTBXItemInfo; ItemPart: TItemPart): TColor; +const + MFlags1: array [Boolean] of TMenuItemState = (misDisabled, misDisabledHot); + MFlags2: array [Boolean] of TMenuItemState = (misNormal, misHot); + BFlags1: array [Boolean] of TBtnItemState = (bisDisabled, bisDisabledHot); + BFlags2: array [Boolean] of TBtnItemState = (bisSelected, bisSelectedHot); + BFlags3: array [Boolean] of TBtnItemState = (bisNormal, bisHot); +var + IsMenuItem, Embedded: Boolean; + M: TMenuItemState; + B: TBtnItemState; +begin + with ItemInfo do + begin + IsMenuItem := ((ViewType and PVT_POPUPMENU) = PVT_POPUPMENU) and + ((ItemOptions and IO_TOOLBARSTYLE) = 0); + Embedded := ((ViewType and VT_TOOLBAR) = VT_TOOLBAR) and + ((ViewType and TVT_EMBEDDED) = TVT_EMBEDDED); + if IsMenuItem then + begin + if not Enabled then M := MFlags1[HoverKind = hkKeyboardHover] + else M := MFlags2[HoverKind <> hkNone]; + Result := MenuItemColors[M, ItemPart]; + end + else + begin + if not Enabled then B := BFlags1[HoverKind = hkKeyboardHover] + else if ItemInfo.IsPopupParent then B := bisPopupParent + else if Pushed then B := bisPressed + else if Selected then B := BFlags2[HoverKind <> hkNone] + else B := BFlags3[HoverKind <> hkNone]; + if ItemPart = ipBody then + Result := BtnBodyColors[B, False] + else + Result := BtnItemColors[B, ItemPart]; + if Embedded and (Result = clNone) then + begin + if ItemPart = ipBody then Result := EmbeddedColor; + if ItemPart = ipFrame then Result := EmbeddedFrameColor; + end; + end; + end; +end; + +function TTBXOffice2003Theme.GetItemColor(const ItemInfo: TTBXItemInfo): TColor; +begin + Result := GetPartColor(ItemInfo, ipBody); + if Result = clNone then Result := GetViewColor(ItemInfo.ViewType); +end; + +function TTBXOffice2003Theme.GetItemTextColor(const ItemInfo: TTBXItemInfo): TColor; +begin + Result := GetPartColor(ItemInfo, ipText); +end; + +function TTBXOffice2003Theme.GetItemImageBackground(const ItemInfo: TTBXItemInfo): TColor; +begin + Result := GetBtnColor(ItemInfo, ipBody); + if Result = clNone then Result := GetViewColor(ItemInfo.ViewType); +end; + +procedure TTBXOffice2003Theme.GetViewBorder(ViewType: Integer; out Border: TPoint); +const + XMetrics: array [Boolean] of Integer = (SM_CXDLGFRAME, SM_CXFRAME); + YMetrics: array [Boolean] of Integer = (SM_CYDLGFRAME, SM_CYFRAME); +var + Resizable: Boolean; + + procedure SetBorder(X, Y: Integer); + begin + Border.X := X; + Border.Y := Y; + end; + +begin + if (ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + if (ViewType and TVT_FLOATING) = TVT_FLOATING then + begin + Resizable := (ViewType and TVT_RESIZABLE) = TVT_RESIZABLE; + Border.X := GetSystemMetrics(XMetrics[Resizable]) - 1; + Border.Y := GetSystemMetrics(YMetrics[Resizable]) - 1; + end + else SetBorder(2, 2); + end + else if (ViewType and VT_POPUP) = VT_POPUP then + begin + if (ViewType and PVT_POPUPMENU) = PVT_POPUPMENU then Border.X := 1 + else Border.X := 2; + Border.Y := 2; + end + else if (ViewType and VT_DOCKPANEL) = VT_DOCKPANEL then + begin + if (ViewType and DPVT_FLOATING) = DPVT_FLOATING then + begin + Resizable := (ViewType and DPVT_RESIZABLE) = DPVT_RESIZABLE; + Border.X := GetSystemMetrics(XMetrics[Resizable]) - 1; + Border.Y := GetSystemMetrics(YMetrics[Resizable]) - 1; + end + else SetBorder(2, 2); + end + else SetBorder(0, 0); +end; + +procedure TTBXOffice2003Theme.GetMargins(MarginID: Integer; out Margins: TTBXMargins); +begin + with Margins do + case MarginID of + MID_TOOLBARITEM: + begin + LeftWidth := 2; RightWidth := 2; + TopHeight := 2; BottomHeight := 2; + end; + MID_MENUITEM: + begin + LeftWidth := 1; RightWidth := 1; + TopHeight := 3; BottomHeight := 3; + end; + MID_STATUSPANE: + begin + LeftWidth := 1; RightWidth := 3; + TopHeight := 1; BottomHeight := 1; + end; + else + LeftWidth := 0; + RightWidth := 0; + TopHeight := 0; + BottomHeight := 0; + end; +end; + +procedure TTBXOffice2003Theme.PaintBackgnd(Canvas: TCanvas; const ADockRect, ARect, AClipRect: TRect; + AColor: TColor; Transparent: Boolean; AViewType: Integer); +var + DC: HDC; + R: TRect; + Horz: Boolean; +begin + DC := Canvas.Handle; + if not Transparent then + begin + IntersectRect(R, ARect, AClipRect); + if ((AViewType and TVT_NORMALTOOLBAR = TVT_NORMALTOOLBAR) or (AViewType and TVT_TOOLWINDOW = TVT_TOOLWINDOW)) and not (AViewType and TVT_EMBEDDED = TVT_EMBEDDED) then + begin + if IsRectEmpty(ADockRect) then + Horz := (ARect.Right > ARect.Bottom) + else + Horz := Abs(R.Right - R.Left) > Abs(R.Bottom - R.Top); + PaintIrregularGradient(Canvas.Handle, R, ToolbarColor1, ToolbarColor2, not Horz); + end + else + FillRectEx(DC, R, AColor); + end; +end; + +procedure TTBXOffice2003Theme.PaintCaption(Canvas: TCanvas; + const ARect: TRect; const ItemInfo: TTBXItemInfo; const ACaption: string; + AFormat: Cardinal; Rotated: Boolean); +var + R: TRect; +begin + with ItemInfo, Canvas do + begin + R := ARect; + Brush.Style := bsClear; + if Font.Color = clNone then Font.Color := GetPartColor(ItemInfo, ipText); + if not Rotated then Windows.DrawText(Handle, PChar(ACaption), Length(ACaption), R, AFormat) + else DrawRotatedText(Handle, ACaption, R, AFormat); + Brush.Style := bsSolid; + end; +end; + +procedure TTBXOffice2003Theme.PaintCheckMark(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); +var + DC: HDC; + X, Y: Integer; + C: TColor; +begin + DC := Canvas.Handle; + X := (ARect.Left + ARect.Right) div 2 - 2; + Y := (ARect.Top + ARect.Bottom) div 2 + 1; + C := GetBtnColor(ItemInfo, ipText); + if ItemInfo.ItemOptions and IO_RADIO > 0 then + begin + RoundRectEx(DC, X - 1, Y - 4, X + 5, Y + 2, 2, 2, MixColors(C, ToolbarColor1, 200), clNone); + RoundRectEx(DC, X - 1, Y - 4, X + 5, Y + 2, 6, 6, C, C); + end + else + PolylineEx(DC, [Point(X - 2, Y - 2), Point(X, Y), Point(X + 4, Y - 4), + Point(X + 4, Y - 3), Point(X, Y + 1), Point(X - 2, Y - 1), Point(X - 2, Y - 2)], C); +end; + +procedure TTBXOffice2003Theme.PaintChevron(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); +const + Pattern: array[Boolean, 0..15] of Byte = ( + ($CC, 0, $66, 0, $33, 0, $66, 0, $CC, 0, 0, 0, 0, 0, 0, 0), + ($88, 0, $D8, 0, $70, 0, $20, 0, $88, 0, $D8, 0, $70, 0, $20, 0)); +var + R2: TRect; + W, H: Integer; +begin + R2 := ARect; + PaintButton(Canvas, ARect, ItemInfo); + if not ItemInfo.IsVertical then + begin + Inc(R2.Top, 4); + R2.Bottom := R2.Top + 5; + W := 8; + H := 5; + end + else + begin + R2.Left := R2.Right - 9; + R2.Right := R2.Left + 5; + W := 5; + H := 8; + end; + DrawGlyph(Canvas.Handle, R2, W, H, Pattern[ItemInfo.IsVertical][0], GetPartColor(ItemInfo, ipText)); +end; + +procedure TTBXOffice2003Theme.PaintEditButton(Canvas: TCanvas; const ARect: TRect; + var ItemInfo: TTBXItemInfo; ButtonInfo: TTBXEditBtnInfo); +var + DC: HDC; + BtnDisabled, BtnHot, BtnPressed, Embedded: Boolean; + R, BR: TRect; + X, Y: Integer; + SaveItemInfoPushed: Boolean; + C: TColor; +begin + DC := Canvas.Handle; + R := ARect; + Embedded := ((ItemInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR) and + ((ItemInfo.ViewType and TVT_EMBEDDED) = TVT_EMBEDDED); + + InflateRect(R, 1, 1); + Inc(R.Left); + with Canvas do + if ButtonInfo.ButtonType = EBT_DROPDOWN then + begin + BtnDisabled := (ButtonInfo.ButtonState and EBDS_DISABLED) <> 0; + BtnHot := (ButtonInfo.ButtonState and EBDS_HOT) <> 0; + BtnPressed := (ButtonInfo.ButtonState and EBDS_PRESSED) <> 0; + if not BtnDisabled then + begin + if BtnPressed or BtnHot or Embedded then PaintButton(Canvas, R, ItemInfo) + else if (ItemInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + R := ARect; + if not Embedded then + begin + FrameRectEx(DC, R, clWindow, False); + C := clWindow; + end + else C := GetBtnColor(ItemInfo, ipFrame); + DrawLineEx(DC, R.Left - 1, R.Top, R.Left - 1, R.Bottom, C); + end; + end; + PaintDropDownArrow(Canvas, R, ItemInfo); + end + else if ButtonInfo.ButtonType = EBT_SPIN then + begin + BtnDisabled := (ButtonInfo.ButtonState and EBSS_DISABLED) <> 0; + BtnHot := (ButtonInfo.ButtonState and EBSS_HOT) <> 0; + + { Upper button } + BR := R; + BR.Bottom := (R.Top + R.Bottom + 1) div 2; + BtnPressed := (ButtonInfo.ButtonState and EBSS_UP) <> 0; + SaveItemInfoPushed := ItemInfo.Pushed; + ItemInfo.Pushed := BtnPressed; + if not BtnDisabled then + begin + if BtnPressed or BtnHot or Embedded then PaintButton(Canvas, BR, ItemInfo) + else if (ItemInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + BR.Left := ARect.Left; BR.Top := ARect.Top; BR.Right := ARect.Right; + if not Embedded then + begin + FrameRectEx(DC, BR, clWindow, False); + C := clWindow; + end + else C := GetBtnColor(ItemInfo, ipFrame); + DrawLineEx(DC, BR.Left - 1, BR.Top, BR.Left - 1, BR.Bottom, C); + end; + end; + X := (BR.Left + BR.Right) div 2; + Y := (BR.Top + BR.Bottom - 1) div 2; + Pen.Color := GetPartColor(ItemInfo, ipText); + Brush.Color := Pen.Color; + Polygon([Point(X - 2, Y + 1), Point(X + 2, Y + 1), Point(X, Y - 1)]); + + { Lower button } + BR := R; + BR.Top := (R.Top + R.Bottom) div 2; + BtnPressed := (ButtonInfo.ButtonState and EBSS_DOWN) <> 0; + ItemInfo.Pushed := BtnPressed; + if not BtnDisabled then + begin + if BtnPressed or BtnHot or Embedded then PaintButton(Canvas, BR, ItemInfo) + else if (ItemInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + BR.Left := ARect.Left; BR.Bottom := ARect.Bottom; BR.Right := ARect.Right; + if not Embedded then + begin + FrameRectEx(DC, BR, clWindow, False); + C := clWindow; + end + else C := GetBtnColor(ItemInfo, ipFrame); + DrawLineEx(DC, BR.Left - 1, BR.Top, BR.Left - 1, BR.Bottom, C); + end; + end; + X := (BR.Left + BR.Right) div 2; + Y := (BR.Top + BR.Bottom) div 2; + C := GetPartColor(ItemInfo, ipText); + PolygonEx(DC, [Point(X - 2, Y - 1), Point(X + 2, Y - 1), Point(X, Y + 1)], C, C); + + ItemInfo.Pushed := SaveItemInfoPushed; + end; +end; + +procedure TTBXOffice2003Theme.PaintEditFrame(Canvas: TCanvas; + const ARect: TRect; var ItemInfo: TTBXItemInfo; const EditInfo: TTBXEditInfo); +var + DC: HDC; + R: TRect; + W: Integer; + Embedded: Boolean; +begin + DC := Canvas.Handle; + R := ARect; + PaintFrame(Canvas, R, ItemInfo); + W := EditFrameWidth; + InflateRect(R, -W, -W); + Embedded := ((ItemInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR) and + ((ItemInfo.ViewType and TVT_EMBEDDED) = TVT_EMBEDDED); + if not (ItemInfo.Enabled or Embedded) then + FrameRectEx(DC, R, BtnItemColors[bisDisabled, ipText], False); + + with EditInfo do if RightBtnWidth > 0 then Dec(R.Right, RightBtnWidth - 2); + + if ItemInfo.Enabled then + begin + if ((ItemInfo.ViewType and VT_TOOLBAR) <> VT_TOOLBAR) and (GetPartColor(ItemInfo, ipFrame) = clNone) then + FrameRectEx(DC, R, ToolbarColor2, False) + else + FrameRectEx(DC, R, clWindow, False); + + InflateRect(R, -1, -1); + FillRectEx(DC, R, clWindow); + if ((ItemInfo.ViewType and VT_TOOLBAR) <> VT_TOOLBAR) and (GetPartColor(ItemInfo, ipFrame) = clNone) then + begin + R := ARect; + InflateRect(R, -1, -1); + FrameRectEx(DC, R, ToolbarColor2, False); + end; + end + else InflateRect(R, -1, -1); + + with EditInfo do if LeftBtnWidth > 0 then Inc(R.Left, LeftBtnWidth - 2); + + if EditInfo.RightBtnWidth > 0 then + begin + R := ARect; + InflateRect(R, -W, -W); + R.Left := R.Right - EditInfo.RightBtnWidth; + PaintEditButton(Canvas, R, ItemInfo, EditInfo.RightBtnInfo); + end; +end; + +procedure TTBXOffice2003Theme.PaintDropDownArrow(Canvas: TCanvas; + const ARect: TRect; const ItemInfo: TTBXItemInfo); +var + X, Y: Integer; +begin + with ARect, Canvas do + begin + X := (Left + Right) div 2; + Y := (Top + Bottom) div 2 - 1; + Pen.Color := GetPartColor(ItemInfo, ipText); + Brush.Color := Pen.Color; + if ItemInfo.IsVertical then Polygon([Point(X, Y + 2), Point(X, Y - 2), Point(X - 2, Y)]) + else Polygon([Point(X - 2, Y), Point(X + 2, Y), Point(X, Y + 2)]); + end; +end; + +procedure TTBXOffice2003Theme.PaintButton(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); +var + DC: HDC; + R: TRect; + tmpColor1, tmpColor2: TColor; +begin + DC := Canvas.Handle; + with ItemInfo do + begin + R := ARect; + if ((ItemOptions and IO_DESIGNING) <> 0) and not Selected then + begin + if ComboPart = cpSplitRight then Dec(R.Left); + FrameRectEx(DC, R, clNavy, False); + end + else + begin + FrameRectEx(DC, R, GetBtnColor(ItemInfo, ipFrame), True); + if (ComboPart = cpSplitLeft) and IsPopupParent then Inc(R.Right); + if ComboPart = cpSplitRight then Dec(R.Left); + + tmpColor1 := GetBtnColor(ItemInfo, ipBody); + tmpColor2 := GetBtnColor(ItemInfo, ipBody, True); + + if (ItemInfo.ViewType and VT_POPUP = VT_POPUP) or (ItemInfo.ViewType and VT_TOOLBAR = VT_TOOLBAR) and (ItemInfo.ViewType and TVT_EMBEDDED = TVT_EMBEDDED) then + FillRectEx(DC, R, tmpColor1) + else if (tmpColor1 <> clNone) and (tmpColor2 <> clNone) then + PaintGradient(DC, R, tmpColor1, tmpColor2); + end; + if ComboPart = cpSplitRight then PaintDropDownArrow(Canvas, R, ItemInfo); + end; +end; + +procedure TTBXOffice2003Theme.PaintFloatingBorder(Canvas: TCanvas; const ARect: TRect; + const WindowInfo: TTBXWindowInfo); + + function GetBtnItemState(BtnState: Integer): TBtnItemState; + begin + if not WindowInfo.Active then Result := bisDisabled + else if (BtnState and CDBS_PRESSED) <> 0 then Result := bisPressed + else if (BtnState and CDBS_HOT) <> 0 then Result := bisHot + else Result := bisNormal; + end; + +var + BtnItemState: TBtnItemState; + SaveIndex, X, Y: Integer; + Sz: TPoint; + R: TRect; + BodyColor, CaptionColor, CaptionText: TColor; + IsDockPanel: Boolean; +begin + with Canvas do + begin + IsDockPanel := (WindowInfo.ViewType and VT_DOCKPANEL) = VT_DOCKPANEL; + BodyColor := Brush.Color; + + if (WRP_BORDER and WindowInfo.RedrawPart) <> 0 then + begin + R := ARect; + + if not IsDockPanel then Brush.Color := WinFrameColors[wfpBorder] + else Brush.Color := WinFrameColors[wfpBorder]; + + SaveIndex := SaveDC(Canvas.Handle); + Sz := WindowInfo.FloatingBorderSize; + with R, Sz do ExcludeClipRect(Canvas.Handle, Left + X, Top + Y, Right - X, Bottom - Y); + FillRect(R); + RestoreDC(Canvas.Handle, SaveIndex); + InflateRect(R, -Sz.X, -Sz.Y); + Pen.Color := BodyColor; + with R do + if not IsDockPanel then + Canvas.Polyline([ + Point(Left, Top - 1), Point(Right - 1, Top - 1), + Point(Right, Top), Point(Right, Bottom - 1), + Point(Right - 1, Bottom), + Point(Left, Bottom), Point(Left - 1, Bottom - 1), + Point(Left - 1, Top), Point(Left, Top - 1) + ]) + else + Canvas.Polyline([ + Point(Left, Top - 1), Point(Right - 1, Top - 1), + Point(Right, Top), Point(Right, Bottom), + Point(Left - 1, Bottom), + Point(Left - 1, Top), Point(Left, Top - 1) + ]); + end; + + if not WindowInfo.ShowCaption then Exit; + + if (WindowInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + CaptionColor := WinFrameColors[wfpCaption]; + CaptionText := WinFrameColors[wfpCaptionText]; + end + else + begin + CaptionColor := WinFrameColors[wfpCaption]; + CaptionText := WinFrameColors[wfpCaptionText]; + end; + + { Caption } + if (WRP_CAPTION and WindowInfo.RedrawPart) <> 0 then + begin + R := Rect(0, 0, WindowInfo.ClientWidth, GetSystemMetrics(SM_CYSMCAPTION) - 1); + with WindowInfo.FloatingBorderSize do OffsetRect(R, X, Y); + DrawLineEx(Canvas.Handle, R.Left, R.Bottom, R.Right, R.Bottom, BodyColor); + + if ((CDBS_VISIBLE and WindowInfo.CloseButtonState) <> 0) and + ((WRP_CLOSEBTN and WindowInfo.RedrawPart) <> 0) then + Dec(R.Right, GetSystemMetrics(SM_CYSMCAPTION) - 1); + + Brush.Color := CaptionColor; + FillRect(R); + InflateRect(R, -2, 0); + Font.Assign(SmCaptionFont); + Font.Color := CaptionText; + DrawText(Canvas.Handle, WindowInfo.Caption, -1, R, + DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS or DT_NOPREFIX); + end; + + { Close button } + if (CDBS_VISIBLE and WindowInfo.CloseButtonState) <> 0 then + begin + R := Rect(0, 0, WindowInfo.ClientWidth, GetSystemMetrics(SM_CYSMCAPTION) - 1); + with WindowInfo.FloatingBorderSize do OffsetRect(R, X, Y); + R.Left := R.Right - (R.Bottom - R.Top); + DrawLineEx(Canvas.Handle, R.Left - 1, R.Bottom, R.Right, R.Bottom, BodyColor); + Brush.Color := CaptionColor; + FillRect(R); + with R do + begin + X := (Left + Right - StockImgList.Width + 1) div 2; + Y := (Top + Bottom - StockImgList.Height) div 2; + end; + BtnItemState := GetBtnItemState(WindowInfo.CloseButtonState); + FrameRectEx(Canvas.Handle, R, BtnItemColors[BtnItemState, ipFrame], True); + if FillRectEx(Canvas.Handle, R, BtnBodyColors[BtnItemState, False]) then + DrawGlyph(Canvas.Handle, X, Y, StockImgList, 0, BtnItemColors[BtnItemState, ipText]) + else + DrawGlyph(Canvas.Handle, X, Y, StockImgList, 0, CaptionText); + end; + end; +end; + +procedure TTBXOffice2003Theme.PaintFrame(Canvas: TCanvas; const ARect: TRect; + const ItemInfo: TTBXItemInfo); +var + DC: HDC; + R: TRect; +begin + DC := Canvas.Handle; + R := ARect; + FrameRectEx(DC, R, GetPartColor(ItemInfo, ipFrame), True); + FillRectEx(DC, R, GetPartColor(ItemInfo, ipBody)); +end; + +function TTBXOffice2003Theme.GetImageOffset(Canvas: TCanvas; + const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList): TPoint; +begin + Result.X := 0; + Result.Y := 0; +end; + +procedure TTBXOffice2003Theme.PaintImage(Canvas: TCanvas; ARect: TRect; + const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList; ImageIndex: Integer); +var + HiContrast: Boolean; +begin + with ItemInfo do + begin + if ImageList is TTBCustomImageList then + begin + TTBCustomImageList(ImageList).DrawState(Canvas, ARect.Left, ARect.Top, + ImageIndex, Enabled, (HoverKind <> hkNone), Selected); + Exit; + end; + + HiContrast := ColorIntensity(GetItemImageBackground(ItemInfo)) < 80; + if not Enabled then + begin + if not HiContrast then + DrawTBXIconShadow(Canvas, ARect, ImageList, ImageIndex, 0) + else + DrawTBXIconFlatShadow(Canvas, ARect, ImageList, ImageIndex, SeparatorColor1); + end + else {$IFDEF HIGHLIGHTTOOLBARICONS}if Selected or Pushed or (HoverKind <> hkNone) or HiContrast or TBXHiContrast or TBXLoColor then{$ENDIF} + DrawTBXIcon(Canvas, ARect, ImageList, ImageIndex, HiContrast) + {$IFDEF HIGHLIGHTTOOLBARICONS} + else + HighlightTBXIcon(Canvas, ARect, ImageList, ImageIndex, clWindow, 178){$ENDIF}; + end; +end; + +procedure TTBXOffice2003Theme.PaintMDIButton(Canvas: TCanvas; ARect: TRect; + const ItemInfo: TTBXItemInfo; ButtonKind: Cardinal); +var + Index: Integer; +begin + PaintButton(Canvas, ARect, ItemInfo); + Dec(ARect.Bottom); + case ButtonKind of + DFCS_CAPTIONMIN: Index := 2; + DFCS_CAPTIONRESTORE: Index := 3; + DFCS_CAPTIONCLOSE: Index := 0; + else + Exit; + end; + DrawGlyph(Canvas.Handle, ARect, StockImgList, Index, GetPartColor(ItemInfo, ipText)); +end; + +procedure TTBXOffice2003Theme.PaintMenuItemFrame(Canvas: TCanvas; + const ARect: TRect; const ItemInfo: TTBXItemInfo); +var + R: TRect; +begin + R := ARect; + if (ItemInfo.ViewType and PVT_TOOLBOX) <> PVT_TOOLBOX then with Canvas do + begin + R.Right := R.Left + ItemInfo.PopupMargin + 2; + PaintIrregularGradient(Handle, R, ToolbarColor1, ToolbarColor2, True); + Inc(R.Left); + R.Right := ARect.Right - 1; + end; + PaintFrame(Canvas, R, ItemInfo); +end; + +procedure TTBXOffice2003Theme.PaintMenuItem(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo); +var + DC: HDC; + R: TRect; + X, Y: Integer; + ArrowWidth: Integer; + C, ClrText: TColor; +begin + DC := Canvas.Handle; + with ItemInfo do + begin + ArrowWidth := GetSystemMetrics(SM_CXMENUCHECK); + PaintMenuItemFrame(Canvas, ARect, ItemInfo); + ClrText := GetPartColor(ItemInfo, ipText); + R := ARect; + + if (ItemOptions and IO_COMBO) <> 0 then + begin + X := R.Right - ArrowWidth - 1; + if not ItemInfo.Enabled then C := ClrText + else if HoverKind = hkMouseHover then C := GetPartColor(ItemInfo, ipFrame) + else C := PopupFrameColor; + DrawLineEx(DC, X, R.Top + 1, X, R.Bottom - 1, C); + end; + + if (ItemOptions and IO_SUBMENUITEM) <> 0 then + begin + Y := ARect.Bottom div 2; + X := ARect.Right - ArrowWidth * 2 div 3 - 1; + PolygonEx(DC, [Point(X, Y - 3), Point(X, Y + 3), Point(X + 3, Y)], ClrText, ClrText); + end; + + if Selected and Enabled then + begin + R := ARect; + R.Left := ARect.Left + 1; + R.Right := R.Left + ItemInfo.PopupMargin; + InflateRect(R, -1, -1); + FrameRectEx(DC, R, GetBtnColor(ItemInfo, ipFrame), True); + FillRectEx(DC, R, GetBtnColor(ItemInfo, ipBody)); + end; + end; +end; + +procedure TTBXOffice2003Theme.PaintPopupNCArea(Canvas: TCanvas; R: TRect; const PopupInfo: TTBXPopupInfo); +var + PR: TRect; +begin + with Canvas do + begin + Brush.Color := PopupFrameColor; + FrameRect(R); + InflateRect(R, -1, -1); + Brush.Color := PopupColor; + FillRect(R); + + if not IsRectEmpty(PopupInfo.ParentRect) then + begin + PR := PopupInfo.ParentRect; + if not IsRectEmpty(PR) then with PR do + begin + Pen.Color := PopupColor; + if Bottom = R.Top then + begin + if Left <= R.Left then Left := R.Left - 1; + if Right >= R.Right then Right := R.Right + 1; + MoveTo(Left + 1, Bottom - 1); LineTo(Right - 1, Bottom - 1); + end + else if Top = R.Bottom then + begin + if Left <= R.Left then Left := R.Left - 1; + if Right >= R.Right then Right := R.Right + 1; + MoveTo(Left + 1, Top); LineTo(Right - 1, Top); + end; + if Right = R.Left then + begin + if Top <= R.Top then Top := R.Top - 1; + if Bottom >= R.Bottom then Bottom := R.Bottom + 1; + MoveTo(Right - 1, Top + 1); LineTo(Right - 1, Bottom - 1); + end + else if Left = R.Right then + begin + if Top <= R.Top then Top := R.Top - 1; + if Bottom >= R.Bottom then Bottom := R.Bottom + 1; + MoveTo(Left, Top + 1); LineTo(Left, Bottom - 1); + end; + end; + end; + end; +end; + +procedure TTBXOffice2003Theme.PaintSeparator(Canvas: TCanvas; ARect: TRect; + ItemInfo: TTBXItemInfo; Horizontal, LineSeparator: Boolean); +var + DC: HDC; + IsToolbox: Boolean; + R: TRect; + NewWidth: Integer; +begin + { Note: for blank separators, Enabled = False } + DC := Canvas.Handle; + with ItemInfo, ARect do + begin + if Horizontal then + begin + IsToolbox := (ViewType and PVT_TOOLBOX) = PVT_TOOLBOX; + if ((ItemOptions and IO_TOOLBARSTYLE) = 0) and not IsToolBox then + begin + R := ARect; + R.Right := ItemInfo.PopupMargin + 2; + PaintIrregularGradient(DC, R, ToolbarColor1, ToolbarColor2, True); + Inc(Left, ItemInfo.PopupMargin + 9); + Top := (Top + Bottom) div 2; + if Enabled then DrawLineEx(DC, Left, Top, Right, Top, SeparatorColor1); + end + else + begin + Top := (Top + Bottom) div 2; + Right := Right + 1; + NewWidth := Round(0.6 * (Right - Left)); + Left := (Right - Left - NewWidth) div 2; + Right := Left + NewWidth; + if Enabled then + begin + DrawLineEx(DC, Left, Top, Right, Top, SeparatorColor1); + OffsetRect(ARect, 1, 1); + DrawLineEx(DC, Left, Top, Right, Top, SeparatorColor2); + end; + end; + end + else if Enabled then + begin + Left := (Left + Right) div 2; + Bottom := Bottom + 1; + NewWidth := Round(0.6 * (Bottom - Top)); + Top := (Bottom - Top - NewWidth) div 2; + Bottom := Top + NewWidth; + DrawLineEx(DC, Left, Top, Left, Bottom, SeparatorColor1); + OffsetRect(ARect, 1, 1); + DrawLineEx(DC, Left, Top, Left, Bottom, SeparatorColor2); + end; + end; +end; + +procedure DrawButtonBitmap(DC: HDC; R: TRect; Color: TColor); +const +{$IFNDEF SMALL_CLOSE_BUTTON} + Pattern: array [0..15] of Byte = + ($C3, 0, $66, 0, $3C, 0, $18, 0, $3C, 0, $66, 0, $C3, 0, 0, 0); +{$ELSE} + Pattern: array [0..15] of Byte = + (0, 0, $63, 0, $36, 0, $1C, 0, $1C, 0, $36, 0, $63, 0, 0, 0); +{$ENDIF} +begin + DrawGlyph(DC, R, 8, 7, Pattern[0], Color); +end; + +procedure TTBXOffice2003Theme.PaintToolbarNCArea(Canvas: TCanvas; R: TRect; const ToolbarInfo: TTBXToolbarInfo); +const + DragHandleOffsets: array [Boolean, DHS_DOUBLE..DHS_SINGLE] of Integer = ((2, 0, 1), (5, 0, 5)); + + function GetBtnItemState(BtnState: Integer): TBtnItemState; + begin + if (BtnState and CDBS_PRESSED) <> 0 then Result := bisPressed + else if (BtnState and CDBS_HOT) <> 0 then Result := bisHot + else Result := bisNormal; + end; + + procedure DrawHandleElement(const P: TPoint); + begin + Canvas.Brush.Color := DragHandleColor2; + Canvas.FillRect(Rect(P.X + 1, P.Y + 1, P.X + 3, P.Y + 3)); + Canvas.Brush.Color := DragHandleColor1; + Canvas.FillRect(Rect(P.X, P.Y, P.X + 2, P.Y + 2)); + end; + +var + DC: HDC; + Sz: Integer; + R2: TRect; + I: Integer; + BtnVisible, Horz: Boolean; + BtnItemState: TBtnItemState; + IsMenuBar: Boolean; +begin + DC := Canvas.Handle; + Horz := not ToolbarInfo.IsVertical; + with Canvas do + begin + IsMenuBar := ToolbarInfo.ViewType and TVT_MENUBAR = TVT_MENUBAR; + if (ToolbarInfo.BorderStyle = bsSingle) and not IsMenuBar then + begin + I := ColorIntensity(clBtnFace); + if not (TBXLoColor or not (I in [50..254])) then + begin + InflateRect(R, -1, -1); + Pen.Style := psSolid; + with R do + begin + if Horz then + begin + {left} + PaintIrregularGradient(Handle, Rect(Left, Top + 1, Left + 1, Bottom - 1), ToolbarColor1, ToolbarColor2, False); + + {right} + PaintIrregularGradient(Handle, Rect(Right - 1, Top + 1, Right, Bottom - 1), ToolbarColor1, ToolbarColor2, False); + PaintIrregularGradient(Handle, Rect(Right, Top + 1, Right + 1, Bottom - 1), ToolbarColor2, ToolbarFrameColor1, False); + + {top} + Pen.Color := ToolbarColor1; + Polyline([Point(Left + 2, Top), Point(Right - 1, Top)]); + + {bottom} + Pen.Color := ToolbarColor2; + Polyline([Point(Left + 1, Bottom - 1), Point(Right - 1, Bottom - 1)]); + Pen.Color := ToolbarFrameColor1; + Polyline([Point(Left + 2, Bottom), Point(Right - 1, Bottom)]); + + {pixels} + SetPixelV(Handle, Left + 1, Top, ToolbarFrameColor2); + SetPixelV(Handle, Left, Top + 1, ToolbarFrameColor2); + SetPixelV(Handle, Right - 1, Top, ToolbarFrameColor2); + SetPixelV(Handle, Right, Top + 1, ToolbarFrameColor2); + SetPixelV(Handle, Right - 1, Bottom - 1, ToolbarFrameColor1); + end + else + begin + {left} + Pen.Color := ToolbarColor1; + Polyline([Point(Left, Top + 2), Point(Left, Bottom - 1)]); + + {right} + Pen.Color := ToolbarColor2; + Polyline([Point(Right - 1, Top + 1), Point(Right - 1, Bottom - 1)]); + Pen.Color := ToolbarFrameColor1; + Polyline([Point(Right, Top + 2), Point(Right, Bottom - 1)]); + + {top} + PaintIrregularGradient(Handle, Rect(Left + 1, Top, Right - 1, Top + 1), ToolbarColor1, ToolbarColor2, True); + + {bottom} + PaintIrregularGradient(Handle, Rect(Left + 2, Bottom - 1, Right - 1, Bottom), ToolbarColor1, ToolbarColor2, True); + PaintIrregularGradient(Handle, Rect(Left + 2, Bottom, Right - 1, Bottom + 1), ToolbarColor2, ToolbarFrameColor1, True); + + {pixels} + SetPixelV(Handle, Left + 1, Top, ToolbarFrameColor2); + SetPixelV(Handle, Left, Top + 1, ToolbarFrameColor2); + SetPixelV(Handle, Left + 1, Bottom - 1, ToolbarColor2); + SetPixelV(Handle, Left, Bottom - 2, ToolbarFrameColor2); + SetPixelV(Handle, Right - 1, Bottom - 1, ToolbarFrameColor1); + end; + end; + Brush.Style := bsSolid; + Inc(R.Left); + Inc(R.Top); + end + else + begin + Brush.Bitmap := AllocPatternBitmap(ToolbarColor1, BtnItemColors[bisDisabled, ipText]); + with R do + begin + FillRect(Rect(Left + 1, Top, Right - 1, Top + 1)); + FillRect(Rect(Left + 1, Bottom - 1, Right - 1, Bottom)); + FillRect(Rect(Left, Top + 1, Left + 1, Bottom - 1)); + FillRect(Rect(Right - 1, Top + 1, Right, Bottom - 1)); + end; + InflateRect(R, -1, -1); + Brush.Color := ToolbarColor1; + FillRect(R); + end; + end + else + InflateRect(R, -1, -1); + InflateRect(R, -1, -1); + + if not ToolbarInfo.AllowDrag then Exit; + + BtnVisible := (ToolbarInfo.CloseButtonState and CDBS_VISIBLE) <> 0; + Sz := GetTBXDragHandleSize(ToolbarInfo); + if Horz then R.Right := R.Left + Sz + else R.Bottom := R.Top + Sz; + + { Drag Handle } + if ToolbarInfo.DragHandleStyle <> DHS_NONE then + begin + R2 := R; + if Horz then + begin + Inc(R2.Left, DragHandleOffsets[BtnVisible, ToolbarInfo.DragHandleStyle]); + if BtnVisible then Inc(R2.Top, Sz - 2); + R2.Right := R2.Left + 3; + end + else + begin + Inc(R2.Top, DragHandleOffsets[BtnVisible, ToolbarInfo.DragHandleStyle]); + if BtnVisible then Dec(R2.Right, Sz - 2); + R2.Bottom := R2.Top + 3; + end; + + if not IsMenuBar then + PaintIrregularGradient(Canvas.Handle, Rect(R.Left - 1, R.Top - 1, R.Right, R.Bottom), ToolbarColor1, ToolbarColor2, not Horz) + else + begin + Inc(R2.Left); + Inc(R2.Top); + end; + + if Horz then + begin + I := R2.Top + Sz div 2; + while I < R2.Bottom - Sz div 2 - 2 do + begin + DrawHandleElement(Point(R2.Left, I)); + Inc(I, 4); + end; + end + else + begin + I := R2.Left + Sz div 2; + while I < R2.Right - Sz div 2 - 2 do + begin + DrawHandleElement(Point(I, R2.Top)); + Inc(I, 4); + end; + end; + end; + + { Close button } + if BtnVisible then + begin + R2 := R; + if Horz then + begin + Dec(R2.Right); + R2.Bottom := R2.Top + R2.Right - R2.Left; + end + else + begin + Dec(R2.Bottom); + R2.Left := R2.Right - R2.Bottom + R2.Top; + end; + + BtnItemState := GetBtnItemState(ToolbarInfo.CloseButtonState); + FrameRectEx(DC, R2, BtnItemColors[BtnItemState, ipFrame], True); + FillRectEx(DC, R2, BtnBodyColors[BtnItemState, False]); + DrawButtonBitmap(DC, R2, BtnItemColors[BtnItemState, ipText]); + end; + end; +end; + +procedure TTBXOffice2003Theme.PaintDock(Canvas: TCanvas; const ClientRect, + DockRect: TRect; DockPosition: Integer); +begin + FillRectEx(Canvas.Handle, DockRect, DockColor); +end; + +procedure TTBXOffice2003Theme.PaintDockPanelNCArea(Canvas: TCanvas; R: TRect; const DockPanelInfo: TTBXDockPanelInfo); + + function GetBtnItemState(BtnState: Integer): TBtnItemState; + begin + if (BtnState and CDBS_PRESSED) <> 0 then Result := bisPressed + else if (BtnState and CDBS_HOT) <> 0 then Result := bisHot + else Result := bisNormal; + end; + +var + DC: HDC; + C: TColor; + I, Sz, Flags: Integer; + R2: TRect; + BtnItemState: TBtnItemState; + B: HBRUSH; + OldBkMode: Cardinal; + OldFont: HFONT; + OldTextColor: TColorRef; +begin + DC := Canvas.Handle; + with DockPanelInfo do + begin + I := ColorIntensity(ColorToRGB(clBtnFace)); + R2 := R; + if not TBXLoColor and (I in [64..250]) then + begin + FrameRectEx(DC, R, ToolbarColor2, True); + FrameRectEx(DC, R, EffectiveColor, False); + with R do + begin + C := ToolbarColor2; + SetPixelV(DC, Left, Top, C); + if IsVertical then SetPixelV(DC, Right - 1, Top, C) + else SetPixelV(DC, Left, Bottom - 1, C); + end; + end + else + begin + FrameRectEx(DC, R, EffectiveColor, True); + + if I < 64 then B := CreateDitheredBrush(EffectiveColor, clWhite) + else B := CreateDitheredBrush(EffectiveColor, clBtnShadow); + Windows.FrameRect(DC, R, B); + DeleteObject(B); + + with R do + begin + SetPixelV(DC, Left, Top, EffectiveColor); + if IsVertical then SetPixelV(DC, Right - 1, Top, EffectiveColor) + else SetPixelV(DC, Left, Bottom - 1, EffectiveColor); + end; + InflateRect(R, -1, -1); + FrameRectEx(DC, R, EffectiveColor, False); + end; + R := R2; + InflateRect(R, -BorderSize.X, -BorderSize.Y); + Sz := GetSystemMetrics(SM_CYSMCAPTION); + if IsVertical then + begin + R.Bottom := R.Top + Sz - 1; + DrawLineEx(DC, R.Left, R.Bottom, R.Right, R.Bottom, EffectiveColor); + end + else + begin + R.Right := R.Left + Sz - 1; + DrawLineEx(DC, R.Right, R.Top, R.Right, R.Bottom, EffectiveColor); + end; + {$IFDEF DOCKPANELGRADIENTCAPTION} + PaintGradient(DC, R, ToolbarColor1, ToolbarColor2); + {$ELSE} + FillRectEx(DC, R, DockColor); + {$ENDIF} + + if (CDBS_VISIBLE and CloseButtonState) <> 0 then + begin + R2 := R; + if IsVertical then + begin + R2.Left := R2.Right - Sz + 1; + R.Right := R2.Left; + end + else + begin + R2.Top := R2.Bottom - Sz + 1; + R.Bottom := R2.Top; + end; + + BtnItemState := GetBtnItemState(CloseButtonState); + FrameRectEx(DC, R2, BtnItemColors[BtnItemState, ipFrame], True); + FillRectEx(DC, R2, BtnBodyColors[BtnItemState, False]); + DrawButtonBitmap(DC, R2, BtnItemColors[BtnItemState, ipText]); + end; + + if IsVertical then InflateRect(R, -4, 0) + else InflateRect(R, 0, -4); + + OldFont := SelectObject(DC, SmCaptionFont.Handle); + OldBkMode := SetBkMode(DC, TRANSPARENT); + OldTextColor := SetTextColor(DC, ColorToRGB(SmCaptionFont.Color)); + Flags := DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS or DT_NOPREFIX; + if IsVertical then DrawText(DC, Caption, -1, R, Flags) + else DrawRotatedText(DC, string(Caption), R, Flags); + SetTextColor(DC, OldTextColor); + SetBkMode(DC, OldBkMode); + SelectObject(DC, OldFont); + end; +end; + +procedure TTBXOffice2003Theme.SetupColorCache; +const + Office2003Colors: array[osBlue..osGreen, 0..27] of TColor = ( + ($F5BE9E, $FEECDD, $E2A981, $9C613B, $FAD5BD, $CB8C6A, $FFF9F1, $764127, + $FFFFFF, $F0C7A9, $B99D7F, $DEDEDE, $F6F6F6, $962D00, $000000, $8D8D8D, + $800000, $C9662A, $8CD5FF, $55ADFF, $4E91FE, $8ED3FF, $CCF4FF, $91D0FF, + $FFEFE3, $E7B593, $C2EEFF, $AE9990), + ($E5D7D7, $FAF4F3, $B59799, $947C7C, $EFE5E5, $8F6D6E, $FFFFFF, $755454, + $FFFFFF, $D3C0C0, $B2ACA5, $DEDEDE, $FFFAFD, $947C7C, $000000, $8D8D8D, + $6F4B4B, $99797A, $8CD5FF, $55ADFF, $4E91FE, $8ED3FF, $CCF4FF, $91D0FF, + $F1E9E8, $CDB9BA, $C2EEFF, $B39A9B), + ($A7D9D9, $DEF7F4, $91C6B7, $588060, $C0E7E5, $588060, $DEF7F4, $335E51, + $FFFFFF, $9FD4C5, $7FB9A4, $DEDEDE, $EEF4F4, $5E8D75, $000000, $8D8D8D, + $385D3F, $5E8674, $8CD5FF, $55ADFF, $4E91FE, $8ED3FF, $CCF4FF, $91D0FF, + $D5F0EC, $9FCEC2, $C2EEFF, $7BA097) + ); + Office2003IrregularGradientValues: array[TOffice2003Scheme] of Integer = (8, 8, 25, 15); + +var + DC: HDC; + MenuItemFrame, EnabledText, DisabledText: TColor; + Scheme: TOffice2003Scheme; + + procedure Undither(var C: TColor); + begin + if C <> clNone then C := GetNearestColor(DC, ColorToRGB(C)); + end; + +begin + DC := StockCompatibleBitmap.Canvas.Handle; + + if TBXLoColor then + begin + DockColor := clBtnFace; + + ToolbarColor1 := clBtnFace; + ToolbarColor2 := clBtnFace; + ToolbarFrameColor1 := clBtnShadow; + ToolbarFrameColor2 := clBtnShadow; + SeparatorColor1 := clBtnShadow; + SeparatorColor2 := clBtnHighlight; + DragHandleColor1 := clBtnText; + DragHandleColor2 := clBtnHighlight; + + EmbeddedColor := clBtnFace; + EmbeddedFrameColor := clBtnShadow; + EmbeddedDisabledColor := clBtnFace; + + PopupColor := clWindow; + PopupFrameColor := clBtnText; + + DockPanelColor := clWindow; + + DisabledText := clBtnShadow; + MenuItemFrame := clHighlight; + + WinFrameColors[wfpBorder] := clBtnShadow; + WinFrameColors[wfpCaption] := clBtnShadow; + WinFrameColors[wfpCaptionText] := clBtnHighlight; + + BtnItemColors[bisNormal, ipText] := clBtnText; + BtnItemColors[bisNormal, ipFrame] := clNone; + BtnItemColors[bisDisabled, ipText] := DisabledText; + BtnItemColors[bisDisabled, ipFrame] := clNone; + BtnItemColors[bisSelected, ipText] := clWindowText; + BtnItemColors[bisSelected, ipFrame] := MenuItemFrame; + BtnItemColors[bisPressed, ipText] := clHighlightText; + BtnItemColors[bisPressed, ipFrame] := MenuItemFrame; + BtnItemColors[bisHot, ipText] := clWindowText; + BtnItemColors[bisHot, ipFrame] := MenuItemFrame; + BtnItemColors[bisDisabledHot, ipText] := DisabledText; + BtnItemColors[bisDisabledHot, ipFrame] := MenuItemFrame; + BtnItemColors[bisSelectedHot, ipText] := clHighlightText; + BtnItemColors[bisSelectedHot, ipFrame] := MenuItemFrame; + BtnItemColors[bisPopupParent, ipText] := clBtnText; + BtnItemColors[bisPopupParent, ipFrame] := PopupFrameColor; + + BtnBodyColors[bisNormal, False] := clNone; + BtnBodyColors[bisNormal, True] := clNone; + BtnBodyColors[bisDisabled, False] := clNone; + BtnBodyColors[bisDisabled, True] := clNone; + BtnBodyColors[bisSelected, False] := clWindow; + BtnBodyColors[bisSelected, True] := clWindow; + BtnBodyColors[bisPressed, False] := clHighlight; + BtnBodyColors[bisPressed, True] := clHighlight; + BtnBodyColors[bisHot, False] := clWindow; + BtnBodyColors[bisHot, True] := clWindow; + BtnBodyColors[bisDisabledHot, False] := clWindow; + BtnBodyColors[bisDisabledHot, True] := clWindow; + BtnBodyColors[bisSelectedHot, False] := clHighlight; + BtnBodyColors[bisSelectedHot, True] := clHighlight; + BtnBodyColors[bisPopupParent, False] := clBtnFace; + BtnBodyColors[bisPopupParent, True] := clBtnFace; + + MenuItemColors[misNormal, ipBody] := clNone; + MenuItemColors[misNormal, ipText] := clWindowText; + MenuItemColors[misNormal, ipFrame] := clNone; + MenuItemColors[misDisabled, ipBody] := clNone; + MenuItemColors[misDisabled, ipText] := clGrayText; + MenuItemColors[misDisabled, ipFrame] := clNone; + MenuItemColors[misHot, ipBody] := clWindow; + MenuItemColors[misHot, ipText] := clWindowText; + MenuItemColors[misHot, ipFrame] := MenuItemFrame; + MenuItemColors[misDisabledHot, ipBody] := PopupColor; + MenuItemColors[misDisabledHot, ipText] := clGrayText; + MenuItemColors[misDisabledHot, ipFrame] := MenuItemFrame; + + StatusPanelFrameColor := clBtnShadow; + FMDIAreaColor := clBtnShadow; + end + else + begin + + Scheme := GetOffice2003Scheme; + if Scheme <> osUnknown then + begin + DockColor := Office2003Colors[Scheme, 0]; + + ToolbarColor1 := Office2003Colors[Scheme, 1]; + ToolbarColor2 := Office2003Colors[Scheme, 2]; + ToolbarFrameColor1 := Office2003Colors[Scheme, 3]; + ToolbarFrameColor2 := Office2003Colors[Scheme, 4]; + SeparatorColor1 := Office2003Colors[Scheme, 5]; + SeparatorColor2 := Office2003Colors[Scheme, 6]; + DragHandleColor1 := Office2003Colors[Scheme, 7]; + DragHandleColor2 := Office2003Colors[Scheme, 8]; + + EmbeddedColor := Office2003Colors[Scheme, 9]; + EmbeddedFrameColor := Office2003Colors[Scheme, 10]; + EmbeddedDisabledColor := Office2003Colors[Scheme, 11]; + + PopupColor := Office2003Colors[Scheme, 12]; + PopupFrameColor := Office2003Colors[Scheme, 13]; + + DockPanelColor := ToolbarColor1; + + EnabledText := Office2003Colors[Scheme, 14]; + DisabledText := Office2003Colors[Scheme, 15]; + MenuItemFrame := Office2003Colors[Scheme, 16]; + + WinFrameColors[wfpBorder] := Office2003Colors[Scheme, 17]; + WinFrameColors[wfpCaption] := WinFrameColors[wfpBorder]; + WinFrameColors[wfpCaptionText] := clWhite; + + BtnItemColors[bisNormal, ipText] := EnabledText; + BtnItemColors[bisNormal, ipFrame] := clNone; + BtnItemColors[bisDisabled, ipText] := DisabledText; + BtnItemColors[bisDisabled, ipFrame] := clNone; + BtnItemColors[bisSelected, ipText] := EnabledText; + BtnItemColors[bisSelected, ipFrame] := MenuItemFrame; + BtnItemColors[bisPressed, ipText] := EnabledText; + BtnItemColors[bisPressed, ipFrame] := MenuItemFrame; + BtnItemColors[bisHot, ipText] := EnabledText; + BtnItemColors[bisHot, ipFrame] := MenuItemFrame; + BtnItemColors[bisDisabledHot, ipText] := DisabledText; + BtnItemColors[bisDisabledHot, ipFrame] := MenuItemFrame; + BtnItemColors[bisSelectedHot, ipText] := EnabledText; + BtnItemColors[bisSelectedHot, ipFrame] := MenuItemFrame; + BtnItemColors[bisPopupParent, ipText] := EnabledText; + BtnItemColors[bisPopupParent, ipFrame] := PopupFrameColor; + + BtnBodyColors[bisNormal, False] := clNone; + BtnBodyColors[bisNormal, True] := clNone; + BtnBodyColors[bisDisabled, False] := clNone; + BtnBodyColors[bisDisabled, True] := clNone; + BtnBodyColors[bisSelected, False] := Office2003Colors[Scheme, 18]; + BtnBodyColors[bisSelected, True] := Office2003Colors[Scheme, 19]; + BtnBodyColors[bisPressed, False] := Office2003Colors[Scheme, 20]; + BtnBodyColors[bisPressed, True] := Office2003Colors[Scheme, 21]; + BtnBodyColors[bisHot, False] := Office2003Colors[Scheme, 22]; + BtnBodyColors[bisHot, True] := Office2003Colors[Scheme, 23]; + BtnBodyColors[bisDisabledHot, False] := BtnBodyColors[bisHot, False]; + BtnBodyColors[bisDisabledHot, True] := BtnBodyColors[bisHot, True]; + BtnBodyColors[bisSelectedHot, False] := BtnBodyColors[bisPressed, False]; + BtnBodyColors[bisSelectedHot, True] := BtnBodyColors[bisPressed, True]; + BtnBodyColors[bisPopupParent, False] := Office2003Colors[Scheme, 24]; + BtnBodyColors[bisPopupParent, True] := Office2003Colors[Scheme, 25]; + + MenuItemColors[misNormal, ipBody] := clNone; + MenuItemColors[misNormal, ipText] := EnabledText; + MenuItemColors[misNormal, ipFrame] := clNone; + MenuItemColors[misDisabled, ipBody] := clNone; + MenuItemColors[misDisabled, ipText] := DisabledText; + MenuItemColors[misDisabled, ipFrame] := clNone; + MenuItemColors[misHot, ipBody] := Office2003Colors[Scheme, 26]; + MenuItemColors[misHot, ipText] := MenuItemColors[misNormal, ipText]; + MenuItemColors[misHot, ipFrame] := MenuItemFrame; + MenuItemColors[misDisabledHot, ipBody] := PopupColor; + MenuItemColors[misDisabledHot, ipText] := DisabledText; + MenuItemColors[misDisabledHot, ipFrame] := MenuItemColors[misHot, ipFrame]; + + StatusPanelFrameColor := Blend(ToolbarColor2, clBlack, 90); + FMDIAreaColor := Office2003Colors[Scheme, 27]; + end + else + begin + DockColor := clBtnFace; + + ToolbarColor1 := Blend(clBtnFace, clWindow, 23); + ToolbarColor2 := Blend(clBtnFace, clWindow, 96); + ToolbarFrameColor1 := Blend(clBtnFace, clWindow, 85); + ToolbarFrameColor2 := Blend(clBtnFace, clWindow, 62); + SeparatorColor1 := Blend(clBtnShadow, clWindow, 70); + SeparatorColor2 := clWhite; + DragHandleColor1 := Blend(clBtnShadow, clWindow, 75); + DragHandleColor2 := clWindow; + + EmbeddedColor := clBtnFace; + EmbeddedFrameColor := clBtnShadow; + EmbeddedDisabledColor := clBtnFace; + + PopupColor := Blend(clBtnFace, clWindow, 15); + PopupFrameColor := Blend(clBtnText, clBtnShadow, 20); + + DockPanelColor := ToolbarColor1; + + EnabledText := clBtnText; + DisabledText := clGrayText; + MenuItemFrame := clHighlight; + + WinFrameColors[wfpBorder] := Blend(clBtnText, clBtnShadow, 15); + WinFrameColors[wfpCaption] := clBtnShadow; + WinFrameColors[wfpCaptionText] := clBtnHighlight; + + BtnBodyColors[bisNormal, False] := clNone; + BtnBodyColors[bisNormal, True] := clNone; + BtnBodyColors[bisDisabled, False] := clNone; + BtnBodyColors[bisDisabled, True] := clNone; + BtnBodyColors[bisSelected, False] := Blend(clHighlight, Blend(clBtnFace, clWindow, 50), 10); + + BtnItemColors[bisNormal, ipText] := EnabledText; + BtnItemColors[bisNormal, ipFrame] := clNone; + BtnItemColors[bisDisabled, ipText] := DisabledText; + BtnItemColors[bisDisabled, ipFrame] := clNone; + BtnItemColors[bisSelected, ipText] := EnabledText; + BtnItemColors[bisSelected, ipFrame] := MenuItemFrame; + BtnItemColors[bisPressed, ipText] := EnabledText; + BtnItemColors[bisPressed, ipFrame] := MenuItemFrame; + BtnItemColors[bisHot, ipText] := EnabledText; + BtnItemColors[bisHot, ipFrame] := MenuItemFrame; + BtnItemColors[bisDisabledHot, ipText] := DisabledText; + BtnItemColors[bisDisabledHot, ipFrame] := MenuItemFrame; + BtnItemColors[bisSelectedHot, ipText] := EnabledText; + BtnItemColors[bisSelectedHot, ipFrame] := MenuItemFrame; + BtnItemColors[bisPopupParent, ipText] := EnabledText; + BtnItemColors[bisPopupParent, ipFrame] := PopupFrameColor; + + BtnBodyColors[bisSelected, True] := BtnBodyColors[bisSelected, False]; + BtnBodyColors[bisPressed, False] := Blend(clHighlight, clWindow, 50); + BtnBodyColors[bisPressed, True] := BtnBodyColors[bisPressed, False]; + BtnBodyColors[bisHot, False] := Blend(clHighlight, clWindow, 30); + BtnBodyColors[bisHot, True] := BtnBodyColors[bisHot, False]; + BtnBodyColors[bisDisabledHot, False] := BtnBodyColors[bisHot, False]; + BtnBodyColors[bisDisabledHot, True] := BtnBodyColors[bisHot, True]; + BtnBodyColors[bisSelectedHot, False] := BtnBodyColors[bisPressed, False]; + BtnBodyColors[bisSelectedHot, True] := BtnBodyColors[bisPressed, True]; + BtnBodyColors[bisPopupParent, False] := Blend(clBtnFace, clWindow, 16); + BtnBodyColors[bisPopupParent, True] := Blend(clBtnFace, clWindow, 42); + + MenuItemColors[misNormal, ipBody] := clNone; + MenuItemColors[misNormal, ipText] := EnabledText; + MenuItemColors[misNormal, ipFrame] := clNone; + MenuItemColors[misDisabled, ipBody] := clNone; + MenuItemColors[misDisabled, ipText] := DisabledText; + MenuItemColors[misDisabled, ipFrame] := clNone; + MenuItemColors[misHot, ipBody] := BtnBodyColors[bisHot, False]; + MenuItemColors[misHot, ipText] := MenuItemColors[misNormal, ipText]; + MenuItemColors[misHot, ipFrame] := MenuItemFrame; + MenuItemColors[misDisabledHot, ipBody] := PopupColor; + MenuItemColors[misDisabledHot, ipText] := DisabledText; + MenuItemColors[misDisabledHot, ipFrame] := MenuItemColors[misHot, ipFrame]; + + StatusPanelFrameColor := Blend(ToolbarColor2, clBlack, 90); + FMDIAreaColor := clBtnShadow; + end; + + IrregularGradientValue := Office2003IrregularGradientValues[Scheme]; + + Undither(DockColor); + + Undither(ToolbarColor1); + Undither(ToolbarColor2); + Undither(ToolbarFrameColor1); + Undither(ToolbarFrameColor2); + Undither(SeparatorColor1); + Undither(SeparatorColor2); + Undither(DragHandleColor1); + Undither(DragHandleColor2); + + Undither(EmbeddedColor); + Undither(EmbeddedFrameColor); + Undither(EmbeddedDisabledColor); + + Undither(PopupColor); + Undither(PopupFrameColor); + + Undither(DockPanelColor); + + Undither(WinFrameColors[wfpBorder]); + Undither(WinFrameColors[wfpCaption]); + Undither(WinFrameColors[wfpCaptionText]); + + Undither(BtnItemColors[bisNormal, ipText]); + Undither(BtnItemColors[bisNormal, ipFrame]); + Undither(BtnItemColors[bisDisabled, ipText]); + Undither(BtnItemColors[bisDisabled, ipFrame]); + Undither(BtnItemColors[bisSelected, ipText]); + Undither(BtnItemColors[bisSelected, ipFrame]); + Undither(BtnItemColors[bisPressed, ipText]); + Undither(BtnItemColors[bisPressed, ipFrame]); + Undither(BtnItemColors[bisHot, ipText]); + Undither(BtnItemColors[bisHot, ipFrame]); + Undither(BtnItemColors[bisDisabledHot, ipText]); + Undither(BtnItemColors[bisDisabledHot, ipFrame]); + Undither(BtnItemColors[bisSelectedHot, ipText]); + Undither(BtnItemColors[bisSelectedHot, ipFrame]); + Undither(BtnItemColors[bisPopupParent, ipText]); + Undither(BtnItemColors[bisPopupParent, ipFrame]); + + Undither(BtnBodyColors[bisNormal, False]); + Undither(BtnBodyColors[bisNormal, True]); + Undither(BtnBodyColors[bisDisabled, False]); + Undither(BtnBodyColors[bisDisabled, True]); + Undither(BtnBodyColors[bisSelected, False]); + Undither(BtnBodyColors[bisSelected, True]); + Undither(BtnBodyColors[bisPressed, False]); + Undither(BtnBodyColors[bisPressed, True]); + Undither(BtnBodyColors[bisHot, False]); + Undither(BtnBodyColors[bisHot, True]); + Undither(BtnBodyColors[bisDisabledHot, False]); + Undither(BtnBodyColors[bisDisabledHot, True]); + Undither(BtnBodyColors[bisSelectedHot, False]); + Undither(BtnBodyColors[bisSelectedHot, True]); + Undither(BtnBodyColors[bisPopupParent, False]); + Undither(BtnBodyColors[bisPopupParent, True]); + + Undither(MenuItemColors[misNormal, ipBody]); + Undither(MenuItemColors[misNormal, ipText]); + Undither(MenuItemColors[misNormal, ipFrame]); + Undither(MenuItemColors[misDisabled, ipBody]); + Undither(MenuItemColors[misDisabled, ipText]); + Undither(MenuItemColors[misDisabled, ipFrame]); + Undither(MenuItemColors[misHot, ipBody]); + Undither(MenuItemColors[misHot, ipText]); + Undither(MenuItemColors[misHot, ipFrame]); + Undither(MenuItemColors[misDisabledHot, ipBody]); + Undither(MenuItemColors[misDisabledHot, ipText]); + Undither(MenuItemColors[misDisabledHot, ipFrame]); + + Undither(StatusPanelFrameColor); + Undither(FMDIAreaColor); + end; + + if Assigned(FOnSetupColorCache) then FOnSetupColorCache(Self); +end; + +function TTBXOffice2003Theme.GetPopupShadowType: Integer; +begin + Result := PST_OFFICEXP; +end; + +constructor TTBXOffice2003Theme.Create(const AName: string); +begin + inherited; + if CounterLock = 0 then InitializeStock; + Inc(CounterLock); + AddTBXSysChangeNotification(Self); + SetupColorCache; +end; + +destructor TTBXOffice2003Theme.Destroy; +begin + RemoveTBXSysChangeNotification(Self); + Dec(CounterLock); + if CounterLock = 0 then FinalizeStock; + inherited; +end; + +procedure TTBXOffice2003Theme.GetViewMargins(ViewType: Integer; out Margins: TTBXMargins); +begin + Margins.LeftWidth := 0; + Margins.TopHeight := 0; + Margins.RightWidth := 0; + Margins.BottomHeight := 0; +end; + +procedure TTBXOffice2003Theme.PaintPageScrollButton(Canvas: TCanvas; + const ARect: TRect; ButtonType: Integer; Hot: Boolean); +var + DC: HDC; + R: TRect; + X, Y, Sz: Integer; + C: TColor; +begin + DC := Canvas.Handle; + R := ARect; + if Hot then C := BtnItemColors[bisHot, ipFrame] + else C := EmbeddedFrameColor; + FrameRectEx(DC, R, C, False); + InflateRect(R, -1, -1); + if Hot then C := BtnBodyColors[bisHot, False] + else C := EmbeddedColor; + FillRectEx(DC, R, C); + X := (R.Left + R.Right) div 2; + Y := (R.Top + R.Bottom) div 2; + Sz := Min(X - R.Left, Y - R.Top) * 3 div 4; + + if Hot then C := BtnItemColors[bisHot, ipText] + else C := BtnItemColors[bisNormal, ipText]; + + case ButtonType of + PSBT_UP: + begin + Inc(Y, Sz div 2); + PolygonEx(DC, [Point(X + Sz, Y), Point(X, Y - Sz), Point(X - Sz, Y)], C, C); + end; + PSBT_DOWN: + begin + Y := (R.Top + R.Bottom - 1) div 2; + Dec(Y, Sz div 2); + PolygonEx(DC, [Point(X + Sz, Y), Point(X, Y + Sz), Point(X - Sz, Y)], C, C); + end; + PSBT_LEFT: + begin + Inc(X, Sz div 2); + PolygonEx(DC, [Point(X, Y + Sz), Point(X - Sz, Y), Point(X, Y - Sz)], C, C); + end; + PSBT_RIGHT: + begin + X := (R.Left + R.Right - 1) div 2; + Dec(X, Sz div 2); + PolygonEx(DC, [Point(X, Y + Sz), Point(X + Sz, Y), Point(X, Y - Sz)], C, C); + end; + end; +end; + +procedure TTBXOffice2003Theme.PaintFrameControl(Canvas: TCanvas; R: TRect; Kind, State: Integer; Params: Pointer); +var + DC: HDC; + X, Y: Integer; + Pen, OldPen: HPen; + Brush, OldBrush: HBRUSH; + C: TColor; + + function GetPenColor: TColor; + begin + if Boolean(State and PFS_DISABLED) then Result := clBtnShadow + else if Boolean(State and PFS_PUSHED) then Result := BtnItemColors[bisPressed, ipFrame] + else if Boolean(State and PFS_HOT) then Result := BtnItemColors[bisHot, ipFrame] + else Result := EmbeddedFrameColor; + end; + + function GetBrush: HBRUSH; + begin + if Boolean(State and PFS_DISABLED) then Result := CreateDitheredBrush(clWindow, clBtnFace) + else if Boolean(State and PFS_PUSHED) then Result := CreateBrushEx(BtnBodyColors[bisPressed, False]) + else if Boolean(State and PFS_HOT) then Result := CreateBrushEx(BtnBodyColors[bisHot, False]) + else if Boolean(State and PFS_MIXED) then Result := CreateDitheredBrush(clWindow, clBtnFace) + else Result := CreateBrushEx(clNone); + end; + + function GetTextColor: TColor; + begin + if Boolean(State and PFS_DISABLED) then Result := BtnItemColors[bisDisabled, ipText] + else if Boolean(State and PFS_PUSHED) then Result := BtnItemColors[bisPressed, ipText] + else if Boolean(State and PFS_MIXED) then Result := clBtnShadow + else if Boolean(State and PFS_HOT) then Result := BtnItemColors[bisHot, ipText] + else Result := BtnItemColors[bisNormal, ipText]; + end; + +begin + DC := Canvas.Handle; + case Kind of + PFC_CHECKBOX: + begin + InflateRect(R, -1, -1); + FrameRectEx(DC, R, GetPenColor, True); + Brush := GetBrush; + Windows.FillRect(DC, R, Brush); + DeleteObject(Brush); + InflateRect(R, 1, 1); + + if Boolean(State and (PFS_CHECKED or PFS_MIXED)) then + begin + X := (R.Left + R.Right) div 2 - 1; + Y := (R.Top + R.Bottom) div 2 + 1; + C := GetTextColor; + PolygonEx(DC, [Point(X - 2, Y), Point(X, Y + 2), Point(X + 4, Y - 2), + Point(X + 4, Y - 4), Point(X, Y), Point(X - 2, Y - 2), Point(X - 2, Y)], C, C); + end; + end; + PFC_RADIOBUTTON: + begin + InflateRect(R, -1, -1); + + with R do + begin + Brush := GetBrush; + OldBrush := SelectObject(DC, Brush); + Pen := CreatePenEx(GetPenColor); + OldPen := SelectObject(DC, Pen); + Windows.Ellipse(DC, Left, Top, Right, Bottom); + SelectObject(DC, OldPen); + DeleteObject(Pen); + SelectObject(DC, OldBrush); + DeleteObject(Brush); + end; + + if Boolean(State and PFS_CHECKED) then + begin + InflateRect(R, -3, -3); + C := GetTextColor; + Brush := CreateBrushEx(C); + OldBrush := SelectObject(DC, Brush); + Pen := CreatePenEx(C); + OldPen := SelectObject(DC, Pen); + with R do Windows.Ellipse(DC, Left, Top, Right, Bottom); + SelectObject(DC, OldPen); + DeleteObject(Pen); + SelectObject(DC, OldBrush); + DeleteObject(Brush); + end; + end; + end; +end; + +procedure TTBXOffice2003Theme.PaintStatusBar(Canvas: TCanvas; R: TRect; Part: Integer); + + procedure DrawHandleElement(const P: TPoint); + begin + Canvas.Brush.Color := DragHandleColor2; + Canvas.FillRect(Rect(P.X - 2, P.Y - 2, P.X, P.Y)); + Canvas.Brush.Color := DragHandleColor1; + Canvas.FillRect(Rect(P.X - 3, P.Y - 3, P.X - 1, P.Y - 1)); + end; + +begin + case Part of + SBP_BODY: + PaintIrregularGradient(Canvas.Handle, R, ToolbarColor1, ToolbarColor2, False); + SBP_PANE, SBP_LASTPANE: + begin + if Part = SBP_PANE then Dec(R.Right, 2); + FrameRectEx(Canvas.Handle, R, StatusPanelFrameColor, False); + end; + SBP_GRIPPER: + begin + Dec(R.Right); + Dec(R.Bottom); + DrawHandleElement(Point(R.Right, R.Bottom)); + DrawHandleElement(Point(R.Right, R.Bottom - 4)); + DrawHandleElement(Point(R.Right, R.Bottom - 8)); + + Dec(R.Right, 4); + DrawHandleElement(Point(R.Right, R.Bottom)); + DrawHandleElement(Point(R.Right, R.Bottom - 4)); + + Dec(R.Right, 4); + DrawHandleElement(Point(R.Right, R.Bottom)); + end; + end; +end; + +procedure TTBXOffice2003Theme.TBXSysCommand(var Message: TMessage); +begin + if Message.WParam = TSC_VIEWCHANGE then SetupColorCache; +end; + +initialization + if not IsTBXThemeAvailable('Office2003') then + RegisterTBXTheme('Office2003', TTBXOffice2003Theme); + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXOffice2003Theme.pas.orig b/official/2.1.6+2.1.beta1/TBX/TBXOffice2003Theme.pas.orig new file mode 100644 index 0000000..96cb1af --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXOffice2003Theme.pas.orig @@ -0,0 +1,1983 @@ +unit TBXOffice2003Theme; + +// TBX Package +// Copyright 2001-2002 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// $Id: TBXOfficeXPTheme.pas,v 1.55 2002/12/24 04:32:45 Alex Exp $ +// +// Modified OfficeXP theme by Roy Magne Klever - I named it 'Office11XPtheme' +// +// 07.02.2003 - Roy Magne Klever roy.magne@os.ino.no +// Added gradient to toolbars +// Changed statusbar and draghandels... +// Unknown Changes by Dmitriy Babkin mailto:dimonka@tnt.gov.lv +// Added gradients to menu popups +// Added TBXDock +// Color adjustment... +// 10.04.2003 - Roy Magne Klever +// Just change menu title color... +// Your modifications here + +interface + +uses + Windows, Messages, Graphics, TBXThemes, ImgList; + +{$DEFINE ALTERNATIVE_DISABLED_STYLE} // remove the asterisk to change appearance of disabled images +{*$DEFINE SMALL_CLOSE_BUTTON} // remove the asterisk for smaller close button size + +type + TGradDir = (tGLeftRight, tGTopBottom); + TItemPart = (ipBody, ipText, ipFrame); + TBtnItemState = (bisNormal, bisDisabled, bisSelected, bisPressed, bisHot, + bisDisabledHot, bisSelectedHot, bisPopupParent); + TMenuItemState = (misNormal, misDisabled, misHot, misDisabledHot); + TWinFramePart = (wfpBorder, wfpCaption, wfpCaptionText); + TWinFrameState = (wfsActive, wfsInactive); + + TTBXOffice2003Theme = class(TTBXTheme) + private + procedure TBXSysCommand(var Message: TMessage); message TBX_SYSCOMMAND; + protected + { View/Window Colors } + MenubarColor: TColor; + ToolbarColor: TColor; + PopupColor: TColor; + DockPanelColor: TColor; + + PopupFrameColor: TColor; + WinFrameColors: array [TWinFrameState, TWinFramePart] of TColor; + PnlFrameColors: array [TWinFrameState, TWinFramePart] of TColor; + MenuItemColors: array [TMenuItemState, TItemPart] of TColor; + BtnItemColors: array [TBtnItemState, TItemPart] of TColor; + + { Other Colors } + DragHandleColor: TColor; + PopupSeparatorColor: TColor; + ToolbarSeparatorColor: TColor; + IconShadowColor: TColor; + StatusPanelFrameColor: TColor; + + procedure SetupColorCache; virtual; + protected + { Internal Methods } + function GetPartColor(const ItemInfo: TTBXItemInfo; ItemPart: TItemPart): TColor; + function GetBtnColor(const ItemInfo: TTBXItemInfo; ItemPart: TItemPart): TColor; + public + constructor Create(const AName: string); override; + destructor Destroy; override; + + { Metrics access} + function GetBooleanMetrics(Index: Integer): Boolean; override; + function GetImageOffset(Canvas: TCanvas; const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList): TPoint; override; + function GetIntegerMetrics(Index: Integer): Integer; override; + function GetItemColor(const ItemInfo: TTBXItemInfo): TColor; override; + function GetItemTextColor(const ItemInfo: TTBXItemInfo): TColor; override; + function GetItemImageBackground(const ItemInfo: TTBXItemInfo): TColor; override; + procedure GetMargins(MarginID: Integer; out Margins: TTBXMargins); override; + function GetPopupShadowType: Integer; override; + procedure GetViewBorder(ViewType: Integer; out Border: TPoint); override; + function GetViewColor(AViewType: Integer): TColor; override; + procedure GetViewMargins(ViewType: Integer; out Margins: TTBXMargins); override; + + { Painting routines } + procedure PaintBackgnd(Canvas: TCanvas; const ADockRect, ARect, AClipRect: TRect; AColor: TColor; Transparent: Boolean; AViewType: Integer); override; + procedure PaintButton(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintCaption(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo; const ACaption: string; AFormat: Cardinal; Rotated: Boolean); override; + procedure PaintCheckMark(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintChevron(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintDockPanelNCArea(Canvas: TCanvas; R: TRect; const DockPanelInfo: TTBXDockPanelInfo); override; + procedure PaintDropDownArrow(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintEditButton(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo; ButtonInfo: TTBXEditBtnInfo); override; + procedure PaintEditFrame(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo; const EditInfo: TTBXEditInfo); override; + procedure PaintFloatingBorder(Canvas: TCanvas; const ARect: TRect; const WindowInfo: TTBXWindowInfo); override; + procedure PaintFrame(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintImage(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList; ImageIndex: Integer); override; + procedure PaintMDIButton(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo; ButtonKind: Cardinal); override; + procedure PaintMenuItem(Canvas: TCanvas; var ARect: TRect; var ItemInfo: TTBXItemInfo); override; + procedure PaintMenuItemFrame(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintPageScrollButton(Canvas: TCanvas; const ARect: TRect; ButtonType: Integer; Hot: Boolean); override; + procedure PaintPopupNCArea(Canvas: TCanvas; R: TRect; const PopupInfo: TTBXPopupInfo); override; + procedure PaintSeparator(Canvas: TCanvas; ARect: TRect; ItemInfo: TTBXItemInfo; Horizontal, LineSeparator: Boolean); override; + procedure PaintToolbarNCArea(Canvas: TCanvas; R: TRect; const ToolbarInfo: TTBXToolbarInfo); override; + procedure PaintGlyph(Canvas: TCanvas; R: TRect; Kind, State: Integer); override; + procedure PaintStatusBar(Canvas: TCanvas; R: TRect; Part: Integer); override; + end; + +implementation + +{.$R tbx_glyphs.res} + +uses TBXUtils, TB2Common, TB2Item, Classes, Controls, Commctrl, Forms; + +var + StockImgList: TImageList; + StockPatternBitmap: TBitmap; + CounterLock: Integer; + gradCol1, gradCol2, gradHandle1, gradHandle2, gradHandle3, gradBL: TColor; + +procedure InitializeStock; +begin + StockImgList := TImageList.Create(nil); + StockImgList.Handle := ImageList_LoadBitmap(HInstance, 'TBXGLYPHS', 16, 0, clWhite); +end; + +procedure FinalizeStock; +begin + StockImgList.Free; +end; + +{ TTBXOffice2003Theme } + +function TTBXOffice2003Theme.GetBooleanMetrics(Index: Integer): Boolean; +begin + case Index of + TMB_OFFICEXPPOPUPALIGNMENT: Result := True; + TMB_EDITCAPTIONINDENTED: Result := True; + TMB_EDITHEIGHTEVEN: Result := False; + else + Result := False; + end; +end; + +function TTBXOffice2003Theme.GetIntegerMetrics(Index: Integer): Integer; +const + DEFAULT = -1; +begin + case Index of + TMI_SPLITBTN_ARROWWIDTH: Result := 12; + + TMI_DROPDOWN_ARROWWIDTH: Result := 8; + TMI_DROPDOWN_ARROWMARGIN: Result := 3; + + TMI_MENU_VMARGIN: Result := 3; + TMI_MENU_HMARGIN: Result := 1; + TMI_MENU_IMGTEXTSPACE: Result := 0; + TMI_MENU_LCAPTIONMARGIN: Result := 8; + TMI_MENU_RCAPTIONMARGIN: Result := 3; + TMI_MENU_SEPARATORSIZE: Result := 3; + TMI_MENU_MDI_DW: Result := 2; + TMI_MENU_MDI_DH: Result := 2; + + TMI_LINE_SPACING: Result := 6; + + TMI_TLBR_SEPARATORSIZE: Result := DEFAULT; + + TMI_EDIT_FRAMEWIDTH: Result := 1; + TMI_EDIT_TEXTMARGINHORZ: Result := 2; + TMI_EDIT_TEXTMARGINVERT: Result := 2; + TMI_EDIT_MENUMIDWIDTH: Result := 0; + TMI_EDIT_BTNWIDTH: Result := 14; + else + Result := DEFAULT; + end; +end; + +function TTBXOffice2003Theme.GetViewColor(AViewType: Integer): TColor; +begin + Result := clBtnFace; + if (AViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + if (AViewType and TVT_MENUBAR) = TVT_MENUBAR then Result := MenubarColor + else Result := ToolbarColor; + end + else if (AViewType and VT_POPUP) = VT_POPUP then + begin + if (AViewType and PVT_LISTBOX) = PVT_LISTBOX then Result := clWindow + else Result := PopupColor; + end + else if (AViewType and VT_DOCKPANEL) = VT_DOCKPANEL then Result := DockPanelColor; +end; + +function TTBXOffice2003Theme.GetBtnColor(const ItemInfo: TTBXItemInfo; ItemPart: TItemPart): TColor; +const + BFlags1: array [Boolean] of TBtnItemState = (bisDisabled, bisDisabledHot); + BFlags2: array [Boolean] of TBtnItemState = (bisSelected, bisSelectedHot); + BFlags3: array [Boolean] of TBtnItemState = (bisNormal, bisHot); +var + B: TBtnItemState; + Embedded: Boolean; +begin + with ItemInfo do + begin + Embedded := (ViewType and VT_TOOLBAR = VT_TOOLBAR) and + (ViewType and TVT_EMBEDDED = TVT_EMBEDDED); + if not Enabled then B := BFlags1[HoverKind = hkKeyboardHover] + else if ItemInfo.IsPopupParent then + B := bisPopupParent + else if Pushed then B := bisPressed + else if Selected then B := BFlags2[HoverKind <> hkNone] + else B := BFlags3[HoverKind <> hkNone]; + Result := BtnItemColors[B, ItemPart]; + if Embedded then + begin + if (ItemPart = ipBody) and (Result = clNone) then Result := ToolbarColor; + if ItemPart = ipFrame then + begin + if Selected then Result := clWindowFrame + else if (Result = clNone) then Result := clBtnShadow; + end; + end; + end; +end; + +function TTBXOffice2003Theme.GetPartColor(const ItemInfo: TTBXItemInfo; ItemPart: TItemPart): TColor; +const + MFlags1: array [Boolean] of TMenuItemState = (misDisabled, misDisabledHot); + MFlags2: array [Boolean] of TMenuItemState = (misNormal, misHot); + BFlags1: array [Boolean] of TBtnItemState = (bisDisabled, bisDisabledHot); + BFlags2: array [Boolean] of TBtnItemState = (bisSelected, bisSelectedHot); + BFlags3: array [Boolean] of TBtnItemState = (bisNormal, bisHot); +var + IsMenuItem, Embedded: Boolean; + M: TMenuItemState; + B: TBtnItemState; +begin + with ItemInfo do + begin + IsMenuItem := ((ViewType and PVT_POPUPMENU) = PVT_POPUPMENU) and + ((ItemOptions and IO_TOOLBARSTYLE) = 0); + Embedded := ((ViewType and VT_TOOLBAR) = VT_TOOLBAR) and + ((ViewType and TVT_EMBEDDED) = TVT_EMBEDDED); + if IsMenuItem then + begin + if not Enabled then M := MFlags1[HoverKind = hkKeyboardHover] + else M := MFlags2[HoverKind <> hkNone]; + Result := MenuItemColors[M, ItemPart]; + end + else + begin + if not Enabled then B := BFlags1[HoverKind = hkKeyboardHover] + else if ItemInfo.IsPopupParent then B := bisPopupParent + else if Pushed then B := bisPressed + else if Selected then B := BFlags2[HoverKind <> hkNone] + else B := BFlags3[HoverKind <> hkNone]; + Result := BtnItemColors[B, ItemPart]; + if Embedded and (Result = clNone) then + begin + if ItemPart = ipBody then Result := ToolbarColor; + if ItemPart = ipFrame then Result := clBtnShadow; + end; + end; + end; +end; + +procedure FillGradient(const DC: HDC; const ARect: TRect; + const StartColor, EndColor: TColor; + const Direction: TGradDir); +var + rc1, rc2, gc1, gc2, + bc1, bc2, Counter: Integer; + Brush: HBrush; +begin + rc1 := GetRValue(ColorToRGB(StartColor)); + gc1 := GetGValue(ColorToRGB(StartColor)); + bc1 := GetBValue(ColorToRGB(StartColor)); + rc2 := GetRValue(ColorToRGB(EndColor)); + gc2 := GetGValue(ColorToRGB(EndColor)); + bc2 := GetBValue(ColorToRGB(EndColor)); + + if Direction = tGTopBottom then + for Counter := ARect.Top to ARect.Bottom - 1 do + begin + Brush:= CreateSolidBrush( + RGB(Byte(rc1 + (((rc2 - rc1) * (ARect.Top + Counter)) div ARect.Bottom)), + Byte(gc1 + (((gc2 - gc1) * (ARect.Top + Counter)) div ARect.Bottom)), + Byte(bc1 + (((bc2 - bc1) * (ARect.Top + Counter)) div ARect.Bottom)))); + FillRect(DC, Rect(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom - Counter + 1), Brush); + DeleteObject(Brush); + end else + for Counter := ARect.Left to ARect.Right - 1 do + begin + Brush := CreateSolidBrush( + RGB(Byte(rc1 + (((rc2 - rc1) * (ARect.Left + Counter)) div ARect.Right)), + Byte(gc1 + (((gc2 - gc1) * (ARect.Left + Counter)) div ARect.Right)), + Byte(bc1 + (((bc2 - bc1) * (ARect.Left + Counter)) div ARect.Right)))); + FillRect(DC, Rect(ARect.Left, ARect.Top, ARect.Right - Counter +1, ARect.Bottom), Brush); + DeleteObject(Brush); + end; +end; + +function TTBXOffice2003Theme.GetItemColor(const ItemInfo: TTBXItemInfo): TColor; +begin + Result := GetPartColor(ItemInfo, ipBody); + if Result = clNone then Result := GetViewColor(ItemInfo.ViewType); +end; + +function TTBXOffice2003Theme.GetItemTextColor(const ItemInfo: TTBXItemInfo): TColor; +begin + Result := GetPartColor(ItemInfo, ipText); +end; + +function TTBXOffice2003Theme.GetItemImageBackground(const ItemInfo: TTBXItemInfo): TColor; +begin + Result := GetBtnColor(ItemInfo, ipBody); + if Result = clNone then result := GetViewColor(ItemInfo.ViewType); +end; + +procedure TTBXOffice2003Theme.GetViewBorder(ViewType: Integer; out Border: TPoint); +const + XMetrics: array [Boolean] of Integer = (SM_CXDLGFRAME, SM_CXFRAME); + YMetrics: array [Boolean] of Integer = (SM_CYDLGFRAME, SM_CYFRAME); +var + Resizable: Boolean; + + procedure SetBorder(X, Y: Integer); + begin + Border.X := X; + Border.Y := Y; + end; + +begin + if (ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + if (ViewType and TVT_FLOATING) = TVT_FLOATING then + begin + Resizable := (ViewType and TVT_RESIZABLE) = TVT_RESIZABLE; + Border.X := GetSystemMetrics(XMetrics[Resizable]) - 1; + Border.Y := GetSystemMetrics(YMetrics[Resizable]) - 1; + end + else SetBorder(2, 2); + end + else if (ViewType and VT_POPUP) = VT_POPUP then + begin + if (ViewType and PVT_POPUPMENU) = PVT_POPUPMENU then Border.X := 1 + else Border.X := 2; + Border.Y := 2; + end + else if (ViewType and VT_DOCKPANEL) = VT_DOCKPANEL then + begin + if (ViewType and DPVT_FLOATING) = DPVT_FLOATING then + begin + Resizable := (ViewType and DPVT_RESIZABLE) = DPVT_RESIZABLE; + Border.X := GetSystemMetrics(XMetrics[Resizable]) - 1; + Border.Y := GetSystemMetrics(YMetrics[Resizable]) - 1; + end + else SetBorder(2, 2); + end + else SetBorder(0, 0); +end; + +procedure TTBXOffice2003Theme.GetMargins(MarginID: Integer; out Margins: TTBXMargins); +begin + with Margins do + case MarginID of + MID_TOOLBARITEM: + begin + LeftWidth := 2; + RightWidth := 2; + TopHeight := 2; + BottomHeight := 2; + end; + MID_STATUSPANE: + begin + LeftWidth := 1; + RightWidth := 3; + TopHeight := 1; + BottomHeight := 1; + end; + else + LeftWidth := 0; + RightWidth := 0; + TopHeight := 0; + BottomHeight := 0; + end; +end; + +procedure TTBXOffice2003Theme.PaintBackgnd(Canvas: TCanvas; const ADockRect, ARect, AClipRect: TRect; + AColor: TColor; Transparent: Boolean; AViewType: Integer); +var + Brush: HBrush; + R, AR: TRect; + IsHoriz: boolean; +begin + if not Transparent then + begin + if ((AViewType and TVT_NORMALTOOLBAR) = TVT_NORMALTOOLBAR) + //or ((AViewType and TVT_TOOLWINDOW) = TVT_TOOLWINDOW) + {or ((AViewType and TVT_MENUBAR) = TVT_MENUBAR)} then + begin + IntersectRect(R, ARect, AClipRect); + if (ADockRect.Top = 0) and + (ADockRect.Left = 0) and + (ADockRect.Right = 0) and + (ADockRect.Bottom = 0) then + IsHoriz:= (ARect.Right > ARect.Bottom) + else + IsHoriz:= Abs(R.Right - R.Left) > Abs(R.Bottom - R.Top); + + if IsHoriz then begin + R.Bottom:= R.Bottom + 1; + FillGradient(Canvas.Handle, R, gradCol1, gradCol2, TGTopBottom); + R.Bottom:= R.Bottom - 1; + end else begin + R.Right:= R.Right + 1; + FillGradient(Canvas.Handle, R, gradCol1, gradCol2, TGLeftRight); + R.Right:= R.Right - 1; + end; + end else begin + Brush := CreateSolidBrush(ColorToRGB(AColor)); + IntersectRect(R, ARect, AClipRect); + + //The rects are compared to determine if we're drawing a toolbar, not a popup menu... + if (ADockRect.Left <> ARect.Left) or (ADockRect.Top <> ARect.Top) + or (ADockRect.Right <> ARect.Right) or (ADockRect.Bottom <> ARect.Bottom) then + FillGradient(Canvas.Handle, R, gradCol2, gradCol1, TGLeftRight) + else + FillRect(Canvas.Handle, R, Brush); + + DeleteObject(Brush); + end; + end; +end; + +procedure TTBXOffice2003Theme.PaintCaption(Canvas: TCanvas; + const ARect: TRect; const ItemInfo: TTBXItemInfo; const ACaption: string; + AFormat: Cardinal; Rotated: Boolean); +var + R: TRect; +begin + with ItemInfo, Canvas do + begin + R := ARect; + Brush.Style := bsClear; + Font.Color := GetPartColor(ItemInfo, ipText); + if not Rotated then Windows.DrawText(Handle, PChar(ACaption), Length(ACaption), R, AFormat) + else DrawRotatedText(Handle, ACaption, R, AFormat); + Brush.Style := bsSolid; + end; +end; + +procedure TTBXOffice2003Theme.PaintCheckMark(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); +var + X, Y: Integer; +begin + X := (ARect.Left + ARect.Right) div 2 - 2; + Y := (ARect.Top + ARect.Bottom) div 2 + 1; + Canvas.Pen.Color := GetBtnColor(ItemInfo, ipText); + Canvas.Polyline([Point(X-2, Y-2), Point(X, Y), Point(X+4, Y-4), + Point(X+4, Y-3), Point(X, Y+1), Point(X-2, Y-1), Point(X-2, Y-2)]); +end; + +procedure TTBXOffice2003Theme.PaintChevron(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); +const + Pattern: array[Boolean, 0..15] of Byte = ( + ($CC, 0, $66, 0, $33, 0, $66, 0, $CC, 0, 0, 0, 0, 0, 0, 0), + ($88, 0, $D8, 0, $70, 0, $20, 0, $88, 0, $D8, 0, $70, 0, $20, 0)); +var + R2: TRect; + Bmp: TBitmap; +begin + R2 := ARect; + PaintButton(Canvas, ARect, ItemInfo); + if not ItemInfo.IsVertical then + begin + R2.Top := 4; + R2.Bottom := R2.Top + 5; + Inc(R2.Left, 2); + R2.Right := R2.Left + 8; + end + else + begin + R2.Left := R2.Right - 9; + R2.Right := R2.Left + 5; + Inc(R2.Top, 2); + R2.Bottom := R2.Top + 8; + end; + Bmp := TBitmap.Create; + try + Bmp.Handle := CreateBitmap(8, 8, 1, 1, @Pattern[ItemInfo.IsVertical]); + Canvas.Brush.Color := GetPartColor(ItemInfo, ipText); + SetTextColor(Canvas.Handle, clBlack); + SetBkColor(Canvas.Handle, clWhite); + with R2 do BitBlt(Canvas.Handle, Left, Top, Right - Left, + Bottom - Top, Bmp.Canvas.Handle, 0, 0, ROP_DSPDxax); + finally + Bmp.Free; + end; +end; + +procedure TTBXOffice2003Theme.PaintEditButton(Canvas: TCanvas; const ARect: TRect; + var ItemInfo: TTBXItemInfo; ButtonInfo: TTBXEditBtnInfo); +var + BtnDisabled, BtnHot, BtnPressed, Embedded: Boolean; + R, BR: TRect; + X, Y: Integer; + SaveItemInfoPushed: Boolean; +begin + R := ARect; + Embedded := ((ItemInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR) and + ((ItemInfo.ViewType and TVT_EMBEDDED) = TVT_EMBEDDED); + + InflateRect(R, 1, 1); + Inc(R.Left); + with Canvas do + if ButtonInfo.ButtonType = EBT_DROPDOWN then + begin + BtnDisabled := (ButtonInfo.ButtonState and EBDS_DISABLED) <> 0; + BtnHot := (ButtonInfo.ButtonState and EBDS_HOT) <> 0; + BtnPressed := (ButtonInfo.ButtonState and EBDS_PRESSED) <> 0; + if not BtnDisabled then + begin + if BtnPressed or BtnHot or Embedded then PaintButton(Canvas, R, ItemInfo) + else if (ItemInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + R := ARect; + if not Embedded then + begin + FrameRectEx(Canvas, R, clWindow); + Pen.Color := clWindow; + end + else Pen.Color := GetBtnColor(ItemInfo, ipFrame); + MoveTo(R.Left - 1, R.Top); LineTo(R.Left - 1, R.Bottom); + end; + end; + PaintDropDownArrow(Canvas, R, ItemInfo); + end + else if ButtonInfo.ButtonType = EBT_SPIN then + begin + BtnDisabled := (ButtonInfo.ButtonState and EBSS_DISABLED) <> 0; + BtnHot := (ButtonInfo.ButtonState and EBSS_HOT) <> 0; + + { Upper button } + BR := R; + BR.Bottom := (R.Top + R.Bottom + 1) div 2; + BtnPressed := (ButtonInfo.ButtonState and EBSS_UP) <> 0; + SaveItemInfoPushed := ItemInfo.Pushed; + ItemInfo.Pushed := BtnPressed; + if not BtnDisabled then + begin + if BtnPressed or BtnHot or Embedded then PaintButton(Canvas, BR, ItemInfo) + else if (ItemInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + BR.Left := ARect.Left; BR.Top := ARect.Top; BR.Right := ARect.Right; + if not Embedded then + begin + FrameRectEx(Canvas, BR, clWindow); + Pen.Color := clWindow; + end + else Pen.Color := GetBtnColor(ItemInfo, ipFrame); + MoveTo(BR.Left - 1, BR.Top); LineTo(BR.Left - 1, BR.Bottom); + end; + end; + X := (BR.Left + BR.Right) div 2; + Y := (BR.Top + BR.Bottom - 1) div 2; + Pen.Color := GetPartColor(ItemInfo, ipText); + Brush.Color := Pen.Color; + Polygon([Point(X - 2, Y + 1), Point(X + 2, Y + 1), Point(X, Y - 1)]); + + { Lower button } + BR := R; + BR.Top := (R.Top + R.Bottom) div 2; + BtnPressed := (ButtonInfo.ButtonState and EBSS_DOWN) <> 0; + ItemInfo.Pushed := BtnPressed; + if not BtnDisabled then + begin + if BtnPressed or BtnHot or Embedded then PaintButton(Canvas, BR, ItemInfo) + else if (ItemInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + BR.Left := ARect.Left; BR.Bottom := ARect.Bottom; BR.Right := ARect.Right; + if not Embedded then + begin + FrameRectEx(Canvas, BR, clWindow); + Pen.Color := clWindow; + end + else Pen.Color := GetBtnColor(ItemInfo, ipFrame); + MoveTo(BR.Left - 1, BR.Top); LineTo(BR.Left - 1, BR.Bottom); + end; + end; + X := (BR.Left + BR.Right) div 2; + Y := (BR.Top + BR.Bottom) div 2; + Pen.Color := GetPartColor(ItemInfo, ipText); + Brush.Color := Pen.Color; + Polygon([Point(X - 2, Y - 1), Point(X + 2, Y - 1), Point(X, Y + 1)]); + + ItemInfo.Pushed := SaveItemInfoPushed; + end; +end; + +procedure TTBXOffice2003Theme.PaintEditFrame(Canvas: TCanvas; + const ARect: TRect; var ItemInfo: TTBXItemInfo; const EditInfo: TTBXEditInfo); +var + R: TRect; + W: Integer; + Embedded: Boolean; +begin + R := ARect; + PaintFrame(Canvas, R, ItemInfo); + W := EditFrameWidth; + InflateRect(R, -W, -W); + Embedded := ((ItemInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR) and + ((ItemInfo.ViewType and TVT_EMBEDDED) = TVT_EMBEDDED); + if not (ItemInfo.Enabled or Embedded) then + FrameRectEx(Canvas, R, BtnItemColors[bisDisabled, ipText]); + + with EditInfo do + begin + if LeftBtnWidth > 0 then Inc(R.Left, LeftBtnWidth - 2); + if RightBtnWidth > 0 then Dec(R.Right, RightBtnWidth - 2); + end; + + if ItemInfo.Enabled then + begin + if ((ItemInfo.ViewType and VT_TOOLBAR) <> VT_TOOLBAR) and + (GetPartColor(ItemInfo, ipFrame) = clNone) then + FrameRectEx(Canvas, R, ToolbarColor) + else + begin + Canvas.Brush.Color := clWindow; + Canvas.FrameRect(R); + end; + end; + InflateRect(R, -1, -1); + if ItemInfo.Enabled then + begin + Canvas.Brush.Color := clWindow; + Canvas.FillRect(R); + if ((ItemInfo.ViewType and VT_TOOLBAR) <> VT_TOOLBAR) and + (GetPartColor(ItemInfo, ipFrame) = clNone) then + begin + Canvas.Brush.Color := ToolbarColor; + R := ARect; + InflateRect(R, -1, -1); + Canvas.FrameRect(R); + end; + end; + if EditInfo.RightBtnWidth > 0 then + begin + R := ARect; + InflateRect(R, -W, -W); + R.Left := R.Right - EditInfo.RightBtnWidth; + PaintEditButton(Canvas, R, ItemInfo, EditInfo.RightBtnInfo); + end; +end; + +procedure TTBXOffice2003Theme.PaintDropDownArrow(Canvas: TCanvas; + const ARect: TRect; const ItemInfo: TTBXItemInfo); +var + X, Y: Integer; +begin + with ARect, Canvas do + begin + X := (Left + Right) div 2; + Y := (Top + Bottom) div 2 - 1; + Pen.Color := GetPartColor(ItemInfo, ipText); + Brush.Color := Pen.Color; + if ItemInfo.IsVertical then Polygon([Point(X, Y + 2), Point(X, Y - 2), Point(X - 2, Y)]) + else Polygon([Point(X - 2, Y), Point(X + 2, Y), Point(X, Y + 2)]); + end; +end; + +procedure TTBXOffice2003Theme.PaintButton(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); +var + R: TRect; +begin + with ItemInfo, Canvas do + begin + R := ARect; + if ((ItemOptions and IO_DESIGNING) <> 0) and not Selected then + begin + Brush.Color := GetNearestColor(Handle, MixColors(clBtnShadow, clBtnFace, 100)); + if ComboPart = cpSplitRight then Dec(R.Left); + FrameRect(R); + end + else + begin + FrameRectEx(Canvas, R, GetBtnColor(ItemInfo, ipFrame), True); + if (ComboPart = cpSplitLeft) and IsPopupParent then Inc(R.Right); + if ComboPart = cpSplitRight then Dec(R.Left); + // rmk + if (Selected) and ((ViewType and VT_TOOLBAR) = VT_TOOLBAR) then begin + if IsVertical then + FillGradient(Canvas.Handle, R, GetBtnColor(ItemInfo, ipBody), gradCol2, TGLeftRight) + else + FillGradient(Canvas.Handle, R, GetBtnColor(ItemInfo, ipBody), gradCol2, TGTopBottom); + end else + FillRectEx(Canvas, R, GetBtnColor(ItemInfo, ipBody)); + end; + if ComboPart = cpSplitRight then PaintDropDownArrow(Canvas, R, ItemInfo); + end; +end; + +procedure TTBXOffice2003Theme.PaintFloatingBorder(Canvas: TCanvas; const ARect: TRect; + const WindowInfo: TTBXWindowInfo); +const + WinStates: array [Boolean] of TWinFramestate = (wfsInactive, wfsActive); + + function GetBtnItemState(BtnState: Integer): TBtnItemState; + begin + if not WindowInfo.Active then Result := bisDisabled + else if (BtnState and CDBS_PRESSED) <> 0 then Result := bisPressed + else if (BtnState and CDBS_HOT) <> 0 then Result := bisHot + else Result := bisNormal; + end; + +var + WinState: TWinFrameState; + BtnItemState: TBtnItemState; + SaveIndex, X, Y: Integer; + Sz: TPoint; + R: TRect; + BodyColor, CaptionColor, CaptionText: TColor; + IsDockPanel: Boolean; + + procedure DrawGlyph(C: TColor); + var + Bmp: TBitmap; + DC: HDC; + begin + Bmp := TBitmap.Create; + try + Bmp.Monochrome := True; + StockImgList.GetBitmap(0, Bmp); + Canvas.Brush.Color := C; + DC := Canvas.Handle; + SetTextColor(DC, clBlack); + SetBkColor(DC, clWhite); + BitBlt(DC, X, Y, StockImgList.Width, StockImgList.Height, + Bmp.Canvas.Handle, 0, 0, ROP_DSPDxax); + finally + Bmp.Free; + end; + end; + +begin + with Canvas do + begin + WinState := WinStates[WindowInfo.Active]; + IsDockPanel := (WindowInfo.ViewType and VT_DOCKPANEL) = VT_DOCKPANEL; + BodyColor := Brush.Color; + + if (WRP_BORDER and WindowInfo.RedrawPart) <> 0 then + begin + R := ARect; + + if not IsDockPanel then + Brush.Color := WinFrameColors[WinState, wfpBorder] + else + Brush.Color := PnlFrameColors[WinState, wfpBorder]; + SaveIndex := SaveDC(Canvas.Handle); + Sz := WindowInfo.FloatingBorderSize; + with R, Sz do ExcludeClipRect(Canvas.Handle, Left + X, Top + Y, Right - X, Bottom - Y); + FillRect(R); + RestoreDC(Canvas.Handle, SaveIndex); + InflateRect(R, -Sz.X, -Sz.Y); + Pen.Color := BodyColor; + with R do + if not IsDockPanel then + Canvas.Polyline([ + Point(Left, Top - 1), Point(Right - 1, Top - 1), + Point(Right, Top), Point(Right, Bottom - 1), + Point(Right - 1, Bottom), + Point(Left, Bottom), Point(Left - 1, Bottom - 1), + Point(Left - 1, Top), Point(Left, Top - 1) + ]) + else + Canvas.Polyline([ + Point(Left, Top - 1), Point(Right - 1, Top - 1), + Point(Right, Top), Point(Right, Bottom), + Point(Left - 1, Bottom), + Point(Left - 1, Top), Point(Left, Top - 1) + ]); + end; + + if not WindowInfo.ShowCaption then Exit; + + if (WindowInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + CaptionColor := WinFrameColors[WinState, wfpCaption]; + CaptionText := WinFrameColors[WinState, wfpCaptionText]; + end + else + begin + CaptionColor := PnlFrameColors[WinState, wfpCaption]; + CaptionText := PnlFrameColors[WinState, wfpCaptionText]; + end; + + { Caption } + if (WRP_CAPTION and WindowInfo.RedrawPart) <> 0 then + begin + R := Rect(0, 0, WindowInfo.ClientWidth, GetSystemMetrics(SM_CYSMCAPTION) - 1); + with WindowInfo.FloatingBorderSize do OffsetRect(R, X, Y); + DrawLineEx(Canvas, R.Left, R.Bottom, R.Right, R.Bottom, BodyColor); + + if ((CDBS_VISIBLE and WindowInfo.CloseButtonState) <> 0) and + ((WRP_CLOSEBTN and WindowInfo.RedrawPart) <> 0) then + Dec(R.Right, GetSystemMetrics(SM_CYSMCAPTION) - 1); + + Brush.Color := CaptionColor; + FillRect(R); + InflateRect(R, -2, 0); + Font.Assign(SmCaptionFont); + Font.Color := CaptionText; + DrawText(Canvas.Handle, WindowInfo.Caption, -1, R, + DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS or DT_HIDEPREFIX); + end; + + { Close button } + if (CDBS_VISIBLE and WindowInfo.CloseButtonState) <> 0 then + begin + R := Rect(0, 0, WindowInfo.ClientWidth, GetSystemMetrics(SM_CYSMCAPTION) - 1); + with WindowInfo.FloatingBorderSize do OffsetRect(R, X, Y); + R.Left := R.Right - (R.Bottom - R.Top); + DrawLineEx(Canvas, R.Left - 1, R.Bottom, R.Right, R.Bottom, BodyColor); + Brush.Color := CaptionColor; + FillRect(R); + with R do + begin + X := (Left + Right - StockImgList.Width + 1) div 2; + Y := (Top + Bottom - StockImgList.Height) div 2; + end; + BtnItemState := GetBtnItemState(WindowInfo.CloseButtonState); + FrameRectEx(Canvas, R, BtnItemColors[BtnItemState, ipFrame], True); + if FillRectEx(Canvas, R, BtnItemColors[BtnItemState, ipBody]) then + DrawGlyph(BtnItemColors[BtnItemState, ipText]) + else + DrawGlyph(CaptionText); + end; + end; +end; + +procedure TTBXOffice2003Theme.PaintFrame(Canvas: TCanvas; const ARect: TRect; + const ItemInfo: TTBXItemInfo); +var + R: TRect; +begin + R := ARect; + FrameRectEx(Canvas, R, GetPartColor(ItemInfo, ipFrame), True); + FillRectEx(Canvas, R, GetPartColor(ItemInfo, ipBody)); +end; + +function TTBXOffice2003Theme.GetImageOffset(Canvas: TCanvas; + const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList): TPoint; +begin + Result.X := 0; + if not (ImageList is TTBCustomImageList) then + with ItemInfo do + if Enabled and (HoverKind <> hkNone) and + not (Selected or Pushed and not IsPopupParent) then + Result.X := -1; + Result.Y := Result.X +end; + +procedure TTBXOffice2003Theme.PaintImage(Canvas: TCanvas; ARect: TRect; + const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList; ImageIndex: Integer); +var + HiContrast: Boolean; +begin + with ItemInfo do + begin + if ImageList is TTBCustomImageList then + begin + TTBCustomImageList(ImageList).DrawState(Canvas, ARect.Left, ARect.Top, + ImageIndex, Enabled, (HoverKind <> hkNone), Selected); + Exit; + end; + +{$IFNDEF ALTERNATIVE_DISABLED_STYLE} + HiContrast := IsDarkColor(GetItemImageBackground(ItemInfo), 64); + + if not Enabled then + begin + DrawTBXIconFlatShadow(Canvas, ARect, ImageList, ImageIndex, + BtnItemColors[bisDisabled, ipText]); + end + else if Selected or Pushed or (HoverKind <> hkNone) then + begin + if not (Selected or Pushed and not IsPopupParent) then + begin + OffsetRect(ARect, 1, 1); + DrawTBXIconFullShadow(Canvas, ARect, ImageList, ImageIndex, IconShadowColor); + OffsetRect(ARect, -2, -2); + end; + DrawTBXIcon(Canvas, ARect, ImageList, ImageIndex, HiContrast); + end + else if HiContrast or TBXHiContrast or TBXLoColor then + DrawTBXIcon(Canvas, ARect, ImageList, ImageIndex, HiContrast) + else + HighlightTBXIcon(Canvas, ARect, ImageList, ImageIndex, clWindow, 178); +{$ELSE} + HiContrast := ColorIntensity(GetItemImageBackground(ItemInfo)) < 80; + if not Enabled then + begin + if not HiContrast then + DrawTBXIconShadow(Canvas, ARect, ImageList, ImageIndex, 0) + else + DrawTBXIconFlatShadow(Canvas, ARect, ImageList, ImageIndex, clBtnShadow); + end + else if Selected or Pushed or (HoverKind <> hkNone) then + begin + if not (Selected or Pushed and not IsPopupParent) then + begin + //DrawTBXIconShadow(Canvas, ARect, ImageList, ImageIndex, 1); + //OffsetRect(ARect, 1, 1); + //DrawTBXIconShadow(Canvas, ARect, ImageList, ImageIndex, 1); + //OffsetRect(ARect, -2, -2); + end; + DrawTBXIcon(Canvas, ARect, ImageList, ImageIndex, HiContrast); + end + else if HiContrast or TBXHiContrast or TBXLoColor then + DrawTBXIcon(Canvas, ARect, ImageList, ImageIndex, HiContrast) + else + HighlightTBXIcon(Canvas, ARect, ImageList, ImageIndex, clWindow, 178); +{$ENDIF} + end; +end; + +procedure TTBXOffice2003Theme.PaintMDIButton(Canvas: TCanvas; ARect: TRect; + const ItemInfo: TTBXItemInfo; ButtonKind: Cardinal); +var + Index: Integer; + X, Y: Integer; + Bmp: TBitmap; +begin + PaintButton(Canvas, ARect, ItemInfo); + with ARect do + begin + X := (Left + Right - StockImgList.Width) div 2; + Y := (Top + Bottom - StockImgList.Height) div 2; + end; + case ButtonKind of + DFCS_CAPTIONMIN: Index := 2; + DFCS_CAPTIONRESTORE: Index := 3; + DFCS_CAPTIONCLOSE: Index := 0; + else + Exit; + end; + Bmp := TBitmap.Create; + Bmp.Monochrome := True; + StockImgList.GetBitmap(Index, Bmp); + Canvas.Brush.Color := GetPartColor(ItemInfo, ipText); + SetTextColor(Canvas.Handle, clBlack); + SetBkColor(Canvas.Handle, clWhite); + BitBlt(Canvas.Handle, X, Y, StockImgList.Width, StockImgList.Height, + Bmp.Canvas.Handle, 0, 0, ROP_DSPDxax); + Bmp.Free; +end; + +procedure TTBXOffice2003Theme.PaintMenuItemFrame(Canvas: TCanvas; + const ARect: TRect; const ItemInfo: TTBXItemInfo); +var + R: TRect; +begin + R := ARect; + if (ItemInfo.ViewType and PVT_TOOLBOX) <> PVT_TOOLBOX then with Canvas do + begin + R.Right := R.Left + ItemInfo.PopupMargin + 2; + Brush.Color := ToolbarColor; + //FillRect(R); + FillGradient(Handle, R, gradCol1, gradCol2, tGLeftRight); + Inc(R.Left); + R.Right := ARect.Right - 1; + end; + PaintFrame(Canvas, R, ItemInfo); +end; + +procedure TTBXOffice2003Theme.PaintMenuItem(Canvas: TCanvas; var ARect: TRect; + var ItemInfo: TTBXItemInfo); +var + R: TRect; + X, Y: Integer; + ArrowWidth: Integer; + ClrText: TColor; + + procedure DrawArrow(AColor: TColor); + begin + Canvas.Pen.Color := AColor; + Canvas.Brush.Color := AColor; + Canvas.Polygon([Point(X, Y - 3), Point(X, Y + 3), Point(X + 3, Y)]); + end; + +begin + with Canvas, ItemInfo do + begin + ArrowWidth := GetSystemMetrics(SM_CXMENUCHECK); + PaintMenuItemFrame(Canvas, ARect, ItemInfo); + ClrText := GetPartColor(ItemInfo, ipText); + R := ARect; + + if (ItemOptions and IO_COMBO) <> 0 then + begin + X := R.Right - ArrowWidth - 1; + if not ItemInfo.Enabled then Pen.Color := ClrText + else if HoverKind = hkMouseHover then Pen.Color := GetPartColor(ItemInfo, ipFrame) + else Pen.Color := PopupSeparatorColor; + MoveTo(X, R.Top + 1); + LineTo(X, R.Bottom - 1); + end; + + if (ItemOptions and IO_SUBMENUITEM) <> 0 then + begin + Y := ARect.Bottom div 2; + X := ARect.Right - ArrowWidth * 2 div 3 - 1; + DrawArrow(ClrText); + end; + + InflateRect(ARect, -1, -1); + + if Selected and Enabled then + begin + R := ARect; + R.Left := ARect.Left + 1; + R.Right := R.Left + ItemInfo.PopupMargin - 2; + FrameRectEx(Canvas, R, GetBtnColor(ItemInfo, ipFrame), True); + // rmk + FillGradient(Canvas.Handle, R, GetBtnColor(ItemInfo, ipBody), gradCol2, TGTopBottom); + //FillRectEx(Canvas, R, GetBtnColor(ItemInfo, ipBody)); + end; + end; +end; + +procedure TTBXOffice2003Theme.PaintPopupNCArea(Canvas: TCanvas; R: TRect; const PopupInfo: TTBXPopupInfo); +var + PR: TRect; +begin + with Canvas do + begin + Brush.Color := PopupFrameColor; + FrameRect(R); + InflateRect(R, -1, -1); + Brush.Color := PopupColor; + FillRect(R); + + if not IsRectEmpty(PopupInfo.ParentRect) then + begin + PR := PopupInfo.ParentRect; + if not IsRectEmpty(PR) then with PR do + begin + Pen.Color := ToolbarColor; + if Bottom = R.Top then + begin + if Left <= R.Left then Left := R.Left - 1; + if Right >= R.Right then Right := R.Right + 1; + MoveTo(Left + 1, Bottom - 1); + LineTo(Right - 1, Bottom- 1); + end + else if Top = R.Bottom then + begin + if Left <= R.Left then Left := R.Left - 1; + if Right >= R.Right then Right := R.Right + 1; + MoveTo(Left + 1, Top); + LineTo(Right - 1, Top); + end; + if Right = R.Left then + begin + if Top <= R.Top then Top := R.Top - 1; + if Bottom >= R.Bottom then Bottom := R.Bottom + 1; + MoveTo(Right - 1, Top + 1); + LineTo(Right - 1, Bottom - 1); + end + else if Left = R.Right then + begin + if Top <= R.Top then Top := R.Top - 1; + if Bottom >= R.Bottom then Bottom := R.Bottom + 1; + MoveTo(Left, Top + 1); + LineTo(Left, Bottom - 1); + end; + end; + end; + end; +end; + +procedure TTBXOffice2003Theme.PaintSeparator(Canvas: TCanvas; ARect: TRect; + ItemInfo: TTBXItemInfo; Horizontal, LineSeparator: Boolean); +var + IsToolbox: Boolean; + R: TRect; +begin + with ItemInfo, ARect, Canvas do + begin + if Horizontal then + begin + IsToolbox := (ViewType and PVT_TOOLBOX) = PVT_TOOLBOX; + if ((ItemOptions and IO_TOOLBARSTYLE) = 0) and not IsToolBox then + begin + R := ARect; + R.Right := ItemInfo.PopupMargin + 2; + Brush.Color := ToolbarColor; + //FillRect(R); + FillGradient(Canvas.Handle, R, gradCol1, gradCol2, tGLeftRight); + Inc(Left, ItemInfo.PopupMargin + 9); + Pen.Color := PopupSeparatorColor; + end + else + Pen.Color := ToolbarSeparatorColor; + + // rmkPaint + Top:= Bottom div 2; + Left:= Left + 1; + Right:= Right - 2; + Bottom:= Top + 1; + DrawLineEx(Canvas, Left, Top, Right, Top, clWhite); + Left:= Left - 1; + Right:= Right + 2; + DrawLineEx(Canvas, Left, Top, Right, Top, PopupSeparatorColor); + + //Top := Bottom div 2; + //MoveTo(Left, Top); LineTo(Right, Top); + end else begin + Top:= Top + 4; + Bottom:= Bottom - 4; + Left:= Right div 2; + DrawLineEx(Canvas, Left, Top, Left, Bottom, clWhite); + Top:= Top - 1; + Left:= Left - 1; + Bottom:= Bottom - 1; + DrawLineEx(Canvas, Left, Top, Left, Bottom, ToolbarSeparatorColor); + end; + end; +end; + +procedure DrawButtonBitmap(Canvas: TCanvas; R: TRect; Color: TColor); +const +{$IFNDEF SMALL_CLOSE_BUTTON} + Pattern: array [0..15] of Byte = + ($C3, 0, $66, 0, $3C, 0, $18, 0, $3C, 0, $66, 0, $C3, 0, 0, 0); +{$ELSE} + Pattern: array [0..15] of Byte = + (0, 0, $63, 0, $36, 0, $1C, 0, $1C, 0, $36, 0, $63, 0, 0, 0); +{$ENDIF} +var + Bmp: TBitmap; + W, H: Integer; + Index: Integer; +begin + Bmp := TBitmap.Create; + try + Bmp.Handle := CreateBitmap(8, 8, 1, 1, @Pattern); + Index := SaveDC(Canvas.Handle); + Canvas.Brush.Color := Color; + SetTextColor(Canvas.Handle, clBlack); + SetBkColor(Canvas.Handle, clWhite); + W := 8; + H := 7; + with R do + begin + BitBlt(Canvas.Handle, (Left + Right - W + 1) div 2, (Top + Bottom - H) div 2, W, H, + Bmp.Canvas.Handle, 0, 0, ROP_DSPDxax); + end; + RestoreDC(Canvas.Handle, Index); + finally + Bmp.Free; + end; +end; + +procedure TTBXOffice2003Theme.PaintToolbarNCArea(Canvas: TCanvas; R: TRect; + const ToolbarInfo: TTBXToolbarInfo); +const + DragHandleOffsets: array [Boolean, DHS_DOUBLE..DHS_SINGLE] of Integer = ((2, 0, 1), (5, 0, 5)); + + function GetBtnItemState(BtnState: Integer): TBtnItemState; + begin + if (BtnState and CDBS_PRESSED) <> 0 then Result := bisPressed + else if (BtnState and CDBS_HOT) <> 0 then Result := bisHot + else Result := bisNormal; + end; + +var + Sz: Integer; + R2: TRect; + C: TColor; + Hi1, Lo1, Hi2, Lo2, Hi3, Lo3, Hi4: TColor; + I: Integer; + BtnVisible, Horz: Boolean; + BtnItemState: TBtnItemState; +begin + with Canvas do + begin + if ((ToolbarInfo.ViewType and TVT_NORMALTOOLBAR) = TVT_NORMALTOOLBAR) then begin + with R do begin + if (R.Right > R.Bottom) then begin + FillGradient(Canvas.Handle, R, gradCol1, gradCol2, TGTopBottom); + R2:= R; + R2.Left:= R2.Right - 1; + FillGradient(Canvas.Handle, R2, GradBL, gradCol1, TGTopBottom); + + Pen.Color:= gradBL; + MoveTo(Left+ 1, Bottom - 1); + LineTo(Right-1, Bottom - 1); + + Pen.Color:= gradCol1; + MoveTo(Right-1, Bottom - 1); + LineTo(Right-1, Bottom - 2); + + Pen.Color:= gradCol1; + MoveTo(Left, Top); + LineTo(Left, Top + 1); + MoveTo(Right-2, Top); + LineTo(Right-2, Top + 1); + end else begin + FillGradient(Canvas.Handle, R, gradCol1, gradCol2, TGLeftRight); + R2:= R; + R2.Top:= R2.Bottom - 1; + FillGradient(Canvas.Handle, R2, GradBL, gradCol1, TGLeftRight); + + Pen.Color:= gradBL;; + MoveTo(Right-1, Top + 1); + LineTo(Right-1, Bottom - 1); + Pen.Color:= gradCol1; + MoveTo(Left, Top); + LineTo(Left, Top + 1); + MoveTo(Left, Bottom - 2); + LineTo(Left, Bottom); + end; + end; + InflateRect(R, -2, -2); + end else + begin + FillGradient(Handle, R, gradCol2, gradCol1, TGLeftRight); + InflateRect(R, -2, -2); + end; + + if not ToolbarInfo.AllowDrag then Exit; + + BtnVisible := (ToolbarInfo.CloseButtonState and CDBS_VISIBLE) <> 0; + Sz := GetTBXDragHandleSize(ToolbarInfo); + Horz := not ToolbarInfo.IsVertical; + if Horz then R.Right := R.Left + Sz + else R.Bottom := R.Top + Sz; + + { Drag Handle } + c:= gradHandle1;//clBtnFace; clBtnShadow + Brush.Color:= c; + Hi1:= GetNearestColor(Handle, MixColors(c, gradHandle2, 64)); + Lo1:= GetNearestColor(Handle, MixColors(c, gradHandle2, 48)); + Hi2:= GetNearestColor(Handle, MixColors(c, gradHandle2, 32)); + Lo2:= GetNearestColor(Handle, MixColors(c, gradHandle2, 16)); + Hi3:= GetNearestColor(Handle, MixColors(c, gradHandle3, 128)); + Lo3:= GetNearestColor(Handle, MixColors(c, gradHandle3, 96)); + Hi4:= GetNearestColor(Handle, MixColors(c, gradHandle3, 72)); + +{ if (ToolbarInfo.ViewType and TVT_MENUBAR) <> TVT_MenuBar then + begin + if (R.Right < R.Bottom) then begin + R.Left:= R.Left - 1; + R.Bottom:= R.Bottom + 1; + FillGradient(Canvas.Handle, R, gradCol1, gradCol2, TGTopBottom); + with R do + begin + Pixels[Left, Top]:= gradCol1; + Pixels[Left, Bottom - 2]:= gradCol1; + end; + R.Bottom:= R.Bottom - 1; + R.Left:= R.Left + 1 + end else begin + R.Top:= R.Top - 1; + R.Right:= R.Right + 1; + FillGradient(Canvas.Handle, R, gradCol1, gradCol2, TGLeftRight); + with R do + begin + Pixels[Left, Top]:= gradCol1; + Pixels[Right - 2, Top]:= gradCol1; + end; + R.Right:= R.Right - 1; + R.Top:= R.Top + 1; + end; + end; +} + if ToolbarInfo.DragHandleStyle <> DHS_NONE then + begin + R2:= R; + if Horz then + begin + Inc(R2.Top, 4); + Dec(R2.Bottom, 2); + Inc(R2.Left, 1); + if BtnVisible then begin + Inc(R2.Top, Sz - 2); + Inc(R2.Left, 4); + Dec(R2.Right, 4); + end; + i:= R2.Top; + while (i < R2.Bottom-3) do + begin + Pixels[R2.Left, i]:= Hi1; + Pixels[R2.Left, i + 1]:= Hi2; + Pixels[R2.Left + 1, i]:= Lo1; + Pixels[R2.Left + 1, i + 1]:= Lo2; + Pixels[R2.Left + 1, i + 2]:= Hi4; + Pixels[R2.Left + 2, i + 2]:= Hi3; + Pixels[R2.Left + 2, i + 1]:= Lo3; + if ToolbarInfo.DragHandleStyle = DHS_DOUBLE then + begin + Pixels[R2.Left + 4, i]:= Hi1; + Pixels[R2.Left + 4, i + 1]:= Hi2; + Pixels[R2.Left + 4 + 1, i]:= Lo1; + Pixels[R2.Left + 4 + 1, i + 1]:= Lo2; + Pixels[R2.Left + 4 + 1, i + 2]:= Hi4; + Pixels[R2.Left + 4 + 2, i + 2]:= Hi3; + Pixels[R2.Left + 4 + 2, i + 1]:= Lo3; + end; + Inc(i, 4); + end; + end else + begin + Inc(R2.Left, 4); + Dec(R2.Right, 2); + Inc(R2.Top, 1); + if BtnVisible then begin + Dec(R2.Right, Sz - 2); + Inc(R2.Top, 4); + Dec(R2.Bottom, 4); + end; + i:= R2.Left; + while (i < R2.Right-3) do + begin + Pixels[i, R2.Top]:= Hi1; + Pixels[i, R2.Top + 1]:= Hi2; + Pixels[i + 1, R2.Top]:= Lo1; + Pixels[i + 1, R2.Top + 1]:= Lo2; + Pixels[i + 1, R2.Top + 2]:= Hi4; + Pixels[i + 2, R2.Top + 2]:= Hi3; + Pixels[i + 2, R2.Top + 1]:= Lo3; + if ToolbarInfo.DragHandleStyle = DHS_DOUBLE then + begin + Pixels[i, R2.Top + 4]:= Hi1; + Pixels[i, R2.Top + 1 + 4]:= Hi2; + Pixels[i + 1, R2.Top + 4]:= Lo1; + Pixels[i + 1, R2.Top + 1 + 4]:= Lo2; + Pixels[i + 1, R2.Top + 2 + 4]:= Hi4; + Pixels[i + 2, R2.Top + 2 + 4]:= Hi3; + Pixels[i + 2, R2.Top + 1 + 4]:= Lo3; + end; + Inc(i, 4); + end; + end; + end; + + { Close button } + if BtnVisible then + begin + R2 := R; + if Horz then + begin + Dec(R2.Right); + R2.Bottom := R2.Top + R2.Right - R2.Left; + end + else + begin + Dec(R2.Bottom); + R2.Left := R2.Right - R2.Bottom + R2.Top; + end; + + BtnItemState := GetBtnItemState(ToolbarInfo.CloseButtonState); + FrameRectEx(Canvas, R2, BtnItemColors[BtnItemState, ipFrame], True); + FillRectEx(Canvas, R2, BtnItemColors[BtnItemState, ipBody]); + DrawButtonBitmap(Canvas, R2, BtnItemColors[BtnItemState, ipText]); + end; + end; +end; + + +procedure TTBXOffice2003Theme.PaintDockPanelNCArea(Canvas: TCanvas; R: TRect; const DockPanelInfo: TTBXDockPanelInfo); + + function GetBtnItemState(BtnState: Integer): TBtnItemState; + begin + if (BtnState and CDBS_PRESSED) <> 0 then Result := bisPressed + else if (BtnState and CDBS_HOT) <> 0 then Result := bisHot + else Result := bisNormal; + end; + +var + C, HeaderColor: TColor; + I, Sz, Flags: Integer; + R2: TRect; + BtnItemState: TBtnItemState; +begin + with Canvas, DockPanelInfo do + begin + C := Brush.Color; // Dock panel passes its body color in Canvas.Brush + I := ColorIntensity(ColorToRGB(clBtnFace)); + R2 := R; + if not TBXLoColor and (I in [64..250]) then + begin + FrameRectEx(Canvas, R, clBtnFace, True); + FrameRectEx(Canvas, R, C); + with R do + begin + Pixels[Left, Top] := clBtnFace; + if IsVertical then Pixels[Right - 1, Top] := clBtnFace + else Pixels[Left, Bottom - 1] := clBtnFace; + end; + end + else + begin + FrameRectEx(Canvas, R, C, True); + if I < 64 then Brush.Bitmap := AllocPatternBitmap(C, clWhite) + else Brush.Bitmap := AllocPatternBitmap(C, clBtnShadow); + FrameRect(R); + with R do + begin + Pixels[Left, Top] := C; + if IsVertical then Pixels[Right - 1, Top] := C + else Pixels[Left, Bottom - 1] := C; + end; + InflateRect(R, -1, -1); + FrameRectEx(Canvas, R, C); + end; + R := R2; + InflateRect(R, -BorderSize.X, -BorderSize.Y); + Sz := GetSystemMetrics(SM_CYSMCAPTION); + if IsVertical then + begin + R.Bottom := R.Top + Sz - 1; + DrawLineEx(Canvas, R.Left, R.Bottom, R.Right, R.Bottom, C); + end + else + begin + R.Right := R.Left + Sz - 1; + DrawLineEx(Canvas, R.Right, R.Top, R.Right, R.Bottom, C); + end; + HeaderColor := clBtnFace; + FillRectEx(Canvas, R, HeaderColor); + + if (CDBS_VISIBLE and CloseButtonState) <> 0 then + begin + R2 := R; + if IsVertical then + begin + R2.Left := R2.Right - Sz + 1; + R.Right := R2.Left; + end + else + begin + R2.Top := R2.Bottom - Sz + 1; + R.Bottom := R2.Top; + end; + + BtnItemState := GetBtnItemState(CloseButtonState); + FrameRectEx(Canvas, R2, BtnItemColors[BtnItemState, ipFrame], True); + FillRectEx(Canvas, R2, BtnItemColors[BtnItemState, ipBody]); + DrawButtonBitmap(Canvas, R2, BtnItemColors[BtnItemState, ipText]); + end; + + + if IsVertical then InflateRect(R, -4, 0) + else InflateRect(R, 0, -4); + Font.Assign(SmCaptionFont); + Font.Color := clBtnText; + Brush.Color := HeaderColor; + Brush.Style := bsSolid; + Flags := DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS or DT_HIDEPREFIX; + if IsVertical then DrawText(Canvas.Handle, Caption, -1, R, Flags) + else DrawRotatedText(Canvas.Handle, string(Caption), R, Flags); + end; +end; + +procedure TTBXOffice2003Theme.SetupColorCache; +var + DC: HDC; + HotBtnFace, DisabledText: TColor; + + procedure Undither(var C: TColor); + begin + if C <> clNone then C := GetNearestColor(DC, ColorToRGB(C)); + end; + +begin + DC := StockCompatibleBitmap.Canvas.Handle; + + // gradColors rmk + gradCol1:= clBtnFace; + gradCol2:= RGB(245, 244, 242); + gradHandle1:= clBtnFace; + gradHandle2:= clGray; + gradHandle3:= clWhite; + gradBL:= RGB(219, 216, 209); //clBtnShadow; + + // alternativ colors why not give it a try! + // Blue + { + gradCol1:= $00FECA9C; + gradCol2:= clWhite; + gradHandle1:= $00FECA9C; + gradHandle2:= clNavy; + gradHandle3:= clWhite; + gradBL:= clNavy; + } + + //Olive + { + gradCol1:= $009CCFCF; + gradCol2:= clWhite; + gradHandle1:= $009CCFCF; + gradHandle2:= clOlive; + gradHandle3:= clWhite; + gradBL:= clOlive; + + // Maybe these are better? + gradCol1:= $00B8DCDC; + gradHandle1:= $00B8DCDC; + } + + // gradColors rmk end + + if TBXLoColor then + begin + { View/Window Colors } + MenubarColor := clBtnFace; + ToolbarColor := clBtnFace; + PopupColor := clWindow; + DockPanelColor := clWindow; + StatusPanelFrameColor := clBtnShadow; + + PopupFrameColor := clBtnText; + WinFrameColors[wfsActive, wfpBorder] := clBtnShadow; + WinFrameColors[wfsActive, wfpCaption] := clBtnShadow; + WinFrameColors[wfsActive, wfpCaptionText] := clBtnHighlight; + WinFrameColors[wfsInactive, wfpBorder] := clBtnShadow; + WinFrameColors[wfsInactive, wfpCaption] := clBtnShadow; + WinFrameColors[wfsInactive, wfpCaptionText] := clBtnHighlight; + + PnlFrameColors[wfsActive, wfpBorder] := clBtnShadow; + PnlFrameColors[wfsActive, wfpCaption] := clBtnFace; + PnlFrameColors[wfsActive, wfpCaptionText] := clBtnText; + PnlFrameColors[wfsInactive, wfpBorder] := clBtnShadow; + PnlFrameColors[wfsInactive, wfpCaption] := clBtnFace; + PnlFrameColors[wfsInactive, wfpCaptionText] := clBtnText; + + MenuItemColors[misNormal, ipBody] := clNone; + MenuItemColors[misNormal, ipText] := clWindowText; + MenuItemColors[misNormal, ipFrame] := clNone; + MenuItemColors[misDisabled, ipBody] := clNone; + MenuItemColors[misDisabled, ipText] := clGrayText; + MenuItemColors[misDisabled, ipFrame] := clNone; + MenuItemColors[misHot, ipBody] := clWindow; + MenuItemColors[misHot, ipText] := clWindowtext; + MenuItemColors[misHot, ipFrame] := clHighlight; + MenuItemColors[misDisabledHot, ipBody] := clWindow; + MenuItemColors[misDisabledHot, ipText] := clGrayText; + MenuItemColors[misDisabledHot, ipFrame] := clHighlight; + + BtnItemColors[bisNormal, ipBody] := clNone; + BtnItemColors[bisNormal, ipText] := clBtnText; + BtnItemColors[bisNormal, ipFrame] := clNone; + BtnItemColors[bisDisabled, ipBody] := clNone; + BtnItemColors[bisDisabled, ipText] := clBtnShadow; + BtnItemColors[bisDisabled, ipFrame] := clNone; + BtnItemColors[bisSelected, ipBody] := clWindow; + BtnItemColors[bisSelected, ipText] := clWindowText; + BtnItemColors[bisSelected, ipFrame] := clHighlight; + BtnItemColors[bisPressed, ipBody] := clHighlight; + BtnItemColors[bisPressed, ipText] := clHighlightText; + BtnItemColors[bisPressed, ipFrame] := clHighlight; + BtnItemColors[bisHot, ipBody] := clWindow; + BtnItemColors[bisHot, ipText] := clWindowText; + BtnItemColors[bisHot, ipFrame] := clHighlight; + BtnItemColors[bisDisabledHot, ipBody] := clWindow; + BtnItemColors[bisDisabledHot, ipText] := clBtnShadow; + BtnItemColors[bisDisabledHot, ipFrame] := clHighlight; + BtnItemColors[bisSelectedHot, ipBody] := clHighlight; + BtnItemColors[bisSelectedHot, ipText] := clHighlightText; + BtnItemColors[bisSelectedHot, ipFrame] := clHighlight; + BtnItemColors[bisPopupParent, ipBody] := clBtnFace; + BtnItemColors[bisPopupParent, ipText] := clBtnText; + BtnItemColors[bisPopupParent, ipFrame] := PopupFrameColor; + + { Other Colors } + DragHandleColor := clBtnText; + IconShadowColor := clBtnFace; + PopupSeparatorColor := RGB(166,166,166); //clBtnShadow; + ToolbarSeparatorColor := RGB(166,166,166); //clBtnShadow; + end + else + begin + { View/Window Colors } + MenubarColor := gradCol1; + ToolbarColor := gradCol2; + PopupColor := Blend(clBtnFace, clWindow, 143); + DockPanelColor := PopupColor; + PopupFrameColor := Blend(clBtnText, clBtnShadow, 20); + SetContrast(PopupFrameColor, PopupColor, 100); + + HotBtnFace := Blend(clHighlight, clWindow, 30); + SetContrast(HotBtnFace, ToolbarColor, 50); + DisabledText := Blend(clBtnshadow, clWindow, 90); + + WinFrameColors[wfsActive, wfpBorder] := Blend(clBtnText, clBtnShadow, 15); + SetContrast(WinFrameColors[wfsActive, wfpBorder], ToolbarColor, 120); + WinFrameColors[wfsActive, wfpCaption] := clBtnShadow; + WinFrameColors[wfsActive, wfpCaptionText] := clBtnHighlight; + SetContrast(WinFrameColors[wfsActive, wfpCaptionText], clBtnShadow, 180); + WinFrameColors[wfsInactive, wfpBorder] := WinFrameColors[wfsActive, wfpBorder]; + WinFrameColors[wfsInactive, wfpCaption] := clBtnFace; + WinFrameColors[wfsInactive, wfpCaptionText] := DisabledText; + SetContrast(WinFrameColors[wfsInactive, wfpCaptionText], clBtnFace, 120); + + PnlFrameColors[wfsActive, wfpBorder] := clBtnShadow; + PnlFrameColors[wfsActive, wfpCaption] := clBtnFace; + PnlFrameColors[wfsActive, wfpCaptionText] := clBtnText; + PnlFrameColors[wfsInactive, wfpBorder] := clBtnShadow; + PnlFrameColors[wfsInactive, wfpCaption] := clBtnFace; + PnlFrameColors[wfsInactive, wfpCaptionText] := DisabledText; + SetContrast(PnlFrameColors[wfsInactive, wfpCaptionText], clBtnFace, 120); + + BtnItemColors[bisNormal, ipBody] := clNone; + BtnItemColors[bisNormal, ipText] := clBtnText; + SetContrast(BtnItemColors[bisNormal, ipText], ToolbarColor, 180); + BtnItemColors[bisNormal, ipFrame] := clNone; + BtnItemColors[bisDisabled, ipBody] := clNone; + BtnItemColors[bisDisabled, ipText] := DisabledText; + SetContrast(BtnItemColors[bisDisabled, ipText], ToolbarColor, 80); + BtnItemColors[bisDisabled, ipFrame] := clNone; + BtnItemColors[bisSelected, ipBody] := Blend(clHighlight, Blend(clBtnFace, clWindow, 50), 10); + SetContrast(BtnItemColors[bisSelected, ipBody], ToolbarColor, 5); + BtnItemColors[bisSelected, ipText] := BtnItemColors[bisNormal, ipText]; + BtnItemColors[bisSelected, ipFrame] := clHighlight; + BtnItemColors[bisPressed, ipBody] := Blend(clHighlight, clWindow, 50); + BtnItemColors[bisPressed, ipText] := clHighlightText; + BtnItemColors[bisPressed, ipFrame] := clHighlight; + BtnItemColors[bisHot, ipBody] := HotBtnFace; + BtnItemColors[bisHot, ipText] := clMenuText; + SetContrast(BtnItemColors[bisHot, ipText], BtnItemColors[bisHot, ipBody], 180); + BtnItemColors[bisHot, ipFrame] := clHighlight; + SetContrast(BtnItemColors[bisHot, ipFrame], ToolbarColor, 100); + BtnItemColors[bisDisabledHot, ipBody] := HotBtnFace; + BtnItemColors[bisDisabledHot, ipText] := DisabledText; + BtnItemColors[bisDisabledHot, ipFrame] := clHighlight; + BtnItemColors[bisSelectedHot, ipBody] := Blend(clHighlight, clWindow, 50); + SetContrast(BtnItemColors[bisSelectedHot, ipBody], ToolbarColor, 30); + BtnItemColors[bisSelectedHot, ipText] := clHighlightText; + SetContrast(BtnItemColors[bisSelectedHot, ipText], BtnItemColors[bisSelectedHot, ipBody], 180); + BtnItemColors[bisSelectedHot, ipFrame] := clHighlight; + SetContrast(BtnItemColors[bisSelectedHot, ipFrame], BtnItemColors[bisSelectedHot, ipBody], 100); + BtnItemColors[bisPopupParent, ipBody] := ToolbarColor; + BtnItemColors[bisPopupParent, ipText] := BtnItemColors[bisNormal, ipText]; + BtnItemColors[bisPopupParent, ipFrame] := PopupFrameColor; + + MenuItemColors[misNormal, ipBody] := clNone; + MenuItemColors[misNormal, ipText] := clWindowText; + SetContrast(MenuItemColors[misNormal, ipText], PopupColor, 180); + + MenuItemColors[misNormal, ipFrame] := clNone; + MenuItemColors[misDisabled, ipBody] := clNone; + MenuItemColors[misDisabled, ipText] := Blend(clGrayText, clWindow, 70); + SetContrast(MenuItemColors[misDisabled, ipText], PopupColor, 80); // 145? + MenuItemColors[misDisabled, ipFrame] := clNone; + + MenuItemColors[misHot, ipBody] := BtnItemColors[bisHot, ipBody]; + MenuItemColors[misHot, ipText] := BtnItemColors[bisHot, ipText]; + MenuItemColors[misHot, ipFrame] := BtnItemColors[bisHot, ipFrame]; + MenuItemColors[misDisabledHot, ipBody] := PopupColor; + MenuItemColors[misDisabledHot, ipText] := Blend(clGrayText, clWindow, 70); + MenuItemColors[misDisabledHot, ipFrame] := clHighlight; + + + DragHandleColor := Blend(clBtnShadow, clWindow, 75); + SetContrast(DragHandleColor, ToolbarColor, 85); + IconShadowColor := Blend(clBlack, HotBtnFace, 25); + ToolbarSeparatorColor := Blend(clBtnShadow, clWindow, 70); + SetContrast(ToolbarSeparatorColor, ToolbarColor, 50); + PopupSeparatorColor := ToolbarSeparatorColor; + StatusPanelFrameColor := Blend(clWindow, clBtnFace, 30); + SetContrast(StatusPanelFrameColor, clBtnFace, 30); + + Undither(MenubarColor); + Undither(ToolbarColor); + Undither(PopupColor); + Undither(DockPanelColor); + Undither(PopupFrameColor); + Undither(WinFrameColors[wfsActive, wfpBorder]); + Undither(WinFrameColors[wfsActive, wfpCaption]); + Undither(WinFrameColors[wfsActive, wfpCaptionText]); + Undither(WinFrameColors[wfsInactive, wfpBorder]); + Undither(WinFrameColors[wfsInactive, wfpCaption]); + Undither(WinFrameColors[wfsInactive, wfpCaptionText]); + Undither(PnlFrameColors[wfsActive, wfpBorder]); + Undither(PnlFrameColors[wfsActive, wfpCaption]); + Undither(PnlFrameColors[wfsActive, wfpCaptionText]); + Undither(PnlFrameColors[wfsInactive, wfpBorder]); + Undither(PnlFrameColors[wfsInactive, wfpCaption]); + Undither(PnlFrameColors[wfsInactive, wfpCaptionText]); + Undither(BtnItemColors[bisNormal, ipBody]); + Undither(BtnItemColors[bisNormal, ipText]); + Undither(BtnItemColors[bisNormal, ipFrame]); + Undither(BtnItemColors[bisDisabled, ipBody]); + Undither(BtnItemColors[bisDisabled, ipText]); + Undither(BtnItemColors[bisDisabled, ipFrame]); + Undither(BtnItemColors[bisSelected, ipBody]); + Undither(BtnItemColors[bisSelected, ipText]); + Undither(BtnItemColors[bisSelected, ipFrame]); + Undither(BtnItemColors[bisPressed, ipBody]); + Undither(BtnItemColors[bisPressed, ipText]); + Undither(BtnItemColors[bisPressed, ipFrame]); + Undither(BtnItemColors[bisHot, ipBody]); + Undither(BtnItemColors[bisHot, ipText]); + Undither(BtnItemColors[bisHot, ipFrame]); + Undither(BtnItemColors[bisDisabledHot, ipBody]); + Undither(BtnItemColors[bisDisabledHot, ipText]); + Undither(BtnItemColors[bisDisabledHot, ipFrame]); + Undither(BtnItemColors[bisSelectedHot, ipBody]); + Undither(BtnItemColors[bisSelectedHot, ipText]); + Undither(BtnItemColors[bisSelectedHot, ipFrame]); + Undither(BtnItemColors[bisPopupParent, ipBody]); + Undither(BtnItemColors[bisPopupParent, ipText]); + Undither(BtnItemColors[bisPopupParent, ipFrame]); + Undither(MenuItemColors[misNormal, ipBody]); + Undither(MenuItemColors[misNormal, ipText]); + Undither(MenuItemColors[misNormal, ipFrame]); + Undither(MenuItemColors[misDisabled, ipBody]); + Undither(MenuItemColors[misDisabled, ipText]); + Undither(MenuItemColors[misDisabled, ipFrame]); + Undither(MenuItemColors[misHot, ipBody]); + Undither(MenuItemColors[misHot, ipText]); + Undither(MenuItemColors[misHot, ipFrame]); + Undither(MenuItemColors[misDisabledHot, ipBody]); + Undither(MenuItemColors[misDisabledHot, ipText]); + Undither(MenuItemColors[misDisabledHot, ipFrame]); + Undither(DragHandleColor); + Undither(IconShadowColor); + Undither(ToolbarSeparatorColor); + Undither(PopupSeparatorColor); + Undither(StatusPanelFrameColor); + end; +end; + +function TTBXOffice2003Theme.GetPopupShadowType: Integer; +begin + Result := PST_OFFICEXP; +end; + +constructor TTBXOffice2003Theme.Create(const AName: string); +begin + inherited; + if CounterLock = 0 then InitializeStock; + Inc(CounterLock); + AddTBXSysChangeNotification(Self); + SetupColorCache; +end; + +destructor TTBXOffice2003Theme.Destroy; +begin + RemoveTBXSysChangeNotification(Self); + Dec(CounterLock); + if CounterLock = 0 then FinalizeStock; + inherited; +end; + +procedure TTBXOffice2003Theme.GetViewMargins(ViewType: Integer; + out Margins: TTBXMargins); +begin + Margins.LeftWidth := 0; + Margins.TopHeight := 0; + Margins.RightWidth := 0; + Margins.BottomHeight := 0; +end; + +procedure TTBXOffice2003Theme.PaintPageScrollButton(Canvas: TCanvas; + const ARect: TRect; ButtonType: Integer; Hot: Boolean); +var + R: TRect; + X, Y, Sz: Integer; +begin + R := ARect; + if Hot then Canvas.Brush.Color := BtnItemColors[bisHot, ipFrame] + else Canvas.Brush.Color := clBtnShadow; + Canvas.FrameRect(R); + if Hot then Canvas.Brush.Color := BtnItemColors[bisHot, ipBody] + else Canvas.Brush.Color := clBtnFace; + InflateRect(R, -1, -1); + Canvas.FillRect(R); + X := (R.Left + R.Right) div 2; + Y := (R.Top + R.Bottom) div 2; + Sz := Min(X - R.Left, Y - R.Top) * 3 div 4; + if Hot then Canvas.Pen.Color := BtnItemColors[bisHot, ipText] + else Canvas.Pen.Color := BtnItemColors[bisNormal, ipText]; + Canvas.Brush.Color := Canvas.Pen.Color; + case ButtonType of + PSBT_UP: + begin + Inc(Y, Sz div 2); + Canvas.Polygon([Point(X + Sz, Y), Point(X, Y - Sz), Point(X - Sz, Y)]); + end; + PSBT_DOWN: + begin + Y := (R.Top + R.Bottom - 1) div 2; + Dec(Y, Sz div 2); + Canvas.Polygon([Point(X + Sz, Y), Point(X, Y + Sz), Point(X - Sz, Y)]); + end; + PSBT_LEFT: + begin + Inc(X, Sz div 2); + Canvas.Polygon([Point(X, Y + Sz), Point(X - Sz, Y), Point(X, Y - Sz)]); + end; + PSBT_RIGHT: + begin + X := (R.Left + R.Right - 1) div 2; + Dec(X, Sz div 2); + Canvas.Polygon([Point(X, Y + Sz), Point(X + Sz, Y), Point(X, Y - Sz)]); + end; + end; +end; + +procedure TTBXOffice2003Theme.PaintGlyph(Canvas: TCanvas; R: TRect; Kind, State: Integer); +var + X, Y: Integer; + + procedure SetupPen; + begin + if Boolean(State and GS_DISABLED) then Canvas.Pen.Color := clBtnShadow + else if Boolean(State and GS_PUSHED) then Canvas.Pen.Color := BtnItemColors[bisPressed, ipFrame] + else if Boolean(State and GS_HOT) then Canvas.Pen.Color := BtnItemColors[bisHot, ipFrame] + else Canvas.Pen.Color := clBtnShadow; + end; + + procedure SetupBrush; + begin + Canvas.Brush.Style := bsSolid; + if Boolean(State and GS_DISABLED) then Canvas.Brush.Style := bsClear + else if Boolean(State and GS_PUSHED) then Canvas.Brush.Color := BtnItemColors[bisPressed, ipBody] + else if Boolean(State and GS_HOT) then Canvas.Brush.Color := BtnItemColors[bisHot, ipBody] + else if Boolean(State and GS_MIXED) then Canvas.Brush.Bitmap := AllocPatternBitmap(clWindow, clBtnFace) + else Canvas.Brush.Style := bsClear; + end; + + function TextColor: TColor; + begin + if Boolean(State and GS_DISABLED) then Result := BtnItemColors[bisDisabled, ipText] + else if Boolean(State and GS_PUSHED) then Result := BtnItemColors[bisPressed, ipText] + else if Boolean(State and GS_MIXED) then Result := clBtnShadow + else if Boolean(State and GS_HOT) then Result := BtnItemColors[bisHot, ipText] + else Result := BtnItemColors[bisNormal, ipText]; + end; + + procedure DiagLine(C: TColor); + begin + with Canvas, R do + begin + Pen.Color := C; + MoveTo(Right - 1 - X, Bottom - 1); LineTo(Right, Bottom - X - 2); + Inc(X); + end; + end; + +begin + with Canvas do case Kind of + GK_CHECKBOX: + begin + SetupPen; + SetupBrush; + InflateRect(R, -1, -1); + with R do Rectangle(Left, Top, Right, Bottom); + Pen.Style := psSolid; + Brush.Style := bsSolid; + + if Boolean(State and (GS_CHECKED or GS_MIXED)) then + begin + X := (R.Left + R.Right) div 2 - 1; + Y := (R.Top + R.Bottom) div 2 + 1; + Pen.Color := TextColor; + Brush.Color := Pen.Color; + Polygon([Point(X-2, Y), Point(X, Y+2), Point(X+4, Y-2), + Point(X+4, Y-4), Point(X, Y), Point(X-2, Y-2), Point(X-2, Y)]); + end; + end; + GK_RADIOBUTTON: + begin + SetupPen; + SetupBrush; + InflateRect(R, -1, -1); + with R do Ellipse(Left, Top, Right, Bottom); + Pen.Style := psSolid; + Brush.Style := bsSolid; + if Boolean(State and GS_CHECKED) then + begin + InflateRect(R, -3, -3); + Pen.Color := TextColor; + Brush.Color := Pen.Color; + with R do Ellipse(Left, Top, Right, Bottom); + end; + end; + end; +end; + +procedure TTBXOffice2003Theme.PaintStatusBar(Canvas: TCanvas; R: TRect; Part: Integer); +var + I, D, Sz: integer; + + procedure DiagLine(C: TColor); + begin + with R do + DrawLineEx(Canvas, Right - 1 - D, Bottom - 1, Right, Bottom - D - 2, C); + Inc(D); + end; + +begin + with Canvas do + case Part of + SBP_BODY: + begin + FillRectEx(Canvas, R, clBtnFace); + end; + SBP_PANE, SBP_LASTPANE: + begin + if Part = SBP_PANE then Dec(R.Right, 2); + FrameRectEx(Canvas, R, StatusPanelFrameColor); + end; + SBP_GRIPPER: + begin + D := 0; + Sz := Min(R.Right - R.Left, R.Bottom - R.Top); + //for I := 1 to 3 do + case Sz of + 0..8: + begin + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + end; + 9..11: + begin + DiagLine(clBtnFace); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + DiagLine(clBtnFace); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + DiagLine(clBtnFace); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + end; + 12..14: + begin + DiagLine(clBtnShadow); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + DiagLine(clBtnShadow); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + DiagLine(clBtnShadow); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + end; + else + DiagLine(clBtnShadow); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + DiagLine(clBtnFace); + DiagLine(clBtnShadow); + DiagLine(clBtnShadow); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + DiagLine(clBtnFace); + DiagLine(clBtnShadow); + DiagLine(clBtnShadow); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + end; + end; + end; +end; + +procedure TTBXOffice2003Theme.TBXSysCommand(var Message: TMessage); +begin + if Message.WParam = TSC_VIEWCHANGE then SetupColorCache; +end; + +initialization + RegisterTBXTheme('Office2003', TTBXOffice2003Theme); +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXOfficeXPTheme.pas b/official/2.1.6+2.1.beta1/TBX/TBXOfficeXPTheme.pas new file mode 100644 index 0000000..d7d6397 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXOfficeXPTheme.pas @@ -0,0 +1,1700 @@ +unit TBXOfficeXPTheme; + +// TBX Package +// Copyright 2001-2004 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// $Id: TBXOfficeXPTheme.pas 16 2004-05-26 02:02:55Z Alex@ZEISS $ + +interface + +{$I ..\..\Source\TB2Ver.inc} +{$I TBX.inc} + +uses + Windows, Messages, Graphics, TBXThemes, TBXDefaultTheme, ImgList; + +{$DEFINE ALTERNATIVE_DISABLED_STYLE} // remove the asterisk to change appearance of disabled images + +type + TItemPart = (ipBody, ipText, ipFrame); + TBtnItemState = (bisNormal, bisDisabled, bisSelected, bisPressed, bisHot, + bisDisabledHot, bisSelectedHot, bisPopupParent); + TMenuItemState = (misNormal, misDisabled, misHot, misDisabledHot); + TWinFramePart = (wfpBorder, wfpCaption, wfpCaptionText); + TWinFrameState = (wfsActive, wfsInactive); + + TTBXOfficeXPTheme = class(TTBXTheme) + private + procedure TBXSysCommand(var Message: TMessage); message TBX_SYSCOMMAND; + protected + { View/Window Colors } + MenubarColor: TColor; + ToolbarColor: TColor; + PopupColor: TColor; + DockPanelColor: TColor; + PopupFrameColor: TColor; + WinFrameColors: array [TWinFrameState, TWinFramePart] of TColor; + PnlFrameColors: array [TWinFrameState, TWinFramePart] of TColor; + MenuItemColors: array [TMenuItemState, TItemPart] of TColor; + BtnItemColors: array [TBtnItemState, TItemPart] of TColor; + + { Other Colors } + DragHandleColor: TColor; + PopupSeparatorColor: TColor; + ToolbarSeparatorColor: TColor; + IconShadowColor: TColor; + StatusPanelFrameColor: TColor; + + procedure SetupColorCache; virtual; + protected + { Internal Methods } + function GetPartColor(const ItemInfo: TTBXItemInfo; ItemPart: TItemPart): TColor; + function GetBtnColor(const ItemInfo: TTBXItemInfo; ItemPart: TItemPart): TColor; + public + constructor Create(const AName: string); override; + destructor Destroy; override; + + { Metrics access} + function GetBooleanMetrics(Index: Integer): Boolean; override; + function GetIntegerMetrics(Index: Integer): Integer; override; + procedure GetMargins(MarginID: Integer; out Margins: TTBXMargins); override; + function GetImageOffset(Canvas: TCanvas; const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList): TPoint; override; + function GetItemColor(const ItemInfo: TTBXItemInfo): TColor; override; + function GetItemTextColor(const ItemInfo: TTBXItemInfo): TColor; override; + function GetItemImageBackground(const ItemInfo: TTBXItemInfo): TColor; override; + function GetPopupShadowType: Integer; override; + procedure GetViewBorder(ViewType: Integer; out Border: TPoint); override; + function GetViewColor(AViewType: Integer): TColor; override; + procedure GetViewMargins(ViewType: Integer; out Margins: TTBXMargins); override; + + { Painting routines } + procedure PaintBackgnd(Canvas: TCanvas; const ADockRect, ARect, AClipRect: TRect; AColor: TColor; Transparent: Boolean; AViewType: Integer); override; + procedure PaintButton(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintCaption(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo; const ACaption: string; AFormat: Cardinal; Rotated: Boolean); override; + procedure PaintCheckMark(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintChevron(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintDock(Canvas: TCanvas; const ClientRect, DockRect: TRect; DockPosition: Integer); override; + procedure PaintDockPanelNCArea(Canvas: TCanvas; R: TRect; const DockPanelInfo: TTBXDockPanelInfo); override; + procedure PaintDropDownArrow(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintEditButton(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo; ButtonInfo: TTBXEditBtnInfo); override; + procedure PaintEditFrame(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo; const EditInfo: TTBXEditInfo); override; + procedure PaintFloatingBorder(Canvas: TCanvas; const ARect: TRect; const WindowInfo: TTBXWindowInfo); override; + procedure PaintFrame(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintImage(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList; ImageIndex: Integer); override; + procedure PaintMDIButton(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo; ButtonKind: Cardinal); override; + procedure PaintMenuItem(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo); override; + procedure PaintMenuItemFrame(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintPageScrollButton(Canvas: TCanvas; const ARect: TRect; ButtonType: Integer; Hot: Boolean); override; + procedure PaintPopupNCArea(Canvas: TCanvas; R: TRect; const PopupInfo: TTBXPopupInfo); override; + procedure PaintSeparator(Canvas: TCanvas; ARect: TRect; ItemInfo: TTBXItemInfo; Horizontal, LineSeparator: Boolean); override; + procedure PaintToolbarNCArea(Canvas: TCanvas; R: TRect; const ToolbarInfo: TTBXToolbarInfo); override; + procedure PaintFrameControl(Canvas: TCanvas; R: TRect; Kind, State: Integer; Params: Pointer); override; + procedure PaintStatusBar(Canvas: TCanvas; R: TRect; Part: Integer); override; + end; + +implementation + +uses TBXUtils, TB2Common, TB2Item, Classes, Controls, Commctrl, Forms; + +var + StockImgList: TImageList; + CounterLock: Integer; + +procedure InitializeStock; +begin + StockImgList := TImageList.Create(nil); + StockImgList.Handle := ImageList_LoadBitmap(HInstance, 'TBXGLYPHS', 16, 0, clWhite); +end; + +procedure FinalizeStock; +begin + StockImgList.Free; +end; + +{ TTBXOfficeXPTheme } + +function TTBXOfficeXPTheme.GetBooleanMetrics(Index: Integer): Boolean; +begin + case Index of + TMB_OFFICEXPPOPUPALIGNMENT: Result := True; + TMB_EDITMENUFULLSELECT: Result := True; + TMB_EDITHEIGHTEVEN: Result := False; + TMB_SOLIDTOOLBARNCAREA: Result := False; + TMB_SOLIDTOOLBARCLIENTAREA: Result := True; + else + Result := False; + end; +end; + +function TTBXOfficeXPTheme.GetIntegerMetrics(Index: Integer): Integer; +const + DEFAULT = -1; +begin + case Index of + TMI_SPLITBTN_ARROWWIDTH: Result := 12; + + TMI_DROPDOWN_ARROWWIDTH: Result := 8; + TMI_DROPDOWN_ARROWMARGIN: Result := 3; + + TMI_MENU_IMGTEXTSPACE: Result := 5; + TMI_MENU_LCAPTIONMARGIN: Result := 3; + TMI_MENU_RCAPTIONMARGIN: Result := 3; + TMI_MENU_SEPARATORSIZE: Result := 3; + TMI_MENU_MDI_DW: Result := 2; + TMI_MENU_MDI_DH: Result := 2; + + TMI_TLBR_SEPARATORSIZE: Result := 6; + + TMI_EDIT_FRAMEWIDTH: Result := 1; + TMI_EDIT_TEXTMARGINHORZ: Result := 2; + TMI_EDIT_TEXTMARGINVERT: Result := 2; + TMI_EDIT_BTNWIDTH: Result := 14; + TMI_EDIT_MENURIGHTINDENT: Result := 1; + else + Result := DEFAULT; + end; +end; + +function TTBXOfficeXPTheme.GetViewColor(AViewType: Integer): TColor; +begin + Result := clBtnFace; + if (AViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + if (AViewType and TVT_MENUBAR) = TVT_MENUBAR then Result := MenubarColor + else Result := ToolbarColor; + end + else if (AViewType and VT_POPUP) = VT_POPUP then + begin + if (AViewType and PVT_LISTBOX) = PVT_LISTBOX then Result := clWindow + else Result := PopupColor; + end + else if (AViewType and VT_DOCKPANEL) = VT_DOCKPANEL then Result := DockPanelColor; +end; + +function TTBXOfficeXPTheme.GetBtnColor(const ItemInfo: TTBXItemInfo; ItemPart: TItemPart): TColor; +const + BFlags1: array [Boolean] of TBtnItemState = (bisDisabled, bisDisabledHot); + BFlags2: array [Boolean] of TBtnItemState = (bisSelected, bisSelectedHot); + BFlags3: array [Boolean] of TBtnItemState = (bisNormal, bisHot); +var + B: TBtnItemState; + Embedded: Boolean; +begin + with ItemInfo do + begin + Embedded := (ViewType and VT_TOOLBAR = VT_TOOLBAR) and + (ViewType and TVT_EMBEDDED = TVT_EMBEDDED); + if not Enabled then B := BFlags1[HoverKind = hkKeyboardHover] + else if ItemInfo.IsPopupParent then B := bisPopupParent + else if Pushed then B := bisPressed + else if Selected then B := BFlags2[HoverKind <> hkNone] + else B := BFlags3[HoverKind <> hkNone]; + Result := BtnItemColors[B, ItemPart]; + if Embedded then + begin + if (ItemPart = ipBody) and (Result = clNone) then Result := ToolbarColor; + if ItemPart = ipFrame then + begin + if Selected then Result := clWindowFrame + else if (Result = clNone) then Result := clBtnShadow; + end; + end; + end; +end; + +function TTBXOfficeXPTheme.GetPartColor(const ItemInfo: TTBXItemInfo; ItemPart: TItemPart): TColor; +const + MFlags1: array [Boolean] of TMenuItemState = (misDisabled, misDisabledHot); + MFlags2: array [Boolean] of TMenuItemState = (misNormal, misHot); + BFlags1: array [Boolean] of TBtnItemState = (bisDisabled, bisDisabledHot); + BFlags2: array [Boolean] of TBtnItemState = (bisSelected, bisSelectedHot); + BFlags3: array [Boolean] of TBtnItemState = (bisNormal, bisHot); +var + IsMenuItem, Embedded: Boolean; + M: TMenuItemState; + B: TBtnItemState; +begin + with ItemInfo do + begin + IsMenuItem := ((ViewType and PVT_POPUPMENU) = PVT_POPUPMENU) and + ((ItemOptions and IO_TOOLBARSTYLE) = 0); + Embedded := ((ViewType and VT_TOOLBAR) = VT_TOOLBAR) and + ((ViewType and TVT_EMBEDDED) = TVT_EMBEDDED); + if IsMenuItem then + begin + if not Enabled then M := MFlags1[HoverKind = hkKeyboardHover] + else M := MFlags2[HoverKind <> hkNone]; + Result := MenuItemColors[M, ItemPart]; + end + else + begin + if not Enabled then B := BFlags1[HoverKind = hkKeyboardHover] + else if ItemInfo.IsPopupParent then B := bisPopupParent + else if Pushed then B := bisPressed + else if Selected then B := BFlags2[HoverKind <> hkNone] + else B := BFlags3[HoverKind <> hkNone]; + Result := BtnItemColors[B, ItemPart]; + if Embedded and (Result = clNone) then + begin + if ItemPart = ipBody then Result := ToolbarColor; + if ItemPart = ipFrame then Result := clBtnShadow; + end; + end; + end; +end; + +function TTBXOfficeXPTheme.GetItemColor(const ItemInfo: TTBXItemInfo): TColor; +begin + Result := GetPartColor(ItemInfo, ipBody); + if Result = clNone then Result := GetViewColor(ItemInfo.ViewType); +end; + +function TTBXOfficeXPTheme.GetItemTextColor(const ItemInfo: TTBXItemInfo): TColor; +begin + Result := GetPartColor(ItemInfo, ipText); +end; + +function TTBXOfficeXPTheme.GetItemImageBackground(const ItemInfo: TTBXItemInfo): TColor; +begin + Result := GetBtnColor(ItemInfo, ipBody); + if Result = clNone then Result := GetViewColor(ItemInfo.ViewType); +end; + +procedure TTBXOfficeXPTheme.GetViewBorder(ViewType: Integer; out Border: TPoint); +const + XMetrics: array [Boolean] of Integer = (SM_CXDLGFRAME, SM_CXFRAME); + YMetrics: array [Boolean] of Integer = (SM_CYDLGFRAME, SM_CYFRAME); +var + Resizable: Boolean; + + procedure SetBorder(X, Y: Integer); + begin + Border.X := X; + Border.Y := Y; + end; + +begin + if (ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + if (ViewType and TVT_FLOATING) = TVT_FLOATING then + begin + Resizable := (ViewType and TVT_RESIZABLE) = TVT_RESIZABLE; + Border.X := GetSystemMetrics(XMetrics[Resizable]) - 1; + Border.Y := GetSystemMetrics(YMetrics[Resizable]) - 1; + end + else SetBorder(2, 2); + end + else if (ViewType and VT_POPUP) = VT_POPUP then + begin + if (ViewType and PVT_POPUPMENU) = PVT_POPUPMENU then Border.X := 1 + else Border.X := 2; + Border.Y := 2; + end + else if (ViewType and VT_DOCKPANEL) = VT_DOCKPANEL then + begin + if (ViewType and DPVT_FLOATING) = DPVT_FLOATING then + begin + Resizable := (ViewType and DPVT_RESIZABLE) = DPVT_RESIZABLE; + Border.X := GetSystemMetrics(XMetrics[Resizable]) - 1; + Border.Y := GetSystemMetrics(YMetrics[Resizable]) - 1; + end + else SetBorder(2, 2); + end + else SetBorder(0, 0); +end; + +procedure TTBXOfficeXPTheme.GetMargins(MarginID: Integer; out Margins: TTBXMargins); +begin + with Margins do + case MarginID of + MID_TOOLBARITEM: + begin + LeftWidth := 2; RightWidth := 2; + TopHeight := 2; BottomHeight := 2; + end; + + MID_MENUITEM: + begin + LeftWidth := 1; RightWidth := 1; + TopHeight := 3; BottomHeight := 3; + end; + + MID_STATUSPANE: + begin + LeftWidth := 1; RightWidth := 3; + TopHeight := 1; BottomHeight := 1; + end; + else + LeftWidth := 0; + RightWidth := 0; + TopHeight := 0; + BottomHeight := 0; + end; +end; + +procedure TTBXOfficeXPTheme.PaintBackgnd(Canvas: TCanvas; const ADockRect, ARect, AClipRect: TRect; + AColor: TColor; Transparent: Boolean; AViewType: Integer); +var + DC: HDC; + R: TRect; +begin + DC := Canvas.Handle; + if not Transparent then + begin + IntersectRect(R, ARect, AClipRect); + FillRectEx(DC, R, AColor); + end; +end; + +procedure TTBXOfficeXPTheme.PaintCaption(Canvas: TCanvas; + const ARect: TRect; const ItemInfo: TTBXItemInfo; const ACaption: string; + AFormat: Cardinal; Rotated: Boolean); +var + R: TRect; +begin + with ItemInfo, Canvas do + begin + R := ARect; + Brush.Style := bsClear; + if Font.Color = clNone then Font.Color := GetPartColor(ItemInfo, ipText); + if not Rotated then Windows.DrawText(Handle, PChar(ACaption), Length(ACaption), R, AFormat) + else DrawRotatedText(Handle, ACaption, R, AFormat); + Brush.Style := bsSolid; + end; +end; + +procedure TTBXOfficeXPTheme.PaintCheckMark(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); +var + DC: HDC; + X, Y: Integer; + C: TColor; +begin + DC := Canvas.Handle; + X := (ARect.Left + ARect.Right) div 2 - 1; + Y := (ARect.Top + ARect.Bottom) div 2 + 1; + C := GetBtnColor(ItemInfo, ipText); + if ItemInfo.ItemOptions and IO_RADIO > 0 then + begin + RoundRectEx(DC, X-2, Y-4, X+4, Y+2, 2, 2, + MixColors(C, ToolbarColor, 200), clNone); + RoundRectEx(DC, X-2, Y-4, X+4, Y+2, 6, 6, C, C); + end + else + PolylineEx(DC, [Point(X-2, Y-2), Point(X, Y), Point(X+4, Y-4), + Point(X+4, Y-3), Point(X, Y+1), Point(X-2, Y-1), Point(X-2, Y-2)], C); +end; + +procedure TTBXOfficeXPTheme.PaintChevron(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); +const + Pattern: array[Boolean, 0..15] of Byte = ( + ($CC, 0, $66, 0, $33, 0, $66, 0, $CC, 0, 0, 0, 0, 0, 0, 0), + ($88, 0, $D8, 0, $70, 0, $20, 0, $88, 0, $D8, 0, $70, 0, $20, 0)); +var + R2: TRect; + W, H: Integer; +begin + R2 := ARect; + PaintButton(Canvas, ARect, ItemInfo); + if not ItemInfo.IsVertical then + begin + Inc(R2.Top, 4); + R2.Bottom := R2.Top + 5; + W := 8; + H := 5; + end + else + begin + R2.Left := R2.Right - 9; + R2.Right := R2.Left + 5; + W := 5; + H := 8; + end; + DrawGlyph(Canvas.Handle, R2, W, H, Pattern[ItemInfo.IsVertical][0], GetPartColor(ItemInfo, ipText)); +end; + +procedure TTBXOfficeXPTheme.PaintEditButton(Canvas: TCanvas; const ARect: TRect; + var ItemInfo: TTBXItemInfo; ButtonInfo: TTBXEditBtnInfo); +var + DC: HDC; + BtnDisabled, BtnHot, BtnPressed, Embedded: Boolean; + R, BR: TRect; + X, Y: Integer; + SaveItemInfoPushed: Boolean; + C: TColor; +begin + DC := Canvas.Handle; + R := ARect; + Embedded := ((ItemInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR) and + ((ItemInfo.ViewType and TVT_EMBEDDED) = TVT_EMBEDDED); + + InflateRect(R, 1, 1); + Inc(R.Left); + with Canvas do + if ButtonInfo.ButtonType = EBT_DROPDOWN then + begin + BtnDisabled := (ButtonInfo.ButtonState and EBDS_DISABLED) <> 0; + BtnHot := (ButtonInfo.ButtonState and EBDS_HOT) <> 0; + BtnPressed := (ButtonInfo.ButtonState and EBDS_PRESSED) <> 0; + if not BtnDisabled then + begin + if BtnPressed or BtnHot or Embedded then PaintButton(Canvas, R, ItemInfo) + else if (ItemInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + R := ARect; + if not Embedded then + begin + FrameRectEx(DC, R, clWindow, False); + C := clWindow; + end + else C := GetBtnColor(ItemInfo, ipFrame); + DrawLineEx(DC, R.Left - 1, R.Top, R.Left - 1, R.Bottom, C); + end; + end; + PaintDropDownArrow(Canvas, R, ItemInfo); + end + else if ButtonInfo.ButtonType = EBT_SPIN then + begin + BtnDisabled := (ButtonInfo.ButtonState and EBSS_DISABLED) <> 0; + BtnHot := (ButtonInfo.ButtonState and EBSS_HOT) <> 0; + + { Upper button } + BR := R; + BR.Bottom := (R.Top + R.Bottom + 1) div 2; + BtnPressed := (ButtonInfo.ButtonState and EBSS_UP) <> 0; + SaveItemInfoPushed := ItemInfo.Pushed; + ItemInfo.Pushed := BtnPressed; + if not BtnDisabled then + begin + if BtnPressed or BtnHot or Embedded then PaintButton(Canvas, BR, ItemInfo) + else if (ItemInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + BR.Left := ARect.Left; BR.Top := ARect.Top; BR.Right := ARect.Right; + if not Embedded then + begin + FrameRectEx(DC, BR, clWindow, False); + C := clWindow; + end + else C := GetBtnColor(ItemInfo, ipFrame); + DrawLineEx(DC, BR.Left - 1, BR.Top, BR.Left - 1, BR.Bottom, C); + end; + end; + X := (BR.Left + BR.Right) div 2; + Y := (BR.Top + BR.Bottom - 1) div 2; + Pen.Color := GetPartColor(ItemInfo, ipText); + Brush.Color := Pen.Color; + Polygon([Point(X - 2, Y + 1), Point(X + 2, Y + 1), Point(X, Y - 1)]); + + { Lower button } + BR := R; + BR.Top := (R.Top + R.Bottom) div 2; + BtnPressed := (ButtonInfo.ButtonState and EBSS_DOWN) <> 0; + ItemInfo.Pushed := BtnPressed; + if not BtnDisabled then + begin + if BtnPressed or BtnHot or Embedded then PaintButton(Canvas, BR, ItemInfo) + else if (ItemInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + BR.Left := ARect.Left; BR.Bottom := ARect.Bottom; BR.Right := ARect.Right; + if not Embedded then + begin + FrameRectEx(DC, BR, clWindow, False); + C := clWindow; + end + else C := GetBtnColor(ItemInfo, ipFrame); + DrawLineEx(DC, BR.Left - 1, BR.Top, BR.Left - 1, BR.Bottom, C); + end; + end; + X := (BR.Left + BR.Right) div 2; + Y := (BR.Top + BR.Bottom) div 2; + C := GetPartColor(ItemInfo, ipText); + PolygonEx(DC, [Point(X - 2, Y - 1), Point(X + 2, Y - 1), Point(X, Y + 1)], C, C); + + ItemInfo.Pushed := SaveItemInfoPushed; + end; +end; + +procedure TTBXOfficeXPTheme.PaintEditFrame(Canvas: TCanvas; + const ARect: TRect; var ItemInfo: TTBXItemInfo; const EditInfo: TTBXEditInfo); +var + DC: HDC; + R: TRect; + W: Integer; + Embedded: Boolean; +begin + DC := Canvas.Handle; + R := ARect; + PaintFrame(Canvas, R, ItemInfo); + W := EditFrameWidth; + InflateRect(R, -W, -W); + Embedded := ((ItemInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR) and + ((ItemInfo.ViewType and TVT_EMBEDDED) = TVT_EMBEDDED); + if not (ItemInfo.Enabled or Embedded) then + FrameRectEx(DC, R, BtnItemColors[bisDisabled, ipText], False); + + with EditInfo do if RightBtnWidth > 0 then Dec(R.Right, RightBtnWidth - 2); + + if ItemInfo.Enabled then + begin + if ((ItemInfo.ViewType and VT_TOOLBAR) <> VT_TOOLBAR) and (GetPartColor(ItemInfo, ipFrame) = clNone) then + FrameRectEx(DC, R, ToolbarColor, False) + else + FrameRectEx(DC, R, clWindow, False); + + InflateRect(R, -1, -1); + FillRectEx(DC, R, clWindow); + if ((ItemInfo.ViewType and VT_TOOLBAR) <> VT_TOOLBAR) and (GetPartColor(ItemInfo, ipFrame) = clNone) then + begin + R := ARect; + InflateRect(R, -1, -1); + FrameRectEx(DC, R, ToolbarColor, False); + end; + end + else InflateRect(R, -1, -1); + + with EditInfo do if LeftBtnWidth > 0 then Inc(R.Left, LeftBtnWidth - 2); + + if EditInfo.RightBtnWidth > 0 then + begin + R := ARect; + InflateRect(R, -W, -W); + R.Left := R.Right - EditInfo.RightBtnWidth; + PaintEditButton(Canvas, R, ItemInfo, EditInfo.RightBtnInfo); + end; +end; + +procedure TTBXOfficeXPTheme.PaintDropDownArrow(Canvas: TCanvas; + const ARect: TRect; const ItemInfo: TTBXItemInfo); +var + X, Y: Integer; +begin + with ARect, Canvas do + begin + X := (Left + Right) div 2; + Y := (Top + Bottom) div 2 - 1; + Pen.Color := GetPartColor(ItemInfo, ipText); + Brush.Color := Pen.Color; + if ItemInfo.IsVertical then Polygon([Point(X, Y + 2), Point(X, Y - 2), Point(X - 2, Y)]) + else Polygon([Point(X - 2, Y), Point(X + 2, Y), Point(X, Y + 2)]); + end; +end; + +procedure TTBXOfficeXPTheme.PaintButton(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); +var + DC: HDC; + R: TRect; +begin + DC := Canvas.Handle; + with ItemInfo do + begin + R := ARect; + if ((ItemOptions and IO_DESIGNING) <> 0) and not Selected then + begin + if ComboPart = cpSplitRight then Dec(R.Left); + FrameRectEx(DC, R, GetNearestColor(DC, MixColors(clBtnShadow, clBtnFace, 100)), False); + end + else + begin + FrameRectEx(DC, R, GetBtnColor(ItemInfo, ipFrame), True); + if (ComboPart = cpSplitLeft) and IsPopupParent then Inc(R.Right); + if ComboPart = cpSplitRight then Dec(R.Left); + FillRectEx(DC, R, GetBtnColor(ItemInfo, ipBody)); + end; + if ComboPart = cpSplitRight then PaintDropDownArrow(Canvas, R, ItemInfo); + end; +end; + +procedure TTBXOfficeXPTheme.PaintFloatingBorder(Canvas: TCanvas; const ARect: TRect; + const WindowInfo: TTBXWindowInfo); +const + WinStates: array [Boolean] of TWinFramestate = (wfsInactive, wfsActive); + + function GetBtnItemState(BtnState: Integer): TBtnItemState; + begin + if not WindowInfo.Active then Result := bisDisabled + else if (BtnState and CDBS_PRESSED) <> 0 then Result := bisPressed + else if (BtnState and CDBS_HOT) <> 0 then Result := bisHot + else Result := bisNormal; + end; + +var + WinState: TWinFrameState; + BtnItemState: TBtnItemState; + SaveIndex, X, Y: Integer; + Sz: TPoint; + R: TRect; + BodyColor, CaptionColor, CaptionText: TColor; + IsDockPanel: Boolean; +begin + with Canvas do + begin + WinState := WinStates[WindowInfo.Active]; + IsDockPanel := (WindowInfo.ViewType and VT_DOCKPANEL) = VT_DOCKPANEL; + BodyColor := Brush.Color; + + if (WRP_BORDER and WindowInfo.RedrawPart) <> 0 then + begin + R := ARect; + + if not IsDockPanel then Brush.Color := WinFrameColors[WinState, wfpBorder] + else Brush.Color := PnlFrameColors[WinState, wfpBorder]; + + SaveIndex := SaveDC(Canvas.Handle); + Sz := WindowInfo.FloatingBorderSize; + with R, Sz do ExcludeClipRect(Canvas.Handle, Left + X, Top + Y, Right - X, Bottom - Y); + FillRect(R); + RestoreDC(Canvas.Handle, SaveIndex); + InflateRect(R, -Sz.X, -Sz.Y); + Pen.Color := BodyColor; + with R do + if not IsDockPanel then + Canvas.Polyline([ + Point(Left, Top - 1), Point(Right - 1, Top - 1), + Point(Right, Top), Point(Right, Bottom - 1), + Point(Right - 1, Bottom), + Point(Left, Bottom), Point(Left - 1, Bottom - 1), + Point(Left - 1, Top), Point(Left, Top - 1) + ]) + else + Canvas.Polyline([ + Point(Left, Top - 1), Point(Right - 1, Top - 1), + Point(Right, Top), Point(Right, Bottom), + Point(Left - 1, Bottom), + Point(Left - 1, Top), Point(Left, Top - 1) + ]); + end; + + if not WindowInfo.ShowCaption then Exit; + + if (WindowInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + CaptionColor := WinFrameColors[WinState, wfpCaption]; + CaptionText := WinFrameColors[WinState, wfpCaptionText]; + end + else + begin + CaptionColor := PnlFrameColors[WinState, wfpCaption]; + CaptionText := PnlFrameColors[WinState, wfpCaptionText]; + end; + + { Caption } + if (WRP_CAPTION and WindowInfo.RedrawPart) <> 0 then + begin + R := Rect(0, 0, WindowInfo.ClientWidth, GetSystemMetrics(SM_CYSMCAPTION) - 1); + with WindowInfo.FloatingBorderSize do OffsetRect(R, X, Y); + DrawLineEx(Canvas.Handle, R.Left, R.Bottom, R.Right, R.Bottom, BodyColor); + + if ((CDBS_VISIBLE and WindowInfo.CloseButtonState) <> 0) and + ((WRP_CLOSEBTN and WindowInfo.RedrawPart) <> 0) then + Dec(R.Right, GetSystemMetrics(SM_CYSMCAPTION) - 1); + + Brush.Color := CaptionColor; + FillRect(R); + InflateRect(R, -2, 0); + Font.Assign(SmCaptionFont); + Font.Color := CaptionText; + DrawText(Canvas.Handle, WindowInfo.Caption, -1, R, + DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS or DT_NOPREFIX); + end; + + { Close button } + if (CDBS_VISIBLE and WindowInfo.CloseButtonState) <> 0 then + begin + R := Rect(0, 0, WindowInfo.ClientWidth, GetSystemMetrics(SM_CYSMCAPTION) - 1); + with WindowInfo.FloatingBorderSize do OffsetRect(R, X, Y); + R.Left := R.Right - (R.Bottom - R.Top); + DrawLineEx(Canvas.Handle, R.Left - 1, R.Bottom, R.Right, R.Bottom, BodyColor); + Brush.Color := CaptionColor; + FillRect(R); + with R do + begin + X := (Left + Right - StockImgList.Width + 1) div 2; + Y := (Top + Bottom - StockImgList.Height) div 2; + end; + BtnItemState := GetBtnItemState(WindowInfo.CloseButtonState); + FrameRectEx(Canvas.Handle, R, BtnItemColors[BtnItemState, ipFrame], True); + if FillRectEx(Canvas.Handle, R, BtnItemColors[BtnItemState, ipBody]) then + DrawGlyph(Canvas.Handle, X, Y, StockImgList, 0, BtnItemColors[BtnItemState, ipText]) + else + DrawGlyph(Canvas.Handle, X, Y, StockImgList, 0, CaptionText); + end; + end; +end; + +procedure TTBXOfficeXPTheme.PaintFrame(Canvas: TCanvas; const ARect: TRect; + const ItemInfo: TTBXItemInfo); +var + DC: HDC; + R: TRect; +begin + DC := Canvas.Handle; + R := ARect; + FrameRectEx(DC, R, GetPartColor(ItemInfo, ipFrame), True); + FillRectEx(DC, R, GetPartColor(ItemInfo, ipBody)); +end; + +function TTBXOfficeXPTheme.GetImageOffset(Canvas: TCanvas; + const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList): TPoint; +begin + Result.X := 0; + if not (ImageList is TTBCustomImageList) then + with ItemInfo do + if Enabled and (HoverKind <> hkNone) and + not (Selected or Pushed and not IsPopupParent) then + Result.X := -1; + Result.Y := Result.X +end; + +procedure TTBXOfficeXPTheme.PaintImage(Canvas: TCanvas; ARect: TRect; + const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList; ImageIndex: Integer); +var + HiContrast: Boolean; +begin + with ItemInfo do + begin + if ImageList is TTBCustomImageList then + begin + TTBCustomImageList(ImageList).DrawState(Canvas, ARect.Left, ARect.Top, + ImageIndex, Enabled, (HoverKind <> hkNone), Selected); + Exit; + end; + +{$IFNDEF ALTERNATIVE_DISABLED_STYLE} + HiContrast := IsDarkColor(GetItemImageBackground(ItemInfo), 64); + + if not Enabled then + begin + DrawTBXIconFlatShadow(Canvas, ARect, ImageList, ImageIndex, + BtnItemColors[bisDisabled, ipText]); + end + else if Selected or Pushed or (HoverKind <> hkNone) then + begin + if not (Selected or Pushed and not IsPopupParent) then + begin + OffsetRect(ARect, 1, 1); + DrawTBXIconFullShadow(Canvas, ARect, ImageList, ImageIndex, IconShadowColor); + OffsetRect(ARect, -2, -2); + end; + DrawTBXIcon(Canvas, ARect, ImageList, ImageIndex, HiContrast); + end + else if HiContrast or TBXHiContrast or TBXLoColor then + DrawTBXIcon(Canvas, ARect, ImageList, ImageIndex, HiContrast) + else + HighlightTBXIcon(Canvas, ARect, ImageList, ImageIndex, clWindow, 178); +{$ELSE} + HiContrast := ColorIntensity(GetItemImageBackground(ItemInfo)) < 80; + if not Enabled then + begin + if not HiContrast then + DrawTBXIconShadow(Canvas, ARect, ImageList, ImageIndex, 0) + else + DrawTBXIconFlatShadow(Canvas, ARect, ImageList, ImageIndex, clBtnShadow); + end + else if Selected or Pushed or (HoverKind <> hkNone) then + begin + if not (Selected or Pushed and not IsPopupParent) then + begin + DrawTBXIconShadow(Canvas, ARect, ImageList, ImageIndex, 1); + OffsetRect(ARect, 1, 1); + DrawTBXIconShadow(Canvas, ARect, ImageList, ImageIndex, 1); + OffsetRect(ARect, -2, -2); + end; + DrawTBXIcon(Canvas, ARect, ImageList, ImageIndex, HiContrast); + end + else if HiContrast or TBXHiContrast or TBXLoColor then + DrawTBXIcon(Canvas, ARect, ImageList, ImageIndex, HiContrast) + else + HighlightTBXIcon(Canvas, ARect, ImageList, ImageIndex, clWindow, 178); +{$ENDIF} + end; +end; + +procedure TTBXOfficeXPTheme.PaintMDIButton(Canvas: TCanvas; ARect: TRect; + const ItemInfo: TTBXItemInfo; ButtonKind: Cardinal); +var + Index: Integer; +begin + PaintButton(Canvas, ARect, ItemInfo); + Dec(ARect.Bottom); + case ButtonKind of + DFCS_CAPTIONMIN: Index := 2; + DFCS_CAPTIONRESTORE: Index := 3; + DFCS_CAPTIONCLOSE: Index := 0; + else + Exit; + end; + DrawGlyph(Canvas.Handle, ARect, StockImgList, Index, GetPartColor(ItemInfo, ipText)); +end; + +procedure TTBXOfficeXPTheme.PaintMenuItemFrame(Canvas: TCanvas; + const ARect: TRect; const ItemInfo: TTBXItemInfo); +var + R: TRect; +begin + R := ARect; + if (ItemInfo.ViewType and PVT_TOOLBOX) <> PVT_TOOLBOX then with Canvas do + begin + R.Right := R.Left + ItemInfo.PopupMargin + 2; + Brush.Color := ToolbarColor; + FillRect(R); + Inc(R.Left); + R.Right := ARect.Right - 1; + end; + PaintFrame(Canvas, R, ItemInfo); +end; + +procedure TTBXOfficeXPTheme.PaintMenuItem(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo); +var + DC: HDC; + R: TRect; + X, Y: Integer; + ArrowWidth: Integer; + C, ClrText: TColor; +begin + DC := Canvas.Handle; + with ItemInfo do + begin + ArrowWidth := GetSystemMetrics(SM_CXMENUCHECK); + PaintMenuItemFrame(Canvas, ARect, ItemInfo); + ClrText := GetPartColor(ItemInfo, ipText); + R := ARect; + + if (ItemOptions and IO_COMBO) <> 0 then + begin + X := R.Right - ArrowWidth - 1; + if not ItemInfo.Enabled then C := ClrText + else if HoverKind = hkMouseHover then C := GetPartColor(ItemInfo, ipFrame) + else C := PopupSeparatorColor; + DrawLineEx(DC, X, R.Top + 1, X, R.Bottom - 1, C); + end; + + if (ItemOptions and IO_SUBMENUITEM) <> 0 then + begin + Y := ARect.Bottom div 2; + X := ARect.Right - ArrowWidth * 2 div 3 - 1; + PolygonEx(DC, [Point(X, Y - 3), Point(X, Y + 3), Point(X + 3, Y)], ClrText, ClrText); + end; + + if Selected and Enabled then + begin + R := ARect; + R.Left := ARect.Left + 1; + R.Right := R.Left + ItemInfo.PopupMargin; + InflateRect(R, -1, -1); + FrameRectEx(DC, R, GetBtnColor(ItemInfo, ipFrame), True); + FillRectEx(DC, R, GetBtnColor(ItemInfo, ipBody)); + end; + end; +end; + +procedure TTBXOfficeXPTheme.PaintPopupNCArea(Canvas: TCanvas; R: TRect; const PopupInfo: TTBXPopupInfo); +var + PR: TRect; +begin + with Canvas do + begin + Brush.Color := PopupFrameColor; + FrameRect(R); + InflateRect(R, -1, -1); + Brush.Color := PopupColor; + FillRect(R); + + if not IsRectEmpty(PopupInfo.ParentRect) then + begin + PR := PopupInfo.ParentRect; + if not IsRectEmpty(PR) then with PR do + begin + Pen.Color := ToolbarColor; + if Bottom = R.Top then + begin + if Left <= R.Left then Left := R.Left - 1; + if Right >= R.Right then Right := R.Right + 1; + MoveTo(Left + 1, Bottom - 1); LineTo(Right - 1, Bottom- 1); + end + else if Top = R.Bottom then + begin + if Left <= R.Left then Left := R.Left - 1; + if Right >= R.Right then Right := R.Right + 1; + MoveTo(Left + 1, Top); LineTo(Right - 1, Top); + end; + if Right = R.Left then + begin + if Top <= R.Top then Top := R.Top - 1; + if Bottom >= R.Bottom then Bottom := R.Bottom + 1; + MoveTo(Right - 1, Top + 1); LineTo(Right - 1, Bottom - 1); + end + else if Left = R.Right then + begin + if Top <= R.Top then Top := R.Top - 1; + if Bottom >= R.Bottom then Bottom := R.Bottom + 1; + MoveTo(Left, Top + 1); LineTo(Left, Bottom - 1); + end; + end; + end; + end; +end; + +procedure TTBXOfficeXPTheme.PaintSeparator(Canvas: TCanvas; ARect: TRect; + ItemInfo: TTBXItemInfo; Horizontal, LineSeparator: Boolean); +var + DC: HDC; + IsToolbox: Boolean; + R: TRect; + C: TColor; +begin + { Note: for blank separators, Enabled = False } + DC := Canvas.Handle; + with ItemInfo, ARect do + begin + if Horizontal then + begin + IsToolbox := (ViewType and PVT_TOOLBOX) = PVT_TOOLBOX; + if ((ItemOptions and IO_TOOLBARSTYLE) = 0) and not IsToolBox then + begin + R := ARect; + R.Right := ItemInfo.PopupMargin + 2; + FillRectEx(DC, R, ToolbarColor); + Inc(Left, ItemInfo.PopupMargin + 9); + C := PopupSeparatorColor; + end + else + C := ToolbarSeparatorColor; + Top := (Top + Bottom) div 2; + if Enabled then DrawLineEx(DC, Left, Top, Right, Top, C); + end + else if Enabled then + begin + Left := (Left + Right) div 2; + DrawLineEx(DC, Left, Top, Left, Bottom, ToolbarSeparatorColor); + end; + end; +end; + +procedure DrawButtonBitmap(DC: HDC; R: TRect; Color: TColor); +const +{$IFNDEF SMALL_CLOSE_BUTTON} + Pattern: array [0..15] of Byte = + ($C3, 0, $66, 0, $3C, 0, $18, 0, $3C, 0, $66, 0, $C3, 0, 0, 0); +{$ELSE} + Pattern: array [0..15] of Byte = + (0, 0, $63, 0, $36, 0, $1C, 0, $1C, 0, $36, 0, $63, 0, 0, 0); +{$ENDIF} +begin + DrawGlyph(DC, R, 8, 7, Pattern[0], Color); +end; + +procedure TTBXOfficeXPTheme.PaintToolbarNCArea(Canvas: TCanvas; R: TRect; const ToolbarInfo: TTBXToolbarInfo); +const + DragHandleOffsets: array [Boolean, DHS_DOUBLE..DHS_SINGLE] of Integer = ((2, 0, 1), (5, 0, 5)); + + function GetBtnItemState(BtnState: Integer): TBtnItemState; + begin + if (BtnState and CDBS_PRESSED) <> 0 then Result := bisPressed + else if (BtnState and CDBS_HOT) <> 0 then Result := bisHot + else Result := bisNormal; + end; + +var + DC: HDC; + Sz: Integer; + R2: TRect; + SaveColor: TColor; + SaveStyle: TBrushStyle; + I: Integer; + BtnVisible, Horz: Boolean; + BtnItemState: TBtnItemState; +begin + DC := Canvas.Handle; + with Canvas do + begin + SaveColor := Brush.Color; + SaveStyle := Brush.Style; + if ToolbarInfo.BorderStyle = bsSingle then + begin + I := ColorIntensity(clBtnFace); + if not (TBXLoColor or not (I in [50..254])) or + ((ToolbarInfo.ViewType and TVT_MENUBAR) = TVT_MENUBAR) then + begin + InflateRect(R, -1, -1); + Dec(R.Right); Dec(R.Bottom); + Pen.Color := SaveColor; + Pen.Style := psSolid; + Brush.Color := SaveColor; + Brush.Style := SaveStyle; // should be either bsSolid or bsClear + with R do + Polygon([Point(Left + 1, Top), Point(Right - 1, Top), Point(Right, Top + 1), + Point(Right, Bottom - 1), Point(Right - 1, Bottom), Point(Left + 1, Bottom), + Point(Left, Bottom - 1), Point(Left, Top + 1)]); + Brush.Style := bsSolid; + Inc(R.Left); + Inc(R.Top); + end + else + begin + Brush.Bitmap := AllocPatternBitmap(ToolbarColor, BtnItemColors[bisDisabled, ipText]); + with R do + begin + FillRect(Rect(Left + 1, Top, Right - 1, Top + 1)); + FillRect(Rect(Left + 1, Bottom - 1, Right - 1, Bottom)); + FillRect(Rect(Left, Top + 1, Left + 1, Bottom - 1)); + FillRect(Rect(Right - 1, Top + 1, Right, Bottom - 1)); + end; + InflateRect(R, -1, -1); + Brush.Color := SaveColor; + FillRect(R); + end; + end + else + InflateRect(R, -1, -1); + InflateRect(R, -1, -1); + + if not ToolbarInfo.AllowDrag then Exit; + + BtnVisible := (ToolbarInfo.CloseButtonState and CDBS_VISIBLE) <> 0; + Sz := GetTBXDragHandleSize(ToolbarInfo); + Horz := not ToolbarInfo.IsVertical; + if Horz then R.Right := R.Left + Sz + else R.Bottom := R.Top + Sz; + + { Drag Handle } + if ToolbarInfo.DragHandleStyle <> DHS_NONE then + begin + R2 := R; + if Horz then + begin + Inc(R2.Left, DragHandleOffsets[BtnVisible, ToolbarInfo.DragHandleStyle]); + if BtnVisible then Inc(R2.Top, Sz - 2); + R2.Right := R2.Left + 3; + end + else + begin + Inc(R2.Top, DragHandleOffsets[BtnVisible, ToolbarInfo.DragHandleStyle]); + if BtnVisible then Dec(R2.Right, Sz - 2); + R2.Bottom := R2.Top + 3; + end; + + Pen.Color := DragHandleColor; + if Horz then + begin + I := R2.Top + 3; + while I < R2.Bottom - 3 do + begin + MoveTo(R2.Left, I); LineTo(R2.Right, I); + Inc(I, 2); + end; + end + else + begin + I := R2.Left + 3; + while I < R2.Right - 3 do + begin + MoveTo(I, R2.Top); LineTo(I, R2.Bottom); + Inc(I, 2); + end; + end; + end; + + { Close button } + if BtnVisible then + begin + R2 := R; + if Horz then + begin + Dec(R2.Right); + R2.Bottom := R2.Top + R2.Right - R2.Left; + end + else + begin + Dec(R2.Bottom); + R2.Left := R2.Right - R2.Bottom + R2.Top; + end; + + BtnItemState := GetBtnItemState(ToolbarInfo.CloseButtonState); + FrameRectEx(DC, R2, BtnItemColors[BtnItemState, ipFrame], True); + FillRectEx(DC, R2, BtnItemColors[BtnItemState, ipBody]); + DrawButtonBitmap(DC, R2, BtnItemColors[BtnItemState, ipText]); + end; + end; +end; + +procedure TTBXOfficeXPTheme.PaintDock(Canvas: TCanvas; const ClientRect, + DockRect: TRect; DockPosition: Integer); +begin + // this theme does not support dock painting +end; + +procedure TTBXOfficeXPTheme.PaintDockPanelNCArea(Canvas: TCanvas; R: TRect; const DockPanelInfo: TTBXDockPanelInfo); + + function GetBtnItemState(BtnState: Integer): TBtnItemState; + begin + if (BtnState and CDBS_PRESSED) <> 0 then Result := bisPressed + else if (BtnState and CDBS_HOT) <> 0 then Result := bisHot + else Result := bisNormal; + end; + +var + DC: HDC; + C, HeaderColor: TColor; + I, Sz, Flags: Integer; + R2: TRect; + BtnItemState: TBtnItemState; + B: HBrush; + OldBkMode: Cardinal; + OldFont: HFont; + OldTextColor: TColorRef; +begin + DC := Canvas.Handle; + with DockPanelInfo do + begin + I := ColorIntensity(ColorToRGB(clBtnFace)); + R2 := R; + if not TBXLoColor and (I in [64..250]) then + begin + FrameRectEx(DC, R, clBtnFace, True); + FrameRectEx(DC, R, EffectiveColor, False); + with R do + begin + C := GetSysColor(COLOR_BTNFACE); + SetPixelV(DC, Left, Top, C); + if IsVertical then SetPixelV(DC, Right - 1, Top, C) + else SetPixelV(DC, Left, Bottom - 1, C); + end; + end + else + begin + FrameRectEx(DC, R, EffectiveColor, True); + + if I < 64 then B := CreateDitheredBrush(EffectiveColor, clWhite) + else B := CreateDitheredBrush(EffectiveColor, clBtnShadow); + Windows.FrameRect(DC, R, B); + DeleteObject(B); + + with R do + begin + SetPixelV(DC, Left, Top, EffectiveColor); + if IsVertical then SetPixelV(DC, Right - 1, Top, EffectiveColor) + else SetPixelV(DC, Left, Bottom - 1, EffectiveColor); + end; + InflateRect(R, -1, -1); + FrameRectEx(DC, R, EffectiveColor, False); + end; + R := R2; + InflateRect(R, -BorderSize.X, -BorderSize.Y); + Sz := GetSystemMetrics(SM_CYSMCAPTION); + if IsVertical then + begin + R.Bottom := R.Top + Sz - 1; + DrawLineEx(DC, R.Left, R.Bottom, R.Right, R.Bottom, EffectiveColor); + end + else + begin + R.Right := R.Left + Sz - 1; + DrawLineEx(DC, R.Right, R.Top, R.Right, R.Bottom, EffectiveColor); + end; + HeaderColor := clBtnFace; + FillRectEx(DC, R, HeaderColor); + + if (CDBS_VISIBLE and CloseButtonState) <> 0 then + begin + R2 := R; + if IsVertical then + begin + R2.Left := R2.Right - Sz + 1; + R.Right := R2.Left; + end + else + begin + R2.Top := R2.Bottom - Sz + 1; + R.Bottom := R2.Top; + end; + + BtnItemState := GetBtnItemState(CloseButtonState); + FrameRectEx(DC, R2, BtnItemColors[BtnItemState, ipFrame], True); + FillRectEx(DC, R2, BtnItemColors[BtnItemState, ipBody]); + DrawButtonBitmap(DC, R2, BtnItemColors[BtnItemState, ipText]); + end; + + + if IsVertical then InflateRect(R, -4, 0) + else InflateRect(R, 0, -4); + + OldFont := SelectObject(DC, SmCaptionFont.Handle); + OldBkMode := SetBkMode(DC, TRANSPARENT); + OldTextColor := SetTextColor(DC, ColorToRGB(SmCaptionFont.Color)); + Flags := DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS or DT_NOPREFIX; + if IsVertical then DrawText(DC, Caption, -1, R, Flags) + else DrawRotatedText(DC, string(Caption), R, Flags); + SetTextColor(DC, OldTextColor); + SetBkMode(DC, OldBkMode); + SelectObject(DC, OldFont); + end; +end; + +procedure TTBXOfficeXPTheme.SetupColorCache; +var + DC: HDC; + HotBtnFace, DisabledText: TColor; + + procedure Undither(var C: TColor); + begin + if C <> clNone then C := GetNearestColor(DC, ColorToRGB(C)); + end; + +begin + DC := StockCompatibleBitmap.Canvas.Handle; + + if TBXLoColor then + begin + { View/Window Colors } + MenubarColor := clBtnFace; + ToolbarColor := clBtnFace; + PopupColor := clWindow; + DockPanelColor := clWindow; + StatusPanelFrameColor := clBtnShadow; + + PopupFrameColor := clBtnText; + WinFrameColors[wfsActive, wfpBorder] := clBtnShadow; + WinFrameColors[wfsActive, wfpCaption] := clBtnShadow; + WinFrameColors[wfsActive, wfpCaptionText] := clBtnHighlight; + WinFrameColors[wfsInactive, wfpBorder] := clBtnShadow; + WinFrameColors[wfsInactive, wfpCaption] := clBtnShadow; + WinFrameColors[wfsInactive, wfpCaptionText] := clBtnHighlight; + + PnlFrameColors[wfsActive, wfpBorder] := clBtnShadow; + PnlFrameColors[wfsActive, wfpCaption] := clBtnFace; + PnlFrameColors[wfsActive, wfpCaptionText] := clBtnText; + PnlFrameColors[wfsInactive, wfpBorder] := clBtnShadow; + PnlFrameColors[wfsInactive, wfpCaption] := clBtnFace; + PnlFrameColors[wfsInactive, wfpCaptionText] := clBtnText; + + MenuItemColors[misNormal, ipBody] := clNone; + MenuItemColors[misNormal, ipText] := clWindowText; + MenuItemColors[misNormal, ipFrame] := clNone; + MenuItemColors[misDisabled, ipBody] := clNone; + MenuItemColors[misDisabled, ipText] := clGrayText; + MenuItemColors[misDisabled, ipFrame] := clNone; + MenuItemColors[misHot, ipBody] := clWindow; + MenuItemColors[misHot, ipText] := clWindowtext; + MenuItemColors[misHot, ipFrame] := clHighlight; + MenuItemColors[misDisabledHot, ipBody] := clWindow; + MenuItemColors[misDisabledHot, ipText] := clGrayText; + MenuItemColors[misDisabledHot, ipFrame] := clHighlight; + + BtnItemColors[bisNormal, ipBody] := clNone; + BtnItemColors[bisNormal, ipText] := clBtnText; + BtnItemColors[bisNormal, ipFrame] := clNone; + BtnItemColors[bisDisabled, ipBody] := clNone; + BtnItemColors[bisDisabled, ipText] := clBtnShadow; + BtnItemColors[bisDisabled, ipFrame] := clNone; + BtnItemColors[bisSelected, ipBody] := clWindow; + BtnItemColors[bisSelected, ipText] := clWindowText; + BtnItemColors[bisSelected, ipFrame] := clHighlight; + BtnItemColors[bisPressed, ipBody] := clHighlight; + BtnItemColors[bisPressed, ipText] := clHighlightText; + BtnItemColors[bisPressed, ipFrame] := clHighlight; + BtnItemColors[bisHot, ipBody] := clWindow; + BtnItemColors[bisHot, ipText] := clWindowText; + BtnItemColors[bisHot, ipFrame] := clHighlight; + BtnItemColors[bisDisabledHot, ipBody] := clWindow; + BtnItemColors[bisDisabledHot, ipText] := clBtnShadow; + BtnItemColors[bisDisabledHot, ipFrame] := clHighlight; + BtnItemColors[bisSelectedHot, ipBody] := clHighlight; + BtnItemColors[bisSelectedHot, ipText] := clHighlightText; + BtnItemColors[bisSelectedHot, ipFrame] := clHighlight; + BtnItemColors[bisPopupParent, ipBody] := clBtnFace; + BtnItemColors[bisPopupParent, ipText] := clBtnText; + BtnItemColors[bisPopupParent, ipFrame] := PopupFrameColor; + + { Other Colors } + DragHandleColor := clBtnText; + IconShadowColor := clBtnFace; + PopupSeparatorColor := clBtnShadow; + ToolbarSeparatorColor := clBtnShadow; + end + else + begin + { View/Window Colors } + MenubarColor := clBtnFace; + ToolbarColor := Blend(clWindow, clBtnFace, 165); + PopupColor := Blend(clBtnFace, clWindow, 143); + DockPanelColor := PopupColor; + PopupFrameColor := Blend(clBtnText, clBtnShadow, 20); + SetContrast(PopupFrameColor, PopupColor, 100); + + HotBtnFace := Blend(clHighlight, clWindow, 30); + SetContrast(HotBtnFace, ToolbarColor, 50); + DisabledText := Blend(clBtnshadow, clWindow, 90); + + WinFrameColors[wfsActive, wfpBorder] := Blend(clBtnText, clBtnShadow, 15); + SetContrast(WinFrameColors[wfsActive, wfpBorder], ToolbarColor, 120); + WinFrameColors[wfsActive, wfpCaption] := clBtnShadow; + WinFrameColors[wfsActive, wfpCaptionText] := clBtnHighlight; + SetContrast(WinFrameColors[wfsActive, wfpCaptionText], clBtnShadow, 180); + WinFrameColors[wfsInactive, wfpBorder] := WinFrameColors[wfsActive, wfpBorder]; + WinFrameColors[wfsInactive, wfpCaption] := clBtnFace; + WinFrameColors[wfsInactive, wfpCaptionText] := DisabledText; + SetContrast(WinFrameColors[wfsInactive, wfpCaptionText], clBtnFace, 120); + + PnlFrameColors[wfsActive, wfpBorder] := clBtnShadow; + PnlFrameColors[wfsActive, wfpCaption] := clBtnFace; + PnlFrameColors[wfsActive, wfpCaptionText] := clBtnText; + PnlFrameColors[wfsInactive, wfpBorder] := clBtnShadow; + PnlFrameColors[wfsInactive, wfpCaption] := clBtnFace; + PnlFrameColors[wfsInactive, wfpCaptionText] := DisabledText; + SetContrast(PnlFrameColors[wfsInactive, wfpCaptionText], clBtnFace, 120); + + BtnItemColors[bisNormal, ipBody] := clNone; + BtnItemColors[bisNormal, ipText] := clBtnText; + SetContrast(BtnItemColors[bisNormal, ipText], ToolbarColor, 180); + BtnItemColors[bisNormal, ipFrame] := clNone; + BtnItemColors[bisDisabled, ipBody] := clNone; + BtnItemColors[bisDisabled, ipText] := DisabledText; + SetContrast(BtnItemColors[bisDisabled, ipText], ToolbarColor, 80); + BtnItemColors[bisDisabled, ipFrame] := clNone; + BtnItemColors[bisSelected, ipBody] := Blend(clHighlight, Blend(clBtnFace, clWindow, 50), 10); + SetContrast(BtnItemColors[bisSelected, ipBody], ToolbarColor, 5); + BtnItemColors[bisSelected, ipText] := BtnItemColors[bisNormal, ipText]; + BtnItemColors[bisSelected, ipFrame] := clHighlight; + BtnItemColors[bisPressed, ipBody] := Blend(clHighlight, clWindow, 50); + BtnItemColors[bisPressed, ipText] := clHighlightText; + BtnItemColors[bisPressed, ipFrame] := clHighlight; + BtnItemColors[bisHot, ipBody] := HotBtnFace; + BtnItemColors[bisHot, ipText] := clMenuText; + SetContrast(BtnItemColors[bisHot, ipText], BtnItemColors[bisHot, ipBody], 180); + BtnItemColors[bisHot, ipFrame] := clHighlight; + SetContrast(BtnItemColors[bisHot, ipFrame], ToolbarColor, 100); + BtnItemColors[bisDisabledHot, ipBody] := HotBtnFace; + BtnItemColors[bisDisabledHot, ipText] := DisabledText; + BtnItemColors[bisDisabledHot, ipFrame] := clHighlight; + BtnItemColors[bisSelectedHot, ipBody] := Blend(clHighlight, clWindow, 50); + SetContrast(BtnItemColors[bisSelectedHot, ipBody], ToolbarColor, 30); + BtnItemColors[bisSelectedHot, ipText] := clHighlightText; + SetContrast(BtnItemColors[bisSelectedHot, ipText], BtnItemColors[bisSelectedHot, ipBody], 180); + BtnItemColors[bisSelectedHot, ipFrame] := clHighlight; + SetContrast(BtnItemColors[bisSelectedHot, ipFrame], BtnItemColors[bisSelectedHot, ipBody], 100); + BtnItemColors[bisPopupParent, ipBody] := ToolbarColor; + BtnItemColors[bisPopupParent, ipText] := BtnItemColors[bisNormal, ipText]; + BtnItemColors[bisPopupParent, ipFrame] := PopupFrameColor; + + MenuItemColors[misNormal, ipBody] := clNone; + MenuItemColors[misNormal, ipText] := clWindowText; + SetContrast(MenuItemColors[misNormal, ipText], PopupColor, 180); + MenuItemColors[misNormal, ipFrame] := clNone; + MenuItemColors[misDisabled, ipBody] := clNone; + MenuItemColors[misDisabled, ipText] := Blend(clGrayText, clWindow, 70); + SetContrast(MenuItemColors[misDisabled, ipText], PopupColor, 80); // 145? + MenuItemColors[misDisabled, ipFrame] := clNone; + MenuItemColors[misHot, ipBody] := BtnItemColors[bisHot, ipBody]; + MenuItemColors[misHot, ipText] := BtnItemColors[bisHot, ipText]; + MenuItemColors[misHot, ipFrame] := BtnItemColors[bisHot, ipFrame]; + MenuItemColors[misDisabledHot, ipBody] := PopupColor; + MenuItemColors[misDisabledHot, ipText] := Blend(clGrayText, clWindow, 70); + MenuItemColors[misDisabledHot, ipFrame] := clHighlight; + + { Other Colors } + DragHandleColor := Blend(clBtnShadow, clWindow, 75); + SetContrast(DragHandleColor, ToolbarColor, 85); + IconShadowColor := Blend(clBlack, HotBtnFace, 25); + ToolbarSeparatorColor := Blend(clBtnShadow, clWindow, 70); + SetContrast(ToolbarSeparatorColor, ToolbarColor, 50); + PopupSeparatorColor := ToolbarSeparatorColor; + StatusPanelFrameColor := Blend(clWindow, clBtnFace, 30); + SetContrast(StatusPanelFrameColor, clBtnFace, 30); + + Undither(MenubarColor); + Undither(ToolbarColor); + Undither(PopupColor); + Undither(DockPanelColor); + Undither(PopupFrameColor); + Undither(WinFrameColors[wfsActive, wfpBorder]); + Undither(WinFrameColors[wfsActive, wfpCaption]); + Undither(WinFrameColors[wfsActive, wfpCaptionText]); + Undither(WinFrameColors[wfsInactive, wfpBorder]); + Undither(WinFrameColors[wfsInactive, wfpCaption]); + Undither(WinFrameColors[wfsInactive, wfpCaptionText]); + Undither(PnlFrameColors[wfsActive, wfpBorder]); + Undither(PnlFrameColors[wfsActive, wfpCaption]); + Undither(PnlFrameColors[wfsActive, wfpCaptionText]); + Undither(PnlFrameColors[wfsInactive, wfpBorder]); + Undither(PnlFrameColors[wfsInactive, wfpCaption]); + Undither(PnlFrameColors[wfsInactive, wfpCaptionText]); + Undither(BtnItemColors[bisNormal, ipBody]); + Undither(BtnItemColors[bisNormal, ipText]); + Undither(BtnItemColors[bisNormal, ipFrame]); + Undither(BtnItemColors[bisDisabled, ipBody]); + Undither(BtnItemColors[bisDisabled, ipText]); + Undither(BtnItemColors[bisDisabled, ipFrame]); + Undither(BtnItemColors[bisSelected, ipBody]); + Undither(BtnItemColors[bisSelected, ipText]); + Undither(BtnItemColors[bisSelected, ipFrame]); + Undither(BtnItemColors[bisPressed, ipBody]); + Undither(BtnItemColors[bisPressed, ipText]); + Undither(BtnItemColors[bisPressed, ipFrame]); + Undither(BtnItemColors[bisHot, ipBody]); + Undither(BtnItemColors[bisHot, ipText]); + Undither(BtnItemColors[bisHot, ipFrame]); + Undither(BtnItemColors[bisDisabledHot, ipBody]); + Undither(BtnItemColors[bisDisabledHot, ipText]); + Undither(BtnItemColors[bisDisabledHot, ipFrame]); + Undither(BtnItemColors[bisSelectedHot, ipBody]); + Undither(BtnItemColors[bisSelectedHot, ipText]); + Undither(BtnItemColors[bisSelectedHot, ipFrame]); + Undither(BtnItemColors[bisPopupParent, ipBody]); + Undither(BtnItemColors[bisPopupParent, ipText]); + Undither(BtnItemColors[bisPopupParent, ipFrame]); + Undither(MenuItemColors[misNormal, ipBody]); + Undither(MenuItemColors[misNormal, ipText]); + Undither(MenuItemColors[misNormal, ipFrame]); + Undither(MenuItemColors[misDisabled, ipBody]); + Undither(MenuItemColors[misDisabled, ipText]); + Undither(MenuItemColors[misDisabled, ipFrame]); + Undither(MenuItemColors[misHot, ipBody]); + Undither(MenuItemColors[misHot, ipText]); + Undither(MenuItemColors[misHot, ipFrame]); + Undither(MenuItemColors[misDisabledHot, ipBody]); + Undither(MenuItemColors[misDisabledHot, ipText]); + Undither(MenuItemColors[misDisabledHot, ipFrame]); + Undither(DragHandleColor); + Undither(IconShadowColor); + Undither(ToolbarSeparatorColor); + Undither(PopupSeparatorColor); + Undither(StatusPanelFrameColor); + end; +end; + +function TTBXOfficeXPTheme.GetPopupShadowType: Integer; +begin + Result := PST_OFFICEXP; +end; + +constructor TTBXOfficeXPTheme.Create(const AName: string); +begin + inherited; + if CounterLock = 0 then InitializeStock; + Inc(CounterLock); + AddTBXSysChangeNotification(Self); + SetupColorCache; +end; + +destructor TTBXOfficeXPTheme.Destroy; +begin + RemoveTBXSysChangeNotification(Self); + Dec(CounterLock); + if CounterLock = 0 then FinalizeStock; + inherited; +end; + +procedure TTBXOfficeXPTheme.GetViewMargins(ViewType: Integer; out Margins: TTBXMargins); +begin + Margins.LeftWidth := 0; + Margins.TopHeight := 0; + Margins.RightWidth := 0; + Margins.BottomHeight := 0; +end; + +procedure TTBXOfficeXPTheme.PaintPageScrollButton(Canvas: TCanvas; + const ARect: TRect; ButtonType: Integer; Hot: Boolean); +var + DC: HDC; + R: TRect; + X, Y, Sz: Integer; + C: TColor; +begin + DC := Canvas.Handle; + R := ARect; + if Hot then C := BtnItemColors[bisHot, ipFrame] + else C := clBtnShadow; + FrameRectEx(DC, R, C, False); + InflateRect(R, -1, -1); + if Hot then C := BtnItemColors[bisHot, ipBody] + else C := clBtnFace; + FillRectEx(DC, R, C); + X := (R.Left + R.Right) div 2; + Y := (R.Top + R.Bottom) div 2; + Sz := Min(X - R.Left, Y - R.Top) * 3 div 4; + + if Hot then C := BtnItemColors[bisHot, ipText] + else C := BtnItemColors[bisNormal, ipText]; + + case ButtonType of + PSBT_UP: + begin + Inc(Y, Sz div 2); + PolygonEx(DC, [Point(X + Sz, Y), Point(X, Y - Sz), Point(X - Sz, Y)], C, C); + end; + PSBT_DOWN: + begin + Y := (R.Top + R.Bottom - 1) div 2; + Dec(Y, Sz div 2); + PolygonEx(DC, [Point(X + Sz, Y), Point(X, Y + Sz), Point(X - Sz, Y)], C, C); + end; + PSBT_LEFT: + begin + Inc(X, Sz div 2); + PolygonEx(DC, [Point(X, Y + Sz), Point(X - Sz, Y), Point(X, Y - Sz)], C, C); + end; + PSBT_RIGHT: + begin + X := (R.Left + R.Right - 1) div 2; + Dec(X, Sz div 2); + PolygonEx(DC, [Point(X, Y + Sz), Point(X + Sz, Y), Point(X, Y - Sz)], C, C); + end; + end; +end; + +procedure TTBXOfficeXPTheme.PaintFrameControl(Canvas: TCanvas; R: TRect; Kind, State: Integer; Params: Pointer); +var + DC: HDC; + X, Y: Integer; + Pen, OldPen: HPen; + Brush, OldBrush: HBrush; + C: TColor; + + function GetPenColor: TColor; + begin + if Boolean(State and PFS_DISABLED) then Result := clBtnShadow + else if Boolean(State and PFS_PUSHED) then Result := BtnItemColors[bisPressed, ipFrame] + else if Boolean(State and PFS_HOT) then Result := BtnItemColors[bisHot, ipFrame] + else Result := clBtnShadow; + end; + + function GetBrush: HBrush; + begin + if Boolean(State and PFS_DISABLED) then Result := CreateBrushEx(clNone) + else if Boolean(State and PFS_PUSHED) then Result := CreateBrushEx(BtnItemColors[bisPressed, ipBody]) + else if Boolean(State and PFS_HOT) then Result := CreateBrushEx(BtnItemColors[bisHot, ipBody]) + else if Boolean(State and PFS_MIXED) then Result := CreateDitheredBrush(clWindow, clBtnFace) + else Result := CreateBrushEx(clNone); + end; + + function GetTextColor: TColor; + begin + if Boolean(State and PFS_DISABLED) then Result := BtnItemColors[bisDisabled, ipText] + else if Boolean(State and PFS_PUSHED) then Result := BtnItemColors[bisPressed, ipText] + else if Boolean(State and PFS_MIXED) then Result := clBtnShadow + else if Boolean(State and PFS_HOT) then Result := BtnItemColors[bisHot, ipText] + else Result := BtnItemColors[bisNormal, ipText]; + end; + +begin + DC := Canvas.Handle; + case Kind of + PFC_CHECKBOX: + begin + InflateRect(R, -1, -1); + FrameRectEx(DC, R, GetPenColor, True); + Brush := GetBrush; + Windows.FillRect(DC, R, Brush); + DeleteObject(Brush); + InflateRect(R, 1, 1); + + if Boolean(State and (PFS_CHECKED or PFS_MIXED)) then + begin + X := (R.Left + R.Right) div 2 - 1; + Y := (R.Top + R.Bottom) div 2 + 1; + C := GetTextColor; + PolygonEx(DC, [Point(X-2, Y), Point(X, Y+2), Point(X+4, Y-2), + Point(X+4, Y-4), Point(X, Y), Point(X-2, Y-2), Point(X-2, Y)], C, C); + end; + end; + PFC_RADIOBUTTON: + begin + InflateRect(R, -1, -1); + + with R do + begin + Brush := GetBrush; + OldBrush := SelectObject(DC, Brush); + Pen := CreatePenEx(GetPenColor); + OldPen := SelectObject(DC, Pen); + Windows.Ellipse(DC, Left, Top, Right, Bottom); + SelectObject(DC, OldPen); + DeleteObject(Pen); + SelectObject(DC, OldBrush); + DeleteObject(Brush); + end; + + if Boolean(State and PFS_CHECKED) then + begin + InflateRect(R, -3, -3); + C := GetTextColor; + Brush := CreateBrushEx(C); + OldBrush := SelectObject(DC, Brush); + Pen := CreatePenEx(C); + OldPen := SelectObject(DC, Pen); + with R do Windows.Ellipse(DC, Left, Top, Right, Bottom); + SelectObject(DC, OldPen); + DeleteObject(Pen); + SelectObject(DC, OldBrush); + DeleteObject(Brush); + end; + end; + end; +end; + +procedure TTBXOfficeXPTheme.PaintStatusBar(Canvas: TCanvas; R: TRect; Part: Integer); +var + D, Sz, I: Integer; + DC: HDC; + + procedure DiagLine(C: TColor); + begin + with R do + DrawLineEx(DC, Right - 1 - D, Bottom - 1, Right, Bottom - D - 2, C); + Inc(D); + end; + +begin + DC := Canvas.Handle; + case Part of + SBP_BODY: + begin + FillRectEx(DC, R, clBtnFace); + end; + SBP_PANE, SBP_LASTPANE: + begin + if Part = SBP_PANE then Dec(R.Right, 2); + FrameRectEx(DC, R, StatusPanelFrameColor, False); + end; + SBP_GRIPPER: + begin + D := 0; + Sz := Min(R.Right - R.Left, R.Bottom - R.Top); + for I := 1 to 3 do + case Sz of + 0..8: + begin + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + end; + 9..11: + begin + DiagLine(clBtnFace); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + end; + 12..14: + begin + DiagLine(clBtnShadow); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + end; + else + DiagLine(clBtnFace); + DiagLine(clBtnShadow); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + end; + end; + end; +end; + +procedure TTBXOfficeXPTheme.TBXSysCommand(var Message: TMessage); +begin + if Message.WParam = TSC_VIEWCHANGE then SetupColorCache; +end; + +initialization + RegisterTBXTheme('OfficeXP', TTBXOfficeXPTheme); + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXOfficeXPTheme.pas.orig b/official/2.1.6+2.1.beta1/TBX/TBXOfficeXPTheme.pas.orig new file mode 100644 index 0000000..92284c1 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXOfficeXPTheme.pas.orig @@ -0,0 +1,1688 @@ +unit TBXOfficeXPTheme; + +// TBX Package +// Copyright 2001-2004 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// $Id: TBXOfficeXPTheme.pas 16 2004-05-26 02:02:55Z Alex@ZEISS $ + +interface + +{$I TB2Ver.inc} +{$I TBX.inc} + +uses + Windows, Messages, Graphics, TBXThemes, TBXDefaultTheme, ImgList; + +type + TItemPart = (ipBody, ipText, ipFrame); + TBtnItemState = (bisNormal, bisDisabled, bisSelected, bisPressed, bisHot, + bisDisabledHot, bisSelectedHot, bisPopupParent); + TMenuItemState = (misNormal, misDisabled, misHot, misDisabledHot); + TWinFramePart = (wfpBorder, wfpCaption, wfpCaptionText); + TWinFrameState = (wfsActive, wfsInactive); + + TTBXOfficeXPTheme = class(TTBXTheme) + private + procedure TBXSysCommand(var Message: TMessage); message TBX_SYSCOMMAND; + protected + { View/Window Colors } + MenubarColor: TColor; + ToolbarColor: TColor; + PopupColor: TColor; + DockPanelColor: TColor; + PopupFrameColor: TColor; + WinFrameColors: array [TWinFrameState, TWinFramePart] of TColor; + PnlFrameColors: array [TWinFrameState, TWinFramePart] of TColor; + MenuItemColors: array [TMenuItemState, TItemPart] of TColor; + BtnItemColors: array [TBtnItemState, TItemPart] of TColor; + + { Other Colors } + DragHandleColor: TColor; + PopupSeparatorColor: TColor; + ToolbarSeparatorColor: TColor; + IconShadowColor: TColor; + StatusPanelFrameColor: TColor; + + procedure SetupColorCache; virtual; + protected + { Internal Methods } + function GetPartColor(const ItemInfo: TTBXItemInfo; ItemPart: TItemPart): TColor; + function GetBtnColor(const ItemInfo: TTBXItemInfo; ItemPart: TItemPart): TColor; + public + constructor Create(const AName: string); override; + destructor Destroy; override; + + { Metrics access} + function GetBooleanMetrics(Index: Integer): Boolean; override; + function GetIntegerMetrics(Index: Integer): Integer; override; + procedure GetMargins(MarginID: Integer; out Margins: TTBXMargins); override; + function GetImageOffset(Canvas: TCanvas; const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList): TPoint; override; + function GetItemColor(const ItemInfo: TTBXItemInfo): TColor; override; + function GetItemTextColor(const ItemInfo: TTBXItemInfo): TColor; override; + function GetItemImageBackground(const ItemInfo: TTBXItemInfo): TColor; override; + function GetPopupShadowType: Integer; override; + procedure GetViewBorder(ViewType: Integer; out Border: TPoint); override; + function GetViewColor(AViewType: Integer): TColor; override; + procedure GetViewMargins(ViewType: Integer; out Margins: TTBXMargins); override; + + { Painting routines } + procedure PaintBackgnd(Canvas: TCanvas; const ADockRect, ARect, AClipRect: TRect; AColor: TColor; Transparent: Boolean; AViewType: Integer); override; + procedure PaintButton(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintCaption(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo; const ACaption: string; AFormat: Cardinal; Rotated: Boolean); override; + procedure PaintCheckMark(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintChevron(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintDock(Canvas: TCanvas; const ClientRect, DockRect: TRect; DockPosition: Integer); override; + procedure PaintDockPanelNCArea(Canvas: TCanvas; R: TRect; const DockPanelInfo: TTBXDockPanelInfo); override; + procedure PaintDropDownArrow(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintEditButton(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo; ButtonInfo: TTBXEditBtnInfo); override; + procedure PaintEditFrame(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo; const EditInfo: TTBXEditInfo); override; + procedure PaintFloatingBorder(Canvas: TCanvas; const ARect: TRect; const WindowInfo: TTBXWindowInfo); override; + procedure PaintFrame(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintImage(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList; ImageIndex: Integer); override; + procedure PaintMDIButton(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo; ButtonKind: Cardinal); override; + procedure PaintMenuItem(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo); override; + procedure PaintMenuItemFrame(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); override; + procedure PaintPageScrollButton(Canvas: TCanvas; const ARect: TRect; ButtonType: Integer; Hot: Boolean); override; + procedure PaintPopupNCArea(Canvas: TCanvas; R: TRect; const PopupInfo: TTBXPopupInfo); override; + procedure PaintSeparator(Canvas: TCanvas; ARect: TRect; ItemInfo: TTBXItemInfo; Horizontal, LineSeparator: Boolean); override; + procedure PaintToolbarNCArea(Canvas: TCanvas; R: TRect; const ToolbarInfo: TTBXToolbarInfo); override; + procedure PaintFrameControl(Canvas: TCanvas; R: TRect; Kind, State: Integer; Params: Pointer); override; + procedure PaintStatusBar(Canvas: TCanvas; R: TRect; Part: Integer); override; + end; + +implementation + +uses TBXUtils, TB2Common, TB2Item, Classes, Controls, Commctrl, Forms; + +var + StockImgList: TImageList; + CounterLock: Integer; + +procedure InitializeStock; +begin + StockImgList := TImageList.Create(nil); + StockImgList.Handle := ImageList_LoadBitmap(HInstance, 'TBXGLYPHS', 16, 0, clWhite); +end; + +procedure FinalizeStock; +begin + StockImgList.Free; +end; + +{ TTBXOfficeXPTheme } + +function TTBXOfficeXPTheme.GetBooleanMetrics(Index: Integer): Boolean; +begin + case Index of + TMB_OFFICEXPPOPUPALIGNMENT: Result := True; + TMB_EDITMENUFULLSELECT: Result := True; + TMB_EDITHEIGHTEVEN: Result := False; + TMB_SOLIDTOOLBARNCAREA: Result := False; + TMB_SOLIDTOOLBARCLIENTAREA: Result := True; + else + Result := False; + end; +end; + +function TTBXOfficeXPTheme.GetIntegerMetrics(Index: Integer): Integer; +const + DEFAULT = -1; +begin + case Index of + TMI_SPLITBTN_ARROWWIDTH: Result := 12; + + TMI_DROPDOWN_ARROWWIDTH: Result := 8; + TMI_DROPDOWN_ARROWMARGIN: Result := 3; + + TMI_MENU_IMGTEXTSPACE: Result := 5; + TMI_MENU_LCAPTIONMARGIN: Result := 3; + TMI_MENU_RCAPTIONMARGIN: Result := 3; + TMI_MENU_SEPARATORSIZE: Result := 3; + TMI_MENU_MDI_DW: Result := 2; + TMI_MENU_MDI_DH: Result := 2; + + TMI_TLBR_SEPARATORSIZE: Result := 6; + + TMI_EDIT_FRAMEWIDTH: Result := 1; + TMI_EDIT_TEXTMARGINHORZ: Result := 2; + TMI_EDIT_TEXTMARGINVERT: Result := 2; + TMI_EDIT_BTNWIDTH: Result := 14; + TMI_EDIT_MENURIGHTINDENT: Result := 1; + else + Result := DEFAULT; + end; +end; + +function TTBXOfficeXPTheme.GetViewColor(AViewType: Integer): TColor; +begin + Result := clBtnFace; + if (AViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + if (AViewType and TVT_MENUBAR) = TVT_MENUBAR then Result := MenubarColor + else Result := ToolbarColor; + end + else if (AViewType and VT_POPUP) = VT_POPUP then + begin + if (AViewType and PVT_LISTBOX) = PVT_LISTBOX then Result := clWindow + else Result := PopupColor; + end + else if (AViewType and VT_DOCKPANEL) = VT_DOCKPANEL then Result := DockPanelColor; +end; + +function TTBXOfficeXPTheme.GetBtnColor(const ItemInfo: TTBXItemInfo; ItemPart: TItemPart): TColor; +const + BFlags1: array [Boolean] of TBtnItemState = (bisDisabled, bisDisabledHot); + BFlags2: array [Boolean] of TBtnItemState = (bisSelected, bisSelectedHot); + BFlags3: array [Boolean] of TBtnItemState = (bisNormal, bisHot); +var + B: TBtnItemState; + Embedded: Boolean; +begin + with ItemInfo do + begin + Embedded := (ViewType and VT_TOOLBAR = VT_TOOLBAR) and + (ViewType and TVT_EMBEDDED = TVT_EMBEDDED); + if not Enabled then B := BFlags1[HoverKind = hkKeyboardHover] + else if ItemInfo.IsPopupParent then B := bisPopupParent + else if Pushed then B := bisPressed + else if Selected then B := BFlags2[HoverKind <> hkNone] + else B := BFlags3[HoverKind <> hkNone]; + Result := BtnItemColors[B, ItemPart]; + if Embedded then + begin + if (ItemPart = ipBody) and (Result = clNone) then Result := ToolbarColor; + if ItemPart = ipFrame then + begin + if Selected then Result := clWindowFrame + else if (Result = clNone) then Result := clBtnShadow; + end; + end; + end; +end; + +function TTBXOfficeXPTheme.GetPartColor(const ItemInfo: TTBXItemInfo; ItemPart: TItemPart): TColor; +const + MFlags1: array [Boolean] of TMenuItemState = (misDisabled, misDisabledHot); + MFlags2: array [Boolean] of TMenuItemState = (misNormal, misHot); + BFlags1: array [Boolean] of TBtnItemState = (bisDisabled, bisDisabledHot); + BFlags2: array [Boolean] of TBtnItemState = (bisSelected, bisSelectedHot); + BFlags3: array [Boolean] of TBtnItemState = (bisNormal, bisHot); +var + IsMenuItem, Embedded: Boolean; + M: TMenuItemState; + B: TBtnItemState; +begin + with ItemInfo do + begin + IsMenuItem := ((ViewType and PVT_POPUPMENU) = PVT_POPUPMENU) and + ((ItemOptions and IO_TOOLBARSTYLE) = 0); + Embedded := ((ViewType and VT_TOOLBAR) = VT_TOOLBAR) and + ((ViewType and TVT_EMBEDDED) = TVT_EMBEDDED); + if IsMenuItem then + begin + if not Enabled then M := MFlags1[HoverKind = hkKeyboardHover] + else M := MFlags2[HoverKind <> hkNone]; + Result := MenuItemColors[M, ItemPart]; + end + else + begin + if not Enabled then B := BFlags1[HoverKind = hkKeyboardHover] + else if ItemInfo.IsPopupParent then B := bisPopupParent + else if Pushed then B := bisPressed + else if Selected then B := BFlags2[HoverKind <> hkNone] + else B := BFlags3[HoverKind <> hkNone]; + Result := BtnItemColors[B, ItemPart]; + if Embedded and (Result = clNone) then + begin + if ItemPart = ipBody then Result := ToolbarColor; + if ItemPart = ipFrame then Result := clBtnShadow; + end; + end; + end; +end; + +function TTBXOfficeXPTheme.GetItemColor(const ItemInfo: TTBXItemInfo): TColor; +begin + Result := GetPartColor(ItemInfo, ipBody); + if Result = clNone then Result := GetViewColor(ItemInfo.ViewType); +end; + +function TTBXOfficeXPTheme.GetItemTextColor(const ItemInfo: TTBXItemInfo): TColor; +begin + Result := GetPartColor(ItemInfo, ipText); +end; + +function TTBXOfficeXPTheme.GetItemImageBackground(const ItemInfo: TTBXItemInfo): TColor; +begin + Result := GetBtnColor(ItemInfo, ipBody); + if Result = clNone then Result := GetViewColor(ItemInfo.ViewType); +end; + +procedure TTBXOfficeXPTheme.GetViewBorder(ViewType: Integer; out Border: TPoint); +const + XMetrics: array [Boolean] of Integer = (SM_CXDLGFRAME, SM_CXFRAME); + YMetrics: array [Boolean] of Integer = (SM_CYDLGFRAME, SM_CYFRAME); +var + Resizable: Boolean; + + procedure SetBorder(X, Y: Integer); + begin + Border.X := X; + Border.Y := Y; + end; + +begin + if (ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + if (ViewType and TVT_FLOATING) = TVT_FLOATING then + begin + Resizable := (ViewType and TVT_RESIZABLE) = TVT_RESIZABLE; + Border.X := GetSystemMetrics(XMetrics[Resizable]) - 1; + Border.Y := GetSystemMetrics(YMetrics[Resizable]) - 1; + end + else SetBorder(2, 2); + end + else if (ViewType and VT_POPUP) = VT_POPUP then + begin + if (ViewType and PVT_POPUPMENU) = PVT_POPUPMENU then Border.X := 1 + else Border.X := 2; + Border.Y := 2; + end + else if (ViewType and VT_DOCKPANEL) = VT_DOCKPANEL then + begin + if (ViewType and DPVT_FLOATING) = DPVT_FLOATING then + begin + Resizable := (ViewType and DPVT_RESIZABLE) = DPVT_RESIZABLE; + Border.X := GetSystemMetrics(XMetrics[Resizable]) - 1; + Border.Y := GetSystemMetrics(YMetrics[Resizable]) - 1; + end + else SetBorder(2, 2); + end + else SetBorder(0, 0); +end; + +procedure TTBXOfficeXPTheme.GetMargins(MarginID: Integer; out Margins: TTBXMargins); +begin + with Margins do + case MarginID of + MID_TOOLBARITEM: + begin + LeftWidth := 2; RightWidth := 2; + TopHeight := 2; BottomHeight := 2; + end; + + MID_MENUITEM: + begin + LeftWidth := 1; RightWidth := 1; + TopHeight := 3; BottomHeight := 3; + end; + + MID_STATUSPANE: + begin + LeftWidth := 1; RightWidth := 3; + TopHeight := 1; BottomHeight := 1; + end; + else + LeftWidth := 0; + RightWidth := 0; + TopHeight := 0; + BottomHeight := 0; + end; +end; + +procedure TTBXOfficeXPTheme.PaintBackgnd(Canvas: TCanvas; const ADockRect, ARect, AClipRect: TRect; + AColor: TColor; Transparent: Boolean; AViewType: Integer); +var + DC: HDC; + R: TRect; +begin + DC := Canvas.Handle; + if not Transparent then + begin + IntersectRect(R, ARect, AClipRect); + FillRectEx(DC, R, AColor); + end; +end; + +procedure TTBXOfficeXPTheme.PaintCaption(Canvas: TCanvas; + const ARect: TRect; const ItemInfo: TTBXItemInfo; const ACaption: string; + AFormat: Cardinal; Rotated: Boolean); +var + R: TRect; +begin + with ItemInfo, Canvas do + begin + R := ARect; + Brush.Style := bsClear; + if Font.Color = clNone then Font.Color := GetPartColor(ItemInfo, ipText); + if not Rotated then Windows.DrawText(Handle, PChar(ACaption), Length(ACaption), R, AFormat) + else DrawRotatedText(Handle, ACaption, R, AFormat); + Brush.Style := bsSolid; + end; +end; + +procedure TTBXOfficeXPTheme.PaintCheckMark(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); +var + X, Y: Integer; +begin + X := (ARect.Left + ARect.Right) div 2 - 2; + Y := (ARect.Top + ARect.Bottom) div 2 + 1; + Canvas.Pen.Color := GetBtnColor(ItemInfo, ipText); + Canvas.Polyline([Point(X-2, Y-2), Point(X, Y), Point(X+4, Y-4), + Point(X+4, Y-3), Point(X, Y+1), Point(X-2, Y-1), Point(X-2, Y-2)]); +end; + +procedure TTBXOfficeXPTheme.PaintChevron(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); +const + Pattern: array[Boolean, 0..15] of Byte = ( + ($CC, 0, $66, 0, $33, 0, $66, 0, $CC, 0, 0, 0, 0, 0, 0, 0), + ($88, 0, $D8, 0, $70, 0, $20, 0, $88, 0, $D8, 0, $70, 0, $20, 0)); +var + R2: TRect; + W, H: Integer; +begin + R2 := ARect; + PaintButton(Canvas, ARect, ItemInfo); + if not ItemInfo.IsVertical then + begin + Inc(R2.Top, 4); + R2.Bottom := R2.Top + 5; + W := 8; + H := 5; + end + else + begin + R2.Left := R2.Right - 9; + R2.Right := R2.Left + 5; + W := 5; + H := 8; + end; + DrawGlyph(Canvas.Handle, R2, W, H, Pattern[ItemInfo.IsVertical][0], GetPartColor(ItemInfo, ipText)); +end; + +procedure TTBXOfficeXPTheme.PaintEditButton(Canvas: TCanvas; const ARect: TRect; + var ItemInfo: TTBXItemInfo; ButtonInfo: TTBXEditBtnInfo); +var + DC: HDC; + BtnDisabled, BtnHot, BtnPressed, Embedded: Boolean; + R, BR: TRect; + X, Y: Integer; + SaveItemInfoPushed: Boolean; + C: TColor; +begin + DC := Canvas.Handle; + R := ARect; + Embedded := ((ItemInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR) and + ((ItemInfo.ViewType and TVT_EMBEDDED) = TVT_EMBEDDED); + + InflateRect(R, 1, 1); + Inc(R.Left); + with Canvas do + if ButtonInfo.ButtonType = EBT_DROPDOWN then + begin + BtnDisabled := (ButtonInfo.ButtonState and EBDS_DISABLED) <> 0; + BtnHot := (ButtonInfo.ButtonState and EBDS_HOT) <> 0; + BtnPressed := (ButtonInfo.ButtonState and EBDS_PRESSED) <> 0; + if not BtnDisabled then + begin + if BtnPressed or BtnHot or Embedded then PaintButton(Canvas, R, ItemInfo) + else if (ItemInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + R := ARect; + if not Embedded then + begin + FrameRectEx(DC, R, clWindow, False); + C := clWindow; + end + else C := GetBtnColor(ItemInfo, ipFrame); + DrawLineEx(DC, R.Left - 1, R.Top, R.Left - 1, R.Bottom, C); + end; + end; + PaintDropDownArrow(Canvas, R, ItemInfo); + end + else if ButtonInfo.ButtonType = EBT_SPIN then + begin + BtnDisabled := (ButtonInfo.ButtonState and EBSS_DISABLED) <> 0; + BtnHot := (ButtonInfo.ButtonState and EBSS_HOT) <> 0; + + { Upper button } + BR := R; + BR.Bottom := (R.Top + R.Bottom + 1) div 2; + BtnPressed := (ButtonInfo.ButtonState and EBSS_UP) <> 0; + SaveItemInfoPushed := ItemInfo.Pushed; + ItemInfo.Pushed := BtnPressed; + if not BtnDisabled then + begin + if BtnPressed or BtnHot or Embedded then PaintButton(Canvas, BR, ItemInfo) + else if (ItemInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + BR.Left := ARect.Left; BR.Top := ARect.Top; BR.Right := ARect.Right; + if not Embedded then + begin + FrameRectEx(DC, BR, clWindow, False); + C := clWindow; + end + else C := GetBtnColor(ItemInfo, ipFrame); + DrawLineEx(DC, BR.Left - 1, BR.Top, BR.Left - 1, BR.Bottom, C); + end; + end; + X := (BR.Left + BR.Right) div 2; + Y := (BR.Top + BR.Bottom - 1) div 2; + Pen.Color := GetPartColor(ItemInfo, ipText); + Brush.Color := Pen.Color; + Polygon([Point(X - 2, Y + 1), Point(X + 2, Y + 1), Point(X, Y - 1)]); + + { Lower button } + BR := R; + BR.Top := (R.Top + R.Bottom) div 2; + BtnPressed := (ButtonInfo.ButtonState and EBSS_DOWN) <> 0; + ItemInfo.Pushed := BtnPressed; + if not BtnDisabled then + begin + if BtnPressed or BtnHot or Embedded then PaintButton(Canvas, BR, ItemInfo) + else if (ItemInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + BR.Left := ARect.Left; BR.Bottom := ARect.Bottom; BR.Right := ARect.Right; + if not Embedded then + begin + FrameRectEx(DC, BR, clWindow, False); + C := clWindow; + end + else C := GetBtnColor(ItemInfo, ipFrame); + DrawLineEx(DC, BR.Left - 1, BR.Top, BR.Left - 1, BR.Bottom, C); + end; + end; + X := (BR.Left + BR.Right) div 2; + Y := (BR.Top + BR.Bottom) div 2; + C := GetPartColor(ItemInfo, ipText); + PolygonEx(DC, [Point(X - 2, Y - 1), Point(X + 2, Y - 1), Point(X, Y + 1)], C, C); + + ItemInfo.Pushed := SaveItemInfoPushed; + end; +end; + +procedure TTBXOfficeXPTheme.PaintEditFrame(Canvas: TCanvas; + const ARect: TRect; var ItemInfo: TTBXItemInfo; const EditInfo: TTBXEditInfo); +var + DC: HDC; + R: TRect; + W: Integer; + Embedded: Boolean; +begin + DC := Canvas.Handle; + R := ARect; + PaintFrame(Canvas, R, ItemInfo); + W := EditFrameWidth; + InflateRect(R, -W, -W); + Embedded := ((ItemInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR) and + ((ItemInfo.ViewType and TVT_EMBEDDED) = TVT_EMBEDDED); + if not (ItemInfo.Enabled or Embedded) then + FrameRectEx(DC, R, BtnItemColors[bisDisabled, ipText], False); + + with EditInfo do if RightBtnWidth > 0 then Dec(R.Right, RightBtnWidth - 2); + + if ItemInfo.Enabled then + begin + if ((ItemInfo.ViewType and VT_TOOLBAR) <> VT_TOOLBAR) and (GetPartColor(ItemInfo, ipFrame) = clNone) then + FrameRectEx(DC, R, ToolbarColor, False) + else + FrameRectEx(DC, R, clWindow, False); + + InflateRect(R, -1, -1); + FillRectEx(DC, R, clWindow); + if ((ItemInfo.ViewType and VT_TOOLBAR) <> VT_TOOLBAR) and (GetPartColor(ItemInfo, ipFrame) = clNone) then + begin + R := ARect; + InflateRect(R, -1, -1); + FrameRectEx(DC, R, ToolbarColor, False); + end; + end + else InflateRect(R, -1, -1); + + with EditInfo do if LeftBtnWidth > 0 then Inc(R.Left, LeftBtnWidth - 2); + + if EditInfo.RightBtnWidth > 0 then + begin + R := ARect; + InflateRect(R, -W, -W); + R.Left := R.Right - EditInfo.RightBtnWidth; + PaintEditButton(Canvas, R, ItemInfo, EditInfo.RightBtnInfo); + end; +end; + +procedure TTBXOfficeXPTheme.PaintDropDownArrow(Canvas: TCanvas; + const ARect: TRect; const ItemInfo: TTBXItemInfo); +var + X, Y: Integer; +begin + with ARect, Canvas do + begin + X := (Left + Right) div 2; + Y := (Top + Bottom) div 2 - 1; + Pen.Color := GetPartColor(ItemInfo, ipText); + Brush.Color := Pen.Color; + if ItemInfo.IsVertical then Polygon([Point(X, Y + 2), Point(X, Y - 2), Point(X - 2, Y)]) + else Polygon([Point(X - 2, Y), Point(X + 2, Y), Point(X, Y + 2)]); + end; +end; + +procedure TTBXOfficeXPTheme.PaintButton(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); +var + DC: HDC; + R: TRect; +begin + DC := Canvas.Handle; + with ItemInfo do + begin + R := ARect; + if ((ItemOptions and IO_DESIGNING) <> 0) and not Selected then + begin + if ComboPart = cpSplitRight then Dec(R.Left); + FrameRectEx(DC, R, GetNearestColor(DC, MixColors(clBtnShadow, clBtnFace, 100)), False); + end + else + begin + FrameRectEx(DC, R, GetBtnColor(ItemInfo, ipFrame), True); + if (ComboPart = cpSplitLeft) and IsPopupParent then Inc(R.Right); + if ComboPart = cpSplitRight then Dec(R.Left); + FillRectEx(DC, R, GetBtnColor(ItemInfo, ipBody)); + end; + if ComboPart = cpSplitRight then PaintDropDownArrow(Canvas, R, ItemInfo); + end; +end; + +procedure TTBXOfficeXPTheme.PaintFloatingBorder(Canvas: TCanvas; const ARect: TRect; + const WindowInfo: TTBXWindowInfo); +const + WinStates: array [Boolean] of TWinFramestate = (wfsInactive, wfsActive); + + function GetBtnItemState(BtnState: Integer): TBtnItemState; + begin + if not WindowInfo.Active then Result := bisDisabled + else if (BtnState and CDBS_PRESSED) <> 0 then Result := bisPressed + else if (BtnState and CDBS_HOT) <> 0 then Result := bisHot + else Result := bisNormal; + end; + +var + WinState: TWinFrameState; + BtnItemState: TBtnItemState; + SaveIndex, X, Y: Integer; + Sz: TPoint; + R: TRect; + BodyColor, CaptionColor, CaptionText: TColor; + IsDockPanel: Boolean; +begin + with Canvas do + begin + WinState := WinStates[WindowInfo.Active]; + IsDockPanel := (WindowInfo.ViewType and VT_DOCKPANEL) = VT_DOCKPANEL; + BodyColor := Brush.Color; + + if (WRP_BORDER and WindowInfo.RedrawPart) <> 0 then + begin + R := ARect; + + if not IsDockPanel then Brush.Color := WinFrameColors[WinState, wfpBorder] + else Brush.Color := PnlFrameColors[WinState, wfpBorder]; + + SaveIndex := SaveDC(Canvas.Handle); + Sz := WindowInfo.FloatingBorderSize; + with R, Sz do ExcludeClipRect(Canvas.Handle, Left + X, Top + Y, Right - X, Bottom - Y); + FillRect(R); + RestoreDC(Canvas.Handle, SaveIndex); + InflateRect(R, -Sz.X, -Sz.Y); + Pen.Color := BodyColor; + with R do + if not IsDockPanel then + Canvas.Polyline([ + Point(Left, Top - 1), Point(Right - 1, Top - 1), + Point(Right, Top), Point(Right, Bottom - 1), + Point(Right - 1, Bottom), + Point(Left, Bottom), Point(Left - 1, Bottom - 1), + Point(Left - 1, Top), Point(Left, Top - 1) + ]) + else + Canvas.Polyline([ + Point(Left, Top - 1), Point(Right - 1, Top - 1), + Point(Right, Top), Point(Right, Bottom), + Point(Left - 1, Bottom), + Point(Left - 1, Top), Point(Left, Top - 1) + ]); + end; + + if not WindowInfo.ShowCaption then Exit; + + if (WindowInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + CaptionColor := WinFrameColors[WinState, wfpCaption]; + CaptionText := WinFrameColors[WinState, wfpCaptionText]; + end + else + begin + CaptionColor := PnlFrameColors[WinState, wfpCaption]; + CaptionText := PnlFrameColors[WinState, wfpCaptionText]; + end; + + { Caption } + if (WRP_CAPTION and WindowInfo.RedrawPart) <> 0 then + begin + R := Rect(0, 0, WindowInfo.ClientWidth, GetSystemMetrics(SM_CYSMCAPTION) - 1); + with WindowInfo.FloatingBorderSize do OffsetRect(R, X, Y); + DrawLineEx(Canvas.Handle, R.Left, R.Bottom, R.Right, R.Bottom, BodyColor); + + if ((CDBS_VISIBLE and WindowInfo.CloseButtonState) <> 0) and + ((WRP_CLOSEBTN and WindowInfo.RedrawPart) <> 0) then + Dec(R.Right, GetSystemMetrics(SM_CYSMCAPTION) - 1); + + Brush.Color := CaptionColor; + FillRect(R); + InflateRect(R, -2, 0); + Font.Assign(SmCaptionFont); + Font.Color := CaptionText; + DrawText(Canvas.Handle, WindowInfo.Caption, -1, R, + DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS or DT_NOPREFIX); + end; + + { Close button } + if (CDBS_VISIBLE and WindowInfo.CloseButtonState) <> 0 then + begin + R := Rect(0, 0, WindowInfo.ClientWidth, GetSystemMetrics(SM_CYSMCAPTION) - 1); + with WindowInfo.FloatingBorderSize do OffsetRect(R, X, Y); + R.Left := R.Right - (R.Bottom - R.Top); + DrawLineEx(Canvas.Handle, R.Left - 1, R.Bottom, R.Right, R.Bottom, BodyColor); + Brush.Color := CaptionColor; + FillRect(R); + with R do + begin + X := (Left + Right - StockImgList.Width + 1) div 2; + Y := (Top + Bottom - StockImgList.Height) div 2; + end; + BtnItemState := GetBtnItemState(WindowInfo.CloseButtonState); + FrameRectEx(Canvas.Handle, R, BtnItemColors[BtnItemState, ipFrame], True); + if FillRectEx(Canvas.Handle, R, BtnItemColors[BtnItemState, ipBody]) then + DrawGlyph(Canvas.Handle, X, Y, StockImgList, 0, BtnItemColors[BtnItemState, ipText]) + else + DrawGlyph(Canvas.Handle, X, Y, StockImgList, 0, CaptionText); + end; + end; +end; + +procedure TTBXOfficeXPTheme.PaintFrame(Canvas: TCanvas; const ARect: TRect; + const ItemInfo: TTBXItemInfo); +var + DC: HDC; + R: TRect; +begin + DC := Canvas.Handle; + R := ARect; + FrameRectEx(DC, R, GetPartColor(ItemInfo, ipFrame), True); + FillRectEx(DC, R, GetPartColor(ItemInfo, ipBody)); +end; + +function TTBXOfficeXPTheme.GetImageOffset(Canvas: TCanvas; + const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList): TPoint; +begin + Result.X := 0; + if not (ImageList is TTBCustomImageList) then + with ItemInfo do + if Enabled and (HoverKind <> hkNone) and + not (Selected or Pushed and not IsPopupParent) then + Result.X := -1; + Result.Y := Result.X +end; + +procedure TTBXOfficeXPTheme.PaintImage(Canvas: TCanvas; ARect: TRect; + const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList; ImageIndex: Integer); +var + HiContrast: Boolean; +begin + with ItemInfo do + begin + if ImageList is TTBCustomImageList then + begin + TTBCustomImageList(ImageList).DrawState(Canvas, ARect.Left, ARect.Top, + ImageIndex, Enabled, (HoverKind <> hkNone), Selected); + Exit; + end; + +{$IFNDEF ALTERNATIVE_DISABLED_STYLE} + HiContrast := IsDarkColor(GetItemImageBackground(ItemInfo), 64); + + if not Enabled then + begin + DrawTBXIconFlatShadow(Canvas, ARect, ImageList, ImageIndex, + BtnItemColors[bisDisabled, ipText]); + end + else if Selected or Pushed or (HoverKind <> hkNone) then + begin + if not (Selected or Pushed and not IsPopupParent) then + begin + OffsetRect(ARect, 1, 1); + DrawTBXIconFullShadow(Canvas, ARect, ImageList, ImageIndex, IconShadowColor); + OffsetRect(ARect, -2, -2); + end; + DrawTBXIcon(Canvas, ARect, ImageList, ImageIndex, HiContrast); + end + else if HiContrast or TBXHiContrast or TBXLoColor then + DrawTBXIcon(Canvas, ARect, ImageList, ImageIndex, HiContrast) + else + HighlightTBXIcon(Canvas, ARect, ImageList, ImageIndex, clWindow, 178); +{$ELSE} + HiContrast := ColorIntensity(GetItemImageBackground(ItemInfo)) < 80; + if not Enabled then + begin + if not HiContrast then + DrawTBXIconShadow(Canvas, ARect, ImageList, ImageIndex, 0) + else + DrawTBXIconFlatShadow(Canvas, ARect, ImageList, ImageIndex, clBtnShadow); + end + else if Selected or Pushed or (HoverKind <> hkNone) then + begin + if not (Selected or Pushed and not IsPopupParent) then + begin + DrawTBXIconShadow(Canvas, ARect, ImageList, ImageIndex, 1); + OffsetRect(ARect, 1, 1); + DrawTBXIconShadow(Canvas, ARect, ImageList, ImageIndex, 1); + OffsetRect(ARect, -2, -2); + end; + DrawTBXIcon(Canvas, ARect, ImageList, ImageIndex, HiContrast); + end + else if HiContrast or TBXHiContrast or TBXLoColor then + DrawTBXIcon(Canvas, ARect, ImageList, ImageIndex, HiContrast) + else + HighlightTBXIcon(Canvas, ARect, ImageList, ImageIndex, clWindow, 178); +{$ENDIF} + end; +end; + +procedure TTBXOfficeXPTheme.PaintMDIButton(Canvas: TCanvas; ARect: TRect; + const ItemInfo: TTBXItemInfo; ButtonKind: Cardinal); +var + Index: Integer; +begin + PaintButton(Canvas, ARect, ItemInfo); + Dec(ARect.Bottom); + case ButtonKind of + DFCS_CAPTIONMIN: Index := 2; + DFCS_CAPTIONRESTORE: Index := 3; + DFCS_CAPTIONCLOSE: Index := 0; + else + Exit; + end; + DrawGlyph(Canvas.Handle, ARect, StockImgList, Index, GetPartColor(ItemInfo, ipText)); +end; + +procedure TTBXOfficeXPTheme.PaintMenuItemFrame(Canvas: TCanvas; + const ARect: TRect; const ItemInfo: TTBXItemInfo); +var + R: TRect; +begin + R := ARect; + if (ItemInfo.ViewType and PVT_TOOLBOX) <> PVT_TOOLBOX then with Canvas do + begin + R.Right := R.Left + ItemInfo.PopupMargin + 2; + Brush.Color := ToolbarColor; + FillRect(R); + Inc(R.Left); + R.Right := ARect.Right - 1; + end; + PaintFrame(Canvas, R, ItemInfo); +end; + +procedure TTBXOfficeXPTheme.PaintMenuItem(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo); +var + DC: HDC; + R: TRect; + X, Y: Integer; + ArrowWidth: Integer; + C, ClrText: TColor; +begin + DC := Canvas.Handle; + with ItemInfo do + begin + ArrowWidth := GetSystemMetrics(SM_CXMENUCHECK); + PaintMenuItemFrame(Canvas, ARect, ItemInfo); + ClrText := GetPartColor(ItemInfo, ipText); + R := ARect; + + if (ItemOptions and IO_COMBO) <> 0 then + begin + X := R.Right - ArrowWidth - 1; + if not ItemInfo.Enabled then C := ClrText + else if HoverKind = hkMouseHover then C := GetPartColor(ItemInfo, ipFrame) + else C := PopupSeparatorColor; + DrawLineEx(DC, X, R.Top + 1, X, R.Bottom - 1, C); + end; + + if (ItemOptions and IO_SUBMENUITEM) <> 0 then + begin + Y := ARect.Bottom div 2; + X := ARect.Right - ArrowWidth * 2 div 3 - 1; + PolygonEx(DC, [Point(X, Y - 3), Point(X, Y + 3), Point(X + 3, Y)], ClrText, ClrText); + end; + + if Selected and Enabled then + begin + R := ARect; + R.Left := ARect.Left + 1; + R.Right := R.Left + ItemInfo.PopupMargin; + InflateRect(R, -1, -1); + FrameRectEx(DC, R, GetBtnColor(ItemInfo, ipFrame), True); + FillRectEx(DC, R, GetBtnColor(ItemInfo, ipBody)); + end; + end; +end; + +procedure TTBXOfficeXPTheme.PaintPopupNCArea(Canvas: TCanvas; R: TRect; const PopupInfo: TTBXPopupInfo); +var + PR: TRect; +begin + with Canvas do + begin + Brush.Color := PopupFrameColor; + FrameRect(R); + InflateRect(R, -1, -1); + Brush.Color := PopupColor; + FillRect(R); + + if not IsRectEmpty(PopupInfo.ParentRect) then + begin + PR := PopupInfo.ParentRect; + if not IsRectEmpty(PR) then with PR do + begin + Pen.Color := ToolbarColor; + if Bottom = R.Top then + begin + if Left <= R.Left then Left := R.Left - 1; + if Right >= R.Right then Right := R.Right + 1; + MoveTo(Left + 1, Bottom - 1); LineTo(Right - 1, Bottom- 1); + end + else if Top = R.Bottom then + begin + if Left <= R.Left then Left := R.Left - 1; + if Right >= R.Right then Right := R.Right + 1; + MoveTo(Left + 1, Top); LineTo(Right - 1, Top); + end; + if Right = R.Left then + begin + if Top <= R.Top then Top := R.Top - 1; + if Bottom >= R.Bottom then Bottom := R.Bottom + 1; + MoveTo(Right - 1, Top + 1); LineTo(Right - 1, Bottom - 1); + end + else if Left = R.Right then + begin + if Top <= R.Top then Top := R.Top - 1; + if Bottom >= R.Bottom then Bottom := R.Bottom + 1; + MoveTo(Left, Top + 1); LineTo(Left, Bottom - 1); + end; + end; + end; + end; +end; + +procedure TTBXOfficeXPTheme.PaintSeparator(Canvas: TCanvas; ARect: TRect; + ItemInfo: TTBXItemInfo; Horizontal, LineSeparator: Boolean); +var + DC: HDC; + IsToolbox: Boolean; + R: TRect; + C: TColor; +begin + { Note: for blank separators, Enabled = False } + DC := Canvas.Handle; + with ItemInfo, ARect do + begin + if Horizontal then + begin + IsToolbox := (ViewType and PVT_TOOLBOX) = PVT_TOOLBOX; + if ((ItemOptions and IO_TOOLBARSTYLE) = 0) and not IsToolBox then + begin + R := ARect; + R.Right := ItemInfo.PopupMargin + 2; + FillRectEx(DC, R, ToolbarColor); + Inc(Left, ItemInfo.PopupMargin + 9); + C := PopupSeparatorColor; + end + else + C := ToolbarSeparatorColor; + Top := (Top + Bottom) div 2; + if Enabled then DrawLineEx(DC, Left, Top, Right, Top, C); + end + else if Enabled then + begin + Left := (Left + Right) div 2; + DrawLineEx(DC, Left, Top, Left, Bottom, ToolbarSeparatorColor); + end; + end; +end; + +procedure DrawButtonBitmap(DC: HDC; R: TRect; Color: TColor); +const +{$IFNDEF SMALL_CLOSE_BUTTON} + Pattern: array [0..15] of Byte = + ($C3, 0, $66, 0, $3C, 0, $18, 0, $3C, 0, $66, 0, $C3, 0, 0, 0); +{$ELSE} + Pattern: array [0..15] of Byte = + (0, 0, $63, 0, $36, 0, $1C, 0, $1C, 0, $36, 0, $63, 0, 0, 0); +{$ENDIF} +begin + DrawGlyph(DC, R, 8, 7, Pattern[0], Color); +end; + +procedure TTBXOfficeXPTheme.PaintToolbarNCArea(Canvas: TCanvas; R: TRect; const ToolbarInfo: TTBXToolbarInfo); +const + DragHandleOffsets: array [Boolean, DHS_DOUBLE..DHS_SINGLE] of Integer = ((2, 0, 1), (5, 0, 5)); + + function GetBtnItemState(BtnState: Integer): TBtnItemState; + begin + if (BtnState and CDBS_PRESSED) <> 0 then Result := bisPressed + else if (BtnState and CDBS_HOT) <> 0 then Result := bisHot + else Result := bisNormal; + end; + +var + DC: HDC; + Sz: Integer; + R2: TRect; + SaveColor: TColor; + SaveStyle: TBrushStyle; + I: Integer; + BtnVisible, Horz: Boolean; + BtnItemState: TBtnItemState; +begin + DC := Canvas.Handle; + with Canvas do + begin + SaveColor := Brush.Color; + SaveStyle := Brush.Style; + if ToolbarInfo.BorderStyle = bsSingle then + begin + I := ColorIntensity(clBtnFace); + if not (TBXLoColor or not (I in [50..254])) or + ((ToolbarInfo.ViewType and TVT_MENUBAR) = TVT_MENUBAR) then + begin + InflateRect(R, -1, -1); + Dec(R.Right); Dec(R.Bottom); + Pen.Color := SaveColor; + Pen.Style := psSolid; + Brush.Color := SaveColor; + Brush.Style := SaveStyle; // should be either bsSolid or bsClear + with R do + Polygon([Point(Left + 1, Top), Point(Right - 1, Top), Point(Right, Top + 1), + Point(Right, Bottom - 1), Point(Right - 1, Bottom), Point(Left + 1, Bottom), + Point(Left, Bottom - 1), Point(Left, Top + 1)]); + Brush.Style := bsSolid; + Inc(R.Left); + Inc(R.Top); + end + else + begin + Brush.Bitmap := AllocPatternBitmap(ToolbarColor, BtnItemColors[bisDisabled, ipText]); + with R do + begin + FillRect(Rect(Left + 1, Top, Right - 1, Top + 1)); + FillRect(Rect(Left + 1, Bottom - 1, Right - 1, Bottom)); + FillRect(Rect(Left, Top + 1, Left + 1, Bottom - 1)); + FillRect(Rect(Right - 1, Top + 1, Right, Bottom - 1)); + end; + InflateRect(R, -1, -1); + Brush.Color := SaveColor; + FillRect(R); + end; + end + else + InflateRect(R, -1, -1); + InflateRect(R, -1, -1); + + if not ToolbarInfo.AllowDrag then Exit; + + BtnVisible := (ToolbarInfo.CloseButtonState and CDBS_VISIBLE) <> 0; + Sz := GetTBXDragHandleSize(ToolbarInfo); + Horz := not ToolbarInfo.IsVertical; + if Horz then R.Right := R.Left + Sz + else R.Bottom := R.Top + Sz; + + { Drag Handle } + if ToolbarInfo.DragHandleStyle <> DHS_NONE then + begin + R2 := R; + if Horz then + begin + Inc(R2.Left, DragHandleOffsets[BtnVisible, ToolbarInfo.DragHandleStyle]); + if BtnVisible then Inc(R2.Top, Sz - 2); + R2.Right := R2.Left + 3; + end + else + begin + Inc(R2.Top, DragHandleOffsets[BtnVisible, ToolbarInfo.DragHandleStyle]); + if BtnVisible then Dec(R2.Right, Sz - 2); + R2.Bottom := R2.Top + 3; + end; + + Pen.Color := DragHandleColor; + if Horz then + begin + I := R2.Top + 3; + while I < R2.Bottom - 3 do + begin + MoveTo(R2.Left, I); LineTo(R2.Right, I); + Inc(I, 2); + end; + end + else + begin + I := R2.Left + 3; + while I < R2.Right - 3 do + begin + MoveTo(I, R2.Top); LineTo(I, R2.Bottom); + Inc(I, 2); + end; + end; + end; + + { Close button } + if BtnVisible then + begin + R2 := R; + if Horz then + begin + Dec(R2.Right); + R2.Bottom := R2.Top + R2.Right - R2.Left; + end + else + begin + Dec(R2.Bottom); + R2.Left := R2.Right - R2.Bottom + R2.Top; + end; + + BtnItemState := GetBtnItemState(ToolbarInfo.CloseButtonState); + FrameRectEx(DC, R2, BtnItemColors[BtnItemState, ipFrame], True); + FillRectEx(DC, R2, BtnItemColors[BtnItemState, ipBody]); + DrawButtonBitmap(DC, R2, BtnItemColors[BtnItemState, ipText]); + end; + end; +end; + +procedure TTBXOfficeXPTheme.PaintDock(Canvas: TCanvas; const ClientRect, + DockRect: TRect; DockPosition: Integer); +begin + // this theme does not support dock painting +end; + +procedure TTBXOfficeXPTheme.PaintDockPanelNCArea(Canvas: TCanvas; R: TRect; const DockPanelInfo: TTBXDockPanelInfo); + + function GetBtnItemState(BtnState: Integer): TBtnItemState; + begin + if (BtnState and CDBS_PRESSED) <> 0 then Result := bisPressed + else if (BtnState and CDBS_HOT) <> 0 then Result := bisHot + else Result := bisNormal; + end; + +var + DC: HDC; + C, HeaderColor: TColor; + I, Sz, Flags: Integer; + R2: TRect; + BtnItemState: TBtnItemState; + B: HBrush; + OldBkMode: Cardinal; + OldFont: HFont; + OldTextColor: TColorRef; +begin + DC := Canvas.Handle; + with DockPanelInfo do + begin + I := ColorIntensity(ColorToRGB(clBtnFace)); + R2 := R; + if not TBXLoColor and (I in [64..250]) then + begin + FrameRectEx(DC, R, clBtnFace, True); + FrameRectEx(DC, R, EffectiveColor, False); + with R do + begin + C := GetSysColor(COLOR_BTNFACE); + SetPixelV(DC, Left, Top, C); + if IsVertical then SetPixelV(DC, Right - 1, Top, C) + else SetPixelV(DC, Left, Bottom - 1, C); + end; + end + else + begin + FrameRectEx(DC, R, EffectiveColor, True); + + if I < 64 then B := CreateDitheredBrush(EffectiveColor, clWhite) + else B := CreateDitheredBrush(EffectiveColor, clBtnShadow); + Windows.FrameRect(DC, R, B); + DeleteObject(B); + + with R do + begin + SetPixelV(DC, Left, Top, EffectiveColor); + if IsVertical then SetPixelV(DC, Right - 1, Top, EffectiveColor) + else SetPixelV(DC, Left, Bottom - 1, EffectiveColor); + end; + InflateRect(R, -1, -1); + FrameRectEx(DC, R, EffectiveColor, False); + end; + R := R2; + InflateRect(R, -BorderSize.X, -BorderSize.Y); + Sz := GetSystemMetrics(SM_CYSMCAPTION); + if IsVertical then + begin + R.Bottom := R.Top + Sz - 1; + DrawLineEx(DC, R.Left, R.Bottom, R.Right, R.Bottom, EffectiveColor); + end + else + begin + R.Right := R.Left + Sz - 1; + DrawLineEx(DC, R.Right, R.Top, R.Right, R.Bottom, EffectiveColor); + end; + HeaderColor := clBtnFace; + FillRectEx(DC, R, HeaderColor); + + if (CDBS_VISIBLE and CloseButtonState) <> 0 then + begin + R2 := R; + if IsVertical then + begin + R2.Left := R2.Right - Sz + 1; + R.Right := R2.Left; + end + else + begin + R2.Top := R2.Bottom - Sz + 1; + R.Bottom := R2.Top; + end; + + BtnItemState := GetBtnItemState(CloseButtonState); + FrameRectEx(DC, R2, BtnItemColors[BtnItemState, ipFrame], True); + FillRectEx(DC, R2, BtnItemColors[BtnItemState, ipBody]); + DrawButtonBitmap(DC, R2, BtnItemColors[BtnItemState, ipText]); + end; + + + if IsVertical then InflateRect(R, -4, 0) + else InflateRect(R, 0, -4); + + OldFont := SelectObject(DC, SmCaptionFont.Handle); + OldBkMode := SetBkMode(DC, TRANSPARENT); + OldTextColor := SetTextColor(DC, ColorToRGB(SmCaptionFont.Color)); + Flags := DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS or DT_NOPREFIX; + if IsVertical then DrawText(DC, Caption, -1, R, Flags) + else DrawRotatedText(DC, string(Caption), R, Flags); + SetTextColor(DC, OldTextColor); + SetBkMode(DC, OldBkMode); + SelectObject(DC, OldFont); + end; +end; + +procedure TTBXOfficeXPTheme.SetupColorCache; +var + DC: HDC; + HotBtnFace, DisabledText: TColor; + + procedure Undither(var C: TColor); + begin + if C <> clNone then C := GetNearestColor(DC, ColorToRGB(C)); + end; + +begin + DC := StockCompatibleBitmap.Canvas.Handle; + + if TBXLoColor then + begin + { View/Window Colors } + MenubarColor := clBtnFace; + ToolbarColor := clBtnFace; + PopupColor := clWindow; + DockPanelColor := clWindow; + StatusPanelFrameColor := clBtnShadow; + + PopupFrameColor := clBtnText; + WinFrameColors[wfsActive, wfpBorder] := clBtnShadow; + WinFrameColors[wfsActive, wfpCaption] := clBtnShadow; + WinFrameColors[wfsActive, wfpCaptionText] := clBtnHighlight; + WinFrameColors[wfsInactive, wfpBorder] := clBtnShadow; + WinFrameColors[wfsInactive, wfpCaption] := clBtnShadow; + WinFrameColors[wfsInactive, wfpCaptionText] := clBtnHighlight; + + PnlFrameColors[wfsActive, wfpBorder] := clBtnShadow; + PnlFrameColors[wfsActive, wfpCaption] := clBtnFace; + PnlFrameColors[wfsActive, wfpCaptionText] := clBtnText; + PnlFrameColors[wfsInactive, wfpBorder] := clBtnShadow; + PnlFrameColors[wfsInactive, wfpCaption] := clBtnFace; + PnlFrameColors[wfsInactive, wfpCaptionText] := clBtnText; + + MenuItemColors[misNormal, ipBody] := clNone; + MenuItemColors[misNormal, ipText] := clWindowText; + MenuItemColors[misNormal, ipFrame] := clNone; + MenuItemColors[misDisabled, ipBody] := clNone; + MenuItemColors[misDisabled, ipText] := clGrayText; + MenuItemColors[misDisabled, ipFrame] := clNone; + MenuItemColors[misHot, ipBody] := clWindow; + MenuItemColors[misHot, ipText] := clWindowtext; + MenuItemColors[misHot, ipFrame] := clHighlight; + MenuItemColors[misDisabledHot, ipBody] := clWindow; + MenuItemColors[misDisabledHot, ipText] := clGrayText; + MenuItemColors[misDisabledHot, ipFrame] := clHighlight; + + BtnItemColors[bisNormal, ipBody] := clNone; + BtnItemColors[bisNormal, ipText] := clBtnText; + BtnItemColors[bisNormal, ipFrame] := clNone; + BtnItemColors[bisDisabled, ipBody] := clNone; + BtnItemColors[bisDisabled, ipText] := clBtnShadow; + BtnItemColors[bisDisabled, ipFrame] := clNone; + BtnItemColors[bisSelected, ipBody] := clWindow; + BtnItemColors[bisSelected, ipText] := clWindowText; + BtnItemColors[bisSelected, ipFrame] := clHighlight; + BtnItemColors[bisPressed, ipBody] := clHighlight; + BtnItemColors[bisPressed, ipText] := clHighlightText; + BtnItemColors[bisPressed, ipFrame] := clHighlight; + BtnItemColors[bisHot, ipBody] := clWindow; + BtnItemColors[bisHot, ipText] := clWindowText; + BtnItemColors[bisHot, ipFrame] := clHighlight; + BtnItemColors[bisDisabledHot, ipBody] := clWindow; + BtnItemColors[bisDisabledHot, ipText] := clBtnShadow; + BtnItemColors[bisDisabledHot, ipFrame] := clHighlight; + BtnItemColors[bisSelectedHot, ipBody] := clHighlight; + BtnItemColors[bisSelectedHot, ipText] := clHighlightText; + BtnItemColors[bisSelectedHot, ipFrame] := clHighlight; + BtnItemColors[bisPopupParent, ipBody] := clBtnFace; + BtnItemColors[bisPopupParent, ipText] := clBtnText; + BtnItemColors[bisPopupParent, ipFrame] := PopupFrameColor; + + { Other Colors } + DragHandleColor := clBtnText; + IconShadowColor := clBtnFace; + PopupSeparatorColor := clBtnShadow; + ToolbarSeparatorColor := clBtnShadow; + end + else + begin + { View/Window Colors } + MenubarColor := clBtnFace; + ToolbarColor := Blend(clWindow, clBtnFace, 165); + PopupColor := Blend(clBtnFace, clWindow, 143); + DockPanelColor := PopupColor; + PopupFrameColor := Blend(clBtnText, clBtnShadow, 20); + SetContrast(PopupFrameColor, PopupColor, 100); + + HotBtnFace := Blend(clHighlight, clWindow, 30); + SetContrast(HotBtnFace, ToolbarColor, 50); + DisabledText := Blend(clBtnshadow, clWindow, 90); + + WinFrameColors[wfsActive, wfpBorder] := Blend(clBtnText, clBtnShadow, 15); + SetContrast(WinFrameColors[wfsActive, wfpBorder], ToolbarColor, 120); + WinFrameColors[wfsActive, wfpCaption] := clBtnShadow; + WinFrameColors[wfsActive, wfpCaptionText] := clBtnHighlight; + SetContrast(WinFrameColors[wfsActive, wfpCaptionText], clBtnShadow, 180); + WinFrameColors[wfsInactive, wfpBorder] := WinFrameColors[wfsActive, wfpBorder]; + WinFrameColors[wfsInactive, wfpCaption] := clBtnFace; + WinFrameColors[wfsInactive, wfpCaptionText] := DisabledText; + SetContrast(WinFrameColors[wfsInactive, wfpCaptionText], clBtnFace, 120); + + PnlFrameColors[wfsActive, wfpBorder] := clBtnShadow; + PnlFrameColors[wfsActive, wfpCaption] := clBtnFace; + PnlFrameColors[wfsActive, wfpCaptionText] := clBtnText; + PnlFrameColors[wfsInactive, wfpBorder] := clBtnShadow; + PnlFrameColors[wfsInactive, wfpCaption] := clBtnFace; + PnlFrameColors[wfsInactive, wfpCaptionText] := DisabledText; + SetContrast(PnlFrameColors[wfsInactive, wfpCaptionText], clBtnFace, 120); + + BtnItemColors[bisNormal, ipBody] := clNone; + BtnItemColors[bisNormal, ipText] := clBtnText; + SetContrast(BtnItemColors[bisNormal, ipText], ToolbarColor, 180); + BtnItemColors[bisNormal, ipFrame] := clNone; + BtnItemColors[bisDisabled, ipBody] := clNone; + BtnItemColors[bisDisabled, ipText] := DisabledText; + SetContrast(BtnItemColors[bisDisabled, ipText], ToolbarColor, 80); + BtnItemColors[bisDisabled, ipFrame] := clNone; + BtnItemColors[bisSelected, ipBody] := Blend(clHighlight, Blend(clBtnFace, clWindow, 50), 10); + SetContrast(BtnItemColors[bisSelected, ipBody], ToolbarColor, 5); + BtnItemColors[bisSelected, ipText] := BtnItemColors[bisNormal, ipText]; + BtnItemColors[bisSelected, ipFrame] := clHighlight; + BtnItemColors[bisPressed, ipBody] := Blend(clHighlight, clWindow, 50); + BtnItemColors[bisPressed, ipText] := clHighlightText; + BtnItemColors[bisPressed, ipFrame] := clHighlight; + BtnItemColors[bisHot, ipBody] := HotBtnFace; + BtnItemColors[bisHot, ipText] := clMenuText; + SetContrast(BtnItemColors[bisHot, ipText], BtnItemColors[bisHot, ipBody], 180); + BtnItemColors[bisHot, ipFrame] := clHighlight; + SetContrast(BtnItemColors[bisHot, ipFrame], ToolbarColor, 100); + BtnItemColors[bisDisabledHot, ipBody] := HotBtnFace; + BtnItemColors[bisDisabledHot, ipText] := DisabledText; + BtnItemColors[bisDisabledHot, ipFrame] := clHighlight; + BtnItemColors[bisSelectedHot, ipBody] := Blend(clHighlight, clWindow, 50); + SetContrast(BtnItemColors[bisSelectedHot, ipBody], ToolbarColor, 30); + BtnItemColors[bisSelectedHot, ipText] := clHighlightText; + SetContrast(BtnItemColors[bisSelectedHot, ipText], BtnItemColors[bisSelectedHot, ipBody], 180); + BtnItemColors[bisSelectedHot, ipFrame] := clHighlight; + SetContrast(BtnItemColors[bisSelectedHot, ipFrame], BtnItemColors[bisSelectedHot, ipBody], 100); + BtnItemColors[bisPopupParent, ipBody] := ToolbarColor; + BtnItemColors[bisPopupParent, ipText] := BtnItemColors[bisNormal, ipText]; + BtnItemColors[bisPopupParent, ipFrame] := PopupFrameColor; + + MenuItemColors[misNormal, ipBody] := clNone; + MenuItemColors[misNormal, ipText] := clWindowText; + SetContrast(MenuItemColors[misNormal, ipText], PopupColor, 180); + MenuItemColors[misNormal, ipFrame] := clNone; + MenuItemColors[misDisabled, ipBody] := clNone; + MenuItemColors[misDisabled, ipText] := Blend(clGrayText, clWindow, 70); + SetContrast(MenuItemColors[misDisabled, ipText], PopupColor, 80); // 145? + MenuItemColors[misDisabled, ipFrame] := clNone; + MenuItemColors[misHot, ipBody] := BtnItemColors[bisHot, ipBody]; + MenuItemColors[misHot, ipText] := BtnItemColors[bisHot, ipText]; + MenuItemColors[misHot, ipFrame] := BtnItemColors[bisHot, ipFrame]; + MenuItemColors[misDisabledHot, ipBody] := PopupColor; + MenuItemColors[misDisabledHot, ipText] := Blend(clGrayText, clWindow, 70); + MenuItemColors[misDisabledHot, ipFrame] := clHighlight; + + { Other Colors } + DragHandleColor := Blend(clBtnShadow, clWindow, 75); + SetContrast(DragHandleColor, ToolbarColor, 85); + IconShadowColor := Blend(clBlack, HotBtnFace, 25); + ToolbarSeparatorColor := Blend(clBtnShadow, clWindow, 70); + SetContrast(ToolbarSeparatorColor, ToolbarColor, 50); + PopupSeparatorColor := ToolbarSeparatorColor; + StatusPanelFrameColor := Blend(clWindow, clBtnFace, 30); + SetContrast(StatusPanelFrameColor, clBtnFace, 30); + + Undither(MenubarColor); + Undither(ToolbarColor); + Undither(PopupColor); + Undither(DockPanelColor); + Undither(PopupFrameColor); + Undither(WinFrameColors[wfsActive, wfpBorder]); + Undither(WinFrameColors[wfsActive, wfpCaption]); + Undither(WinFrameColors[wfsActive, wfpCaptionText]); + Undither(WinFrameColors[wfsInactive, wfpBorder]); + Undither(WinFrameColors[wfsInactive, wfpCaption]); + Undither(WinFrameColors[wfsInactive, wfpCaptionText]); + Undither(PnlFrameColors[wfsActive, wfpBorder]); + Undither(PnlFrameColors[wfsActive, wfpCaption]); + Undither(PnlFrameColors[wfsActive, wfpCaptionText]); + Undither(PnlFrameColors[wfsInactive, wfpBorder]); + Undither(PnlFrameColors[wfsInactive, wfpCaption]); + Undither(PnlFrameColors[wfsInactive, wfpCaptionText]); + Undither(BtnItemColors[bisNormal, ipBody]); + Undither(BtnItemColors[bisNormal, ipText]); + Undither(BtnItemColors[bisNormal, ipFrame]); + Undither(BtnItemColors[bisDisabled, ipBody]); + Undither(BtnItemColors[bisDisabled, ipText]); + Undither(BtnItemColors[bisDisabled, ipFrame]); + Undither(BtnItemColors[bisSelected, ipBody]); + Undither(BtnItemColors[bisSelected, ipText]); + Undither(BtnItemColors[bisSelected, ipFrame]); + Undither(BtnItemColors[bisPressed, ipBody]); + Undither(BtnItemColors[bisPressed, ipText]); + Undither(BtnItemColors[bisPressed, ipFrame]); + Undither(BtnItemColors[bisHot, ipBody]); + Undither(BtnItemColors[bisHot, ipText]); + Undither(BtnItemColors[bisHot, ipFrame]); + Undither(BtnItemColors[bisDisabledHot, ipBody]); + Undither(BtnItemColors[bisDisabledHot, ipText]); + Undither(BtnItemColors[bisDisabledHot, ipFrame]); + Undither(BtnItemColors[bisSelectedHot, ipBody]); + Undither(BtnItemColors[bisSelectedHot, ipText]); + Undither(BtnItemColors[bisSelectedHot, ipFrame]); + Undither(BtnItemColors[bisPopupParent, ipBody]); + Undither(BtnItemColors[bisPopupParent, ipText]); + Undither(BtnItemColors[bisPopupParent, ipFrame]); + Undither(MenuItemColors[misNormal, ipBody]); + Undither(MenuItemColors[misNormal, ipText]); + Undither(MenuItemColors[misNormal, ipFrame]); + Undither(MenuItemColors[misDisabled, ipBody]); + Undither(MenuItemColors[misDisabled, ipText]); + Undither(MenuItemColors[misDisabled, ipFrame]); + Undither(MenuItemColors[misHot, ipBody]); + Undither(MenuItemColors[misHot, ipText]); + Undither(MenuItemColors[misHot, ipFrame]); + Undither(MenuItemColors[misDisabledHot, ipBody]); + Undither(MenuItemColors[misDisabledHot, ipText]); + Undither(MenuItemColors[misDisabledHot, ipFrame]); + Undither(DragHandleColor); + Undither(IconShadowColor); + Undither(ToolbarSeparatorColor); + Undither(PopupSeparatorColor); + Undither(StatusPanelFrameColor); + end; +end; + +function TTBXOfficeXPTheme.GetPopupShadowType: Integer; +begin + Result := PST_OFFICEXP; +end; + +constructor TTBXOfficeXPTheme.Create(const AName: string); +begin + inherited; + if CounterLock = 0 then InitializeStock; + Inc(CounterLock); + AddTBXSysChangeNotification(Self); + SetupColorCache; +end; + +destructor TTBXOfficeXPTheme.Destroy; +begin + RemoveTBXSysChangeNotification(Self); + Dec(CounterLock); + if CounterLock = 0 then FinalizeStock; + inherited; +end; + +procedure TTBXOfficeXPTheme.GetViewMargins(ViewType: Integer; out Margins: TTBXMargins); +begin + Margins.LeftWidth := 0; + Margins.TopHeight := 0; + Margins.RightWidth := 0; + Margins.BottomHeight := 0; +end; + +procedure TTBXOfficeXPTheme.PaintPageScrollButton(Canvas: TCanvas; + const ARect: TRect; ButtonType: Integer; Hot: Boolean); +var + DC: HDC; + R: TRect; + X, Y, Sz: Integer; + C: TColor; +begin + DC := Canvas.Handle; + R := ARect; + if Hot then C := BtnItemColors[bisHot, ipFrame] + else C := clBtnShadow; + FrameRectEx(DC, R, C, False); + InflateRect(R, -1, -1); + if Hot then C := BtnItemColors[bisHot, ipBody] + else C := clBtnFace; + FillRectEx(DC, R, C); + X := (R.Left + R.Right) div 2; + Y := (R.Top + R.Bottom) div 2; + Sz := Min(X - R.Left, Y - R.Top) * 3 div 4; + + if Hot then C := BtnItemColors[bisHot, ipText] + else C := BtnItemColors[bisNormal, ipText]; + + case ButtonType of + PSBT_UP: + begin + Inc(Y, Sz div 2); + PolygonEx(DC, [Point(X + Sz, Y), Point(X, Y - Sz), Point(X - Sz, Y)], C, C); + end; + PSBT_DOWN: + begin + Y := (R.Top + R.Bottom - 1) div 2; + Dec(Y, Sz div 2); + PolygonEx(DC, [Point(X + Sz, Y), Point(X, Y + Sz), Point(X - Sz, Y)], C, C); + end; + PSBT_LEFT: + begin + Inc(X, Sz div 2); + PolygonEx(DC, [Point(X, Y + Sz), Point(X - Sz, Y), Point(X, Y - Sz)], C, C); + end; + PSBT_RIGHT: + begin + X := (R.Left + R.Right - 1) div 2; + Dec(X, Sz div 2); + PolygonEx(DC, [Point(X, Y + Sz), Point(X + Sz, Y), Point(X, Y - Sz)], C, C); + end; + end; +end; + +procedure TTBXOfficeXPTheme.PaintFrameControl(Canvas: TCanvas; R: TRect; Kind, State: Integer; Params: Pointer); +var + DC: HDC; + X, Y: Integer; + Pen, OldPen: HPen; + Brush, OldBrush: HBrush; + C: TColor; + + function GetPenColor: TColor; + begin + if Boolean(State and PFS_DISABLED) then Result := clBtnShadow + else if Boolean(State and PFS_PUSHED) then Result := BtnItemColors[bisPressed, ipFrame] + else if Boolean(State and PFS_HOT) then Result := BtnItemColors[bisHot, ipFrame] + else Result := clBtnShadow; + end; + + function GetBrush: HBrush; + begin + if Boolean(State and PFS_DISABLED) then Result := CreateBrushEx(clNone) + else if Boolean(State and PFS_PUSHED) then Result := CreateBrushEx(BtnItemColors[bisPressed, ipBody]) + else if Boolean(State and PFS_HOT) then Result := CreateBrushEx(BtnItemColors[bisHot, ipBody]) + else if Boolean(State and PFS_MIXED) then Result := CreateDitheredBrush(clWindow, clBtnFace) + else Result := CreateBrushEx(clNone); + end; + + function GetTextColor: TColor; + begin + if Boolean(State and PFS_DISABLED) then Result := BtnItemColors[bisDisabled, ipText] + else if Boolean(State and PFS_PUSHED) then Result := BtnItemColors[bisPressed, ipText] + else if Boolean(State and PFS_MIXED) then Result := clBtnShadow + else if Boolean(State and PFS_HOT) then Result := BtnItemColors[bisHot, ipText] + else Result := BtnItemColors[bisNormal, ipText]; + end; + +begin + DC := Canvas.Handle; + case Kind of + PFC_CHECKBOX: + begin + InflateRect(R, -1, -1); + FrameRectEx(DC, R, GetPenColor, True); + Brush := GetBrush; + Windows.FillRect(DC, R, Brush); + DeleteObject(Brush); + InflateRect(R, 1, 1); + + if Boolean(State and (PFS_CHECKED or PFS_MIXED)) then + begin + X := (R.Left + R.Right) div 2 - 1; + Y := (R.Top + R.Bottom) div 2 + 1; + C := GetTextColor; + PolygonEx(DC, [Point(X-2, Y), Point(X, Y+2), Point(X+4, Y-2), + Point(X+4, Y-4), Point(X, Y), Point(X-2, Y-2), Point(X-2, Y)], C, C); + end; + end; + PFC_RADIOBUTTON: + begin + InflateRect(R, -1, -1); + + with R do + begin + Brush := GetBrush; + OldBrush := SelectObject(DC, Brush); + Pen := CreatePenEx(GetPenColor); + OldPen := SelectObject(DC, Pen); + Windows.Ellipse(DC, Left, Top, Right, Bottom); + SelectObject(DC, OldPen); + DeleteObject(Pen); + SelectObject(DC, OldBrush); + DeleteObject(Brush); + end; + + if Boolean(State and PFS_CHECKED) then + begin + InflateRect(R, -3, -3); + C := GetTextColor; + Brush := CreateBrushEx(C); + OldBrush := SelectObject(DC, Brush); + Pen := CreatePenEx(C); + OldPen := SelectObject(DC, Pen); + with R do Windows.Ellipse(DC, Left, Top, Right, Bottom); + SelectObject(DC, OldPen); + DeleteObject(Pen); + SelectObject(DC, OldBrush); + DeleteObject(Brush); + end; + end; + end; +end; + +procedure TTBXOfficeXPTheme.PaintStatusBar(Canvas: TCanvas; R: TRect; Part: Integer); +var + D, Sz, I: Integer; + DC: HDC; + + procedure DiagLine(C: TColor); + begin + with R do + DrawLineEx(DC, Right - 1 - D, Bottom - 1, Right, Bottom - D - 2, C); + Inc(D); + end; + +begin + DC := Canvas.Handle; + case Part of + SBP_BODY: + begin + FillRectEx(DC, R, clBtnFace); + end; + SBP_PANE, SBP_LASTPANE: + begin + if Part = SBP_PANE then Dec(R.Right, 2); + FrameRectEx(DC, R, StatusPanelFrameColor, False); + end; + SBP_GRIPPER: + begin + D := 0; + Sz := Min(R.Right - R.Left, R.Bottom - R.Top); + for I := 1 to 3 do + case Sz of + 0..8: + begin + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + end; + 9..11: + begin + DiagLine(clBtnFace); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + end; + 12..14: + begin + DiagLine(clBtnShadow); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + end; + else + DiagLine(clBtnFace); + DiagLine(clBtnShadow); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + end; + end; + end; +end; + +procedure TTBXOfficeXPTheme.TBXSysCommand(var Message: TMessage); +begin + if Message.WParam = TSC_VIEWCHANGE then SetupColorCache; +end; + +initialization + RegisterTBXTheme('OfficeXP', TTBXOfficeXPTheme); + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXReg.dcr b/official/2.1.6+2.1.beta1/TBX/TBXReg.dcr new file mode 100644 index 0000000000000000000000000000000000000000..d1a6555f9f5fc6c40bd81307767d954c67817c4e GIT binary patch literal 13936 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 N) do begin + { skip over delimiters } + while (I <= Length(S)) and (S[I] in WordDelims) do Inc(I); + { if we're not beyond end of S, we're at the start of a word } + if I <= Length(S) then Inc(Count); + { if not finished, find the end of the current word } + if Count <> N then + while (I <= Length(S)) and not (S[I] in WordDelims) do Inc(I) + else Result := I; + end; +end; + +function ExtractWord(N: Integer; const S: string; + const WordDelims: TSysCharSet): string; +var + I: Integer; + Len: Integer; +begin + Len := 0; + I := WordPosition(N, S, WordDelims); + if I <> 0 then + { find the end of the current word } + while (I <= Length(S)) and not(S[I] in WordDelims) do begin + { add the I'th character to result } + Inc(Len); + SetLength(Result, Len); + Result[Len] := S[I]; + Inc(I); + end; + SetLength(Result, Len); +end; + +procedure TMLStringProperty.Edit; +var + Temp: string; + Component: TPersistent; + I, N: Integer; +begin + with TStrEditDlg.Create(Application) do + try + Component := GetComponent(0); + if Component is TComponent then Caption := TComponent(Component).Name + '.' + GetName + else Caption := GetName; + + Temp := GetStrValue; + N := WordCount(Temp, [#13, #10]); + for I := 1 to N do Memo.Lines.Add(ExtractWord(I, Temp, [#13, #10])); + + Memo.MaxLength := GetEditLimit; + if ShowModal = mrOk then + begin + Temp := Memo.Text; + while (Length(Temp) > 0) and (Temp[Length(Temp)] < ' ') do + System.Delete(Temp, Length(Temp), 1); + SetStrValue(Temp); + end; + finally + Free; + end; +end; + +function TMLStringProperty.GetAttributes: TPropertyAttributes; +begin + Result := inherited GetAttributes + [paDialog]; +end; + +{$IFDEF JR_D5} +{ TTBXLinkImageIndexPropertyEditor } + +function TTBXLinkImageIndexPropertyEditor.GetImageListAt(Index: Integer): TCustomImageList; +var + C: TPersistent; +begin + Result := nil; + C := GetComponent(Index); + if C is TTBXCustomLink then + Result := TTBXLinkAccess(C).Images + else if C is TTBXCustomButton then + Result := TTBXButtonAccess(C).Images; +end; +{$ENDIF} + +{ TTBXColorProperty } + +function TTBXColorProperty.GetValue: string; +begin + Result := TBXColorToString(TColor(GetOrdValue)); +end; + +procedure TTBXColorProperty.GetValues(Proc: TGetStrProc); +begin + TBXGetColorValues(Proc); +end; + +procedure TTBXColorProperty.SetValue(const Value: string); +begin + SetOrdValue(TBXStringToColor(Value)); +end; + +{$IFDEF JR_D5} +procedure TTBXColorProperty.ListDrawValue(const Value: string; ACanvas: TCanvas; + const ARect: TRect; ASelected: Boolean); + + function ColorToBorderColor(AColor: TColor): TColor; + begin + if IsDarkColor(AColor) then + begin + Result := AColor; + SetContrast(Result, AColor, 40); + end + else Result := clBlack; + end; + +var + R: TRect; + C: TColor; + OldPenColor, OldBrushColor: TColor; +begin + R := ARect; + with ACanvas do + try + OldPenColor := Pen.Color; + OldBrushColor := Brush.Color; + Pen.Color := Brush.Color; + Rectangle(R); + R.Right := (ARect.Bottom - ARect.Top) + ARect.Left; + InflateRect(R, -1, -1); + C := TBXStringToColor(Value); + if C <> clNone then + begin + Brush.Color := C; + Pen.Color := ColorToBorderColor(ColorToRGB(C)); + Rectangle(R); + end + else + begin + Brush.Color := clWindow; + Pen.Color := clBtnShadow; + Rectangle(R); + MoveTo(R.Left, R.Bottom - 1); + LineTo(R.Right - 1, R.Top); + MoveTo(R.Left, R.Top); + LineTo(R.Right, R.Bottom); + end; + Brush.Color := OldBrushColor; + Pen.Color := OldPenColor; + finally + R.Left := R.Right; + R.Right := ARect.Right; + ACanvas.TextRect(R, R.Left + 1, R.Top + 1, Value); + end; +end; +{$ENDIF} + +{ TTBXStatusBarEditor } + +procedure TTBXStatusBarEditor.Edit; +var +{$IFDEF JR_D6} + Components: IDesignerSelections; +{$ELSE} + {$IFDEF JR_D5} + Components: TDesignerSelectionList; + {$ELSE} + Components: TComponentList; + {$ENDIF} +{$ENDIF} +begin +{$IFDEF JR_D6} + Components := CreateSelectionList; +{$ELSE} + {$IFDEF JR_D5} + Components := TDesignerSelectionList.Create; + {$ELSE} + Components := TComponentList.Create; + {$ENDIF} +{$ENDIF} + try + Components.Add(Component); + GetComponentProperties(Components, [tkClass], Designer, GetPanelsProp); + finally +{$IFNDEF JR_D6} + Components.Free; +{$ENDIF} + end; +end; + +procedure TTBXStatusBarEditor.ExecuteVerb(Index: Integer); +begin + if Index = 0 then Edit; +end; + +function TTBXStatusBarEditor.GetVerb(Index: Integer): string; +begin + if Index = 0 then Result := '&Panels Editor...'; +end; + +function TTBXStatusBarEditor.GetVerbCount: Integer; +begin + Result := 1; +end; + +{$IFDEF JR_D6} +procedure TTBXStatusBarEditor.GetPanelsProp(const Prop: IProperty); +begin + if SameText(Prop.GetName, 'Panels') then Prop.Edit; +end; +{$ELSE} +procedure TTBXStatusBarEditor.GetPanelsProp(Prop: TPropertyEditor); +begin + if CompareText(Prop.GetName, 'Panels') = 0 then Prop.Edit; +end; +{$ENDIF} + +{ TTBXItemsEditor } + +procedure TTBXItemsEditor.ExecuteVerb(Index: Integer); +const + AboutText = + '%s'#13#10 + + '©2001–2004 Alex A. Denisov'#13#10 + + 'For conditions of distribution and use, see TBX documentation.'#13#10 + + 'Visit http://g32.org/tbx/ for the latest versions of TBX'#13#10 + + #13#10 + + 'Running on'#13#10 + + '%s'#13#10 + + '©1998-2004 by Jordan Russell'#13#10 + + 'For conditions of distribution and use, see Toolbar2000 documentation.'#13#10 + + #13#10 + + 'Visit http://www.jrsoftware.org/ for the latest versions of Toolbar2000'#13#10 + + ''; +begin + case Index of + 0: Edit; + 1: + begin + MessageDlg( + Format(AboutText, + [TBXVersionText, Toolbar2000VersionPropText]), + mtInformation, [mbOK], 0); + end; + end; +end; + + +{ THookObj } + +type + THookObj = class + procedure HookProc(Sender: TTBItemEditForm); + end; + +var O: THookObj; + +procedure THookObj.HookProc(Sender: TTBItemEditForm); +var + TB: TTBToolbar; + Item: TTBCustomItem; + NewItem: TTBItem; + S: string; + I: Integer; +begin + TB := TTBToolbar.Create(Sender); + TB.Top := Sender.Height; + TB.Parent := Sender; + TB.Align := alTop; + TB.Images := Sender.ToolbarItems.SubMenuImages; + TB.ShowHint := True; + + for I := 0 to Sender.MoreMenu.Count - 1 do + begin + Item := Sender.MoreMenu.Items[I]; + if Item is TTBCustomItem then + begin + S := TTBCustomItemClass(Item.Tag).ClassName; + if StrLComp(PChar(S), 'TTBX', 4) = 0 then + begin + NewItem := TTBItem.Create(TB); + TB.Items.Add(NewItem); + NewItem.Caption := Item.Caption; + NewItem.ImageIndex := Item.ImageIndex; + NewItem.Tag := Item.Tag; + NewItem.Hint := S; + NewItem.OnClick := Item.OnClick; + end; + end; + end; +end; + +procedure Register; +begin + RegisterComponents('Toolbar2000', [TTBXDock, TTBXMultiDock, TTBXToolbar, + TTBXToolWindow, TTBXDockablePanel, TTBXPopupMenu, TTBXSwitcher, TTBXMRUList, + TTBXMDIHandler, TTBXPageScroller, TTBXColorSet, TTBXAlignmentPanel, + TTBXLabel, TTBXLink, TTBXButton, TTBXCheckBox, TTBXRadioButton, TTBXStatusBar]); + RegisterNoIcon([TTBXItem, TTBXSubMenuItem, TTBXSeparatorItem, + TTBXVisibilityToggleItem, TTBXLabelItem, TTBXMRUListItem, TTBXColorItem, + TTBXMDIWindowItem, TTBXEditItem, TTBXSpinEditItem, TTBXDropDownItem, + TTBXComboBoxItem, TTBXStringList, TTBXUndoList, TTBXToolPalette, TTBXColorPalette]); +{$IFDEF COMPATIBLE_CTL} + RegisterNoIcon([TTBXList, TTBXComboItem, TTBXComboList]); +{$ENDIF} + + RegisterClasses([TTBXItem, TTBXSubMenuItem, TTBXSeparatorItem, + TTBXVisibilityToggleItem, TTBXLabelItem, TTBXMRUListItem, TTBXColorItem, + TTBXMDIWindowItem, TTBXEditItem, TTBXSpinEditItem, TTBXDropDownItem, + TTBXComboBoxItem, TTBXStringList, TTBXUndoList, TTBXToolPalette, TTBXColorPalette]); +{$IFDEF COMPATIBLE_CTL} + RegisterClasses([TTBXList, TTBXComboItem, TTBXComboList]); +{$ENDIF} + + + RegisterComponentEditor(TTBXToolbar, TTBXItemsEditor); + RegisterComponentEditor(TTBXPopupMenu, TTBXItemsEditor); + RegisterPropertyEditor(TypeInfo(string), TTBXCustomItem, 'Caption', TMLStringProperty); + RegisterPropertyEditor(TypeInfo(string), TTBXCustomItem, 'Hint', TMLStringProperty); + RegisterPropertyEditor(TypeInfo(string), TTBXLabelItem, 'Caption', TCaptionProperty); + RegisterPropertyEditor(TypeInfo(string), TTBToolbar, 'ChevronHint', TMLStringProperty); + RegisterPropertyEditor(TypeInfo(string), TTBXToolbar, 'ChevronHint', TMLStringProperty); + RegisterPropertyEditor(TypeInfo(string), TTBXSwitcher, 'Theme', TThemeProperty); +{$IFDEF JR_D5} + RegisterPropertyEditor(TypeInfo(TImageIndex), TTBXCustomLink, 'ImageIndex', TTBXLinkImageIndexPropertyEditor); + RegisterPropertyEditor(TypeInfo(TImageIndex), TTBXCustomButton, 'ImageIndex', TTBXLinkImageIndexPropertyEditor); +{$ENDIF} +{$IFDEF NEWCOLORPROPERTY} + RegisterPropertyEditor(TypeInfo(TColor), TPersistent, '', TTBXColorProperty); +{$ENDIF} + + RegisterComponentEditor(TTBXStatusBar, TTBXStatusBarEditor); + + TBRegisterItemClass(TTBXItem, 'New &TBX Item', HInstance); + TBRegisterItemClass(TTBXSubMenuItem, 'New TBX Submenu Item', HInstance); + TBRegisterItemClass(TTBXSeparatorItem, 'New TBX Separator Item', HInstance); + TBRegisterItemClass(TTBXVisibilityToggleItem, 'New TBX Visibility Toggle Item', HInstance); + TBRegisterItemClass(TTBXLabelItem, 'New TBX Label Item', HInstance); + TBRegisterItemClass(TTBXMRUListItem, 'New TBX MRU List Item', HInstance); + TBRegisterItemClass(TTBXColorItem, 'New TBX Color Item', HInstance); + TBRegisterItemClass(TTBXMDIWindowItem, 'New TBX MDI Window Item', HInstance); + TBRegisterItemClass(TTBXEditItem, 'New TBX Edit Item', HInstance); + TBRegisterItemClass(TTBXSpinEditItem, 'New TBX Spin Edit Item', HInstance); + TBRegisterItemClass(TTBXDropDownItem, 'New TBX Drop Down Item', HInstance); + TBRegisterItemClass(TTBXComboBoxItem, 'New TBX Combo Box Item', HInstance); + TBRegisterItemClass(TTBXStringList, 'New TBX String List', HInstance); + TBRegisterItemClass(TTBXUndoList, 'New TBX Undo List', HInstance); + TBRegisterItemClass(TTBXToolPalette, 'New TBX Tool Palette', HInstance); + TBRegisterItemClass(TTBXColorPalette, 'New TBX Color Palette', HInstance); +{$IFDEF COMPATIBLE_CTL} + TBRegisterItemClass(TTBXComboItem, 'New TBX Combo Item (use TBX DropDown instead)', HInstance); + TBRegisterItemClass(TTBXList, 'New TBX List (use TBX String List instead)', HInstance); + TBRegisterItemClass(TTBXComboList, 'New TBX Combo List (use TBX Combo Box Instead)', HInstance); +{$ENDIF} + +end; + +initialization + O := THookObj.Create; + TBUnregisterDsgnEditorHook(O.HookProc); + TBRegisterDsgnEditorHook(O.HookProc); + +finalization + TBUnregisterDsgnEditorHook(O.HookProc); + O.Free; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXReg.pas.orig b/official/2.1.6+2.1.beta1/TBX/TBXReg.pas.orig new file mode 100644 index 0000000..ddb2468 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXReg.pas.orig @@ -0,0 +1,485 @@ +unit TBXReg; + +// TBX Package +// Copyright 2001-2004 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// $Id: TBXReg.pas 16 2004-05-26 02:02:55Z Alex@ZEISS $ + +interface + +{$I TB2Ver.inc} +{$I TBX.inc} + +uses + Windows, Classes, Controls, SysUtils, Graphics, ImgList, Dialogs, + {$IFDEF JR_D6} DesignIntf, DesignEditors, VCLEditors, {$ELSE} DsgnIntf, {$ENDIF} + TB2Reg, TB2Toolbar, TB2Item, TBX, TBXMDI, TBXSwitcher, TB2DsgnItemEditor, + TBXExtItems, TBXLists, TBXDkPanels, TBXToolPals, TBXStatusBars; + +procedure Register; + +type + TThemeProperty = class(TStringProperty) + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + end; + + TMLStringProperty = class(TCaptionProperty) + function GetAttributes: TPropertyAttributes; override; + procedure Edit; override; + end; + +{$IFDEF JR_D5} + TTBXLinkImageIndexPropertyEditor = class(TTBImageIndexPropertyEditor) + public + function GetImageListAt(Index: Integer): TCustomImageList; override; + end; +{$ENDIF} + + TTBXColorProperty = class(TColorProperty) + public + function GetValue: string; override; + procedure GetValues(Proc: TGetStrProc); override; + procedure SetValue(const Value: string); override; +{$IFDEF JR_D5} + procedure ListDrawValue(const Value: string; ACanvas: TCanvas; + const ARect: TRect; ASelected: Boolean);{$IFNDEF JR_D6} override;{$ENDIF} +{$ENDIF} + end; + + TTBXStatusBarEditor = class(TDefaultEditor) + protected +{$IFDEF JR_D6} + procedure GetPanelsProp(const Prop: IProperty); +{$ELSE} + procedure GetPanelsProp(Prop: TPropertyEditor); +{$ENDIF} + public + procedure Edit; override; + procedure ExecuteVerb(Index: Integer); override; + function GetVerb(Index: Integer): string; override; + function GetVerbCount: Integer; override; + end; + + TTBXItemsEditor = class(TTBItemsEditor) + public + procedure ExecuteVerb(Index: Integer); override; + end; + +implementation + +uses + Forms, TBXThemes, TBXStrEdit, TBXUtils, TypInfo, TB2Version; + +type + TTBXLinkAccess = class(TTBXCustomLink); + TTBXButtonAccess = class(TTBXCustomButton); + + +{ TThemeProperty } + +function TThemeProperty.GetAttributes: TPropertyAttributes; +begin + Result := [paMultiSelect, paValueList, paSortList, paRevertable]; +end; + +procedure TThemeProperty.GetValues(Proc: TGetStrProc); +var + SL: TStringList; + I: Integer; +begin + SL := TStringList.Create; + GetAvailableTBXThemes(SL); + for I := 0 to SL.Count - 1 do Proc(SL[I]); + SL.Free; +end; + +{ TMLStringProperty } + +function WordCount(const S: string; const Delims: TSysCharSet): Integer; +var + L, I: Cardinal; +begin + Result := 0; + I := 1; + L := Length(S); + while I <= L do + begin + while (I <= L) and (S[I] in Delims) do Inc(I); + if I <= L then Inc(Result); + while (I <= L) and not(S[I] in Delims) do Inc(I); + end; +end; + +function WordPosition(const N: Integer; const S: string; + const WordDelims: TSysCharSet): Integer; +var + Count, I: Integer; +begin + Count := 0; + I := 1; + Result := 0; + while (I <= Length(S)) and (Count <> N) do begin + { skip over delimiters } + while (I <= Length(S)) and (S[I] in WordDelims) do Inc(I); + { if we're not beyond end of S, we're at the start of a word } + if I <= Length(S) then Inc(Count); + { if not finished, find the end of the current word } + if Count <> N then + while (I <= Length(S)) and not (S[I] in WordDelims) do Inc(I) + else Result := I; + end; +end; + +function ExtractWord(N: Integer; const S: string; + const WordDelims: TSysCharSet): string; +var + I: Integer; + Len: Integer; +begin + Len := 0; + I := WordPosition(N, S, WordDelims); + if I <> 0 then + { find the end of the current word } + while (I <= Length(S)) and not(S[I] in WordDelims) do begin + { add the I'th character to result } + Inc(Len); + SetLength(Result, Len); + Result[Len] := S[I]; + Inc(I); + end; + SetLength(Result, Len); +end; + +procedure TMLStringProperty.Edit; +var + Temp: string; + Component: TPersistent; + I, N: Integer; +begin + with TStrEditDlg.Create(Application) do + try + Component := GetComponent(0); + if Component is TComponent then Caption := TComponent(Component).Name + '.' + GetName + else Caption := GetName; + + Temp := GetStrValue; + N := WordCount(Temp, [#13, #10]); + for I := 1 to N do Memo.Lines.Add(ExtractWord(I, Temp, [#13, #10])); + + Memo.MaxLength := GetEditLimit; + if ShowModal = mrOk then + begin + Temp := Memo.Text; + while (Length(Temp) > 0) and (Temp[Length(Temp)] < ' ') do + System.Delete(Temp, Length(Temp), 1); + SetStrValue(Temp); + end; + finally + Free; + end; +end; + +function TMLStringProperty.GetAttributes: TPropertyAttributes; +begin + Result := inherited GetAttributes + [paDialog]; +end; + +{$IFDEF JR_D5} +{ TTBXLinkImageIndexPropertyEditor } + +function TTBXLinkImageIndexPropertyEditor.GetImageListAt(Index: Integer): TCustomImageList; +var + C: TPersistent; +begin + Result := nil; + C := GetComponent(Index); + if C is TTBXCustomLink then + Result := TTBXLinkAccess(C).Images + else if C is TTBXCustomButton then + Result := TTBXButtonAccess(C).Images; +end; +{$ENDIF} + +{ TTBXColorProperty } + +function TTBXColorProperty.GetValue: string; +begin + Result := TBXColorToString(TColor(GetOrdValue)); +end; + +procedure TTBXColorProperty.GetValues(Proc: TGetStrProc); +begin + TBXGetColorValues(Proc); +end; + +procedure TTBXColorProperty.SetValue(const Value: string); +begin + SetOrdValue(TBXStringToColor(Value)); +end; + +{$IFDEF JR_D5} +procedure TTBXColorProperty.ListDrawValue(const Value: string; ACanvas: TCanvas; + const ARect: TRect; ASelected: Boolean); + + function ColorToBorderColor(AColor: TColor): TColor; + begin + if IsDarkColor(AColor) then + begin + Result := AColor; + SetContrast(Result, AColor, 40); + end + else Result := clBlack; + end; + +var + R: TRect; + C: TColor; + OldPenColor, OldBrushColor: TColor; +begin + R := ARect; + with ACanvas do + try + OldPenColor := Pen.Color; + OldBrushColor := Brush.Color; + Pen.Color := Brush.Color; + Rectangle(R); + R.Right := (ARect.Bottom - ARect.Top) + ARect.Left; + InflateRect(R, -1, -1); + C := TBXStringToColor(Value); + if C <> clNone then + begin + Brush.Color := C; + Pen.Color := ColorToBorderColor(ColorToRGB(C)); + Rectangle(R); + end + else + begin + Brush.Color := clWindow; + Pen.Color := clBtnShadow; + Rectangle(R); + MoveTo(R.Left, R.Bottom - 1); + LineTo(R.Right - 1, R.Top); + MoveTo(R.Left, R.Top); + LineTo(R.Right, R.Bottom); + end; + Brush.Color := OldBrushColor; + Pen.Color := OldPenColor; + finally + R.Left := R.Right; + R.Right := ARect.Right; + ACanvas.TextRect(R, R.Left + 1, R.Top + 1, Value); + end; +end; +{$ENDIF} + +{ TTBXStatusBarEditor } + +procedure TTBXStatusBarEditor.Edit; +var +{$IFDEF JR_D6} + Components: IDesignerSelections; +{$ELSE} + {$IFDEF JR_D5} + Components: TDesignerSelectionList; + {$ELSE} + Components: TComponentList; + {$ENDIF} +{$ENDIF} +begin +{$IFDEF JR_D6} + Components := CreateSelectionList; +{$ELSE} + {$IFDEF JR_D5} + Components := TDesignerSelectionList.Create; + {$ELSE} + Components := TComponentList.Create; + {$ENDIF} +{$ENDIF} + try + Components.Add(Component); + GetComponentProperties(Components, [tkClass], Designer, GetPanelsProp); + finally +{$IFNDEF JR_D6} + Components.Free; +{$ENDIF} + end; +end; + +procedure TTBXStatusBarEditor.ExecuteVerb(Index: Integer); +begin + if Index = 0 then Edit; +end; + +function TTBXStatusBarEditor.GetVerb(Index: Integer): string; +begin + if Index = 0 then Result := '&Panels Editor...'; +end; + +function TTBXStatusBarEditor.GetVerbCount: Integer; +begin + Result := 1; +end; + +{$IFDEF JR_D6} +procedure TTBXStatusBarEditor.GetPanelsProp(const Prop: IProperty); +begin + if SameText(Prop.GetName, 'Panels') then Prop.Edit; +end; +{$ELSE} +procedure TTBXStatusBarEditor.GetPanelsProp(Prop: TPropertyEditor); +begin + if CompareText(Prop.GetName, 'Panels') = 0 then Prop.Edit; +end; +{$ENDIF} + +{ TTBXItemsEditor } + +procedure TTBXItemsEditor.ExecuteVerb(Index: Integer); +const + AboutText = + '%s'#13#10 + + '©2001–2004 Alex A. Denisov'#13#10 + + 'For conditions of distribution and use, see TBX documentation.'#13#10 + + 'Visit http://g32.org/tbx/ for the latest versions of TBX'#13#10 + + #13#10 + + 'Running on'#13#10 + + '%s'#13#10 + + '©1998-2004 by Jordan Russell'#13#10 + + 'For conditions of distribution and use, see Toolbar2000 documentation.'#13#10 + + #13#10 + + 'Visit http://www.jrsoftware.org/ for the latest versions of Toolbar2000'#13#10 + + ''; +begin + case Index of + 0: Edit; + 1: + begin + MessageDlg( + Format(AboutText, + [TBXVersionText, Toolbar2000VersionPropText]), + mtInformation, [mbOK], 0); + end; + end; +end; + + +{ THookObj } + +type + THookObj = class + procedure HookProc(Sender: TTBItemEditForm); + end; + +var O: THookObj; + +procedure THookObj.HookProc(Sender: TTBItemEditForm); +var + TB: TTBToolbar; + Item: TTBCustomItem; + NewItem: TTBItem; + S: string; + I: Integer; +begin + TB := TTBToolbar.Create(Sender); + TB.Top := Sender.Height; + TB.Parent := Sender; + TB.Align := alTop; + TB.Images := Sender.ToolbarItems.SubMenuImages; + TB.ShowHint := True; + + for I := 0 to Sender.MoreMenu.Count - 1 do + begin + Item := Sender.MoreMenu.Items[I]; + if Item is TTBCustomItem then + begin + S := TTBCustomItemClass(Item.Tag).ClassName; + if StrLComp(PChar(S), 'TTBX', 4) = 0 then + begin + NewItem := TTBItem.Create(TB); + TB.Items.Add(NewItem); + NewItem.Caption := Item.Caption; + NewItem.ImageIndex := Item.ImageIndex; + NewItem.Tag := Item.Tag; + NewItem.Hint := S; + NewItem.OnClick := Item.OnClick; + end; + end; + end; +end; + +procedure Register; +begin + RegisterComponents('Toolbar2000', [TTBXDock, TTBXMultiDock, TTBXToolbar, + TTBXToolWindow, TTBXDockablePanel, TTBXPopupMenu, TTBXSwitcher, TTBXMRUList, + TTBXMDIHandler, TTBXPageScroller, TTBXColorSet, TTBXAlignmentPanel, + TTBXLabel, TTBXLink, TTBXButton, TTBXCheckBox, TTBXRadioButton, TTBXStatusBar]); + RegisterNoIcon([TTBXItem, TTBXSubMenuItem, TTBXSeparatorItem, + TTBXVisibilityToggleItem, TTBXLabelItem, TTBXMRUListItem, TTBXColorItem, + TTBXMDIWindowItem, TTBXEditItem, TTBXSpinEditItem, TTBXDropDownItem, + TTBXComboBoxItem, TTBXStringList, TTBXUndoList, TTBXToolPalette, TTBXColorPalette]); +{$IFDEF COMPATIBLE_CTL} + RegisterNoIcon([TTBXList, TTBXComboItem, TTBXComboList]); +{$ENDIF} + + RegisterClasses([TTBXItem, TTBXSubMenuItem, TTBXSeparatorItem, + TTBXVisibilityToggleItem, TTBXLabelItem, TTBXMRUListItem, TTBXColorItem, + TTBXMDIWindowItem, TTBXEditItem, TTBXSpinEditItem, TTBXDropDownItem, + TTBXComboBoxItem, TTBXStringList, TTBXUndoList, TTBXToolPalette, TTBXColorPalette]); +{$IFDEF COMPATIBLE_CTL} + RegisterClasses([TTBXList, TTBXComboItem, TTBXComboList]); +{$ENDIF} + + + RegisterComponentEditor(TTBXToolbar, TTBXItemsEditor); + RegisterComponentEditor(TTBXPopupMenu, TTBXItemsEditor); + RegisterPropertyEditor(TypeInfo(string), TTBXCustomItem, 'Caption', TMLStringProperty); + RegisterPropertyEditor(TypeInfo(string), TTBXLabelItem, 'Caption', TCaptionProperty); + RegisterPropertyEditor(TypeInfo(string), TTBToolbar, 'ChevronHint', TMLStringProperty); + RegisterPropertyEditor(TypeInfo(string), TTBXToolbar, 'ChevronHint', TMLStringProperty); + RegisterPropertyEditor(TypeInfo(string), TTBXSwitcher, 'Theme', TThemeProperty); +{$IFDEF JR_D5} + RegisterPropertyEditor(TypeInfo(TImageIndex), TTBXCustomLink, 'ImageIndex', TTBXLinkImageIndexPropertyEditor); + RegisterPropertyEditor(TypeInfo(TImageIndex), TTBXCustomButton, 'ImageIndex', TTBXLinkImageIndexPropertyEditor); +{$ENDIF} +{$IFDEF NEWCOLORPROPERTY} + RegisterPropertyEditor(TypeInfo(TColor), TPersistent, '', TTBXColorProperty); +{$ENDIF} + + RegisterComponentEditor(TTBXStatusBar, TTBXStatusBarEditor); + + TBRegisterItemClass(TTBXItem, 'New &TBX Item', HInstance); + TBRegisterItemClass(TTBXSubMenuItem, 'New TBX Submenu Item', HInstance); + TBRegisterItemClass(TTBXSeparatorItem, 'New TBX Separator Item', HInstance); + TBRegisterItemClass(TTBXVisibilityToggleItem, 'New TBX Visibility Toggle Item', HInstance); + TBRegisterItemClass(TTBXLabelItem, 'New TBX Label Item', HInstance); + TBRegisterItemClass(TTBXMRUListItem, 'New TBX MRU List Item', HInstance); + TBRegisterItemClass(TTBXColorItem, 'New TBX Color Item', HInstance); + TBRegisterItemClass(TTBXMDIWindowItem, 'New TBX MDI Window Item', HInstance); + TBRegisterItemClass(TTBXEditItem, 'New TBX Edit Item', HInstance); + TBRegisterItemClass(TTBXSpinEditItem, 'New TBX Spin Edit Item', HInstance); + TBRegisterItemClass(TTBXDropDownItem, 'New TBX Drop Down Item', HInstance); + TBRegisterItemClass(TTBXComboBoxItem, 'New TBX Combo Box Item', HInstance); + TBRegisterItemClass(TTBXStringList, 'New TBX String List', HInstance); + TBRegisterItemClass(TTBXUndoList, 'New TBX Undo List', HInstance); + TBRegisterItemClass(TTBXToolPalette, 'New TBX Tool Palette', HInstance); + TBRegisterItemClass(TTBXColorPalette, 'New TBX Color Palette', HInstance); +{$IFDEF COMPATIBLE_CTL} + TBRegisterItemClass(TTBXComboItem, 'New TBX Combo Item (use TBX DropDown instead)', HInstance); + TBRegisterItemClass(TTBXList, 'New TBX List (use TBX String List instead)', HInstance); + TBRegisterItemClass(TTBXComboList, 'New TBX Combo List (use TBX Combo Box Instead)', HInstance); +{$ENDIF} + +end; + +initialization + O := THookObj.Create; + TBUnregisterDsgnEditorHook(O.HookProc); + TBRegisterDsgnEditorHook(O.HookProc); + +finalization + TBUnregisterDsgnEditorHook(O.HookProc); + O.Free; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXStatusBars.pas b/official/2.1.6+2.1.beta1/TBX/TBXStatusBars.pas new file mode 100644 index 0000000..abb7c00 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXStatusBars.pas @@ -0,0 +1,1030 @@ +unit TBXStatusBars; + +// TBX Package +// Copyright 2001-2004 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// $Id: TBXStatusBars.pas 15 2004-05-15 04:45:26Z Alex@ZEISS $ + +interface + +{$I ..\..\Source\TB2Ver.inc} +{$I TBX.inc} + +uses + Windows, Messages, Classes, SysUtils, Controls, Forms, Graphics, TBX, + TBXThemes, TB2ITem, ImgList; + +type + TTBXCustomStatusBar = class; + + TPercent = 0..100; + + TTBXStatusPanel = class(TCollectionItem) + private + FAlignment: TAlignment; + FCaption: TCaption; + FControl: TControl; + FEnabled: Boolean; + FFramed: Boolean; + FFontSettings: TFontSettings; + FHint: string; + FImageIndex: TImageIndex; + FMaxSize: Integer; + FSize: Integer; + FStretchPriority: TPercent; + FTag: Integer; + FTextTruncation: TTextTruncation; + FViewPriority: TPercent; + procedure FontSettingsChanged(Sender: TObject); + procedure SetAlignment(Value: TAlignment); + procedure SetCaption(const Value: TCaption); + procedure SetControl(Value: TControl); + procedure SetEnabled(Value: Boolean); + procedure SetFramed(Value: Boolean); + procedure SetImageIndex(Value: TImageIndex); + procedure SetMaxSize(Value: Integer); + procedure SetSize(Value: Integer); + procedure SetStretchPriority(Value: TPercent); + procedure SetTextTruncation(Value: TTextTruncation); + procedure SetViewPriority(Value: TPercent); + procedure SetFontSettings(const Value: TFontSettings); + protected + CachedBounds: TRect; + CachedSize: Integer; + CachedVisible: Boolean; + CachedGripper: Boolean; + function StatusBar: TTBXCustomStatusBar; + function GetDisplayName: string; override; + public + constructor Create(Collection: TCollection); override; + destructor Destroy; override; + procedure Assign(Source: TPersistent); override; + property BoundsRect: TRect read CachedBounds; + property Visible: Boolean read CachedVisible; + published + property Alignment: TAlignment read FAlignment write SetAlignment default taLeftJustify; + property Caption: TCaption read FCaption write SetCaption; + property Control: TControl read FControl write SetControl; + property Enabled: Boolean read FEnabled write SetEnabled default True; + property Framed: Boolean read FFramed write SetFramed default True; + property FontSettings: TFontSettings read FFontSettings write SetFontSettings; + property Hint: string read FHint write FHint; + property ImageIndex: TImageIndex read FImageIndex write SetImageIndex default -1; + property MaxSize: Integer read FMaxSize write SetMaxSize default 0; + property ViewPriority: TPercent read FViewPriority write SetViewPriority default 100; + property Size: Integer read FSize write SetSize default 50; + property StretchPriority: TPercent read FStretchPriority write SetStretchPriority default 0; + property Tag: Integer read FTag write FTag; + property TextTruncation: TTextTruncation read FTextTruncation write SetTextTruncation default twNone; + end; + + TTBXStatusPanels = class(TCollection) + private + FStatusBar: TTBXCustomStatusBar; + function GetItem(Index: Integer): TTBXStatusPanel; + procedure SetItem(Index: Integer; Value: TTBXStatusPanel); + protected + function GetOwner: TPersistent; override; + procedure Update(Item: TCollectionItem); override; + public + constructor Create(AStatusBar: TTBXCustomStatusBar); + function Add: TTBXStatusPanel; + function FindPanel(AControl: TControl): TTBXStatusPanel; + property StatusBar: TTBXCustomStatusBar read FStatusBar; + property Items[Index: Integer]: TTBXStatusPanel read GetItem write SetItem; default; + end; + + TSBAdjustContentRect = procedure(Sender: TTBXCustomStatusBar; Panel: TTBXStatusPanel; var ARect: TRect) of object; + TSBAdjustFont = procedure(Sender: TTBXCustomStatusBar; Panel: TTBXStatusPanel; AFont: TFont) of object; + TSBPanelEvent = procedure(Sender: TTBXCustomStatusBar; Panel: TTBXStatusPanel) of object; + + TTBXCustomStatusBar = class(TCustomControl) + private + FPanels: TTBXStatusPanels; + FImageChangeLink: TChangeLink; + FImages: TCustomImageList; + FSimplePanel: Boolean; + FSimpleText: TCaption; + FSizeGrip: Boolean; + FUpdateCount: Integer; + FUseSystemFont: Boolean; + FOnAdjustContentRect: TSBAdjustContentRect; + FOnAdjustFont: TSBAdjustFont; + FOnPanelClick: TSBPanelEvent; + FOnPanelDblClick: TSBPanelEvent; + FFixAlign: Boolean; + procedure CMControlChange(var Message: TCMControlChange); message CM_CONTROLCHANGE; + procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED; + procedure CMHintShow(var Message: TCMHintShow); message CM_HINTSHOW; + procedure CMVisibleChanged(var Message: TMessage); message CM_VISIBLECHANGED; + procedure ImageListChange(Sender: TObject); + procedure SetImages(Value: TCustomImageList); + procedure SetPanels(Value: TTBXStatusPanels); + procedure SetSimplePanel(Value: Boolean); + procedure SetSimpleText(const Value: TCaption); + procedure SetSizeGrip(Value: Boolean); + procedure SetUseSystemFont(Value: Boolean); + procedure TBMThemeChange(var Message); message TBM_THEMECHANGE; + procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND; + procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST; + protected + CachedPanelMargins: TTBXMargins; + procedure AdjustPanelContentRect(APanel: TTBXStatusPanel; var ARect: TRect); virtual; + procedure AlignControls(AControl: TControl; var Rect: TRect); override; + procedure BeginUpdate; + procedure Change; dynamic; + procedure ChangeScale(M, D: Integer); override; + procedure Click; override; + procedure CreateParams(var Params: TCreateParams); override; + procedure CreateWnd; override; + procedure DblClick; override; + procedure DoAdjustFont(APanel: TTBXStatusPanel; AFont: TFont); virtual; + procedure DoPanelClick(APanel: TTBXStatusPanel); virtual; + procedure DoPanelDblClick(APanel: TTBXStatusPanel); virtual; + procedure EndUpdate; + function GetGripperRect: TRect; + procedure Loaded; override; + function IsSizeGripVisible: Boolean; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure Paint; override; + procedure PaintPanel(ARect: TRect; APanel: TTBXStatusPanel; IsLast: Boolean); virtual; + procedure Resize; override; + procedure UpdateCache; virtual; + procedure UpdatePanels; virtual; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function GetPanelAt(const Pt: TPoint): TTBXStatusPanel; overload; + function GetPanelAt(X, Y: Integer): TTBXStatusPanel; overload; + function GetPanelRect(APanel: TTBXStatusPanel): TRect; + procedure FlipChildren(AllLevels: Boolean); override; + property Align default alBottom; + property FixAlign: Boolean read FFixAlign write FFixAlign default False; + property DoubleBuffered default True; + property Images: TCustomImageList read FImages write SetImages; + property Panels: TTBXStatusPanels read FPanels write SetPanels; + property SimplePanel: Boolean read FSimplePanel write SetSimplePanel default False; + property SimpleText: TCaption read FSimpleText write SetSimpleText; + property SizeGrip: Boolean read FSizeGrip write SetSizeGrip default True; + property UseSystemFont: Boolean read FUseSystemFont write SetUseSystemFont; + property OnAdjustContentRect: TSBAdjustContentRect read FOnAdjustContentRect write FOnAdjustContentRect; + property OnAdjustFont: TSBAdjustFont read FOnAdjustFont write FOnAdjustFont; + property OnPanelClick: TSBPanelEvent read FOnPanelClick write FOnPanelClick; + property OnPanelDblClick: TSBPanelEvent read FOnPanelDblClick write FOnPanelDblClick; + published + property Height default 22; + end; + + TTBXStatusBar = class(TTBXCustomStatusBar) + published + property Action; + property Align; + property Anchors; + property Constraints; + property Ctl3D; + property DoubleBuffered; + property DragCursor; + property DragKind; + property DragMode; + property Enabled; + property FixAlign; + property Font; + property Images; + property Panels; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property SimplePanel; + property SimpleText; + property SizeGrip; + property ShowHint; + property UseSystemFont; + property Visible; + property OnAdjustContentRect; + property OnClick; +{$IFDEF JR_D5} + property OnContextPopup; +{$ENDIF} + property OnDblClick; + property OnDragDrop; + property OnDragOver; + property OnEndDock; + property OnEndDrag; + property OnMouseDown; + property OnMouseMove; + property OnMouseUp; + property OnPanelClick; + property OnPanelDblClick; + property OnResize; + property OnStartDock; + property OnStartDrag; + end; + +implementation + +uses TBXUtils; + +type TFontSettingsAccess = class(TFontSettings); + +function CompareViewPriorities(Item1, Item2: Pointer): Integer; +var + P1, P2: TTBXStatusPanel; +begin + P1 := TTBXStatusPanel(Item1); + P2 := TTBXStatusPanel(Item2); + Result := P2.ViewPriority - P1.ViewPriority; +end; + +function CompareStretchPriorities(Item1, Item2: Pointer): Integer; +var + P1, P2: TTBXStatusPanel; +begin + P1 := TTBXStatusPanel(Item1); + P2 := TTBXStatusPanel(Item2); + Result := P1.StretchPriority - P2.StretchPriority; +end; + +{ TTBXStatusPanel } + +procedure TTBXStatusPanel.Assign(Source: TPersistent); + + function FindControl(AControl: TControl): TControl; + begin + if AControl <> nil then + Result := StatusBar.Owner.FindComponent(AControl.Name) as TControl + else + Result := nil; + end; + +begin + if Source is TTBXStatusPanel then + begin + ViewPriority := TTBXStatusPanel(Source).ViewPriority; + Control := FindControl(TTBXStatusPanel(Source).Control); + end + else inherited Assign(Source); +end; + +constructor TTBXStatusPanel.Create(Collection: TCollection); +begin + inherited Create(Collection); + FSize := 50; + FEnabled := True; + FFramed := True; + FImageIndex := -1; + FViewPriority := 100; + FFontSettings := TFontSettings.Create; + TFontSettingsAccess(FFontSettings).OnChange := FontSettingsChanged; +end; + +destructor TTBXStatusPanel.Destroy; +var + AControl: TControl; +begin + AControl := Control; + FControl := nil; + FFontSettings.Free; + inherited Destroy; + if (AControl <> nil) and not (csDestroying in AControl.ComponentState) and + ((AControl is TWinControl) and TWinControl(AControl).HandleAllocated) then + begin + AControl.BringToFront; + AControl.Perform(CM_SHOWINGCHANGED, 0, 0); + end; +end; + +function TTBXStatusPanel.GetDisplayName: string; +begin + Result := Caption; + if (Result = '') and (Control <> nil) then Result := '[ ' + Control.Name + ' ]'; + if Result = '' then Result := inherited GetDisplayName; +end; + +procedure TTBXStatusPanel.SetAlignment(Value: TAlignment); +begin + FAlignment := Value; + Changed(False); +end; + +procedure TTBXStatusPanel.SetCaption(const Value: TCaption); +begin + if Value <> FCaption then + begin + FCaption := Value; + Changed(False); + end; +end; + +procedure TTBXStatusPanel.SetControl(Value: TControl); +var + Panel: TTBXStatusPanel; + PrevControl: TControl; + P: TControl; +begin + if FControl <> Value then + begin + if Value <> nil then + begin + P := StatusBar; + while P <> nil do + if P = Value then raise EInvalidOperation.Create('Can''t insert own parent') + else P := P.Parent; + + Panel := TTBXStatusPanels(Collection).FindPanel(Value); + if (Panel <> nil) and (Panel <> Self) then Panel.SetControl(nil); + end; + PrevControl := FControl; + FControl := Value; + FControl.Parent := StatusBar; + if Value <> nil then Value.FreeNotification(StatusBar); + Changed(True); + if PrevControl <> nil then PrevControl.Perform(CM_SHOWINGCHANGED, 0, 0); + end; +end; + +procedure TTBXStatusPanel.SetEnabled(Value: Boolean); +begin + if Value <> FEnabled then + begin + FEnabled := Value; + Changed(False); + end; +end; + +procedure TTBXStatusPanel.SetFramed(Value: Boolean); +begin + if Value <> FFramed then + begin + FFramed := Value; + Changed(False); + end; +end; + +procedure TTBXStatusPanel.SetMaxSize(Value: Integer); +begin + if Value <> FMaxSize then + begin + FMaxSize := Value; + Changed(True); + end; +end; + +procedure TTBXStatusPanel.SetViewPriority(Value: TPercent); +begin + if Value <> FViewPriority then + begin + FViewPriority := Value; + Changed(True); + end; +end; + +procedure TTBXStatusPanel.SetSize(Value: Integer); +begin + if Value <> FSize then + begin + FSize := Value; + Changed(True); + end; +end; + +procedure TTBXStatusPanel.SetStretchPriority(Value: TPercent); +begin + if Value <> FStretchPriority then + begin + FStretchPriority := Value; + Changed(True); + end; +end; + +procedure TTBXStatusPanel.SetTextTruncation(Value: TTextTruncation); +begin + FTextTruncation := Value; + Changed(False); +end; + +function TTBXStatusPanel.StatusBar: TTBXCustomStatusBar; +begin + Result := TTBXStatusPanels(Collection).StatusBar; +end; + +procedure TTBXStatusPanel.SetImageIndex(Value: TImageIndex); +begin + if Value <> FImageIndex then + begin + FImageIndex := Value; + if StatusBar.Images <> nil then Changed(False); + end; +end; + +procedure TTBXStatusPanel.FontSettingsChanged(Sender: TObject); +begin + Changed(False); +end; + +procedure TTBXStatusPanel.SetFontSettings(const Value: TFontSettings); +begin + FFontSettings := Value; +end; + +{ TTBXStatusPanels } + +function TTBXStatusPanels.Add: TTBXStatusPanel; +begin + Result := TTBXStatusPanel(inherited Add); +end; + +constructor TTBXStatusPanels.Create(AStatusBar: TTBXCustomStatusBar); +begin + inherited Create(TTBXStatusPanel); + FStatusBar := AStatusBar; +end; + +function TTBXStatusPanels.FindPanel(AControl: TControl): TTBXStatusPanel; +var + I: Integer; +begin + for I := 0 to Count - 1 do + begin + Result := TTBXStatusPanel(inherited GetItem(I)); + if Result.FControl = AControl then Exit; + end; + Result := nil; +end; + +function TTBXStatusPanels.GetItem(Index: Integer): TTBXStatusPanel; +begin + Result := TTBXStatusPanel(inherited GetItem(Index)); +end; + +function TTBXStatusPanels.GetOwner: TPersistent; +begin + Result := FStatusBar; +end; + +procedure TTBXStatusPanels.SetItem(Index: Integer; Value: TTBXStatusPanel); +begin + inherited SetItem(Index, Value); +end; + +procedure TTBXStatusPanels.Update(Item: TCollectionItem); +begin + FStatusBar.UpdatePanels; +end; + +{ TTBXCustomStatusBar } + +procedure TTBXCustomStatusBar.AdjustPanelContentRect(APanel: TTBXStatusPanel; var ARect: TRect); +begin + if APanel.Framed then + with CachedPanelMargins do + begin + Inc(ARect.Left, LeftWidth); + Inc(ARect.Top, TopHeight); + Dec(ARect.Right, RightWidth); + Dec(ARect.Bottom, BottomHeight); + end; + if Assigned(FOnAdjustContentRect) then FOnAdjustContentRect(Self, APanel, ARect); +end; + +procedure TTBXCustomStatusBar.AlignControls(AControl: TControl; var Rect: TRect); +begin + if not (csDestroying in ComponentState) and (FUpdateCount = 0) and + ((AControl = nil) and (Panels.Count > 0) or (AControl is TWinControl)) then + begin + Invalidate; + UpdatePanels; + end; +end; + +procedure TTBXCustomStatusBar.BeginUpdate; +begin + Inc(FUpdateCount); +end; + +procedure TTBXCustomStatusBar.Change; +var + Form: TCustomForm; +begin + if csDesigning in ComponentState then + begin + Form := GetParentForm(Self); + if (Form <> nil) and (Form.Designer <> nil) then Form.Designer.Modified; + end; +end; + +procedure TTBXCustomStatusBar.ChangeScale(M, D: Integer); +begin + if UseSystemFont then ScalingFlags := [sfTop]; + inherited; +end; + +procedure TTBXCustomStatusBar.Click; +var + Pt: TPoint; + Panel: TTBXStatusPanel; +begin + inherited; + GetCursorPos(Pt); + Panel := GetPanelAt(ScreenToClient(Pt)); + if Panel <> nil then DoPanelClick(Panel); +end; + +procedure TTBXCustomStatusBar.CMControlChange(var Message: TCMControlChange); +var + Panel: TTBXStatusPanel; +begin + if FUpdateCount = 0 then + begin + { Can only accept TWinControl descendants } + if not (csLoading in ComponentState) then + if Message.Inserting and (Message.Control is TWinControl) then + begin + with Panels.Add do SetControl(Message.Control); + end + else + begin + Panel := Panels.FindPanel(Message.Control); + if Panel <> nil then Panel.Free; + end; + end; +end; + +procedure TTBXCustomStatusBar.CMFontChanged(var Message: TMessage); +begin + inherited; + UpdatePanels; + Invalidate; +end; + +procedure TTBXCustomStatusBar.CMHintShow(var Message: TCMHintShow); +var + Panel: TTBXStatusPanel; +begin + Panel := GetPanelAt(Message.HintInfo.CursorPos); + if Panel <> nil then + begin + Message.HintInfo.HintStr := Panel.Hint; + Message.HintInfo.CursorRect := Panel.BoundsRect; + end; +end; + +procedure TTBXCustomStatusBar.CMVisibleChanged(var Message: TMessage); +begin + if FixAlign and (Parent <> nil) then Top := Parent.ClientHeight; + inherited; +end; + +constructor TTBXCustomStatusBar.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + ControlStyle := [csAcceptsControls, csCaptureMouse, csClickEvents, csDoubleClicks]; + if not (csDesigning in ComponentState) then ControlStyle := ControlStyle - [csOpaque]; + Height := 22; + Align := alBottom; + Width := 150; + FImageChangeLink := TChangeLink.Create; + FImageChangeLink.OnChange := ImageListChange; + FPanels := TTBXStatusPanels.Create(Self); + FSizeGrip := True; + DoubleBuffered := True; + AddThemeNotification(Self); +end; + +procedure TTBXCustomStatusBar.CreateParams(var Params: TCreateParams); +begin + inherited CreateParams(Params); + with Params do + WindowClass.style := WindowClass.style and not (CS_HREDRAW or CS_VREDRAW); +end; + +procedure TTBXCustomStatusBar.CreateWnd; +begin + inherited CreateWnd; + if not (csLoading in ComponentState) then UpdatePanels; +end; + +procedure TTBXCustomStatusBar.DblClick; +var + Pt: TPoint; + Panel: TTBXStatusPanel; +begin + inherited; + GetCursorPos(Pt); + Panel := GetPanelAt(ScreenToClient(Pt)); + if Panel <> nil then DoPanelDblClick(Panel); +end; + +destructor TTBXCustomStatusBar.Destroy; +begin + RemoveThemeNotification(Self); + FImageChangeLink.Free; + FPanels.Free; + inherited Destroy; +end; + +procedure TTBXCustomStatusBar.DoAdjustFont(APanel: TTBXStatusPanel; AFont: TFont); +begin + { Changing AFont.Color will do nothing since it is replaced by the theme } + if Assigned(FOnAdjustFont) then FOnAdjustFont(Self, APanel, AFont); +end; + +procedure TTBXCustomStatusBar.DoPanelClick(APanel: TTBXStatusPanel); +begin + if Assigned(FOnPanelClick) then FOnPanelClick(Self, APanel); +end; + +procedure TTBXCustomStatusBar.DoPanelDblClick(APanel: TTBXStatusPanel); +begin + if Assigned(FOnPanelDblClick) then FOnPanelDblClick(Self, APanel); +end; + +procedure TTBXCustomStatusBar.EndUpdate; +begin + Dec(FUpdateCount); +end; + +procedure TTBXCustomStatusBar.FlipChildren(AllLevels: Boolean); +begin + { do not flip controls } +end; + +function TTBXCustomStatusBar.GetGripperRect: TRect; +begin + Result := ClientRect; + with Result do + begin + Inc(Top, 3); + Left := Right - GetSystemMetrics(SM_CXVSCROLL); + end; +end; + +function TTBXCustomStatusBar.GetPanelAt(const Pt: TPoint): TTBXStatusPanel; +var + I: Integer; +begin + for I := 0 to Panels.Count - 1 do + begin + Result := Panels[I]; + if Result.CachedVisible and PtInRect(Panels[I].BoundsRect, Pt) then Exit; + end; + Result := nil; +end; + +function TTBXCustomStatusBar.GetPanelAt(X, Y: Integer): TTBXStatusPanel; +begin + Result := GetPanelAt(Point(X, Y)); +end; + +function TTBXCustomStatusBar.GetPanelRect(APanel: TTBXStatusPanel): TRect; +begin + if (APanel <> nil) and APanel.CachedVisible then Result := APanel.CachedBounds + else Result := Rect(0, 0, 0, 0); +end; + +procedure TTBXCustomStatusBar.ImageListChange(Sender: TObject); +begin + if Sender = Images then Invalidate; +end; + +function TTBXCustomStatusBar.IsSizeGripVisible: Boolean; +var + ParentForm: TCustomForm; + PBR, BR: TPoint; +begin + Result := False; + if SizeGrip then + begin + ParentForm := GetParentForm(Self); + if (ParentForm <> nil) and (ParentForm.WindowState = wsNormal) then + begin + PBR := ParentForm.ClientToScreen(ParentForm.ClientRect.BottomRight); + BR := ClientToScreen(ClientRect.BottomRight); + Result := (PBR.X = BR.X) and (PBR.Y = BR.Y); + end; + end; +end; + +procedure TTBXCustomStatusBar.Loaded; +begin + inherited Loaded; + UpdatePanels; +end; + +procedure TTBXCustomStatusBar.Notification(AComponent: TComponent; Operation: TOperation); +var + Panel: TTBXStatusPanel; +begin + inherited Notification(AComponent, Operation); + if Operation = opRemove then + begin + if not (csDestroying in ComponentState) then + begin + Panel := Panels.FindPanel(TControl(AComponent)); + if Panel <> nil then Panel.FControl := nil; + end + else if AComponent = Images then Images := nil; + end; +end; + +procedure TTBXCustomStatusBar.Paint; +const + CEnabledState: array [Boolean] of Integer = (ISF_DISABLED, 0); +var + CR, R: TRect; + I: Integer; + Panel: TTBXStatusPanel; + PartID: Integer; + Flags: Cardinal; +begin + inherited; + CR := ClientRect; + CurrentTheme.PaintStatusBar(Canvas, CR, SBP_BODY); + Inc(CR.Top, 2); + if SimplePanel then + begin + if Length(SimpleText) > 0 then + begin + if UseSystemFont then Canvas.Font := ToolbarFont + else Canvas.Font := Self.Font; + Canvas.Font.Color := GetTBXTextColor(CEnabledState[Enabled]); + Canvas.Brush.Style := bsClear; + Flags := DT_SINGLELINE or DT_VCENTER; + InflateRect(CR, -4, 0); + DrawTBXCaption(Canvas, CR, SimpleText, Flags, ISF_STATUSCOLOR or CEnabledState[Enabled]); + Canvas.Brush.Style := bsSolid; + end; + end + else + for I := 0 to Panels.Count - 1 do + begin + Panel := Panels[I]; + if Panel.CachedVisible and RectVisible(Canvas.Handle, Panel.CachedBounds) then + begin + R := Panel.CachedBounds; + if Panel.Framed then + begin + if Panel.CachedGripper then PartID := SBP_LASTPANE + else PartID := SBP_PANE; + CurrentTheme.PaintStatusBar(Canvas, R, PartID); + end; + if UseSystemFont then Canvas.Font := ToolbarFont + else Canvas.Font := Self.Font; + Canvas.Font.Color := GetTBXTextColor(CEnabledState[Panel.Enabled]); + Panel.FontSettings.Apply(Canvas.Font); + DoAdjustFont(Panel, Canvas.Font); + AdjustPanelContentRect(Panel, R); + PaintPanel(R, Panel, I = Panels.Count - 1); + end; + end; + if IsSizeGripVisible then + CurrentTheme.PaintStatusBar(Canvas, GetGripperRect, SBP_GRIPPER); +end; + +procedure TTBXCustomStatusBar.PaintPanel(ARect: TRect; APanel: TTBXStatusPanel; IsLast: Boolean); +const + EnabledState: array [Boolean] of Integer = (ISF_DISABLED, 0); + Alignments: array [TAlignment] of Integer = (DT_LEFT, DT_RIGHT, DT_CENTER); + Truncations: array [TTextTruncation] of Integer = (0, DT_END_ELLIPSIS, DT_PATH_ELLIPSIS); +var + Flags: Integer; + R: TRect; +begin + InflateRect(ARect, -1, 0); + if (APanel.ImageIndex >= 0) and (Images <> nil) then + begin + R := ARect; + R.Top := (R.Top + R.Bottom - Images.Height) div 2; + R.Bottom := R.Top + Images.Height; + case APanel.Alignment of + taLeftJustify: + begin + R.Right := R.Left + Images.Width; + ARect.Left := R.Right + 4; + end; + taRightJustify: + begin + R.Left := R.Right - Images.Width; + ARect.Right := R.Left - 4; + end; + taCenter: + begin + R.Left := (R.Left + R.Right - Images.Width) div 2; + R.Right := R.Left + Images.Width; + end; + end; + if APanel.Enabled then Images.Draw(Canvas, R.Left, R.Top, APanel.ImageIndex) + else DrawTBXImage(Canvas, R, Images, APanel.ImageIndex, ISF_DISABLED); + end; + Canvas.Brush.Style := bsClear; + Flags := DT_SINGLELINE or DT_VCENTER or Alignments[APanel.Alignment] or Truncations[APanel.TextTruncation]; + DrawTBXCaption(Canvas, ARect, APanel.Caption, Flags, ISF_STATUSCOLOR or EnabledState[APanel.Enabled]); + Canvas.Brush.Style := bsSolid; +end; + +procedure TTBXCustomStatusBar.Resize; +begin + UpdatePanels; + Invalidate; + inherited; +end; + +procedure TTBXCustomStatusBar.SetImages(Value: TCustomImageList); +begin + if FImages <> nil then FImages.UnRegisterChanges(FImageChangeLink); + FImages := Value; + if FImages <> nil then + begin + FImages.RegisterChanges(FImageChangeLink); + FImages.FreeNotification(Self); + end; + Invalidate; +end; + +procedure TTBXCustomStatusBar.SetPanels(Value: TTBXStatusPanels); +begin + FPanels.Assign(Value); +end; + +procedure TTBXCustomStatusBar.SetSimplePanel(Value: Boolean); +begin + if FSimplePanel <> Value then + begin + FSimplePanel := Value; + Invalidate; + end; +end; + +procedure TTBXCustomStatusBar.SetSimpleText(const Value: TCaption); +begin + if FSimpleText <> Value then + begin + FSimpleText := Value; + Invalidate; + end; +end; + +procedure TTBXCustomStatusBar.SetSizeGrip(Value: Boolean); +begin + FSizeGrip := Value; + Invalidate; +end; + +procedure TTBXCustomStatusBar.SetUseSystemFont(Value: Boolean); +begin + if Value <> FUseSystemFont then + begin + FUseSystemFont := Value; + UpdatePanels; + Invalidate; + end; +end; + +procedure TTBXCustomStatusBar.TBMThemeChange(var Message); +begin + UpdatePanels; + Invalidate; +end; + +procedure TTBXCustomStatusBar.UpdateCache; +var + CR: TRect; + Position, I: Integer; + MaxWidth, WorkWidth: Integer; + TotalSize, Delta, NewSize: Integer; + SortList: TList; + Panel: TTBXStatusPanel; +begin + if Panels.Count = 0 then Exit; + CurrentTheme.GetMargins(MID_STATUSPANE, CachedPanelMargins); + CR := ClientRect; + Inc(CR.Top, 2); + Position := 0; + + MaxWidth := CR.Right - CR.Left; + WorkWidth := MaxWidth; + TotalSize := 0; + + SortList := TList.Create; + try + { First Pass: Gather the panels with non-zero ViewPriority } + for I := 0 to Panels.Count - 1 do + with Panels[I] do + begin + CachedGripper := False; + if ViewPriority > 0 then + begin + CachedSize := Size; + CachedVisible := True; + Inc(TotalSize, Size); + SortList.Add(Panels[I]) + end + else + CachedVisible := False; + end; + + SortList.Sort(CompareViewPriorities); + + { If necessary, hide the panels with low ViewPriority } + if TotalSize > WorkWidth then + begin + while (TotalSize > WorkWidth) and (SortList.Count > 1) and + (TTBXStatusPanel(SortList.Last).ViewPriority < 100) do + begin + TTBXStatusPanel(SortList.Last).CachedVisible := False; + Dec(TotalSize, TTBXStatusPanel(SortList.Last).Size); + SortList.Count := SortList.Count - 1; + end; + end; + + { Stretch to fill the empty space } + Delta := WorkWidth - TotalSize; + if Delta > 0 then + begin + for I := SortList.Count - 1 downto 0 do + if TTBXStatusPanel(SortList[I]).StretchPriority = 0 then SortList.Delete(I); + while (SortList.Count > 0) and (Delta > 0) do + begin + SortList.Sort(CompareStretchPriorities); + + { Start stretching with higher ViewPriority panels} + Panel := TTBXStatusPanel(SortList.Last); + NewSize := Panel.CachedSize + Delta; + if (Panel.MaxSize > Panel.CachedSize) and (NewSize > Panel.MaxSize) then + begin + NewSize := Panel.MaxSize; + Dec(Delta, NewSize - Panel.CachedSize); + end; + Panel.CachedSize := NewSize; + SortList.Count := SortList.Count - 1; + end; + end; + + for I := 0 to Panels.Count - 1 do + with Panels[I] do + begin + if Position >= WorkWidth then CachedVisible := False; + if CachedVisible then + begin + CachedBounds := CR; + CachedBounds.Left := Position; + Inc(Position, CachedSize); + if Position = WorkWidth then CachedGripper := True; + CachedBounds.Right := Position; + end + else CachedBounds := Rect(0, 0, 0, 0); + end; + + finally + SortList.Free; + end; +end; + +procedure TTBXCustomStatusBar.UpdatePanels; +var + I: Integer; + R: TRect; +begin + Invalidate; + UpdateCache; + for I := 0 to Panels.Count - 1 do + begin + with Panels[I] do + if Visible then + begin + if Control <> nil then + begin + R := CachedBounds; + if Framed then + with CachedPanelMargins do + begin + Inc(R.Left, LeftWidth); + Inc(R.Top, TopHeight); + Dec(R.Right, RightWidth); + Dec(R.Bottom, BottomHeight); + end; + Control.BoundsRect := R; + end; + end + else if Control <> nil then Control.BoundsRect := Rect(0, 0, 0, 0); + end; +end; + +procedure TTBXCustomStatusBar.WMEraseBkgnd(var Message: TWMEraseBkgnd); +begin + Message.Result := 1; +end; + +procedure TTBXCustomStatusBar.WMNCHitTest(var Message: TWMNCHitTest); +var + Pt: TPoint; +begin + inherited; + if (Message.Result = HTCLIENT) and IsSizeGripVisible then + begin + Pt := ScreenToClient(SmallPointToPoint(Message.Pos)); + if PtInRect(GetGripperRect, Pt) then Message.Result := HTBOTTOMRIGHT; + end; +end; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXStrEdit.pas b/official/2.1.6+2.1.beta1/TBX/TBXStrEdit.pas new file mode 100644 index 0000000..8fc0a4a --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXStrEdit.pas @@ -0,0 +1,92 @@ +unit TBXStrEdit; + +// TBX Package +// Copyright 2001-2004 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// $Id: TBXStrEdit.pas 7 2004-02-21 06:07:53Z $ + +interface + +uses + Windows, Messages, SysUtils, Classes, Controls, Forms, Dialogs, StdCtrls; + +type + TStrEditDlg = class(TForm) + Memo: TMemo; + OK: TButton; + Cancel: TButton; + procedure MemoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); + protected + procedure ArrangeControls; + procedure Resize; override; + public + constructor Create(AOwner: TComponent); override; + end; + +implementation + +procedure TStrEditDlg.ArrangeControls; +var + R, B: TRect; + W, H: Integer; +begin + R := ClientRect; + InflateRect(R, -6, -6); + B := R; + W := 70; H := 23; + B.Left := B.Right - W; + B.Top := B.Bottom - H; + Cancel.BoundsRect := B; + B.Right := B.Left - 4; + B.Left := B.Right - W; + OK.BoundsRect := B; + Dec(R.Bottom, H + 8); + Memo.BoundsRect := R; +end; + +constructor TStrEditDlg.Create(AOwner: TComponent); +begin + inherited CreateNew(AOwner); + AutoScroll := False; + Constraints.MinHeight := 200; + Constraints.MinWidth := 300; + Scaled := False; + Position := poScreenCenter; + Memo := TMemo.Create(Self); + with Memo do + begin + ScrollBars := ssBoth; + OnKeyDown := MemoKeyDown; + Parent := Self; + end; + OK := TButton.Create(Self); + with OK do + begin + Caption := 'OK'; + Default := True; + ModalResult := mrOk; + Parent := Self; + end; + Cancel := TButton.Create(Self); + with Cancel do + begin + Cancel := True; + Caption := 'Cancel'; + ModalResult := mrCancel; + Parent := Self; + end; +end; + +procedure TStrEditDlg.MemoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); +begin + if Key = VK_ESCAPE then Cancel.Click; +end; + +procedure TStrEditDlg.Resize; +begin + inherited; + ArrangeControls; +end; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXStrEdit.pas.orig b/official/2.1.6+2.1.beta1/TBX/TBXStrEdit.pas.orig new file mode 100644 index 0000000..44559f1 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXStrEdit.pas.orig @@ -0,0 +1,87 @@ +unit TBXStrEdit; + +// TBX Package +// Copyright 2001-2004 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// $Id: TBXStrEdit.pas 7 2004-02-21 06:07:53Z $ + +interface + +uses + Windows, Messages, SysUtils, Classes, Controls, Forms, Dialogs, StdCtrls; + +type + TStrEditDlg = class(TForm) + Memo: TMemo; + OK: TButton; + Cancel: TButton; + procedure MemoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); + protected + procedure ArrangeControls; + procedure Resize; override; + public + constructor Create(AOwner: TComponent); override; + end; + +implementation + +procedure TStrEditDlg.ArrangeControls; +var + R, B: TRect; + W, H: Integer; +begin + R := ClientRect; + InflateRect(R, -16, -16); + B := R; + W := 60; H := 23; + B.Left := B.Right - W; + B.Top := B.Bottom - H; + Cancel.BoundsRect := B; + B.Right := B.Left - 4; + B.Left := B.Right - W; + OK.BoundsRect := B; + Dec(R.Bottom, H + 8); + Memo.BoundsRect := R; +end; + +constructor TStrEditDlg.Create(AOwner: TComponent); +begin + inherited CreateNew(AOwner); + AutoScroll := False; + Scaled := False; + Position := poScreenCenter; + Memo := TMemo.Create(Self); + with Memo do + begin + ScrollBars := ssBoth; + OnKeyDown := MemoKeyDown; + end; + OK := TButton.Create(Self); + with OK do + begin + Caption := 'OK'; + Default := True; + ModalResult := mrOk; + end; + Cancel := TButton.Create(Self); + with Cancel do + begin + Cancel := True; + Caption := 'Cancel'; + ModalResult := mrCancel; + end; +end; + +procedure TStrEditDlg.MemoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); +begin + if Key = VK_ESCAPE then Cancel.Click; +end; + +procedure TStrEditDlg.Resize; +begin + inherited; + ArrangeControls; +end; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXSwitcher.pas b/official/2.1.6+2.1.beta1/TBX/TBXSwitcher.pas new file mode 100644 index 0000000..01e1c3a --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXSwitcher.pas @@ -0,0 +1,133 @@ +unit TBXSwitcher; + +// TBX Package +// Copyright 2001-2004 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// $Id: TBXSwitcher.pas 7 2004-02-21 06:07:53Z $ + +interface + +{$I ..\..\Source\TB2Ver.inc} +{$I TBX.inc} + +uses + TBX, TBXThemes, Classes; + +type + TFlatMenuStyle = (fmsAuto, fmsEnable, fmsDisable); + + TTBXSwitcher = class(TComponent) + private + FOnThemeChange: TNotifyEvent; + procedure SetTheme(const Value: string); + function GetTheme: string; + function GetThemeCount: Integer; + function GetThemes(Index: Integer): string; + function GetEnableXPStyles: Boolean; + function GetFlatMenuStyle: TFlatMenuStyle; + procedure SetEnableXPStyles(Value: Boolean); + procedure SetFlatMenuStyle(Value: TFlatMenuStyle); + procedure TBMThemeChange(var Message); message TBM_THEMECHANGE; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property ThemeCount: Integer read GetThemeCount; + property Themes[Index: Integer]: string read GetThemes; + published + property Theme: string read GetTheme write SetTheme; + property EnableXPStyles: Boolean read GetEnableXPStyles write SetEnableXPStyles default True; + property FlatMenuStyle: TFlatMenuStyle read GetFlatMenuStyle write SetFlatMenuStyle default fmsAuto; + property OnThemeChange: TNotifyEvent read FOnThemeChange write FOnThemeChange; + end; + +implementation + +var + Counter: Integer = 0; + +{ TTBXSwitcher } + +constructor TTBXSwitcher.Create(AOwner: TComponent); +begin + inherited; + AddThemeNotification(Self); + Inc(Counter); +end; + +destructor TTBXSwitcher.Destroy; +begin + Dec(Counter); + RemoveThemeNotification(Self); + if (csDesigning in ComponentState) and (Counter = 0) then TBXSetTheme('Default'); + inherited; +end; + +function TTBXSwitcher.GetEnableXPStyles: Boolean; +begin + Result := GetTBXSysParam(TSP_XPVISUALSTYLE) = XPVS_AUTOMATIC; +end; + +function TTBXSwitcher.GetFlatMenuStyle: TFlatMenuStyle; +begin + case GetTBXSysParam(TSP_FLATMENUSTYLE) of + FMS_ENABLED: Result := fmsEnable; + FMS_DISABLED: Result := fmsDisable; + else + Result := fmsAuto; + end; +end; + +function TTBXSwitcher.GetTheme: string; +begin + Result := TBXCurrentTheme; +end; + +function TTBXSwitcher.GetThemeCount: Integer; +var + SL: TStringList; +begin + SL := TStringList.Create; + GetAvailableTBXThemes(SL); + Result := SL.Count; + SL.Free; +end; + +function TTBXSwitcher.GetThemes(Index: Integer): string; +var + SL: TStringList; +begin + SL := TStringList.Create; + GetAvailableTBXThemes(SL); + try + Result := SL[Index]; + finally + SL.Free; + end; +end; + +procedure TTBXSwitcher.SetEnableXPStyles(Value: Boolean); +const + XPVStyle: array [Boolean] of Integer = (XPVS_DISABLED, XPVS_AUTOMATIC); +begin + SetTBXSysParam(TSP_XPVISUALSTYLE, XPVStyle[Value]); +end; + +procedure TTBXSwitcher.SetFlatMenuStyle(Value: TFlatMenuStyle); +const + FMStyle: array [TFlatMenuStyle] of Integer = (FMS_AUTOMATIC, FMS_ENABLED, FMS_DISABLED); +begin + SetTBXSysParam(TSP_FLATMENUSTYLE, FMStyle[Value]); +end; + +procedure TTBXSwitcher.SetTheme(const Value: string); +begin + TBXSetTheme(Value); +end; + +procedure TTBXSwitcher.TBMThemeChange(var Message); +begin + if Assigned(FOnThemeChange) then FOnThemeChange(Self); +end; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXThemes.pas b/official/2.1.6+2.1.beta1/TBX/TBXThemes.pas new file mode 100644 index 0000000..d853bdc --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXThemes.pas @@ -0,0 +1,897 @@ +unit TBXThemes; + +// TBX Package +// Copyright 2001-2004 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// $Id: TBXThemes.pas 16 2004-05-26 02:02:55Z Alex@ZEISS $ + +interface + +{$I ..\..\Source\TB2Ver.inc} +{$I TBX.inc} + +uses + Windows, Messages, Classes, Forms, Graphics, ImgList; + +{ TBX_SYSCOMMAND message } +const + TBX_SYSCOMMAND = WM_USER + 312; + TSC_BEFOREVIEWCHANGE = 1; + TSC_VIEWCHANGE = 2; + TSC_AFTERVIEWCHANGE = 3; + TSC_APPACTIVATE = 4; + TSC_APPDEACTIVATE = 5; + +{ Integer Metric IDs } +const + TMI_SPLITBTN_ARROWWIDTH = 10; + TMI_DROPDOWN_ARROWWIDTH = 20; + TMI_DROPDOWN_ARROWMARGIN = 21; + TMI_MENU_IMGTEXTSPACE = 32; + TMI_MENU_LCAPTIONMARGIN = 33; + TMI_MENU_RCAPTIONMARGIN = 34; + TMI_MENU_SEPARATORSIZE = 35; + TMI_MENU_MDI_DW = 36; + TMI_MENU_MDI_DH = 37; + TMI_TLBR_SEPARATORSIZE = 50; + TMI_EDIT_FRAMEWIDTH = 60; + TMI_EDIT_TEXTMARGINHORZ = 61; + TMI_EDIT_TEXTMARGINVERT = 62; + TMI_EDIT_BTNWIDTH = 65; + TMI_EDIT_MENURIGHTINDENT = 66; + +{ Boolean Metric IDs } +const + TMB_OFFICEXPPOPUPALIGNMENT = 1; + TMB_EDITMENUFULLSELECT = 3; // highlights the full edit item + TMB_EDITHEIGHTEVEN = 4; // forces the height of the edit item to be even number (otherwise it will be odd) + TMB_PAINTDOCKBACKGROUND = 5; // docks are painted by the theme instead of having a uniform color + TMB_SOLIDTOOLBARNCAREA = 6; // no transparency in NC area of toolbars + TMB_SOLIDTOOLBARCLIENTAREA = 7; // no transparency in client area of toolbars + + TMB_SOLIDTOOLBARS = TMB_SOLIDTOOLBARNCAREA; // for compatibility only + +{ Margins Metric IDs} +const + MID_TOOLBARITEM = 1; + MID_MENUITEM = 2; + MID_STATUSPANE = 3; + +{ View types } +const + VT_UNKNOWN = $0; + VT_TOOLBAR = $01000; + VT_POPUP = $02000; + VT_DOCKPANEL = $04000; + VT_DOCKWINDOW = $08000; + VT_STATUSBAR = $10000; // technicaly, this is not a view + + { Toolbar view types } + TVT_FLOATING = $800; + TVT_RESIZABLE = $400; // valid only when floating + TVT_EMBEDDED = $200; // when the toolbar is not floating or docked + TVT_NORMALTOOLBAR = VT_TOOLBAR or $01; + TVT_MENUBAR = VT_TOOLBAR or $02; + TVT_TOOLWINDOW = VT_TOOLBAR or $04; + + { Popup view types } + PVT_POPUPMENU = VT_POPUP or $01; + PVT_LISTBOX = VT_POPUP or $02; + PVT_TOOLBOX = VT_POPUP or $04; + PVT_CHEVRONMENU = VT_POPUP or $08; + + { Dockable panel view types } + DPVT_FLOATING = $800; + DPVT_RESIZABLE = $400; + DPVT_NORMAL = VT_DOCKPANEL or $01; + + { Dockable window view types } + DWVT_FLOATING = $800; + DWVT_RESIZABLE = $400; + DWVT_NORMAL = VT_DOCKWINDOW or $01; + +{ Item types } +const + IT_TOOLBARBUTTON = 1; + IT_MENUITEM = 2; + +{ Item options (bit flags) } +const + IO_TOOLBARSTYLE = $01; + IO_SUBMENUITEM = $04; + IO_COMBO = $08; + IO_DESIGNING = $10; + IO_APPACTIVE = $20; // True when Application.Active = True + IO_RADIO = $40; + +{ Drag handle styles } +const + DHS_DOUBLE = 0; + DHS_NONE = 1; + DHS_SINGLE = 2; + +{ Caption/drag handle button states (bit flags) } +const + CDBS_VISIBLE = $1; + CDBS_HOT = $2; + CDBS_PRESSED = $4; + +{ Window info's RedrawPart (bit flags) } +const + WRP_BORDER = $1; + WRP_CAPTION = $2; + WRP_CLOSEBTN = $4; + +{ Popup shadow types } +const + PST_NONE = 0; // no popup shadows + PST_WINDOWSXP = 1; + PST_OFFICEXP = 2; + PST_WINDOWS2K = 3; + +{ Edit (ComboBox) button types } +const + EBT_DROPDOWN = 1; + EBT_SPIN = 2; + + { Edit (ComboBox) button states for EBT_DROPDOWN type (bit flags) } + EBDS_DISABLED = $1; + EBDS_HOT = $2; + EBDS_PRESSED = $4; + + { Edit (ComboBox) button states for EBT_SPIN type (bit flags) } + EBSS_DISABLED = $1; + EBSS_HOT = $2; + EBSS_UP = $4; + EBSS_DOWN = $8; + +{ Page scroll button types } +const + PSBT_UP = 1; + PSBT_DOWN = 2; + PSBT_LEFT = 3; + PSBT_RIGHT = 4; + +{ PaintFrameControl kinds } +const + PFC_CHECKBOX = 1; + PFC_RADIOBUTTON = 2; + +{ PaintFrameControl states } + PFS_CHECKED = $01; + PFS_MIXED = $02; + PFS_DISABLED = $04; + PFS_HOT = $08; + PFS_PUSHED = $10; + PFS_FOCUSED = $20; + +{ Item state flags } +const + ISF_DISABLED = $001; + ISF_HOT = $002; + ISF_PUSHED = $004; + ISF_SELECTED = $008; + + ISF_LOCATIONMASK = $F00; + ISF_TOOLBARCOLOR = $000; // for text and images painted in toolbars + ISF_MENUCOLOR = $100; // for text and images painted in popups and DkPanels + ISF_STATUSCOLOR = $200; // for text and images painted in status bars + +{ StatusBar parts } +const + SBP_BODY = 0; + SBP_PANE = 1; + SBP_LASTPANE = 2; + SBP_GRIPPER = 3; + +{ Dock positions } +const + DP_TOP = 1; + DP_BOTTOM = 2; + DP_LEFT = 3; + DP_RIGHT = 4; + +type + TTBXItemLayout = (tbxlAuto, tbxlGlyphLeft, tbxlGlyphTop); + TTBXMargins = record + LeftWidth: Integer; + RightWidth: Integer; + TopHeight: Integer; + BottomHeight: Integer; + end; + + TTBXHoverKind = (hkNone, hkKeyboardHover, hkMouseHover); + TTBXComboPart = (cpNone, cpCombo, cpSplitLeft, cpSplitRight); + TTBXItemInfo = record + ViewType: Integer; // VT_*, TVT_*, PVT_*, or DPVT_* constant + ItemOptions: Integer; // IO_* flags + Enabled: Boolean; + Pushed: Boolean; + HoverKind: TTBXHoverKind; + Selected: Boolean; + ImageShown: Boolean; + ImageWidth: Integer; + ImageHeight: Integer; + IsVertical: Boolean; + ComboPart: TTBXComboPart; + IsPopupParent: Boolean; // used in officexp theme + PopupMargin: Integer; + AppFlags: Integer; // reserved for extensions + AppData: Integer; + end; + + TTBXWindowInfo = record + ParentHandle: HWND; // handle of a parent floating window + WindowHandle: HWND; // handle of a toolbar or dockable panel + ViewType: Integer; // TVT_* or DPVT_* view types (loating) + ClientWidth: Integer; + ClientHeight: Integer; + ShowCaption: Boolean; + FloatingBorderSize: TPoint; + CloseButtonState: Integer; // CDBS_* state flags + RedrawPart: Integer; // WRP_ constants + Caption: PChar; + EffectiveColor: TColor; + Active: Boolean; + AppFlags: Integer; // reserved for extensions + AppData: Integer; + end; + + TTBXPopupInfo = record + WindowHandle: HWND; + ViewType: Integer; + ParentRect: TRect; + BorderSize: TPoint; + AppFlags: Integer; // reserved for extensions + AppData: Integer; + end; + + TTBXToolbarInfo = record + WindowHandle: HWND; + ViewType: Integer; // TVT_* view types (docked) + IsVertical: Boolean; + AllowDrag: Boolean; + BorderStyle: TBorderStyle; + BorderSize: TPoint; + ClientWidth: Integer; + ClientHeight: Integer; + DragHandleStyle: Integer; + CloseButtonState: Integer; // CDBS_* state flags + Caption: PChar; + EffectiveColor: TColor; + AppFlags: Integer; // reserved for extensions + AppData: Integer; + end; + + TTBXDockPanelInfo = record + WindowHandle: HWND; + ViewType: Integer; // DPVT_* view types (docked) + IsVertical: Boolean; + AllowDrag: Boolean; + BorderStyle: TBorderStyle; + BorderSize: TPoint; + ClientWidth: Integer; + ClientHeight: Integer; + ShowCaption: Boolean; + CloseButtonState: Integer; + Caption: PChar; + EffectiveColor: TColor; + AppFlags: Integer; // reserved for extensions + AppData: Integer; + end; + + TTBXEditBtnInfo = record + ButtonType: Integer; // EBT_* button type + ButtonState: Integer; + end; + + TTBXEditInfo = record + LeftBtnWidth: Integer; + RightBtnWidth: Integer; + LeftBtnInfo: TTBXEditBtnInfo; // valid only if LeftBtnWidth > 0 + RightBtnInfo: TTBXEditBtnInfo; // valid only if RightBtnWidth > 0 + end; + + TTBXTheme = class + private + FName: string; + FTag: Integer; + public + constructor Create(const AName: string); virtual; + + { Margins, color, etc. } + function GetImageOffset(Canvas: TCanvas; const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList): TPoint; virtual; abstract; + function GetItemColor(const ItemInfo: TTBXItemInfo): TColor; virtual; abstract; + function GetItemTextColor(const ItemInfo: TTBXItemInfo): TColor; virtual; abstract; + function GetItemImageBackground(const ItemInfo: TTBXItemInfo): TColor; virtual; abstract; + procedure GetMargins(MarginID: Integer; out Margins: TTBXMargins); virtual; abstract; + function GetPopupShadowType: Integer; virtual; abstract; // returns one of the PST_ constants + procedure GetViewBorder(ViewType: Integer; out Border: TPoint); virtual; abstract; + function GetViewColor(ViewType: Integer): TColor; virtual; abstract; + procedure GetViewMargins(ViewType: Integer; out Margins: TTBXMargins); virtual; abstract; + + { General painting routines } + procedure PaintBackgnd(Canvas: TCanvas; const ADockRect, ARect, AClipRect: TRect; AColor: TColor; Transparent: Boolean; AViewType: Integer); virtual; abstract; + procedure PaintButton(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); virtual; abstract; + procedure PaintCaption(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo; const ACaption: string; AFormat: Cardinal; Rotated: Boolean); virtual; abstract; + procedure PaintCheckMark(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); virtual; abstract; + procedure PaintChevron(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); virtual; abstract; + procedure PaintEditFrame(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo; const EditInfo: TTBXEditInfo); virtual; abstract; + procedure PaintEditButton(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo; ButtonInfo: TTBXEditBtnInfo); virtual; abstract; + procedure PaintDock(Canvas: TCanvas; const ClientRect, DockRect: TRect; DockPosition: Integer); virtual; abstract; + procedure PaintDockPanelNCArea(Canvas: TCanvas; R: TRect; const DockPanelInfo: TTBXDockPanelInfo); virtual; abstract; + procedure PaintDropDownArrow(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); virtual; abstract; + procedure PaintFloatingBorder(Canvas: TCanvas; const ARect: TRect; const WindowInfo: TTBXWindowInfo); virtual; abstract; + procedure PaintFrame(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); virtual; abstract; + procedure PaintImage(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList; ImageIndex: Integer); virtual; abstract; + procedure PaintMDIButton(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo; ButtonKind: Cardinal); virtual; abstract; + procedure PaintMenuItem(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo); virtual; abstract; + procedure PaintMenuItemFrame(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); virtual; abstract; + procedure PaintPageScrollButton(Canvas: TCanvas; const ARect: TRect; ButtonType: Integer; Hot: Boolean); virtual; abstract; + procedure PaintPopupNCArea(Canvas: TCanvas; R: TRect; const PopupInfo: TTBXPopupInfo); virtual; abstract; + procedure PaintSeparator(Canvas: TCanvas; ARect: TRect; ItemInfo: TTBXItemInfo; Horizontal, LineSeparator: Boolean); virtual; abstract; + procedure PaintToolbarNCArea(Canvas: TCanvas; R: TRect; const WindowInfo: TTBXToolbarInfo); virtual; abstract; + procedure PaintFrameControl(Canvas: TCanvas; R: TRect; Kind, State: Integer; Params: Pointer); virtual; abstract; + procedure PaintStatusBar(Canvas: TCanvas; R: TRect; Part: Integer); virtual; abstract; + + { Integer metrics access } + function GetIntegerMetrics(Index: Integer): Integer; virtual; abstract; + property SplitBtnArrowWidth: Integer index TMI_SPLITBTN_ARROWWIDTH read GetIntegerMetrics; + property DropdownArrowWidth: Integer index TMI_DROPDOWN_ARROWWIDTH read GetIntegerMetrics; + property DropdownArrowMargin: Integer index TMI_DROPDOWN_ARROWMARGIN read GetIntegerMetrics; + property MenuImageTextSpace: Integer index TMI_MENU_IMGTEXTSPACE read GetIntegerMetrics; + property MenuLeftCaptionMargin: Integer index TMI_MENU_LCAPTIONMARGIN read GetIntegerMetrics; + property MenuRightCaptionMargin: Integer index TMI_MENU_RCAPTIONMARGIN read GetIntegerMetrics; + property MenuSeparatorSize: Integer index TMI_MENU_SEPARATORSIZE read GetIntegerMetrics; + property MenuMDIDW: Integer index TMI_MENU_MDI_DW read GetIntegerMetrics; + property MenuMDIDH: Integer index TMI_MENU_MDI_DH read GetIntegerMetrics; + property TlbrSeparatorSize: Integer index TMI_TLBR_SEPARATORSIZE read GetIntegerMetrics; + property EditFrameWidth: Integer index TMI_EDIT_FRAMEWIDTH read GetIntegerMetrics; + property EditTextMarginHorz: Integer index TMI_EDIT_TEXTMARGINHORZ read GetIntegerMetrics; + property EditTextMarginVert: Integer index TMI_EDIT_TEXTMARGINVERT read GetIntegerMetrics; + property EditBtnWidth: Integer index TMI_EDIT_BTNWIDTH read GetIntegerMetrics; + property EditMenuRightIndent: Integer index TMI_EDIT_MENURIGHTINDENT read GetIntegerMetrics; + + { Boolean metrics access } + function GetBooleanMetrics(Index: Integer): Boolean; virtual; abstract; + property OfficeXPPopupAlignment: Boolean index TMB_OFFICEXPPOPUPALIGNMENT read GetBooleanMetrics; + property EditMenuFullSelect: Boolean index TMB_EDITMENUFULLSELECT read GetBooleanMetrics; + property EditHeightEven: Boolean index TMB_EDITHEIGHTEVEN read GetBooleanMetrics; + property PaintDockBackground: Boolean index TMB_PAINTDOCKBACKGROUND read GetBooleanMetrics; + property SolidToolbarNCArea: Boolean index TMB_SOLIDTOOLBARNCAREA read GetBooleanMetrics; + property SolidToolbarClientArea: Boolean index TMB_SOLIDTOOLBARCLIENTAREA read GetBooleanMetrics; + + property Name: string read FName; + property Tag: Integer read FTag write FTag; + end; + + TTBXThemeClass = class of TTBXTheme; + +const +{ TBXSysParam Params } + TSP_FLATMENUSTYLE = 1; + TSP_XPVISUALSTYLE = 2; + +{ Flat menu styles } + FMS_AUTOMATIC = 0; + FMS_DISABLED = 1; + FMS_ENABLED = 2; + +{ XP visual styles} + XPVS_AUTOMATIC = 0; + XPVS_DISABLED = 2; + +procedure SetTBXSysParam(Param: Integer; Value: Integer); +function GetTBXSysParam(Param: Integer): Integer; + +procedure AddTBXSysChangeNotification(AObject: TObject); +procedure RemoveTBXSysChangeNotification(AObject: TObject); + +procedure RegisterTBXTheme(const AName: string; AThemeClass: TTBXThemeClass); +procedure UnregisterTBXTheme(const AName: string); +function IsTBXThemeAvailable(const AName: string): Boolean; +procedure GetAvailableTBXThemes(Strings: TStrings); + +function GetTBXTheme(const AName: string): TTBXTheme; +procedure ReleaseTBXTheme(var ATheme: TTBXTheme); + +{ Additional "system" variables - do not change } + +var + { Additional colors } + clHotLight: TColor; + clPopup: TColor; + clPopupText: TColor; + clToolbar: TColor; + clToolbarText: TColor; + + { Auxiliary flags corresponding to the system color scheme } + TBXLoColor: Boolean; + TBXHiContrast: Boolean; // this can me removed in future + TBXNoBlending: Boolean; // TBXNoColor or TBXHiContrast + + { Handles for Windows XP visual styles } + SCROLLBAR_THEME: THandle; + REBAR_THEME: THandle; + BUTTON_THEME: THandle; + TOOLBAR_THEME: THandle; + WINDOW_THEME: THandle; + COMBO_THEME: THandle; + EXPLORERBAR_THEME: THandle; + STATUSBAR_THEME: THandle; + SPIN_THEME: THandle; + +var + USE_FLATMENUS: Boolean; + USE_THEMES: Boolean; + +{ Misc. Functions } +{ Warning: These functions may be changed or relocated in future versions } + +function GetTBXCaptionRect(const WindowInfo: TTBXWindowInfo; AdjustForBorder, MinusCloseButton: Boolean): TRect; +function GetTBXCloseButtonRect(const WindowInfo: TTBXWindowInfo; AdjustForBorder: Boolean): TRect; +function GetTBXDockedCloseButtonRect(const ToolbarInfo: TTBXToolbarInfo): TRect; +function GetTBXDragHandleSize(const ToolbarInfo: TTBXToolbarInfo): Integer; + +implementation + +uses + SysUtils, TBXUtils, TBXUxThemes; + +const + SPI_GETFLATMENU = $1022; + +type + TThemeInfo = record + Name: ShortString; + ThemeClass: TTBXThemeClass; + ThemeInstance: TTBXTheme; + RefCount: Integer; + end; + +var + Themes: array of TThemeInfo; + +{ TTBXThemeManager } + +type + TTBXThemeManager = class + private + FEnableVisualStyles: Boolean; + FFlatMenuStyle: Integer; + FNotifies: TList; + FWindowHandle: HWND; + procedure SetEnableVisualStyles(Value: Boolean); + procedure SetFlatMenuStyle(Value: Integer); + protected + procedure VisualStylesClose; + procedure VisualStylesOpen; + procedure UpdateVariables; + procedure WndProc(var Message: TMessage); + public + constructor Create; + destructor Destroy; override; + function Broadcast(Msg: Cardinal; Param1, Param2: Integer): Integer; + procedure Notify; + procedure AddNotification(AObject: TObject); + procedure RemoveNotification(AObject: TObject); + property EnableVisualStyles: Boolean read FEnableVisualStyles write SetEnableVisualStyles; + property FlatMenuStyle: Integer read FFlatMenuStyle write SetFlatMenuStyle; + end; + +var + ThemeManager: TTBXThemeManager; + +procedure SetTBXSysParam(Param: Integer; Value: Integer); +begin + case Param of + TSP_FLATMENUSTYLE: ThemeManager.FlatMenuStyle := Value; + TSP_XPVISUALSTYLE: ThemeManager.EnableVisualStyles := (Value = XPVS_AUTOMATIC); + end; +end; + +function GetTBXSysParam(Param: Integer): Integer; +const + CXPVStyles: array [Boolean] of Integer = (XPVS_DISABLED, XPVS_AUTOMATIC); +begin + Assert(ThemeManager <> nil); + case Param of + TSP_FLATMENUSTYLE: Result := ThemeManager.FlatMenuStyle; + TSP_XPVISUALSTYLE: Result := CXPVStyles[ThemeManager.EnableVisualStyles]; + else + Result := -1; + end; +end; + +procedure AddTBXSysChangeNotification(AObject: TObject); +begin + ThemeManager.AddNotification(AObject); +end; + +procedure RemoveTBXSysChangeNotification(AObject: TObject); +begin + ThemeManager.RemoveNotification(AObject); +end; + +function FindTBXTheme(const AName: string): Integer; +begin + for Result := 0 to Length(Themes) - 1 do + if CompareText(Themes[Result].Name, AName) = 0 then Exit; + Result := -1; +end; + +procedure RegisterTBXTheme(const AName: string; AThemeClass: TTBXThemeClass); +var + Index: Integer; +begin + if (Length(AName) = 0) or (AThemeClass = nil) then + raise Exception.Create('Cannot register theme'); + Index := FindTBXTheme(AName); + if Index >= 0 then raise Exception.CreateFmt('Theme %s is already registered', [AName]); + Index := Length(Themes); + SetLength(Themes, Index + 1); + with Themes[Index] do + begin + Name := AName; + ThemeClass := AThemeClass; + ThemeInstance := nil; + RefCount := 0; + end; +end; + +procedure UnregisterTBXTheme(const AName: string); +var + Index, L: Integer; +begin + Index := FindTBXTheme(AName); + if Index < 0 then raise Exception.CreateFmt('Cannot unregister unknown theme %s', [AName]); + L := Length(Themes); + if Index < L - 1 then + Move(Themes[Index + 1], Themes[Index], SizeOf(TThemeInfo) * (L - Index - 1)); + SetLength(Themes, L - 1); +end; + +function IsTBXThemeAvailable(const AName: string): Boolean; +begin + Result := FindTBXTheme(AName) >= 0; +end; + +procedure GetAvailableTBXThemes(Strings: TStrings); +var + I: Integer; +begin + Assert(Strings <> nil); + for I := 0 to Length(Themes) - 1 do + Strings.Add(Themes[I].Name); +end; + +function GetTBXTheme(const AName: string): TTBXTheme; +const + ActiveFlags: array [Boolean] of Integer = (TSC_APPDEACTIVATE, TSC_APPACTIVATE); +var + Index: Integer; + M: TMessage; +begin + Index := FindTBXTheme(AName); + if Index < 0 then raise Exception.Create('Unknown theme ' + AName); + with Themes[Index] do + begin + if RefCount = 0 then + begin + { Create a new instance and increase reference count } + Assert(ThemeInstance = nil); + ThemeInstance := ThemeClass.Create(Name); + M.Msg := TBX_SYSCOMMAND; + M.WParam := Integer(Application.Active); + M.LParam := 0; + M.Result := 0; + ThemeInstance.Dispatch(M); + end; + Inc(RefCount); + Result := ThemeInstance; + end; +end; + +procedure ReleaseTBXTheme(var ATheme: TTBXTheme); +var + Index: Integer; +begin + for Index := 0 to Length(Themes) - 1 do + with Themes[Index] do + if ThemeInstance = ATheme then + begin + if RefCount < 1 then raise Exception.Create('Cannot release theme ' + Themes[Index].Name); + Dec(RefCount); + if RefCount = 0 then + begin + ThemeInstance.Free; + ThemeInstance := nil; + ATheme := nil; + end; + Exit; + end; + raise Exception.Create('Cannot release theme'); +end; + +{ TTBXTheme } + +constructor TTBXTheme.Create(const AName: string); +begin + FName := AName; +end; + +{ Misc. Functions } + +function GetTBXCaptionRect(const WindowInfo: TTBXWindowInfo; + AdjustForBorder, MinusCloseButton: Boolean): TRect; +begin + Result := Rect(0, 0, WindowInfo.ClientWidth, GetSystemMetrics(SM_CYSMCAPTION) - 1); + if MinusCloseButton then Dec(Result.Right, Result.Bottom); + if AdjustForBorder then + with WindowInfo.FloatingBorderSize do OffsetRect(Result, X, Y); +end; + +function GetTBXCloseButtonRect(const WindowInfo: TTBXWindowInfo; + AdjustForBorder: Boolean): TRect; +begin + Result := GetTBXCaptionRect(WindowInfo, AdjustForBorder, False); + Result.Left := Result.Right - Result.Bottom + Result.Top; +end; + +function GetTBXDockedCloseButtonRect(const ToolbarInfo: TTBXToolbarInfo): TRect; +const + DragHandleSizes: array [Boolean, 0..2] of Integer = ((9, 0, 6), (14, 14, 14)); +var + X, Y, Z: Integer; +begin + with ToolbarInfo do + begin + Z := GetTBXDragHandleSize(ToolbarInfo) - 1; + if not IsVertical then + begin + X := BorderSize.X; + Y := BorderSize.Y; + end + else + begin + X := (ClientWidth + BorderSize.X) - Z; + Y := BorderSize.Y; + end; + Result := Bounds(X, Y, Z, Z); + end; +end; + +function GetTBXDragHandleSize(const ToolbarInfo: TTBXToolbarInfo): Integer; +const + DragHandleSizes: array [Boolean, 0..2] of Integer = ((9, 0, 6), (14, 14, 14)); +begin + with ToolbarInfo do + begin + if AllowDrag then + Result := DragHandleSizes[(CloseButtonState and CDBS_VISIBLE) <> 0, DragHandleStyle] + else + Result := 0; + end; +end; + +{ TTBXThemeManager } + +procedure TTBXThemeManager.AddNotification(AObject: TObject); +begin + FNotifies.Add(AObject); +end; + +function TTBXThemeManager.Broadcast(Msg: Cardinal; Param1, Param2: Integer): Integer; +var + I: Integer; + M: TMessage; +begin + if FNotifies.Count > 0 then + begin + M.Msg := Msg; + M.WParam := Param1; + M.LParam := Param2; + M.Result := 0; + for I := 0 to FNotifies.Count - 1 do TObject(FNotifies[I]).Dispatch(M); + Result := M.Result; + end + else Result := 0; +end; + +constructor TTBXThemeManager.Create; +begin + FEnableVisualStyles := True; + FFlatMenuStyle := FMS_AUTOMATIC; + FNotifies := TList.Create; + FWindowHandle := {$IFDEF JR_D6}Classes.{$ENDIF}AllocateHWnd(WndProc); + UpdateVariables; +end; + +destructor TTBXThemeManager.Destroy; +begin + VisualStylesClose; + {$IFDEF JR_D6}Classes.{$ENDIF}DeallocateHWnd(FWindowHandle); + FNotifies.Free; + VisualStylesClose; + inherited; +end; + +procedure TTBXThemeManager.Notify; +begin + if FNotifies.Count > 0 then + begin + Broadcast(TBX_SYSCOMMAND, TSC_BEFOREVIEWCHANGE, 0); + Broadcast(TBX_SYSCOMMAND, TSC_VIEWCHANGE, 0); + Broadcast(TBX_SYSCOMMAND, TSC_AFTERVIEWCHANGE, 0); + end; +end; + +procedure TTBXThemeManager.RemoveNotification(AObject: TObject); +begin + FNotifies.Remove(AObject); +end; + +procedure TTBXThemeManager.SetEnableVisualStyles(Value: Boolean); +begin + if Value <> FEnableVisualStyles then + begin + FEnableVisualStyles := Value; + UpdateVariables; + Notify; + end; +end; + +procedure TTBXThemeManager.SetFlatMenuStyle(Value: Integer); +begin + if Value <> FFlatMenuStyle then + begin + FFlatMenuStyle := Value; + UpdateVariables; + Notify; + end; +end; + +procedure TTBXThemeManager.UpdateVariables; +var + DC: HDC; + SysFlatMenus: Boolean; +begin + TBXUtils.RecreateStock; + + DC := GetDC(0); + try + TBXLoColor := GetDeviceCaps(DC, BITSPIXEL) * GetDeviceCaps(DC, PLANES) < 12; + TBXHiContrast := GetSysColor(COLOR_BTNFACE) = $00FFFFFF; + TBXNoBlending := TBXLoColor or TBXHiContrast; + finally + ReleaseDC(0, DC); + end; + + VisualStylesClose; + VisualStylesOpen; + + clToolbar := clBtnFace; + clToolbarText := clBtnText; + if USE_THEMES then + begin + GetThemeColor(TOOLBAR_THEME, 0, 0, TMT_FILLCOLOR, Cardinal(clToolbar)); + GetThemeColor(TOOLBAR_THEME, 0, 0, TMT_TEXTCOLOR, Cardinal(clToolbarText)); + end; + + SysFlatMenus := False; + if (Win32Platform = VER_PLATFORM_WIN32_NT) and + ((Win32MajorVersion > 5) or + ((Win32MajorVersion = 5) and (Win32MinorVersion >= 1))) then + begin + SystemParametersInfo(SPI_GETFLATMENU, 0, @SysFlatMenus, 0); + end; + + + if SysFlatMenus then // System indicates support for flat menus + begin + if FlatMenuStyle in [FMS_AUTOMATIC, FMS_ENABLED] then + begin + USE_FLATMENUS := True; + clPopup := clMenu; + clPopupText := clMenuText; + end + else + begin + USE_FLATMENUS := False; + clPopup := clToolbar; + clPopupText := clToolbarText; + end; + end + else + begin + if FlatMenuStyle = FMS_ENABLED then + begin + USE_FLATMENUS := True; + clPopup := clWindow; + clPopupText := clWindowText; + end + else + begin + USE_FLATMENUS := False; + clPopup := clMenu; + clPopupText := clMenuText; + end; + end; +end; + +procedure TTBXThemeManager.VisualStylesClose; + + procedure Close(var ATheme: THandle); + begin + if ATheme <> 0 then begin CloseThemeData(ATheme); ATheme := 0; end; + end; + +begin + if USE_THEMES then + begin + Close(BUTTON_THEME); + Close(SCROLLBAR_THEME); + Close(REBAR_THEME); + Close(TOOLBAR_THEME); + Close(WINDOW_THEME); + Close(COMBO_THEME); + Close(EXPLORERBAR_THEME); + Close(STATUSBAR_THEME); + Close(SPIN_THEME); + end; + FreeXPThemes; +end; + +procedure TTBXThemeManager.VisualStylesOpen; +begin + USE_THEMES := False; + if (Win32Platform = VER_PLATFORM_WIN32_NT) and ((Win32MajorVersion > 5) or + ((Win32MajorVersion = 5) and (Win32MinorVersion >= 1))) and EnableVisualStyles then + begin + InitXPThemes; + USE_THEMES := CanUseXPThemes; + try + BUTTON_THEME := OpenThemeData(FWindowHandle, 'BUTTON'); + SCROLLBAR_THEME := OpenThemeData(FWindowHandle, 'SCROLLBAR'); + REBAR_THEME := OpenThemeData(FWindowHandle, 'REBAR'); + TOOLBAR_THEME := OpenThemeData(FWindowHandle, 'TOOLBAR'); + WINDOW_THEME := OpenThemeData(FWindowHandle, 'WINDOW'); + COMBO_THEME := OpenThemeData(FWindowHandle, 'COMBOBOX'); + EXPLORERBAR_THEME := OpenThemeData(FWindowHandle, 'EXPLORERBAR'); + STATUSBAR_THEME := OpenThemeData(FWindowHandle, 'STATUS'); + SPIN_THEME := OpenThemeData(FWindowHandle, 'SPIN'); + except + VisualStylesClose; + end; + end; +end; + +procedure TTBXThemeManager.WndProc(var Message: TMessage); +const + ActiveFlags: array [Boolean] of Integer = (TSC_APPDEACTIVATE, TSC_APPACTIVATE); +begin + case Message.Msg of + WM_DISPLAYCHANGE, WM_SYSCOLORCHANGE, WM_THEMECHANGED: + begin + UpdateVariables; + ResetBrushedFillCache; + Notify; + end; + WM_ACTIVATEAPP: + Broadcast(TBX_SYSCOMMAND, ActiveFlags[Boolean(Message.WParam)], 0); + end; + with Message do Result := DefWindowProc(FWindowHandle, Msg, wParam, lParam); +end; + +initialization +if GetSysColorBrush(COLOR_HOTLIGHT) = 0 then clHotLight := clHighlight +else clHotLight := TColor($80000000 or 26); +Themes := nil; +ThemeManager := TTBXThemeManager.Create; + +finalization +ThemeManager.Free; +SetLength(Themes, 0); + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXThemes.pas.orig b/official/2.1.6+2.1.beta1/TBX/TBXThemes.pas.orig new file mode 100644 index 0000000..616f8dd --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXThemes.pas.orig @@ -0,0 +1,896 @@ +unit TBXThemes; + +// TBX Package +// Copyright 2001-2004 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// $Id: TBXThemes.pas 16 2004-05-26 02:02:55Z Alex@ZEISS $ + +interface + +{$I TB2Ver.inc} +{$I TBX.inc} + +uses + Windows, Messages, Classes, Forms, Graphics, ImgList; + +{ TBX_SYSCOMMAND message } +const + TBX_SYSCOMMAND = WM_USER + 312; + TSC_BEFOREVIEWCHANGE = 1; + TSC_VIEWCHANGE = 2; + TSC_AFTERVIEWCHANGE = 3; + TSC_APPACTIVATE = 4; + TSC_APPDEACTIVATE = 5; + +{ Integer Metric IDs } +const + TMI_SPLITBTN_ARROWWIDTH = 10; + TMI_DROPDOWN_ARROWWIDTH = 20; + TMI_DROPDOWN_ARROWMARGIN = 21; + TMI_MENU_IMGTEXTSPACE = 32; + TMI_MENU_LCAPTIONMARGIN = 33; + TMI_MENU_RCAPTIONMARGIN = 34; + TMI_MENU_SEPARATORSIZE = 35; + TMI_MENU_MDI_DW = 36; + TMI_MENU_MDI_DH = 37; + TMI_TLBR_SEPARATORSIZE = 50; + TMI_EDIT_FRAMEWIDTH = 60; + TMI_EDIT_TEXTMARGINHORZ = 61; + TMI_EDIT_TEXTMARGINVERT = 62; + TMI_EDIT_BTNWIDTH = 65; + TMI_EDIT_MENURIGHTINDENT = 66; + +{ Boolean Metric IDs } +const + TMB_OFFICEXPPOPUPALIGNMENT = 1; + TMB_EDITMENUFULLSELECT = 3; // highlights the full edit item + TMB_EDITHEIGHTEVEN = 4; // forces the height of the edit item to be even number (otherwise it will be odd) + TMB_PAINTDOCKBACKGROUND = 5; // docks are painted by the theme instead of having a uniform color + TMB_SOLIDTOOLBARNCAREA = 6; // no transparency in NC area of toolbars + TMB_SOLIDTOOLBARCLIENTAREA = 7; // no transparency in client area of toolbars + + TMB_SOLIDTOOLBARS = TMB_SOLIDTOOLBARNCAREA; // for compatibility only + +{ Margins Metric IDs} +const + MID_TOOLBARITEM = 1; + MID_MENUITEM = 2; + MID_STATUSPANE = 3; + +{ View types } +const + VT_UNKNOWN = $0; + VT_TOOLBAR = $01000; + VT_POPUP = $02000; + VT_DOCKPANEL = $04000; + VT_DOCKWINDOW = $08000; + VT_STATUSBAR = $10000; // technicaly, this is not a view + + { Toolbar view types } + TVT_FLOATING = $800; + TVT_RESIZABLE = $400; // valid only when floating + TVT_EMBEDDED = $200; // when the toolbar is not floating or docked + TVT_NORMALTOOLBAR = VT_TOOLBAR or $01; + TVT_MENUBAR = VT_TOOLBAR or $02; + TVT_TOOLWINDOW = VT_TOOLBAR or $04; + + { Popup view types } + PVT_POPUPMENU = VT_POPUP or $01; + PVT_LISTBOX = VT_POPUP or $02; + PVT_TOOLBOX = VT_POPUP or $04; + PVT_CHEVRONMENU = VT_POPUP or $08; + + { Dockable panel view types } + DPVT_FLOATING = $800; + DPVT_RESIZABLE = $400; + DPVT_NORMAL = VT_DOCKPANEL or $01; + + { Dockable window view types } + DWVT_FLOATING = $800; + DWVT_RESIZABLE = $400; + DWVT_NORMAL = VT_DOCKWINDOW or $01; + +{ Item types } +const + IT_TOOLBARBUTTON = 1; + IT_MENUITEM = 2; + +{ Item options (bit flags) } +const + IO_TOOLBARSTYLE = $01; + IO_SUBMENUITEM = $04; + IO_COMBO = $08; + IO_DESIGNING = $10; + IO_APPACTIVE = $20; // True when Application.Active = True + +{ Drag handle styles } +const + DHS_DOUBLE = 0; + DHS_NONE = 1; + DHS_SINGLE = 2; + +{ Caption/drag handle button states (bit flags) } +const + CDBS_VISIBLE = $1; + CDBS_HOT = $2; + CDBS_PRESSED = $4; + +{ Window info's RedrawPart (bit flags) } +const + WRP_BORDER = $1; + WRP_CAPTION = $2; + WRP_CLOSEBTN = $4; + +{ Popup shadow types } +const + PST_NONE = 0; // no popup shadows + PST_WINDOWSXP = 1; + PST_OFFICEXP = 2; + PST_WINDOWS2K = 3; + +{ Edit (ComboBox) button types } +const + EBT_DROPDOWN = 1; + EBT_SPIN = 2; + + { Edit (ComboBox) button states for EBT_DROPDOWN type (bit flags) } + EBDS_DISABLED = $1; + EBDS_HOT = $2; + EBDS_PRESSED = $4; + + { Edit (ComboBox) button states for EBT_SPIN type (bit flags) } + EBSS_DISABLED = $1; + EBSS_HOT = $2; + EBSS_UP = $4; + EBSS_DOWN = $8; + +{ Page scroll button types } +const + PSBT_UP = 1; + PSBT_DOWN = 2; + PSBT_LEFT = 3; + PSBT_RIGHT = 4; + +{ PaintFrameControl kinds } +const + PFC_CHECKBOX = 1; + PFC_RADIOBUTTON = 2; + +{ PaintFrameControl states } + PFS_CHECKED = $01; + PFS_MIXED = $02; + PFS_DISABLED = $04; + PFS_HOT = $08; + PFS_PUSHED = $10; + PFS_FOCUSED = $20; + +{ Item state flags } +const + ISF_DISABLED = $001; + ISF_HOT = $002; + ISF_PUSHED = $004; + ISF_SELECTED = $008; + + ISF_LOCATIONMASK = $F00; + ISF_TOOLBARCOLOR = $000; // for text and images painted in toolbars + ISF_MENUCOLOR = $100; // for text and images painted in popups and DkPanels + ISF_STATUSCOLOR = $200; // for text and images painted in status bars + +{ StatusBar parts } +const + SBP_BODY = 0; + SBP_PANE = 1; + SBP_LASTPANE = 2; + SBP_GRIPPER = 3; + +{ Dock positions } +const + DP_TOP = 1; + DP_BOTTOM = 2; + DP_LEFT = 3; + DP_RIGHT = 4; + +type + TTBXItemLayout = (tbxlAuto, tbxlGlyphLeft, tbxlGlyphTop); + TTBXMargins = record + LeftWidth: Integer; + RightWidth: Integer; + TopHeight: Integer; + BottomHeight: Integer; + end; + + TTBXHoverKind = (hkNone, hkKeyboardHover, hkMouseHover); + TTBXComboPart = (cpNone, cpCombo, cpSplitLeft, cpSplitRight); + TTBXItemInfo = record + ViewType: Integer; // VT_*, TVT_*, PVT_*, or DPVT_* constant + ItemOptions: Integer; // IO_* flags + Enabled: Boolean; + Pushed: Boolean; + HoverKind: TTBXHoverKind; + Selected: Boolean; + ImageShown: Boolean; + ImageWidth: Integer; + ImageHeight: Integer; + IsVertical: Boolean; + ComboPart: TTBXComboPart; + IsPopupParent: Boolean; // used in officexp theme + PopupMargin: Integer; + AppFlags: Integer; // reserved for extensions + AppData: Integer; + end; + + TTBXWindowInfo = record + ParentHandle: HWND; // handle of a parent floating window + WindowHandle: HWND; // handle of a toolbar or dockable panel + ViewType: Integer; // TVT_* or DPVT_* view types (loating) + ClientWidth: Integer; + ClientHeight: Integer; + ShowCaption: Boolean; + FloatingBorderSize: TPoint; + CloseButtonState: Integer; // CDBS_* state flags + RedrawPart: Integer; // WRP_ constants + Caption: PChar; + EffectiveColor: TColor; + Active: Boolean; + AppFlags: Integer; // reserved for extensions + AppData: Integer; + end; + + TTBXPopupInfo = record + WindowHandle: HWND; + ViewType: Integer; + ParentRect: TRect; + BorderSize: TPoint; + AppFlags: Integer; // reserved for extensions + AppData: Integer; + end; + + TTBXToolbarInfo = record + WindowHandle: HWND; + ViewType: Integer; // TVT_* view types (docked) + IsVertical: Boolean; + AllowDrag: Boolean; + BorderStyle: TBorderStyle; + BorderSize: TPoint; + ClientWidth: Integer; + ClientHeight: Integer; + DragHandleStyle: Integer; + CloseButtonState: Integer; // CDBS_* state flags + Caption: PChar; + EffectiveColor: TColor; + AppFlags: Integer; // reserved for extensions + AppData: Integer; + end; + + TTBXDockPanelInfo = record + WindowHandle: HWND; + ViewType: Integer; // DPVT_* view types (docked) + IsVertical: Boolean; + AllowDrag: Boolean; + BorderStyle: TBorderStyle; + BorderSize: TPoint; + ClientWidth: Integer; + ClientHeight: Integer; + ShowCaption: Boolean; + CloseButtonState: Integer; + Caption: PChar; + EffectiveColor: TColor; + AppFlags: Integer; // reserved for extensions + AppData: Integer; + end; + + TTBXEditBtnInfo = record + ButtonType: Integer; // EBT_* button type + ButtonState: Integer; + end; + + TTBXEditInfo = record + LeftBtnWidth: Integer; + RightBtnWidth: Integer; + LeftBtnInfo: TTBXEditBtnInfo; // valid only if LeftBtnWidth > 0 + RightBtnInfo: TTBXEditBtnInfo; // valid only if RightBtnWidth > 0 + end; + + TTBXTheme = class + private + FName: string; + FTag: Integer; + public + constructor Create(const AName: string); virtual; + + { Margins, color, etc. } + function GetImageOffset(Canvas: TCanvas; const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList): TPoint; virtual; abstract; + function GetItemColor(const ItemInfo: TTBXItemInfo): TColor; virtual; abstract; + function GetItemTextColor(const ItemInfo: TTBXItemInfo): TColor; virtual; abstract; + function GetItemImageBackground(const ItemInfo: TTBXItemInfo): TColor; virtual; abstract; + procedure GetMargins(MarginID: Integer; out Margins: TTBXMargins); virtual; abstract; + function GetPopupShadowType: Integer; virtual; abstract; // returns one of the PST_ constants + procedure GetViewBorder(ViewType: Integer; out Border: TPoint); virtual; abstract; + function GetViewColor(ViewType: Integer): TColor; virtual; abstract; + procedure GetViewMargins(ViewType: Integer; out Margins: TTBXMargins); virtual; abstract; + + { General painting routines } + procedure PaintBackgnd(Canvas: TCanvas; const ADockRect, ARect, AClipRect: TRect; AColor: TColor; Transparent: Boolean; AViewType: Integer); virtual; abstract; + procedure PaintButton(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); virtual; abstract; + procedure PaintCaption(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo; const ACaption: string; AFormat: Cardinal; Rotated: Boolean); virtual; abstract; + procedure PaintCheckMark(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); virtual; abstract; + procedure PaintChevron(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); virtual; abstract; + procedure PaintEditFrame(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo; const EditInfo: TTBXEditInfo); virtual; abstract; + procedure PaintEditButton(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo; ButtonInfo: TTBXEditBtnInfo); virtual; abstract; + procedure PaintDock(Canvas: TCanvas; const ClientRect, DockRect: TRect; DockPosition: Integer); virtual; abstract; + procedure PaintDockPanelNCArea(Canvas: TCanvas; R: TRect; const DockPanelInfo: TTBXDockPanelInfo); virtual; abstract; + procedure PaintDropDownArrow(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); virtual; abstract; + procedure PaintFloatingBorder(Canvas: TCanvas; const ARect: TRect; const WindowInfo: TTBXWindowInfo); virtual; abstract; + procedure PaintFrame(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); virtual; abstract; + procedure PaintImage(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList; ImageIndex: Integer); virtual; abstract; + procedure PaintMDIButton(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo; ButtonKind: Cardinal); virtual; abstract; + procedure PaintMenuItem(Canvas: TCanvas; const ARect: TRect; var ItemInfo: TTBXItemInfo); virtual; abstract; + procedure PaintMenuItemFrame(Canvas: TCanvas; const ARect: TRect; const ItemInfo: TTBXItemInfo); virtual; abstract; + procedure PaintPageScrollButton(Canvas: TCanvas; const ARect: TRect; ButtonType: Integer; Hot: Boolean); virtual; abstract; + procedure PaintPopupNCArea(Canvas: TCanvas; R: TRect; const PopupInfo: TTBXPopupInfo); virtual; abstract; + procedure PaintSeparator(Canvas: TCanvas; ARect: TRect; ItemInfo: TTBXItemInfo; Horizontal, LineSeparator: Boolean); virtual; abstract; + procedure PaintToolbarNCArea(Canvas: TCanvas; R: TRect; const WindowInfo: TTBXToolbarInfo); virtual; abstract; + procedure PaintFrameControl(Canvas: TCanvas; R: TRect; Kind, State: Integer; Params: Pointer); virtual; abstract; + procedure PaintStatusBar(Canvas: TCanvas; R: TRect; Part: Integer); virtual; abstract; + + { Integer metrics access } + function GetIntegerMetrics(Index: Integer): Integer; virtual; abstract; + property SplitBtnArrowWidth: Integer index TMI_SPLITBTN_ARROWWIDTH read GetIntegerMetrics; + property DropdownArrowWidth: Integer index TMI_DROPDOWN_ARROWWIDTH read GetIntegerMetrics; + property DropdownArrowMargin: Integer index TMI_DROPDOWN_ARROWMARGIN read GetIntegerMetrics; + property MenuImageTextSpace: Integer index TMI_MENU_IMGTEXTSPACE read GetIntegerMetrics; + property MenuLeftCaptionMargin: Integer index TMI_MENU_LCAPTIONMARGIN read GetIntegerMetrics; + property MenuRightCaptionMargin: Integer index TMI_MENU_RCAPTIONMARGIN read GetIntegerMetrics; + property MenuSeparatorSize: Integer index TMI_MENU_SEPARATORSIZE read GetIntegerMetrics; + property MenuMDIDW: Integer index TMI_MENU_MDI_DW read GetIntegerMetrics; + property MenuMDIDH: Integer index TMI_MENU_MDI_DH read GetIntegerMetrics; + property TlbrSeparatorSize: Integer index TMI_TLBR_SEPARATORSIZE read GetIntegerMetrics; + property EditFrameWidth: Integer index TMI_EDIT_FRAMEWIDTH read GetIntegerMetrics; + property EditTextMarginHorz: Integer index TMI_EDIT_TEXTMARGINHORZ read GetIntegerMetrics; + property EditTextMarginVert: Integer index TMI_EDIT_TEXTMARGINVERT read GetIntegerMetrics; + property EditBtnWidth: Integer index TMI_EDIT_BTNWIDTH read GetIntegerMetrics; + property EditMenuRightIndent: Integer index TMI_EDIT_MENURIGHTINDENT read GetIntegerMetrics; + + { Boolean metrics access } + function GetBooleanMetrics(Index: Integer): Boolean; virtual; abstract; + property OfficeXPPopupAlignment: Boolean index TMB_OFFICEXPPOPUPALIGNMENT read GetBooleanMetrics; + property EditMenuFullSelect: Boolean index TMB_EDITMENUFULLSELECT read GetBooleanMetrics; + property EditHeightEven: Boolean index TMB_EDITHEIGHTEVEN read GetBooleanMetrics; + property PaintDockBackground: Boolean index TMB_PAINTDOCKBACKGROUND read GetBooleanMetrics; + property SolidToolbarNCArea: Boolean index TMB_SOLIDTOOLBARNCAREA read GetBooleanMetrics; + property SolidToolbarClientArea: Boolean index TMB_SOLIDTOOLBARCLIENTAREA read GetBooleanMetrics; + + property Name: string read FName; + property Tag: Integer read FTag write FTag; + end; + + TTBXThemeClass = class of TTBXTheme; + +const +{ TBXSysParam Params } + TSP_FLATMENUSTYLE = 1; + TSP_XPVISUALSTYLE = 2; + +{ Flat menu styles } + FMS_AUTOMATIC = 0; + FMS_DISABLED = 1; + FMS_ENABLED = 2; + +{ XP visual styles} + XPVS_AUTOMATIC = 0; + XPVS_DISABLED = 2; + +procedure SetTBXSysParam(Param: Integer; Value: Integer); +function GetTBXSysParam(Param: Integer): Integer; + +procedure AddTBXSysChangeNotification(AObject: TObject); +procedure RemoveTBXSysChangeNotification(AObject: TObject); + +procedure RegisterTBXTheme(const AName: string; AThemeClass: TTBXThemeClass); +procedure UnregisterTBXTheme(const AName: string); +function IsTBXThemeAvailable(const AName: string): Boolean; +procedure GetAvailableTBXThemes(Strings: TStrings); + +function GetTBXTheme(const AName: string): TTBXTheme; +procedure ReleaseTBXTheme(var ATheme: TTBXTheme); + +{ Additional "system" variables - do not change } + +var + { Additional colors } + clHotLight: TColor; + clPopup: TColor; + clPopupText: TColor; + clToolbar: TColor; + clToolbarText: TColor; + + { Auxiliary flags corresponding to the system color scheme } + TBXLoColor: Boolean; + TBXHiContrast: Boolean; // this can me removed in future + TBXNoBlending: Boolean; // TBXNoColor or TBXHiContrast + + { Handles for Windows XP visual styles } + SCROLLBAR_THEME: THandle; + REBAR_THEME: THandle; + BUTTON_THEME: THandle; + TOOLBAR_THEME: THandle; + WINDOW_THEME: THandle; + COMBO_THEME: THandle; + EXPLORERBAR_THEME: THandle; + STATUSBAR_THEME: THandle; + SPIN_THEME: THandle; + +var + USE_FLATMENUS: Boolean; + USE_THEMES: Boolean; + +{ Misc. Functions } +{ Warning: These functions may be changed or relocated in future versions } + +function GetTBXCaptionRect(const WindowInfo: TTBXWindowInfo; AdjustForBorder, MinusCloseButton: Boolean): TRect; +function GetTBXCloseButtonRect(const WindowInfo: TTBXWindowInfo; AdjustForBorder: Boolean): TRect; +function GetTBXDockedCloseButtonRect(const ToolbarInfo: TTBXToolbarInfo): TRect; +function GetTBXDragHandleSize(const ToolbarInfo: TTBXToolbarInfo): Integer; + +implementation + +uses + SysUtils, TBXUtils, TBXUxThemes; + +const + SPI_GETFLATMENU = $1022; + +type + TThemeInfo = record + Name: ShortString; + ThemeClass: TTBXThemeClass; + ThemeInstance: TTBXTheme; + RefCount: Integer; + end; + +var + Themes: array of TThemeInfo; + +{ TTBXThemeManager } + +type + TTBXThemeManager = class + private + FEnableVisualStyles: Boolean; + FFlatMenuStyle: Integer; + FNotifies: TList; + FWindowHandle: HWND; + procedure SetEnableVisualStyles(Value: Boolean); + procedure SetFlatMenuStyle(Value: Integer); + protected + procedure VisualStylesClose; + procedure VisualStylesOpen; + procedure UpdateVariables; + procedure WndProc(var Message: TMessage); + public + constructor Create; + destructor Destroy; override; + function Broadcast(Msg: Cardinal; Param1, Param2: Integer): Integer; + procedure Notify; + procedure AddNotification(AObject: TObject); + procedure RemoveNotification(AObject: TObject); + property EnableVisualStyles: Boolean read FEnableVisualStyles write SetEnableVisualStyles; + property FlatMenuStyle: Integer read FFlatMenuStyle write SetFlatMenuStyle; + end; + +var + ThemeManager: TTBXThemeManager; + +procedure SetTBXSysParam(Param: Integer; Value: Integer); +begin + case Param of + TSP_FLATMENUSTYLE: ThemeManager.FlatMenuStyle := Value; + TSP_XPVISUALSTYLE: ThemeManager.EnableVisualStyles := (Value = XPVS_AUTOMATIC); + end; +end; + +function GetTBXSysParam(Param: Integer): Integer; +const + CXPVStyles: array [Boolean] of Integer = (XPVS_DISABLED, XPVS_AUTOMATIC); +begin + Assert(ThemeManager <> nil); + case Param of + TSP_FLATMENUSTYLE: Result := ThemeManager.FlatMenuStyle; + TSP_XPVISUALSTYLE: Result := CXPVStyles[ThemeManager.EnableVisualStyles]; + else + Result := -1; + end; +end; + +procedure AddTBXSysChangeNotification(AObject: TObject); +begin + ThemeManager.AddNotification(AObject); +end; + +procedure RemoveTBXSysChangeNotification(AObject: TObject); +begin + ThemeManager.RemoveNotification(AObject); +end; + +function FindTBXTheme(const AName: string): Integer; +begin + for Result := 0 to Length(Themes) - 1 do + if CompareText(Themes[Result].Name, AName) = 0 then Exit; + Result := -1; +end; + +procedure RegisterTBXTheme(const AName: string; AThemeClass: TTBXThemeClass); +var + Index: Integer; +begin + if (Length(AName) = 0) or (AThemeClass = nil) then + raise Exception.Create('Cannot register theme'); + Index := FindTBXTheme(AName); + if Index >= 0 then raise Exception.CreateFmt('Theme %s is already registered', [AName]); + Index := Length(Themes); + SetLength(Themes, Index + 1); + with Themes[Index] do + begin + Name := AName; + ThemeClass := AThemeClass; + ThemeInstance := nil; + RefCount := 0; + end; +end; + +procedure UnregisterTBXTheme(const AName: string); +var + Index, L: Integer; +begin + Index := FindTBXTheme(AName); + if Index < 0 then raise Exception.CreateFmt('Cannot unregister unknown theme %s', [AName]); + L := Length(Themes); + if Index < L - 1 then + Move(Themes[Index + 1], Themes[Index], SizeOf(TThemeInfo) * (L - Index - 1)); + SetLength(Themes, L - 1); +end; + +function IsTBXThemeAvailable(const AName: string): Boolean; +begin + Result := FindTBXTheme(AName) >= 0; +end; + +procedure GetAvailableTBXThemes(Strings: TStrings); +var + I: Integer; +begin + Assert(Strings <> nil); + for I := 0 to Length(Themes) - 1 do + Strings.Add(Themes[I].Name); +end; + +function GetTBXTheme(const AName: string): TTBXTheme; +const + ActiveFlags: array [Boolean] of Integer = (TSC_APPDEACTIVATE, TSC_APPACTIVATE); +var + Index: Integer; + M: TMessage; +begin + Index := FindTBXTheme(AName); + if Index < 0 then raise Exception.Create('Unknown theme ' + AName); + with Themes[Index] do + begin + if RefCount = 0 then + begin + { Create a new instance and increase reference count } + Assert(ThemeInstance = nil); + ThemeInstance := ThemeClass.Create(Name); + M.Msg := TBX_SYSCOMMAND; + M.WParam := Integer(Application.Active); + M.LParam := 0; + M.Result := 0; + ThemeInstance.Dispatch(M); + end; + Inc(RefCount); + Result := ThemeInstance; + end; +end; + +procedure ReleaseTBXTheme(var ATheme: TTBXTheme); +var + Index: Integer; +begin + for Index := 0 to Length(Themes) - 1 do + with Themes[Index] do + if ThemeInstance = ATheme then + begin + if RefCount < 1 then raise Exception.Create('Cannot release theme ' + Themes[Index].Name); + Dec(RefCount); + if RefCount = 0 then + begin + ThemeInstance.Free; + ThemeInstance := nil; + ATheme := nil; + end; + Exit; + end; + raise Exception.Create('Cannot release theme'); +end; + +{ TTBXTheme } + +constructor TTBXTheme.Create(const AName: string); +begin + FName := AName; +end; + +{ Misc. Functions } + +function GetTBXCaptionRect(const WindowInfo: TTBXWindowInfo; + AdjustForBorder, MinusCloseButton: Boolean): TRect; +begin + Result := Rect(0, 0, WindowInfo.ClientWidth, GetSystemMetrics(SM_CYSMCAPTION) - 1); + if MinusCloseButton then Dec(Result.Right, Result.Bottom); + if AdjustForBorder then + with WindowInfo.FloatingBorderSize do OffsetRect(Result, X, Y); +end; + +function GetTBXCloseButtonRect(const WindowInfo: TTBXWindowInfo; + AdjustForBorder: Boolean): TRect; +begin + Result := GetTBXCaptionRect(WindowInfo, AdjustForBorder, False); + Result.Left := Result.Right - Result.Bottom + Result.Top; +end; + +function GetTBXDockedCloseButtonRect(const ToolbarInfo: TTBXToolbarInfo): TRect; +const + DragHandleSizes: array [Boolean, 0..2] of Integer = ((9, 0, 6), (14, 14, 14)); +var + X, Y, Z: Integer; +begin + with ToolbarInfo do + begin + Z := GetTBXDragHandleSize(ToolbarInfo) - 1; + if not IsVertical then + begin + X := BorderSize.X; + Y := BorderSize.Y; + end + else + begin + X := (ClientWidth + BorderSize.X) - Z; + Y := BorderSize.Y; + end; + Result := Bounds(X, Y, Z, Z); + end; +end; + +function GetTBXDragHandleSize(const ToolbarInfo: TTBXToolbarInfo): Integer; +const + DragHandleSizes: array [Boolean, 0..2] of Integer = ((9, 0, 6), (14, 14, 14)); +begin + with ToolbarInfo do + begin + if AllowDrag then + Result := DragHandleSizes[(CloseButtonState and CDBS_VISIBLE) <> 0, DragHandleStyle] + else + Result := 0; + end; +end; + +{ TTBXThemeManager } + +procedure TTBXThemeManager.AddNotification(AObject: TObject); +begin + FNotifies.Add(AObject); +end; + +function TTBXThemeManager.Broadcast(Msg: Cardinal; Param1, Param2: Integer): Integer; +var + I: Integer; + M: TMessage; +begin + if FNotifies.Count > 0 then + begin + M.Msg := Msg; + M.WParam := Param1; + M.LParam := Param2; + M.Result := 0; + for I := 0 to FNotifies.Count - 1 do TObject(FNotifies[I]).Dispatch(M); + Result := M.Result; + end + else Result := 0; +end; + +constructor TTBXThemeManager.Create; +begin + FEnableVisualStyles := True; + FFlatMenuStyle := FMS_AUTOMATIC; + FNotifies := TList.Create; + FWindowHandle := {$IFDEF JR_D6}Classes.{$ENDIF}AllocateHWnd(WndProc); + UpdateVariables; +end; + +destructor TTBXThemeManager.Destroy; +begin + VisualStylesClose; + {$IFDEF JR_D6}Classes.{$ENDIF}DeallocateHWnd(FWindowHandle); + FNotifies.Free; + VisualStylesClose; + inherited; +end; + +procedure TTBXThemeManager.Notify; +begin + if FNotifies.Count > 0 then + begin + Broadcast(TBX_SYSCOMMAND, TSC_BEFOREVIEWCHANGE, 0); + Broadcast(TBX_SYSCOMMAND, TSC_VIEWCHANGE, 0); + Broadcast(TBX_SYSCOMMAND, TSC_AFTERVIEWCHANGE, 0); + end; +end; + +procedure TTBXThemeManager.RemoveNotification(AObject: TObject); +begin + FNotifies.Remove(AObject); +end; + +procedure TTBXThemeManager.SetEnableVisualStyles(Value: Boolean); +begin + if Value <> FEnableVisualStyles then + begin + FEnableVisualStyles := Value; + UpdateVariables; + Notify; + end; +end; + +procedure TTBXThemeManager.SetFlatMenuStyle(Value: Integer); +begin + if Value <> FFlatMenuStyle then + begin + FFlatMenuStyle := Value; + UpdateVariables; + Notify; + end; +end; + +procedure TTBXThemeManager.UpdateVariables; +var + DC: HDC; + SysFlatMenus: Boolean; +begin + TBXUtils.RecreateStock; + + DC := GetDC(0); + try + TBXLoColor := GetDeviceCaps(DC, BITSPIXEL) * GetDeviceCaps(DC, PLANES) < 12; + TBXHiContrast := GetSysColor(COLOR_BTNFACE) = $00FFFFFF; + TBXNoBlending := TBXLoColor or TBXHiContrast; + finally + ReleaseDC(0, DC); + end; + + VisualStylesClose; + VisualStylesOpen; + + clToolbar := clBtnFace; + clToolbarText := clBtnText; + if USE_THEMES then + begin + GetThemeColor(TOOLBAR_THEME, 0, 0, TMT_FILLCOLOR, Cardinal(clToolbar)); + GetThemeColor(TOOLBAR_THEME, 0, 0, TMT_TEXTCOLOR, Cardinal(clToolbarText)); + end; + + SysFlatMenus := False; + if (Win32Platform = VER_PLATFORM_WIN32_NT) and + ((Win32MajorVersion > 5) or + ((Win32MajorVersion = 5) and (Win32MinorVersion >= 1))) then + begin + SystemParametersInfo(SPI_GETFLATMENU, 0, @SysFlatMenus, 0); + end; + + + if SysFlatMenus then // System indicates support for flat menus + begin + if FlatMenuStyle in [FMS_AUTOMATIC, FMS_ENABLED] then + begin + USE_FLATMENUS := True; + clPopup := clMenu; + clPopupText := clMenuText; + end + else + begin + USE_FLATMENUS := False; + clPopup := clToolbar; + clPopupText := clToolbarText; + end; + end + else + begin + if FlatMenuStyle = FMS_ENABLED then + begin + USE_FLATMENUS := True; + clPopup := clWindow; + clPopupText := clWindowText; + end + else + begin + USE_FLATMENUS := False; + clPopup := clMenu; + clPopupText := clMenuText; + end; + end; +end; + +procedure TTBXThemeManager.VisualStylesClose; + + procedure Close(var ATheme: THandle); + begin + if ATheme <> 0 then begin CloseThemeData(ATheme); ATheme := 0; end; + end; + +begin + if USE_THEMES then + begin + Close(BUTTON_THEME); + Close(SCROLLBAR_THEME); + Close(REBAR_THEME); + Close(TOOLBAR_THEME); + Close(WINDOW_THEME); + Close(COMBO_THEME); + Close(EXPLORERBAR_THEME); + Close(STATUSBAR_THEME); + Close(SPIN_THEME); + end; + FreeXPThemes; +end; + +procedure TTBXThemeManager.VisualStylesOpen; +begin + USE_THEMES := False; + if (Win32Platform = VER_PLATFORM_WIN32_NT) and ((Win32MajorVersion > 5) or + ((Win32MajorVersion = 5) and (Win32MinorVersion >= 1))) and EnableVisualStyles then + begin + InitXPThemes; + USE_THEMES := CanUseXPThemes; + try + BUTTON_THEME := OpenThemeData(FWindowHandle, 'BUTTON'); + SCROLLBAR_THEME := OpenThemeData(FWindowHandle, 'SCROLLBAR'); + REBAR_THEME := OpenThemeData(FWindowHandle, 'REBAR'); + TOOLBAR_THEME := OpenThemeData(FWindowHandle, 'TOOLBAR'); + WINDOW_THEME := OpenThemeData(FWindowHandle, 'WINDOW'); + COMBO_THEME := OpenThemeData(FWindowHandle, 'COMBOBOX'); + EXPLORERBAR_THEME := OpenThemeData(FWindowHandle, 'EXPLORERBAR'); + STATUSBAR_THEME := OpenThemeData(FWindowHandle, 'STATUS'); + SPIN_THEME := OpenThemeData(FWindowHandle, 'SPIN'); + except + VisualStylesClose; + end; + end; +end; + +procedure TTBXThemeManager.WndProc(var Message: TMessage); +const + ActiveFlags: array [Boolean] of Integer = (TSC_APPDEACTIVATE, TSC_APPACTIVATE); +begin + case Message.Msg of + WM_DISPLAYCHANGE, WM_SYSCOLORCHANGE, WM_THEMECHANGED: + begin + UpdateVariables; + ResetBrushedFillCache; + Notify; + end; + WM_ACTIVATEAPP: + Broadcast(TBX_SYSCOMMAND, ActiveFlags[Boolean(Message.WParam)], 0); + end; + with Message do Result := DefWindowProc(FWindowHandle, Msg, wParam, lParam); +end; + +initialization +if GetSysColorBrush(COLOR_HOTLIGHT) = 0 then clHotLight := clHighlight +else clHotLight := TColor($80000000 or 26); +Themes := nil; +ThemeManager := TTBXThemeManager.Create; + +finalization +ThemeManager.Free; +SetLength(Themes, 0); + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXToolPals.pas b/official/2.1.6+2.1.beta1/TBX/TBXToolPals.pas new file mode 100644 index 0000000..4dae0fa --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXToolPals.pas @@ -0,0 +1,986 @@ +unit TBXToolPals; + +// TBX Package +// Copyright 2001-2004 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// $Id: TBXToolPals.pas 7 2004-02-21 06:07:53Z $ + +interface + +uses + Windows, Messages, Classes, SysUtils, Controls, Forms, Graphics, TB2Item, TBX, + TBXThemes; + +{$I ..\..\Source\TB2Ver.inc} +{$I TBX.inc} + +type + TRowColCount = 1..100; + TTBXCustomToolPalette = class; + + TTPCalcSize = procedure(Sender: TTBXCustomToolPalette; Canvas: TCanvas; + var AWidth, AHeight: Integer) of object; + TTPGetCellVisible = procedure(Sender: TTBXCustomToolPalette; + ACol, ARow: Integer; var Visible: Boolean) of object; + TTPGetCellHint = procedure(Sender: TTBXCustomToolPalette; + ACol, ARow: Integer; var HintText: string) of object; + TTPDrawCellImage = procedure(Sender: TTBXCustomToolPalette; Canvas: TCanvas; + ARect: TRect; ACol, ARow: Integer; Selected, Hot, Enabled: Boolean) of object; + TTPCellClick = procedure(Sender: TTBXCustomToolPalette; + var ACol, ARow: Integer; var AllowChange: Boolean) of object; + TTBXToolPaletteOptions = set of (tpoCustomImages, tpoNoAutoSelect); + + TTBXCustomToolPalette = class(TTBXCustomItem) + private + FColCount: TRowColCount; + FPaletteOptions: TTBXToolPaletteOptions; + FRowCount: TRowColCount; + FSelectedCell: TPoint; + FOnCalcImageSize: TTPCalcSize; + FOnChange: TNotifyEvent; + FOnCellClick: TTPCellClick; + FOnDrawCellImage: TTPDrawCellImage; + FOnGetCellVisible: TTPGetCellVisible; + FOnGetCellHint: TTPGetCellHint; + procedure SetColCount(Value: TRowColCount); + procedure SetPaletteOptions(Value: TTBXToolPaletteOptions); + procedure SetRowCount(Value: TRowColCount); + procedure SetSelectedCell(Value: TPoint); + protected + procedure DoCalcCellSize(Canvas: TCanvas; var AWidth, AHeight: Integer); virtual; + procedure DoCalcImageSize(Canvas: TCanvas; var AWidth, AHeight: Integer); virtual; + function DoCellClick(var ACol, ARow: Integer): Boolean; virtual; + procedure DoChange; virtual; + procedure DoDrawCellImage(Canvas: TCanvas; const ARect: TRect; ACol, ARow: Integer; ItemInfo: TTBXItemInfo); virtual; + procedure DoGetCellVisible(ACol, ARow: Integer; var Visible: Boolean); virtual; + procedure DoGetHint(ACell: TPoint; var HintText: string); virtual; + function GetItemViewerClass(AView: TTBView): TTBItemViewerClass; override; + procedure HandleClickCell(ACol, ARow: Integer); virtual; + property ColCount: TRowColCount read FColCount write SetColCount default 1; + property PaletteOptions: TTBXToolPaletteOptions read FPaletteOptions write SetPaletteOptions; + property RowCount: TRowColCount read FRowCount write SetRowCount default 1; + property SelectedCell: TPoint read FSelectedCell write SetSelectedCell; + property OnChange: TNotifyEvent read FOnChange write FOnChange; + property OnCalcImageSize: TTPCalcSize read FOnCalcImageSize write FOnCalcImageSize; + property OnCellClick: TTPCellClick read FOnCellClick write FOnCellClick; + property OnDrawCellImage: TTPDrawCellImage read FOnDrawCellImage write FOnDrawCellImage; + property OnGetCellVisible: TTPGetCellVisible read FOnGetCellVisible write FOnGetCellVisible; + property OnGetCellHint: TTPGetCellHint read FOnGetCellHint write FOnGetCellHint; + public + constructor Create(AOwner: TComponent); override; + end; + + TTBXToolPalette = class(TTBXCustomToolPalette) + public + property SelectedCell; + published + property ColCount; + property HelpContext; + property Images; + property Options; + property PaletteOptions; + property RowCount; + property Stretch; + property Visible; + property OnChange; + property OnCalcImageSize; + property OnCellClick; + property OnDrawCellImage; + property OnGetCellHint; + property OnGetCellVisible; + end; + + TTBXToolViewer = class(TTBXItemViewer) + private + FCellHeight: Integer; + FCellWidth: Integer; + FColCount: Integer; + FRowCount: Integer; + FHotCell: TPoint; + protected + Indent: Integer; + MouseIsDown: Boolean; + procedure CalcCellSize(Canvas: TCanvas; var AWidth, AHeight: Integer); virtual; + procedure CalcImageSize(Canvas: TCanvas; var AWidth, AHeight: Integer); virtual; + procedure CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); override; + function GetImageIndex(Col, Row: Integer): Integer; + function GetCellAt(X, Y: Integer; out Col, Row: Integer): Boolean; + function GetCellRect(ClientAreaRect: TRect; Col, Row: Integer): TRect; virtual; + function GetHint(Col, Row: Integer): string; + procedure CMHintShow(var Message: TCMHintShow); message CM_HINTSHOW; + procedure DrawCell(Canvas: TCanvas; const CellRect: TRect; Col, Row: Integer; var ItemInfo: TTBXItemInfo); + procedure DrawCellImage(Canvas: TCanvas; const ARect: TRect; Col, Row: Integer; ItemInfo: TTBXItemInfo); virtual; + procedure Entering(OldSelected: TTBItemViewer); override; + procedure InvalidateCell(ACol, ARow: Integer); + function IsCellVisible(Cell: TPoint): Boolean; virtual; + procedure KeyDown(var Key: Word; Shift: TShiftState); override; + procedure MouseDown(Shift: TShiftState; X, Y: Integer;var MouseDownOnMenu: Boolean); override; + procedure MouseMove(X, Y: Integer); override; + procedure MouseUp(X, Y: Integer; MouseWasDownOnMenu: Boolean); override; + procedure Paint(const Canvas: TCanvas; const ClientAreaRect: TRect; IsHoverItem, IsPushed, UseDisabledShadow: Boolean); override; + property CellHeight: Integer read FCellHeight; + property CellWidth: Integer read FCellWidth; + property ColCount: Integer read FColCount; + property HotCell: TPoint read FHotCell; + property RowCount: Integer read FRowCount; + public + constructor Create(AView: TTBView; AItem: TTBCustomItem; AGroupLevel: Integer); override; + end; + + { TTBXCustomColorSet } + TTBXCustomColorSet = class; + TCSGetColorInfo = procedure(Sender: TTBXCustomColorSet; Col, Row: Integer; + var Color: TColor; var Name: string) of object; + + TTBXCustomColorSet = class(TComponent) + private + FPalettes: TList; + FColCount: Integer; + FRowCount: Integer; + FOnGetColorInfo: TCSGetColorInfo; + procedure SetColCount(Value: Integer); + procedure SetRowCount(Value: Integer); + protected + procedure UpdateSize(NewColCount, NewRowCount: Integer); virtual; + function ColorToString(Color: TColor): string; virtual; + procedure GetColorInfo(Col, Row: Integer; out Color: TColor; out ColorName: string); virtual; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function GetColor(Col, Row: Integer): TColor; + function GetName(Col, Row: Integer): string; + property ColCount: Integer read FColCount write SetColCount; + property RowCount: Integer read FRowCount write SetRowCount; + property OnGetColorInfo: TCSGetColorInfo read FOnGetColorInfo write FOnGetColorInfo; + end; + + TTBXColorSet = class(TTBXCustomColorSet) + published + property ColCount; + property RowCount; + property OnGetColorInfo; + end; + + TTBXColorPalette = class(TTBXCustomToolPalette) + private + FColor: TColor; + FColorSet: TTBXCustomColorSet; + procedure SetColorSet(Value: TTBXCustomColorSet); + procedure SetColor(Value: TColor); + protected + procedure DoCalcImageSize(Canvas: TCanvas; var AWidth, AHeight: Integer); override; + procedure DoChange; override; + procedure DoGetCellVisible(ACol, ARow: Integer; var Visible: Boolean); override; + procedure DoGetHint(ACell: TPoint; var HintText: string); override; + procedure DoDrawCellImage(Canvas: TCanvas; const ARect: TRect; ACol, ARow: Integer; ItemInfo: TTBXItemInfo); override; + function GetColorSet: TTBXCustomColorSet; + function GetCellColor(ACol, ARow: Integer): TColor; virtual; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + public + constructor Create(AOwner: TComponent); override; + function FindCell(AColor: TColor): TPoint; + function ColorToString(AColor: TColor): string; + published + property Color: TColor read FColor write SetColor default clNone; + property ColorSet: TTBXCustomColorSet read FColorSet write SetColorSet; + property HelpContext; + property InheritOptions; + property MaskOptions; + property Options default [tboShowHint]; + property PaletteOptions; + property Stretch; + property Visible; + property OnChange; + property OnCellClick; + property OnGetCellHint; + end; + +implementation + +uses ImgList, TBXUxThemes; + +var + DefaultColorSet: TTBXCustomColorSet; + +type + TTBViewAccess = class(TTBView); + +{ TTBXCustomToolPalette } + +constructor TTBXCustomToolPalette.Create(AOwner: TComponent); +begin + inherited; + FColCount := 1; + FRowCount := 1; + FSelectedCell.X := -1; +// Options := Options + [tboToolbarStyle]; +end; + +procedure TTBXCustomToolPalette.DoCalcCellSize(Canvas: TCanvas; var AWidth, AHeight: Integer); +begin +end; + +procedure TTBXCustomToolPalette.DoCalcImageSize(Canvas: TCanvas; var AWidth, AHeight: Integer); +begin + if Assigned(FOnCalcImageSize) then FOnCalcImageSize(Self, Canvas, AWidth, AHeight); +end; + +function TTBXCustomToolPalette.DoCellClick(var ACol, ARow: Integer): Boolean; +begin + Result := True; + if Assigned(FOnCellClick) then FOnCellClick(Self, ACol, ARow, Result); +end; + +procedure TTBXCustomToolPalette.DoChange; +begin + if Assigned(FOnChange) then FOnChange(Self); +end; + +procedure TTBXCustomToolPalette.DoDrawCellImage(Canvas: TCanvas; + const ARect: TRect; ACol, ARow: Integer; ItemInfo: TTBXItemInfo); +begin + if Assigned(FOnDrawCellImage) then + begin + FOnDrawCellImage(Self, Canvas, ARect, ACol, ARow, ItemInfo.Selected, + ItemInfo.HoverKind <> hkNone, ItemInfo.Enabled); + end; +end; + +procedure TTBXCustomToolPalette.DoGetCellVisible(ACol, ARow: Integer; var Visible: Boolean); +begin + if Assigned(FOnGetCellVisible) then FOnGetCellVisible(Self, ACol, ARow, Visible); +end; + +procedure TTBXCustomToolPalette.DoGetHint(ACell: TPoint; var HintText: string); +begin + if Assigned(FOnGetCellHint) then FOnGetCellHint(Self, ACell.X, ACell.Y, HintText); +end; + +function TTBXCustomToolPalette.GetItemViewerClass(AView: TTBView): TTBItemViewerClass; +begin + Result := TTBXToolViewer; +end; + +procedure TTBXCustomToolPalette.HandleClickCell(ACol, ARow: Integer); +begin + if DoCellClick(ACol, ARow) and not (tpoNoAutoSelect in PaletteOptions) then + SelectedCell := Point(ACol, ARow); +end; + +procedure TTBXCustomToolPalette.SetColCount(Value: TRowColCount); +begin + if FColCount <> Value then + begin + FColCount := Value; + Change(True); + end; +end; + +procedure TTBXCustomToolPalette.SetPaletteOptions(Value: TTBXToolPaletteOptions); +begin + if FPaletteOptions <> Value then + begin + FPaletteOptions := Value; + Change(True); + end; +end; + +procedure TTBXCustomToolPalette.SetRowCount(Value: TRowColCount); +begin + if FRowCount <> Value then + begin + FRowCount := Value; + Change(True); + end; +end; + +procedure TTBXCustomToolPalette.SetSelectedCell(Value: TPoint); +begin + FSelectedCell := Value; + Change(True); + DoChange; +end; + +{ TTBXToolViewer } + +procedure TTBXToolViewer.CalcCellSize(Canvas: TCanvas; var AWidth, AHeight: Integer); +begin + CalcImageSize(Canvas, AWidth, AHeight); + TTBXCustomToolPalette(Item).DoCalcCellSize(Canvas, AWidth, AHeight); + Inc(AWidth, 6); + Inc(AHeight, 6); +end; + +procedure TTBXToolViewer.CalcImageSize(Canvas: TCanvas; var AWidth, AHeight: Integer); +var + ImgList: TCustomImageList; +begin + ImgList := GetImageList; + if ImgList <> nil then + begin + AWidth := ImgList.Width; + AHeight := ImgList.Height; + end + else + begin + AWidth := 16; + AHeight := 16; + end; + TTBXCustomToolPalette(Item).DoCalcImageSize(Canvas, AWidth, AHeight); +end; + +procedure TTBXToolViewer.CalcSize(const Canvas: TCanvas; var AWidth, AHeight: Integer); +var + CellWidth, CellHeight: Integer; +begin + if not IsToolbarStyle then with CurrentTheme do + Indent := GetPopupMargin(Self) + MenuImageTextSpace + MenuLeftCaptionMargin - 3 + else + Indent := 0; + FColCount := TTBXCustomToolPalette(Item).ColCount; + FRowCount := TTBXCustomToolPalette(Item).RowCount; + CalcCellSize(Canvas, CellWidth, CellHeight); + AWidth := Indent + CellWidth * ColCount; + if not IsToolbarStyle then Inc(AWidth, CurrentTheme.MenuRightCaptionMargin); + AHeight := CellHeight * RowCount; + if AWidth < 8 then AWidth := 8; + if AHeight < 8 then AHeight := 8; +end; + +procedure TTBXToolViewer.CMHintShow(var Message: TCMHintShow); +var + Col, Row: Integer; +begin + with Message.HintInfo^ do + begin + if GetCellAt(CursorPos.X - BoundsRect.Left, CursorPos.Y - BoundsRect.Top, Col, Row) then + begin + CursorRect := GetCellRect(CursorRect, Col, Row); + HintStr := GetHint(Col, Row); + end + else HintStr := ''; + end; +end; + +constructor TTBXToolViewer.Create(AView: TTBView; AItem: TTBCustomItem; AGroupLevel: Integer); +begin + inherited; + FColCount := TTBXCustomToolPalette(AItem).ColCount; + FRowCount := TTBXCustomToolPalette(AItem).RowCount; +end; + +procedure TTBXToolViewer.DrawCell(Canvas: TCanvas; const CellRect: TRect; + Col, Row: Integer; var ItemInfo: TTBXItemInfo); +var + ImageWidth, ImageHeight: Integer; + R: TRect; +begin + CurrentTheme.PaintButton(Canvas, CellRect, ItemInfo); + CalcImageSize(Canvas, ImageWidth, ImageHeight); + R := Bounds((CellRect.Right + CellRect.Left - ImageWidth) div 2, + (CellRect.Top + CellRect.Bottom - ImageHeight) div 2, ImageWidth, ImageHeight); + DrawCellImage(Canvas, R, Col, Row, ItemInfo); +end; + +procedure TTBXToolViewer.DrawCellImage(Canvas: TCanvas; const ARect: TRect; + Col, Row: Integer; ItemInfo: TTBXItemInfo); +var + ImgIndex: Integer; + ImgList: TCustomImageList; +begin + if not (tpoCustomImages in TTBXCustomToolPalette(Item).PaletteOptions) then + begin + ImgIndex := GetImageIndex(Col, Row); + ImgList := GetImageList; + if (ImgList <> nil) and (ImgIndex >= 0) and (ImgIndex < ImgList.Count) then + CurrentTheme.PaintImage(Canvas, ARect, ItemInfo, ImgList, ImgIndex); + end; + TTBXCustomToolPalette(Item).DoDrawCellImage(Canvas, ARect, Col, Row, ItemInfo); +end; + +procedure TTBXToolViewer.Entering(OldSelected: TTBItemViewer); +begin + FHotCell := Point(-1, 0); + if (View is TTBXPopupView) and (OldSelected <> nil) then + begin + if OldSelected.Index > Index then + begin + FHotCell := Point(ColCount - 1, RowCount - 1); + while (FHotCell.X > 0) and not IsCellVisible(FHotCell) do Dec(FHotCell.X); + end + else if OldSelected.Index < Index then + FHotCell := Point(0, 0); + end; + inherited Entering(OldSelected); +end; + +function TTBXToolViewer.GetCellAt(X, Y: Integer; out Col, Row: Integer): Boolean; +begin + { Returns true if there is a cell at (X,Y) point } + if (CellWidth = 0) or (CellHeight = 0) then + begin + Col := 0; + Row := 0; + end + else if not TTBXCustomToolPalette(Item).Stretch then + begin + Col := (X - Indent) div CellWidth; + Row := Y div CellHeight; + end + else + begin + Col := (X - Indent) * ColCount div (BoundsRect.Right - BoundsRect.Left); + Row := Y * RowCount div (BoundsRect.Bottom - BoundsRect.Top); + end; + Result := IsCellVisible(Point(Col, Row)); +end; + +function TTBXToolViewer.GetCellRect(ClientAreaRect: TRect; Col, Row: Integer): TRect; +var + W, H: Integer; +begin + with ClientAreaRect do + if not TTBXCustomToolPalette(Item).Stretch then + begin + Result := Bounds(Left + Indent + Col * CellWidth, Top + Row * CellHeight, CellWidth, CellHeight) + end + else + begin + W := Right - Left; + H := Bottom - Top; + Result.Left := Left + Indent + W * Col div ColCount; + Result.Top := Top + H * Row div RowCount; + Result.Right := Left + W * (Col + 1) div ColCount; + Result.Bottom := Top + H * (Row + 1) div RowCount; + end; +end; + +function TTBXToolViewer.GetHint(Col, Row: Integer): string; +begin + Result := ''; + TTBXCustomToolPalette(Item).DoGetHint(Point(Col, Row), Result); +end; + +function TTBXToolViewer.GetImageIndex(Col, Row: Integer): Integer; +begin + Result := Col + Row * ColCount; +end; + +procedure TTBXToolViewer.InvalidateCell(ACol, ARow: Integer); +var + R: TRect; +begin + R := GetCellRect(BoundsRect, ACol, ARow); + InvalidateRect(View.Window.Handle, @R, False); +end; + +function TTBXToolViewer.IsCellVisible(Cell: TPoint): Boolean; +var + ImgList: TCustomImageList; +begin + Result := (Cell.X >= 0) and (Cell.Y >= 0) and (Cell.X < ColCount) and (Cell.Y < RowCount); + if Result then + begin + if not (tpoCustomImages in TTBXCustomToolPalette(Item).PaletteOptions) then + begin + ImgList := GetImageList; + if ImgList <> nil then Result := (Cell.X + Cell.Y * ColCount) < ImgList.Count; + end; + TTBXCustomToolPalette(Item).DoGetCellVisible(Cell.X, Cell.Y, Result); + end; +end; + +procedure TTBXToolViewer.KeyDown(var Key: Word; Shift: TShiftState); +var + OldPos, Pos: TPoint; +begin + if IsCellVisible(HotCell) then OldPos := HotCell + else if IsCellVisible(TTBXCustomToolPalette(Item).SelectedCell) then + OldPos := TTBXCustomToolPalette(Item).SelectedCell + else OldPos.X := -1; + + if OldPos.X >= 0 then + begin + Pos := OldPos; + case Key of + VK_LEFT: + begin + Dec(Pos.X); + if Pos.X < 0 then + begin + Pos.X := ColCount - 1; + Dec(Pos.Y); + end; + end; + VK_UP: Dec(Pos.Y); + VK_RIGHT: + begin + Inc(Pos.X); + if Pos.X >= ColCount then + begin + Pos.X := 0; + Inc(Pos.Y); + end; + end; + VK_DOWN: Inc(Pos.Y); + VK_PRIOR: Pos.Y := 0; + VK_NEXT: Pos.Y := RowCount - 1; + VK_HOME: Pos.X := 0; + VK_END: Pos.Y := ColCount - 1; + VK_RETURN: + if IsCellVisible(HotCell) then + begin + TTBXCustomToolPalette(Item).HandleClickCell(HotCell.X, HotCell.Y); + Exit; + end; + else + inherited; + Exit; + end; + end + else + begin + OldPos := Point(-1, 0); + Pos := Point(0, 0); + end; + + if ((OldPos.X <> Pos.X) or (OldPos.Y <> Pos.Y)) and IsCellVisible(Pos) then + begin + Key := 0; + FHotCell := Pos; + TTBXCustomToolPalette(Item).Change(False); + end; +end; + +procedure TTBXToolViewer.MouseDown(Shift: TShiftState; X, Y: Integer; var MouseDownOnMenu: Boolean); +begin + MouseIsDown := True; + MouseMove(X, Y); + inherited; + View.SetCapture; +end; + +procedure TTBXToolViewer.MouseMove(X, Y: Integer); +var + OldHotCell: TPoint; +begin + OldHotCell := HotCell; + if not GetCellAt(X, Y, FHotCell.X, FHotCell.Y) then FHotCell := Point(-1, 0); + if (HotCell.X <> OldHotCell.X) or (HotCell.Y <> OldHotCell.Y) then + begin + with TTBXCustomToolPalette(Item) do + begin + if Show and not IsRectEmpty(BoundsRect) and + not (Item is TTBControlItem) then + begin + Include(State, tbisInvalidated); + InvalidateCell(OldHotCell.X, OldHotCell.Y); + InvalidateCell(HotCell.X, HotCell.Y); + end; + end; + end; +end; + +procedure TTBXToolViewer.MouseUp(X, Y: Integer; MouseWasDownOnMenu: Boolean); +var + Col, Row: Integer; + DAD: TTBDoneActionData; +begin + MouseIsDown := False; + if GetCellAt(X, Y, Col, Row) then + TTBXCustomToolPalette(Item).HandleClickCell(Col, Row); + DAD := TTBViewAccess(TTBViewAccess(View).GetRootView).DoneActionData; + DAD.ClickItem := Item; + DAD.DoneAction := tbdaClickItem; + DAD.Sound := True; + TTBViewAccess(TTBViewAccess(View).GetRootView).DoneActionData := DAD; + inherited; +end; + +procedure TTBXToolViewer.Paint(const Canvas: TCanvas; const ClientAreaRect: TRect; + IsHoverItem, IsPushed, UseDisabledShadow: Boolean); +const + CDesigning: array [Boolean] of Integer = (0, IO_DESIGNING); +var + I, J: Integer; + ItemInfo: TTBXItemInfo; + Hover: TTBXHoverKind; + R, CellRect: TRect; +begin + FillChar(ItemInfo, SizeOf(TTBXItemInfo), 0); + ItemInfo.ViewType := GetViewType(View); + ItemInfo.ItemOptions := CDesigning[csDesigning in Item.ComponentState]; + ItemInfo.Enabled := Item.Enabled or View.Customizing; + ItemInfo.Pushed := False; + ItemInfo.Selected := False; + ItemInfo.ImageShown := True; + with ItemInfo do CalcImageSize(Canvas, ImageWidth, ImageHeight); + ItemInfo.HoverKind := hkNone; + if not IsToolbarStyle then ItemInfo.PopupMargin := GetPopupMargin(Self); + + if not IsToolbarStyle then with CurrentTheme do + begin + R := ClientAreaRect; + CurrentTheme.PaintMenuItemFrame(Canvas, R, ItemInfo); + end; + + CalcCellSize(Canvas, FCellWidth, FCellHeight); + if IsHoverItem then + begin + if not ItemInfo.Enabled and not View.MouseOverSelected then Hover := hkKeyboardHover + else if ItemInfo.Enabled then Hover := hkMouseHover + else Hover := hkNone; + end + else + Hover := hkNone; + + for J := 0 to RowCount - 1 do + for I := 0 to ColCount - 1 do + begin + if IsCellVisible(Point(I, J)) then + begin + if (Hover <> hkNone) and (HotCell.X = I) and (HotCell.Y = J) then + begin + ItemInfo.HoverKind := Hover; + if IsPushed then ItemInfo.Pushed := True + end + else + begin + ItemInfo.HoverKind := hkNone; + ItemInfo.Pushed := False; + end; + with TTBXCustomToolPalette(Item) do + if (SelectedCell.X = I) and (SelectedCell.Y = J) then + ItemInfo.Selected := True + else + ItemInfo.Selected := False; + CellRect := GetCellRect(ClientAreaRect, I, J); + DrawCell(Canvas, CellRect, I, J, ItemInfo); + end; + end; +end; + +//----------------------------------------------------------------------------// + +{ TTBXCustomColorSet } + +constructor TTBXCustomColorSet.Create(AOwner: TComponent); +begin + inherited; + FPalettes := TList.Create; +end; + +destructor TTBXCustomColorSet.Destroy; +begin + FPalettes.Free; + inherited; +end; + +function TTBXCustomColorSet.GetColor(Col, Row: Integer): TColor; +var + Dummy: string; +begin + GetColorInfo(Col, Row, Result, Dummy); +end; + +procedure TTBXCustomColorSet.GetColorInfo(Col, Row: Integer; out Color: TColor; out ColorName: string); +begin + Color := clNone; + SetLength(ColorName, 0); + if Assigned(FOnGetColorInfo) then FOnGetColorInfo(Self, Col, Row, Color, ColorName); +end; + +function TTBXCustomColorSet.ColorToString(Color: TColor): string; +var + I, J: Integer; + C: TColor; + N: string; + + function GetRGB(C: TColor): TColor; + begin + Result := (C and $FF00) + C shr 16 + (C and $FF shl 16); + end; + +begin + if Color = clNone then Result := 'None' + else + begin + if Color < 0 then Color := GetSysColor(Color and $000000FF); + Color := Color and $00FFFFFF; + + for J := 0 to RowCount - 1 do + for I := 0 to ColCount - 1 do + begin + GetColorInfo(I, J, C, N); + if C <> clNone then + begin + if C < 0 then C := GetSysColor(C and $000000FF); + C := C and $00FFFFFF; + if C = Color then + begin + Result := N; + if Length(N) = 0 then Result := '#' + IntToHex(GetRGB(Color), 6); + Exit; + end + end; + end; + + Result := '#' + IntToHex(GetRGB(Color), 6); + end; +end; + +function TTBXCustomColorSet.GetName(Col, Row: Integer): string; +var + Dummy: TColor; +begin + GetColorInfo(Col, Row, Dummy, Result); +end; + +procedure TTBXCustomColorSet.SetColCount(Value: Integer); +begin + UpdateSize(Value, RowCount); +end; + +procedure TTBXCustomColorSet.SetRowCount(Value: Integer); +begin + UpdateSize(ColCount, Value); +end; + +procedure TTBXCustomColorSet.UpdateSize(NewColCount, NewRowCount: Integer); +var + I: Integer; +begin + FColCount := NewColCount; + FRowCount := NewRowCount; + for I := 0 to FPalettes.Count - 1 do + with TTBXColorPalette(FPalettes[I]) do + begin + ColCount := Self.ColCount; + RowCount := Self.RowCount; + end; +end; + +//----------------------------------------------------------------------------// + +{ TTBXColorPalette } + +function TTBXColorPalette.ColorToString(AColor: TColor): string; +begin + Result := GetColorSet.ColorToString(AColor); +end; + +constructor TTBXColorPalette.Create(AOwner: TComponent); +begin + inherited; + ColCount := DefaultColorSet.ColCount; + RowCount := DefaultColorSet.RowCount; + Options := Options + [tboShowHint]; + FColor := clNone; + PaletteOptions := PaletteOptions + [tpoCustomImages]; +end; + +procedure TTBXColorPalette.DoCalcImageSize(Canvas: TCanvas; var AWidth, AHeight: Integer); +begin + AWidth := 12; + AHeight := 12; +end; + +procedure TTBXColorPalette.DoChange; +begin + if SelectedCell.X >= 0 then + FColor := GetCellColor(SelectedCell.X, SelectedCell.Y); + inherited; +end; + +procedure TTBXColorPalette.DoDrawCellImage(Canvas: TCanvas; + const ARect: TRect; ACol, ARow: Integer; ItemInfo: TTBXItemInfo); +var + R: TRect; +begin + R := ARect; + Canvas.Brush.Color := clBtnShadow; + Canvas.FrameRect(R); + InflateRect(R, -1, -1); + if ItemInfo.Enabled then + begin + Canvas.Brush.Color := GetCellColor(ACol, ARow); + Canvas.FillRect(R); + end; +end; + +procedure TTBXColorPalette.DoGetCellVisible(ACol, ARow: Integer; var Visible: Boolean); +begin + Visible := GetCellColor(ACol, ARow) <> clNone; +end; + +procedure TTBXColorPalette.DoGetHint(ACell: TPoint; var HintText: string); +begin + HintText := GetColorSet.GetName(ACell.X, ACell.Y); +end; + +function TTBXColorPalette.FindCell(AColor: TColor): TPoint; +var + I, J: Integer; + C: TColor; +begin + if AColor <> clNone then AColor := ColorToRGB(AColor); + for J := 0 to RowCount - 1 do + for I := 0 to ColCount - 1 do + begin + C := GetCellColor(I, J); + if C <> clNone then C := ColorToRGB(C); + if C = AColor then + begin + Result.X := I; + Result.Y := J; + Exit; + end; + end; + Result.X := -1; + Result.Y := 0; +end; + +function TTBXColorPalette.GetCellColor(ACol, ARow: Integer): TColor; +begin + Result := GetColorSet.GetColor(ACol, ARow); +end; + +function TTBXColorPalette.GetColorSet: TTBXCustomColorSet; +begin + if FColorSet = nil then Result := DefaultColorSet + else Result := FColorSet; +end; + +procedure TTBXColorPalette.Notification(AComponent: TComponent; Operation: TOperation); +begin + inherited; + if (AComponent = FColorSet) and (Operation = opRemove) then ColorSet := nil; +end; + +procedure TTBXColorPalette.SetColor(Value: TColor); +begin + FColor := Value; + SelectedCell := FindCell(Value); +end; + +procedure TTBXColorPalette.SetColorSet(Value: TTBXCustomColorSet); +begin + if FColorSet <> Value then + begin + if Assigned(FColorSet) then FColorSet.FPalettes.Remove(Self); + FColorSet := Value; + if Assigned(Value) then + begin + Value.FreeNotification(Self); + Value.FPalettes.Add(Self); + ColCount := Value.ColCount; + RowCount := Value.RowCount; + end + else + begin + ColCount := DefaultColorSet.ColCount; + RowCount := DefaultColorSet.RowCount; + end; + Change(True); + end; +end; + +{ TTBXDefaultColorSet } + +type + TTBXDefaultColorSet = class (TTBXCustomColorSet) + protected + procedure GetColorInfo(Col, Row: Integer; out Color: TColor; out ColorName: string); override; + public + constructor Create(AOwner: TComponent); override; + end; + +procedure TTBXDefaultColorSet.GetColorInfo(Col, Row: Integer; out Color: TColor; out ColorName: string); + + procedure Clr(const AName: string; AColor: TColor); + begin + Color := AColor; + ColorName := AName; + end; + +begin + Color := clNone; + Name := ''; + case Row of + 0: + case Col of + 0: Clr('Black', $000000); + 1: Clr('Brown', $003399); + 2: Clr('Olive Green', $003333); + 3: Clr('Dark Green', $003300); + 4: Clr('Dark Teal', $663300); + 5: Clr('Dark blue', $800000); + 6: Clr('Indigo', $993333); + 7: Clr('Gray-80%', $333333); + end; + + 1: + case Col of + 0: Clr('Dark Red', $000080); + 1: Clr('Orange', $0066FF); + 2: Clr('Dark Yellow', $008080); + 3: Clr('Green', $008000); + 4: Clr('Teal', $808000); + 5: Clr('Blue', $FF0000); + 6: Clr('Blue-Gray', $996666); + 7: Clr('Gray-50%', $808080); + end; + + 2: + case Col of + 0: Clr('Red', $0000FF); + 1: Clr('Light Orange', $0099FF); + 2: Clr('Lime', $00CC99); + 3: Clr('Sea Green', $669933); + 4: Clr('Aqua', $CCCC33); + 5: Clr('Light Blue', $FF6633); + 6: Clr('Violet', $800080); + 7: Clr('Gray-40%', $969696); + end; + + 3: + case Col of + 0: Clr('Pink', $FF00FF); + 1: Clr('Gold', $00CCFF); + 2: Clr('Yellow', $00FFFF); + 3: Clr('Bright Green', $00FF00); + 4: Clr('Turquoise', $FFFF00); + 5: Clr('Sky Blue', $FFCC00); + 6: Clr('Plum', $663399); + 7: Clr('Gray-25%', $C0C0C0); + end; + + 4: + case Col of + 0: Clr('Rose', $CC99FF); + 1: Clr('Tan', $99CCFF); + 2: Clr('Light Yellow', $99FFFF); + 3: Clr('Light Green', $CCFFCC); + 4: Clr('Light Turquoise', $FFFFCC); + 5: Clr('Pale Blue', $FFCC99); + 6: Clr('Lavender', $FF99CC); + 7: Clr('White', $FFFFFF); + end; + end; +end; + +constructor TTBXDefaultColorSet.Create(AOwner: TComponent); +begin + inherited; + FColCount := 8; + FRowCount := 5; +end; + +initialization + DefaultColorSet := TTBXDefaultColorSet.Create(nil); + +finalization + DefaultColorSet.Free; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXUtils.pas b/official/2.1.6+2.1.beta1/TBX/TBXUtils.pas new file mode 100644 index 0000000..01f0601 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXUtils.pas @@ -0,0 +1,2329 @@ +unit TBXUtils; + +// TBX Package +// Copyright 2001-2004 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// $Id: TBXUtils.pas 11 2004-04-01 07:22:56Z Alex@ZEISS $ + +interface + +{$I ..\..\Source\TB2Ver.inc} +{$I TBX.inc} + +uses + Windows, Messages, Classes, SysUtils, Graphics, Controls, Forms, ImgList; + +{$IFDEF TBX_UNICODE} +function GetTextHeightW(DC: HDC): Integer; +function GetTextWidthW(DC: HDC; const S: WideString; StripAccelChar: Boolean): Integer; +procedure DrawRotatedTextW(DC: HDC; AText: WideString; const ARect: TRect; const AFormat: Cardinal); +function EscapeAmpersandsW(const S: WideString): WideString; +function FindAccelCharW(const S: WideString): WideChar; +function StripAccelCharsW(const S: WideString): WideString; +function StripTrailingPunctuationW(const S: WideString): WideString; +{$ENDIF} + +{$IFNDEF JR_D6} +function CheckWin32Version(AMajor, AMinor: Integer = 0): Boolean; {vb+} +{$ENDIF} +procedure GetRGB(C: TColor; out R, G, B: Integer); +function MixColors(C1, C2: TColor; W1: Integer): TColor; +function SameColors(C1, C2: TColor): Boolean; +function Lighten(C: TColor; Amount: Integer): TColor; +function NearestLighten(C: TColor; Amount: Integer): TColor; +function NearestMixedColor(C1, C2: TColor; W1: Integer): TColor; +function ColorIntensity(C: TColor): Integer; +function IsDarkColor(C: TColor; Threshold: Integer = 100): Boolean; +function Blend(C1, C2: TColor; W1: Integer): TColor; +procedure SetContrast(var Color: TColor; BkgndColor: TColor; Threshold: Integer); +procedure RGBtoHSL(RGB: TColor; out H, S, L : Single); +function HSLtoRGB(H, S, L: Single): TColor; +function GetBGR(C: TColorRef): Cardinal; + +{ A few drawing functions } +{ these functions recognize clNone value of TColor } + +procedure SetPixelEx(DC: HDC; X, Y: Integer; C: TColorRef; Alpha: Longword = $FF); +function CreatePenEx(Color: TColor): HPen; +function CreateBrushEx(Color: TColor): HBrush; +function CreateDitheredBrush(C1, C2: TColor): HBrush; +function FillRectEx(DC: HDC; const Rect: TRect; Color: TColor): Boolean; {$IFDEF COMPATIBLE_GFX}overload;{$ENDIF} +function FrameRectEx(DC: HDC; var Rect: TRect; Color: TColor; Adjust: Boolean): Boolean; {$IFDEF COMPATIBLE_GFX}overload;{$ENDIF} +procedure DrawLineEx(DC: HDC; X1, Y1, X2, Y2: Integer; Color: TColor); {$IFDEF COMPATIBLE_GFX}overload;{$ENDIF} +function PolyLineEx(DC: HDC; const Points: array of TPoint; Color: TColor): Boolean; +procedure PolygonEx(DC: HDC; const Points: array of TPoint; OutlineColor, FillColor: TColor); +procedure RoundRectEx(DC: HDC; Left, Top, Right, Bottom: Integer; EllipseWidth, EllipseHeight, OutlineColor, FillColor: TColor); overload; {vb+} +procedure RoundRectEx(DC: HDC; const R: TRect; EllipseWidth, EllipseHeight, OutlineColor, FillColor: TColor); overload; {vb+} +procedure DitherRect(DC: HDC; const R: TRect; C1, C2: TColor); {$IFDEF COMPATIBLE_GFX}overload;{$ENDIF} +procedure Frame3D(DC: HDC; var Rect: TRect; TopColor, BottomColor: TColor; Adjust: Boolean); {$IFDEF COMPATIBLE_GFX}overload;{$ENDIF} +procedure DrawDraggingOutline(DC: HDC; const NewRect, OldRect: TRect); + +{ Gradients } +type + TGradientKind = (gkHorz, gkVert); + +procedure GradFill(DC: HDC; ARect: TRect; ClrTopLeft, ClrBottomRight: TColor; Kind: TGradientKind); +procedure BrushedFill(DC: HDC; Origin: PPoint; ARect: TRect; Color: TColor; Roughness: Integer); +procedure ResetBrushedFillCache; + +{ drawing functions for compatibility with previous versions } +{$IFDEF COMPATIBLE_GFX} +function FillRectEx(Canvas: TCanvas; const Rect: TRect; Color: TColor): Boolean; overload; +function FrameRectEx(Canvas: TCanvas; var Rect: TRect; Color: TColor; Adjust: Boolean = False): Boolean; overload; +procedure DrawLineEx(Canvas: TCanvas; X1, Y1, X2, Y2: Integer; Color: TColor); overload; +procedure DitherRect(Canvas: TCanvas; const R: TRect; C1, C2: TColor); overload; +procedure Frame3D(Canvas: TCanvas; var Rect: TRect; TopColor, BottomColor: TColor); overload; +function FillRectEx2(DC: HDC; const Rect: TRect; Color: TColor): Boolean; deprecated; +function FrameRectEx2(DC: HDC; var Rect: TRect; Color: TColor; Adjust: Boolean = False): Boolean; deprecated; +{$ENDIF} + +{ alternatives to fillchar and move routines what work with 32-bit aligned memory blocks } +procedure FillLongword(var X; Count: Integer; Value: Longword); +procedure MoveLongword(const Source; var Dest; Count: Integer); + +{ extended icon painting routines } +procedure DrawTBXIcon(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; HiContrast: Boolean); +procedure BlendTBXIcon(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; Opacity: Byte); +procedure HighlightTBXIcon(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; HighlightColor: TColor; Amount: Byte); +procedure DrawTBXIconShadow(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; Density: Integer); +procedure DrawTBXIconFlatShadow(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; ShadowColor: TColor); +procedure DrawTBXIconFullShadow(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; ShadowColor: TColor); + +procedure DrawGlyph(DC: HDC; X, Y: Integer; ImageList: TCustomImageList; ImageIndex: Integer; Color: TColor); overload; +procedure DrawGlyph(DC: HDC; const R: TRect; ImageList: TCustomImageList; ImageIndex: Integer; Color: TColor); overload; +procedure DrawGlyph(DC: HDC; X, Y: Integer; const Bits; Color: TColor); overload; +procedure DrawGlyph(DC: HDC; const R: TRect; Width, Height: Integer; const Bits; Color: TColor); overload; + +function GetClientSizeEx(Control: TWinControl): TPoint; + +const + SHD_DENSE = 0; + SHD_LIGHT = 1; + +{ An additional declaration for D4 compiler } +type + PColor = ^TColor; + +{ Stock Objects } +var + StockBitmap1, StockBitmap2: TBitmap; + StockMonoBitmap, StockCompatibleBitmap: TBitmap; + SmCaptionFont: TFont; + +const + ROP_DSPDxax = $00E20746; + +{ Support for window shadows } +type + TShadowEdges = set of (seTopLeft, seBottomRight); + TShadowStyle = (ssFlat, ssLayered, ssAlphaBlend); + + TShadow = class(TCustomControl) + protected + FOpacity: Byte; + FBuffer: TBitmap; + FClearRect: TRect; + FEdges: TShadowEdges; + FStyle: TShadowStyle; + FSaveBits: Boolean; + procedure GradR(const R: TRect); + procedure GradB(const R: TRect); + procedure GradBR(const R: TRect); + procedure GradTR(const R: TRect); + procedure GradBL(const R: TRect); + procedure CreateParams(var Params: TCreateParams); override; + procedure FillBuffer; virtual; abstract; + procedure WMNCHitTest(var Message: TMessage); message WM_NCHITTEST; + procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND; + public + constructor Create(const Bounds: TRect; Opacity: Byte; LoColor: Boolean; Edges: TShadowEdges); reintroduce; + procedure Clear(const R: TRect); + procedure Render; + procedure Show(ParentHandle: HWND); + end; + + THorzShadow = class(TShadow) + protected + procedure FillBuffer; override; + end; + + TVertShadow = class(TShadow) + protected + procedure FillBuffer; override; + end; + + TShadows = class + private + FSaveBits: Boolean; + procedure SetSaveBits(Value: Boolean); + protected + V1: TShadow; + H1: TShadow; + V2: TShadow; + H2: TShadow; + V3: TShadow; + H3: TShadow; + public + constructor Create(R1, R2: TRect; Size: Integer; Opacity: Byte; LoColor: Boolean); + destructor Destroy; override; + procedure Show(ParentHandle: HWND); + property SaveBits: Boolean read FSaveBits write SetSaveBits; + end; + +procedure RecreateStock; + +type + PBlendFunction = ^TBlendFunction; + TBlendFunction = packed record + BlendOp: Byte; + BlendFlags: Byte; + SourceConstantAlpha: Byte; + AlphaFormat: Byte; + end; + + TUpdateLayeredWindow = function(hWnd : hWnd; hdcDst : hDC; pptDst : PPoint; + psize : PSize; hdcSrc : hDC; pptSrc : PPoint; crKey : TColorRef; + pblend : PBlendFunction; dwFlags : Integer): Integer; stdcall; + + TAlphaBlend = function(hdcDest: HDC; nXOriginDest, nYOriginDest, + nWidthDest, nHeightDest: Integer; hdcSrc: HDC; + nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc: Integer; + blendFunction: TBlendFunction): BOOL; stdcall; + + TGradientFill = function(Handle: HDC; pVertex: Pointer; dwNumVertex: DWORD; + pMesh: Pointer; dwNumMesh: DWORD; dwMode: DWORD): DWORD; stdcall; + +var + UpdateLayeredWindow: TUpdateLayeredWindow = nil; + AlphaBlend: TAlphaBlend = nil; + GradientFill: TGradientFill = nil; + + +implementation + +{$R-}{$Q-} + +uses TB2Common, Math; + + +{$IFDEF TBX_UNICODE} + +function GetTextHeightW(DC: HDC): Integer; +var + TextMetric: TTextMetricW; +begin + GetTextMetricsW(DC, TextMetric); + Result := TextMetric.tmHeight; +end; + +function GetTextWidthW(DC: HDC; const S: WideString; StripAccelChar: Boolean): Integer; +var + Size: TSize; + S2: WideString; +begin + if StripAccelChar then + begin + S2 := StripAccelCharsW(S); + GetTextExtentPoint32W(DC, PWideChar(S2), Length(S2), Size); + end + else GetTextExtentPoint32W(DC, PWideChar(S), Length(S), Size); + Result := Size.cx; +end; + +procedure DrawRotatedTextW(DC: HDC; AText: WideString; const ARect: TRect; const AFormat: Cardinal); +{ Like DrawText, but draws the text at a 270 degree angle. + The format flag this function respects are + DT_NOPREFIX, DT_HIDEPREFIX, DT_CENTER, DT_END_ELLIPSIS, DT_NOCLIP } +var + RotatedFont, SaveFont: HFONT; + TextMetrics: TTextMetricW; + X, Y, P, I, SU, FU, W: Integer; + SaveAlign: UINT; + Clip: Boolean; + + function GetSize(DC: HDC; const S: WideString): Integer; + var + Size: TSize; + begin + GetTextExtentPoint32W(DC, PWideChar(S), Length(S), Size); + Result := Size.cx; + end; + +begin + if Length(AText) = 0 then Exit; + + RotatedFont := CreateRotatedFont(DC); + SaveFont := SelectObject(DC, RotatedFont); + + GetTextMetricsW(DC, TextMetrics); + X := ARect.Left + ((ARect.Right - ARect.Left) - TextMetrics.tmHeight) div 2; + + Clip := AFormat and DT_NOCLIP = 0; + + { Find the index of the character that should be underlined. Delete '&' + characters from the string. Like DrawText, only the last prefixed character + will be underlined. } + P := 0; + I := 1; + if AFormat and DT_NOPREFIX = 0 then + while I <= Length(AText) do + begin + if AText[I] = '&' then + begin + Delete(AText, I, 1); + if PWideChar(AText)[I - 1] <> '&' then P := I; + end; + Inc(I); + end; + + if AFormat and DT_END_ELLIPSIS <> 0 then + begin + if (Length(AText) > 1) and (GetSize(DC, AText) > ARect.Bottom - ARect.Top) then + begin + W := ARect.Bottom - ARect.Top; + if W > 2 then + begin + Delete(AText, Length(AText), 1); + while (Length(AText) > 1) and (GetSize(DC, AText + '...') > W) do + Delete(AText, Length(AText), 1); + end + else AText := AText[1]; + if P > Length(AText) then P := 0; + AText := AText + '...'; + end; + end; + + if AFormat and DT_CENTER <> 0 then + Y := ARect.Top + ((ARect.Bottom - ARect.Top) - GetSize(DC, AText)) div 2 + else + Y := ARect.Top; + + if Clip then + begin + SaveDC(DC); + with ARect do IntersectClipRect(DC, Left, Top, Right, Bottom); + end; + + SaveAlign := SetTextAlign(DC, TA_BOTTOM); + TextOutW(DC, X, Y, PWideChar(AText), Length(AText)); + SetTextAlign(DC, SaveAlign); + + { Underline } + if (P > 0) and (AFormat and DT_HIDEPREFIX = 0) then + begin + SU := GetTextWidthW(DC, Copy(AText, 1, P - 1), False); + FU := SU + GetTextWidthW(DC, PWideChar(AText)[P - 1], False); + Inc(X, TextMetrics.tmDescent - 2); + DrawLineEx(DC, X, Y + SU, X, Y + FU, GetTextColor(DC)); + end; + + if Clip then RestoreDC(DC, -1); + + SelectObject(DC, SaveFont); + DeleteObject(RotatedFont); +end; + +function EscapeAmpersandsW(const S: WideString): WideString; +var + I: Integer; +begin + Result := S; + I := 1; + while I <= Length(Result) do + begin + if Result[I] = '&' then + begin + Inc(I); + Insert('&', Result, I); + end; + Inc(I); + end; +end; + +function FindAccelCharW(const S: WideString): WideChar; +var + PStart, P: PWideChar; +begin + { locate the last char with '&' prefix } + Result := #0; + if Length(S) > 0 then + begin + PStart := PWideChar(S); + P := PStart; + Inc(P, Length(S) - 2); + while P >= PStart do + begin + if P^ = '&' then + begin + if (P = PStart) or (PWideChar(Integer(P) - 2)^ <> '&') then + begin + Result := PWideChar(Integer(P) + 2)^; + Exit; + end + else Dec(P); + end; + Dec(P); + end; + end; +end; + +function StripAccelCharsW(const S: WideString): WideString; +var + I: Integer; +begin + Result := S; + I := 1; + while I <= Length(Result) do + begin + if Result[I] = '&' then + System.Delete(Result, I, 1); + Inc(I); + end; +end; + +function StripTrailingPunctuationW(const S: WideString): WideString; +var + L: Integer; +begin + Result := S; + L := Length(Result); + if (L > 1) and (Result[L] = ':') then SetLength(Result, L - 1) + else if (L > 3) and (Result[L - 2] = '.') and (Result[L - 1] = '.') and + (Result[L] = '.') then SetLength(Result, L - 3); +end; + +{$ENDIF} + +{$IFNDEF JR_D6} +function CheckWin32Version(AMajor, AMinor: Integer = 0): Boolean; {vb+} +begin + Result := (Win32MajorVersion > AMajor) or + ((Win32MajorVersion = AMajor) and (Win32MinorVersion >= AMinor)); +end; +{$ENDIF} + +type + PPoints = ^TPoints; + TPoints = array [0..0] of TPoint; + +const + WeightR: single = 0.764706; + WeightG: single = 1.52941; + WeightB: single = 0.254902; + +procedure GetRGB(C: TColor; out R, G, B: Integer); +begin + if Integer(C) < 0 then C := GetSysColor(C and $000000FF); + R := C and $FF; + G := C shr 8 and $FF; + B := C shr 16 and $FF; +end; + +function MixColors(C1, C2: TColor; W1: Integer): TColor; +var + W2: Cardinal; +begin + Assert(W1 in [0..255]); + W2 := W1 xor 255; + if Integer(C1) < 0 then C1 := GetSysColor(C1 and $000000FF); + if Integer(C2) < 0 then C2 := GetSysColor(C2 and $000000FF); + Result := Integer( + ((Cardinal(C1) and $FF00FF) * Cardinal(W1) + + (Cardinal(C2) and $FF00FF) * W2) and $FF00FF00 + + ((Cardinal(C1) and $00FF00) * Cardinal(W1) + + (Cardinal(C2) and $00FF00) * W2) and $00FF0000) shr 8; +end; + +function SameColors(C1, C2: TColor): Boolean; +begin + if C1 < 0 then C1 := GetSysColor(C1 and $000000FF); + if C2 < 0 then C2 := GetSysColor(C2 and $000000FF); + Result := C1 = C2; +end; + +function Lighten(C: TColor; Amount: Integer): TColor; +var + R, G, B: Integer; +begin + if C < 0 then C := GetSysColor(C and $000000FF); + R := C and $FF + Amount; + G := C shr 8 and $FF + Amount; + B := C shr 16 and $FF + Amount; + if R < 0 then R := 0 else if R > 255 then R := 255; + if G < 0 then G := 0 else if G > 255 then G := 255; + if B < 0 then B := 0 else if B > 255 then B := 255; + Result := R or (G shl 8) or (B shl 16); +end; + +function NearestLighten(C: TColor; Amount: Integer): TColor; +begin + Result := GetNearestColor(StockCompatibleBitmap.Canvas.Handle, Lighten(C, Amount)); +end; + +function NearestMixedColor(C1, C2: TColor; W1: Integer): TColor; +begin + Result := MixColors(C1, C2, W1); + Result := GetNearestColor(StockCompatibleBitmap.Canvas.Handle, Result); +end; + +function ColorIntensity(C: TColor): Integer; +begin + if C < 0 then C := GetSysColor(C and $FF); + Result := ((C shr 16 and $FF) * 30 + (C shr 8 and $FF) * 150 + (C and $FF) * 76) shr 8; +end; + +function IsDarkColor(C: TColor; Threshold: Integer = 100): Boolean; +begin + if C < 0 then C := GetSysColor(C and $FF); + Threshold := Threshold shl 8; + Result := ((C and $FF) * 76 + (C shr 8 and $FF) * 150 + (C shr 16 and $FF) * 30 ) < Threshold; +end; + +function Blend(C1, C2: TColor; W1: Integer): TColor; +var + W2, A1, A2, D, F, G: Integer; +begin + if C1 < 0 then C1 := GetSysColor(C1 and $FF); + if C2 < 0 then C2 := GetSysColor(C2 and $FF); + + if W1 >= 100 then D := 1000 + else D := 100; + + W2 := D - W1; + F := D div 2; + + A2 := C2 shr 16 * W2; + A1 := C1 shr 16 * W1; + G := (A1 + A2 + F) div D and $FF; + Result := G shl 16; + + A2 := (C2 shr 8 and $FF) * W2; + A1 := (C1 shr 8 and $FF) * W1; + G := (A1 + A2 + F) div D and $FF; + Result := Result or G shl 8; + + A2 := (C2 and $FF) * W2; + A1 := (C1 and $FF) * W1; + G := (A1 + A2 + F) div D and $FF; + Result := Result or G; +end; + +function ColorDistance(C1, C2: Integer): Single; +var + DR, DG, DB: Integer; +begin + DR := (C1 and $FF) - (C2 and $FF); + Result := Sqr(DR * WeightR); + DG := (C1 shr 8 and $FF) - (C2 shr 8 and $FF); + Result := Result + Sqr(DG * WeightG); + DB := (C1 shr 16) - (C2 shr 16); + Result := Result + Sqr(DB * WeightB); + Result := SqRt(Result); +end; + +function GetAdjustedThreshold(BkgndIntensity, Threshold: Single): Single; +begin + if BkgndIntensity < 220 then Result := (2 - BkgndIntensity / 220) * Threshold + else Result := Threshold; +end; + +function IsContrastEnough(AColor, ABkgndColor: Integer; + DoAdjustThreshold: Boolean; Threshold: Single): Boolean; +begin + if DoAdjustThreshold then + Threshold := GetAdjustedThreshold(ColorDistance(ABkgndColor, $000000), Threshold); + Result := ColorDistance(ABkgndColor, AColor) > Threshold; +end; + +procedure AdjustContrast(var AColor: Integer; ABkgndColor: Integer; Threshold: Single); +var + x, y, z: Single; + r, g, b: Single; + RR, GG, BB: Integer; + i1, i2, s, q, w: Single; + DoInvert: Boolean; +begin + i1 := ColorDistance(AColor, $000000); + i2 := ColorDistance(ABkgndColor, $000000); + Threshold := GetAdjustedThreshold(i2, Threshold); + + if i1 > i2 then DoInvert := i2 < 442 - Threshold + else DoInvert := i2 < Threshold; + + x := (ABkgndColor and $FF) * WeightR; + y := (ABkgndColor shr 8 and $FF) * WeightG; + z := (ABkgndColor shr 16) * WeightB; + + r := (AColor and $FF) * WeightR; + g := (AColor shr 8 and $FF) * WeightG; + b := (AColor shr 16) * WeightB; + + if DoInvert then + begin + r := 195 - r; + g := 390 - g; + b := 65 - b; + x := 195 - x; + y := 390 - y; + z := 65 - z; + end; + + s := Sqrt(Sqr(b) + Sqr(g) + Sqr(r)); + if s < 0.01 then s := 0.01; + + q := (r * x + g * y + b * z) / S; + + x := Q / S * r - x; + y := Q / S * g - y; + z := Q / S * b - z; + + w := Sqrt(Sqr(Threshold) - Sqr(x) - Sqr(y) - Sqr(z)); + + r := (q - w) * r / s; + g := (q - w) * g / s; + b := (q - w) * b / s; + + if DoInvert then + begin + r := 195 - r; + g := 390 - g; + b := 65 - b; + end; + + if r < 0 then r := 0 else if r > 195 then r := 195; + if g < 0 then g := 0 else if g > 390 then g := 390; + if b < 0 then b := 0 else if b > 65 then b := 65; + + RR := Trunc(r * (1 / WeightR) + 0.5); + GG := Trunc(g * (1 / WeightG) + 0.5); + BB := Trunc(b * (1 / WeightB) + 0.5); + + if RR > $FF then RR := $FF else if RR < 0 then RR := 0; + if GG > $FF then GG := $FF else if GG < 0 then GG := 0; + if BB > $FF then BB := $FF else if BB < 0 then BB := 0; + + AColor := (BB and $FF) shl 16 or (GG and $FF) shl 8 or (RR and $FF); +end; + +procedure SetContrast(var Color: TColor; BkgndColor: TColor; Threshold: Integer); +var + t: Single; +begin + if Color < 0 then Color := GetSysColor(Color and $FF); + if BkgndColor < 0 then BkgndColor := GetSysColor(BkgndColor and $FF); + t := Threshold; + if not IsContrastEnough(Color, BkgndColor, True, t) then + AdjustContrast(Integer(Color), BkgndColor, t); +end; + +procedure RGBtoHSL(RGB: TColor; out H, S, L : Single); +var + R, G, B, D, Cmax, Cmin: Single; +begin + if RGB < 0 then RGB := GetSysColor(RGB and $FF); + R := GetRValue(RGB) / 255; + G := GetGValue(RGB) / 255; + B := GetBValue(RGB) / 255; + Cmax := Max(R, Max(G, B)); + Cmin := Min(R, Min(G, B)); + L := (Cmax + Cmin) / 2; + + if Cmax = Cmin then + begin + H := 0; + S := 0 + end + else + begin + D := Cmax - Cmin; + if L < 0.5 then S := D / (Cmax + Cmin) + else S := D / (2 - Cmax - Cmin); + if R = Cmax then H := (G - B) / D + else + if G = Cmax then H := 2 + (B - R) / D + else H := 4 + (R - G) / D; + H := H / 6; + if H < 0 then H := H + 1 + end; +end; + +function HSLtoRGB(H, S, L: Single): TColor; +const + OneOverThree = 1 / 3; +var + M1, M2: Single; + R, G, B: Byte; + + function HueToColor(Hue: Single): Byte; + var + V: Double; + begin + Hue := Hue - Floor(Hue); + if 6 * Hue < 1 then V := M1 + (M2 - M1) * Hue * 6 + else if 2 * Hue < 1 then V := M2 + else if 3 * Hue < 2 then V := M1 + (M2 - M1) * (2 / 3 - Hue) * 6 + else V := M1; + Result := Round(255 * V); + end; + +begin + if S = 0 then + begin + R := Round(255 * L); + G := R; + B := R; + end + else + begin + if L <= 0.5 then M2 := L * (1 + S) + else M2 := L + S - L * S; + M1 := 2 * L - M2; + R := HueToColor(H + OneOverThree); + G := HueToColor(H); + B := HueToColor(H - OneOverThree) + end; + Result := RGB(R, G, B); +end; + +{ Drawing routines } + +function GetBGR(C: TColorRef): Cardinal; +asm + MOV ECX,EAX // this function swaps R and B bytes in ABGR + SHR EAX,16 + XCHG AL,CL + MOV AH,$00 // and writes $FF into A component + SHL EAX,16 + MOV AX,CX +end; + +procedure SetPixelEx(DC: HDC; X, Y: Integer; C: TColorRef; Alpha: Longword = $FF); +var + W2: Cardinal; + B: TColorRef; +begin + if Alpha <= 0 then Exit + else if Alpha >= 255 then SetPixelV(DC, X, Y, C) + else + begin + B := GetPixel(DC, X, Y); + if B <> CLR_INVALID then + begin + Inc(Alpha, Integer(Alpha > 127)); + W2 := 256 - Alpha; + B := + ((C and $FF00FF) * Alpha + (B and $FF00FF) * W2 + $007F007F) and $FF00FF00 + + ((C and $00FF00) * Alpha + (B and $00FF00) * W2 + $00007F00) and $00FF0000; + SetPixelV(DC, X, Y, B shr 8); + end; + end; +end; + +function CreatePenEx(Color: TColor): HPen; +begin + if Color = clNone then Result := CreatePen(PS_NULL, 1, 0) + else if Color < 0 then Result := CreatePen(PS_SOLID, 1, GetSysColor(Color and $000000FF)) + else Result := CreatePen(PS_SOLID, 1, Color); +end; + +function CreateBrushEx(Color: TColor): HBrush; +var + LB: TLogBrush; +begin + if Color = clNone then + begin + LB.lbStyle := BS_HOLLOW; + Result := CreateBrushIndirect(LB); + end + {else if Color < 0 then Result := GetSysColorBrush(Color and $000000FF)} {vb-} + else begin {vb+} + if Color < 0 then Color := GetSysColor(Color and $000000FF); + Result := CreateSolidBrush(Color); + end; +end; + +function FillRectEx(DC: HDC; const Rect: TRect; Color: TColor): Boolean; +var + Brush: HBRUSH; +begin + Result := Color <> clNone; + if Result then + begin + if Color < 0 then Brush := GetSysColorBrush(Color and $000000FF) + else Brush := CreateSolidBrush(Color); + Windows.FillRect(DC, Rect, Brush); + {DeleteObject(Brush);} {vb-} + if Color >= 0 then DeleteObject(Brush); {vb+} + end; +end; + +function FrameRectEx(DC: HDC; var Rect: TRect; Color: TColor; Adjust: Boolean): Boolean; +var + Brush: HBRUSH; +begin + Result := Color <> clNone; + if Result then + begin + if Color < 0 then Brush := GetSysColorBrush(Color and $000000FF) + else Brush := CreateSolidBrush(Color); + Windows.FrameRect(DC, Rect, Brush); + {DeleteObject(Brush);} {vb-} + if Color >= 0 then DeleteObject(Brush); {vb+} + end; + if Adjust then with Rect do + begin + Inc(Left); Dec(Right); + Inc(Top); Dec(Bottom); + end; +end; + +procedure DrawLineEx(DC: HDC; X1, Y1, X2, Y2: Integer; Color: TColor); +var + OldPen, Pen: HPen; +begin + Pen := CreatePen(PS_SOLID, 1, ColorToRGB(Color)); + OldPen := SelectObject(DC, Pen); + Windows.MoveToEx(DC, X1, Y1, nil); + Windows.LineTo(DC, X2, Y2); + SelectObject(DC, OldPen); + DeleteObject(Pen); +end; + +function PolyLineEx(DC: HDC; const Points: array of TPoint; Color: TColor): Boolean; overload; +var + Pen, OldPen: HPEN; +begin + Result := Color <> clNone; + if Result then + begin + if Color < 0 then Color := GetSysColor(Color and $FF); + Pen := CreatePen(PS_SOLID, 1, Color); + OldPen := SelectObject(DC, Pen); + Windows.Polyline(DC, PPoints(@Points[0])^, Length(Points)); + SelectObject(DC, OldPen); + DeleteObject(Pen); + end; +end; + +procedure PolygonEx(DC: HDC; const Points: array of TPoint; OutlineColor, FillColor: TColor); +var + OldBrush, Brush: HBrush; + OldPen, Pen: HPen; +begin + if (OutlineColor = clNone) and (FillColor = clNone) then Exit; + Pen := CreatePenEx(OutlineColor); + Brush := CreateBrushEx(FillColor); + OldPen := SelectObject(DC, Pen); + OldBrush := SelectObject(DC, Brush); + Windows.Polygon(DC, PPoints(@Points[0])^, Length(Points)); + SelectObject(DC, OldBrush); + SelectObject(DC, OldPen); + DeleteObject(Brush); + DeleteObject(Pen); +end; + +procedure RoundRectEx(DC: HDC; Left, Top, Right, Bottom: Integer; + EllipseWidth, EllipseHeight, OutlineColor, FillColor: TColor); {vb+} +var + OldBrush, Brush: HBrush; + OldPen, Pen: HPen; +begin + if (OutlineColor = clNone) and (FillColor = clNone) then Exit; + Pen := CreatePenEx(OutlineColor); + Brush := CreateBrushEx(FillColor); + OldPen := SelectObject(DC, Pen); + OldBrush := SelectObject(DC, Brush); + Windows.RoundRect(DC, Left, Top, Right, Bottom, EllipseWidth, EllipseHeight); + SelectObject(DC, OldBrush); + SelectObject(DC, OldPen); + DeleteObject(Brush); + DeleteObject(Pen); +end; + +procedure RoundRectEx(DC: HDC; const R: TRect; EllipseWidth, EllipseHeight, + OutlineColor, FillColor: TColor); {vb+} +begin + with R do + RoundRectEx(DC, Left, Top, Right, Bottom, EllipseWidth, + EllipseHeight, OutlineColor, FillColor); +end; + +function CreateDitheredBrush(C1, C2: TColor): HBrush; +var + B: TBitmap; +begin + B := AllocPatternBitmap(C1, C2); + B.HandleType := bmDDB; + Result := CreatePatternBrush(B.Handle); +end; + +procedure DitherRect(DC: HDC; const R: TRect; C1, C2: TColor); +var + Brush: HBRUSH; +begin + Brush := CreateDitheredBrush(C1, C2); + FillRect(DC, R, Brush); + DeleteObject(Brush); +end; + +procedure Frame3D(DC: HDC; var Rect: TRect; TopColor, BottomColor: TColor; Adjust: Boolean); +var + TopRight, BottomLeft: TPoint; +begin + with Rect do + begin + Dec(Bottom); Dec(Right); + TopRight.X := Right; + TopRight.Y := Top; + BottomLeft.X := Left; + BottomLeft.Y := Bottom; + PolyLineEx(DC, [BottomLeft, TopLeft, TopRight], TopColor); + Dec(BottomLeft.X); + PolyLineEx(DC, [TopRight, BottomRight, BottomLeft], BottomColor); + if Adjust then + begin + Inc(Left); + Inc(Top); + end + else + begin + Dec(Right); + Dec(Bottom); + end; + end; +end; + + +{$IFDEF COMPATIBLE_GFX} +procedure DitherRect(Canvas: TCanvas; const R: TRect; C1, C2: TColor); +begin + DitherRect(Canvas.Handle, R, C1, C2); +end; + +procedure Frame3D(Canvas: TCanvas; var Rect: TRect; TopColor, BottomColor: TColor); +var + TopRight, BottomLeft: TPoint; +begin + with Canvas, Rect do + begin + Pen.Width := 1; + Dec(Bottom); Dec(Right); + TopRight.X := Right; + TopRight.Y := Top; + BottomLeft.X := Left; + BottomLeft.Y := Bottom; + Pen.Color := TopColor; + PolyLine([BottomLeft, TopLeft, TopRight]); + Pen.Color := BottomColor; + Dec(BottomLeft.X); + PolyLine([TopRight, BottomRight, BottomLeft]); + Inc(Left); Inc(Top); + end; +end; + +function FillRectEx(Canvas: TCanvas; const Rect: TRect; Color: TColor): Boolean; +begin + Result := FillRectEx(Canvas.Handle, Rect, Color); +end; + +function FillRectEx2(DC: HDC; const Rect: TRect; Color: TColor): Boolean; deprecated; +begin + Result := FillRectEx(DC, Rect, Color); +end; + +function FrameRectEx(Canvas: TCanvas; var Rect: TRect; Color: TColor; Adjust: Boolean = False): Boolean; +begin + Result := FrameRectEx(Canvas.Handle, Rect, Color, Adjust); +end; + +function FrameRectEx2(DC: HDC; var Rect: TRect; Color: TColor; Adjust: Boolean = False): Boolean; deprecated; +begin + Result := FrameRectEx(DC, Rect, Color, Adjust); +end; + +procedure DrawLineEx(Canvas: TCanvas; X1, Y1, X2, Y2: Integer; Color: TColor); +begin + DrawLineEx(Canvas.Handle, X1, Y1, X2, Y2, Color); +end; +{$ENDIF} + +procedure DrawDraggingOutline(DC: HDC; const NewRect, OldRect: TRect); +var + Sz: TSize; +begin + Sz.CX := 3; Sz.CY := 2; + DrawHalftoneInvertRect(DC, @NewRect, @OldRect, Sz, Sz); +end; + +procedure FillLongword(var X; Count: Integer; Value: Longword); +asm +// EAX = X; EDX = Count; ECX = Value + PUSH EDI + MOV EDI,EAX // Point EDI to destination + MOV EAX,ECX + MOV ECX,EDX + TEST ECX,ECX + JS @exit + REP STOSD // Fill count dwords +@exit: + POP EDI +end; + +procedure MoveLongword(const Source; var Dest; Count: Integer); +asm +// EAX = Source; EDX = Dest; ECX = Count + PUSH ESI + PUSH EDI + MOV ESI,EAX // Source + MOV EDI,EDX // Destination + MOV EAX,ECX // Counter + CMP EDI,ESI + JE @exit + REP MOVSD +@exit: + POP EDI + POP ESI +end; + +procedure DrawTBXIcon(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; HiContrast: Boolean); +{const + CWeirdColor = $00203241;} {vb -} +var + ImageWidth, ImageHeight: Integer; + I, J: Integer; + Src, Dst: PColor; + S, C: TColor; +begin + if not HiContrast then + begin + ImageList.Draw(Canvas, R.Left, R.Top, ImageIndex); + Exit; + end; + ImageWidth := R.Right - R.Left; + ImageHeight := R.Bottom - R.Top; + with ImageList do + begin + if Width < ImageWidth then ImageWidth := Width; + if Height < ImageHeight then ImageHeight := Height; + end; + + StockBitmap1.Width := ImageWidth; + StockBitmap1.Height := ImageHeight; + StockBitmap2.Width := ImageWidth; + StockBitmap2.Height := ImageHeight; + + BitBlt(StockBitmap1.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, + Canvas.Handle, R.Left, R.Top, SRCCOPY); + {for J := 0 to ImageHeight - 1 do + FillLongWord(StockBitmap2.ScanLine[J]^, ImageWidth, CWeirdColor);} {vb -} + BitBlt(StockBitmap2.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, + Canvas.Handle, R.Left, R.Top, SRCCOPY); {vb +} + ImageList.Draw(StockBitmap2.Canvas, 0, 0, ImageIndex); + + for J := 0 to ImageHeight - 1 do + begin + Src := StockBitmap2.ScanLine[J]; + Dst := StockBitmap1.ScanLine[J]; + for I := 0 to ImageWidth - 1 do + begin + {S := Src^ and $00FFFFFF;} {vb -} + S := Src^; {vb +} + {if S <> CWeirdColor then} {vb -} + if S <> Dst^ then {vb +} + begin + {C := (S and $FF0000) shr 16 * 76 + (S and $00FF00) shr 8 * 150 + + (S and $0000FF) * 29;} {vb -} + C := (S and $00FF0000) shr 16 * 76 + (S and $0000FF00) shr 8 * 150 + + (S and $000000FF) * 29; {vb +} + if C > $FD00 then S := $000000 + else if C < $6400 then S := $FFFFFF; + Dst^ := Lighten(S, 32); + end; + Inc(Src); + Inc(Dst); + end; + end; + BitBlt(Canvas.Handle, R.Left, R.Top, ImageWidth, ImageHeight, + StockBitmap1.Canvas.Handle, 0, 0, SRCCOPY); +end; + +procedure BlendTBXIcon(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; Opacity: Byte); +{const + CWeirdColor = $00203241;} {vb -} +var + ImageWidth, ImageHeight: Integer; + I, J: Integer; + Src, Dst: ^Cardinal; + S, C, CBRB, CBG: Cardinal; + Wt1, Wt2: Cardinal; +begin + Wt2 := Opacity; + Wt1 := 255 - Wt2; + ImageWidth := R.Right - R.Left; + ImageHeight := R.Bottom - R.Top; + with ImageList do + begin + if Width < ImageWidth then ImageWidth := Width; + if Height < ImageHeight then ImageHeight := Height; + end; + + StockBitmap1.Width := ImageWidth; + StockBitmap1.Height := ImageHeight; + StockBitmap2.Width := ImageWidth; + StockBitmap2.Height := ImageHeight; + + BitBlt(StockBitmap1.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, + Canvas.Handle, R.Left, R.Top, SRCCOPY); + {BitBlt(StockBitmap2.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, + StockBitmap1.Canvas.Handle, 0, 0, SRCCOPY);} {vb -} + BitBlt(StockBitmap2.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, + Canvas.Handle, R.Left, R.Top, SRCCOPY); {vb +} + ImageList.Draw(StockBitmap2.Canvas, 0, 0, ImageIndex, True); + + for J := 0 to ImageHeight - 1 do + begin + Src := StockBitmap2.ScanLine[J]; + Dst := StockBitmap1.ScanLine[J]; + for I := 0 to ImageWidth - 1 do + begin + S := Src^; + if S <> Dst^ then + begin + CBRB := (Dst^ and $00FF00FF) * Wt1; + CBG := (Dst^ and $0000FF00) * Wt1; + {C := ((S and $FF00FF) * Wt2 + CBRB) and $FF00FF00 + + ((S and $00FF00) * Wt2 + CBG) and $00FF0000;} {vb -} + C := ((S and $00FF00FF) * Wt2 + CBRB) and $FF00FF00 + + ((S and $0000FF00) * Wt2 + CBG) and $00FF0000; {vb +} + Dst^ := C shr 8; + end; + Inc(Src); + Inc(Dst); + end; + end; + BitBlt(Canvas.Handle, R.Left, R.Top, ImageWidth, ImageHeight, + StockBitmap1.Canvas.Handle, 0, 0, SRCCOPY); +end; + +procedure HighlightTBXIcon(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; HighlightColor: TColor; Amount: Byte); +{const + CWeirdColor = $00203241;} {vb -} +var + ImageWidth, ImageHeight: Integer; + I, J: Integer; + {Src, Dst: PColor;} {vb -} + Src, Dst: ^Cardinal; {vb +} + S, C: Cardinal; + CBRB, CBG: Cardinal; + W1, W2: Cardinal; +begin + ImageWidth := R.Right - R.Left; + ImageHeight := R.Bottom - R.Top; + with ImageList do + begin + if Width < ImageWidth then ImageWidth := Width; + if Height < ImageHeight then ImageHeight := Height; + end; + + StockBitmap1.Width := ImageWidth; + StockBitmap1.Height := ImageHeight; + StockBitmap2.Width := ImageWidth; + StockBitmap2.Height := ImageHeight; + + BitBlt(StockBitmap1.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, + Canvas.Handle, R.Left, R.Top, SRCCOPY); + {for J := 0 to ImageHeight - 1 do + FillLongWord(StockBitmap2.ScanLine[J]^, ImageWidth, CWeirdColor);} {vb -} + BitBlt(StockBitmap2.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, + Canvas.Handle, R.Left, R.Top, SRCCOPY); {vb +} + ImageList.Draw(StockBitmap2.Canvas, 0, 0, ImageIndex); + + W2 := Amount; + W1 := 255 - W2; + HighlightColor := GetBGR(ColorToRGB(HighlightColor)); + CBRB := (Cardinal(HighlightColor) and $00FF00FF) * W1; + CBG := (Cardinal(HighlightColor) and $0000FF00) * W1; + + for J := 0 to ImageHeight - 1 do + begin + Src := StockBitmap2.ScanLine[J]; + Dst := StockBitmap1.ScanLine[J]; + for I := 0 to ImageWidth - 1 do + begin + {S := Src^ and $00FFFFFF;} {vb -} + S := Src^; {vb +} + {if S <> CWeirdColor then} {vb -} + if S <> Dst^ then {vb +} + begin + {C := ((S and $FF00FF) * W2 + CBRB) and $FF00FF00 + + ((S and $00FF00) * W2 + CBG) and $00FF0000;} {vb -} + C := ((S and $00FF00FF) * W2 + CBRB) and $FF00FF00 + + ((S and $0000FF00) * W2 + CBG) and $00FF0000; {vb +} + Dst^ := C shr 8; + end; + Inc(Src); + Inc(Dst); + end; + end; + BitBlt(Canvas.Handle, R.Left, R.Top, ImageWidth, ImageHeight, + StockBitmap1.Canvas.Handle, 0, 0, SRCCOPY); +end; + +procedure DrawTBXIconShadow(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; Density: Integer); +const + D_DIV: array [0..2] of Cardinal = (3, 8, 20); + D_ADD: array [0..2] of Cardinal = (255 - 255 div 3, 255 - 255 div 8, 255 - 255 div 20); +var + ImageWidth, ImageHeight: Integer; + I, J: Integer; + Src, Dst: ^Cardinal; + S, C, CBRB, CBG: Cardinal; +begin + Assert(Density in [0..2]); + + ImageWidth := R.Right - R.Left; + ImageHeight := R.Bottom - R.Top; + with ImageList do + begin + if Width < ImageWidth then ImageWidth := Width; + if Height < ImageHeight then ImageHeight := Height; + end; + + StockBitmap1.Width := ImageWidth; + StockBitmap1.Height := ImageHeight; + StockBitmap2.Width := ImageWidth; + StockBitmap2.Height := ImageHeight; + + BitBlt(StockBitmap1.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, + Canvas.Handle, R.Left, R.Top, SRCCOPY); + {BitBlt(StockBitmap2.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, + StockBitmap1.Canvas.Handle, 0, 0, SRCCOPY);} {vb -} + BitBlt(StockBitmap2.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, + Canvas.Handle, R.Left, R.Top, SRCCOPY); {vb +} + ImageList.Draw(StockBitmap2.Canvas, 0, 0, ImageIndex, True); + + for J := 0 to ImageHeight - 1 do + begin + Src := StockBitmap2.ScanLine[J]; + Dst := StockBitmap1.ScanLine[J]; + for I := 0 to ImageWidth - 1 do + begin + S := Src^; + if S <> Dst^ then + begin + CBRB := Dst^ and $00FF00FF; + CBG := Dst^ and $0000FF00; + {C := ((S and $FF0000) shr 16 * 29 + (S and $00FF00) shr 8 * 150 + + (S and $0000FF) * 76) shr 8;} {vb -} + C := ((S and $00FF0000) shr 16 * 29 + (S and $0000FF00) shr 8 * 150 + + (S and $000000FF) * 76) shr 8; {vb +} + C := C div D_DIV[Density] + D_ADD[Density]; + Dst^ := ((CBRB * C and $FF00FF00) or (CBG * C and $00FF0000)) shr 8; + end; + Inc(Src); + Inc(Dst); + end; + end; + BitBlt(Canvas.Handle, R.Left, R.Top, ImageWidth, ImageHeight, + StockBitmap1.Canvas.Handle, 0, 0, SRCCOPY); +end; + +procedure DrawTBXIconFlatShadow(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; ShadowColor: TColor); +const + CShadowThreshold = 180 * 256; +var + ImageWidth, ImageHeight: Integer; + I, J: Integer; + P: ^Cardinal; + C: Cardinal; + SrcDC, DstDC: HDC; +begin + ImageWidth := R.Right - R.Left; + ImageHeight := R.Bottom - R.Top; + with ImageList do + begin + if Width < ImageWidth then ImageWidth := Width; + if Height < ImageHeight then ImageHeight := Height; + end; + + StockBitmap2.Width := ImageWidth; + StockBitmap2.Height := ImageHeight; + StockBitmap2.Canvas.Brush.Color := clWhite; + StockBitmap2.Canvas.FillRect(Rect(0, 0, ImageWidth, ImageHeight)); + ImageList.Draw(StockBitmap2.Canvas, 0, 0, ImageIndex, True); + + for J := 0 to ImageHeight - 1 do + begin + P := StockBitmap2.ScanLine[J]; + for I := 0 to ImageWidth - 1 do + begin + C := P^ and $00FFFFFF; + if C <> $0 then + begin + C := (C and $FF0000) shr 16 * 76 + (C and $00FF00) shr 8 * 150 + (C and $0000FF) * 29; + if C > CShadowThreshold then P^ := $00FFFFFF + else P^ := $00000000; + end; + Inc(P); + end; + end; + + StockMonoBitmap.Width := ImageWidth; + StockMonoBitmap.Height := ImageHeight; + StockMonoBitmap.Canvas.Brush.Color := clBlack; + BitBlt(StockMonoBitmap.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, + StockBitmap2.Canvas.Handle, 0, 0, SRCCOPY); + + SrcDC := StockMonoBitmap.Canvas.Handle; + Canvas.Brush.Color := ColorToRGB(ShadowColor); + DstDC := Canvas.Handle; + Windows.SetTextColor(DstDC, clWhite); + Windows.SetBkColor(DstDC, clBlack); + BitBlt(DstDC, R.Left, R.Top, ImageWidth, ImageHeight, SrcDC, 0, 0, ROP_DSPDxax); +end; + +procedure DrawTBXIconFullShadow(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; ShadowColor: TColor); +const + CWeirdColor = $00203241; +var + ImageWidth, ImageHeight: Integer; + I, J: Integer; + P: ^Cardinal; + C: Cardinal; + SrcDC, DstDC: HDC; +begin + ImageWidth := R.Right - R.Left; + ImageHeight := R.Bottom - R.Top; + with ImageList do + begin + if Width < ImageWidth then ImageWidth := Width; + if Height < ImageHeight then ImageHeight := Height; + end; + + StockBitmap2.Width := ImageWidth; + StockBitmap2.Height := ImageHeight; + for J := 0 to ImageHeight - 1 do + FillLongWord(StockBitmap2.ScanLine[J]^, ImageWidth, CWeirdColor); + ImageList.Draw(StockBitmap2.Canvas, 0, 0, ImageIndex, True); + + for J := 0 to ImageHeight - 1 do + begin + P := StockBitmap2.ScanLine[J]; + for I := 0 to ImageWidth - 1 do + begin + C := P^ and $00FFFFFF; + if C <> CWeirdColor then P^ := $00000000 + else P^ := $00FFFFFF; + Inc(P); + end; + end; + + StockMonoBitmap.Width := ImageWidth; + StockMonoBitmap.Height := ImageHeight; + StockMonoBitmap.Canvas.Brush.Color := clBlack; + BitBlt(StockMonoBitmap.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, + StockBitmap2.Canvas.Handle, 0, 0, SRCCOPY); + + SrcDC := StockMonoBitmap.Canvas.Handle; + Canvas.Brush.Color := ColorToRGB(ShadowColor); + DstDC := Canvas.Handle; + Windows.SetTextColor(DstDC, clWhite); + Windows.SetBkColor(DstDC, clBlack); + BitBlt(DstDC, R.Left, R.Top, ImageWidth, ImageHeight, SrcDC, 0, 0, ROP_DSPDxax); +end; + +procedure DrawGlyph(DC: HDC; X, Y: Integer; ImageList: TCustomImageList; ImageIndex: Integer; Color: TColor); +var + B: TBitmap; + OldTextColor, OldBkColor: Longword; + OldBrush, Brush: HBrush; +begin + if Color = clNone then Exit; + B := TBitmap.Create; + B.Monochrome := True; + ImageList.GetBitmap(ImageIndex, B); + OldTextColor := SetTextColor(DC, clBlack); + OldBkColor := SetBkColor(DC, clWhite); + if Color < 0 then Brush := GetSysColorBrush(Color and $FF) + else Brush := CreateSolidBrush(Color); + OldBrush := SelectObject(DC, Brush); + BitBlt(DC, X, Y, ImageList.Width, ImageList.Height, B.Canvas.Handle, 0, 0, ROP_DSPDxax); + SelectObject(DC, OldBrush); + if Color >= 0 then DeleteObject(Brush); + SetTextColor(DC, OldTextColor); + SetBkColor(DC, OldBkColor); + B.Free; +end; + +procedure DrawGlyph(DC: HDC; const R: TRect; ImageList: TCustomImageList; ImageIndex: Integer; Color: TColor); overload; +begin + DrawGlyph(DC, (R.Left + R.Right + 1 - ImageList.Width) div 2, (R.Top + R.Bottom + 1 - ImageList.Height) div 2, ImageList, ImageIndex, Color); +end; + +procedure DrawGlyph(DC: HDC; X, Y: Integer; const Bits; Color: TColor); overload; +var + B: TBitmap; + OldTextColor, OldBkColor: Longword; + OldBrush, Brush: HBrush; +begin + B := TBitmap.Create; + B.Handle := CreateBitmap(8, 8, 1, 1, @Bits); + OldTextColor := SetTextColor(DC, clBlack); + OldBkColor := SetBkColor(DC, clWhite); + if Color < 0 then Brush := GetSysColorBrush(Color and $FF) + else Brush := CreateSolidBrush(Color); + OldBrush := SelectObject(DC, Brush); + BitBlt(DC, X, Y, 8, 8, B.Canvas.Handle, 0, 0, ROP_DSPDxax); + SelectObject(DC, OldBrush); + if Color >= 0 then DeleteObject(Brush); + SetTextColor(DC, OldTextColor); + SetBkColor(DC, OldBkColor); + B.Free; +end; + +procedure DrawGlyph(DC: HDC; const R: TRect; Width, Height: Integer; const Bits; Color: TColor); overload; +var + B: TBitmap; + OldTextColor, OldBkColor: Longword; + OldBrush, Brush: HBrush; +begin + B := TBitmap.Create; + B.Handle := CreateBitmap(8, 8, 1, 1, @Bits); + OldTextColor := SetTextColor(DC, clBlack); + OldBkColor := SetBkColor(DC, clWhite); + if Color < 0 then Brush := GetSysColorBrush(Color and $FF) + else Brush := CreateSolidBrush(Color); + OldBrush := SelectObject(DC, Brush); + BitBlt(DC, (R.Left + R.Right + 1 - Width) div 2, (R.Top + R.Bottom + 1 - Height) div 2, Width, Height, B.Canvas.Handle, 0, 0, ROP_DSPDxax); + SelectObject(DC, OldBrush); + if Color >= 0 then DeleteObject(Brush); + SetTextColor(DC, OldTextColor); + SetBkColor(DC, OldBkColor); + B.Free; +end; + +type + TCustomFormAccess = class(TCustomForm); + +function GetClientSizeEx(Control: TWinControl): TPoint; +var + R: TRect; +begin + if (Control is TCustomForm) and (TCustomFormAccess(Control).FormStyle = fsMDIForm) + and not (csDesigning in Control.ComponentState) then + GetWindowRect(TCustomFormAccess(Control).ClientHandle, R) + else + R := Control.ClientRect; + Result.X := R.Right - R.Left; + Result.Y := R.Bottom - R.Top; +end; + +procedure InitializeStock; +var + NonClientMetrics: TNonClientMetrics; +begin + StockBitmap1 := TBitmap.Create; + StockBitmap1.PixelFormat := pf32bit; + StockBitmap2 := TBitmap.Create; + StockBitmap2.PixelFormat := pf32bit; + StockMonoBitmap := TBitmap.Create; + StockMonoBitmap.Monochrome := True; + StockCompatibleBitmap := TBitmap.Create; + StockCompatibleBitmap.Width := 8; + StockCompatibleBitmap.Height := 8; + SmCaptionFont := TFont.Create; + NonClientMetrics.cbSize := SizeOf(NonClientMetrics); + if SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @NonClientMetrics, 0) then + SmCaptionFont.Handle := CreateFontIndirect(NonClientMetrics.lfSmCaptionFont); +end; + +procedure FinalizeStock; +begin + SmCaptionFont.Free; + SmCaptionFont := nil; + StockCompatibleBitmap.Free; + StockMonoBitmap.Free; + StockBitmap2.Free; + StockBitmap1.Free; +end; + +procedure RecreateStock; +begin + FinalizeStock; + InitializeStock; +end; + +{ TShadow } //////////////////////////////////////////////////////////////////// + +procedure TShadow.Clear(const R: TRect); +begin + FClearRect := R; +end; + +constructor TShadow.Create(const Bounds: TRect; Opacity: Byte; LoColor: Boolean; Edges: TShadowEdges); +begin + inherited Create(nil); + Hide; + ParentWindow := Application.Handle; + BoundsRect := Bounds; + Color := clBtnShadow; + FOpacity := Opacity; + FEdges := Edges; + FSaveBits := False; + + if LoColor then FStyle := ssFlat + else if (@UpdateLayeredWindow <> nil) and (@AlphaBlend <> nil) then + FStyle := ssLayered + else if @AlphaBlend <> nil then + FStyle := ssAlphaBlend + else + FStyle := ssFlat; +end; + +procedure TShadow.CreateParams(var Params: TCreateParams); +begin + inherited; + with Params do + begin + Style := (Style and not (WS_CHILD or WS_GROUP or WS_TABSTOP)) or WS_POPUP; + ExStyle := ExStyle or WS_EX_TOOLWINDOW; + if FSaveBits then WindowClass.Style := WindowClass.Style or CS_SAVEBITS; + end; +end; + +procedure TShadow.GradB(const R: TRect); +var + J, W, H: Integer; + V: Cardinal; + P: ^Cardinal; +begin + W := R.Right - R.Left; + H := R.Bottom - R.Top; + for J := 0 to H - 1 do + begin + P := FBuffer.ScanLine[J + R.Top]; + Inc(P, R.Left); + V := (255 - J shl 8 div H) shl 24; + FillLongword(P^, W, V); + end; +end; + +procedure TShadow.GradBL(const R: TRect); +var + I, J, W, H, CX, CY, D, DMax, A, B: Integer; + P: ^Cardinal; +begin + W := R.Right - R.Left; + H := R.Bottom - R.Top; + DMax := W; + if H > W then DMax := H; + CX := DMax - 1; + CY := H - DMax; + for J := 0 to H - 1 do + begin + P := FBuffer.ScanLine[J + R.Top]; + Inc(P, R.Left); + for I := 0 to W - 1 do + begin + A := Abs(I - CX); + B := Abs(J - CY); + D := A; + if B > A then D := B; + D := (A + B + D) * 128 div DMax; + if D < 255 then P^ := (255 - D) shl 24 + else P^ := 0; + Inc(P); + end; + end; +end; + +procedure TShadow.GradBR(const R: TRect); +var + I, J, W, H, CX, CY, D, DMax, A, B: Integer; + P: ^Cardinal; +begin + W := R.Right - R.Left; + H := R.Bottom - R.Top; + DMax := W; + if H > W then DMax := H; + CX := W - DMax; + CY := H - DMax; + for J := 0 to H - 1 do + begin + P := FBuffer.ScanLine[J + R.Top]; + Inc(P, R.Left); + for I := 0 to W - 1 do + begin + A := Abs(I - CX); + B := Abs(J - CY); + D := A; + if B > A then D := B; + D := (A + B + D) * 128 div DMax; + if D < 255 then P^ := (255 - D) shl 24 + else P^ := 0; + Inc(P); + end; + end; +end; + +procedure TShadow.GradR(const R: TRect); +var + I, J, W: Integer; + P: ^Cardinal; + ScanLine: array of Cardinal; +begin + W := R.Right - R.Left; + SetLength(ScanLine, W); + for I := 0 to W - 1 do + ScanLine[I] :=(255 - I shl 8 div W) shl 24; + + for J := R.Top to R.Bottom - 1 do + begin + P := FBuffer.ScanLine[J]; + Inc(P, R.Left); + MoveLongword(ScanLine[0], P^, W); + end; +end; + +procedure TShadow.GradTR(const R: TRect); +var + I, J, W, H, CX, CY, D, DMax, A, B: Integer; + P: ^Cardinal; +begin + W := R.Right - R.Left; + H := R.Bottom - R.Top; + DMax := W; + if H > W then DMax := H; + CX := W - DMax; + CY := DMax - 1; + for J := 0 to H - 1 do + begin + P := FBuffer.ScanLine[J + R.Top]; + Inc(P, R.Left); + for I := 0 to W - 1 do + begin + A := Abs(I - CX); + B := Abs(J - CY); + D := A; + if B > A then D := B; + D := (A + B + D) * 128 div DMax; + if D < 255 then P^ := (255 - D) shl 24 + else P^ := 0; + Inc(P); + end; + end; +end; + +procedure TShadow.Render; +var + DstDC: HDC; + SrcPos, DstPos: TPoint; + Size: TSize; + BlendFunc: TBlendFunction; +begin + if FStyle <> ssLayered then Exit; + Assert(Assigned(UpdateLayeredWindow)); + + SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or $00080000{WS_EX_LAYERED}); + DstDC := GetDC(0); + try + SrcPos := Point(0, 0); + with BoundsRect do + begin + DstPos := Point(Left, Top); + Size.cx := Right - Left; + Size.cy := Bottom - Top; + end; + BlendFunc.BlendOp := 0; + BlendFunc.BlendFlags := 0; + BlendFunc.SourceConstantAlpha := FOpacity; + BlendFunc.AlphaFormat := 1; + + FBuffer := TBitmap.Create; + FBuffer.PixelFormat := pf32bit; + FBuffer.Width := Size.cx; + FBuffer.Height := Size.cy; + + FillBuffer; + + UpdateLayeredWindow( + Handle, + DstDC, + @DstPos, + @Size, + FBuffer.Canvas.Handle, + @SrcPos, + 0, + @BlendFunc, + $00000002{ULW_ALPHA}); + + FBuffer.Free; + finally + ReleaseDC(0, DstDC); + end; +end; + +procedure TShadow.Show(ParentHandle: HWND); +begin + SetWindowPos(Handle, ParentHandle, 0, 0, 0, 0, + SWP_NOACTIVATE or SWP_NOSENDCHANGING or SWP_NOMOVE or + SWP_NOOWNERZORDER or SWP_NOSIZE or SWP_SHOWWINDOW); +end; + +procedure TShadow.WMEraseBkgnd(var Message: TWMEraseBkgnd); +var + SrcPos, DstPos: TPoint; + Size: TSize; + BlendFunc: TBlendFunction; +begin + if FStyle = ssAlphaBlend then + begin + Assert(Assigned(AlphaBlend)); + + { Dispatch all the painting messages } + ProcessPaintMessages; + + SrcPos := Point(0, 0); + with BoundsRect do + begin + DstPos := Point(Left, Top); + Size.cx := Right - Left; + Size.cy := Bottom - Top; + end; + + FBuffer := TBitmap.Create; + FBuffer.PixelFormat := pf32bit; + FBuffer.Width := Size.cx; + FBuffer.Height := Size.cy; + + FillBuffer; + + { Blend the buffer directly into the screen } + BlendFunc.BlendOp := 0; + BlendFunc.BlendFlags := 0; + BlendFunc.SourceConstantAlpha := FOpacity; + BlendFunc.AlphaFormat := 1; + AlphaBlend(Message.DC, 0, 0, Size.cx, Size.cy, + FBuffer.Canvas.Handle, 0, 0, Size.cx, Size.cy, BlendFunc); + FBuffer.Free; + + Message.Result := 1; + end + else inherited; +end; + +procedure TShadow.WMNCHitTest(var Message: TMessage); +begin + Message.Result := HTTRANSPARENT; +end; + +{ THorzShadow } + +procedure THorzShadow.FillBuffer; +var + R: TRect; + L1, L2, L3: Integer; +begin + if seTopLeft in FEdges then L1 := Height else L1 := 0; + if seBottomRight in FEdges then L3 := Height else L3 := 0; + if L1 + L3 > Width then + begin + if (L1 > 0) and (L3 > 0) then + begin + L1 := Width div 2; + L3 := L1; + end + else if L1 > 0 then L1 := Width + else if L3 > 0 then L3 := Width; + end; + L2 := Width - L1 - L3; + R := Rect(0, 0, Width, Height); + R.Right := R.Left + L1; + if L1 > 0 then GradBL(R); + R.Left := R.Right; + R.Right := R.Left + L2; + if L2 > 0 then GradB(R); + if L3 > 0 then + begin + R.Left := R.Right; + R.Right := R.Left + L3; + GradBR(R); + end; +end; + +{ TVertShadow } + +procedure TVertShadow.FillBuffer; +var + R: TRect; + L1, L2, L3: Integer; +begin + if seTopLeft in FEdges then L1 := Width else L1 := 0; + if seBottomRight in FEdges then L3 := Width else L3 := 0; + if L1 + L3 > Height then + begin + if (L1 > 0) and (L3 > 0) then + begin + L1 := Height div 2; + L3 := L1; + end + else if L1 > 0 then L1 := Height + else if L3 > 0 then L3 := Height; + end; + L2 := Height - L1 - L3; + + R := Rect(0, 0, Width, Height); + R.Bottom := R.Top + L1; + if L1 > 0 then GradTR(R); + R.Top := R.Bottom; + R.Bottom := R.Top + L2; + if L2 > 0 then GradR(R); + if L3 > 0 then + begin + R.Top := R.Bottom; + R.Bottom := R.Top + L3; + GradBR(R); + end; +end; + +{ TShadows } + +constructor TShadows.Create(R1, R2: TRect; Size: Integer; Opacity: Byte; LoColor: Boolean); +var + R: TRect; + R1Valid, R2Valid: Boolean; +begin + if LoColor or + ((@UpdateLayeredWindow = nil) and (@AlphaBlend = nil)) then + begin + Size := Size div 2; + end; + + R1Valid := not IsRectEmpty(R1); + R2Valid := not IsRectEmpty(R2); + if not (R1Valid or R2Valid) then Exit; + + if R1Valid xor R2Valid then + begin + { A simple square shadow } + if R1Valid then R := R1 else R:= R2; + with R do + begin + V1 := TVertShadow.Create(Rect(Right, Top + Size, Right + Size, Bottom), Opacity, LoColor, [seTopLeft]); + H1 := THorzShadow.Create(Rect(Left + Size, Bottom, Right + Size, Bottom + Size), Opacity, LoColor, [seTopLeft, seBottomRight]) + end; + end + else + begin + + if (R1.Bottom <= R2.Top + 2) or (R1.Top >= R2.Bottom - 2) then + begin + if R1.Top > R2.Top then + begin + R := R2; + R2 := R1; + R1 := R; + end; + if R1.Left + Size < R2.Left then + H1 := THorzShadow.Create(Rect(R1.Left + Size, R1.Bottom, R2.Left, R1.Bottom + Size), Opacity, LoColor, [seTopLeft]); + H2 := THorzShadow.Create(Rect(R2.Left + Size, R2.Bottom, R2.Right + Size, R2.Bottom + Size), Opacity, LoColor, [seTopLeft, seBottomRight]); + V1 := TVertShadow.Create(Rect(R1.Right, R1.Top + Size, R1.Right + Size, R1.Bottom), Opacity, LoColor, [seTopLeft]); + if R1.Right > R2.Right then + H3 := THorzShadow.Create(Rect(R2.Right, R1.Bottom, R1.Right + Size, R1.Bottom + Size), Opacity, LoColor, [seTopLeft, seBottomRight]); + if R1.Right + Size < R2.Right then + V2 := TVertShadow.Create(Rect(R2.Right, R2.Top + Size, R2.Right + Size, R2.Bottom), Opacity, LoColor, [seTopLeft]) + else + V2 := TVertShadow.Create(Rect(R2.Right, R2.Top + 1, R2.Right + Size, R2.Bottom), Opacity, LoColor, []); + end + else if (R1.Right <= R2.Left + 2) or (R1.Left >= R2.Right - 2) then + begin + if R1.Left > R2.Left then + begin + R := R2; + R2 := R1; + R1 := R; + end; + if R1.Top + Size < R2.Top then + V1 := TVertShadow.Create(Rect(R1.Right, R1.Top + Size, R1.Right + Size, R2.Top), Opacity, LoColor, [seTopLeft]); + V2 := TVertShadow.Create(Rect(R2.Right, R2.Top + Size, R2.Right + Size, R2.Bottom + Size), Opacity, LoColor, [seTopLeft, seBottomRight]); + H1 := THorzShadow.Create(Rect(R1.Left + Size, R1.Bottom, R1.Right, R1.Bottom + Size), Opacity, LoColor, [seTopLeft]); + if R1.Bottom > R2.Bottom then + V3 := TVertShadow.Create(Rect(R1.Right, R2.Bottom, R1.Right + Size, R1.Bottom + Size), Opacity, LoColor, [seTopLeft, seBottomRight]); + if R1.Bottom + Size < R2.Bottom then + H2 := THorzShadow.Create(Rect(R2.Left + Size, R2.Bottom, R2.Right, R2.Bottom + Size), Opacity, LoColor, [seTopLeft]) + else + H2 := THorzShadow.Create(Rect(R2.Left, R2.Bottom, R2.Right, R2.Bottom + Size), Opacity, LoColor, []); + end; + end; + + if V1 <> nil then V1.Render; + if H1 <> nil then H1.Render; + if V2 <> nil then V2.Render; + if H2 <> nil then H2.Render; + if V3 <> nil then V3.Render; + if H3 <> nil then H3.Render; + + SetSaveBits(True); +end; + +destructor TShadows.Destroy; +begin + H3.Free; + V3.Free; + H2.Free; + V2.Free; + H1.Free; + V1.Free; + inherited; +end; + +procedure TShadows.SetSaveBits(Value: Boolean); +begin + FSaveBits := Value; + if V1 <> nil then V1.FSaveBits := Value; + if H1 <> nil then H1.FSaveBits := Value; + if V2 <> nil then V2.FSaveBits := Value; + if H2 <> nil then H2.FSaveBits := Value; + if V3 <> nil then V3.FSaveBits := Value; + if H3 <> nil then H3.FSaveBits := Value; +end; + +procedure TShadows.Show(ParentHandle: HWND); +begin + if V1 <> nil then V1.Show(ParentHandle); + if H1 <> nil then H1.Show(ParentHandle); + if V2 <> nil then V2.Show(ParentHandle); + if H2 <> nil then H2.Show(ParentHandle); + if V3 <> nil then V3.Show(ParentHandle); + if H3 <> nil then H3.Show(ParentHandle); +end; + +{ Gradients } ////////////////////////////////////////////////////////////////// + +const + GRADIENT_CACHE_SIZE = 16; + +type + PRGBQuad = ^TRGBQuad; + TRGBQuad = Integer; + PRGBQuadArray = ^TRGBQuadArray; + TRGBQuadArray = array [0..0] of TRGBQuad; + + +var + GradientCache: array [0..GRADIENT_CACHE_SIZE] of array of TRGBQuad; + NextCacheIndex: Integer = 0; + +function FindGradient(Size: Integer; CL, CR: TRGBQuad): Integer; +begin + Assert(Size > 0); + Result := GRADIENT_CACHE_SIZE - 1; + while Result >= 0 do + begin + if (Length(GradientCache[Result]) = Size) and + (GradientCache[Result][0] = CL) and + (GradientCache[Result][Length(GradientCache[Result]) - 1] = CR) then Exit; + Dec(Result); + end; +end; + +function MakeGradient(Size: Integer; CL, CR: TRGBQuad): Integer; +var + R1, G1, B1: Integer; + R2, G2, B2: Integer; + R, G, B: Integer; + I: Integer; + Bias: Integer; +begin + Assert(Size > 0); + Result := NextCacheIndex; + Inc(NextCacheIndex); + if NextCacheIndex >= GRADIENT_CACHE_SIZE then NextCacheIndex := 0; + R1 := CL and $FF; + G1 := CL shr 8 and $FF; + B1 := CL shr 16 and $FF; + R2 := CR and $FF - R1; + G2 := CR shr 8 and $FF - G1; + B2 := CR shr 16 and $FF - B1; + SetLength(GradientCache[Result], Size); + Dec(Size); + Bias := Size div 2; + if Size > 0 then + for I := 0 to Size do + begin + R := R1 + (R2 * I + Bias) div Size; + G := G1 + (G2 * I + Bias) div Size; + B := B1 + (B2 * I + Bias) div Size; + GradientCache[Result][I] := R + G shl 8 + B shl 16; + end + else + begin + R := R1 + R2 div 2; + G := G1 + G2 div 2; + B := B1 + B2 div 2; + GradientCache[Result][0] := R + G shl 8 + B shl 16; + end; +end; + +function GetGradient(Size: Integer; CL, CR: TRGBQuad): Integer; +begin + Result := FindGradient(Size, CL, CR); + if Result < 0 then Result := MakeGradient(Size, CL, CR); +end; + +{ GradFill function } + +procedure GradFill(DC: HDC; ARect: TRect; ClrTopLeft, ClrBottomRight: TColor; Kind: TGradientKind); +const + GRAD_MODE: array [TGradientKind] of DWORD = (GRADIENT_FILL_RECT_H, GRADIENT_FILL_RECT_V); + W: array [TGradientKind] of Integer = (2, 1); + H: array [TGradientKind] of Integer = (1, 2); +type + TriVertex = packed record + X, Y: Longint; + R, G, B, A: Word; + end; +var + V: array [0..1] of TriVertex; + GR: GRADIENT_RECT; + Size, I, Start, Finish: Integer; + GradIndex: Integer; + R, CR: TRect; + Brush: HBRUSH; +begin + if not RectVisible(DC, ARect) then Exit; + + ClrTopLeft := ColorToRGB(ClrTopLeft); + ClrBottomRight := ColorToRGB(ClrBottomRight); + if @GradientFill <> nil then + begin + { Use msimg32.dll } + with V[0] do + begin + X := ARect.Left; + Y := ARect.Top; + R := ClrTopLeft shl 8 and $FF00; + G := ClrTopLeft and $FF00; + B := ClrTopLeft shr 8 and $FF00; + A := 0; + end; + with V[1] do + begin + X := ARect.Right; + Y := ARect.Bottom; + R := ClrBottomRight shl 8 and $FF00; + G := ClrBottomRight and $FF00; + B := ClrBottomRight shr 8 and $FF00; + A := 0; + end; + GR.UpperLeft := 0; GR.LowerRight := 1; + GradientFill(DC, @V, 2, @GR, 1, GRAD_MODE[Kind]); + end + else + begin + { Have to do it manually if msimg32.dll is not available } + GetClipBox(DC, CR); + + if Kind = gkHorz then + begin + Size := ARect.Right - ARect.Left; + if Size <= 0 then Exit; + Start := 0; Finish := Size - 1; + if CR.Left > ARect.Left then Inc(Start, CR.Left - ARect.Left); + if CR.Right < ARect.Right then Dec(Finish, ARect.Right - CR.Right); + R := ARect; Inc(R.Left, Start); R.Right := R.Left + 1; + end + else + begin + Size := ARect.Bottom - ARect.Top; + if Size <= 0 then Exit; + Start := 0; Finish := Size - 1; + if CR.Top > ARect.Top then Inc(Start, CR.Top - ARect.Top); + if CR.Bottom < ARect.Bottom then Dec(Finish, ARect.Bottom - CR.Bottom); + R := ARect; Inc(R.Top, Start); R.Bottom := R.Top + 1; + end; + GradIndex := GetGradient(Size, ClrTopLeft, ClrBottomRight); + for I := Start to Finish do + begin + Brush := CreateSolidBrush(GradientCache[GradIndex][I]); + Windows.FillRect(DC, R, Brush); + OffsetRect(R, Integer(Kind = gkHorz), Integer(Kind = gkVert)); + DeleteObject(Brush); + end; + end; +end; + +{ Brushed Fill } /////////////////////////////////////////////////////////////// + +{ Templates } + +const + NUM_TEMPLATES = 8; + MIN_TEMPLATE_SIZE = 100; + MAX_TEMPLATE_SIZE = 200; + +var + ThreadTemplates: array [0..NUM_TEMPLATES - 1] of array of Integer; + RandThreadIndex: array [0..1023] of Integer; + RandThreadPositions: array [0..1023] of Integer; + +procedure InitializeBrushedFill; +const + Pi = 3.14159265358987; +var + TemplateIndex, Size, I, V, V1, V2: Integer; + T, R12, R13, R14, R21, R22, R23, R24: Single; +begin + { Make thread templates } + for TemplateIndex := 0 to NUM_TEMPLATES - 1 do + begin + Size := (MIN_TEMPLATE_SIZE + Random(MAX_TEMPLATE_SIZE - MIN_TEMPLATE_SIZE + 1)) div 2; + SetLength(ThreadTemplates[TemplateIndex], Size * 2); + R12 := Random * 2 * Pi; + R13 := Random * 2 * Pi; + R14 := Random * 2 * Pi; + R21 := Random * 2 * Pi; + R22 := Random * 2 * Pi; + R23 := Random * 2 * Pi; + R24 := Random * 2 * Pi; + for I := 0 to Size - 1 do + begin + T := 2 * Pi * I / Size; + V1 := Round(150 * Sin(T) + 100 * Sin(2 * T + R12) + 50 * Sin(3 * T + R13) + 20 * Sin(4 * T + R14)); + if V1 > 255 then V1 := 255; + if V1 < -255 then V1 := -255; + + V2 := Round(150 * Sin(T + R21) + 100 * Sin(2 * T + R22) + 50 * Sin(3 * T + R23) + 20 * Sin(4 * T + R24)); + if V2 > 255 then V2 := 255; + if V2 < -255 then V2 := -255; + + if Abs(V2 - V1) > 300 then + begin + V := (V1 + V2) div 2; + V1 := V - 150; + V2 := V + 150; + end; + + ThreadTemplates[TemplateIndex][I * 2] := Min(V1, V2); + ThreadTemplates[TemplateIndex][I * 2 + 1] := Max(V1, V2); + end; + end; + + { Initialize Rand arrays } + for I := 0 to 1023 do + begin + RandThreadIndex[I] := Random(NUM_TEMPLATES); + V1 := Random(Length(ThreadTemplates[RandThreadIndex[I]])) and not $1; + if Odd(I) then Inc(V1); + RandThreadPositions[I] := V1; + end; +end; + +{ Cache } + +const + THREAD_CACHE_SIZE = 16; + +type + TThreadCacheItem = record + BaseColor: TColorRef; + Roughness: Integer; + Bitmaps: array [0..NUM_TEMPLATES - 1] of HBITMAP; + end; + +var + ThreadCache: array [0..THREAD_CACHE_SIZE] of TThreadCacheItem; + NextCacheEntry: Integer = 0; + +procedure ClearCacheItem(var CacheItem: TThreadCacheItem); +var + I: Integer; +begin + with CacheItem do + begin + BaseColor := $FFFFFFFF; + Roughness := -1; + for I := NUM_TEMPLATES - 1 downto 0 do + begin + if Bitmaps[I] <> 0 then + begin + DeleteObject(Bitmaps[I]); + Bitmaps[I] := 0; + end; + end; + end; +end; + +procedure ResetBrushedFillCache; +var + I: Integer; +begin + { Should be called each time the screen parameters change } + for I := THREAD_CACHE_SIZE - 1 downto 0 do ClearCacheItem(ThreadCache[I]); +end; + +procedure FinalizeBrushedFill; +begin + ResetBrushedFillCache; +end; + +procedure MakeCacheItem(var CacheItem: TThreadCacheItem; Color: TColorRef; Roughness: Integer); +var + TemplateIndex, Size, I, V: Integer; + CR, CG, CB: Integer; + R, G, B: Integer; + ScreenDC: HDC; + BMI: TBitmapInfo; + Bits: PRGBQuadArray; + DIBSection: HBITMAP; + DIBDC, CacheDC: HDC; +begin + ScreenDC := GetDC(0); + FillChar(BMI, SizeOf(TBitmapInfo), 0); + with BMI.bmiHeader do + begin + biSize := SizeOf(TBitmapInfoHeader); + biPlanes := 1; + biCompression := BI_RGB; + biWidth := MAX_TEMPLATE_SIZE; + biHeight := -1; + biBitCount := 32; + end; + DIBSection := CreateDIBSection(0, BMI, DIB_RGB_COLORS, Pointer(Bits), 0, 0); + DIBDC := CreateCompatibleDC(0); + SelectObject(DIBDC, DIBSection); + CacheDC := CreateCompatibleDC(0); + + CR := Color shl 8 and $FF00; + CG := Color and $FF00; + CB := Color shr 8 and $FF00; + + try + for TemplateIndex := 0 to NUM_TEMPLATES - 1 do + begin + CacheItem.BaseColor := Color; + CacheItem.Roughness := Roughness; + Size := Length(ThreadTemplates[TemplateIndex]); + + if CacheItem.Bitmaps[TemplateIndex] = 0 then + CacheItem.Bitmaps[TemplateIndex] := CreateCompatibleBitmap(ScreenDC, Size, 1); + SelectObject(CacheDC, CacheItem.Bitmaps[TemplateIndex]); + + for I := 0 to Size - 1 do + begin + V := ThreadTemplates[TemplateIndex][I]; + R := CR + V * Roughness; + G := CG + V * Roughness; + B := CB + V * Roughness; + if R < 0 then R := 0; + if G < 0 then G := 0; + if B < 0 then B := 0; + if R > $EF00 then R := $EF00; + if G > $EF00 then G := $EF00; + if B > $EF00 then B := $EF00; + Bits^[I] := (R and $FF00 + (G and $FF00) shl 8 + (B and $FF00) shl 16) shr 8; + end; + + BitBlt(CacheDC, 0, 0, Size, 1, DIBDC, 0, 0, SRCCOPY); + end; + + finally + DeleteDC(CacheDC); + DeleteDC(DIBDC); + DeleteObject(DIBSection); + ReleaseDC(0, ScreenDC); + end; +end; + +function FindCacheItem(Color: TColorRef; Roughness: Integer): Integer; +begin + Result := THREAD_CACHE_SIZE - 1; + while Result >= 0 do + if (ThreadCache[Result].BaseColor = Color) and (ThreadCache[Result].Roughness = Roughness) then Exit + else Dec(Result); +end; + +function GetCacheItem(Color: TColorRef; Roughness: Integer): Integer; +begin + Result := FindCacheItem(Color, Roughness); + if Result >= 0 then Exit + else + begin + Result := NextCacheEntry; + MakeCacheItem(ThreadCache[Result], Color, Roughness); + NextCacheEntry := (NextCacheEntry + 1) mod THREAD_CACHE_SIZE; + end; +end; + +procedure BrushedFill(DC: HDC; Origin: PPoint; ARect: TRect; Color: TColor; Roughness: Integer); +const + ZeroOrigin: TPoint = (X: 0; Y: 0); +var + CR: TColorRef; + X, Y: Integer; + CacheIndex: Integer; + TemplateIndex: Integer; + CacheDC: HDC; + Size: Integer; + BoxR: TRect; +begin + if (Color = clNone) or not RectVisible(DC, ARect) then Exit; + CR := GetBGR(ColorToRGB(Color)); + if Origin = nil then Origin := @ZeroOrigin; + CacheIndex := GetCacheItem(CR, Roughness); + GetClipBox(DC, BoxR); + IntersectRect(ARect, ARect, BoxR); + SaveDC(DC); + with ARect do IntersectClipRect(DC, Left, Top, Right, Bottom); + + CacheDC := CreateCompatibleDC(0); + for Y := ARect.Top to ARect.Bottom - 1 do + begin + TemplateIndex := RandThreadIndex[(65536 + Y - Origin.Y) mod 1024]; + Size := Length(ThreadTemplates[TemplateIndex]); + X := -RandThreadPositions[(65536 + Y - Origin.Y) mod 1024] + Origin.X; + SelectObject(CacheDC, ThreadCache[CacheIndex].Bitmaps[TemplateIndex]); + while X < ARect.Right do + begin + if X + Size >= ARect.Left then BitBlt(DC, X, Y, Size, 1, CacheDC, 0, 0, SRCCOPY); + Inc(X, Size); + end; + end; + DeleteDC(CacheDC); + + RestoreDC(DC, -1); +end; + +var + hMSImg: HModule; + +initialization + @UpdateLayeredWindow := GetProcAddress( + GetModuleHandle('user32.dll'), 'UpdateLayeredWindow'); + hMSImg := LoadLibrary('msimg32.dll'); + if hMSImg <> 0 then + begin + @AlphaBlend := GetProcAddress(hMSImg, 'AlphaBlend'); + @GradientFill := GetProcAddress(hMSImg, 'GradientFill'); + end; + InitializeStock; + InitializeBrushedFill; + ResetBrushedFillCache; +finalization + FinalizeBrushedFill; + FinalizeStock; + if hMSImg <> 0 then FreeLibrary(hMSImg); +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXUtils.pas.orig b/official/2.1.6+2.1.beta1/TBX/TBXUtils.pas.orig new file mode 100644 index 0000000..cdc2bd1 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXUtils.pas.orig @@ -0,0 +1,2263 @@ +unit TBXUtils; + +// TBX Package +// Copyright 2001-2004 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// $Id: TBXUtils.pas 11 2004-04-01 07:22:56Z Alex@ZEISS $ + +interface + +{$I TB2Ver.inc} +{$I TBX.inc} + +uses + Windows, Messages, Classes, SysUtils, Graphics, Controls, Forms, ImgList; + +{$IFDEF TBX_UNICODE} +function GetTextHeightW(DC: HDC): Integer; +function GetTextWidthW(DC: HDC; const S: WideString; StripAccelChar: Boolean): Integer; +procedure DrawRotatedTextW(DC: HDC; AText: WideString; const ARect: TRect; const AFormat: Cardinal); +function EscapeAmpersandsW(const S: WideString): WideString; +function FindAccelCharW(const S: WideString): WideChar; +function StripAccelCharsW(const S: WideString): WideString; +function StripTrailingPunctuationW(const S: WideString): WideString; +{$ENDIF} + +procedure GetRGB(C: TColor; out R, G, B: Integer); +function MixColors(C1, C2: TColor; W1: Integer): TColor; +function SameColors(C1, C2: TColor): Boolean; +function Lighten(C: TColor; Amount: Integer): TColor; +function NearestLighten(C: TColor; Amount: Integer): TColor; +function NearestMixedColor(C1, C2: TColor; W1: Integer): TColor; +function ColorIntensity(C: TColor): Integer; +function IsDarkColor(C: TColor; Threshold: Integer = 100): Boolean; +function Blend(C1, C2: TColor; W1: Integer): TColor; +procedure SetContrast(var Color: TColor; BkgndColor: TColor; Threshold: Integer); +procedure RGBtoHSL(RGB: TColor; out H, S, L : Single); +function HSLtoRGB(H, S, L: Single): TColor; +function GetBGR(C: TColorRef): Cardinal; + +{ A few drawing functions } +{ these functions recognize clNone value of TColor } + +procedure SetPixelEx(DC: HDC; X, Y: Integer; C: TColorRef; Alpha: Longword = $FF); +function CreatePenEx(Color: TColor): HPen; +function CreateBrushEx(Color: TColor): HBrush; +function CreateDitheredBrush(C1, C2: TColor): HBrush; +function FillRectEx(DC: HDC; const Rect: TRect; Color: TColor): Boolean; {$IFDEF COMPATIBLE_GFX}overload;{$ENDIF} +function FrameRectEx(DC: HDC; var Rect: TRect; Color: TColor; Adjust: Boolean): Boolean; {$IFDEF COMPATIBLE_GFX}overload;{$ENDIF} +procedure DrawLineEx(DC: HDC; X1, Y1, X2, Y2: Integer; Color: TColor); {$IFDEF COMPATIBLE_GFX}overload;{$ENDIF} +function PolyLineEx(DC: HDC; const Points: array of TPoint; Color: TColor): Boolean; +procedure PolygonEx(DC: HDC; const Points: array of TPoint; OutlineColor, FillColor: TColor); +procedure DitherRect(DC: HDC; const R: TRect; C1, C2: TColor); {$IFDEF COMPATIBLE_GFX}overload;{$ENDIF} +procedure Frame3D(DC: HDC; var Rect: TRect; TopColor, BottomColor: TColor; Adjust: Boolean); {$IFDEF COMPATIBLE_GFX}overload;{$ENDIF} +procedure DrawDraggingOutline(DC: HDC; const NewRect, OldRect: TRect); + +{ Gradients } +type + TGradientKind = (gkHorz, gkVert); + +procedure GradFill(DC: HDC; ARect: TRect; ClrTopLeft, ClrBottomRight: TColor; Kind: TGradientKind); +procedure BrushedFill(DC: HDC; Origin: PPoint; ARect: TRect; Color: TColor; Roughness: Integer); +procedure ResetBrushedFillCache; + +{ drawing functions for compatibility with previous versions } +{$IFDEF COMPATIBLE_GFX} +function FillRectEx(Canvas: TCanvas; const Rect: TRect; Color: TColor): Boolean; overload; +function FrameRectEx(Canvas: TCanvas; var Rect: TRect; Color: TColor; Adjust: Boolean = False): Boolean; overload; +procedure DrawLineEx(Canvas: TCanvas; X1, Y1, X2, Y2: Integer; Color: TColor); overload; +procedure DitherRect(Canvas: TCanvas; const R: TRect; C1, C2: TColor); overload; +procedure Frame3D(Canvas: TCanvas; var Rect: TRect; TopColor, BottomColor: TColor); overload; +function FillRectEx2(DC: HDC; const Rect: TRect; Color: TColor): Boolean; deprecated; +function FrameRectEx2(DC: HDC; var Rect: TRect; Color: TColor; Adjust: Boolean = False): Boolean; deprecated; +{$ENDIF} + +{ alternatives to fillchar and move routines what work with 32-bit aligned memory blocks } +procedure FillLongword(var X; Count: Integer; Value: Longword); +procedure MoveLongword(const Source; var Dest; Count: Integer); + +{ extended icon painting routines } +procedure DrawTBXIcon(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; HiContrast: Boolean); +procedure BlendTBXIcon(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; Opacity: Byte); +procedure HighlightTBXIcon(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; HighlightColor: TColor; Amount: Byte); +procedure DrawTBXIconShadow(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; Density: Integer); +procedure DrawTBXIconFlatShadow(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; ShadowColor: TColor); +procedure DrawTBXIconFullShadow(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; ShadowColor: TColor); + +procedure DrawGlyph(DC: HDC; X, Y: Integer; ImageList: TCustomImageList; ImageIndex: Integer; Color: TColor); overload; +procedure DrawGlyph(DC: HDC; const R: TRect; ImageList: TCustomImageList; ImageIndex: Integer; Color: TColor); overload; +procedure DrawGlyph(DC: HDC; X, Y: Integer; const Bits; Color: TColor); overload; +procedure DrawGlyph(DC: HDC; const R: TRect; Width, Height: Integer; const Bits; Color: TColor); overload; + +function GetClientSizeEx(Control: TWinControl): TPoint; + +const + SHD_DENSE = 0; + SHD_LIGHT = 1; + +{ An additional declaration for D4 compiler } +type + PColor = ^TColor; + +{ Stock Objects } +var + StockBitmap1, StockBitmap2: TBitmap; + StockMonoBitmap, StockCompatibleBitmap: TBitmap; + SmCaptionFont: TFont; + +const + ROP_DSPDxax = $00E20746; + +{ Support for window shadows } +type + TShadowEdges = set of (seTopLeft, seBottomRight); + TShadowStyle = (ssFlat, ssLayered, ssAlphaBlend); + + TShadow = class(TCustomControl) + protected + FOpacity: Byte; + FBuffer: TBitmap; + FClearRect: TRect; + FEdges: TShadowEdges; + FStyle: TShadowStyle; + FSaveBits: Boolean; + procedure GradR(const R: TRect); + procedure GradB(const R: TRect); + procedure GradBR(const R: TRect); + procedure GradTR(const R: TRect); + procedure GradBL(const R: TRect); + procedure CreateParams(var Params: TCreateParams); override; + procedure FillBuffer; virtual; abstract; + procedure WMNCHitTest(var Message: TMessage); message WM_NCHITTEST; + procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND; + public + constructor Create(const Bounds: TRect; Opacity: Byte; LoColor: Boolean; Edges: TShadowEdges); reintroduce; + procedure Clear(const R: TRect); + procedure Render; + procedure Show(ParentHandle: HWND); + end; + + THorzShadow = class(TShadow) + protected + procedure FillBuffer; override; + end; + + TVertShadow = class(TShadow) + protected + procedure FillBuffer; override; + end; + + TShadows = class + private + FSaveBits: Boolean; + procedure SetSaveBits(Value: Boolean); + protected + V1: TShadow; + H1: TShadow; + V2: TShadow; + H2: TShadow; + V3: TShadow; + H3: TShadow; + public + constructor Create(R1, R2: TRect; Size: Integer; Opacity: Byte; LoColor: Boolean); + destructor Destroy; override; + procedure Show(ParentHandle: HWND); + property SaveBits: Boolean read FSaveBits write SetSaveBits; + end; + +procedure RecreateStock; + +type + PBlendFunction = ^TBlendFunction; + TBlendFunction = packed record + BlendOp: Byte; + BlendFlags: Byte; + SourceConstantAlpha: Byte; + AlphaFormat: Byte; + end; + + TUpdateLayeredWindow = function(hWnd : hWnd; hdcDst : hDC; pptDst : PPoint; + psize : PSize; hdcSrc : hDC; pptSrc : PPoint; crKey : TColorRef; + pblend : PBlendFunction; dwFlags : Integer): Integer; stdcall; + + TAlphaBlend = function(hdcDest: HDC; nXOriginDest, nYOriginDest, + nWidthDest, nHeightDest: Integer; hdcSrc: HDC; + nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc: Integer; + blendFunction: TBlendFunction): BOOL; stdcall; + + TGradientFill = function(Handle: HDC; pVertex: Pointer; dwNumVertex: DWORD; + pMesh: Pointer; dwNumMesh: DWORD; dwMode: DWORD): DWORD; stdcall; + +var + UpdateLayeredWindow: TUpdateLayeredWindow = nil; + AlphaBlend: TAlphaBlend = nil; + GradientFill: TGradientFill = nil; + + +implementation + +{$R-}{$Q-} + +uses TB2Common, Math; + + +{$IFDEF TBX_UNICODE} + +function GetTextHeightW(DC: HDC): Integer; +var + TextMetric: TTextMetricW; +begin + GetTextMetricsW(DC, TextMetric); + Result := TextMetric.tmHeight; +end; + +function GetTextWidthW(DC: HDC; const S: WideString; StripAccelChar: Boolean): Integer; +var + Size: TSize; + S2: WideString; +begin + if StripAccelChar then + begin + S2 := StripAccelCharsW(S); + GetTextExtentPoint32W(DC, PWideChar(S2), Length(S2), Size); + end + else GetTextExtentPoint32W(DC, PWideChar(S), Length(S), Size); + Result := Size.cx; +end; + +procedure DrawRotatedTextW(DC: HDC; AText: WideString; const ARect: TRect; const AFormat: Cardinal); +{ Like DrawText, but draws the text at a 270 degree angle. + The format flag this function respects are + DT_NOPREFIX, DT_HIDEPREFIX, DT_CENTER, DT_END_ELLIPSIS, DT_NOCLIP } +var + RotatedFont, SaveFont: HFONT; + TextMetrics: TTextMetricW; + X, Y, P, I, SU, FU, W: Integer; + SaveAlign: UINT; + Clip: Boolean; + + function GetSize(DC: HDC; const S: WideString): Integer; + var + Size: TSize; + begin + GetTextExtentPoint32W(DC, PWideChar(S), Length(S), Size); + Result := Size.cx; + end; + +begin + if Length(AText) = 0 then Exit; + + RotatedFont := CreateRotatedFont(DC); + SaveFont := SelectObject(DC, RotatedFont); + + GetTextMetricsW(DC, TextMetrics); + X := ARect.Left + ((ARect.Right - ARect.Left) - TextMetrics.tmHeight) div 2; + + Clip := AFormat and DT_NOCLIP = 0; + + { Find the index of the character that should be underlined. Delete '&' + characters from the string. Like DrawText, only the last prefixed character + will be underlined. } + P := 0; + I := 1; + if AFormat and DT_NOPREFIX = 0 then + while I <= Length(AText) do + begin + if AText[I] = '&' then + begin + Delete(AText, I, 1); + if PWideChar(AText)[I - 1] <> '&' then P := I; + end; + Inc(I); + end; + + if AFormat and DT_END_ELLIPSIS <> 0 then + begin + if (Length(AText) > 1) and (GetSize(DC, AText) > ARect.Bottom - ARect.Top) then + begin + W := ARect.Bottom - ARect.Top; + if W > 2 then + begin + Delete(AText, Length(AText), 1); + while (Length(AText) > 1) and (GetSize(DC, AText + '...') > W) do + Delete(AText, Length(AText), 1); + end + else AText := AText[1]; + if P > Length(AText) then P := 0; + AText := AText + '...'; + end; + end; + + if AFormat and DT_CENTER <> 0 then + Y := ARect.Top + ((ARect.Bottom - ARect.Top) - GetSize(DC, AText)) div 2 + else + Y := ARect.Top; + + if Clip then + begin + SaveDC(DC); + with ARect do IntersectClipRect(DC, Left, Top, Right, Bottom); + end; + + SaveAlign := SetTextAlign(DC, TA_BOTTOM); + TextOutW(DC, X, Y, PWideChar(AText), Length(AText)); + SetTextAlign(DC, SaveAlign); + + { Underline } + if (P > 0) and (AFormat and DT_HIDEPREFIX = 0) then + begin + SU := GetTextWidthW(DC, Copy(AText, 1, P - 1), False); + FU := SU + GetTextWidthW(DC, PWideChar(AText)[P - 1], False); + Inc(X, TextMetrics.tmDescent - 2); + DrawLineEx(DC, X, Y + SU, X, Y + FU, GetTextColor(DC)); + end; + + if Clip then RestoreDC(DC, -1); + + SelectObject(DC, SaveFont); + DeleteObject(RotatedFont); +end; + +function EscapeAmpersandsW(const S: WideString): WideString; +var + I: Integer; +begin + Result := S; + I := 1; + while I <= Length(Result) do + begin + if Result[I] = '&' then + begin + Inc(I); + Insert('&', Result, I); + end; + Inc(I); + end; +end; + +function FindAccelCharW(const S: WideString): WideChar; +var + PStart, P: PWideChar; +begin + { locate the last char with '&' prefix } + Result := #0; + if Length(S) > 0 then + begin + PStart := PWideChar(S); + P := PStart; + Inc(P, Length(S) - 2); + while P >= PStart do + begin + if P^ = '&' then + begin + if (P = PStart) or (PWideChar(Integer(P) - 2)^ <> '&') then + begin + Result := PWideChar(Integer(P) + 2)^; + Exit; + end + else Dec(P); + end; + Dec(P); + end; + end; +end; + +function StripAccelCharsW(const S: WideString): WideString; +var + I: Integer; +begin + Result := S; + I := 1; + while I <= Length(Result) do + begin + if Result[I] = '&' then + System.Delete(Result, I, 1); + Inc(I); + end; +end; + +function StripTrailingPunctuationW(const S: WideString): WideString; +var + L: Integer; +begin + Result := S; + L := Length(Result); + if (L > 1) and (Result[L] = ':') then SetLength(Result, L - 1) + else if (L > 3) and (Result[L - 2] = '.') and (Result[L - 1] = '.') and + (Result[L] = '.') then SetLength(Result, L - 3); +end; + +{$ENDIF} + + + +type + PPoints = ^TPoints; + TPoints = array [0..0] of TPoint; + +const + WeightR: single = 0.764706; + WeightG: single = 1.52941; + WeightB: single = 0.254902; + +procedure GetRGB(C: TColor; out R, G, B: Integer); +begin + if Integer(C) < 0 then C := GetSysColor(C and $000000FF); + R := C and $FF; + G := C shr 8 and $FF; + B := C shr 16 and $FF; +end; + +function MixColors(C1, C2: TColor; W1: Integer): TColor; +var + W2: Cardinal; +begin + Assert(W1 in [0..255]); + W2 := W1 xor 255; + if Integer(C1) < 0 then C1 := GetSysColor(C1 and $000000FF); + if Integer(C2) < 0 then C2 := GetSysColor(C2 and $000000FF); + Result := Integer( + ((Cardinal(C1) and $FF00FF) * Cardinal(W1) + + (Cardinal(C2) and $FF00FF) * W2) and $FF00FF00 + + ((Cardinal(C1) and $00FF00) * Cardinal(W1) + + (Cardinal(C2) and $00FF00) * W2) and $00FF0000) shr 8; +end; + +function SameColors(C1, C2: TColor): Boolean; +begin + if C1 < 0 then C1 := GetSysColor(C1 and $000000FF); + if C2 < 0 then C2 := GetSysColor(C2 and $000000FF); + Result := C1 = C2; +end; + +function Lighten(C: TColor; Amount: Integer): TColor; +var + R, G, B: Integer; +begin + if C < 0 then C := GetSysColor(C and $000000FF); + R := C and $FF + Amount; + G := C shr 8 and $FF + Amount; + B := C shr 16 and $FF + Amount; + if R < 0 then R := 0 else if R > 255 then R := 255; + if G < 0 then G := 0 else if G > 255 then G := 255; + if B < 0 then B := 0 else if B > 255 then B := 255; + Result := R or (G shl 8) or (B shl 16); +end; + +function NearestLighten(C: TColor; Amount: Integer): TColor; +begin + Result := GetNearestColor(StockCompatibleBitmap.Canvas.Handle, Lighten(C, Amount)); +end; + +function NearestMixedColor(C1, C2: TColor; W1: Integer): TColor; +begin + Result := MixColors(C1, C2, W1); + Result := GetNearestColor(StockCompatibleBitmap.Canvas.Handle, Result); +end; + +function ColorIntensity(C: TColor): Integer; +begin + if C < 0 then C := GetSysColor(C and $FF); + Result := ((C shr 16 and $FF) * 30 + (C shr 8 and $FF) * 150 + (C and $FF) * 76) shr 8; +end; + +function IsDarkColor(C: TColor; Threshold: Integer = 100): Boolean; +begin + if C < 0 then C := GetSysColor(C and $FF); + Threshold := Threshold shl 8; + Result := ((C and $FF) * 76 + (C shr 8 and $FF) * 150 + (C shr 16 and $FF) * 30 ) < Threshold; +end; + +function Blend(C1, C2: TColor; W1: Integer): TColor; +var + W2, A1, A2, D, F, G: Integer; +begin + if C1 < 0 then C1 := GetSysColor(C1 and $FF); + if C2 < 0 then C2 := GetSysColor(C2 and $FF); + + if W1 >= 100 then D := 1000 + else D := 100; + + W2 := D - W1; + F := D div 2; + + A2 := C2 shr 16 * W2; + A1 := C1 shr 16 * W1; + G := (A1 + A2 + F) div D and $FF; + Result := G shl 16; + + A2 := (C2 shr 8 and $FF) * W2; + A1 := (C1 shr 8 and $FF) * W1; + G := (A1 + A2 + F) div D and $FF; + Result := Result or G shl 8; + + A2 := (C2 and $FF) * W2; + A1 := (C1 and $FF) * W1; + G := (A1 + A2 + F) div D and $FF; + Result := Result or G; +end; + +function ColorDistance(C1, C2: Integer): Single; +var + DR, DG, DB: Integer; +begin + DR := (C1 and $FF) - (C2 and $FF); + Result := Sqr(DR * WeightR); + DG := (C1 shr 8 and $FF) - (C2 shr 8 and $FF); + Result := Result + Sqr(DG * WeightG); + DB := (C1 shr 16) - (C2 shr 16); + Result := Result + Sqr(DB * WeightB); + Result := SqRt(Result); +end; + +function GetAdjustedThreshold(BkgndIntensity, Threshold: Single): Single; +begin + if BkgndIntensity < 220 then Result := (2 - BkgndIntensity / 220) * Threshold + else Result := Threshold; +end; + +function IsContrastEnough(AColor, ABkgndColor: Integer; + DoAdjustThreshold: Boolean; Threshold: Single): Boolean; +begin + if DoAdjustThreshold then + Threshold := GetAdjustedThreshold(ColorDistance(ABkgndColor, $000000), Threshold); + Result := ColorDistance(ABkgndColor, AColor) > Threshold; +end; + +procedure AdjustContrast(var AColor: Integer; ABkgndColor: Integer; Threshold: Single); +var + x, y, z: Single; + r, g, b: Single; + RR, GG, BB: Integer; + i1, i2, s, q, w: Single; + DoInvert: Boolean; +begin + i1 := ColorDistance(AColor, $000000); + i2 := ColorDistance(ABkgndColor, $000000); + Threshold := GetAdjustedThreshold(i2, Threshold); + + if i1 > i2 then DoInvert := i2 < 442 - Threshold + else DoInvert := i2 < Threshold; + + x := (ABkgndColor and $FF) * WeightR; + y := (ABkgndColor shr 8 and $FF) * WeightG; + z := (ABkgndColor shr 16) * WeightB; + + r := (AColor and $FF) * WeightR; + g := (AColor shr 8 and $FF) * WeightG; + b := (AColor shr 16) * WeightB; + + if DoInvert then + begin + r := 195 - r; + g := 390 - g; + b := 65 - b; + x := 195 - x; + y := 390 - y; + z := 65 - z; + end; + + s := Sqrt(Sqr(b) + Sqr(g) + Sqr(r)); + if s < 0.01 then s := 0.01; + + q := (r * x + g * y + b * z) / S; + + x := Q / S * r - x; + y := Q / S * g - y; + z := Q / S * b - z; + + w := Sqrt(Sqr(Threshold) - Sqr(x) - Sqr(y) - Sqr(z)); + + r := (q - w) * r / s; + g := (q - w) * g / s; + b := (q - w) * b / s; + + if DoInvert then + begin + r := 195 - r; + g := 390 - g; + b := 65 - b; + end; + + if r < 0 then r := 0 else if r > 195 then r := 195; + if g < 0 then g := 0 else if g > 390 then g := 390; + if b < 0 then b := 0 else if b > 65 then b := 65; + + RR := Trunc(r * (1 / WeightR) + 0.5); + GG := Trunc(g * (1 / WeightG) + 0.5); + BB := Trunc(b * (1 / WeightB) + 0.5); + + if RR > $FF then RR := $FF else if RR < 0 then RR := 0; + if GG > $FF then GG := $FF else if GG < 0 then GG := 0; + if BB > $FF then BB := $FF else if BB < 0 then BB := 0; + + AColor := (BB and $FF) shl 16 or (GG and $FF) shl 8 or (RR and $FF); +end; + +procedure SetContrast(var Color: TColor; BkgndColor: TColor; Threshold: Integer); +var + t: Single; +begin + if Color < 0 then Color := GetSysColor(Color and $FF); + if BkgndColor < 0 then BkgndColor := GetSysColor(BkgndColor and $FF); + t := Threshold; + if not IsContrastEnough(Color, BkgndColor, True, t) then + AdjustContrast(Integer(Color), BkgndColor, t); +end; + +procedure RGBtoHSL(RGB: TColor; out H, S, L : Single); +var + R, G, B, D, Cmax, Cmin: Single; +begin + if RGB < 0 then RGB := GetSysColor(RGB and $FF); + R := GetRValue(RGB) / 255; + G := GetGValue(RGB) / 255; + B := GetBValue(RGB) / 255; + Cmax := Max(R, Max(G, B)); + Cmin := Min(R, Min(G, B)); + L := (Cmax + Cmin) / 2; + + if Cmax = Cmin then + begin + H := 0; + S := 0 + end + else + begin + D := Cmax - Cmin; + if L < 0.5 then S := D / (Cmax + Cmin) + else S := D / (2 - Cmax - Cmin); + if R = Cmax then H := (G - B) / D + else + if G = Cmax then H := 2 + (B - R) / D + else H := 4 + (R - G) / D; + H := H / 6; + if H < 0 then H := H + 1 + end; +end; + +function HSLtoRGB(H, S, L: Single): TColor; +const + OneOverThree = 1 / 3; +var + M1, M2: Single; + R, G, B: Byte; + + function HueToColor(Hue: Single): Byte; + var + V: Double; + begin + Hue := Hue - Floor(Hue); + if 6 * Hue < 1 then V := M1 + (M2 - M1) * Hue * 6 + else if 2 * Hue < 1 then V := M2 + else if 3 * Hue < 2 then V := M1 + (M2 - M1) * (2 / 3 - Hue) * 6 + else V := M1; + Result := Round(255 * V); + end; + +begin + if S = 0 then + begin + R := Round(255 * L); + G := R; + B := R; + end + else + begin + if L <= 0.5 then M2 := L * (1 + S) + else M2 := L + S - L * S; + M1 := 2 * L - M2; + R := HueToColor(H + OneOverThree); + G := HueToColor(H); + B := HueToColor(H - OneOverThree) + end; + Result := RGB(R, G, B); +end; + +{ Drawing routines } + +function GetBGR(C: TColorRef): Cardinal; +asm + MOV ECX,EAX // this function swaps R and B bytes in ABGR + SHR EAX,16 + XCHG AL,CL + MOV AH,$00 // and writes $FF into A component + SHL EAX,16 + MOV AX,CX +end; + +procedure SetPixelEx(DC: HDC; X, Y: Integer; C: TColorRef; Alpha: Longword = $FF); +var + W2: Cardinal; + B: TColorRef; +begin + if Alpha <= 0 then Exit + else if Alpha >= 255 then SetPixelV(DC, X, Y, C) + else + begin + B := GetPixel(DC, X, Y); + if B <> CLR_INVALID then + begin + Inc(Alpha, Integer(Alpha > 127)); + W2 := 256 - Alpha; + B := + ((C and $FF00FF) * Alpha + (B and $FF00FF) * W2 + $007F007F) and $FF00FF00 + + ((C and $00FF00) * Alpha + (B and $00FF00) * W2 + $00007F00) and $00FF0000; + SetPixelV(DC, X, Y, B shr 8); + end; + end; +end; + +function CreatePenEx(Color: TColor): HPen; +begin + if Color = clNone then Result := CreatePen(PS_NULL, 1, 0) + else if Color < 0 then Result := CreatePen(PS_SOLID, 1, GetSysColor(Color and $000000FF)) + else Result := CreatePen(PS_SOLID, 1, Color); +end; + +function CreateBrushEx(Color: TColor): HBrush; +var + LB: TLogBrush; +begin + if Color = clNone then + begin + LB.lbStyle := BS_HOLLOW; + Result := CreateBrushIndirect(LB); + end + else if Color < 0 then Result := GetSysColorBrush(Color and $000000FF) + else Result := CreateSolidBrush(Color); +end; + +function FillRectEx(DC: HDC; const Rect: TRect; Color: TColor): Boolean; +var + Brush: HBRUSH; +begin + Result := Color <> clNone; + if Result then + begin + if Color < 0 then Brush := GetSysColorBrush(Color and $000000FF) + else Brush := CreateSolidBrush(Color); + Windows.FillRect(DC, Rect, Brush); + DeleteObject(Brush); + end; +end; + +function FrameRectEx(DC: HDC; var Rect: TRect; Color: TColor; Adjust: Boolean): Boolean; +var + Brush: HBRUSH; +begin + Result := Color <> clNone; + if Result then + begin + if Color < 0 then Brush := GetSysColorBrush(Color and $000000FF) + else Brush := CreateSolidBrush(Color); + Windows.FrameRect(DC, Rect, Brush); + DeleteObject(Brush); + end; + if Adjust then with Rect do + begin + Inc(Left); Dec(Right); + Inc(Top); Dec(Bottom); + end; +end; + +procedure DrawLineEx(DC: HDC; X1, Y1, X2, Y2: Integer; Color: TColor); +var + OldPen, Pen: HPen; +begin + Pen := CreatePen(PS_SOLID, 1, ColorToRGB(Color)); + OldPen := SelectObject(DC, Pen); + Windows.MoveToEx(DC, X1, Y1, nil); + Windows.LineTo(DC, X2, Y2); + SelectObject(DC, OldPen); + DeleteObject(Pen); +end; + +function PolyLineEx(DC: HDC; const Points: array of TPoint; Color: TColor): Boolean; overload; +var + Pen, OldPen: HPEN; +begin + Result := Color <> clNone; + if Result then + begin + if Color < 0 then Color := GetSysColor(Color and $FF); + Pen := CreatePen(PS_SOLID, 1, Color); + OldPen := SelectObject(DC, Pen); + Windows.Polyline(DC, PPoints(@Points[0])^, Length(Points)); + SelectObject(DC, OldPen); + DeleteObject(Pen); + end; +end; + +procedure PolygonEx(DC: HDC; const Points: array of TPoint; OutlineColor, FillColor: TColor); +var + OldBrush, Brush: HBrush; + OldPen, Pen: HPen; +begin + if (OutlineColor = clNone) and (FillColor = clNone) then Exit; + Pen := CreatePenEx(OutlineColor); + Brush := CreateBrushEx(FillColor); + OldPen := SelectObject(DC, Pen); + OldBrush := SelectObject(DC, Brush); + Windows.Polygon(DC, PPoints(@Points[0])^, Length(Points)); + SelectObject(DC, OldBrush); + SelectObject(DC, OldPen); + DeleteObject(Brush); + DeleteObject(Pen); +end; + +function CreateDitheredBrush(C1, C2: TColor): HBrush; +var + B: TBitmap; +begin + B := AllocPatternBitmap(C1, C2); + B.HandleType := bmDDB; + Result := CreatePatternBrush(B.Handle); +end; + +procedure DitherRect(DC: HDC; const R: TRect; C1, C2: TColor); +var + Brush: HBRUSH; +begin + Brush := CreateDitheredBrush(C1, C2); + FillRect(DC, R, Brush); + DeleteObject(Brush); +end; + +procedure Frame3D(DC: HDC; var Rect: TRect; TopColor, BottomColor: TColor; Adjust: Boolean); +var + TopRight, BottomLeft: TPoint; +begin + with Rect do + begin + Dec(Bottom); Dec(Right); + TopRight.X := Right; + TopRight.Y := Top; + BottomLeft.X := Left; + BottomLeft.Y := Bottom; + PolyLineEx(DC, [BottomLeft, TopLeft, TopRight], TopColor); + Dec(BottomLeft.X); + PolyLineEx(DC, [TopRight, BottomRight, BottomLeft], BottomColor); + if Adjust then + begin + Inc(Left); + Inc(Top); + end + else + begin + Dec(Right); + Dec(Bottom); + end; + end; +end; + + +{$IFDEF COMPATIBLE_GFX} +procedure DitherRect(Canvas: TCanvas; const R: TRect; C1, C2: TColor); +begin + DitherRect(Canvas.Handle, R, C1, C2); +end; + +procedure Frame3D(Canvas: TCanvas; var Rect: TRect; TopColor, BottomColor: TColor); +var + TopRight, BottomLeft: TPoint; +begin + with Canvas, Rect do + begin + Pen.Width := 1; + Dec(Bottom); Dec(Right); + TopRight.X := Right; + TopRight.Y := Top; + BottomLeft.X := Left; + BottomLeft.Y := Bottom; + Pen.Color := TopColor; + PolyLine([BottomLeft, TopLeft, TopRight]); + Pen.Color := BottomColor; + Dec(BottomLeft.X); + PolyLine([TopRight, BottomRight, BottomLeft]); + Inc(Left); Inc(Top); + end; +end; + +function FillRectEx(Canvas: TCanvas; const Rect: TRect; Color: TColor): Boolean; +begin + Result := FillRectEx(Canvas.Handle, Rect, Color); +end; + +function FillRectEx2(DC: HDC; const Rect: TRect; Color: TColor): Boolean; deprecated; +begin + Result := FillRectEx(DC, Rect, Color); +end; + +function FrameRectEx(Canvas: TCanvas; var Rect: TRect; Color: TColor; Adjust: Boolean = False): Boolean; +begin + Result := FrameRectEx(Canvas.Handle, Rect, Color, Adjust); +end; + +function FrameRectEx2(DC: HDC; var Rect: TRect; Color: TColor; Adjust: Boolean = False): Boolean; deprecated; +begin + Result := FrameRectEx(DC, Rect, Color, Adjust); +end; + +procedure DrawLineEx(Canvas: TCanvas; X1, Y1, X2, Y2: Integer; Color: TColor); +begin + DrawLineEx(Canvas.Handle, X1, Y1, X2, Y2, Color); +end; +{$ENDIF} + +procedure DrawDraggingOutline(DC: HDC; const NewRect, OldRect: TRect); +var + Sz: TSize; +begin + Sz.CX := 3; Sz.CY := 2; + DrawHalftoneInvertRect(DC, @NewRect, @OldRect, Sz, Sz); +end; + +procedure FillLongword(var X; Count: Integer; Value: Longword); +asm +// EAX = X; EDX = Count; ECX = Value + PUSH EDI + MOV EDI,EAX // Point EDI to destination + MOV EAX,ECX + MOV ECX,EDX + TEST ECX,ECX + JS @exit + REP STOSD // Fill count dwords +@exit: + POP EDI +end; + +procedure MoveLongword(const Source; var Dest; Count: Integer); +asm +// EAX = Source; EDX = Dest; ECX = Count + PUSH ESI + PUSH EDI + MOV ESI,EAX // Source + MOV EDI,EDX // Destination + MOV EAX,ECX // Counter + CMP EDI,ESI + JE @exit + REP MOVSD +@exit: + POP EDI + POP ESI +end; + +procedure DrawTBXIcon(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; HiContrast: Boolean); +const + CWeirdColor = $00203241; +var + ImageWidth, ImageHeight: Integer; + I, J: Integer; + Src, Dst: PColor; + S, C: TColor; +begin + if not HiContrast then + begin + ImageList.Draw(Canvas, R.Left, R.Top, ImageIndex); + Exit; + end; + + ImageWidth := R.Right - R.Left; + ImageHeight := R.Bottom - R.Top; + with ImageList do + begin + if Width < ImageWidth then ImageWidth := Width; + if Height < ImageHeight then ImageHeight := Height; + end; + + StockBitmap1.Width := ImageWidth; + StockBitmap1.Height := ImageHeight; + StockBitmap2.Width := ImageWidth; + StockBitmap2.Height := ImageHeight; + + BitBlt(StockBitmap1.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, + Canvas.Handle, R.Left, R.Top, SRCCOPY); + for J := 0 to ImageHeight - 1 do + FillLongWord(StockBitmap2.ScanLine[J]^, ImageWidth, CWeirdColor); + ImageList.Draw(StockBitmap2.Canvas, 0, 0, ImageIndex); + + for J := 0 to ImageHeight - 1 do + begin + Src := StockBitmap2.ScanLine[J]; + Dst := StockBitmap1.ScanLine[J]; + for I := 0 to ImageWidth - 1 do + begin + S := Src^ and $00FFFFFF; + if S <> CWeirdColor then + begin + C := (S and $FF0000) shr 16 * 76 + (S and $00FF00) shr 8 * 150 + + (S and $0000FF) * 29; + if C > $FD00 then S := $000000 + else if C < $6400 then S := $FFFFFF; + Dst^ := Lighten(S, 32); + end; + Inc(Src); + Inc(Dst); + end; + end; + BitBlt(Canvas.Handle, R.Left, R.Top, ImageWidth, ImageHeight, + StockBitmap1.Canvas.Handle, 0, 0, SRCCOPY); +end; + +procedure BlendTBXIcon(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; Opacity: Byte); +const + CWeirdColor = $00203241; +var + ImageWidth, ImageHeight: Integer; + I, J: Integer; + Src, Dst: ^Cardinal; + S, C, CBRB, CBG: Cardinal; + Wt1, Wt2: Cardinal; +begin + Wt2 := Opacity; + Wt1 := 255 - Wt2; + ImageWidth := R.Right - R.Left; + ImageHeight := R.Bottom - R.Top; + with ImageList do + begin + if Width < ImageWidth then ImageWidth := Width; + if Height < ImageHeight then ImageHeight := Height; + end; + + StockBitmap1.Width := ImageWidth; + StockBitmap1.Height := ImageHeight; + StockBitmap2.Width := ImageWidth; + StockBitmap2.Height := ImageHeight; + + BitBlt(StockBitmap1.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, + Canvas.Handle, R.Left, R.Top, SRCCOPY); + BitBlt(StockBitmap2.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, + StockBitmap1.Canvas.Handle, 0, 0, SRCCOPY); + ImageList.Draw(StockBitmap2.Canvas, 0, 0, ImageIndex, True); + + for J := 0 to ImageHeight - 1 do + begin + Src := StockBitmap2.ScanLine[J]; + Dst := StockBitmap1.ScanLine[J]; + for I := 0 to ImageWidth - 1 do + begin + S := Src^; + if S <> Dst^ then + begin + CBRB := (Dst^ and $00FF00FF) * Wt1; + CBG := (Dst^ and $0000FF00) * Wt1; + C := ((S and $FF00FF) * Wt2 + CBRB) and $FF00FF00 + ((S and $00FF00) * Wt2 + CBG) and $00FF0000; + Dst^ := C shr 8; + end; + Inc(Src); + Inc(Dst); + end; + end; + BitBlt(Canvas.Handle, R.Left, R.Top, ImageWidth, ImageHeight, + StockBitmap1.Canvas.Handle, 0, 0, SRCCOPY); +end; + +procedure HighlightTBXIcon(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; HighlightColor: TColor; Amount: Byte); +const + CWeirdColor = $00203241; +var + ImageWidth, ImageHeight: Integer; + I, J: Integer; + Src, Dst: PColor; + S, C: Cardinal; + CBRB, CBG: Cardinal; + W1, W2: Cardinal; +begin + ImageWidth := R.Right - R.Left; + ImageHeight := R.Bottom - R.Top; + with ImageList do + begin + if Width < ImageWidth then ImageWidth := Width; + if Height < ImageHeight then ImageHeight := Height; + end; + + StockBitmap1.Width := ImageWidth; + StockBitmap1.Height := ImageHeight; + StockBitmap2.Width := ImageWidth; + StockBitmap2.Height := ImageHeight; + + BitBlt(StockBitmap1.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, + Canvas.Handle, R.Left, R.Top, SRCCOPY); + for J := 0 to ImageHeight - 1 do + FillLongWord(StockBitmap2.ScanLine[J]^, ImageWidth, CWeirdColor); + ImageList.Draw(StockBitmap2.Canvas, 0, 0, ImageIndex); + + W2 := Amount; + W1 := 255 - W2; + HighlightColor := GetBGR(ColorToRGB(HighlightColor)); + CBRB := (Cardinal(HighlightColor) and $00FF00FF) * W1; + CBG := (Cardinal(HighlightColor) and $0000FF00) * W1; + + for J := 0 to ImageHeight - 1 do + begin + Src := StockBitmap2.ScanLine[J]; + Dst := StockBitmap1.ScanLine[J]; + for I := 0 to ImageWidth - 1 do + begin + S := Src^ and $00FFFFFF; + if S <> CWeirdColor then + begin + C := ((S and $FF00FF) * W2 + CBRB) and $FF00FF00 + ((S and $00FF00) * W2 + CBG) and $00FF0000; + Dst^ := C shr 8; + end; + Inc(Src); + Inc(Dst); + end; + end; + BitBlt(Canvas.Handle, R.Left, R.Top, ImageWidth, ImageHeight, + StockBitmap1.Canvas.Handle, 0, 0, SRCCOPY); +end; + +procedure DrawTBXIconShadow(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; Density: Integer); +const + D_DIV: array [0..2] of Cardinal = (3, 8, 20); + D_ADD: array [0..2] of Cardinal = (255 - 255 div 3, 255 - 255 div 8, 255 - 255 div 20); +var + ImageWidth, ImageHeight: Integer; + I, J: Integer; + Src, Dst: ^Cardinal; + S, C, CBRB, CBG: Cardinal; +begin + Assert(Density in [0..2]); + + ImageWidth := R.Right - R.Left; + ImageHeight := R.Bottom - R.Top; + with ImageList do + begin + if Width < ImageWidth then ImageWidth := Width; + if Height < ImageHeight then ImageHeight := Height; + end; + + StockBitmap1.Width := ImageWidth; + StockBitmap1.Height := ImageHeight; + StockBitmap2.Width := ImageWidth; + StockBitmap2.Height := ImageHeight; + + BitBlt(StockBitmap1.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, + Canvas.Handle, R.Left, R.Top, SRCCOPY); + BitBlt(StockBitmap2.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, + StockBitmap1.Canvas.Handle, 0, 0, SRCCOPY); + ImageList.Draw(StockBitmap2.Canvas, 0, 0, ImageIndex, True); + + for J := 0 to ImageHeight - 1 do + begin + Src := StockBitmap2.ScanLine[J]; + Dst := StockBitmap1.ScanLine[J]; + for I := 0 to ImageWidth - 1 do + begin + S := Src^; + if S <> Dst^ then + begin + CBRB := Dst^ and $00FF00FF; + CBG := Dst^ and $0000FF00; + C := ((S and $FF0000) shr 16 * 29 + (S and $00FF00) shr 8 * 150 + + (S and $0000FF) * 76) shr 8; + C := C div D_DIV[Density] + D_ADD[Density]; + Dst^ := ((CBRB * C and $FF00FF00) or (CBG * C and $00FF0000)) shr 8; + end; + Inc(Src); + Inc(Dst); + end; + end; + BitBlt(Canvas.Handle, R.Left, R.Top, ImageWidth, ImageHeight, + StockBitmap1.Canvas.Handle, 0, 0, SRCCOPY); +end; + +procedure DrawTBXIconFlatShadow(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; ShadowColor: TColor); +const + CShadowThreshold = 180 * 256; +var + ImageWidth, ImageHeight: Integer; + I, J: Integer; + P: ^Cardinal; + C: Cardinal; + SrcDC, DstDC: HDC; +begin + ImageWidth := R.Right - R.Left; + ImageHeight := R.Bottom - R.Top; + with ImageList do + begin + if Width < ImageWidth then ImageWidth := Width; + if Height < ImageHeight then ImageHeight := Height; + end; + + StockBitmap2.Width := ImageWidth; + StockBitmap2.Height := ImageHeight; + StockBitmap2.Canvas.Brush.Color := clWhite; + StockBitmap2.Canvas.FillRect(Rect(0, 0, ImageWidth, ImageHeight)); + ImageList.Draw(StockBitmap2.Canvas, 0, 0, ImageIndex, True); + + for J := 0 to ImageHeight - 1 do + begin + P := StockBitmap2.ScanLine[J]; + for I := 0 to ImageWidth - 1 do + begin + C := P^ and $00FFFFFF; + if C <> $0 then + begin + C := (C and $FF0000) shr 16 * 76 + (C and $00FF00) shr 8 * 150 + (C and $0000FF) * 29; + if C > CShadowThreshold then P^ := $00FFFFFF + else P^ := $00000000; + end; + Inc(P); + end; + end; + + StockMonoBitmap.Width := ImageWidth; + StockMonoBitmap.Height := ImageHeight; + StockMonoBitmap.Canvas.Brush.Color := clBlack; + BitBlt(StockMonoBitmap.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, + StockBitmap2.Canvas.Handle, 0, 0, SRCCOPY); + + SrcDC := StockMonoBitmap.Canvas.Handle; + Canvas.Brush.Color := ColorToRGB(ShadowColor); + DstDC := Canvas.Handle; + Windows.SetTextColor(DstDC, clWhite); + Windows.SetBkColor(DstDC, clBlack); + BitBlt(DstDC, R.Left, R.Top, ImageWidth, ImageHeight, SrcDC, 0, 0, ROP_DSPDxax); +end; + +procedure DrawTBXIconFullShadow(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; ShadowColor: TColor); +const + CWeirdColor = $00203241; +var + ImageWidth, ImageHeight: Integer; + I, J: Integer; + P: ^Cardinal; + C: Cardinal; + SrcDC, DstDC: HDC; +begin + ImageWidth := R.Right - R.Left; + ImageHeight := R.Bottom - R.Top; + with ImageList do + begin + if Width < ImageWidth then ImageWidth := Width; + if Height < ImageHeight then ImageHeight := Height; + end; + + StockBitmap2.Width := ImageWidth; + StockBitmap2.Height := ImageHeight; + for J := 0 to ImageHeight - 1 do + FillLongWord(StockBitmap2.ScanLine[J]^, ImageWidth, CWeirdColor); + ImageList.Draw(StockBitmap2.Canvas, 0, 0, ImageIndex, True); + + for J := 0 to ImageHeight - 1 do + begin + P := StockBitmap2.ScanLine[J]; + for I := 0 to ImageWidth - 1 do + begin + C := P^ and $00FFFFFF; + if C <> CWeirdColor then P^ := $00000000 + else P^ := $00FFFFFF; + Inc(P); + end; + end; + + StockMonoBitmap.Width := ImageWidth; + StockMonoBitmap.Height := ImageHeight; + StockMonoBitmap.Canvas.Brush.Color := clBlack; + BitBlt(StockMonoBitmap.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, + StockBitmap2.Canvas.Handle, 0, 0, SRCCOPY); + + SrcDC := StockMonoBitmap.Canvas.Handle; + Canvas.Brush.Color := ColorToRGB(ShadowColor); + DstDC := Canvas.Handle; + Windows.SetTextColor(DstDC, clWhite); + Windows.SetBkColor(DstDC, clBlack); + BitBlt(DstDC, R.Left, R.Top, ImageWidth, ImageHeight, SrcDC, 0, 0, ROP_DSPDxax); +end; + +procedure DrawGlyph(DC: HDC; X, Y: Integer; ImageList: TCustomImageList; ImageIndex: Integer; Color: TColor); +var + B: TBitmap; + OldTextColor, OldBkColor: Longword; + OldBrush, Brush: HBrush; +begin + if Color = clNone then Exit; + B := TBitmap.Create; + B.Monochrome := True; + ImageList.GetBitmap(ImageIndex, B); + OldTextColor := SetTextColor(DC, clBlack); + OldBkColor := SetBkColor(DC, clWhite); + if Color < 0 then Brush := GetSysColorBrush(Color and $FF) + else Brush := CreateSolidBrush(Color); + OldBrush := SelectObject(DC, Brush); + BitBlt(DC, X, Y, ImageList.Width, ImageList.Height, B.Canvas.Handle, 0, 0, ROP_DSPDxax); + SelectObject(DC, OldBrush); + if Color >= 0 then DeleteObject(Brush); + SetTextColor(DC, OldTextColor); + SetBkColor(DC, OldBkColor); + B.Free; +end; + +procedure DrawGlyph(DC: HDC; const R: TRect; ImageList: TCustomImageList; ImageIndex: Integer; Color: TColor); overload; +begin + DrawGlyph(DC, (R.Left + R.Right + 1 - ImageList.Width) div 2, (R.Top + R.Bottom + 1 - ImageList.Height) div 2, ImageList, ImageIndex, Color); +end; + +procedure DrawGlyph(DC: HDC; X, Y: Integer; const Bits; Color: TColor); overload; +var + B: TBitmap; + OldTextColor, OldBkColor: Longword; + OldBrush, Brush: HBrush; +begin + B := TBitmap.Create; + B.Handle := CreateBitmap(8, 8, 1, 1, @Bits); + OldTextColor := SetTextColor(DC, clBlack); + OldBkColor := SetBkColor(DC, clWhite); + if Color < 0 then Brush := GetSysColorBrush(Color and $FF) + else Brush := CreateSolidBrush(Color); + OldBrush := SelectObject(DC, Brush); + BitBlt(DC, X, Y, 8, 8, B.Canvas.Handle, 0, 0, ROP_DSPDxax); + SelectObject(DC, OldBrush); + if Color >= 0 then DeleteObject(Brush); + SetTextColor(DC, OldTextColor); + SetBkColor(DC, OldBkColor); + B.Free; +end; + +procedure DrawGlyph(DC: HDC; const R: TRect; Width, Height: Integer; const Bits; Color: TColor); overload; +var + B: TBitmap; + OldTextColor, OldBkColor: Longword; + OldBrush, Brush: HBrush; +begin + B := TBitmap.Create; + B.Handle := CreateBitmap(8, 8, 1, 1, @Bits); + OldTextColor := SetTextColor(DC, clBlack); + OldBkColor := SetBkColor(DC, clWhite); + if Color < 0 then Brush := GetSysColorBrush(Color and $FF) + else Brush := CreateSolidBrush(Color); + OldBrush := SelectObject(DC, Brush); + BitBlt(DC, (R.Left + R.Right + 1 - Width) div 2, (R.Top + R.Bottom + 1 - Height) div 2, Width, Height, B.Canvas.Handle, 0, 0, ROP_DSPDxax); + SelectObject(DC, OldBrush); + if Color >= 0 then DeleteObject(Brush); + SetTextColor(DC, OldTextColor); + SetBkColor(DC, OldBkColor); + B.Free; +end; + +type + TCustomFormAccess = class(TCustomForm); + +function GetClientSizeEx(Control: TWinControl): TPoint; +var + R: TRect; +begin + if (Control is TCustomForm) and (TCustomFormAccess(Control).FormStyle = fsMDIForm) + and not (csDesigning in Control.ComponentState) then + GetWindowRect(TCustomFormAccess(Control).ClientHandle, R) + else + R := Control.ClientRect; + Result.X := R.Right - R.Left; + Result.Y := R.Bottom - R.Top; +end; + +procedure InitializeStock; +var + NonClientMetrics: TNonClientMetrics; +begin + StockBitmap1 := TBitmap.Create; + StockBitmap1.PixelFormat := pf32bit; + StockBitmap2 := TBitmap.Create; + StockBitmap2.PixelFormat := pf32bit; + StockMonoBitmap := TBitmap.Create; + StockMonoBitmap.Monochrome := True; + StockCompatibleBitmap := TBitmap.Create; + StockCompatibleBitmap.Width := 8; + StockCompatibleBitmap.Height := 8; + SmCaptionFont := TFont.Create; + NonClientMetrics.cbSize := SizeOf(NonClientMetrics); + if SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @NonClientMetrics, 0) then + SmCaptionFont.Handle := CreateFontIndirect(NonClientMetrics.lfSmCaptionFont); +end; + +procedure FinalizeStock; +begin + SmCaptionFont.Free; + SmCaptionFont := nil; + StockCompatibleBitmap.Free; + StockMonoBitmap.Free; + StockBitmap2.Free; + StockBitmap1.Free; +end; + +procedure RecreateStock; +begin + FinalizeStock; + InitializeStock; +end; + +{ TShadow } //////////////////////////////////////////////////////////////////// + +procedure TShadow.Clear(const R: TRect); +begin + FClearRect := R; +end; + +constructor TShadow.Create(const Bounds: TRect; Opacity: Byte; LoColor: Boolean; Edges: TShadowEdges); +begin + inherited Create(nil); + Hide; + ParentWindow := Application.Handle; + BoundsRect := Bounds; + Color := clBtnShadow; + FOpacity := Opacity; + FEdges := Edges; + FSaveBits := False; + + if LoColor then FStyle := ssFlat + else if (@UpdateLayeredWindow <> nil) and (@AlphaBlend <> nil) then + FStyle := ssLayered + else if @AlphaBlend <> nil then + FStyle := ssAlphaBlend + else + FStyle := ssFlat; +end; + +procedure TShadow.CreateParams(var Params: TCreateParams); +begin + inherited; + with Params do + begin + Style := (Style and not (WS_CHILD or WS_GROUP or WS_TABSTOP)) or WS_POPUP; + ExStyle := ExStyle or WS_EX_TOOLWINDOW; + if FSaveBits then WindowClass.Style := WindowClass.Style or CS_SAVEBITS; + end; +end; + +procedure TShadow.GradB(const R: TRect); +var + J, W, H: Integer; + V: Cardinal; + P: ^Cardinal; +begin + W := R.Right - R.Left; + H := R.Bottom - R.Top; + for J := 0 to H - 1 do + begin + P := FBuffer.ScanLine[J + R.Top]; + Inc(P, R.Left); + V := (255 - J shl 8 div H) shl 24; + FillLongword(P^, W, V); + end; +end; + +procedure TShadow.GradBL(const R: TRect); +var + I, J, W, H, CX, CY, D, DMax, A, B: Integer; + P: ^Cardinal; +begin + W := R.Right - R.Left; + H := R.Bottom - R.Top; + DMax := W; + if H > W then DMax := H; + CX := DMax - 1; + CY := H - DMax; + for J := 0 to H - 1 do + begin + P := FBuffer.ScanLine[J + R.Top]; + Inc(P, R.Left); + for I := 0 to W - 1 do + begin + A := Abs(I - CX); + B := Abs(J - CY); + D := A; + if B > A then D := B; + D := (A + B + D) * 128 div DMax; + if D < 255 then P^ := (255 - D) shl 24 + else P^ := 0; + Inc(P); + end; + end; +end; + +procedure TShadow.GradBR(const R: TRect); +var + I, J, W, H, CX, CY, D, DMax, A, B: Integer; + P: ^Cardinal; +begin + W := R.Right - R.Left; + H := R.Bottom - R.Top; + DMax := W; + if H > W then DMax := H; + CX := W - DMax; + CY := H - DMax; + for J := 0 to H - 1 do + begin + P := FBuffer.ScanLine[J + R.Top]; + Inc(P, R.Left); + for I := 0 to W - 1 do + begin + A := Abs(I - CX); + B := Abs(J - CY); + D := A; + if B > A then D := B; + D := (A + B + D) * 128 div DMax; + if D < 255 then P^ := (255 - D) shl 24 + else P^ := 0; + Inc(P); + end; + end; +end; + +procedure TShadow.GradR(const R: TRect); +var + I, J, W: Integer; + P: ^Cardinal; + ScanLine: array of Cardinal; +begin + W := R.Right - R.Left; + SetLength(ScanLine, W); + for I := 0 to W - 1 do + ScanLine[I] :=(255 - I shl 8 div W) shl 24; + + for J := R.Top to R.Bottom - 1 do + begin + P := FBuffer.ScanLine[J]; + Inc(P, R.Left); + MoveLongword(ScanLine[0], P^, W); + end; +end; + +procedure TShadow.GradTR(const R: TRect); +var + I, J, W, H, CX, CY, D, DMax, A, B: Integer; + P: ^Cardinal; +begin + W := R.Right - R.Left; + H := R.Bottom - R.Top; + DMax := W; + if H > W then DMax := H; + CX := W - DMax; + CY := DMax - 1; + for J := 0 to H - 1 do + begin + P := FBuffer.ScanLine[J + R.Top]; + Inc(P, R.Left); + for I := 0 to W - 1 do + begin + A := Abs(I - CX); + B := Abs(J - CY); + D := A; + if B > A then D := B; + D := (A + B + D) * 128 div DMax; + if D < 255 then P^ := (255 - D) shl 24 + else P^ := 0; + Inc(P); + end; + end; +end; + +procedure TShadow.Render; +var + DstDC: HDC; + SrcPos, DstPos: TPoint; + Size: TSize; + BlendFunc: TBlendFunction; +begin + if FStyle <> ssLayered then Exit; + Assert(Assigned(UpdateLayeredWindow)); + + SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or $00080000{WS_EX_LAYERED}); + DstDC := GetDC(0); + try + SrcPos := Point(0, 0); + with BoundsRect do + begin + DstPos := Point(Left, Top); + Size.cx := Right - Left; + Size.cy := Bottom - Top; + end; + BlendFunc.BlendOp := 0; + BlendFunc.BlendFlags := 0; + BlendFunc.SourceConstantAlpha := FOpacity; + BlendFunc.AlphaFormat := 1; + + FBuffer := TBitmap.Create; + FBuffer.PixelFormat := pf32bit; + FBuffer.Width := Size.cx; + FBuffer.Height := Size.cy; + + FillBuffer; + + UpdateLayeredWindow( + Handle, + DstDC, + @DstPos, + @Size, + FBuffer.Canvas.Handle, + @SrcPos, + 0, + @BlendFunc, + $00000002{ULW_ALPHA}); + + FBuffer.Free; + finally + ReleaseDC(0, DstDC); + end; +end; + +procedure TShadow.Show(ParentHandle: HWND); +begin + SetWindowPos(Handle, ParentHandle, 0, 0, 0, 0, + SWP_NOACTIVATE or SWP_NOSENDCHANGING or SWP_NOMOVE or + SWP_NOOWNERZORDER or SWP_NOSIZE or SWP_SHOWWINDOW); +end; + +procedure TShadow.WMEraseBkgnd(var Message: TWMEraseBkgnd); +var + SrcPos, DstPos: TPoint; + Size: TSize; + BlendFunc: TBlendFunction; +begin + if FStyle = ssAlphaBlend then + begin + Assert(Assigned(AlphaBlend)); + + { Dispatch all the painting messages } + ProcessPaintMessages; + + SrcPos := Point(0, 0); + with BoundsRect do + begin + DstPos := Point(Left, Top); + Size.cx := Right - Left; + Size.cy := Bottom - Top; + end; + + FBuffer := TBitmap.Create; + FBuffer.PixelFormat := pf32bit; + FBuffer.Width := Size.cx; + FBuffer.Height := Size.cy; + + FillBuffer; + + { Blend the buffer directly into the screen } + BlendFunc.BlendOp := 0; + BlendFunc.BlendFlags := 0; + BlendFunc.SourceConstantAlpha := FOpacity; + BlendFunc.AlphaFormat := 1; + AlphaBlend(Message.DC, 0, 0, Size.cx, Size.cy, + FBuffer.Canvas.Handle, 0, 0, Size.cx, Size.cy, BlendFunc); + FBuffer.Free; + + Message.Result := 1; + end + else inherited; +end; + +procedure TShadow.WMNCHitTest(var Message: TMessage); +begin + Message.Result := HTTRANSPARENT; +end; + +{ THorzShadow } + +procedure THorzShadow.FillBuffer; +var + R: TRect; + L1, L2, L3: Integer; +begin + if seTopLeft in FEdges then L1 := Height else L1 := 0; + if seBottomRight in FEdges then L3 := Height else L3 := 0; + if L1 + L3 > Width then + begin + if (L1 > 0) and (L3 > 0) then + begin + L1 := Width div 2; + L3 := L1; + end + else if L1 > 0 then L1 := Width + else if L3 > 0 then L3 := Width; + end; + L2 := Width - L1 - L3; + R := Rect(0, 0, Width, Height); + R.Right := R.Left + L1; + if L1 > 0 then GradBL(R); + R.Left := R.Right; + R.Right := R.Left + L2; + if L2 > 0 then GradB(R); + if L3 > 0 then + begin + R.Left := R.Right; + R.Right := R.Left + L3; + GradBR(R); + end; +end; + +{ TVertShadow } + +procedure TVertShadow.FillBuffer; +var + R: TRect; + L1, L2, L3: Integer; +begin + if seTopLeft in FEdges then L1 := Width else L1 := 0; + if seBottomRight in FEdges then L3 := Width else L3 := 0; + if L1 + L3 > Height then + begin + if (L1 > 0) and (L3 > 0) then + begin + L1 := Height div 2; + L3 := L1; + end + else if L1 > 0 then L1 := Height + else if L3 > 0 then L3 := Height; + end; + L2 := Height - L1 - L3; + + R := Rect(0, 0, Width, Height); + R.Bottom := R.Top + L1; + if L1 > 0 then GradTR(R); + R.Top := R.Bottom; + R.Bottom := R.Top + L2; + if L2 > 0 then GradR(R); + if L3 > 0 then + begin + R.Top := R.Bottom; + R.Bottom := R.Top + L3; + GradBR(R); + end; +end; + +{ TShadows } + +constructor TShadows.Create(R1, R2: TRect; Size: Integer; Opacity: Byte; LoColor: Boolean); +var + R: TRect; + R1Valid, R2Valid: Boolean; +begin + if LoColor or + ((@UpdateLayeredWindow = nil) and (@AlphaBlend = nil)) then + begin + Size := Size div 2; + end; + + R1Valid := not IsRectEmpty(R1); + R2Valid := not IsRectEmpty(R2); + if not (R1Valid or R2Valid) then Exit; + + if R1Valid xor R2Valid then + begin + { A simple square shadow } + if R1Valid then R := R1 else R:= R2; + with R do + begin + V1 := TVertShadow.Create(Rect(Right, Top + Size, Right + Size, Bottom), Opacity, LoColor, [seTopLeft]); + H1 := THorzShadow.Create(Rect(Left + Size, Bottom, Right + Size, Bottom + Size), Opacity, LoColor, [seTopLeft, seBottomRight]) + end; + end + else + begin + + if (R1.Bottom <= R2.Top + 2) or (R1.Top >= R2.Bottom - 2) then + begin + if R1.Top > R2.Top then + begin + R := R2; + R2 := R1; + R1 := R; + end; + if R1.Left + Size < R2.Left then + H1 := THorzShadow.Create(Rect(R1.Left + Size, R1.Bottom, R2.Left, R1.Bottom + Size), Opacity, LoColor, [seTopLeft]); + H2 := THorzShadow.Create(Rect(R2.Left + Size, R2.Bottom, R2.Right + Size, R2.Bottom + Size), Opacity, LoColor, [seTopLeft, seBottomRight]); + V1 := TVertShadow.Create(Rect(R1.Right, R1.Top + Size, R1.Right + Size, R1.Bottom), Opacity, LoColor, [seTopLeft]); + if R1.Right > R2.Right then + H3 := THorzShadow.Create(Rect(R2.Right, R1.Bottom, R1.Right + Size, R1.Bottom + Size), Opacity, LoColor, [seTopLeft, seBottomRight]); + if R1.Right + Size < R2.Right then + V2 := TVertShadow.Create(Rect(R2.Right, R2.Top + Size, R2.Right + Size, R2.Bottom), Opacity, LoColor, [seTopLeft]) + else + V2 := TVertShadow.Create(Rect(R2.Right, R2.Top + 1, R2.Right + Size, R2.Bottom), Opacity, LoColor, []); + end + else if (R1.Right <= R2.Left + 2) or (R1.Left >= R2.Right - 2) then + begin + if R1.Left > R2.Left then + begin + R := R2; + R2 := R1; + R1 := R; + end; + if R1.Top + Size < R2.Top then + V1 := TVertShadow.Create(Rect(R1.Right, R1.Top + Size, R1.Right + Size, R2.Top), Opacity, LoColor, [seTopLeft]); + V2 := TVertShadow.Create(Rect(R2.Right, R2.Top + Size, R2.Right + Size, R2.Bottom + Size), Opacity, LoColor, [seTopLeft, seBottomRight]); + H1 := THorzShadow.Create(Rect(R1.Left + Size, R1.Bottom, R1.Right, R1.Bottom + Size), Opacity, LoColor, [seTopLeft]); + if R1.Bottom > R2.Bottom then + V3 := TVertShadow.Create(Rect(R1.Right, R2.Bottom, R1.Right + Size, R1.Bottom + Size), Opacity, LoColor, [seTopLeft, seBottomRight]); + if R1.Bottom + Size < R2.Bottom then + H2 := THorzShadow.Create(Rect(R2.Left + Size, R2.Bottom, R2.Right, R2.Bottom + Size), Opacity, LoColor, [seTopLeft]) + else + H2 := THorzShadow.Create(Rect(R2.Left, R2.Bottom, R2.Right, R2.Bottom + Size), Opacity, LoColor, []); + end; + end; + + if V1 <> nil then V1.Render; + if H1 <> nil then H1.Render; + if V2 <> nil then V2.Render; + if H2 <> nil then H2.Render; + if V3 <> nil then V3.Render; + if H3 <> nil then H3.Render; + + SetSaveBits(True); +end; + +destructor TShadows.Destroy; +begin + H3.Free; + V3.Free; + H2.Free; + V2.Free; + H1.Free; + V1.Free; + inherited; +end; + +procedure TShadows.SetSaveBits(Value: Boolean); +begin + FSaveBits := Value; + if V1 <> nil then V1.FSaveBits := Value; + if H1 <> nil then H1.FSaveBits := Value; + if V2 <> nil then V2.FSaveBits := Value; + if H2 <> nil then H2.FSaveBits := Value; + if V3 <> nil then V3.FSaveBits := Value; + if H3 <> nil then H3.FSaveBits := Value; +end; + +procedure TShadows.Show(ParentHandle: HWND); +begin + if V1 <> nil then V1.Show(ParentHandle); + if H1 <> nil then H1.Show(ParentHandle); + if V2 <> nil then V2.Show(ParentHandle); + if H2 <> nil then H2.Show(ParentHandle); + if V3 <> nil then V3.Show(ParentHandle); + if H3 <> nil then H3.Show(ParentHandle); +end; + +{ Gradients } ////////////////////////////////////////////////////////////////// + +const + GRADIENT_CACHE_SIZE = 16; + +type + PRGBQuad = ^TRGBQuad; + TRGBQuad = Integer; + PRGBQuadArray = ^TRGBQuadArray; + TRGBQuadArray = array [0..0] of TRGBQuad; + + +var + GradientCache: array [0..GRADIENT_CACHE_SIZE] of array of TRGBQuad; + NextCacheIndex: Integer = 0; + +function FindGradient(Size: Integer; CL, CR: TRGBQuad): Integer; +begin + Assert(Size > 0); + Result := GRADIENT_CACHE_SIZE - 1; + while Result >= 0 do + begin + if (Length(GradientCache[Result]) = Size) and + (GradientCache[Result][0] = CL) and + (GradientCache[Result][Length(GradientCache[Result]) - 1] = CR) then Exit; + Dec(Result); + end; +end; + +function MakeGradient(Size: Integer; CL, CR: TRGBQuad): Integer; +var + R1, G1, B1: Integer; + R2, G2, B2: Integer; + R, G, B: Integer; + I: Integer; + Bias: Integer; +begin + Assert(Size > 0); + Result := NextCacheIndex; + Inc(NextCacheIndex); + if NextCacheIndex >= GRADIENT_CACHE_SIZE then NextCacheIndex := 0; + R1 := CL and $FF; + G1 := CL shr 8 and $FF; + B1 := CL shr 16 and $FF; + R2 := CR and $FF - R1; + G2 := CR shr 8 and $FF - G1; + B2 := CR shr 16 and $FF - B1; + SetLength(GradientCache[Result], Size); + Dec(Size); + Bias := Size div 2; + if Size > 0 then + for I := 0 to Size do + begin + R := R1 + (R2 * I + Bias) div Size; + G := G1 + (G2 * I + Bias) div Size; + B := B1 + (B2 * I + Bias) div Size; + GradientCache[Result][I] := R + G shl 8 + B shl 16; + end + else + begin + R := R1 + R2 div 2; + G := G1 + G2 div 2; + B := B1 + B2 div 2; + GradientCache[Result][0] := R + G shl 8 + B shl 16; + end; +end; + +function GetGradient(Size: Integer; CL, CR: TRGBQuad): Integer; +begin + Result := FindGradient(Size, CL, CR); + if Result < 0 then Result := MakeGradient(Size, CL, CR); +end; + +{ GradFill function } + +procedure GradFill(DC: HDC; ARect: TRect; ClrTopLeft, ClrBottomRight: TColor; Kind: TGradientKind); +const + GRAD_MODE: array [TGradientKind] of DWORD = (GRADIENT_FILL_RECT_H, GRADIENT_FILL_RECT_V); + W: array [TGradientKind] of Integer = (2, 1); + H: array [TGradientKind] of Integer = (1, 2); +type + TriVertex = packed record + X, Y: Longint; + R, G, B, A: Word; + end; +var + V: array [0..1] of TriVertex; + GR: GRADIENT_RECT; + Size, I, Start, Finish: Integer; + GradIndex: Integer; + R, CR: TRect; + Brush: HBRUSH; +begin + if not RectVisible(DC, ARect) then Exit; + + ClrTopLeft := ColorToRGB(ClrTopLeft); + ClrBottomRight := ColorToRGB(ClrBottomRight); + if @GradientFill <> nil then + begin + { Use msimg32.dll } + with V[0] do + begin + X := ARect.Left; + Y := ARect.Top; + R := ClrTopLeft shl 8 and $FF00; + G := ClrTopLeft and $FF00; + B := ClrTopLeft shr 8 and $FF00; + A := 0; + end; + with V[1] do + begin + X := ARect.Right; + Y := ARect.Bottom; + R := ClrBottomRight shl 8 and $FF00; + G := ClrBottomRight and $FF00; + B := ClrBottomRight shr 8 and $FF00; + A := 0; + end; + GR.UpperLeft := 0; GR.LowerRight := 1; + GradientFill(DC, @V, 2, @GR, 1, GRAD_MODE[Kind]); + end + else + begin + { Have to do it manually if msimg32.dll is not available } + GetClipBox(DC, CR); + + if Kind = gkHorz then + begin + Size := ARect.Right - ARect.Left; + if Size <= 0 then Exit; + Start := 0; Finish := Size - 1; + if CR.Left > ARect.Left then Inc(Start, CR.Left - ARect.Left); + if CR.Right < ARect.Right then Dec(Finish, ARect.Right - CR.Right); + R := ARect; Inc(R.Left, Start); R.Right := R.Left + 1; + end + else + begin + Size := ARect.Bottom - ARect.Top; + if Size <= 0 then Exit; + Start := 0; Finish := Size - 1; + if CR.Top > ARect.Top then Inc(Start, CR.Top - ARect.Top); + if CR.Bottom < ARect.Bottom then Dec(Finish, ARect.Bottom - CR.Bottom); + R := ARect; Inc(R.Top, Start); R.Bottom := R.Top + 1; + end; + GradIndex := GetGradient(Size, ClrTopLeft, ClrBottomRight); + for I := Start to Finish do + begin + Brush := CreateSolidBrush(GradientCache[GradIndex][I]); + Windows.FillRect(DC, R, Brush); + OffsetRect(R, Integer(Kind = gkHorz), Integer(Kind = gkVert)); + DeleteObject(Brush); + end; + end; +end; + +{ Brushed Fill } /////////////////////////////////////////////////////////////// + +{ Templates } + +const + NUM_TEMPLATES = 8; + MIN_TEMPLATE_SIZE = 100; + MAX_TEMPLATE_SIZE = 200; + +var + ThreadTemplates: array [0..NUM_TEMPLATES - 1] of array of Integer; + RandThreadIndex: array [0..1023] of Integer; + RandThreadPositions: array [0..1023] of Integer; + +procedure InitializeBrushedFill; +const + Pi = 3.14159265358987; +var + TemplateIndex, Size, I, V, V1, V2: Integer; + T, R12, R13, R14, R21, R22, R23, R24: Single; +begin + { Make thread templates } + for TemplateIndex := 0 to NUM_TEMPLATES - 1 do + begin + Size := (MIN_TEMPLATE_SIZE + Random(MAX_TEMPLATE_SIZE - MIN_TEMPLATE_SIZE + 1)) div 2; + SetLength(ThreadTemplates[TemplateIndex], Size * 2); + R12 := Random * 2 * Pi; + R13 := Random * 2 * Pi; + R14 := Random * 2 * Pi; + R21 := Random * 2 * Pi; + R22 := Random * 2 * Pi; + R23 := Random * 2 * Pi; + R24 := Random * 2 * Pi; + for I := 0 to Size - 1 do + begin + T := 2 * Pi * I / Size; + V1 := Round(150 * Sin(T) + 100 * Sin(2 * T + R12) + 50 * Sin(3 * T + R13) + 20 * Sin(4 * T + R14)); + if V1 > 255 then V1 := 255; + if V1 < -255 then V1 := -255; + + V2 := Round(150 * Sin(T + R21) + 100 * Sin(2 * T + R22) + 50 * Sin(3 * T + R23) + 20 * Sin(4 * T + R24)); + if V2 > 255 then V2 := 255; + if V2 < -255 then V2 := -255; + + if Abs(V2 - V1) > 300 then + begin + V := (V1 + V2) div 2; + V1 := V - 150; + V2 := V + 150; + end; + + ThreadTemplates[TemplateIndex][I * 2] := Min(V1, V2); + ThreadTemplates[TemplateIndex][I * 2 + 1] := Max(V1, V2); + end; + end; + + { Initialize Rand arrays } + for I := 0 to 1023 do + begin + RandThreadIndex[I] := Random(NUM_TEMPLATES); + V1 := Random(Length(ThreadTemplates[RandThreadIndex[I]])) and not $1; + if Odd(I) then Inc(V1); + RandThreadPositions[I] := V1; + end; +end; + +{ Cache } + +const + THREAD_CACHE_SIZE = 16; + +type + TThreadCacheItem = record + BaseColor: TColorRef; + Roughness: Integer; + Bitmaps: array [0..NUM_TEMPLATES - 1] of HBITMAP; + end; + +var + ThreadCache: array [0..THREAD_CACHE_SIZE] of TThreadCacheItem; + NextCacheEntry: Integer = 0; + +procedure ClearCacheItem(var CacheItem: TThreadCacheItem); +var + I: Integer; +begin + for I := NUM_TEMPLATES - 1 downto 0 do + begin + CacheItem.BaseColor := $FFFFFFFF; + CacheItem.Roughness := -1; + if CacheItem.Bitmaps[I] <> 0 then DeleteObject(CacheItem.Bitmaps[I]); + CacheItem.Bitmaps[I] := 0; + end; +end; + +procedure ResetBrushedFillCache; +var + I: Integer; +begin + { Should be called each time the screen parameters change } + for I := THREAD_CACHE_SIZE - 1 downto 0 do ClearCacheItem(ThreadCache[I]); +end; + +procedure FinalizeBrushedFill; +begin + ResetBrushedFillCache; +end; + +procedure MakeCacheItem(var CacheItem: TThreadCacheItem; Color: TColorRef; Roughness: Integer); +var + TemplateIndex, Size, I, V: Integer; + CR, CG, CB: Integer; + R, G, B: Integer; + ScreenDC: HDC; + BMI: TBitmapInfo; + Bits: PRGBQuadArray; + DIBSection: HBITMAP; + DIBDC, CacheDC: HDC; +begin + ScreenDC := GetDC(0); + FillChar(BMI, SizeOf(TBitmapInfo), 0); + with BMI.bmiHeader do + begin + biSize := SizeOf(TBitmapInfoHeader); + biPlanes := 1; + biCompression := BI_RGB; + biWidth := MAX_TEMPLATE_SIZE; + biHeight := -1; + biBitCount := 32; + end; + DIBSection := CreateDIBSection(0, BMI, DIB_RGB_COLORS, Pointer(Bits), 0, 0); + DIBDC := CreateCompatibleDC(0); + SelectObject(DIBDC, DIBSection); + CacheDC := CreateCompatibleDC(0); + + CR := Color shl 8 and $FF00; + CG := Color and $FF00; + CB := Color shr 8 and $FF00; + + try + for TemplateIndex := 0 to NUM_TEMPLATES - 1 do + begin + CacheItem.BaseColor := Color; + CacheItem.Roughness := Roughness; + Size := Length(ThreadTemplates[TemplateIndex]); + + if CacheItem.Bitmaps[TemplateIndex] = 0 then + CacheItem.Bitmaps[TemplateIndex] := CreateCompatibleBitmap(ScreenDC, Size, 1); + SelectObject(CacheDC, CacheItem.Bitmaps[TemplateIndex]); + + for I := 0 to Size - 1 do + begin + V := ThreadTemplates[TemplateIndex][I]; + R := CR + V * Roughness; + G := CG + V * Roughness; + B := CB + V * Roughness; + if R < 0 then R := 0; + if G < 0 then G := 0; + if B < 0 then B := 0; + if R > $EF00 then R := $EF00; + if G > $EF00 then G := $EF00; + if B > $EF00 then B := $EF00; + Bits^[I] := (R and $FF00 + (G and $FF00) shl 8 + (B and $FF00) shl 16) shr 8; + end; + + BitBlt(CacheDC, 0, 0, Size, 1, DIBDC, 0, 0, SRCCOPY); + end; + + finally + DeleteDC(CacheDC); + DeleteDC(DIBDC); + DeleteObject(DIBSection); + ReleaseDC(0, ScreenDC); + end; +end; + +function FindCacheItem(Color: TColorRef; Roughness: Integer): Integer; +begin + Result := THREAD_CACHE_SIZE - 1; + while Result >= 0 do + if (ThreadCache[Result].BaseColor = Color) and (ThreadCache[Result].Roughness = Roughness) then Exit + else Dec(Result); +end; + +function GetCacheItem(Color: TColorRef; Roughness: Integer): Integer; +begin + Result := FindCacheItem(Color, Roughness); + if Result >= 0 then Exit + else + begin + Result := NextCacheEntry; + MakeCacheItem(ThreadCache[Result], Color, Roughness); + NextCacheEntry := (NextCacheEntry + 1) mod THREAD_CACHE_SIZE; + end; +end; + +procedure BrushedFill(DC: HDC; Origin: PPoint; ARect: TRect; Color: TColor; Roughness: Integer); +const + ZeroOrigin: TPoint = (X: 0; Y: 0); +var + CR: TColorRef; + X, Y: Integer; + CacheIndex: Integer; + TemplateIndex: Integer; + CacheDC: HDC; + Size: Integer; + BoxR: TRect; +begin + if (Color = clNone) or not RectVisible(DC, ARect) then Exit; + CR := GetBGR(ColorToRGB(Color)); + if Origin = nil then Origin := @ZeroOrigin; + CacheIndex := GetCacheItem(CR, Roughness); + GetClipBox(DC, BoxR); + IntersectRect(ARect, ARect, BoxR); + SaveDC(DC); + with ARect do IntersectClipRect(DC, Left, Top, Right, Bottom); + + CacheDC := CreateCompatibleDC(0); + for Y := ARect.Top to ARect.Bottom - 1 do + begin + TemplateIndex := RandThreadIndex[(65536 + Y - Origin.Y) mod 1024]; + Size := Length(ThreadTemplates[TemplateIndex]); + X := -RandThreadPositions[(65536 + Y - Origin.Y) mod 1024] + Origin.X; + SelectObject(CacheDC, ThreadCache[CacheIndex].Bitmaps[TemplateIndex]); + while X < ARect.Right do + begin + if X + Size >= ARect.Left then BitBlt(DC, X, Y, Size, 1, CacheDC, 0, 0, SRCCOPY); + Inc(X, Size); + end; + end; + DeleteDC(CacheDC); + + RestoreDC(DC, -1); +end; + +var + hUser, hMSImg: HModule; + +initialization + +hUser := LoadLibrary('user32.dll'); +hMSImg := LoadLibrary('msimg32.dll'); +@UpdateLayeredWindow := GetProcAddress(hUser, 'UpdateLayeredWindow'); +@AlphaBlend := GetProcAddress(hMSImg, 'AlphaBlend'); +@GradientFill := GetProcAddress(hMSImg, 'GradientFill'); + +InitializeStock; +InitializeBrushedFill; +ResetBrushedFillCache; + +finalization + +FinalizeBrushedFill; +FinalizeStock; + +FreeLibrary(hMSImg); +FreeLibrary(hUser); + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXUxThemes.pas b/official/2.1.6+2.1.beta1/TBX/TBXUxThemes.pas new file mode 100644 index 0000000..97b38e6 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXUxThemes.pas @@ -0,0 +1,2091 @@ +unit TBXUxThemes; + +// TBX Package +// Copyright 2001-2004 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// Conversion of original visual styles API tmschema.h and +// uxtheme.h (Copyright Microsoft Corporation 1991-2000) +// +// $Id: TBXUxThemes.pas 7 2004-02-21 06:07:53Z $ + +interface + +{$I ..\..\Source\TB2Ver.inc} +{$I TBX.inc} + +uses + Windows; + +function InitXPThemes: Boolean; +procedure FreeXPThemes; +function CanUseXPThemes: Boolean; + +{$DEFINE TMSCHEMA_H} + +const + THEMEMGR_VERSION = 1; + WM_THEMECHANGED = $031A; + +{ Enumerators } + +const + { BGTYPE } + BT_IMAGEFILE = 0; + BT_BORDERFILL = 1; + BT_NONE = 2; + + { IMAGELAYOUT } + IL_VERTICAL = 0; + IL_HORIZONTAL = 1; + + { BORDERTYPE } + BT_RECT = 0; + BT_ROUNDRECT = 1; + BT_ELLIPSE = 2; + + { FILLTYPE } + FT_SOLID = 0; + FT_VERTGRADIENT = 1; + FT_HORZGRADIENT = 2; + FT_RADIALGRADIENT = 3; + FT_TILEIMAGE = 4; + + { SIZINGTYPE } + ST_TRUESIZE = 0; + ST_STRETCH = 1; + ST_TILE = 2; + + { HALIGN } + HA_LEFT = 0; + HA_CENTER = 1; + HA_RIGHT = 2; + + { CONTENTALIGNMENT } + CA_LEFT = 0; + CA_CENTER = 1; + CA_RIGHT = 2; + + { VALIGN } + VA_TOP = 0; + VA_CENTER = 1; + VA_BOTTOM = 2; + + { OFFSETTYPE } + OT_TOPLEFT = 0; + OT_TOPRIGHT = 1; + OT_TOPMIDDLE = 2; + OT_BOTTOMLEFT = 3; + OT_BOTTOMRIGHT = 4; + OT_BOTTOMMIDDLE = 5; + OT_MIDDLELEFT = 6; + OT_MIDDLERIGHT = 7; + OT_LEFTOFCAPTION = 8; + OT_RIGHTOFCAPTION = 9; + OT_LEFTOFLASTBUTTON = 10; + OT_RIGHTOFLASTBUTTON = 11; + OT_ABOVELASTBUTTON = 12; + OT_BELOWLASTBUTTON = 13; + + { ICONEFFECT } + ICE_NONE = 0; + ICE_GLOW = 1; + ICE_SHADOW = 2; + ICE_PULSE = 3; + ICE_ALPHA = 4; + + { TEXTSHADOWTYPE } + TST_NONE = 0; + TST_SINGLE = 1; + TST_CONTINUOUS = 2; + + { GLYPHTYPE } + GT_NONE = 0; + GT_IMAGEGLYPH = 1; + GT_FONTGLYPH = 2; + + { IMAGESELECTTYPE } + IST_NONE = 0; + IST_SIZE = 1; + IST_DPI = 2; + + { TRUESIZESCALINGTYPE } + TSST_NONE = 0; + TSST_SIZE = 1; + TSST_DPI = 2; + + { GLYPHFONTSIZINGTYPE } + GFST_NONE = 0; + GFST_SIZE = 1; + GFST_DPI = 2; + + + +{ PROPERTIES - used by uxtheme rendering and controls } + +const + { primitive types } + TMT_STRING = 201; + TMT_INT = 202; + TMT_BOOL = 203; + TMT_COLOR = 204; + TMT_MARGINS = 205; + TMT_FILENAME = 206; + TMT_SIZE = 207; + TMT_POSITION = 208; + TMT_RECT = 209; + TMT_FONT = 210; + TMT_INTLIST = 211; + + { special misc. properties } + TMT_COLORSCHEMES = 401; + TMT_SIZES = 402; + TMT_CHARSET = 403; + + { [documentation] properties } + TMT_DISPLAYNAME = 601; + TMT_TOOLTIP = 602; + TMT_COMPANY = 603; + TMT_AUTHOR = 604; + TMT_COPYRIGHT = 605; + TMT_URL = 606; + TMT_VERSION = 607; + TMT_DESCRIPTION = 608; + + { theme metrics: fonts } + TMT_CAPTIONFONT = 801; + TMT_SMALLCAPTIONFONT = 802; + TMT_MENUFONT = 803; + TMT_STATUSFONT = 804; + TMT_MSGBOXFONT = 805; + TMT_ICONTITLEFONT = 806; + + { theme metrics: bools } + TMT_FLATMENUS = 1001; + + { theme metrics: sizes } + TMT_SIZINGBORDERWIDTH = 1201; + TMT_SCROLLBARWIDTH = 1202; + TMT_SCROLLBARHEIGHT = 1203; + TMT_CAPTIONBARWIDTH = 1204; + TMT_CAPTIONBARHEIGHT = 1205; + TMT_SMCAPTIONBARWIDTH = 1206; + TMT_SMCAPTIONBARHEIGHT = 1207; + TMT_MENUBARWIDTH = 1208; + TMT_MENUBARHEIGHT = 1209; + + { theme metrics: ints } + TMT_MINCOLORDEPTH = 1301; + + + { theme metrics: strings } + TMT_CSSNAME = 1401; + TMT_XMLNAME = 1402; + + { theme metrics: colors } + TMT_SCROLLBAR = 1601; + TMT_BACKGROUND = 1602; + TMT_ACTIVECAPTION = 1603; + TMT_INACTIVECAPTION = 1604; + TMT_MENU = 1605; + TMT_WINDOW = 1606; + TMT_WINDOWFRAME = 1607; + TMT_MENUTEXT = 1608; + TMT_WINDOWTEXT = 1609; + TMT_CAPTIONTEXT = 1610; + TMT_ACTIVEBORDER = 1611; + TMT_INACTIVEBORDER = 1612; + TMT_APPWORKSPACE = 1613; + TMT_HIGHLIGHT = 1614; + TMT_HIGHLIGHTTEXT = 1615; + TMT_BTNFACE = 1616; + TMT_BTNSHADOW = 1617; + TMT_GRAYTEXT = 1618; + TMT_BTNTEXT = 1619; + TMT_INACTIVECAPTIONTEXT = 1620; + TMT_BTNHIGHLIGHT = 1621; + TMT_DKSHADOW3D = 1622; + TMT_LIGHT3D = 1623; + TMT_INFOTEXT = 1624; + TMT_INFOBK = 1625; + TMT_BUTTONALTERNATEFACE = 1626; + TMT_HOTTRACKING = 1627; + TMT_GRADIENTACTIVECAPTION = 1628; + TMT_GRADIENTINACTIVECAPTION = 1629; + TMT_MENUHILIGHT = 1630; + TMT_MENUBAR = 1631; + + { hue substitutions } + TMT_FROMHUE1 = 1801; + TMT_FROMHUE2 = 1802; + TMT_FROMHUE3 = 1803; + TMT_FROMHUE4 = 1804; + TMT_FROMHUE5 = 1805; + TMT_TOHUE1 = 1806; + TMT_TOHUE2 = 1807; + TMT_TOHUE3 = 1808; + TMT_TOHUE4 = 1809; + TMT_TOHUE5 = 1810; + + { color substitutions } + TMT_FROMCOLOR1 = 2001; + TMT_FROMCOLOR2 = 2002; + TMT_FROMCOLOR3 = 2003; + TMT_FROMCOLOR4 = 2004; + TMT_FROMCOLOR5 = 2005; + TMT_TOCOLOR1 = 2006; + TMT_TOCOLOR2 = 2007; + TMT_TOCOLOR3 = 2008; + TMT_TOCOLOR4 = 2009; + TMT_TOCOLOR5 = 2010; + + { rendering BOOL properties } + TMT_TRANSPARENT = 2201; + TMT_AUTOSIZE = 2202; + TMT_BORDERONLY = 2203; + TMT_COMPOSITED = 2204; + TMT_BGFILL = 2205; + TMT_GLYPHTRANSPARENT = 2206; + TMT_GLYPHONLY = 2207; + TMT_ALWAYSSHOWSIZINGBAR = 2208; + TMT_MIRRORIMAGE = 2209; + TMT_UNIFORMSIZING = 2210; + TMT_INTEGRALSIZING = 2211; + TMT_SOURCEGROW = 2212; + TMT_SOURCESHRINK = 2213; + + { rendering INT properties } + TMT_IMAGECOUNT = 2401; + TMT_ALPHALEVEL = 2402; + TMT_BORDERSIZE = 2403; + TMT_ROUNDCORNERWIDTH = 2404; + TMT_ROUNDCORNERHEIGHT = 2405; + TMT_GRADIENTRATIO1 = 2406; + TMT_GRADIENTRATIO2 = 2407; + TMT_GRADIENTRATIO3 = 2408; + TMT_GRADIENTRATIO4 = 2409; + TMT_GRADIENTRATIO5 = 2410; + TMT_PROGRESSCHUNKSIZE = 2411; + TMT_PROGRESSSPACESIZE = 2412; + TMT_SATURATION = 2413; + TMT_TEXTBORDERSIZE = 2414; + TMT_ALPHATHRESHOLD = 2415; + TMT_WIDTH = 2416; + TMT_HEIGHT = 2417; + TMT_GLYPHINDEX = 2418; + TMT_TRUESIZESTRETCHMARK = 2419; + TMT_MINDPI1 = 2420; + TMT_MINDPI2 = 2421; + TMT_MINDPI3 = 2422; + TMT_MINDPI4 = 2423; + TMT_MINDPI5 = 2424; + + { rendering FONT properties } + TMT_GLYPHFONT = 2601; + + { rendering INTLIST properties } + TMT_FILESIZES = 2801; + + { rendering FILENAME properties } + TMT_IMAGEFILE = 3001; + TMT_IMAGEFILE1 = 3002; + TMT_IMAGEFILE2 = 3003; + TMT_IMAGEFILE3 = 3004; + TMT_IMAGEFILE4 = 3005; + TMT_IMAGEFILE5 = 3006; + TMT_STOCKIMAGEFILE = 3007; + TMT_GLYPHIMAGEFILE = 3008; + + { rendering STRING properties } + TMT_TEXT = 3201; + + { rendering POSITION (x and y values) properties } + TMT_OFFSET = 3401; + TMT_TEXTSHADOWOFFSET = 3402; + TMT_MINSIZE = 3403; + TMT_MINSIZE1 = 3404; + TMT_MINSIZE2 = 3405; + TMT_MINSIZE3 = 3406; + TMT_MINSIZE4 = 3407; + TMT_MINSIZE5 = 3408; + TMT_NORMALSIZE = 3409; + + { rendering MARGIN properties } + TMT_SIZINGMARGINS = 3601; + TMT_CONTENTMARGINS = 3602; + TMT_CAPTIONMARGINS = 3603; + + { rendering COLOR properties } + TMT_BORDERCOLOR = 3801; + TMT_FILLCOLOR = 3802; + TMT_TEXTCOLOR = 3803; + TMT_EDGELIGHTCOLOR = 3804; + TMT_EDGEHIGHLIGHTCOLOR = 3805; + TMT_EDGESHADOWCOLOR = 3806; + TMT_EDGEDKSHADOWCOLOR = 3807; + TMT_EDGEFILLCOLOR = 3808; + TMT_TRANSPARENTCOLOR = 3809; + TMT_GRADIENTCOLOR1 = 3810; + TMT_GRADIENTCOLOR2 = 3811; + TMT_GRADIENTCOLOR3 = 3812; + TMT_GRADIENTCOLOR4 = 3813; + TMT_GRADIENTCOLOR5 = 3814; + TMT_SHADOWCOLOR = 3815; + TMT_GLOWCOLOR = 3816; + TMT_TEXTBORDERCOLOR = 3817; + TMT_TEXTSHADOWCOLOR = 3818; + TMT_GLYPHTEXTCOLOR = 3819; + TMT_GLYPHTRANSPARENTCOLOR = 3820; + TMT_FILLCOLORHINT = 3821; + TMT_BORDERCOLORHINT = 3822; + TMT_ACCENTCOLORHINT = 3823; + + { rendering enum properties } + TMT_BGTYPE = 4001; + TMT_BORDERTYPE = 4002; + TMT_FILLTYPE = 4003; + TMT_SIZINGTYPE = 4004; + TMT_HALIGN = 4005; + TMT_CONTENTALIGNMENT = 4006; + TMT_VALIGN = 4007; + TMT_OFFSETTYPE = 4008; + TMT_ICONEFFECT = 4009; + TMT_TEXTSHADOWTYPE = 4010; + TMT_IMAGELAYOUT = 4011; + TMT_GLYPHTYPE = 4012; + TMT_IMAGESELECTTYPE = 4013; + TMT_GLYPHFONTSIZINGTYPE = 4014; + TMT_TRUESIZESCALINGTYPE = 4015; + + { custom properties (used only by controls/shell) } + TMT_USERPICTURE = 5001; + TMT_DEFAULTPANESIZE = 5002; + TMT_BLENDCOLOR = 5003; + + +{ "Window" (i.e., non-client) Parts & States } + + { WINDOWPARTS } + WP_CAPTION = 1; + WP_SMALLCAPTION = 2; + WP_MINCAPTION = 3; + WP_SMALLMINCAPTION = 4; + WP_MAXCAPTION = 5; + WP_SMALLMAXCAPTION = 6; + WP_FRAMELEFT = 7; + WP_FRAMERIGHT = 8; + WP_FRAMEBOTTOM = 9; + WP_SMALLFRAMELEFT = 10; + WP_SMALLFRAMERIGHT = 11; + WP_SMALLFRAMEBOTTOM = 12; + WP_SYSBUTTON = 13; + WP_MDISYSBUTTON = 14; + WP_MINBUTTON = 15; + WP_MDIMINBUTTON = 16; + WP_MAXBUTTON = 17; + WP_CLOSEBUTTON = 18; + WP_SMALLCLOSEBUTTON = 19; + WP_MDICLOSEBUTTON = 20; + WP_RESTOREBUTTON = 21; + WP_MDIRESTOREBUTTON = 22; + WP_HELPBUTTON = 23; + WP_MDIHELPBUTTON = 24; + WP_HORZSCROLL = 25; + WP_HORZTHUMB = 26; + WP_VERTSCROLL = 27; + WP_VERTTHUMB = 28; + WP_DIALOG = 29; + WP_CAPTIONSIZINGTEMPLATE = 30; + WP_SMALLCAPTIONSIZINGTEMPLATE = 31; + WP_FRAMELEFTSIZINGTEMPLATE = 32; + WP_SMALLFRAMELEFTSIZINGTEMPLATE = 33; + WP_FRAMERIGHTSIZINGTEMPLATE = 34; + WP_SMALLFRAMERIGHTSIZINGTEMPLATE = 35; + WP_FRAMEBOTTOMSIZINGTEMPLATE = 36; + WP_SMALLFRAMEBOTTOMSIZINGTEMPLATE = 37; + + { FRAMESTATES } + FS_ACTIVE = 1; + FS_INACTIVE = 2; + + { CAPTIONSTATES } + CS_ACTIVE = 1; + CS_INACTIVE = 2; + CS_DISABLED = 3; + + { MAXCAPTIONSTATES } + MXCS_ACTIVE = 1; + MXCS_INACTIVE = 2; + MXCS_DISABLED = 3; + + { MINCAPTIONSTATES } + MNCS_ACTIVE = 1; + MNCS_INACTIVE = 2; + MNCS_DISABLED = 3; + + { HORZSCROLLSTATES } + HSS_NORMAL = 1; + HSS_HOT = 2; + HSS_PUSHED = 3; + HSS_DISABLED = 4; + + { HORZTHUMBSTATES } + HTS_NORMAL = 1; + HTS_HOT = 2; + HTS_PUSHED = 3; + HTS_DISABLED = 4; + + { VERTSCROLLSTATES } + VSS_NORMAL = 1; + VSS_HOT = 2; + VSS_PUSHED = 3; + VSS_DISABLED = 4; + + { VERTTHUMBSTATES } + VTS_NORMAL = 1; + VTS_HOT = 2; + VTS_PUSHED = 3; + VTS_DISABLED = 4; + + { SYSBUTTONSTATES } + SBS_NORMAL = 1; + SBS_HOT = 2; + SBS_PUSHED = 3; + SBS_DISABLED = 4; + + { MINBUTTONSTATES } + MINBS_NORMAL = 1; + MINBS_HOT = 2; + MINBS_PUSHED = 3; + MINBS_DISABLED = 4; + + { MAXBUTTONSTATES } + MAXBS_NORMAL = 1; + MAXBS_HOT = 2; + MAXBS_PUSHED = 3; + MAXBS_DISABLED = 4; + + { RESTOREBUTTONSTATES } + RBS_NORMAL = 1; + RBS_HOT = 2; + RBS_PUSHED = 3; + RBS_DISABLED = 4; + + { HELPBUTTONSTATES } + HBS_NORMAL = 1; + HBS_HOT = 2; + HBS_PUSHED = 3; + HBS_DISABLED = 4; + + { CLOSEBUTTONSTATES } + CBS_NORMAL = 1; + CBS_HOT = 2; + CBS_PUSHED = 3; + CBS_DISABLED = 4; + + +{ "Button" Parts & States } + + + { BUTTONPARTS } + BP_PUSHBUTTON = 1; + BP_RADIOBUTTON = 2; + BP_CHECKBOX = 3; + BP_GROUPBOX = 4; + BP_USERBUTTON = 5; + + { PUSHBUTTONSTATES } + PBS_NORMAL = 1; + PBS_HOT = 2; + PBS_PRESSED = 3; + PBS_DISABLED = 4; + PBS_DEFAULTED = 5; + + { RADIOBUTTONSTATES } + RBS_UNCHECKEDNORMAL = 1; + RBS_UNCHECKEDHOT = 2; + RBS_UNCHECKEDPRESSED = 3; + RBS_UNCHECKEDDISABLED = 4; + RBS_CHECKEDNORMAL = 5; + RBS_CHECKEDHOT = 6; + RBS_CHECKEDPRESSED = 7; + RBS_CHECKEDDISABLED = 8; + + { CHECKBOXSTATES } + CBS_UNCHECKEDNORMAL = 1; + CBS_UNCHECKEDHOT = 2; + CBS_UNCHECKEDPRESSED = 3; + CBS_UNCHECKEDDISABLED = 4; + CBS_CHECKEDNORMAL = 5; + CBS_CHECKEDHOT = 6; + CBS_CHECKEDPRESSED = 7; + CBS_CHECKEDDISABLED = 8; + CBS_MIXEDNORMAL = 9; + CBS_MIXEDHOT = 10; + CBS_MIXEDPRESSED = 11; + CBS_MIXEDDISABLED = 12; + + { GROUPBOXSTATES } + GBS_NORMAL = 1; + GBS_DISABLED = 2; + + +{ "Rebar" Parts & States } + + { REBARPARTS } + RP_GRIPPER = 1; + RP_GRIPPERVERT = 2; + RP_BAND = 3; + RP_CHEVRON = 4; + RP_CHEVRONVERT = 5; + + { CHEVRONSTATES } + CHEVS_NORMAL = 1; + CHEVS_HOT = 2; + CHEVS_PRESSED = 3; + + +{ "Toolbar" Parts & States } + + { TOOLBARPARTS } + TP_BUTTON = 1; + TP_DROPDOWNBUTTON = 2; + TP_SPLITBUTTON = 3; + TP_SPLITBUTTONDROPDOWN = 4; + TP_SEPARATOR = 5; + TP_SEPARATORVERT = 6; + + { TOOLBARSTATES } + TS_NORMAL = 1; + TS_HOT = 2; + TS_PRESSED = 3; + TS_DISABLED = 4; + TS_CHECKED = 5; + TS_HOTCHECKED = 6; + + +{ "Status" Parts & States } + + { STATUSPARTS } + SP_PANE = 1; + SP_GRIPPERPANE = 2; + SP_GRIPPER = 3; + + +{ "Menu" Parts & States } + + { MENUPARTS } + MP_MENUITEM = 1; + MP_MENUDROPDOWN = 2; + MP_MENUBARITEM = 3; + MP_MENUBARDROPDOWN = 4; + MP_CHEVRON = 5; + MP_SEPARATOR = 6; + + { MENUSTATES } + MS_NORMAL = 1; + MS_SELECTED = 2; + MS_DEMOTED = 3; + + +{ "ListView" Parts & States } + + { LISTVIEWPARTS } + LVP_LISTITEM = 1; + LVP_LISTGROUP = 2; + LVP_LISTDETAIL = 3; + LVP_LISTSORTEDDETAIL = 4; + LVP_EMPTYTEXT = 5; + + { LISTITEMSTATES } + LIS_NORMAL = 1; + LIS_HOT = 2; + LIS_SELECTED = 3; + LIS_DISABLED = 4; + LIS_SELECTEDNOTFOCUS = 5; + + +{ "Header" Parts & States } + + { HEADERPARTS } + HP_HEADERITEM = 1; + HP_HEADERITEMLEFT = 2; + HP_HEADERITEMRIGHT = 3; + HP_HEADERSORTARROW = 4; + + { HEADERITEMSTATES } + HIS_NORMAL = 1; + HIS_HOT = 2; + HIS_PRESSED = 3; + + { HEADERITEMLEFTSTATES } + HILS_NORMAL = 1; + HILS_HOT = 2; + HILS_PRESSED = 3; + + { HEADERITEMRIGHTSTATES } + HIRS_NORMAL = 1; + HIRS_HOT = 2; + HIRS_PRESSED = 3; + + { HEADERSORTARROWSTATES } + HSAS_SORTEDUP = 1; + HSAS_SORTEDDOWN = 2; + + +{ "Progress" Parts & States } + + { PROGRESSPARTS } + PP_BAR = 1; + PP_BARVERT = 2; + PP_CHUNK = 3; + PP_CHUNKVERT = 4; + + +{ "Tab" Parts & States } + + { TABPARTS } + TABP_TABITEM = 1; + TABP_TABITEMLEFTEDGE = 2; + TABP_TABITEMRIGHTEDGE = 3; + TABP_TABITEMBOTHEDGE = 4; + TABP_TOPTABITEM = 5; + TABP_TOPTABITEMLEFTEDGE = 6; + TABP_TOPTABITEMRIGHTEDGE = 7; + TABP_TOPTABITEMBOTHEDGE = 8; + TABP_PANE = 9; + TABP_BODY = 10; + + { TABITEMSTATES } + TIS_NORMAL = 1; + TIS_HOT = 2; + TIS_SELECTED = 3; + TIS_DISABLED = 4; + TIS_FOCUSED = 5; + + { TABITEMLEFTEDGESTATES } + TILES_NORMAL = 1; + TILES_HOT = 2; + TILES_SELECTED = 3; + TILES_DISABLED = 4; + TILES_FOCUSED = 5; + + { TABITEMRIGHTEDGESTATES } + TIRES_NORMAL = 1; + TIRES_HOT = 2; + TIRES_SELECTED = 3; + TIRES_DISABLED = 4; + TIRES_FOCUSED = 5; + + { TABITEMBOTHEDGESSTATES } + TIBES_NORMAL = 1; + TIBES_HOT = 2; + TIBES_SELECTED = 3; + TIBES_DISABLED = 4; + TIBES_FOCUSED = 5; + + { TOPTABITEMSTATES } + TTIS_NORMAL = 1; + TTIS_HOT = 2; + TTIS_SELECTED = 3; + TTIS_DISABLED = 4; + TTIS_FOCUSED = 5; + + { TOPTABITEMLEFTEDGESTATES } + TTILES_NORMAL = 1; + TTILES_HOT = 2; + TTILES_SELECTED = 3; + TTILES_DISABLED = 4; + TTILES_FOCUSED = 5; + + { TOPTABITEMRIGHTEDGESTATES } + TTIRES_NORMAL = 1; + TTIRES_HOT = 2; + TTIRES_SELECTED = 3; + TTIRES_DISABLED = 4; + TTIRES_FOCUSED = 5; + + { TOPTABITEMBOTHEDGESSTATES } + TTIBES_NORMAL = 1; + TTIBES_HOT = 2; + TTIBES_SELECTED = 3; + TTIBES_DISABLED = 4; + TTIBES_FOCUSED = 5; + + +{"Trackbar" Parts & States } + + { TRACKBARPARTS } + TKP_TRACK = 1; + TKP_TRACKVERT = 2; + TKP_THUMB = 3; + TKP_THUMBBOTTOM = 4; + TKP_THUMBTOP = 5; + TKP_THUMBVERT = 6; + TKP_THUMBLEFT = 7; + TKP_THUMBRIGHT = 8; + TKP_TICS = 9; + TKP_TICSVERT = 10; + + { TRACKBARSTATES } + TKS_NORMAL = 1; + + { TRACKSTATES } + TRS_NORMAL = 1; + + { TRACKVERTSTATES } + TRVS_NORMAL = 1; + + { THUMBSTATES } + TUS_NORMAL = 1; + TUS_HOT = 2; + TUS_PRESSED = 3; + TUS_FOCUSED = 4; + TUS_DISABLED = 5; + + { THUMBBOTTOMSTATES } + TUBS_NORMAL = 1; + TUBS_HOT = 2; + TUBS_PRESSED = 3; + TUBS_FOCUSED = 4; + TUBS_DISABLED = 5; + + { THUMBTOPSTATES } + TUTS_NORMAL = 1; + TUTS_HOT = 2; + TUTS_PRESSED = 3; + TUTS_FOCUSED = 4; + TUTS_DISABLED = 5; + + { THUMBVERTSTATES } + TUVS_NORMAL = 1; + TUVS_HOT = 2; + TUVS_PRESSED = 3; + TUVS_FOCUSED = 4; + TUVS_DISABLED = 5; + + { THUMBLEFTSTATES } + TUVLS_NORMAL = 1; + TUVLS_HOT = 2; + TUVLS_PRESSED = 3; + TUVLS_FOCUSED = 4; + TUVLS_DISABLED = 5; + + { THUMBRIGHTSTATES } + TUVRS_NORMAL = 1; + TUVRS_HOT = 2; + TUVRS_PRESSED = 3; + TUVRS_FOCUSED = 4; + TUVRS_DISABLED = 5; + + { TICSSTATES } + TSS_NORMAL = 1; + + { TICSVERTSTATES } + TSVS_NORMAL = 1; + + +{ "Tooltips" Parts & States } + + { TOOLTIPPARTS } + TTP_STANDARD = 1; + TTP_STANDARDTITLE = 2; + TTP_BALLOON = 3; + TTP_BALLOONTITLE = 4; + TTP_CLOSE = 5; + + { CLOSESTATES } + TTCS_NORMAL = 1; + TTCS_HOT = 2; + TTCS_PRESSED = 3; + + { STANDARDSTATES } + TTSS_NORMAL = 1; + TTSS_LINK = 2; + + { BALLOONSTATES } + TTBS_NORMAL = 1; + TTBS_LINK = 2; + + +{ "TreeView" Parts & States } + + { TREEVIEWPARTS } + TVP_TREEITEM = 1; + TVP_GLYPH = 2; + TVP_BRANCH = 3; + + { TREEITEMSTATES } + TREIS_NORMAL = 1; + TREIS_HOT = 2; + TREIS_SELECTED = 3; + TREIS_DISABLED = 4; + TREIS_SELECTEDNOTFOCUS = 5; + + { GLYPHSTATES } + GLPS_CLOSED = 1; + GLPS_OPENED = 2; + + +{ "Spin" Parts & States } + + { SPINPARTS } + SPNP_UP = 1; + SPNP_DOWN = 2; + SPNP_UPHORZ = 3; + SPNP_DOWNHORZ = 4; + + { UPSTATES } + UPS_NORMAL = 1; + UPS_HOT = 2; + UPS_PRESSED = 3; + UPS_DISABLED = 4; + + { DOWNSTATES } + DNS_NORMAL = 1; + DNS_HOT = 2; + DNS_PRESSED = 3; + DNS_DISABLED = 4; + + { UPHORZSTATES } + UPHZS_NORMAL = 1; + UPHZS_HOT = 2; + UPHZS_PRESSED = 3; + UPHZS_DISABLED = 4; + + { DOWNHORZSTATES } + DNHZS_NORMAL = 1; + DNHZS_HOT = 2; + DNHZS_PRESSED = 3; + DNHZS_DISABLED = 4; + + +{ "Page" Parts & States } + + { PAGEPARTS } + PGRP_UP = 1; + PGRP_DOWN = 2; + PGRP_UPHORZ = 3; + PGRP_DOWNHORZ = 4; + +{ Pager uses same states as Spin } + + +{ "Scrollbar" Parts & States } + + { SCROLLBARPARTS } + SBP_ARROWBTN = 1; + SBP_THUMBBTNHORZ = 2; + SBP_THUMBBTNVERT = 3; + SBP_LOWERTRACKHORZ = 4; + SBP_UPPERTRACKHORZ = 5; + SBP_LOWERTRACKVERT = 6; + SBP_UPPERTRACKVERT = 7; + SBP_GRIPPERHORZ = 8; + SBP_GRIPPERVERT = 9; + SBP_SIZEBOX = 10; + + { ARROWBTNSTATES } + ABS_UPNORMAL = 1; + ABS_UPHOT = 2; + ABS_UPPRESSED = 3; + ABS_UPDISABLED = 4; + ABS_DOWNNORMAL = 5; + ABS_DOWNHOT = 6; + ABS_DOWNPRESSED = 7; + ABS_DOWNDISABLED = 8; + ABS_LEFTNORMAL = 9; + ABS_LEFTHOT = 10; + ABS_LEFTPRESSED = 11; + ABS_LEFTDISABLED = 12; + ABS_RIGHTNORMAL = 13; + ABS_RIGHTHOT = 14; + ABS_RIGHTPRESSED = 15; + ABS_RIGHTDISABLED = 16; + + { SCROLLBARSTATES } + SCRBS_NORMAL = 1; + SCRBS_HOT = 2; + SCRBS_PRESSED = 3; + SCRBS_DISABLED = 4; + + { SIZEBOXSTATES } + SZB_RIGHTALIGN = 1; + SZB_LEFTALIGN = 2; + + +{ "Edit" Parts & States } + + { EDITPARTS } + EP_EDITTEXT = 1; + EP_CARET = 2; + + { EDITTEXTSTATES } + ETS_NORMAL = 1; + ETS_HOT = 2; + ETS_SELECTED = 3; + ETS_DISABLED = 4; + ETS_FOCUSED = 5; + ETS_READONLY = 6; + ETS_ASSIST = 7; + +{ "ComboBox" Parts & States } + + { COMBOBOXPARTS } + CP_DROPDOWNBUTTON = 1; + + { COMBOBOXSTATES } + CBXS_NORMAL = 1; + CBXS_HOT = 2; + CBXS_PRESSED = 3; + CBXS_DISABLED = 4; + +{ "Taskbar Clock" Parts & States } + + { CLOCKPARTS } + CLP_TIME = 1; + + { CLOCKSTATES } + CLS_NORMAL = 1; + + +{ "Tray Notify" Parts & States } + + { TRAYNOTIFYPARTS } + TNP_BACKGROUND = 1; + TNP_ANIMBACKGROUND = 2; + + +{ "TaskBar" Parts & States } + + { TASKBARPARTS } + TBP_BACKGROUNDBOTTOM = 1; + TBP_BACKGROUNDRIGHT = 2; + TBP_BACKGROUNDTOP = 3; + TBP_BACKGROUNDLEFT = 4; + TBP_SIZINGBARBOTTOM = 5; + TBP_SIZINGBARRIGHT = 6; + TBP_SIZINGBARTOP = 7; + TBP_SIZINGBARLEFT = 8; + + +{ "TaskBand" Parts & States } + + { TASKBANDPARTS } + TDP_GROUPCOUNT = 1; + TDP_FLASHBUTTON = 2; + TDP_FLASHBUTTONGROUPMENU = 3; + + +{ "StartPanel" Parts & States } + + { STARTPANELPARTS } + SPP_USERPANE = 1; + SPP_MOREPROGRAMS = 2; + SPP_MOREPROGRAMSARROW = 3; + SPP_PROGLIST = 4; + SPP_PROGLISTSEPARATOR = 5; + SPP_PLACESLIST = 6; + SPP_PLACESLISTSEPARATOR = 7; + SPP_LOGOFF = 8; + SPP_LOGOFFBUTTONS = 9; + SPP_USERPICTURE = 10; + SPP_PREVIEW = 11; + + { MOREPROGRAMSARROWSTATES } + SPS_NORMAL = 1; + SPS_HOT = 2; + SPS_PRESSED = 3; + + { LOGOFFBUTTONSSTATES } + SPLS_NORMAL = 1; + SPLS_HOT = 2; + SPLS_PRESSED = 3; + + +{ "ExplorerBar" Parts & States } + + { EXPLORERBARPARTS } + EBP_HEADERBACKGROUND = 1; + EBP_HEADERCLOSE = 2; + EBP_HEADERPIN = 3; + EBP_IEBARMENU = 4; + EBP_NORMALGROUPBACKGROUND = 5; + EBP_NORMALGROUPCOLLAPSE = 6; + EBP_NORMALGROUPEXPAND = 7; + EBP_NORMALGROUPHEAD = 8; + EBP_SPECIALGROUPBACKGROUND = 9; + EBP_SPECIALGROUPCOLLAPSE = 10; + EBP_SPECIALGROUPEXPAND = 11; + EBP_SPECIALGROUPHEAD = 12; + + { HEADERCLOSESTATES } + EBHC_NORMAL = 1; + EBHC_HOT = 2; + EBHC_PRESSED = 3; + + { HEADERPINSTATES } + EBHP_NORMAL = 1; + EBHP_HOT = 2; + EBHP_PRESSED = 3; + EBHP_SELECTEDNORMAL = 4; + EBHP_SELECTEDHOT = 5; + EBHP_SELECTEDPRESSED = 6; + + { IEBARMENUSTATES } + EBM_NORMAL = 1; + EBM_HOT = 2; + EBM_PRESSED = 3; + + { NORMALGROUPCOLLAPSESTATES } + EBNGC_NORMAL = 1; + EBNGC_HOT = 2; + EBNGC_PRESSED = 3; + + { NORMALGROUPEXPANDSTATES } + EBNGE_NORMAL = 1; + EBNGE_HOT = 2; + EBNGE_PRESSED = 3; + + { SPECIALGROUPCOLLAPSESTATES } + EBSGC_NORMAL = 1; + EBSGC_HOT = 2; + EBSGC_PRESSED = 3; + + { SPECIALGROUPEXPANDSTATES } + EBSGE_NORMAL = 1; + EBSGE_HOT = 2; + EBSGE_PRESSED = 3; + + +{ "TaskBand" Parts & States } + + { MENUBANDPARTS } + MDP_NEWAPPBUTTON = 1; + MDP_SEPERATOR = 2; + + { MENUBANDSTATES } + MDS_NORMAL = 1; + MDS_HOT = 2; + MDS_PRESSED = 3; + MDS_DISABLED = 4; + MDS_CHECKED = 5; + MDS_HOTCHECKED = 6; + + + +{ Access to uxtheme.dll } + +type + HIMAGELIST = THandle; + HTHEME = THandle; + +const + DTT_GRAYED = $1; + + HTTB_BACKGROUNDSEG = $0000; + HTTB_FIXEDBORDER = $0002; + HTTB_CAPTION = $0004; + HTTB_RESIZINGBORDER_LEFT = $0010; + HTTB_RESIZINGBORDER_TOP = $0020; + HTTB_RESIZINGBORDER_RIGHT = $0040; + HTTB_RESIZINGBORDER_BOTTOM = $0080; + HTTB_SIZINGTEMPLATE = $0100; + HTTB_SYSTEMSIZINGMARGINS = $0200; + HTTB_RESIZINGBORDER = HTTB_RESIZINGBORDER_LEFT or HTTB_RESIZINGBORDER_TOP or + HTTB_RESIZINGBORDER_RIGHT or HTTB_RESIZINGBORDER_BOTTOM; + + + + +//------------------------------------------------------------------------------ +// OpenThemeData() - Open the theme data for the specified HWND and +// semi-colon separated list of class names. +// +// OpenThemeData() will try each class name, one at +// a time, and use the first matching theme info +// found. If a match is found, a theme handle +// to the data is returned. If no match is found, +// a "NULL" handle is returned. +// +// When the window is destroyed or a WM_THEMECHANGED +// msg is received, "CloseThemeData()" should be +// called to close the theme handle. +// +// hwnd - window handle of the control/window to be themed +// +// pszClassList - class name (or list of names) to match to theme data +// section. if the list contains more than one name, +// the names are tested one at a time for a match. +// If a match is found, OpenThemeData() returns a +// theme handle associated with the matching class. +// This param is a list (instead of just a single +// class name) to provide the class an opportunity +// to get the "best" match between the class and +// the current theme. For example, a button might +// pass L"OkButton, Button" if its ID=ID_OK. If +// the current theme has an entry for OkButton, +// that will be used. Otherwise, we fall back on +// the normal Button entry. +//------------------------------------------------------------------------------ + +var + OpenThemeData: function(hwnd: HWND; pszClassList: LPCWSTR): HTHEME; stdcall; + + +//------------------------------------------------------------------------------ +// CloseThemeData() - closes the theme data handle. This should be done +// when the window being themed is destroyed or +// whenever a WM_THEMECHANGED msg is received +// (followed by an attempt to create a new Theme data +// handle). +// +// hTheme - open theme data handle (returned from prior call +// to OpenThemeData() API). +//------------------------------------------------------------------------------ + + CloseThemeData: function(hTheme: HTHEME): HRESULT; stdcall; + + +//------------------------------------------------------------------------------ +// functions for basic drawing support +//------------------------------------------------------------------------------ +// The following methods are the theme-aware drawing services. +// Controls/Windows are defined in drawable "parts" by their author: a +// parent part and 0 or more child parts. Each of the parts can be +// described in "states" (ex: disabled, hot, pressed). +//------------------------------------------------------------------------------ +// For the list of all themed classes and the definition of all +// parts and states, see the file "tmschmea.h". +//------------------------------------------------------------------------------ +// Each of the below methods takes a "iPartId" param to specify the +// part and a "iStateId" to specify the state of the part. +// "iStateId=0" refers to the root part. "iPartId" = "0" refers to +// the root class. +//------------------------------------------------------------------------------ +// Note: draw operations are always scaled to fit (and not to exceed) +// the specified "Rect". +//------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------ +// DrawThemeBackground() +// - draws the theme-specified border and fill for +// the "iPartId" and "iStateId". This could be +// based on a bitmap file, a border and fill, or +// other image description. +// +// hTheme - theme data handle +// hdc - HDC to draw into +// iPartId - part number to draw +// iStateId - state number (of the part) to draw +// pRect - defines the size/location of the part +// pClipRect - optional clipping rect (don't draw outside it) +//------------------------------------------------------------------------------ + + DrawThemeBackground: function(hTheme: HTHEME; hdc: HDC; iPartId, iStateId: Integer; + const Rect: TRect; pClipRect: PRect): HRESULT; stdcall; + + +//------------------------------------------------------------------------------ +// DrawThemeText() - draws the text using the theme-specified +// color and font for the "iPartId" and +// "iStateId". +// +// hTheme - theme data handle +// hdc - HDC to draw into +// iPartId - part number to draw +// iStateId - state number (of the part) to draw +// pszText - actual text to draw +// dwCharCount - number of chars to draw (-1 for all) +// dwTextFlags - same as DrawText() "uFormat" param +// dwTextFlags2 - additional drawing options +// pRect - defines the size/location of the part +//------------------------------------------------------------------------------ + + DrawThemeText: function(hTheme: HTHEME; hdc: HDC; iPartId, iStateId: Integer; pszText: LPCWSTR; iCharCount: Integer; + dwTextFlags, dwTextFlags2: DWORD; const pRect: TRect): HRESULT; stdcall; + + +//------------------------------------------------------------------------------ +// GetThemeBackgroundContentRect() +// - gets the size of the content for the theme-defined +// background. This is usually the area inside +// the borders or Margins. +// +// hTheme - theme data handle +// hdc - (optional) device content to be used for drawing +// iPartId - part number to draw +// iStateId - state number (of the part) to draw +// pBoundingRect - the outer RECT of the part being drawn +// pContentRect - RECT to receive the content area +//------------------------------------------------------------------------------ + + GetThemeBackgroundContentRect: function(hTheme: HTHEME; hdc: HDC; iPartId, iStateId: Integer; + const pBoundingRect: TRect; pContentRect: PRECT): HRESULT; stdcall; + + +//------------------------------------------------------------------------------ +// GetThemeBackgroundExtent() - calculates the size/location of the theme- +// specified background based on the +// "pContentRect". +// +// hTheme - theme data handle +// hdc - (optional) device content to be used for drawing +// iPartId - part number to draw +// iStateId - state number (of the part) to draw +// pContentRect - RECT that defines the content area +// pBoundingRect - RECT to receive the overall size/location of part +//------------------------------------------------------------------------------ + + GetThemeBackgroundExtent: function(hTheme: HTHEME; hdc: HDC; iPartId, iStateId: Integer; const pContentRect: TRect; + var pExtentRect: TRect): HRESULT; stdcall; + +//------------------------------------------------------------------------------ +// GetThemePartSize() - returns the specified size of the theme part +// +// hTheme - theme data handle +// hdc - HDC to select font into & measure against +// iPartId - part number to retrieve size for +// iStateId - state number (of the part) +// prc - (optional) rect for part drawing destination +// eSize - the type of size to be retreived +// psz - receives the specified size of the part +//------------------------------------------------------------------------------ + +type + THEMESIZE = ( + TS_MIN, // minimum size of a visual style part + TS_TRUE, // size of the visual style part that will best fit the available space + TS_DRAW); // size that the theme manager uses to draw a part + TThemeSize = THEMESIZE; + +var + GetThemePartSize: function(hTheme: HTHEME; hdc: HDC; iPartId, iStateId: Integer; prc: PRECT; eSize: THEMESIZE; + var psz: TSize): HRESULT; stdcall; + +//------------------------------------------------------------------------------ +// GetThemeTextExtent() - calculates the size/location of the specified +// text when rendered in the Theme Font. +// +// hTheme - theme data handle +// hdc - HDC to select font & measure into +// iPartId - part number to draw +// iStateId - state number (of the part) +// pszText - the text to be measured +// dwCharCount - number of chars to draw (-1 for all) +// dwTextFlags - same as DrawText() "uFormat" param +// pszBoundingRect - optional: to control layout of text +// pszExtentRect - receives the RECT for text size/location +//------------------------------------------------------------------------------ + + GetThemeTextExtent: function(hTheme: HTHEME; hdc: HDC; iPartId, iStateId: Integer; pszText: LPCWSTR; + iCharCount: Integer; dwTextFlags: DWORD; pBoundingRect: PRECT; var pExtentRect: TRect): HRESULT; stdcall; + + +//------------------------------------------------------------------------------ +// GetThemeTextMetrics() +// - returns info about the theme-specified font +// for the part/state passed in. +// +// hTheme - theme data handle +// hdc - optional: HDC for screen context +// iPartId - part number to draw +// iStateId - state number (of the part) +// ptm - receives the font info +//------------------------------------------------------------------------------ + + GetThemeTextMetrics: function(hTheme: HTHEME; hdc: HDC; iPartId, iStateId: Integer; + var ptm: TEXTMETRIC): HRESULT; stdcall; + + +//------------------------------------------------------------------------------ +// GetThemeBackgroundRegion() +// - computes the region for a regular or partially +// transparent theme-specified background that is +// bound by the specified "pRect". +// If the rectangle is empty, sets the HRGN to NULL +// and return S_FALSE. +// +// hTheme - theme data handle +// hdc - optional HDC to draw into (DPI scaling) +// iPartId - part number to draw +// iStateId - state number (of the part) +// pRect - the RECT used to draw the part +// pRegion - receives handle to calculated region +//------------------------------------------------------------------------------ + + GetThemeBackgroundRegion: function(hTheme: HTHEME; hdc: HDC; iPartId, iStateId: Integer; const pRect: TRect; + var pRegion: HRGN): HRESULT; stdcall; + + +//------------------------------------------------------------------------------ +// HitTestThemeBackground() +// - returns a HitTestCode (a subset of the values +// returned by WM_NCHITTEST) for the point "ptTest" +// within the theme-specified background +// (bound by pRect). "pRect" and "ptTest" should +// both be in the same coordinate system +// (client, screen, etc). +// +// hTheme - theme data handle +// hdc - HDC to draw into +// iPartId - part number to test against +// iStateId - state number (of the part) +// pRect - the RECT used to draw the part +// hrgn - optional region to use; must be in same coordinates as +// - pRect and pTest. +// ptTest - the hit point to be tested +// dwOptions - HTTB_xxx constants +// pwHitTestCode - receives the returned hit test code - one of: +// +// HTNOWHERE, HTLEFT, HTTOPLEFT, HTBOTTOMLEFT, +// HTRIGHT, HTTOPRIGHT, HTBOTTOMRIGHT, +// HTTOP, HTBOTTOM, HTCLIENT +//------------------------------------------------------------------------------ + + HitTestThemeBackground: function(hTheme: HTHEME; hdc: HDC; iPartId, iStateId: Integer; dwOptions: DWORD; + const pRect: TRect; hrgn: HRGN; ptTest: TPoint; var pwHitTestCode: WORD): HRESULT; stdcall; + + +//------------------------------------------------------------------------------ +// DrawThemeEdge() - Similar to the DrawEdge() API, but uses part colors +// and is high-DPI aware +// hTheme - theme data handle +// hdc - HDC to draw into +// iPartId - part number to draw +// iStateId - state number of part +// pDestRect - the RECT used to draw the line(s) +// uEdge - Same as DrawEdge() API +// uFlags - Same as DrawEdge() API +// pContentRect - Receives the interior rect if (uFlags & BF_ADJUST) +//------------------------------------------------------------------------------ + + DrawThemeEdge: function(hTheme: HTHEME; hdc: HDC; iPartId, iStateId: Integer; const pDestRect: TRect; uEdge, + uFlags: UINT; pContentRect: PRECT): HRESULT; stdcall; + + +//------------------------------------------------------------------------------ +// DrawThemeIcon() - draws an image within an imagelist based on +// a (possible) theme-defined effect. +// +// hTheme - theme data handle +// hdc - HDC to draw into +// iPartId - part number to draw +// iStateId - state number of part +// pRect - the RECT to draw the image within +// himl - handle to IMAGELIST +// iImageIndex - index into IMAGELIST (which icon to draw) +//------------------------------------------------------------------------------ + + DrawThemeIcon: function(hTheme: HTHEME; hdc: HDC; iPartId, iStateId: Integer; const pRect: TRect; himl: HIMAGELIST; + iImageIndex: Integer): HRESULT; stdcall; + + +//------------------------------------------------------------------------------ +// IsThemePartDefined() - returns TRUE if the theme has defined parameters +// for the specified "iPartId" and "iStateId". +// +// hTheme - theme data handle +// iPartId - part number to find definition for +// iStateId - state number of part +//------------------------------------------------------------------------------ + + IsThemePartDefined: function(hTheme: HTHEME; iPartId, iStateId: Integer): BOOL; stdcall; + + +//------------------------------------------------------------------------------ +// IsThemeBackgroundPartiallyTransparent() +// - returns TRUE if the theme specified background for +// the part/state has transparent pieces or +// alpha-blended pieces. +// +// hTheme - theme data handle +// iPartId - part number +// iStateId - state number of part +//------------------------------------------------------------------------------ + + IsThemeBackgroundPartiallyTransparent: function(hTheme: HTHEME; iPartId, iStateId: Integer): BOOL; stdcall; + + +//------------------------------------------------------------------------------ +// lower-level theme information services +//------------------------------------------------------------------------------ +// The following methods are getter routines for each of the Theme Data types. +// Controls/Windows are defined in drawable "parts" by their author: a +// parent part and 0 or more child parts. Each of the parts can be +// described in "states" (ex: disabled, hot, pressed). +//------------------------------------------------------------------------------ +// Each of the below methods takes a "iPartId" param to specify the +// part and a "iStateId" to specify the state of the part. +// "iStateId=0" refers to the root part. "iPartId" = "0" refers to +// the root class. +//------------------------------------------------------------------------------ +// Each method also take a "iPropId" param because multiple instances of +// the same primitive type can be defined in the theme schema. +//------------------------------------------------------------------------------ + + +//------------------------------------------------------------------------------ +// GetThemeColor() - Get the value for the specified COLOR property +// +// hTheme - theme data handle +// iPartId - part number +// iStateId - state number of part +// iPropId - the property number to get the value for +// pColor - receives the value of the property +//------------------------------------------------------------------------------ + +var + GetThemeColor: function(hTheme: HTHEME; iPartId, iStateId, iPropId: Integer; var pColor: COLORREF): HRESULT; stdcall; + +//------------------------------------------------------------------------------ +// GetThemeMetric() - Get the value for the specified metric/size +// property +// +// hTheme - theme data handle +// hdc - (optional) hdc to be drawn into (DPI scaling) +// iPartId - part number +// iStateId - state number of part +// iPropId - the property number to get the value for +// piVal - receives the value of the property +//------------------------------------------------------------------------------ + + GetThemeMetric: function(hTheme: HTHEME; hdc: HDC; iPartId, iStateId, iPropId: Integer; + var piVal: Integer): HRESULT; stdcall; + +//------------------------------------------------------------------------------ +// GetThemeString() - Get the value for the specified string property +// +// hTheme - theme data handle +// iPartId - part number +// iStateId - state number of part +// iPropId - the property number to get the value for +// pszBuff - receives the string property value +// cchMaxBuffChars - max. number of chars allowed in pszBuff +//------------------------------------------------------------------------------ + + GetThemeString: function(hTheme: HTHEME; iPartId, iStateId, iPropId: Integer; pszBuff: LPWSTR; + cchMaxBuffChars: Integer): HRESULT; stdcall; + +//------------------------------------------------------------------------------ +// GetThemeBool() - Get the value for the specified BOOL property +// +// hTheme - theme data handle +// iPartId - part number +// iStateId - state number of part +// iPropId - the property number to get the value for +// pfVal - receives the value of the property +//------------------------------------------------------------------------------ + + GetThemeBool: function(hTheme: HTHEME; iPartId, iStateId, iPropId: Integer; var pfVal: BOOL): HRESULT; stdcall; + +//------------------------------------------------------------------------------ +// GetThemeInt() - Get the value for the specified int property +// +// hTheme - theme data handle +// iPartId - part number +// iStateId - state number of part +// iPropId - the property number to get the value for +// piVal - receives the value of the property +//------------------------------------------------------------------------------ + + GetThemeInt: function(hTheme: HTHEME; iPartId, iStateId, iPropId: Integer; var piVal: Integer): HRESULT; stdcall; + +//------------------------------------------------------------------------------ +// GetThemeEnumValue() - Get the value for the specified ENUM property +// +// hTheme - theme data handle +// iPartId - part number +// iStateId - state number of part +// iPropId - the property number to get the value for +// piVal - receives the value of the enum (cast to int*) +//------------------------------------------------------------------------------ + + GetThemeEnumValue: function(hTheme: HTHEME; iPartId, iStateId, iPropId: Integer; var piVal: Integer): HRESULT; stdcall; + +//------------------------------------------------------------------------------ +// GetThemePosition() - Get the value for the specified position +// property +// +// hTheme - theme data handle +// iPartId - part number +// iStateId - state number of part +// iPropId - the property number to get the value for +// pPoint - receives the value of the position property +//------------------------------------------------------------------------------ + + GetThemePosition: function(hTheme: HTHEME; iPartId, iStateId, iPropId: Integer;var pPoint: TPoint): HRESULT; stdcall; + +//------------------------------------------------------------------------------ +// GetThemeFont() - Get the value for the specified font property +// +// hTheme - theme data handle +// hdc - (optional) hdc to be drawn to (DPI scaling) +// iPartId - part number +// iStateId - state number of part +// iPropId - the property number to get the value for +// pFont - receives the value of the LOGFONT property +// (scaled for the current logical screen dpi) +//------------------------------------------------------------------------------ + + GetThemeFont: function(hTheme: HTHEME; hdc: HDC; iPartId, iStateId, iPropId: Integer; + var pFont: LOGFONT): HRESULT; stdcall; + +//------------------------------------------------------------------------------ +// GetThemeRect() - Get the value for the specified RECT property +// +// hTheme - theme data handle +// iPartId - part number +// iStateId - state number of part +// iPropId - the property number to get the value for +// pRect - receives the value of the RECT property +//------------------------------------------------------------------------------ + + GetThemeRect: function(hTheme: HTHEME; iPartId, iStateId, iPropId: Integer; var pRect: TRect): HRESULT; stdcall; + +//------------------------------------------------------------------------------ +// GetThemeMargins() - Get the value for the specified MARGINS property +// +// hTheme - theme data handle +// hdc - (optional) hdc to be used for drawing +// iPartId - part number +// iStateId - state number of part +// iPropId - the property number to get the value for +// prc - RECT for area to be drawn into +// pMargins - receives the value of the MARGINS property +//------------------------------------------------------------------------------ + +type + _MARGINS = record + cxLeftWidth: Integer; // width of left border that retains its size + cxRightWidth: Integer; // width of right border that retains its size + cyTopHeight: Integer; // height of top border that retains its size + cyBottomHeight: Integer; // height of bottom border that retains its size + end; + MARGINS = _MARGINS; + PMARGINS = ^MARGINS; + TMargins = MARGINS; + +var + GetThemeMargins: function(hTheme: HTHEME; hdc: HDC; iPartId, iStateId, iPropId: Integer; prc: PRECT; + var pMargins: MARGINS): HRESULT; stdcall; + + +//------------------------------------------------------------------------------ +// GetThemeIntList() - Get the value for the specified INTLIST struct +// +// hTheme - theme data handle +// iPartId - part number +// iStateId - state number of part +// iPropId - the property number to get the value for +// pIntList - receives the value of the INTLIST property +//------------------------------------------------------------------------------ + +const + MAX_INTLIST_COUNT = 10; + +type + _INTLIST = record + iValueCount: Integer; + iValues: array [0..MAX_INTLIST_COUNT - 1] of Integer; + end; + INTLIST = _INTLIST; + PINTLIST = ^INTLIST; + TIntList = INTLIST; + +var + GetThemeIntList: function(hTheme: HTHEME; iPartId, iStateId, iPropId: Integer; var pIntList: INTLIST): HRESULT; stdcall; + + +//------------------------------------------------------------------------------ +// GetThemePropertyOrigin() +// - searches for the specified theme property +// and sets "pOrigin" to indicate where it was +// found (or not found) +// +// hTheme - theme data handle +// iPartId - part number +// iStateId - state number of part +// iPropId - the property number to search for +// pOrigin - receives the value of the property origin +//------------------------------------------------------------------------------ + +type + PROPERTYORIGIN = ( + PO_STATE, // property was found in the state section + PO_PART, // property was found in the part section + PO_CLASS, // property was found in the class section + PO_GLOBAL, // property was found in [globals] section + PO_NOTFOUND); // property was not found + TPropertyOrigin = PROPERTYORIGIN; + +var + GetThemePropertyOrigin: function(hTheme: HTHEME; iPartId, iStateId, iPropId: Integer; + var pOrigin: PROPERTYORIGIN): HRESULT; stdcall; + +//------------------------------------------------------------------------------ +// SetWindowTheme() +// - redirects an existing Window to use a different +// section of the current theme information than its +// class normally asks for. +// +// hwnd - the handle of the window (cannot be NULL) +// +// pszSubAppName - app (group) name to use in place of the calling +// app's name. If NULL, the actual calling app +// name will be used. +// +// pszSubIdList - semicolon separated list of class Id names to +// use in place of actual list passed by the +// window's class. if NULL, the id list from the +// calling class is used. +//------------------------------------------------------------------------------ +// The Theme Manager will remember the "pszSubAppName" and the +// "pszSubIdList" associations thru the lifetime of the window (even +// if themes are subsequently changed). The window is sent a +// "WM_THEMECHANGED" msg at the end of this call, so that the new +// theme can be found and applied. +//------------------------------------------------------------------------------ +// When "pszSubAppName" or "pszSubIdList" are NULL, the Theme Manager +// removes the previously remember association. To turn off theme-ing for +// the specified window, you can pass an empty string (L"") so it +// won't match any section entries. +//------------------------------------------------------------------------------ + + SetWindowTheme: function(hwnd: HWND; pszSubAppName: LPCWSTR; pszSubIdList: LPCWSTR): HRESULT; stdcall; + +//------------------------------------------------------------------------------ +// GetThemeFilename() - Get the value for the specified FILENAME property. +// +// hTheme - theme data handle +// iPartId - part number +// iStateId - state number of part +// iPropId - the property number to search for +// pszThemeFileName - output buffer to receive the filename +// cchMaxBuffChars - the size of the return buffer, in chars +//------------------------------------------------------------------------------ + + GetThemeFilename: function(hTheme: HTHEME; iPartId, iStateId, iPropId: Integer; pszThemeFileName: LPWSTR; + cchMaxBuffChars: Integer): HRESULT; stdcall; + +//------------------------------------------------------------------------------ +// GetThemeSysColor() - Get the value of the specified System color. +// +// hTheme - the theme data handle. if non-NULL, will return +// color from [SysMetrics] section of theme. +// if NULL, will return the global system color. +// +// iColorId - the system color index defined in winuser.h +//------------------------------------------------------------------------------ + + GetThemeSysColor: function(hTheme: HTHEME; iColorId: Integer): COLORREF; stdcall; + +//------------------------------------------------------------------------------ +// GetThemeSysColorBrush() +// - Get the brush for the specified System color. +// +// hTheme - the theme data handle. if non-NULL, will return +// brush matching color from [SysMetrics] section of +// theme. if NULL, will return the brush matching +// global system color. +// +// iColorId - the system color index defined in winuser.h +//------------------------------------------------------------------------------ + + GetThemeSysColorBrush: function(hTheme: HTHEME; iColorId: Integer): HBRUSH; stdcall; + +//------------------------------------------------------------------------------ +// GetThemeSysBool() - Get the boolean value of specified System metric. +// +// hTheme - the theme data handle. if non-NULL, will return +// BOOL from [SysMetrics] section of theme. +// if NULL, will return the specified system boolean. +// +// iBoolId - the TMT_XXX BOOL number (first BOOL +// is TMT_FLATMENUS) +//------------------------------------------------------------------------------ + + GetThemeSysBool: function(hTheme: HTHEME; iBoolId: Integer): BOOL; stdcall; + +//------------------------------------------------------------------------------ +// GetThemeSysSize() - Get the value of the specified System size metric. +// (scaled for the current logical screen dpi) +// +// hTheme - the theme data handle. if non-NULL, will return +// size from [SysMetrics] section of theme. +// if NULL, will return the global system metric. +// +// iSizeId - the following values are supported when +// hTheme is non-NULL: +// +// SM_CXBORDER (border width) +// SM_CXVSCROLL (scrollbar width) +// SM_CYHSCROLL (scrollbar height) +// SM_CXSIZE (caption width) +// SM_CYSIZE (caption height) +// SM_CXSMSIZE (small caption width) +// SM_CYSMSIZE (small caption height) +// SM_CXMENUSIZE (menubar width) +// SM_CYMENUSIZE (menubar height) +// +// when hTheme is NULL, iSizeId is passed directly +// to the GetSystemMetrics() function +//------------------------------------------------------------------------------ + + GetThemeSysSize: function(hTheme: HTHEME; iSizeId: Integer): Integer; stdcall; + +//------------------------------------------------------------------------------ +// GetThemeSysFont() - Get the LOGFONT for the specified System font. +// +// hTheme - the theme data handle. if non-NULL, will return +// font from [SysMetrics] section of theme. +// if NULL, will return the specified system font. +// +// iFontId - the TMT_XXX font number (first font +// is TMT_CAPTIONFONT) +// +// plf - ptr to LOGFONT to receive the font value. +// (scaled for the current logical screen dpi) +//------------------------------------------------------------------------------ + + GetThemeSysFont: function(hTheme: HTHEME; iFontId: Integer; var plf: LOGFONT): HRESULT; stdcall; + +//------------------------------------------------------------------------------ +// GetThemeSysString() - Get the value of specified System string metric. +// +// hTheme - the theme data handle (required) +// +// iStringId - must be one of the following values: +// +// TMT_CSSNAME +// TMT_XMLNAME +// +// pszStringBuff - the buffer to receive the string value +// +// cchMaxStringChars - max. number of chars that pszStringBuff can hold +//------------------------------------------------------------------------------ + + GetThemeSysString: function(hTheme: HTHEME; iStringId: Integer; pszStringBuff: LPWSTR; + cchMaxStringChars: Integer): HRESULT; stdcall; + +//------------------------------------------------------------------------------ +// GetThemeSysInt() - Get the value of specified System int. +// +// hTheme - the theme data handle (required) +// +// iIntId - must be one of the following values: +// +// TMT_DPIX +// TMT_DPIY +// TMT_MINCOLORDEPTH +// +// piValue - ptr to int to receive value +//------------------------------------------------------------------------------ + + GetThemeSysInt: function(hTheme: HTHEME; iIntId: Integer; var piValue: Integer): HRESULT; stdcall; + +//------------------------------------------------------------------------------ +// IsThemeActive() - can be used to test if a system theme is active +// for the current user session. +// +// use the API "IsAppThemed()" to test if a theme is +// active for the calling process. +//------------------------------------------------------------------------------ + + IsThemeActive: function: BOOL; stdcall; + +//------------------------------------------------------------------------------ +// IsAppThemed() - returns TRUE if a theme is active and available to +// the current process +//------------------------------------------------------------------------------ + + IsAppThemed: function: BOOL; stdcall; + +//------------------------------------------------------------------------------ +// GetWindowTheme() - if window is themed, returns its most recent +// HTHEME from OpenThemeData() - otherwise, returns +// NULL. +// +// hwnd - the window to get the HTHEME of +//------------------------------------------------------------------------------ + + GetWindowTheme: function(hwnd: HWND): HTHEME; stdcall; + +//------------------------------------------------------------------------------ +// EnableThemeDialogTexture() +// +// - Enables/disables dialog background theme. This method can be used to +// tailor dialog compatibility with child windows and controls that +// may or may not coordinate the rendering of their client area backgrounds +// with that of their parent dialog in a manner that supports seamless +// background texturing. +// +// hdlg - the window handle of the target dialog +// dwFlags - ETDT_ENABLE to enable the theme-defined dialog background texturing, +// ETDT_DISABLE to disable background texturing, +// ETDT_ENABLETAB to enable the theme-defined background +// texturing using the Tab texture +//------------------------------------------------------------------------------ + +const + ETDT_DISABLE = $00000001; + ETDT_ENABLE = $00000002; + ETDT_USETABTEXTURE = $00000004; + ETDT_ENABLETAB = ETDT_ENABLE or ETDT_USETABTEXTURE; + +var + EnableThemeDialogTexture: function(hwnd: HWND; dwFlags: DWORD): HRESULT; stdcall; + +//------------------------------------------------------------------------------ +// IsThemeDialogTextureEnabled() +// +// - Reports whether the dialog supports background texturing. +// +// hdlg - the window handle of the target dialog +//------------------------------------------------------------------------------ + +var + IsThemeDialogTextureEnabled: function(hwnd: HWND): BOOL; stdcall; + +//------------------------------------------------------------------------------ +// GetThemeAppProperties() +// - returns the app property flags that control theming +//------------------------------------------------------------------------------ + +const + STAP_ALLOW_NONCLIENT = 1; + STAP_ALLOW_CONTROLS = 2; + STAP_ALLOW_WEBCONTENT = 4; + +var + GetThemeAppProperties: function: DWORD; stdcall; + +//------------------------------------------------------------------------------ +// SetThemeAppProperties() +// - sets the flags that control theming within the app +// +// dwFlags - the flag values to be set +//------------------------------------------------------------------------------ + +var + SetThemeAppProperties: procedure(dwFlags: DWORD); stdcall; + +//------------------------------------------------------------------------------ +// GetCurrentThemeName() +// - Get the name of the current theme in-use. +// Optionally, return the ColorScheme name and the +// Size name of the theme. +// +// pszThemeFileName - receives the theme path & filename +// cchMaxNameChars - max chars allowed in pszNameBuff +// +// pszColorBuff - (optional) receives the canonical color scheme name +// (not the display name) +// cchMaxColorChars - max chars allowed in pszColorBuff +// +// pszSizeBuff - (optional) receives the canonical size name +// (not the display name) +// cchMaxSizeChars - max chars allowed in pszSizeBuff +//------------------------------------------------------------------------------ + +var + GetCurrentThemeName: function(pszThemeFileName: LPWSTR; cchMaxNameChars: Integer; pszColorBuff: LPWSTR; + cchMaxColorChars: Integer; pszSizeBuff: LPWSTR; cchMaxSizeChars: Integer): HRESULT; stdcall; + +//------------------------------------------------------------------------------ +// GetThemeDocumentationProperty() +// - Get the value for the specified property name from +// the [documentation] section of the themes.ini file +// for the specified theme. If the property has been +// localized in the theme files string table, the +// localized version of the property value is returned. +// +// pszThemeFileName - filename of the theme file to query +// pszPropertyName - name of the string property to retreive a value for +// pszValueBuff - receives the property string value +// cchMaxValChars - max chars allowed in pszValueBuff +//------------------------------------------------------------------------------ + +{ commented out for D4 compatibility +const + SZ_THDOCPROP_DISPLAYNAME = WideString('DisplayName'); + SZ_THDOCPROP_CANONICALNAME = WideString('ThemeName'); + SZ_THDOCPROP_TOOLTIP = WideString('ToolTip'); + SZ_THDOCPROP_AUTHOR = WideString('author'); } + +var + GetThemeDocumentationProperty: function(pszThemeName, pszPropertyName: LPCWSTR; pszValueBuff: LPWSTR; + cchMaxValChars: Integer): HRESULT; stdcall; + +//------------------------------------------------------------------------------ +// Theme API Error Handling +// +// All functions in the Theme API not returning an HRESULT (THEMEAPI_) +// use the WIN32 function "SetLastError()" to record any call failures. +// +// To retreive the error code of the last failure on the +// current thread for these type of API's, use the WIN32 function +// "GetLastError()". +// +// All Theme API error codes (HRESULT's and GetLastError() values) +// should be normal win32 errors which can be formatted into +// strings using the Win32 API FormatMessage(). +//------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------ +// DrawThemeParentBackground() +// - used by partially-transparent or alpha-blended +// child controls to draw the part of their parent +// that they appear in front of. +// +// hwnd - handle of the child control +// hdc - hdc of the child control +// prc - (optional) rect that defines the area to be +// drawn (CHILD coordinates) +//------------------------------------------------------------------------------ + +var + DrawThemeParentBackground: function(hwnd: HWND; hdc: HDC; prc: PRECT): HRESULT; stdcall; + +//------------------------------------------------------------------------------ +// EnableTheming() - enables or disables themeing for the current user +// in the current and future sessions. +// +// fEnable - if FALSE, disable theming & turn themes off. +// - if TRUE, enable themeing and, if user previously +// had a theme active, make it active now. +//------------------------------------------------------------------------------ + +var + EnableTheming: function(fEnable: BOOL): HRESULT; stdcall; + +implementation + +const + UXTHEME_DLL = 'uxtheme.dll'; + +var + DllHandle: THandle; + +function InitXPThemes: Boolean; +begin + if DllHandle = 0 then + begin + DllHandle := LoadLibrary(UXTHEME_DLL); + if DllHandle > 0 then + begin + OpenThemeData := GetProcAddress(DllHandle, 'OpenThemeData'); + CloseThemeData := GetProcAddress(DllHandle, 'CloseThemeData'); + DrawThemeBackground := GetProcAddress(DllHandle, 'DrawThemeBackground'); + DrawThemeText := GetProcAddress(DllHandle, 'DrawThemeText'); + GetThemeBackgroundContentRect := GetProcAddress(DllHandle, 'GetThemeBackgroundContentRect'); + GetThemeBackgroundExtent := GetProcAddress(DllHandle, 'GetThemeBackgroundContentRect'); + GetThemePartSize := GetProcAddress(DllHandle, 'GetThemePartSize'); + GetThemeTextExtent := GetProcAddress(DllHandle, 'GetThemeTextExtent'); + GetThemeTextMetrics := GetProcAddress(DllHandle, 'GetThemeTextMetrics'); + GetThemeBackgroundRegion := GetProcAddress(DllHandle, 'GetThemeBackgroundRegion'); + HitTestThemeBackground := GetProcAddress(DllHandle, 'HitTestThemeBackground'); + DrawThemeEdge := GetProcAddress(DllHandle, 'DrawThemeEdge'); + DrawThemeIcon := GetProcAddress(DllHandle, 'DrawThemeIcon'); + IsThemePartDefined := GetProcAddress(DllHandle, 'IsThemePartDefined'); + IsThemeBackgroundPartiallyTransparent := GetProcAddress(DllHandle, 'IsThemeBackgroundPartiallyTransparent'); + GetThemeColor := GetProcAddress(DllHandle, 'GetThemeColor'); + GetThemeMetric := GetProcAddress(DllHandle, 'GetThemeMetric'); + GetThemeString := GetProcAddress(DllHandle, 'GetThemeString'); + GetThemeBool := GetProcAddress(DllHandle, 'GetThemeBool'); + GetThemeInt := GetProcAddress(DllHandle, 'GetThemeInt'); + GetThemeEnumValue := GetProcAddress(DllHandle, 'GetThemeEnumValue'); + GetThemePosition := GetProcAddress(DllHandle, 'GetThemePosition'); + GetThemeFont := GetProcAddress(DllHandle, 'GetThemeFont'); + GetThemeRect := GetProcAddress(DllHandle, 'GetThemeRect'); + GetThemeMargins := GetProcAddress(DllHandle, 'GetThemeMargins'); + GetThemeIntList := GetProcAddress(DllHandle, 'GetThemeIntList'); + GetThemePropertyOrigin := GetProcAddress(DllHandle, 'GetThemePropertyOrigin'); + SetWindowTheme := GetProcAddress(DllHandle, 'SetWindowTheme'); + GetThemeFilename := GetProcAddress(DllHandle, 'GetThemeFilename'); + GetThemeSysColor := GetProcAddress(DllHandle, 'GetThemeSysColor'); + GetThemeSysColorBrush := GetProcAddress(DllHandle, 'GetThemeSysColorBrush'); + GetThemeSysBool := GetProcAddress(DllHandle, 'GetThemeSysBool'); + GetThemeSysSize := GetProcAddress(DllHandle, 'GetThemeSysSize'); + GetThemeSysFont := GetProcAddress(DllHandle, 'GetThemeSysFont'); + GetThemeSysString := GetProcAddress(DllHandle, 'GetThemeSysString'); + GetThemeSysInt := GetProcAddress(DllHandle, 'GetThemeSysInt'); + IsThemeActive := GetProcAddress(DllHandle, 'IsThemeActive'); + IsAppThemed := GetProcAddress(DllHandle, 'IsAppThemed'); + GetWindowTheme := GetProcAddress(DllHandle, 'GetWindowTheme'); + EnableThemeDialogTexture := GetProcAddress(DllHandle, 'EnableThemeDialogTexture'); + IsThemeDialogTextureEnabled := GetProcAddress(DllHandle, 'IsThemeDialogTextureEnabled'); + GetThemeAppProperties := GetProcAddress(DllHandle, 'GetThemeAppProperties'); + SetThemeAppProperties := GetProcAddress(DllHandle, 'SetThemeAppProperties'); + GetCurrentThemeName := GetProcAddress(DllHandle, 'GetCurrentThemeName'); + GetThemeDocumentationProperty := GetProcAddress(DllHandle, 'GetThemeDocumentationProperty'); + DrawThemeParentBackground := GetProcAddress(DllHandle, 'DrawThemeParentBackground'); + EnableTheming := GetProcAddress(DllHandle, 'EnableTheming'); + end; + end; + Result := DllHandle > 0; +end; + +procedure FreeXPThemes; +begin + if DllHandle <> 0 then + begin + FreeLibrary(DllHandle); + DllHandle := 0; + + OpenThemeData := nil; + CloseThemeData := nil; + DrawThemeBackground := nil; + DrawThemeText := nil; + GetThemeBackgroundContentRect := nil; + GetThemeBackgroundExtent := nil; + GetThemePartSize := nil; + GetThemeTextExtent := nil; + GetThemeTextMetrics := nil; + GetThemeBackgroundRegion := nil; + HitTestThemeBackground := nil; + DrawThemeEdge := nil; + DrawThemeIcon := nil; + IsThemePartDefined := nil; + IsThemeBackgroundPartiallyTransparent := nil; + GetThemeColor := nil; + GetThemeMetric := nil; + GetThemeString := nil; + GetThemeBool := nil; + GetThemeInt := nil; + GetThemeEnumValue := nil; + GetThemePosition := nil; + GetThemeFont := nil; + GetThemeRect := nil; + GetThemeMargins := nil; + GetThemeIntList := nil; + GetThemePropertyOrigin := nil; + SetWindowTheme := nil; + GetThemeFilename := nil; + GetThemeSysColor := nil; + GetThemeSysColorBrush := nil; + GetThemeSysBool := nil; + GetThemeSysSize := nil; + GetThemeSysFont := nil; + GetThemeSysString := nil; + GetThemeSysInt := nil; + IsThemeActive := nil; + IsAppThemed := nil; + GetWindowTheme := nil; + EnableThemeDialogTexture := nil; + IsThemeDialogTextureEnabled := nil; + GetThemeAppProperties := nil; + SetThemeAppProperties := nil; + GetCurrentThemeName := nil; + GetThemeDocumentationProperty := nil; + DrawThemeParentBackground := nil; + EnableTheming := nil; + end; +end; + +function CanUseXPThemes: Boolean; +begin + Result := (DllHandle > 0) and IsAppThemed and IsThemeActive; +end; + +end. diff --git a/official/2.1.6+2.1.beta1/TBX/TBXWhidbeyTheme.pas b/official/2.1.6+2.1.beta1/TBX/TBXWhidbeyTheme.pas new file mode 100644 index 0000000..3399c6a --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/TBXWhidbeyTheme.pas @@ -0,0 +1,2244 @@ +unit TBXWhidbeyTheme; + +// TBX Package +// Copyright 2001-2002 Alex A. Denisov. All Rights Reserved +// See TBX.chm for license and installation instructions +// +// "Whidbey" TBX theme ©2004 Roy Magne Klever +// roymagne@rmklever.com +// +// Version for TBX version 2.1 +// Last updated: 02.12.2004 + +interface + +uses + Windows, Messages, Graphics, TBXThemes, ImgList; + +{$DEFINE ALTERNATIVE_DISABLED_STYLE} +{.$DEFINE ALT_HEADER_STYLE} +{.$DEFINE ALT_VISUAL_STYLE} + +type + TItemPart = (ipBody, ipText, ipFrame); + TBtnItemState = (bisNormal, bisDisabled, bisSelected, bisPressed, bisHot, + bisDisabledHot, bisSelectedHot, bisPopupParent); + TMenuItemState = (misNormal, misDisabled, misHot, misDisabledHot); + TWinFramePart = (wfpBorder, wfpCaption, wfpCaptionText); + TWinFrameState = (wfsActive, wfsInactive); + + TTBXWhidbeyTheme = class(TTBXTheme) + private + procedure TBXSysCommand(var Message: TMessage); message TBX_SYSCOMMAND; + protected + { View/Window Colors } + MenubarColor: TColor; + ToolbarColor: TColor; + PopupColor: TColor; + DockPanelColor: TColor; + + PopupFrameColor: TColor; + WinFrameColors: array[TWinFrameState, TWinFramePart] of TColor; + PnlFrameColors: array[TWinFrameState, TWinFramePart] of TColor; + MenuItemColors: array[TMenuItemState, TItemPart] of TColor; + BtnItemColors: array[TBtnItemState, TItemPart] of TColor; + + { Other Colors } + DragHandleColor: TColor; + PopupSeparatorColor: TColor; + ToolbarSeparatorColor: TColor; + IconShadowColor: TColor; + StatusPanelFrameColor: TColor; + + procedure SetupColorCache; virtual; + protected + { Internal Methods } + function GetPartColor(const ItemInfo: TTBXItemInfo; ItemPart: TItemPart): + TColor; + function GetBtnColor(const ItemInfo: TTBXItemInfo; ItemPart: TItemPart): + TColor; + public + constructor Create(const AName: string); override; + destructor Destroy; override; + + { Metrics access} + function GetBooleanMetrics(Index: Integer): Boolean; override; + function GetImageOffset(Canvas: TCanvas; const ItemInfo: TTBXItemInfo; + ImageList: TCustomImageList): TPoint; override; + function GetIntegerMetrics(Index: Integer): Integer; override; + function GetItemColor(const ItemInfo: TTBXItemInfo): TColor; override; + function GetItemTextColor(const ItemInfo: TTBXItemInfo): TColor; override; + function GetItemImageBackground(const ItemInfo: TTBXItemInfo): TColor; + override; + procedure GetMargins(MarginID: Integer; out Margins: TTBXMargins); override; + function GetPopupShadowType: Integer; override; + procedure GetViewBorder(ViewType: Integer; out Border: TPoint); override; + function GetViewColor(AViewType: Integer): TColor; override; + procedure GetViewMargins(ViewType: Integer; out Margins: TTBXMargins); + override; + + { Painting routines } + procedure PaintBackgnd(Canvas: TCanvas; const ADockRect, ARect, AClipRect: + TRect; AColor: TColor; Transparent: Boolean; AViewType: Integer); + override; + procedure PaintButton(Canvas: TCanvas; const ARect: TRect; const ItemInfo: + TTBXItemInfo); override; + procedure PaintCaption(Canvas: TCanvas; const ARect: TRect; const ItemInfo: + TTBXItemInfo; const ACaption: string; AFormat: Cardinal; Rotated: + Boolean); + override; + procedure PaintCheckMark(Canvas: TCanvas; ARect: TRect; const ItemInfo: + TTBXItemInfo); override; + procedure PaintChevron(Canvas: TCanvas; ARect: TRect; const ItemInfo: + TTBXItemInfo); override; + procedure PaintDock(Canvas: TCanvas; const ClientRect, DockRect: TRect; + DockPosition: Integer); override; + procedure PaintDockPanelNCArea(Canvas: TCanvas; R: TRect; const + DockPanelInfo: TTBXDockPanelInfo); override; + procedure PaintDropDownArrow(Canvas: TCanvas; const ARect: TRect; const + ItemInfo: TTBXItemInfo); override; + procedure PaintEditButton(Canvas: TCanvas; const ARect: TRect; var ItemInfo: + TTBXItemInfo; ButtonInfo: TTBXEditBtnInfo); override; + procedure PaintEditFrame(Canvas: TCanvas; const ARect: TRect; var ItemInfo: + TTBXItemInfo; const EditInfo: TTBXEditInfo); override; + procedure PaintFloatingBorder(Canvas: TCanvas; const ARect: TRect; const + WindowInfo: TTBXWindowInfo); override; + procedure PaintFrame(Canvas: TCanvas; const ARect: TRect; const ItemInfo: + TTBXItemInfo); override; + procedure PaintImage(Canvas: TCanvas; ARect: TRect; const ItemInfo: + TTBXItemInfo; ImageList: TCustomImageList; ImageIndex: Integer); override; + procedure PaintMDIButton(Canvas: TCanvas; ARect: TRect; const ItemInfo: + TTBXItemInfo; ButtonKind: Cardinal); override; + procedure PaintMenuItem(Canvas: TCanvas; const ARect: TRect; var ItemInfo: + TTBXItemInfo); override; + procedure PaintMenuItemFrame(Canvas: TCanvas; const ARect: TRect; const + ItemInfo: TTBXItemInfo); override; + procedure PaintPageScrollButton(Canvas: TCanvas; const ARect: TRect; + ButtonType: Integer; Hot: Boolean); override; + procedure PaintPopupNCArea(Canvas: TCanvas; R: TRect; const PopupInfo: + TTBXPopupInfo); override; + procedure PaintSeparator(Canvas: TCanvas; ARect: TRect; ItemInfo: + TTBXItemInfo; Horizontal, LineSeparator: Boolean); override; + procedure PaintToolbarNCArea(Canvas: TCanvas; R: TRect; const ToolbarInfo: + TTBXToolbarInfo); override; + procedure PaintFrameControl(Canvas: TCanvas; R: TRect; Kind, State: Integer; + Params: Pointer); override; + procedure PaintStatusBar(Canvas: TCanvas; R: TRect; Part: Integer); + override; + end; + +{$IFDEF DTM_Package} +function TBXThemeName: shortstring; stdcall; +procedure TBXRegisterTheme(RegisterTheme: boolean); stdcall; +{$ENDIF} + +implementation + +{.$R tbx_glyphs.res} + +uses + TBXUtils, TB2Common, TB2Item, Classes, Controls, Commctrl, Forms, rmkThemes; + +{$IFDEF DTM_Package} +exports + TBXThemeName, + TBXRegisterTheme; + +const + cThemeName = 'Whidbey'; + +function TBXThemeName: shortstring; stdcall; +begin + result := cThemeName; +end; + +procedure TBXRegisterTheme(RegisterTheme: boolean); stdcall; +begin + if RegisterTheme then + RegisterTBXTheme(cThemeName, TTBXWhidbeyTheme) + else + UnregisterTBXTheme(cThemeName); +end; +{$ENDIF} + +var + StockImgList: TImageList; + CounterLock: Integer; + GradientBmp: TBitmap; + gradCol1, gradCol2, gradHandle1, gradHandle2, gradHandle3, gradBL: TColor; + +procedure InitializeStock; +begin + StockImgList := TImageList.Create(nil); + StockImgList.Handle := ImageList_LoadBitmap(HInstance, 'TBXGLYPHS', 16, 0, + clWhite); + GradientBmp := TBitmap.Create; + GradientBmp.PixelFormat := pf24bit; +end; + +procedure FinalizeStock; +begin + GradientBmp.Free; + StockImgList.Free; +end; + +{ TTBXWhidbeyTheme } + +function TTBXWhidbeyTheme.GetBooleanMetrics(Index: Integer): Boolean; +begin + case Index of + TMB_OFFICEXPPOPUPALIGNMENT: Result := True; + TMB_EDITHEIGHTEVEN: Result := False; + TMB_PAINTDOCKBACKGROUND: Result := True; + TMB_SOLIDTOOLBARNCAREA: Result := True; + TMB_SOLIDTOOLBARCLIENTAREA: Result := True; + else + Result := False; + end; +end; + +function TTBXWhidbeyTheme.GetIntegerMetrics(Index: Integer): Integer; +const + DEFAULT = -1; +begin + case Index of + TMI_SPLITBTN_ARROWWIDTH: Result := 12; + + TMI_DROPDOWN_ARROWWIDTH: Result := 8; + TMI_DROPDOWN_ARROWMARGIN: Result := 3; + + TMI_MENU_IMGTEXTSPACE: Result := 3; + TMI_MENU_LCAPTIONMARGIN: Result := 8; + TMI_MENU_RCAPTIONMARGIN: Result := 3; + TMI_MENU_SEPARATORSIZE: Result := 3; + TMI_MENU_MDI_DW: Result := 2; + TMI_MENU_MDI_DH: Result := 2; + + TMI_TLBR_SEPARATORSIZE: Result := DEFAULT; + + TMI_EDIT_MENURIGHTINDENT: Result := 1; + TMI_EDIT_FRAMEWIDTH: Result := 1; + TMI_EDIT_TEXTMARGINHORZ: Result := 2; + TMI_EDIT_TEXTMARGINVERT: Result := 2; + TMI_EDIT_BTNWIDTH: Result := 14; + else + Result := DEFAULT; + end; +end; + +function TTBXWhidbeyTheme.GetViewColor(AViewType: Integer): TColor; +begin + Result := clBtnFace; + if (AViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + if (AViewType and TVT_MENUBAR) = TVT_MENUBAR then + Result := MenubarColor + else + Result := ToolbarColor; + end + else if (AViewType and VT_POPUP) = VT_POPUP then + begin + if (AViewType and PVT_LISTBOX) = PVT_LISTBOX then + Result := clWindow + else + Result := PopupColor; + end + else if (AViewType and VT_DOCKPANEL) = VT_DOCKPANEL then + Result := DockPanelColor; +end; + +function TTBXWhidbeyTheme.GetBtnColor(const ItemInfo: TTBXItemInfo; ItemPart: + TItemPart): TColor; +const + BFlags1: array[Boolean] of TBtnItemState = (bisDisabled, bisDisabledHot); + BFlags2: array[Boolean] of TBtnItemState = (bisSelected, bisSelectedHot); + BFlags3: array[Boolean] of TBtnItemState = (bisNormal, bisHot); +var + B: TBtnItemState; + Embedded: Boolean; +begin + with ItemInfo do + begin + Embedded := (ViewType and VT_TOOLBAR = VT_TOOLBAR) and + (ViewType and TVT_EMBEDDED = TVT_EMBEDDED); + if not Enabled then + B := BFlags1[HoverKind = hkKeyboardHover] + else if ItemInfo.IsPopupParent then + B := bisPopupParent + else if Pushed then + B := bisPressed + else if Selected then + B := BFlags2[HoverKind <> hkNone] + else + B := BFlags3[HoverKind <> hkNone]; + Result := BtnItemColors[B, ItemPart]; + if Embedded then + begin + if (ItemPart = ipBody) and (Result = clNone) then + Result := ToolbarColor; + if ItemPart = ipFrame then + begin + if Selected then + Result := clWindowFrame + else if (Result = clNone) then + Result := clBtnShadow; + end; + end; + end; +end; + +function TTBXWhidbeyTheme.GetPartColor(const ItemInfo: TTBXItemInfo; + ItemPart: TItemPart): TColor; +const + MFlags1: array[Boolean] of TMenuItemState = (misDisabled, misDisabledHot); + MFlags2: array[Boolean] of TMenuItemState = (misNormal, misHot); + BFlags1: array[Boolean] of TBtnItemState = (bisDisabled, bisDisabledHot); + BFlags2: array[Boolean] of TBtnItemState = (bisSelected, bisSelectedHot); + BFlags3: array[Boolean] of TBtnItemState = (bisNormal, bisHot); +var + IsMenuItem, Embedded: Boolean; + M: TMenuItemState; + B: TBtnItemState; +begin + with ItemInfo do + begin + IsMenuItem := ((ViewType and PVT_POPUPMENU) = PVT_POPUPMENU) and + ((ItemOptions and IO_TOOLBARSTYLE) = 0); + Embedded := ((ViewType and VT_TOOLBAR) = VT_TOOLBAR) and + ((ViewType and TVT_EMBEDDED) = TVT_EMBEDDED); + if IsMenuItem then + begin + if not Enabled then + M := MFlags1[HoverKind = hkKeyboardHover] + else + M := MFlags2[HoverKind <> hkNone]; + Result := MenuItemColors[M, ItemPart]; + end + else + begin + if not Enabled then + B := BFlags1[HoverKind = hkKeyboardHover] + else if ItemInfo.IsPopupParent then + B := bisPopupParent + else if Pushed then + B := bisPressed + else if Selected then + B := BFlags2[HoverKind <> hkNone] + else + B := BFlags3[HoverKind <> hkNone]; + Result := BtnItemColors[B, ItemPart]; + if Embedded and (Result = clNone) then + begin + if ItemPart = ipBody then + Result := ToolbarColor; + if ItemPart = ipFrame then + Result := clBtnShadow; + end; + end; + end; +end; + +{ +procedure GradientFill(const Canvas: TCanvas; const ARect: TRect; + const StartColor, EndColor: TColor; + const Direction: TGradDir); +var + rc1, rc2, gc1, gc2, + bc1, bc2, Counter, GSize: Integer; + Brush: HBrush; +begin + rc1 := GetRValue(ColorToRGB(StartColor)); + gc1 := GetGValue(ColorToRGB(StartColor)); + bc1 := GetBValue(ColorToRGB(StartColor)); + rc2 := GetRValue(ColorToRGB(EndColor)); + gc2 := GetGValue(ColorToRGB(EndColor)); + bc2 := GetBValue(ColorToRGB(EndColor)); + + if Direction = tGTopBottom then + begin + GSize := (ARect.Bottom - ARect.Top) - 1; + if GSize = 0 then + GSize := 1; + for Counter := 0 to GSize do + begin + Brush := CreateSolidBrush( + RGB(Byte(rc1 + (((rc2 - rc1) * (Counter)) div GSize)), + Byte(gc1 + (((gc2 - gc1) * (Counter)) div GSize)), + Byte(bc1 + (((bc2 - bc1) * (Counter)) div GSize)))); + Windows.FillRect(Canvas.Handle, Rect(ARect.Left, ARect.Bottom - Counter - + 1, ARect.Right, ARect.Bottom - Counter), Brush); + DeleteObject(Brush); + end; + end + else + begin + GSize := (ARect.Right - ARect.Left) - 1; + if GSize = 0 then + GSize := 1; + for Counter := 0 to GSize do + begin + Brush := CreateSolidBrush( + RGB(Byte(rc1 + (((rc2 - rc1) * (Counter)) div GSize)), + Byte(gc1 + (((gc2 - gc1) * (Counter)) div GSize)), + Byte(bc1 + (((bc2 - bc1) * (Counter)) div GSize)))); + Windows.FillRect(Canvas.Handle, Rect(ARect.Right - Counter - 1, ARect.Top, + ARect.Right - Counter, ARect.Bottom), Brush); + DeleteObject(Brush); + end; + end; +end; +} + +procedure DrawButtonBitmap(Canvas: TCanvas; R: TRect; Color: TColor); +const +{$IFNDEF SMALL_CLOSE_BUTTON} + Pattern: array[0..15] of Byte = + ($C3, 0, $66, 0, $3C, 0, $18, 0, $3C, 0, $66, 0, $C3, 0, 0, 0); +{$ELSE} + Pattern: array[0..15] of Byte = + (0, 0, $63, 0, $36, 0, $1C, 0, $1C, 0, $36, 0, $63, 0, 0, 0); +{$ENDIF} +var + Bmp: TBitmap; + W, H: Integer; + Index: Integer; +begin + Bmp := TBitmap.Create; + try + Bmp.Handle := CreateBitmap(8, 8, 1, 1, @Pattern); + Index := SaveDC(Canvas.Handle); + Canvas.Brush.Color := Color; + SetTextColor(Canvas.Handle, clBlack); + SetBkColor(Canvas.Handle, clWhite); + W := 8; + H := 7; + with R do + begin + BitBlt(Canvas.Handle, (Left + Right - W + 1) div 2, (Top + Bottom - H) div + 2, W, H, + Bmp.Canvas.Handle, 0, 0, ROP_DSPDxax); + end; + RestoreDC(Canvas.Handle, Index); + finally + Bmp.Free; + end; +end; + +function TTBXWhidbeyTheme.GetItemColor(const ItemInfo: TTBXItemInfo): TColor; +begin + Result := GetPartColor(ItemInfo, ipBody); + if Result = clNone then + Result := GetViewColor(ItemInfo.ViewType); +end; + +function TTBXWhidbeyTheme.GetItemTextColor(const ItemInfo: TTBXItemInfo): + TColor; +begin + Result := GetPartColor(ItemInfo, ipText); +end; + +function TTBXWhidbeyTheme.GetItemImageBackground(const ItemInfo: + TTBXItemInfo): TColor; +begin + Result := GetBtnColor(ItemInfo, ipBody); + if Result = clNone then + result := GetViewColor(ItemInfo.ViewType); +end; + +procedure TTBXWhidbeyTheme.GetViewBorder(ViewType: Integer; out Border: + TPoint); +const + XMetrics: array[Boolean] of Integer = (SM_CXDLGFRAME, SM_CXFRAME); + YMetrics: array[Boolean] of Integer = (SM_CYDLGFRAME, SM_CYFRAME); +var + Resizable: Boolean; + + procedure SetBorder(X, Y: Integer); + begin + Border.X := X; + Border.Y := Y; + end; + +begin + if (ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + if (ViewType and TVT_FLOATING) = TVT_FLOATING then + begin + Resizable := (ViewType and TVT_RESIZABLE) = TVT_RESIZABLE; + Border.X := GetSystemMetrics(XMetrics[Resizable]) - 1; + Border.Y := GetSystemMetrics(YMetrics[Resizable]) - 1; + end + else + SetBorder(2, 2); + end + else if (ViewType and VT_POPUP) = VT_POPUP then + begin + if (ViewType and PVT_POPUPMENU) = PVT_POPUPMENU then + Border.X := 1 + else + Border.X := 2; + Border.Y := 2; + end + else if (ViewType and VT_DOCKPANEL) = VT_DOCKPANEL then + begin + if (ViewType and DPVT_FLOATING) = DPVT_FLOATING then + begin + Resizable := (ViewType and DPVT_RESIZABLE) = DPVT_RESIZABLE; + Border.X := GetSystemMetrics(XMetrics[Resizable]) - 1; + Border.Y := GetSystemMetrics(YMetrics[Resizable]) - 1; + end + else + SetBorder(2, 2); + end + else + SetBorder(0, 0); +end; + +procedure TTBXWhidbeyTheme.GetMargins(MarginID: Integer; out Margins: + TTBXMargins); +begin + with Margins do + case MarginID of + MID_TOOLBARITEM: + begin + LeftWidth := 2; + RightWidth := 2; + TopHeight := 2; + BottomHeight := 2; + end; + MID_STATUSPANE: + begin + LeftWidth := 3; + RightWidth := 3; + TopHeight := 1; + BottomHeight := 1; + end; + MID_MENUITEM: + begin + LeftWidth := 1; + RightWidth := 1; + TopHeight := 3; + BottomHeight := 3; + end; + else + LeftWidth := 0; + RightWidth := 0; + TopHeight := 0; + BottomHeight := 0; + end; +end; + +procedure TTBXWhidbeyTheme.PaintBackgnd(Canvas: TCanvas; const ADockRect, + ARect, AClipRect: TRect; + AColor: TColor; Transparent: Boolean; AViewType: Integer); +var + Brush: HBrush; + R: TRect; + IsHoriz: boolean; +begin + if not Transparent then + begin + if ((AViewType and TVT_NORMALTOOLBAR) = TVT_NORMALTOOLBAR) + and (not (AViewType and TVT_EMBEDDED = TVT_EMBEDDED)) + or ((AViewType and TVT_TOOLWINDOW) = TVT_TOOLWINDOW) then + begin + IntersectRect(R, ARect, AClipRect); + if (ADockRect.Top = 0) and + (ADockRect.Left = 0) and + (ADockRect.Right = 0) and + (ADockRect.Bottom = 0) then + IsHoriz := (ARect.Right > ARect.Bottom) + else + IsHoriz := Abs(R.Right - R.Left) > Abs(R.Bottom - R.Top); + if IsHoriz then + begin + R.Top := R.Top - 1; + R.Bottom := R.Bottom + 1; + GradientFill(Canvas, R, gradCol1, gradCol2, TGTopBottom); + R.Bottom := R.Bottom - 1; + R.Top := R.Top + 1; + end + else + begin + R.Left := R.Left - 1; + R.Right := R.Right + 1; + GradientFill(Canvas, R, gradCol1, gradCol2, TGLeftRight); + R.Right := R.Right - 1; + R.Left := R.Left + 1; + end; + end + else + begin + Brush := CreateSolidBrush(ColorToRGB(AColor)); + IntersectRect(R, ARect, AClipRect); + //The rects are compared to determine if we're drawing a toolbar, not a popup menu... + if (ADockRect.Left <> ARect.Left) or (ADockRect.Top <> ARect.Top) + or (ADockRect.Right <> ARect.Right) or (ADockRect.Bottom <> ARect.Bottom) + then + GradientFill(Canvas, R, gradCol2, clBtnFace, TGLeftRight) + else + FillRect(Canvas.Handle, R, Brush); + DeleteObject(Brush); + end; + end; +end; + +procedure TTBXWhidbeyTheme.PaintCaption(Canvas: TCanvas; + const ARect: TRect; const ItemInfo: TTBXItemInfo; const ACaption: string; + AFormat: Cardinal; Rotated: Boolean); +var + R: TRect; +begin + with ItemInfo, Canvas do + begin + R := ARect; + Brush.Style := bsClear; + if Font.Color = clNone then Font.Color := GetPartColor(ItemInfo, ipText); + //Font.Color := GetPartColor(ItemInfo, ipText); + if not Rotated then + Windows.DrawText(Handle, PChar(ACaption), Length(ACaption), R, AFormat) + else + DrawRotatedText(Handle, ACaption, R, AFormat); + Brush.Style := bsSolid; + end; +end; + +procedure TTBXWhidbeyTheme.PaintCheckMark(Canvas: TCanvas; ARect: TRect; const + ItemInfo: TTBXItemInfo); +var + X, Y: Integer; +begin + X := (ARect.Left + ARect.Right) div 2 - 2; + Y := (ARect.Top + ARect.Bottom) div 2 + 1; + Canvas.Pen.Color := GetBtnColor(ItemInfo, ipText); + Canvas.Polyline([Point(X - 2, Y - 2), Point(X, Y), Point(X + 4, Y - 4), + Point(X + 4, Y - 3), Point(X, Y + 1), Point(X - 2, Y - 1), Point(X - 2, Y - + 2)]); +end; + +procedure TTBXWhidbeyTheme.PaintChevron(Canvas: TCanvas; ARect: TRect; const + ItemInfo: TTBXItemInfo); +const + Pattern: array[Boolean, 0..15] of Byte = ( + ($CC, 0, $66, 0, $33, 0, $66, 0, $CC, 0, 0, 0, 0, 0, 0, 0), + ($88, 0, $D8, 0, $70, 0, $20, 0, $88, 0, $D8, 0, $70, 0, $20, 0)); +var + R2: TRect; + Bmp: TBitmap; +begin + R2 := ARect; + PaintButton(Canvas, ARect, ItemInfo); + if not ItemInfo.IsVertical then + begin + R2.Top := 4; + R2.Bottom := R2.Top + 5; + Inc(R2.Left, 2); + R2.Right := R2.Left + 8; + end + else + begin + R2.Left := R2.Right - 9; + R2.Right := R2.Left + 5; + Inc(R2.Top, 2); + R2.Bottom := R2.Top + 8; + end; + Bmp := TBitmap.Create; + try + Bmp.Handle := CreateBitmap(8, 8, 1, 1, @Pattern[ItemInfo.IsVertical]); + Canvas.Brush.Color := GetPartColor(ItemInfo, ipText); + SetTextColor(Canvas.Handle, clBlack); + SetBkColor(Canvas.Handle, clWhite); + with R2 do + BitBlt(Canvas.Handle, Left, Top, Right - Left, + Bottom - Top, Bmp.Canvas.Handle, 0, 0, ROP_DSPDxax); + finally + Bmp.Free; + end; +end; + +procedure TTBXWhidbeyTheme.PaintEditButton(Canvas: TCanvas; const ARect: + TRect; + var ItemInfo: TTBXItemInfo; ButtonInfo: TTBXEditBtnInfo); + +var + BtnDisabled, BtnHot, BtnPressed, Embedded: Boolean; + R, BR: TRect; + X, Y: Integer; + SaveItemInfoPushed: Boolean; + + procedure PaintEnabled(R: TRect; Pressed: Boolean); + var + C: TColor; + begin + if BtnDisabled then + C := GetBtnColor(ItemInfo, ipFrame) + else if BtnHot or BtnPressed then + C := BtnItemColors[bisHot, ipFrame] + else + begin + if Embedded then + c := blend(gradCol1, gradCol2, 90) + else + begin + if (ItemInfo.ViewType and VT_TOOLBAR) <> VT_TOOLBAR then + c := blend(gradCol1, gradCol2, 90) + else + c := clWindow; + end; + end; + if Embedded then + begin + if not (BtnPressed or BtnHot) then + FillRectEx(Canvas.Handle, R, ToolBarColor); + FrameRectEx(Canvas.Handle, R, C, True); + end + else + FrameRectEx(Canvas.Handle, R, C, True); + end; + +begin + R := ARect; + Embedded := ((ItemInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR) and + ((ItemInfo.ViewType and TVT_EMBEDDED) = TVT_EMBEDDED); + Inc(R.Left); + with Canvas do + if ButtonInfo.ButtonType = EBT_DROPDOWN then + begin + BtnDisabled := (ButtonInfo.ButtonState and EBDS_DISABLED) <> 0; + BtnHot := (ButtonInfo.ButtonState and EBDS_HOT) <> 0; + BtnPressed := (ButtonInfo.ButtonState and EBDS_PRESSED) <> 0; + if not BtnDisabled then + begin + if BtnPressed or BtnHot then + begin + InflateRect(R, 1, 1); + PaintButton(Canvas, R, ItemInfo); + PaintEnabled(R, BtnPressed); + end + else + PaintEnabled(R, BtnPressed); + end; + PaintDropDownArrow(Canvas, R, ItemInfo); + end + else if ButtonInfo.ButtonType = EBT_SPIN then + begin + BtnDisabled := (ButtonInfo.ButtonState and EBSS_DISABLED) <> 0; + BtnHot := (ButtonInfo.ButtonState and EBSS_HOT) <> 0; + BtnPressed := (ButtonInfo.ButtonState and EBSS_UP) <> 0; + + // Upper button + BR := R; + BR.Bottom := (R.Top + R.Bottom + 1) div 2; + SaveItemInfoPushed := ItemInfo.Pushed; + ItemInfo.Pushed := BtnPressed; + if not BtnDisabled then + begin + if BtnPressed or BtnHot then + begin + InflateRect(BR, 1, 1); + PaintButton(Canvas, BR, ItemInfo); + PaintEnabled(BR, BtnPressed); + end + else + PaintEnabled(BR, BtnPressed); + end; + X := (BR.Left + BR.Right) div 2; + Y := (BR.Top + BR.Bottom - 1) div 2; + if (not BtnPressed) then + Pen.Color := GetPartColor(ItemInfo, ipText) + else + Pen.Color := GetPartColor(ItemInfo, ipText); + Brush.Color := Pen.Color; + Polygon([Point(X - 2, Y + 1), Point(X + 2, Y + 1), Point(X, Y - 1)]); + + // Lower button + BR := R; + BR.Top := (R.Top + R.Bottom) div 2; + BtnPressed := (ButtonInfo.ButtonState and EBSS_DOWN) <> 0; + ItemInfo.Pushed := BtnPressed; + if not BtnDisabled then + begin + if BtnPressed or BtnHot then + begin + InflateRect(BR, 1, 1); + BR.Top := BR.Top + 1; + PaintButton(Canvas, BR, ItemInfo); + PaintEnabled(BR, BtnPressed); + end + else + begin + PaintEnabled(BR, BtnPressed); + end; + end; + X := (BR.Left + BR.Right) div 2; + Y := (BR.Top + BR.Bottom) div 2; + if (not BtnPressed) then + Pen.Color := GetPartColor(ItemInfo, ipText) + else + Pen.Color := GetPartColor(ItemInfo, ipText); + Brush.Color := Pen.Color; + Polygon([Point(X - 2, Y - 1), Point(X + 2, Y - 1), Point(X, Y + 1)]); + ItemInfo.Pushed := SaveItemInfoPushed; + end; +end; + +procedure TTBXWhidbeyTheme.PaintEditFrame(Canvas: TCanvas; + const ARect: TRect; var ItemInfo: TTBXItemInfo; const EditInfo: TTBXEditInfo); +var + R: TRect; + W: Integer; + Embedded: Boolean; +begin + R := ARect; + if ItemInfo.HoverKind <> hkNone then + FrameRectEx(Canvas.Handle, R, BtnItemColors[bisHot, ipFrame], true); + W := EditFrameWidth; + InflateRect(R, -W, -W); + Embedded := ((ItemInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR) and + ((ItemInfo.ViewType and TVT_EMBEDDED) = TVT_EMBEDDED); + if not (ItemInfo.Enabled or Embedded) then + FrameRectEx(Canvas.Handle, R, BtnItemColors[bisDisabled, ipText], true); + + with EditInfo do + if RightBtnWidth > 0 then + Dec(R.Right, RightBtnWidth - 2); + + if ItemInfo.Enabled then + begin + if ItemInfo.HoverKind = hkNone then + if Embedded then + FrameRectEx(Canvas.Handle, R, blend(gradCol1, gradCol2, 90), True) + else + FrameRectEx(Canvas.Handle, R, clWindow, True) + else + begin + Canvas.Brush.Color := clWindow; + Canvas.FrameRect(R); + end; + end; + if ItemInfo.Enabled then + begin + Canvas.Brush.Color := clWindow; + Canvas.FillRect(R); + if ((ItemInfo.ViewType and VT_TOOLBAR) <> VT_TOOLBAR) and + (GetPartColor(ItemInfo, ipFrame) = clNone) then + begin + Canvas.Brush.Color := blend(gradCol1, gradCol2, 90); + R := ARect; + InflateRect(R, -1, -1); + Canvas.FrameRect(R); + end; + end; + + if EditInfo.RightBtnWidth > 0 then + begin + R := ARect; + InflateRect(R, -W, -W); + R.Left := R.Right - EditInfo.RightBtnWidth; + PaintEditButton(Canvas, R, ItemInfo, EditInfo.RightBtnInfo); + end; +end; + +procedure TTBXWhidbeyTheme.PaintDropDownArrow(Canvas: TCanvas; + const ARect: TRect; const ItemInfo: TTBXItemInfo); +var + X, Y: Integer; +begin + with ARect, Canvas do + begin + X := (Left + Right) div 2; + Y := (Top + Bottom) div 2 - 1; + Pen.Color := GetPartColor(ItemInfo, ipText); + Brush.Color := Pen.Color; + if ItemInfo.IsVertical then + Polygon([Point(X, Y + 2), Point(X, Y - 2), Point(X - 2, Y)]) + else + Polygon([Point(X - 2, Y), Point(X + 2, Y), Point(X, Y + 2)]); + end; +end; + +procedure TTBXWhidbeyTheme.PaintButton(Canvas: TCanvas; const ARect: TRect; + const ItemInfo: TTBXItemInfo); +var + R: TRect; +begin + with ItemInfo, Canvas do + begin + R := ARect; + + if ((ItemOptions and IO_DESIGNING) <> 0) and not Selected then + begin + Brush.Color := clRed; + if ComboPart = cpSplitRight then + Dec(R.Left); + FrameRect(R); + end + else + begin + if ((ItemInfo.ViewType and TVT_EMBEDDED) <> 0) and (HoverKind = hkNone) + then + FrameRectEx(Canvas.Handle, R, GetBtnColor(ItemInfo, ipFrame), true) + else + FrameRectEx(Canvas.Handle, R, GetBtnColor(ItemInfo, ipFrame), true); + if (ComboPart = cpSplitLeft) and IsPopupParent then + Inc(R.Right); + if ComboPart = cpSplitRight then + Dec(R.Left); + + if (Selected) and ((ViewType and VT_TOOLBAR) = VT_TOOLBAR) then + begin + if (HoverKind <> hkNone) then + begin + if Pushed then + FillRectEx(Canvas.Handle, R, GetBtnColor(ItemInfo, ipBody)) + else +{$IFDEF ALT_VISUAL_STYLE} + FillRectEx(Canvas.Handle, R, Blend($0080E0FF, $002090E8, 50)); +{$ELSE} + FillRectEx(Canvas.Handle, R, GetBtnColor(ItemInfo, ipBody)); +{$ENDIF} + end + else +{$IFDEF ALT_VISUAL_STYLE} + GradientFill(Canvas, R, $0080E0FF, $002090E8, TGTopBottom); +{$ELSE} + FillRectEx(Canvas.Handle, R, GetBtnColor(ItemInfo, ipBody)); +{$ENDIF} + end + else + if ((ViewType and TVT_MENUBAR) = TVT_MENUBAR) and (HoverKind <> + hkNone) + then + begin + FillRectEx(Canvas.Handle, R, GetBtnColor(ItemInfo, ipBody)); + //GradientFill(Canvas, R, gradCol1, gradCol2, TGTopBottom); + end + else + FillRectEx(Canvas.Handle, R, GetBtnColor(ItemInfo, ipBody)); + end; + if ComboPart = cpSplitRight then + PaintDropDownArrow(Canvas, R, ItemInfo); + end; +end; + +procedure TTBXWhidbeyTheme.PaintFloatingBorder(Canvas: TCanvas; const ARect: + TRect; + const WindowInfo: TTBXWindowInfo); +const + WinStates: array[Boolean] of TWinFramestate = (wfsInactive, wfsActive); + + function GetBtnItemState(BtnState: Integer): TBtnItemState; + begin + if not WindowInfo.Active then + Result := bisDisabled + else if (BtnState and CDBS_PRESSED) <> 0 then + Result := bisPressed + else if (BtnState and CDBS_HOT) <> 0 then + Result := bisHot + else + Result := bisNormal; + end; + +var + WinState: TWinFrameState; + BtnItemState: TBtnItemState; + SaveIndex, X, Y: Integer; + Sz: TPoint; + R: TRect; + BodyColor, CaptionColor, CaptionText: TColor; + IsDockPanel: Boolean; + + procedure DrawGlyph(C: TColor); + var + Bmp: TBitmap; + DC: HDC; + begin + Bmp := TBitmap.Create; + try + Bmp.Monochrome := True; + StockImgList.GetBitmap(0, Bmp); + Canvas.Brush.Color := C; + DC := Canvas.Handle; + SetTextColor(DC, clBlack); + SetBkColor(DC, clWhite); + BitBlt(DC, X, Y, StockImgList.Width, StockImgList.Height, + Bmp.Canvas.Handle, 0, 0, ROP_DSPDxax); + finally + Bmp.Free; + end; + end; + +begin + with Canvas do + begin + WinState := WinStates[WindowInfo.Active]; + IsDockPanel := (WindowInfo.ViewType and VT_DOCKPANEL) = VT_DOCKPANEL; + BodyColor := Brush.Color; + + if (WRP_BORDER and WindowInfo.RedrawPart) <> 0 then + begin + R := ARect; + + if not IsDockPanel then + Brush.Color := WinFrameColors[WinState, wfpBorder] + else + Brush.Color := PnlFrameColors[WinState, wfpBorder]; + SaveIndex := SaveDC(Canvas.Handle); + Sz := WindowInfo.FloatingBorderSize; + with R, Sz do + ExcludeClipRect(Canvas.Handle, Left + X, Top + Y, Right - X, Bottom - + Y); + FillRect(R); + RestoreDC(Canvas.Handle, SaveIndex); + InflateRect(R, -Sz.X, -Sz.Y); + Pen.Color := BodyColor; + with R do + if not IsDockPanel then + Canvas.Polyline([ + Point(Left, Top - 1), Point(Right - 1, Top - 1), + Point(Right, Top), Point(Right, Bottom - 1), + Point(Right - 1, Bottom), + Point(Left, Bottom), Point(Left - 1, Bottom - 1), + Point(Left - 1, Top), Point(Left, Top - 1) + ]) + else + Canvas.Polyline([ + Point(Left, Top - 1), Point(Right - 1, Top - 1), + Point(Right, Top), Point(Right, Bottom), + Point(Left - 1, Bottom), + Point(Left - 1, Top), Point(Left, Top - 1) + ]); + end; + + if not WindowInfo.ShowCaption then + Exit; + + if (WindowInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + CaptionColor := WinFrameColors[WinState, wfpCaption]; + CaptionText := WinFrameColors[WinState, wfpCaptionText]; + end + else + begin + CaptionColor := PnlFrameColors[WinState, wfpCaption]; + CaptionText := PnlFrameColors[WinState, wfpCaptionText]; + end; + + { Caption } + if (WRP_CAPTION and WindowInfo.RedrawPart) <> 0 then + begin + R := Rect(0, 0, WindowInfo.ClientWidth, GetSystemMetrics(SM_CYSMCAPTION) - + 1); + with WindowInfo.FloatingBorderSize do + OffsetRect(R, X, Y); + DrawLineEx(Canvas.Handle, R.Left, R.Bottom, R.Right, R.Bottom, BodyColor); + + if ((CDBS_VISIBLE and WindowInfo.CloseButtonState) <> 0) and + ((WRP_CLOSEBTN and WindowInfo.RedrawPart) <> 0) then + Dec(R.Right, GetSystemMetrics(SM_CYSMCAPTION) - 1); + + Brush.Color := CaptionColor; + FillRect(R); + InflateRect(R, -2, 0); + Font.Assign(SmCaptionFont); + Font.Color := CaptionText; + DrawText(Canvas.Handle, WindowInfo.Caption, -1, R, + DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS or DT_HIDEPREFIX); + end; + + { Close button } + if (CDBS_VISIBLE and WindowInfo.CloseButtonState) <> 0 then + begin + R := Rect(0, 0, WindowInfo.ClientWidth, GetSystemMetrics(SM_CYSMCAPTION) - + 1); + with WindowInfo.FloatingBorderSize do + OffsetRect(R, X, Y); + R.Left := R.Right - (R.Bottom - R.Top); + DrawLineEx(Canvas.Handle, R.Left - 1, R.Bottom, R.Right, R.Bottom, + BodyColor); + Brush.Color := CaptionColor; + FillRect(R); + with R do + begin + X := (Left + Right - StockImgList.Width + 1) div 2; + Y := (Top + Bottom - StockImgList.Height) div 2; + end; + BtnItemState := GetBtnItemState(WindowInfo.CloseButtonState); + FrameRectEx(Canvas.Handle, R, BtnItemColors[BtnItemState, ipFrame], True); + if FillRectEx(Canvas.Handle, R, BtnItemColors[BtnItemState, ipBody]) then + DrawGlyph(BtnItemColors[BtnItemState, ipText]) + else + DrawGlyph(CaptionText); + end; + end; +end; + +procedure TTBXWhidbeyTheme.PaintFrame(Canvas: TCanvas; const ARect: TRect; + const ItemInfo: TTBXItemInfo); +var + R: TRect; +begin + R := ARect; + with ItemInfo do + if Enabled and (HoverKind <> hkNone) then + FillRectEx(Canvas.Handle, R, GetPartColor(ItemInfo, ipBody)); + FrameRectEx(Canvas.Handle, R, GetPartColor(ItemInfo, ipFrame), True); +end; + +function TTBXWhidbeyTheme.GetImageOffset(Canvas: TCanvas; + const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList): TPoint; +begin + Result.X := 0; + if not (ImageList is TTBCustomImageList) then + with ItemInfo do + if Enabled and (HoverKind <> hkNone) and + not (Selected or Pushed and not IsPopupParent) then + Result.X := -1; + Result.Y := Result.X +end; + +procedure TTBXWhidbeyTheme.PaintImage(Canvas: TCanvas; ARect: TRect; + const ItemInfo: TTBXItemInfo; ImageList: TCustomImageList; ImageIndex: + Integer); +var + HiContrast: Boolean; +begin + with ItemInfo do + begin + if ImageList is TTBCustomImageList then + begin + TTBCustomImageList(ImageList).DrawState(Canvas, ARect.Left, ARect.Top, + ImageIndex, Enabled, (HoverKind <> hkNone), Selected); + Exit; + end; + + HiContrast := ColorIntensity(GetItemImageBackground(ItemInfo)) < 80; + if not Enabled then + begin + if not HiContrast then + DrawTBXIconShadow(Canvas, ARect, ImageList, ImageIndex, 0) + else + DrawTBXIconFlatShadow(Canvas, ARect, ImageList, ImageIndex, + clBtnShadow); + end + else if Selected or Pushed or (HoverKind <> hkNone) then + begin + if not (Selected or Pushed and not IsPopupParent) then + begin + end; + DrawTBXIcon(Canvas, ARect, ImageList, ImageIndex, HiContrast); + end + else if HiContrast or TBXHiContrast or TBXLoColor then + DrawTBXIcon(Canvas, ARect, ImageList, ImageIndex, HiContrast) + else + HighlightTBXIcon(Canvas, ARect, ImageList, ImageIndex, clWindow, 255); + end; +end; + +procedure TTBXWhidbeyTheme.PaintMDIButton(Canvas: TCanvas; ARect: TRect; + const ItemInfo: TTBXItemInfo; ButtonKind: Cardinal); +var + Index: Integer; + X, Y: Integer; + Bmp: TBitmap; +begin + PaintButton(Canvas, ARect, ItemInfo); + with ARect do + begin + X := (Left + Right - StockImgList.Width) div 2; + Y := (Top + Bottom - StockImgList.Height) div 2; + end; + case ButtonKind of + DFCS_CAPTIONMIN: Index := 2; + DFCS_CAPTIONRESTORE: Index := 3; + DFCS_CAPTIONCLOSE: Index := 0; + else + Exit; + end; + Bmp := TBitmap.Create; + Bmp.Monochrome := True; + StockImgList.GetBitmap(Index, Bmp); + Canvas.Brush.Color := GetPartColor(ItemInfo, ipText); + SetTextColor(Canvas.Handle, clBlack); + SetBkColor(Canvas.Handle, clWhite); + BitBlt(Canvas.Handle, X, Y, StockImgList.Width, StockImgList.Height, + Bmp.Canvas.Handle, 0, 0, ROP_DSPDxax); + Bmp.Free; +end; + +procedure TTBXWhidbeyTheme.PaintMenuItemFrame(Canvas: TCanvas; + const ARect: TRect; const ItemInfo: TTBXItemInfo); +var + R: TRect; +begin + R := ARect; + if ((ItemInfo.ViewType and PVT_TOOLBOX) <> PVT_TOOLBOX) then + begin + R.Right := R.Left + ItemInfo.PopupMargin + 2; + GradientFill(Canvas, R, gradCol1, gradCol2, TGLeftRight); + Inc(R.Left); + R.Right := ARect.Right - 1; + end; + PaintFrame(Canvas, R, ItemInfo); +end; + +procedure TTBXWhidbeyTheme.PaintMenuItem(Canvas: TCanvas; const ARect: TRect; + var ItemInfo: TTBXItemInfo); +var + R, R2: TRect; + X, Y, I: Integer; + ArrowWidth: Integer; + ClrText: TColor; + + procedure DrawArrow(AColor: TColor); + begin + Canvas.Pen.Color := AColor; + Canvas.Brush.Color := AColor; + Canvas.Polygon([Point(X, Y - 3), Point(X, Y + 3), Point(X + 3, Y)]); + end; + +begin + with Canvas, ItemInfo do + begin + ArrowWidth := GetSystemMetrics(SM_CXMENUCHECK); + ClrText := GetPartColor(ItemInfo, ipText); + + R := ARect; + PaintMenuItemFrame(Canvas, R, ItemInfo); + if (ItemOptions and IO_COMBO) <> 0 then + begin + X := R.Right - ArrowWidth - 1; + if not ItemInfo.Enabled then + Pen.Color := ClrText + else if HoverKind = hkMouseHover then + Pen.Color := GetPartColor(ItemInfo, ipFrame) + else + Pen.Color := PopupSeparatorColor; + MoveTo(X, R.Top + 1); + LineTo(X, R.Bottom - 1); + end; + + if (ItemOptions and IO_SUBMENUITEM) <> 0 then + begin + Y := ARect.Bottom div 2; + X := ARect.Right - ArrowWidth * 2 div 3 - 1; + DrawArrow(ClrText); + end; + + if Selected and Enabled then + begin + R2 := ARect; + if HoverKind = hkNone then + begin + InflateRect(R2, -1, -1); + i := 2; + R := R2; + R.Left := R2.Left + 1; + R.Right := R.Left + ItemInfo.PopupMargin - i; + FrameRectEx(Canvas.Handle, R, GetBtnColor(ItemInfo, ipFrame), True); +{$IFDEF ALT_VISUAL_STYLE} + GradientFill(Canvas, R, $0080E0FF, $002090E8, TGTopBottom) +{$ELSE} + FillRectEx(Canvas.Handle, R, GetBtnColor(ItemInfo, ipBody)) +{$ENDIF} + end + else + begin +{$IFDEF ALT_VISUAL_STYLE} + i := 0; +{$ELSE} + InflateRect(R2, -1, -1); + i := 2; +{$ENDIF} + R := R2; + R.Left := R2.Left + 1; + R.Right := R.Left + ItemInfo.PopupMargin - i; + FrameRectEx(Canvas.Handle, R, GetBtnColor(ItemInfo, ipFrame), True); +{$IFDEF ALT_VISUAL_STYLE} + FillRectEx(Canvas.Handle, R, Blend($0080E0FF, $002090E8, 50)); +{$ELSE} + FillRectEx(Canvas.Handle, R, GetBtnColor(ItemInfo, ipBody)); +{$ENDIF} + end; + end; + end; +end; + +procedure TTBXWhidbeyTheme.PaintPopupNCArea(Canvas: TCanvas; R: TRect; const + PopupInfo: TTBXPopupInfo); +var + PR: TRect; +begin + with Canvas do + begin + Brush.Color := PopupFrameColor; + FrameRect(R); + InflateRect(R, -1, -1); + Brush.Color := PopupColor; + FillRect(R); + + if not IsRectEmpty(PopupInfo.ParentRect) then + begin + PR := PopupInfo.ParentRect; + if not IsRectEmpty(PR) then + with PR do + begin + Pen.Color := PopupColor;//ToolbarColor; + if Bottom = R.Top then + begin + if Left <= R.Left then + Left := R.Left - 1; + if Right >= R.Right then + Right := R.Right + 1; + MoveTo(Left + 1, Bottom - 1); + LineTo(Right - 1, Bottom - 1); + end + else if Top = R.Bottom then + begin + if Left <= R.Left then + Left := R.Left - 1; + if Right >= R.Right then + Right := R.Right + 1; + MoveTo(Left + 1, Top); + LineTo(Right - 1, Top); + end; + if Right = R.Left then + begin + if Top <= R.Top then + Top := R.Top - 1; + if Bottom >= R.Bottom then + Bottom := R.Bottom + 1; + MoveTo(Right - 1, Top + 1); + LineTo(Right - 1, Bottom - 1); + end + else if Left = R.Right then + begin + if Top <= R.Top then + Top := R.Top - 1; + if Bottom >= R.Bottom then + Bottom := R.Bottom + 1; + MoveTo(Left, Top + 1); + LineTo(Left, Bottom - 1); + end; + end; + end; + end; +end; + +procedure TTBXWhidbeyTheme.PaintSeparator(Canvas: TCanvas; ARect: TRect; + ItemInfo: TTBXItemInfo; Horizontal, LineSeparator: Boolean); +var + IsToolbox: Boolean; + R: TRect; +begin + with ItemInfo, ARect, Canvas do + begin + if Horizontal then + begin + IsToolbox := (ViewType and PVT_TOOLBOX) = PVT_TOOLBOX; + if ((ItemOptions and IO_TOOLBARSTYLE) = 0) and not IsToolBox then + begin + R := ARect; + R.Right := ItemInfo.PopupMargin + 2; + GradientFill(Canvas, R, gradCol1, gradCol2, TGLeftRight); + Inc(Left, ItemInfo.PopupMargin + 9); + Pen.Color := PopupSeparatorColor; + end + else + Pen.Color := ToolbarSeparatorColor; + + if not enabled then + exit; + + if (ItemInfo.ViewType and VT_TOOLBAR) = VT_TOOLBAR then + begin + Top := Bottom div 2; + Left := Left + 4; + Right := Right - 2; + Bottom := Top + 1; + DrawLineEx(Canvas.Handle, Left, Top, Right, Top, clBtnHighLight); + Top := Top - 1; + Left := Left - 1; + Right := Right - 1; + DrawLineEx(Canvas.Handle, Left, Top, Right, Top, + ToolbarSeparatorColor); + end + else + begin + Top := Bottom div 2; + Left := Left + 1; + Right := Right - 1; + Bottom := Top + 1; + DrawLineEx(Canvas.Handle, Left, Top, Right, Top, PopupSeparatorColor); + end; + end + else + if enabled then + begin + Top := Top + 4; + Bottom := Bottom - 2; + Left := Right div 2; + DrawLineEx(Canvas.Handle, Left, Top, Left, Bottom, clBtnHighLight); + Top := Top - 1; + Left := Left - 1; + Bottom := Bottom - 1; + DrawLineEx(Canvas.Handle, Left, Top, Left, Bottom, + ToolbarSeparatorColor); + end; + end; +end; + +procedure TTBXWhidbeyTheme.PaintToolbarNCArea(Canvas: TCanvas; R: TRect; + const ToolbarInfo: TTBXToolbarInfo); +const + DragHandleOffsets: array[Boolean, DHS_DOUBLE..DHS_SINGLE] of Integer = ((2, 0, + 1), (5, 0, 5)); + + function GetBtnItemState(BtnState: Integer): TBtnItemState; + begin + if (BtnState and CDBS_PRESSED) <> 0 then + Result := bisPressed + else if (BtnState and CDBS_HOT) <> 0 then + Result := bisHot + else + Result := bisNormal; + end; + +var + Sz: Integer; + R2: TRect; + C: TColor; + Hi1, Lo1, Hi2, Lo2, Hi3, Lo3, Hi4: TColor; + I: Integer; + BtnVisible, Horz: Boolean; + BtnItemState: TBtnItemState; +begin + with Canvas do + begin + if ((ToolbarInfo.ViewType and TVT_NORMALTOOLBAR) = TVT_NORMALTOOLBAR) + or (ToolbarInfo.ViewType = VT_TOOLBAR) + or ((ToolbarInfo.ViewType and TVT_TOOLWINDOW) = TVT_TOOLWINDOW) then + begin + with R do + begin + if (Toolbarinfo.IsVertical) then + begin + GradientFill(Canvas, R, gradCol1, gradCol2, TGLeftRight); + R2 := R; + R2.Top := R2.Bottom - 1; + + if ToolbarInfo.BorderStyle <> bsSingle then exit; + + GradientFill(Canvas, R2, gradCol1, gradCol2, TGLeftRight); + + Pen.Color := gradBL; + MoveTo(Right - 1, Top + 1); + LineTo(Right - 1, Bottom - 1); + + MoveTo(Left + 1, Bottom - 1); + LineTo(Right - 1, Bottom - 1); + + Pen.Color := gradCol1; + MoveTo(Left, Top); + LineTo(Left, Top + 1); + + MoveTo(Left, Bottom - 2); + LineTo(Left, Bottom); + end + else + begin + GradientFill(Canvas, R, gradCol1, gradCol2, TGTopBottom); + R2 := R; + R2.Top:= R.Top + 1; + R2.Left := R2.Right - 1; + + if ToolbarInfo.BorderStyle <> bsSingle then exit; + + GradientFill(Canvas, R2, GradBL, Blend(gradCol1, gradCol2, 50), TGTopBottom); + + + Pen.Color := gradBL; + MoveTo(Left + 1, Bottom - 1); + LineTo(Right - 1, Bottom - 1); + + Pixels[Left, Top]:= Blend(gradCol1, gradCol2, 60); + Pixels[Left, Bottom - 1]:= gradCol1; + Pixels[Left, Bottom - 2]:= Blend(gradCol1, gradBL, 50); + + Pixels[Right - 2, Top]:= Blend(gradCol1, gradCol2, 25); + Pixels[Right - 1, Bottom - 1]:= gradCol1; + Pixels[Right - 2, Bottom - 2]:= Blend(gradCol1, gradBL, 50); + end; + end; + InflateRect(R, -2, -2); + end + else + begin + GradientFill(Canvas, R, gradCol2, clBtnFace, TGLeftRight); + InflateRect(R, -2, -2); + end; + + if not ToolbarInfo.AllowDrag then + Exit; + + BtnVisible := (ToolbarInfo.CloseButtonState and CDBS_VISIBLE) <> 0; + Sz := GetTBXDragHandleSize(ToolbarInfo); + Horz := not ToolbarInfo.IsVertical; + if Horz then + R.Right := R.Left + Sz + else + R.Bottom := R.Top + Sz; + + // Drag Handle + c := gradHandle1; + Brush.Color := c; + Hi1 := GetNearestColor(Handle, MixColors(c, gradHandle2, 64)); + Lo1 := GetNearestColor(Handle, MixColors(c, gradHandle2, 48)); + Hi2 := GetNearestColor(Handle, MixColors(c, gradHandle2, 32)); + Lo2 := GetNearestColor(Handle, MixColors(c, gradHandle2, 16)); + Hi3 := GetNearestColor(Handle, MixColors(c, gradHandle3, 128)); + Lo3 := GetNearestColor(Handle, MixColors(c, gradHandle3, 96)); + Hi4 := GetNearestColor(Handle, MixColors(c, gradHandle3, 72)); + + if ToolbarInfo.DragHandleStyle <> DHS_NONE then + begin + R2 := R; + if ToolbarInfo.DragHandleStyle = DHS_DOUBLE then + if Horz then + OffsetRect(R2, -2, 0) + else + OffsetRect(R2, 0, -2); + if Horz then + begin + Inc(R2.Top, 4); + Dec(R2.Bottom, 2); + Inc(R2.Left, 1); + if BtnVisible then + begin + Inc(R2.Top, Sz - 2); + Inc(R2.Left, 4); + Dec(R2.Right, 4); + end; + i := R2.Top; + while (i < R2.Bottom - 3) do + begin + Pixels[R2.Left, i] := Hi1; + Pixels[R2.Left, i + 1] := Hi2; + Pixels[R2.Left + 1, i] := Lo1; + Pixels[R2.Left + 1, i + 1] := Lo2; + Pixels[R2.Left + 1, i + 2] := Hi4; + Pixels[R2.Left + 2, i + 2] := Hi3; + Pixels[R2.Left + 2, i + 1] := Lo3; + if ToolbarInfo.DragHandleStyle = DHS_DOUBLE then + begin + Pixels[R2.Left + 4, i] := Hi1; + Pixels[R2.Left + 4, i + 1] := Hi2; + Pixels[R2.Left + 4 + 1, i] := Lo1; + Pixels[R2.Left + 4 + 1, i + 1] := Lo2; + Pixels[R2.Left + 4 + 1, i + 2] := Hi4; + Pixels[R2.Left + 4 + 2, i + 2] := Hi3; + Pixels[R2.Left + 4 + 2, i + 1] := Lo3; + end; + Inc(i, 4); + end; + end + else + begin + Inc(R2.Left, 4); + Dec(R2.Right, 2); + Inc(R2.Top, 1); + if BtnVisible then + begin + Dec(R2.Right, Sz - 2); + Inc(R2.Top, 4); + Dec(R2.Bottom, 4); + end; + i := R2.Left; + while (i < R2.Right - 3) do + begin + Pixels[i, R2.Top] := Hi1; + Pixels[i, R2.Top + 1] := Hi2; + Pixels[i + 1, R2.Top] := Lo1; + Pixels[i + 1, R2.Top + 1] := Lo2; + Pixels[i + 1, R2.Top + 2] := Hi4; + Pixels[i + 2, R2.Top + 2] := Hi3; + Pixels[i + 2, R2.Top + 1] := Lo3; + if ToolbarInfo.DragHandleStyle = DHS_DOUBLE then + begin + Pixels[i, R2.Top + 4] := Hi1; + Pixels[i, R2.Top + 1 + 4] := Hi2; + Pixels[i + 1, R2.Top + 4] := Lo1; + Pixels[i + 1, R2.Top + 1 + 4] := Lo2; + Pixels[i + 1, R2.Top + 2 + 4] := Hi4; + Pixels[i + 2, R2.Top + 2 + 4] := Hi3; + Pixels[i + 2, R2.Top + 1 + 4] := Lo3; + end; + Inc(i, 4); + end; + end; + end; + + // Close button + if BtnVisible then + begin + R2 := R; + if Horz then + begin + Dec(R2.Right); + R2.Bottom := R2.Top + R2.Right - R2.Left; + end + else + begin + Dec(R2.Bottom); + R2.Left := R2.Right - R2.Bottom + R2.Top; + end; + + BtnItemState := GetBtnItemState(ToolbarInfo.CloseButtonState); + FrameRectEx(Canvas.Handle, R2, BtnItemColors[BtnItemState, ipFrame], + True); + FillRectEx(Canvas.Handle, R2, BtnItemColors[BtnItemState, ipBody]); + DrawButtonBitmap(Canvas, R2, BtnItemColors[BtnItemState, ipText]); + end; + end; +end; + +procedure TTBXWhidbeyTheme.PaintDockPanelNCArea(Canvas: TCanvas; R: TRect; + const DockPanelInfo: TTBXDockPanelInfo); + + function GetBtnItemState(BtnState: Integer): TBtnItemState; + begin + if (BtnState and CDBS_PRESSED) <> 0 then + Result := bisPressed + else if (BtnState and CDBS_HOT) <> 0 then + Result := bisHot + else + Result := bisNormal; + end; + +var + C: TColor; +{$IFDEF ALT_HEADER_STYLE} + Hi1, Lo1, Hi2, Lo2, Hi3, Lo3, Hi4: TColor; + i: integer; +{$ENDIF} + Sz, Flags: Integer; + R2: TRect; + BtnItemState: TBtnItemState; +begin + with Canvas, DockPanelInfo do + begin + C := Brush.Color; // Dock panel passes its body color in Canvas.Brush + R2 := R; + + FrameRectEx(Canvas.Handle, R, clBtnFace, True); + FrameRectEx(Canvas.Handle, R, C, True); + with R do + begin + Pixels[Left, Top] := clBtnFace; + if IsVertical then + Pixels[Right - 1, Top] := clBtnFace + else + Pixels[Left, Bottom - 1] := clBtnFace; + end; + + R := R2; + InflateRect(R, -BorderSize.X, -BorderSize.Y); + Sz := GetSystemMetrics(SM_CYSMCAPTION); +{$IFDEF ALT_HEADER_STYLE} + C := clBtnShadow; + if IsVertical then + begin + R.Bottom := R.Top + Sz - 1; + GradientFill(Canvas, R, gradCol1, gradCol2, TGTopBottom); + DrawLineEx(Canvas.Handle, R.Left, R.Bottom, R.Right, R.Bottom, C); + end + else + begin + R.Right := R.Left + Sz - 1; + GradientFill(Canvas, R, gradCol1, gradCol2, TGLeftRight); + DrawLineEx(Canvas.Handle, R.Right, R.Top, R.Right, R.Bottom, C); + end; +{$ELSE} + if IsVertical then + begin + R.Bottom := R.Top + Sz; + GradientFill(Canvas, R, gradCol2, clBtnFace, TGLeftRight); + end + else + begin + R.Right := R.Left + Sz; + GradientFill(Canvas, R, gradCol2, clBtnFace, TGTopBottom); + end; +{$ENDIF} + + if (CDBS_VISIBLE and CloseButtonState) <> 0 then + begin + R2 := R; + if IsVertical then + begin + R2.Left := R2.Right - Sz + 1; + R.Right := R2.Left; + end + else + begin + R2.Top := R2.Bottom - Sz + 1; + R.Bottom := R2.Top; + end; + BtnItemState := GetBtnItemState(CloseButtonState); + FrameRectEx(Canvas.Handle, R2, BtnItemColors[BtnItemState, ipFrame], + True); + FillRectEx(Canvas.Handle, R2, BtnItemColors[BtnItemState, ipBody]); + DrawButtonBitmap(Canvas, R2, BtnItemColors[BtnItemState, ipText]); + end; + +{$IFDEF ALT_HEADER_STYLE} + c := gradHandle1; + Hi1 := GetNearestColor(Handle, MixColors(c, gradHandle2, 64)); + Lo1 := GetNearestColor(Handle, MixColors(c, gradHandle2, 48)); + Hi2 := GetNearestColor(Handle, MixColors(c, gradHandle2, 32)); + Lo2 := GetNearestColor(Handle, MixColors(c, gradHandle2, 16)); + Hi3 := GetNearestColor(Handle, MixColors(c, gradHandle3, 128)); + Lo3 := GetNearestColor(Handle, MixColors(c, gradHandle3, 96)); + Hi4 := GetNearestColor(Handle, MixColors(c, gradHandle3, 72)); + R2 := R; + if IsVertical then + begin + Inc(R2.Top, 2); + Dec(R2.Bottom, 2); + Inc(R2.Left, 1); + i := R2.Top; + while (i < R2.Bottom - 1) do + begin + Pixels[R2.Left, i] := Hi1; + Pixels[R2.Left, i + 1] := Hi2; + Pixels[R2.Left + 1, i] := Lo1; + Pixels[R2.Left + 1, i + 1] := Lo2; + Pixels[R2.Left + 1, i + 2] := Hi4; + Pixels[R2.Left + 2, i + 2] := Hi3; + Pixels[R2.Left + 2, i + 1] := Lo3; + Inc(i, 4); + end; + end + else + begin + Inc(R2.Left, 2); + Dec(R2.Right, 2); + Inc(R2.Top, 1); + i := R2.Left; + while (i < R2.Right - 1) do + begin + Pixels[i, R2.Top] := Hi1; + Pixels[i, R2.Top + 1] := Hi2; + Pixels[i + 1, R2.Top] := Lo1; + Pixels[i + 1, R2.Top + 1] := Lo2; + Pixels[i + 1, R2.Top + 2] := Hi4; + Pixels[i + 2, R2.Top + 2] := Hi3; + Pixels[i + 2, R2.Top + 1] := Lo3; + Inc(i, 4); + end; + end; + if IsVertical then + InflateRect(R, -9, 0) + else + InflateRect(R, 0, -9); +{$ELSE} + if IsVertical then + InflateRect(R, -4, 0) + else + InflateRect(R, 0, -4); +{$ENDIF} + Font.Assign(SmCaptionFont); + Font.Color := clBtnText; + Brush.Style := bsClear; + Flags := DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS or DT_HIDEPREFIX; + if IsVertical then + DrawText(Canvas.Handle, Caption, -1, R, Flags) + else + DrawRotatedText(Canvas.Handle, string(Caption), R, Flags); + end; +end; + +procedure TTBXWhidbeyTheme.PaintDock(Canvas: TCanvas; const ClientRect, + DockRect: TRect; DockPosition: Integer); +begin + GradientFill(Canvas, DockRect, gradCol2, clBtnFace, TGLeftRight); +end; + +procedure TTBXWhidbeyTheme.SetupColorCache; +var + DC: HDC; + SwapC, HotBtnFace, DisabledText: TColor; + i1, i2: integer; + + procedure Undither(var C: TColor); + begin + if C <> clNone then + C := GetNearestColor(DC, ColorToRGB(C)); + end; + +begin + DC := StockCompatibleBitmap.Canvas.Handle; + + gradCol1 := clBtnFace; + gradCol2 := clWindow; + i1 := ColorIntensity(GradCol1); + i2 := ColorIntensity(GradCol2); + + if i1 > i2 then + begin + SwapC := gradCol1; + gradCol1 := gradCol2; + gradCol2 := SwapC; + end; + + if IsDarkColor(gradCol1) then + begin + if (i2 - i1) < 30 then + gradCol2 := Lighten(gradCol2, (i1 - i2)); + end + else if (i2 - i1) < 30 then + gradCol1 := Lighten(gradCol1, (i1 - i2)); + + gradHandle1 := gradCol1; + gradHandle2 := clBtnShadow; + gradHandle3 := clBtnHighlight; + gradBL := blend(clBtnShadow, gradCol1, 95); + + MenubarColor := Blend(gradCol1, gradCol2, 50); + ToolbarColor := Blend(gradCol1, gradCol2, 50); + PopupColor := Blend(clBtnFace, clWindow, 143); + DockPanelColor := PopupColor; + PopupFrameColor := Blend(clBtnText, clBtnShadow, 20); + SetContrast(PopupFrameColor, PopupColor, 100); + + HotBtnFace := Blend(clHighlight, clWindow, 20); + DisabledText := blend(clBtnText, gradCol2, 50); + + WinFrameColors[wfsActive, wfpBorder] := Blend(clBtnText, clBtnShadow, 15); + SetContrast(WinFrameColors[wfsActive, wfpBorder], ToolbarColor, 120); + WinFrameColors[wfsActive, wfpCaption] := clBtnShadow; + WinFrameColors[wfsActive, wfpCaptionText] := clBtnHighlight; + SetContrast(WinFrameColors[wfsActive, wfpCaptionText], clBtnShadow, 180); + WinFrameColors[wfsInactive, wfpBorder] := WinFrameColors[wfsActive, + wfpBorder]; + WinFrameColors[wfsInactive, wfpCaption] := clBtnFace; + WinFrameColors[wfsInactive, wfpCaptionText] := DisabledText; + SetContrast(WinFrameColors[wfsInactive, wfpCaptionText], clBtnFace, 120); + + PnlFrameColors[wfsActive, wfpBorder] := clBtnShadow; + PnlFrameColors[wfsActive, wfpCaption] := clBtnFace; + PnlFrameColors[wfsActive, wfpCaptionText] := clBtnText; + PnlFrameColors[wfsInactive, wfpBorder] := clBtnShadow; + PnlFrameColors[wfsInactive, wfpCaption] := clBtnFace; + PnlFrameColors[wfsInactive, wfpCaptionText] := DisabledText; + SetContrast(PnlFrameColors[wfsInactive, wfpCaptionText], clBtnFace, 120); + + BtnItemColors[bisNormal, ipBody] := clNone; + BtnItemColors[bisNormal, ipText] := clBtnText; + SetContrast(BtnItemColors[bisNormal, ipText], ToolbarColor, 180); + BtnItemColors[bisNormal, ipFrame] := clNone; + BtnItemColors[bisDisabled, ipBody] := clNone; + BtnItemColors[bisDisabled, ipText] := DisabledText; + + BtnItemColors[bisDisabled, ipFrame] := clNone; + BtnItemColors[bisSelected, ipBody] := Blend(clHighlight, Blend(clBtnFace, + clWindow, 50), 10); + SetContrast(BtnItemColors[bisSelected, ipBody], ToolbarColor, 5); + BtnItemColors[bisSelected, ipText] := BtnItemColors[bisNormal, ipText]; + BtnItemColors[bisSelected, ipFrame] := clHighlight; + BtnItemColors[bisPressed, ipBody] := Blend(clHighlight, clWindow, 50); + BtnItemColors[bisPressed, ipText] := clHighlightText; + BtnItemColors[bisPressed, ipFrame] := clHighlight; + SetContrast(BtnItemColors[bisPressed, ipFrame], ToolbarColor, 80); + BtnItemColors[bisHot, ipBody] := HotBtnFace; + BtnItemColors[bisHot, ipText] := clMenuText; + SetContrast(BtnItemColors[bisHot, ipText], BtnItemColors[bisHot, ipBody], + 180); + BtnItemColors[bisHot, ipFrame] := clHighlight; + SetContrast(BtnItemColors[bisHot, ipFrame], ToolbarColor, 100); + BtnItemColors[bisDisabledHot, ipBody] := HotBtnFace; + BtnItemColors[bisDisabledHot, ipText] := DisabledText; + BtnItemColors[bisDisabledHot, ipFrame] := clHighlight; + BtnItemColors[bisSelectedHot, ipBody] := Blend(clHighlight, clWindow, 40); + + SetContrast(BtnItemColors[bisSelectedHot, ipBody], ToolbarColor, 30); + BtnItemColors[bisSelectedHot, ipText] := clHighlightText; + SetContrast(BtnItemColors[bisSelectedHot, ipText], + BtnItemColors[bisSelectedHot, ipBody], 180); + BtnItemColors[bisSelectedHot, ipFrame] := clHighlight; + SetContrast(BtnItemColors[bisSelectedHot, ipFrame], + BtnItemColors[bisSelectedHot, ipBody], 100); + BtnItemColors[bisPopupParent, ipBody] := Blend(clBtnFace, clWindow, 183);//ToolbarColor; + BtnItemColors[bisPopupParent, ipText] := BtnItemColors[bisNormal, ipText]; + BtnItemColors[bisPopupParent, ipFrame] := PopupFrameColor; + + MenuItemColors[misNormal, ipBody] := clNone; + MenuItemColors[misNormal, ipText] := clWindowText; + SetContrast(MenuItemColors[misNormal, ipText], PopupColor, 180); + + MenuItemColors[misNormal, ipFrame] := clNone; + MenuItemColors[misDisabled, ipBody] := clNone; + MenuItemColors[misDisabled, ipText] := DisabledText; + MenuItemColors[misDisabled, ipFrame] := clNone; + + MenuItemColors[misHot, ipBody] := BtnItemColors[bisHot, ipBody]; + MenuItemColors[misHot, ipText] := BtnItemColors[bisHot, ipText]; + MenuItemColors[misHot, ipFrame] := BtnItemColors[bisHot, ipFrame]; + MenuItemColors[misDisabledHot, ipBody] := PopupColor; + MenuItemColors[misDisabledHot, ipText] := Blend(clGrayText, clWindow, 70); + MenuItemColors[misDisabledHot, ipFrame] := clHighlight; + + DragHandleColor := Blend(clBtnShadow, clWindow, 75); + SetContrast(DragHandleColor, ToolbarColor, 85); + IconShadowColor := Blend(clBlack, HotBtnFace, 25); + ToolbarSeparatorColor := Blend(clBtnShadow, clWindow, 70); + PopupSeparatorColor := ToolbarSeparatorColor; + SetContrast(PopupSeparatorColor, PopupColor, 50); + StatusPanelFrameColor := Blend(clWindow, clBtnFace, 30); + SetContrast(StatusPanelFrameColor, clBtnFace, 30); + + Undither(MenubarColor); + Undither(ToolbarColor); + Undither(PopupColor); + Undither(DockPanelColor); + Undither(PopupFrameColor); + Undither(WinFrameColors[wfsActive, wfpBorder]); + Undither(WinFrameColors[wfsActive, wfpCaption]); + Undither(WinFrameColors[wfsActive, wfpCaptionText]); + Undither(WinFrameColors[wfsInactive, wfpBorder]); + Undither(WinFrameColors[wfsInactive, wfpCaption]); + Undither(WinFrameColors[wfsInactive, wfpCaptionText]); + Undither(PnlFrameColors[wfsActive, wfpBorder]); + Undither(PnlFrameColors[wfsActive, wfpCaption]); + Undither(PnlFrameColors[wfsActive, wfpCaptionText]); + Undither(PnlFrameColors[wfsInactive, wfpBorder]); + Undither(PnlFrameColors[wfsInactive, wfpCaption]); + Undither(PnlFrameColors[wfsInactive, wfpCaptionText]); + Undither(BtnItemColors[bisNormal, ipBody]); + Undither(BtnItemColors[bisNormal, ipText]); + Undither(BtnItemColors[bisNormal, ipFrame]); + Undither(BtnItemColors[bisDisabled, ipBody]); + Undither(BtnItemColors[bisDisabled, ipText]); + Undither(BtnItemColors[bisDisabled, ipFrame]); + Undither(BtnItemColors[bisSelected, ipBody]); + Undither(BtnItemColors[bisSelected, ipText]); + Undither(BtnItemColors[bisSelected, ipFrame]); + Undither(BtnItemColors[bisPressed, ipBody]); + Undither(BtnItemColors[bisPressed, ipText]); + Undither(BtnItemColors[bisPressed, ipFrame]); + Undither(BtnItemColors[bisHot, ipBody]); + Undither(BtnItemColors[bisHot, ipText]); + Undither(BtnItemColors[bisHot, ipFrame]); + Undither(BtnItemColors[bisDisabledHot, ipBody]); + Undither(BtnItemColors[bisDisabledHot, ipText]); + Undither(BtnItemColors[bisDisabledHot, ipFrame]); + Undither(BtnItemColors[bisSelectedHot, ipBody]); + Undither(BtnItemColors[bisSelectedHot, ipText]); + Undither(BtnItemColors[bisSelectedHot, ipFrame]); + Undither(BtnItemColors[bisPopupParent, ipBody]); + Undither(BtnItemColors[bisPopupParent, ipText]); + Undither(BtnItemColors[bisPopupParent, ipFrame]); + Undither(MenuItemColors[misNormal, ipBody]); + Undither(MenuItemColors[misNormal, ipText]); + Undither(MenuItemColors[misNormal, ipFrame]); + Undither(MenuItemColors[misDisabled, ipBody]); + Undither(MenuItemColors[misDisabled, ipText]); + Undither(MenuItemColors[misDisabled, ipFrame]); + Undither(MenuItemColors[misHot, ipBody]); + Undither(MenuItemColors[misHot, ipText]); + Undither(MenuItemColors[misHot, ipFrame]); + Undither(MenuItemColors[misDisabledHot, ipBody]); + Undither(MenuItemColors[misDisabledHot, ipText]); + Undither(MenuItemColors[misDisabledHot, ipFrame]); + Undither(DragHandleColor); + Undither(IconShadowColor); + Undither(ToolbarSeparatorColor); + Undither(PopupSeparatorColor); + Undither(StatusPanelFrameColor); +end; + +function TTBXWhidbeyTheme.GetPopupShadowType: Integer; +begin + Result := PST_OFFICEXP; +end; + +constructor TTBXWhidbeyTheme.Create(const AName: string); +begin + inherited; + if CounterLock = 0 then + InitializeStock; + Inc(CounterLock); + AddTBXSysChangeNotification(Self); + SetupColorCache; +end; + +destructor TTBXWhidbeyTheme.Destroy; +begin + RemoveTBXSysChangeNotification(Self); + Dec(CounterLock); + if CounterLock = 0 then + FinalizeStock; + inherited; +end; + +procedure TTBXWhidbeyTheme.GetViewMargins(ViewType: Integer; + out Margins: TTBXMargins); +begin + Margins.LeftWidth := 0; + Margins.TopHeight := 0; + Margins.RightWidth := 0; + Margins.BottomHeight := 0; +end; + +procedure TTBXWhidbeyTheme.PaintPageScrollButton(Canvas: TCanvas; + const ARect: TRect; ButtonType: Integer; Hot: Boolean); +var + R: TRect; + X, Y, Sz: Integer; +begin + R := ARect; + if Hot then + Canvas.Brush.Color := BtnItemColors[bisHot, ipFrame] + else + Canvas.Brush.Color := clBtnShadow; + Canvas.FrameRect(R); + if Hot then + Canvas.Brush.Color := BtnItemColors[bisHot, ipBody] + else + Canvas.Brush.Color := clBtnFace; + InflateRect(R, -1, -1); + Canvas.FillRect(R); + X := (R.Left + R.Right) div 2; + Y := (R.Top + R.Bottom) div 2; + Sz := Min(X - R.Left, Y - R.Top) * 3 div 4; + if Hot then + Canvas.Pen.Color := BtnItemColors[bisHot, ipText] + else + Canvas.Pen.Color := BtnItemColors[bisNormal, ipText]; + Canvas.Brush.Color := Canvas.Pen.Color; + case ButtonType of + PSBT_UP: + begin + Inc(Y, Sz div 2); + Canvas.Polygon([Point(X + Sz, Y), Point(X, Y - Sz), Point(X - Sz, Y)]); + end; + PSBT_DOWN: + begin + Y := (R.Top + R.Bottom - 1) div 2; + Dec(Y, Sz div 2); + Canvas.Polygon([Point(X + Sz, Y), Point(X, Y + Sz), Point(X - Sz, Y)]); + end; + PSBT_LEFT: + begin + Inc(X, Sz div 2); + Canvas.Polygon([Point(X, Y + Sz), Point(X - Sz, Y), Point(X, Y - Sz)]); + end; + PSBT_RIGHT: + begin + X := (R.Left + R.Right - 1) div 2; + Dec(X, Sz div 2); + Canvas.Polygon([Point(X, Y + Sz), Point(X + Sz, Y), Point(X, Y - Sz)]); + end; + end; +end; + +procedure TTBXWhidbeyTheme.PaintFrameControl(Canvas: TCanvas; R: TRect; Kind, + State: Integer; Params: Pointer); +var + X, Y: Integer; + + procedure SetupPen; + begin + if Boolean(State and PFS_DISABLED) then + Canvas.Pen.Color := clBtnShadow + else if Boolean(State and PFS_PUSHED) then + Canvas.Pen.Color := BtnItemColors[bisPressed, ipFrame] + else if Boolean(State and PFS_HOT) then + Canvas.Pen.Color := BtnItemColors[bisHot, ipFrame] + else + Canvas.Pen.Color := clBtnShadow; + end; + + procedure SetupBrush; + begin + Canvas.Brush.Style := bsSolid; + if Boolean(State and PFS_DISABLED) then + Canvas.Brush.Style := bsClear + else if Boolean(State and PFS_PUSHED) then + Canvas.Brush.Color := BtnItemColors[bisPressed, ipBody] + else if Boolean(State and PFS_HOT) then + Canvas.Brush.Color := BtnItemColors[bisHot, ipBody] + else if Boolean(State and PFS_MIXED) then + Canvas.Brush.Bitmap := AllocPatternBitmap(clWindow, clBtnFace) + else + Canvas.Brush.Style := bsClear; + end; + + function TextColor: TColor; + begin + if Boolean(State and PFS_DISABLED) then + Result := BtnItemColors[bisDisabled, ipText] + else if Boolean(State and PFS_PUSHED) then + Result := BtnItemColors[bisPressed, ipText] + else if Boolean(State and PFS_MIXED) then + Result := clBtnShadow + else if Boolean(State and PFS_HOT) then + Result := BtnItemColors[bisHot, ipText] + else + Result := BtnItemColors[bisNormal, ipText]; + end; + + procedure DiagLine(C: TColor); + begin + with Canvas, R do + begin + Pen.Color := C; + MoveTo(Right - 1 - X, Bottom - 1); + LineTo(Right, Bottom - X - 2); + Inc(X); + end; + end; + +begin + with Canvas do + case Kind of + PFC_CHECKBOX: + begin + SetupPen; + SetupBrush; + InflateRect(R, -1, -1); + with R do + Rectangle(Left, Top, Right, Bottom); + Pen.Style := psSolid; + Brush.Style := bsSolid; + + if Boolean(State and (PFS_CHECKED or PFS_MIXED)) then + begin + X := (R.Left + R.Right) div 2 - 1; + Y := (R.Top + R.Bottom) div 2 + 1; + Pen.Color := TextColor; + Brush.Color := Pen.Color; + Polygon([Point(X - 2, Y), Point(X, Y + 2), Point(X + 4, Y - 2), + Point(X + 4, Y - 4), Point(X, Y), Point(X - 2, Y - 2), Point(X - + 2, Y)]); + end; + end; + PFC_RADIOBUTTON: + begin + SetupPen; + SetupBrush; + InflateRect(R, -1, -1); + with R do + Ellipse(Left, Top, Right, Bottom); + Pen.Style := psSolid; + Brush.Style := bsSolid; + if Boolean(State and PFS_CHECKED) then + begin + InflateRect(R, -3, -3); + Pen.Color := TextColor; + Brush.Color := Pen.Color; + with R do + Ellipse(Left, Top, Right, Bottom); + end; + end; + end; +end; + +procedure TTBXWhidbeyTheme.PaintStatusBar(Canvas: TCanvas; R: TRect; Part: + Integer); +var + D, Sz: integer; + + procedure DiagLine(C: TColor); + begin + with R do + DrawLineEx(Canvas.Handle, Right - 1 - D, Bottom - 1, Right, Bottom - D - + 2, C); + Inc(D); + end; + +begin + with Canvas, R do + case Part of + SBP_BODY: + begin + FillRectEx(Handle, R, clBtnFace); + end; + SBP_PANE, SBP_LASTPANE: + begin + if Part = SBP_PANE then + Dec(R.Right, 2); + FrameRectEx(Handle, R, StatusPanelFrameColor, True); + end; + SBP_GRIPPER: + begin + D := 0; + Sz := Min(Right - Left, Bottom - Top); + case Sz of + 0..8: + begin + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + end; + 9..11: + begin + DiagLine(clBtnFace); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + DiagLine(clBtnFace); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + DiagLine(clBtnFace); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + end; + 12..14: + begin + DiagLine(clBtnShadow); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + DiagLine(clBtnShadow); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + DiagLine(clBtnShadow); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + end; + else + begin + DiagLine(clBtnShadow); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + DiagLine(clBtnFace); + DiagLine(clBtnShadow); + DiagLine(clBtnShadow); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + DiagLine(clBtnFace); + DiagLine(clBtnShadow); + DiagLine(clBtnShadow); + DiagLine(clBtnShadow); + DiagLine(clBtnHighlight); + end; + end; + end; + end; +end; + +procedure TTBXWhidbeyTheme.TBXSysCommand(var Message: TMessage); +begin + if Message.WParam = TSC_VIEWCHANGE then + SetupColorCache; +end; + +{$IFNDEF DTM_Package} +initialization + RegisterTBXTheme('Whidbey', TTBXWhidbeyTheme); +{$ENDIF} + +end. + diff --git a/official/2.1.6+2.1.beta1/TBX/TBX_MDI.res b/official/2.1.6+2.1.beta1/TBX/TBX_MDI.res new file mode 100644 index 0000000000000000000000000000000000000000..eb371ed713ee654b7c9b3c135c3d99439ec4e492 GIT binary patch literal 712 zcmchRu?@mN3`IYPA|)eGQZhn7LWlyIfCL*bhRckV&5q}Das-KpF4o!p=WqL4k~Vls z;lM9@Ev1@DN=w~z&_j)$_(exub=MiR*NIwFTC=mlj$PF?RkolXx`k^Y~}~ gz@rljCgulzLcbhG25nCjxc~qF literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/_clean.bat b/official/2.1.6+2.1.beta1/TBX/_clean.bat new file mode 100644 index 0000000..4b01d20 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/_clean.bat @@ -0,0 +1,11 @@ +del /S *.~* +del /S *.dcu +del /S *.dsk +del /S *.cfg +del /S *.dof +del /S *.obj +del /S *.hpp +del /S *.ddp +del /S *.mps +del /S *.mpt +del /S *.bak diff --git a/official/2.1.6+2.1.beta1/TBX/_tbx_2.1.beta_patch.diff.txt b/official/2.1.6+2.1.beta1/TBX/_tbx_2.1.beta_patch.diff.txt new file mode 100644 index 0000000..6136197 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/_tbx_2.1.beta_patch.diff.txt @@ -0,0 +1,2649 @@ +--- TBX.pas 2004-05-29 19:48:58.000000000 +-0400 ++++ TBX.pas 2005-08-14 23:15:12.000000000 +-0400 +@@ -8,12 +8,16 @@ + + interface + + {$I TB2Ver.inc} + {$I TBX.inc} + ++{x$DEFINE TBX_NO_ANIMATION} ++ { Enabling the above define disables all menu animation. For debugging ++ purpose only. } {vb+} ++ + uses + Windows, Messages, Classes, SysUtils, Controls, Graphics, ImgList, Forms, + TB2Item, TB2Dock, TB2Toolbar, TB2ToolWindow, TB2Anim, TBXUtils, TBXThemes; + + const + TBXVersion = 2.1; +@@ -68,13 +72,13 @@ + property Underline: TTriState read FUnderline write SetUnderline default tsDefault; + property StrikeOut: TTriState read FStrikeOut write SetStrikeOut default tsDefault; + property Size: TFontSize read FSize write SetSize default 100; // percent + property Color: TColor read FColor write SetColor default clNone; + property Name: TFontName read FName write SetName; // default '' + end; +- ++ + TTBXPopupPositionInfo = record + Item: TTBCustomItem; // this is a tentative type, it will be changed + ParentView: TTBView; // or removed in future versions + ParentViewer: TTBItemViewer; + PositionAsSubmenu: Boolean; + APopupPoint: TPoint; +@@ -160,12 +164,13 @@ + property InheritOptions; + property Layout; + property MaskOptions; + property MinHeight; + property MinWidth; + property Options; ++ property RadioItem; + property ShortCut; + property Stretch; + property Visible; + property OnAdjustFont; + property OnDrawImage; + property OnClick; +@@ -224,12 +229,13 @@ + property Layout; + property LinkSubitems; + property MaskOptions; + property MinHeight; + property MinWidth; + property Options; ++ property RadioItem; + property ShortCut; + property Stretch; + property SubMenuImages; + property ToolBoxPopup; + property Visible; + property OnAdjustFont; +@@ -302,12 +308,13 @@ + + TTBXPopupWindow = class(TTBPopupWindow) + private + FControlRect: TRect; + FShadows: TShadows; + procedure CMHintShow(var Message: TCMHintShow); message CM_HINTSHOW; ++ procedure CMShowingChanged(var Message: TMessage); message CM_SHOWINGCHANGED; {vb+} + procedure TBMGetViewType(var Message: TMessage); message TBM_GETVIEWTYPE; + procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE; + procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT; + procedure WMPrint(var Message: TMessage); message WM_PRINT; + procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND; + procedure WMWindowPosChanged(var Message: TWMWindowPosChanged); message WM_WINDOWPOSCHANGED; +@@ -316,12 +323,13 @@ + procedure CreateParams(var Params: TCreateParams); override; + procedure CreateShadow; virtual; + procedure DestroyShadow; virtual; + function GetNCSize: TPoint; override; + function GetShowShadow: Boolean; virtual; + function GetViewClass: TTBViewClass; override; ++ procedure PaintScrollArrows; override; {vb+} + public + destructor Destroy; override; + function GetFillColor: TColor; + end; + + TTBXPopupView = class(TTBPopupView); +@@ -354,12 +362,13 @@ + protected + procedure DrawNCArea(const DrawToDC: Boolean; const ADC: HDC; const Clip: HRGN); override; + function GetChevronItemClass: TTBChevronItemClass; override; + function GetFloatingWindowParentClass: TTBFloatingWindowParentClass; override; + procedure GetToolbarInfo(out ToolbarInfo: TTBXToolbarInfo); virtual; + function GetViewClass: TTBToolbarViewClass; override; ++ procedure Loaded; override; {vb+} + procedure SetParent(AParent: TWinControl); override; + procedure UpdateEffectiveColor; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function Embedded: Boolean; +@@ -461,26 +470,29 @@ + protected + function CreatePopupEx(SelectFirstItem: Boolean; const AControlRect: TRect; + Alignment: TTBPopupAlignment): TTBPopupWindow; virtual; + function GetPopupWindowClass: TTBPopupWindowClass; override; + procedure GetPopupPosition(ParentView: TTBView; PopupWindow: TTBPopupWindow; + var PopupPositionRec: TTBPopupPositionRec); override; +- procedure OpenPopupEx(const SelectFirstItem, TrackRightButton: Boolean; +- const ControlRect: TRect; const Alignment: TTBPopupAlignment); +- procedure PopupEx(const ControlRect: TRect; TrackRightButton: Boolean; +- Alignment: TTBPopupAlignment = tbpaLeft); ++ function OpenPopupEx(const SelectFirstItem, TrackRightButton: Boolean; ++ const ControlRect: TRect; const Alignment: TTBPopupAlignment; ++ const ReturnClickedItemOnly: Boolean): TTBCustomItem; ++ function PopupEx(const ControlRect: TRect; TrackRightButton: Boolean; ++ Alignment: TTBPopupAlignment = tbpaLeft; ++ ReturnClickedItemOnly: Boolean = False): TTBCustomItem; + end; + + TTBXPopupMenu = class(TTBPopupMenu) + private + FToolBoxPopup: Boolean; + procedure TBMGetViewType(var Message: TMessage); message TBM_GETVIEWTYPE; + protected + function GetRootItemClass: TTBRootItemClass; override; + public +- procedure PopupEx(const ControlRect: TRect); ++ function PopupEx(const ControlRect: TRect; ++ ReturnClickedItemOnly: Boolean = False): TTBCustomItem; + property ToolBoxPopup: Boolean read FToolBoxPopup write FToolBoxPopup default False; + end; + + TTBXFloatingWindowParent = class(TTBFloatingWindowParent) + private + FCloseButtonHover: Boolean; +@@ -551,14 +563,35 @@ + destructor Destroy; override; + published + property Color default clNone; + property UseParentBackground: Boolean read FUseParentBackground write SetUseParentBackground default False; + end; + ++ { TTBXMenuAnimation } {vb+} ++ ++ TMenuAnimation = (maNone, maUnfold, maSlide, maFade); ++ TAnimationMode = (amNone, amSysDefault, amRandom, amUnfold, amSlide, amFade); ++ TAnimationModes = set of TAnimationMode; ++ ++ TTBXMenuAnimation = class ++ private ++ FAnimationMode: TAnimationMode; ++ function SysParamEnabled(Param: Cardinal): Boolean; ++ function GetAvailableModes: TAnimationModes; ++ function GetMenuAnimation: TMenuAnimation; ++ procedure SetAnimationMode(Value: TAnimationMode); ++ property MenuAnimation: TMenuAnimation read GetMenuAnimation; ++ public ++ constructor Create(AAnimationMode: TAnimationMode = amSysDefault); ++ property AnimationMode: TAnimationMode read FAnimationMode write SetAnimationMode; ++ property AvailableModes: TAnimationModes read GetAvailableModes; ++ end; ++ + var + CurrentTheme: TTBXTheme; ++ TBXMenuAnimation: TTBXMenuAnimation; { vb+ } + + {$IFNDEF JR_D6} + var + clMoneyGreen: TColor = TColor($C0DCC0); + clSkyBlue: TColor = TColor($F0CAA6); + clCream: TColor = TColor($F0FBFF); +@@ -588,25 +621,27 @@ + implementation + + {$R tbx_glyphs.res} + + uses + TBXExtItems, TBXLists, TB2Common, TBXUxThemes, MultiMon, TBXDefaultTheme, +- ComCtrls, Menus; ++ {ComCtrls, Menus;} {vb-} ++ ComCtrls, Menus, MMSystem; {vb+} + + type + TTBItemAccess = class(TTBCustomItem); + TTBViewAccess = class(TTBView); + TTBItemViewerAccess = class(TTBItemViewer); + TTBFloatingWindowParentAccess = class(TTBFloatingWindowParent); + TTBCustomDockableWindowAccess = class(TTBCustomDockableWindow); + TTBXToolbarAccess = class(TTBXToolbar); + TTBBackgroundAccess = class(TTBBackground); + TControlAccess = class(TControl); + TTBXThemeAccess = class(TTBXTheme); + TDockAccess = class(TTBDock); ++ TTBPopupWindowAccess = class(TTBPopupWindow); {vb+} + + { TTBNexus } + TTBXNexus = class + private + FNotifies: TList; + procedure TBXSysCommand(var Message: TMessage); message TBX_SYSCOMMAND; +@@ -670,14 +705,14 @@ + Shift.X := 0; Shift.Y := 0; + Shift := Parent.ScreenToClient(Control.ClientToScreen(Shift)); + SaveDC(DC); + try + SetWindowOrgEx(DC, Shift.X, Shift.Y, nil); + Msg.Msg := WM_ERASEBKGND; +- Msg.WParam := DC; +- Msg.LParam := DC; ++ Msg.WParam := Integer(DC); {vb+} ++ Msg.LParam := Integer(DC); {vb+} + Msg.Result := 0; + Parent.Dispatch(Msg); + finally + RestoreDC(DC, -1); + end; + +@@ -1316,13 +1351,13 @@ + end + else + begin + Inc(AHeight, ImgSize.CY); + if AWidth < ImgSize.CX + 7 then AWidth := ImgSize.CX + 7; + end; +- end; ++ end; + + if tbisSubmenu in TTBItemAccess(Item).ItemStyle then with CurrentTheme do + begin + if tbisCombo in TTBItemAccess(Item).ItemStyle then Inc(AWidth, SplitBtnArrowWidth) + else if tboDropdownArrow in Item.EffectiveOptions then + begin +@@ -1521,13 +1556,13 @@ + Result := not (tbisSubmenu in TTBItemAccess(Item).ItemStyle); + if (tbisCombo in TTBItemAccess(Item).ItemStyle) then + begin + if IsToolbarStyle then W := CurrentTheme.SplitBtnArrowWidth + else W := GetSystemMetrics(SM_CXMENUCHECK); + Result := X < (BoundsRect.Right - BoundsRect.Left) - W; +- end; ++ end; + end; + + function TTBXItemViewer.IsToolbarSize: Boolean; + begin + Result := inherited IsToolbarSize; + Result := Result or ((GetViewType(View) and PVT_TOOLBOX) = PVT_TOOLBOX); +@@ -1564,13 +1599,13 @@ + CAppActive: array [Boolean] of Integer = (0, IO_APPACTIVE); + var + Item: TTBXCustomItem; + View: TTBViewAccess; + ItemInfo: TTBXItemInfo; + +- M: Integer; ++ {M: Integer;} {vb-} + R: TRect; + ComboRect: TRect; + CaptionRect: TRect; + ImageRect: TRect; + C: TColor; + +@@ -1888,15 +1923,22 @@ + Left := Left + ((Right - Left) - CX) div 2; + ImageRect.Top := Top + ((Bottom - Top) - CY) div 2; + Right := Left + CX; + Bottom := Top + CY; + DrawItemImage(Canvas, ImageRect, ItemInfo); + end +- else if not ToolbarStyle and Item.Checked then +- CurrentTheme.PaintCheckMark(Canvas, ImageRect, ItemInfo); +- end; ++ {else if not ToolbarStyle and Item.Checked then ++ CurrentTheme.PaintCheckMark(Canvas, ImageRect, ItemInfo);} {vb-} ++ else {vb+} ++ if not ToolbarStyle and Item.Checked then ++ begin ++ if Item.RadioItem then ++ with ItemInfo do ItemOptions := ItemOptions or IO_RADIO; ++ CurrentTheme.PaintCheckMark(Canvas, ImageRect, ItemInfo); ++ end; ++ end; + end; + + + //============================================================================// + + { TTBXSubmenuItem } +@@ -2090,12 +2132,59 @@ + HintStr := View.Selected.GetHintText; + View.Selected.Dispatch(Message); + end; + end; + end; + ++procedure TTBXPopupWindow.CMShowingChanged(var Message: TMessage); {vb+} ++const ++ ShowFlags: array[Boolean] of UINT = ( ++ SWP_NOSIZE or SWP_NOMOVE or SWP_NOZORDER or SWP_NOACTIVATE or SWP_HIDEWINDOW, ++ SWP_NOSIZE or SWP_NOMOVE or SWP_NOZORDER or SWP_NOACTIVATE or SWP_SHOWWINDOW); ++var ++ MenuAni: TMenuAnimation; ++ AniDir: TTBAnimationDirection; ++begin ++ { Must override TCustomForm/TForm's CM_SHOWINGCHANGED handler so that the ++ form doesn't get activated when Visible is set to True. } ++ ++ { Handle animation. NOTE: I do not recommend trying to enable animation on ++ Windows 95 and NT 4.0 because there's a difference in the way the ++ SetWindowPos works on those versions. See the comment in the ++ TBStartAnimation function of TB2Anim.pas. } ++ {$IFNDEF TBX_NO_ANIMATION} ++ if ((View.ParentView = nil) or not(vsNoAnimation in View.ParentView.State)) and ++ Showing and (View.Selected = nil) and not IsWindowVisible(WindowHandle) and ++ (TBXMenuAnimation.AnimationMode <> amNone) then ++ begin ++ { Start animation only if WM_TB2K_POPUPSHOWING returns zero (or not handled) } ++ if SendMessage(WindowHandle, WM_TB2K_POPUPSHOWING, TPS_ANIMSTART, 0) = 0 then ++ begin ++ MenuAni := TBXMenuAnimation.MenuAnimation; ++ AniDir := TTBPopupWindowAccess(Self).AnimationDirection; ++ if MenuAni = maUnfold then ++ if [tbadDown, tbadUp] * AniDir <> [] ++ then Include(AniDir, tbadRight) ++ else Include(AniDir, tbadDown); ++ TBStartAnimation(WindowHandle, MenuAni = maFade, AniDir); ++ Exit; ++ end; ++ end; ++ {$ENDIF} ++ ++ { No animation... } ++ if not Showing then begin ++ { Call TBEndAnimation to ensure WS_EX_LAYERED style is removed before ++ hiding, otherwise windows under the popup window aren't repainted ++ properly. } ++ TBEndAnimation(WindowHandle); ++ end; ++ SetWindowPos(WindowHandle, 0, 0, 0, 0, 0, ShowFlags[Showing]); ++ if Showing then SendNotifyMessage(WindowHandle, WM_TB2K_POPUPSHOWING, TPS_NOANIM, 0); ++end; ++ + procedure TTBXPopupWindow.CreateParams(var Params: TCreateParams); + const + CS_DROPSHADOW = $00020000; + begin + inherited CreateParams(Params); + with Params do +@@ -2180,12 +2269,61 @@ + + function TTBXPopupWindow.GetViewClass: TTBViewClass; + begin + Result := TTBXPopupView; + end; + ++procedure TTBXPopupWindow.PaintScrollArrows; {vb+} ++ ++ function _GetPopupMargin: Integer; ++ begin ++ if View.ParentView <> nil then ++ Result := GetPopupMargin(TTBViewAccess(View.ParentView).OpenViewer) ++ else if View.ViewerCount > 0 then ++ Result := GetPopupMargin(View.Viewers[0]) ++ else Result := -1; ++ end; ++ ++ procedure DrawArrows; ++ var ++ ItemInfo: TTBXItemInfo; ++ Index: Integer; ++ begin ++ FillChar(ItemInfo, SizeOf(ItemInfo), 0); ++ ItemInfo.ViewType := PVT_POPUPMENU; ++ ItemInfo.Enabled := True; ++ ItemInfo.PopupMargin := _GetPopupMargin; ++ if ItemInfo.PopupMargin > 0 then ++ begin ++ if TTBViewAccess(View).ShowUpArrow then ++ for Index := 0 to View.ViewerCount- 1 do ++ if View.Viewers[Index].Show then ++ begin ++ CurrentTheme.PaintMenuItemFrame(Canvas, Rect(0, 0, ClientWidth, ++ View.Viewers[Index].BoundsRect.Top), ItemInfo); ++ Break; ++ end; ++ if TTBViewAccess(View).ShowDownArrow then ++ for Index := View.ViewerCount- 1 downto 0 do ++ if View.Viewers[Index].Show then ++ begin ++ CurrentTheme.PaintMenuItemFrame(Canvas, Rect(0, ++ View.Viewers[Index].BoundsRect.Bottom, ClientWidth, ++ ClientHeight), ItemInfo); ++ Break; ++ end; ++ end; ++ end; ++ ++begin ++ with TTBViewAccess(View) do ++ if ShowUpArrow or ShowDownArrow then ++ DrawArrows; ++ inherited; ++end; ++ + procedure TTBXPopupWindow.TBMGetViewType(var Message: TMessage); + var + PI: TTBCustomItem; + begin + Message.Result := PVT_POPUPMENU; + if View <> nil then +@@ -2462,13 +2600,13 @@ + R2 := CurrentDock.ClientRect; + OffsetRect(R2, -Left, -Top); + TDockAccess(CurrentDock).DrawBackground(DC, R2); + if (Color = clNone) and CurrentDock.BackgroundOnToolbars then + ACanvas.Brush.Style := bsClear; + end +- else ++ else + begin + ACanvas.Brush.Color := GetEffectiveColor(CurrentDock); + ACanvas.FillRect(R); + ACanvas.Brush.Color := EffectiveColor; + ACanvas.Brush.Style := bsSolid; + end; +@@ -2533,12 +2671,18 @@ + procedure TTBXToolbar.SetItemTransparency(const Value: TTBXItemTransparency); + begin + FItemTransparency := Value; + Invalidate; + end; + ++procedure TTBXToolbar.Loaded; {vb+} ++begin ++ inherited; ++ UpdateEffectiveColor; ++end; ++ + procedure TTBXToolbar.SetParent(AParent: TWinControl); + begin + inherited; + if AParent is TTBXFloatingWindowParent then + TTBXFloatingWindowParent(AParent).SnapDistance := SnapDistance; + end; +@@ -2806,14 +2950,15 @@ + + function TTBXRootItem.GetPopupWindowClass: TTBPopupWindowClass; + begin + Result := TTBXPopupWindow; + end; + +-procedure TTBXRootItem.OpenPopupEx(const SelectFirstItem, TrackRightButton: Boolean; +- const ControlRect: TRect; const Alignment: TTBPopupAlignment); ++function TTBXRootItem.OpenPopupEx(const SelectFirstItem, TrackRightButton: Boolean; ++ const ControlRect: TRect; const Alignment: TTBPopupAlignment; ++ const ReturnClickedItemOnly: Boolean): TTBCustomItem; + var + ModalHandler: TTBModalHandler; + Popup: TTBPopupWindow; + DoneActionData: TTBDoneActionData; + State: TTBViewState; + begin +@@ -2834,37 +2979,45 @@ + TTBViewAccess(Popup.View).SetState(State); + Popup.Free; + end; + finally + ModalHandler.Free; + end; +- ProcessDoneAction(DoneActionData); ++ Result := ProcessDoneAction(DoneActionData, ReturnClickedItemOnly); + end; + +-procedure TTBXRootItem.PopupEx(const ControlRect: TRect; +- TrackRightButton: Boolean; Alignment: TTBPopupAlignment); ++function TTBXRootItem.PopupEx(const ControlRect: TRect; ++ TrackRightButton: Boolean; Alignment: TTBPopupAlignment = tbpaLeft; ++ ReturnClickedItemOnly: Boolean = False): TTBCustomItem; + begin +- OpenPopupEx(False, TrackRightButton, ControlRect, Alignment); ++ Result := OpenPopupEx(False, TrackRightButton, ControlRect, ++ Alignment, ReturnClickedItemOnly); + end; + + + //============================================================================// + + { TTBXPopupMenu } + + function TTBXPopupMenu.GetRootItemClass: TTBRootItemClass; + begin + Result := TTBXRootItem; + end; + +-procedure TTBXPopupMenu.PopupEx(const ControlRect: TRect); ++function TTBXPopupMenu.PopupEx(const ControlRect: TRect; ++ ReturnClickedItemOnly: Boolean = False): TTBCustomItem; + begin + {$IFDEF JR_D5} ++ {$IFDEF JR_D9} ++ SetPopupPoint(Point(ControlRect.Left, ControlRect.Bottom)); ++ {$ELSE} + PPoint(@PopupPoint)^ := Point(ControlRect.Left, ControlRect.Bottom); + {$ENDIF} +- TTBXRootItem(Items).PopupEx(ControlRect, TrackButton = tbRightButton, TTBPopupAlignment(Alignment)) ++ {$ENDIF} ++ Result := TTBXRootItem(Items).PopupEx(ControlRect, TrackButton = tbRightButton, ++ TTBPopupAlignment(Alignment), ReturnClickedItemOnly); + end; + + procedure TTBXPopupMenu.TBMGetViewType(var Message: TMessage); + begin + Message.Result := PVT_POPUPMENU; + end; +@@ -3403,13 +3556,15 @@ + if Message.Msg = TBX_SYSCOMMAND then + Broadcast(TBM_THEMECHANGE, Message.WParam, 0); + end; + + procedure InitAdditionalSysColors; + begin ++{$IFNDEF JR_D7} {vb+} + AddTBXColor(clHotLight, 'clHotLight'); ++{$ENDIF} {vb+} + {$IFNDEF JR_D6} + AddTBXColor(clMoneyGreen, 'clMoneyGreen'); + AddTBXColor(clSkyBlue, 'clSkyBlue'); + AddTBXColor(clCream, 'clCream'); + AddTBXColor(clMedGray, 'clMedGray'); + {$ENDIF} +@@ -3572,17 +3727,111 @@ + begin + FResizing := True; + inherited; + FResizing := False; + end; + ++{ TTBXMenuAnimation } {vb+} ++ ++constructor TTBXMenuAnimation.Create(AAnimationMode: TAnimationMode = amSysDefault); ++begin ++ AnimationMode := AAnimationMode; ++end; ++ ++function TTBXMenuAnimation.GetAvailableModes: TAnimationModes; ++var IsWindows2K: Boolean; ++begin ++ Result := [amNone]; ++ IsWindows2K := (Win32Platform = VER_PLATFORM_WIN32_NT) and ++ CheckWin32Version(5); ++ if IsWindows2K or ((Win32Platform = VER_PLATFORM_WIN32_WINDOWS) and ++ CheckWin32Version(4, 10){Win98}) then ++ Result := Result+ [amSysDefault, amRandom, amUnfold, amSlide]; ++ if IsWindows2K then ++ Include(Result, amFade); ++end; ++ ++function TTBXMenuAnimation.GetMenuAnimation: TMenuAnimation; ++ ++ function GetSysDefault: TMenuAnimation; ++ const ++ SPI_GETMENUFADE = $1012; ++ SysDefAni: array[Boolean] of TMenuAnimation = (maSlide, maFade); ++ begin ++ if SysParamEnabled(SPI_GETMENUANIMATION) ++ then Result := SysDefAni[SysParamEnabled(SPI_GETMENUFADE)] ++ else Result := maNone; ++ end; ++ ++ function GetRandom: TMenuAnimation; ++ var Max: Integer; ++ begin ++ Max := Ord(High(TMenuAnimation)); ++ if not (amFade in AvailableModes) then ++ Dec(Max); ++ Result := Succ(TMenuAnimation(Random(Max))); ++ end; ++ ++begin ++ case AnimationMode of ++ amSysDefault: Result := GetSysDefault; ++ amRandom: Result := GetRandom; ++ amUnfold: Result := maUnfold; ++ amSlide: Result := maSlide; ++ amFade: Result := maFade; ++ else ++ Result := maNone; ++ end; ++end; ++ ++procedure TTBXMenuAnimation.SetAnimationMode(Value: TAnimationMode); ++var AvailModes: TAnimationModes; ++begin ++ AvailModes := AvailableModes; ++ while not (Value in AvailModes) do ++ Value := Pred(Value); ++ FAnimationMode := Value; ++end; ++ ++function TTBXMenuAnimation.SysParamEnabled(Param: Cardinal): Boolean; ++var B: BOOL; ++begin ++ Result := SystemParametersInfo(Param, 0, @B, 0) and B; ++end; ++ ++{ Work around delayed menu showing in Windows 2000+ } {vb+} ++var ++ FixPlaySoundThreadHandle: Cardinal; ++ ++function FixPlaySoundThreadFunc(Param: Pointer): Integer; stdcall; ++begin ++ Sleep(250); ++ PlaySound(nil, 0, 0); ++ CloseHandle(FixPlaySoundThreadHandle); { Harakiri :~| } ++ Result := $4E494150; { :) } ++end; ++ ++procedure FixPlaySoundDelay; ++var ThreadId: Cardinal; ++begin ++ if (Win32Platform = VER_PLATFORM_WIN32_NT) and CheckWin32Version(5) and ++ (FixPlaySoundThreadHandle = 0) then ++ FixPlaySoundThreadHandle := CreateThread(nil, $1000, ++ @FixPlaySoundThreadFunc, nil, 0, ThreadId); ++end; ++ + initialization +- CurrentTheme := nil; ++ FixPlaySoundDelay; {vb+} ++ {CurrentTheme := nil;} {vb-} + RegisterTBXTheme('Default', TTBXDefaultTheme); + TBXNexus := TTBXNexus.Create('Default'); ++ TBXMenuAnimation := TTBXMenuAnimation.Create; {vb+} ++ {$IFNDEF JR_D7} {vb+} + InitAdditionalSysColors; ++ {$ENDIF} {vb+} + + finalization + TBXNexus.Free; ++ FreeAndNil(TBXMenuAnimation); {vb+} + ColorRegistry := nil; + + end. +--- TBXAluminumTheme.pas 2004-05-25 22:02:56.000000000 +-0400 ++++ TBXAluminumTheme.pas 2005-08-03 02:29:24.000000000 +-0400 +@@ -441,12 +441,13 @@ + end; + + function TTBXAluminumTheme.GetIntegerMetrics(Index: Integer): Integer; + begin + case Index of + TMI_SPLITBTN_ARROWWIDTH: Result := 12; ++ TMI_MENU_LCAPTIONMARGIN: Result := 3; + TMI_MENU_MDI_DW: Result := 1; + TMI_MENU_MDI_DH: Result := 2; + TMI_EDIT_FRAMEWIDTH: Result := 2; + TMI_EDIT_TEXTMARGINHORZ: Result := 2; + TMI_EDIT_TEXTMARGINVERT: Result := 1; + TMI_EDIT_BTNWIDTH: Result := 14; +@@ -573,18 +574,27 @@ + end; + + procedure TTBXAluminumTheme.PaintCheckMark(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); + var + DC: HDC; + X, Y: Integer; ++ C: TColor; + begin + DC := Canvas.Handle; +- X := (ARect.Left + ARect.Right) div 2 - 2; ++ X := (ARect.Left + ARect.Right) div 2 - 1; + Y := (ARect.Top + ARect.Bottom) div 2 + 1; +- PolyLineEx(DC, [Point(X-2, Y-2), Point(X, Y), Point(X+4, Y-4), +- Point(X+4, Y-3), Point(X, Y+1), Point(X-2, Y-1), Point(X-2, Y-2)], GetBtnColor(ItemInfo, ipText)); ++ C := GetBtnColor(ItemInfo, ipText); ++ if ItemInfo.ItemOptions and IO_RADIO > 0 then ++ begin ++ RoundRectEx(DC, X-2, Y-4, X+4, Y+2, 2, 2, ++ MixColors(C, ToolbarColor, 200), clNone); ++ RoundRectEx(DC, X-2, Y-4, X+4, Y+2, 6, 6, C, C); ++ end ++ else ++ PolylineEx(DC, [Point(X-2, Y-2), Point(X, Y), Point(X+4, Y-4), ++ Point(X+4, Y-3), Point(X, Y+1), Point(X-2, Y-1), Point(X-2, Y-2)], C); + end; + + procedure TTBXAluminumTheme.PaintDropDownArrow(Canvas: TCanvas; + const ARect: TRect; const ItemInfo: TTBXItemInfo); + var + X, Y: Integer; +--- TBXDefaultTheme.pas 2004-05-25 22:02:56.000000000 +-0400 ++++ TBXDefaultTheme.pas 2005-08-03 01:58:42.000000000 +-0400 +@@ -388,25 +388,36 @@ + Brush.Style := bsSolid; + end; + end; + + procedure TTBXDefaultTheme.PaintCheckMark(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); + var ++ DC: HDC; + X, Y: Integer; ++ C: TColor; + begin ++ DC := Canvas.Handle; + X := (ARect.Left + ARect.Right) div 2 - 1; +- Y := (ARect.Top + ARect.Bottom) div 2 + 2; +- if ItemInfo.Enabled then Canvas.Pen.Color := clBtnText +- else Canvas.Pen.Color := clGrayText; +- Canvas.Polyline([Point(X-2, Y-2), Point(X, Y), Point(X+4, Y-4), +- Point(X+4, Y-3), Point(X, Y+1), Point(X-2, Y-1), Point(X-2, Y-2)]); +- if ItemInfo.Enabled then +- begin +- Canvas.Pen.Color := clBtnHighlight; +- Canvas.Polyline([Point(X-3, Y-2), Point(X-3, Y-1), Point(X, Y+2), +- Point(X+5, Y-3), Point(X+5, Y-5)]); ++ Y := (ARect.Top + ARect.Bottom) div 2 + 1; ++ if ItemInfo.Enabled ++ then C := clBtnText ++ else C := clGrayText; ++ if ItemInfo.ItemOptions and IO_RADIO > 0 then ++ begin ++ RoundRectEx(DC, X-2, Y-4, X+4, Y+2, 2, 2, ++ MixColors(C, clBtnHighlight, 128), clNone); ++ RoundRectEx(DC, X-2, Y-4, X+4, Y+2, 6, 6, C, C); ++ if ItemInfo.Enabled then ++ RoundRectEx(DC, X-3, Y-5, X+5, Y+3, 6, 6, clBtnHighlight, clNone); ++ end ++ else begin ++ PolyLineEx(DC, [Point(X-2, Y-2), Point(X, Y), Point(X+4, Y-4), ++ Point(X+4, Y-3), Point(X, Y+1), Point(X-2, Y-1), Point(X-2, Y-2)], C); ++ if ItemInfo.Enabled then ++ PolyLineEx(DC, [Point(X-3, Y-2), Point(X-3, Y-1), Point(X, Y+2), ++ Point(X+5, Y-3), Point(X+5, Y-5)], clBtnHighlight); + end; + end; + + procedure TTBXDefaultTheme.PaintChevron(Canvas: TCanvas; ARect: TRect; + const ItemInfo: TTBXItemInfo); + const +--- TBXDkPanels.pas 2004-05-29 18:16:02.000000000 +-0400 ++++ TBXDkPanels.pas 2005-08-12 12:24:26.000000000 +-0400 +@@ -18,13 +18,13 @@ + const + { New hit test constants for page scrollers } + HTSCROLLPREV = 30; + HTSCROLLNEXT = 31; + + type +- { TTBXDockablePanel } ++ { TTBXControlMargins } + + TTBXControlMargins = class(TPersistent) + private + FLeft, FTop, FRight, FBottom: Integer; + FOnChange: TNotifyEvent; + procedure SetBottom(Value: Integer); +@@ -47,47 +47,52 @@ + TTBXMultiDock = class(TTBDock) + protected + LastValidRowSize: Integer; + function Accepts(ADockableWindow: TTBCustomDockableWindow): Boolean; override; + procedure ValidateInsert(AComponent: TComponent); override; + public ++ procedure ArrangeToolbars; override; + procedure Paint; override; + procedure ResizeVisiblePanels(NewSize: Integer); +- procedure ArrangeToolbars; override; + end; + + +- { TTBXDockablePanel } ++ { TTBXCustomDockablePanel } + + TDPCaptionRotation = (dpcrAuto, dpcrAlwaysHorz, dpcrAlwaysVert); + TTBXResizingStage = (rsBeginResizing, rsResizing, rsEndResizing); + TTBXDockedResizing = procedure(Sender: TObject; Vertical: Boolean; + var NewSize: Integer; Stage: TTBXResizingStage; var AllowResize: Boolean) of object; + TDockKinds = set of (dkStandardDock, dkMultiDock); + +- TTBXDockablePanel = class(TTBCustomDockableWindow) ++ {TTBXDockablePanel = class(TTBCustomDockableWindow)} {vb-} ++ TTBXCustomDockablePanel = class(TTBCustomDockableWindow) {vb+} + private + FBorderSize: Integer; + FCaptionRotation: TDPCaptionRotation; + FDockedWidth: Integer; + FDockedHeight: Integer; + FEffectiveColor: TColor; + FFloatingWidth: Integer; + FFloatingHeight: Integer; ++ FHorzResizeCursor: TCursor; {vb+} ++ FHorzSplitCursor : TCursor; {vb+} + FIsResizing: Boolean; + FIsSplitting: Boolean; + FMinClientWidth: Integer; + FMinClientHeight: Integer; + FMaxClientWidth: Integer; + FMaxClientHeight: Integer; + FSmoothDockedResize: Boolean; + FSnapDistance: Integer; + FShowCaptionWhenDocked: Boolean; + FSplitHeight: Integer; + FSplitWidth: Integer; + FSupportedDocks: TDockKinds; ++ FVertResizeCursor: TCursor; {vb+} ++ FVertSplitCursor : TCursor; {vb+} + FOnDockedResizing: TTBXDockedResizing; + function CalcSize(ADock: TTBDock): TPoint; + procedure SetBorderSize(Value: Integer); + procedure SetCaptionRotation(Value: TDPCaptionRotation); + procedure SetDockedHeight(Value: Integer); + procedure SetDockedWidth(Value: Integer); +@@ -146,60 +151,96 @@ + function GetFloatingBorderSize: TPoint; override; + procedure ReadPositionData(const Data: TTBReadPositionData); override; + procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override; + procedure UpdateChildColors; + procedure WritePositionData(const Data: TTBWritePositionData); override; + property EffectiveColor: TColor read FEffectiveColor; +- published ++ property CaptionRotation: TDPCaptionRotation read FCaptionRotation write SetCaptionRotation default dpcrAuto; ++ property Color default clNone; ++ property CloseButtonWhenDocked default True; ++ property DblClickUndock default False; + { client size constraints should be restored before other size related properties } + property MaxClientHeight: Integer read FMaxClientHeight write FMaxClientHeight default 0; + property MaxClientWidth: Integer read FMaxClientWidth write FMaxClientWidth default 0; + property MinClientHeight: Integer read FMinClientHeight write SetMinClientHeight default 32; + property MinClientWidth: Integer read FMinClientWidth write SetMinClientWidth default 32; ++ property BorderSize: Integer read FBorderSize write SetBorderSize default 0; ++ property DockedWidth: Integer read FDockedWidth write SetDockedWidth default 128; ++ property DockedHeight: Integer read FDockedHeight write SetDockedHeight default 128; ++ property FloatingWidth: Integer read FFloatingWidth write SetFloatingWidth default 0; ++ property FloatingHeight: Integer read FFloatingHeight write SetFloatingHeight default 0; ++ property Height stored False; ++ property HorzResizeCursor: TCursor read FHorzResizeCursor write FHorzResizeCursor default crSizeWE; {vb+} ++ property HorzSplitCursor: TCursor read FHorzSplitCursor write FHorzSplitCursor default crHSplit; {vb+} ++ property ShowCaptionWhenDocked: Boolean read FShowCaptionWhenDocked write SetShowCaptionWhenDocked default True; ++ property SplitHeight: Integer read FSplitHeight write SetSplitHeight default 0; ++ property SplitWidth: Integer read FSplitWidth write SetSplitWidth default 0; ++ property SupportedDocks: TDockKinds read FSupportedDocks write FSupportedDocks; ++ property SmoothDockedResize: Boolean read FSmoothDockedResize write FSmoothDockedResize default True; ++ property SnapDistance: Integer read FSnapDistance write SetSnapDistance default 0; ++ property VertResizeCursor: TCursor read FVertResizeCursor write FVertResizeCursor default crSizeNS; {vb+} ++ property VertSplitCursor: TCursor read FVertSplitCursor write FVertSplitCursor default crVSplit; {vb+} ++ property Width stored False; ++ property OnDockedResizing: TTBXDockedResizing read FOnDockedResizing write FOnDockedResizing; ++ end; {vb+} + ++ { TTBXDockablePanel } ++ ++ TTBXDockablePanel = class(TTBXCustomDockablePanel) {vb+} ++ published ++ { client size constraints should be restored before other size related properties } ++ property MaxClientHeight; ++ property MaxClientWidth; ++ property MinClientHeight; ++ property MinClientWidth; ++ + property ActivateParent; + property Align; + property Anchors; +- property BorderSize: Integer read FBorderSize write SetBorderSize default 0; ++ property BorderSize; + property BorderStyle; + property Caption; +- property CaptionRotation: TDPCaptionRotation read FCaptionRotation write SetCaptionRotation default dpcrAuto; +- property Color default clNone; ++ property CaptionRotation; ++ property Color; + property CloseButton; +- property CloseButtonWhenDocked default True; ++ property CloseButtonWhenDocked; + property CurrentDock; +- property DblClickUndock default False; ++ property DblClickUndock; + property DefaultDock; + property DockableTo; +- property DockedWidth: Integer read FDockedWidth write SetDockedWidth default 128; +- property DockedHeight: Integer read FDockedHeight write SetDockedHeight default 128; ++ property DockedWidth; ++ property DockedHeight; + property DockMode; + property DockPos; + property DockRow; +- property FloatingWidth: Integer read FFloatingWidth write SetFloatingWidth default 0; +- property FloatingHeight: Integer read FFloatingHeight write SetFloatingHeight default 0; ++ property FloatingWidth; ++ property FloatingHeight; + property FloatingMode; + property Font; +- property Height stored False; ++ property Height; + property HideWhenInactive; ++ property HorzResizeCursor; {vb+} ++ property HorzSplitCursor; {vb+} + property LastDock; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property Resizable; + property ShowCaption; +- property ShowCaptionWhenDocked: Boolean read FShowCaptionWhenDocked write SetShowCaptionWhenDocked default True; ++ property ShowCaptionWhenDocked; + property ShowHint; +- property SplitHeight: Integer read FSplitHeight write SetSplitHeight default 0; +- property SplitWidth: Integer read FSplitWidth write SetSplitWidth default 0; +- property SupportedDocks: TDockKinds read FSupportedDocks write FSupportedDocks; ++ property SplitHeight; ++ property SplitWidth; ++ property SupportedDocks; + property SmoothDrag; +- property SmoothDockedResize: Boolean read FSmoothDockedResize write FSmoothDockedResize default True; +- property SnapDistance: Integer read FSnapDistance write SetSnapDistance default 0; ++ property SmoothDockedResize; ++ property SnapDistance; + property TabOrder; + property UseLastDock; ++ property VertResizeCursor; {vb+} ++ property VertSplitCursor; {vb+} + property Visible; + property Width stored False; + + property OnClose; + property OnCloseQuery; + {$IFDEF JR_D5} +@@ -207,13 +248,13 @@ + {$ENDIF} + property OnDragDrop; + property OnDragOver; + property OnDockChanged; + property OnDockChanging; + property OnDockChangingHidden; +- property OnDockedResizing: TTBXDockedResizing read FOnDockedResizing write FOnDockedResizing; ++ property OnDockedResizing; + property OnMouseDown; + property OnMouseMove; + property OnMouseUp; + property OnMove; + property OnRecreated; + property OnRecreating; +@@ -390,12 +431,13 @@ + end; + + { TTBXLabel } + + TTBXLabel = class(TTBXCustomLabel) + published ++ property Action; {vb+} + property Align; + property Alignment; + property Anchors; + property AutoSize; + property BiDiMode; + property Caption; +@@ -473,12 +515,13 @@ + end; + + { TTBXLink } + + TTBXLink = class(TTBXCustomLink) + published ++ property Action; {vb+} + property Align; + property Alignment; + property Anchors; + property AutoSize; + property BiDiMode; + property Caption; +@@ -617,12 +660,13 @@ + function GetControlsAlignment: TAlignment; override; + end; + + { TTBXButton } + TTBXButton = class(TTBXCustomButton) + published ++ property Action; {vb+} + property Align; + property Alignment; + property GroupIndex; + property AllowAllUnchecked; + property Anchors; + property AutoSize; +@@ -715,12 +759,13 @@ + public + constructor Create(AOwner: TComponent); override; + end; + + TTBXCheckBox = class(TTBXCustomCheckBox) + published ++ property Action; {vb+} + property Align; + property Alignment; + property AllowGrayed; + property Anchors; + property AutoSize; + property BiDiMode; +@@ -800,12 +845,13 @@ + public + constructor Create(AOwner: TComponent); override; + end; + + TTBXRadioButton = class(TTBXCustomRadioButton) + published ++ property Action; {vb+} + property Align; + property Alignment; + property Anchors; + property AutoSize; + property BiDiMode; + property Caption; +@@ -1205,22 +1251,35 @@ + var + NewDockList: TList; + PosData: array of TPosRec; + LeftRight: Boolean; + I, J, K, L, DragIndex, ResizeIndex, ForcedWidth: Integer; + EmptySize, ClientW, ClientH, DockSize, TotalSize, TotalMinimumSize, TotalMaximumSize: Integer; +- DragIndexPos: Integer; ++ {DragIndexPos: Integer;} {vb-} + T: TTBXDockablePanel; + S: TPoint; + CurRowPixel, CurRowSize: Integer; + StretchPanelCount: Integer; + Stretching: Boolean; + AccDelta, Acc: Extended; + Delta, IntAcc: Integer; + MinWidth, MaxWidth, EffectiveMinWidth, EffectiveMaxWidth: Integer; + R: TRect; ++ ++ function IndexOfDraggingToolbar(const List: TList): Integer; {vb+} ++ { Returns index of toolbar in List that's currently being dragged, or -1 } ++ var ++ I: Integer; ++ begin ++ for I := 0 to List.Count-1 do ++ if TTBCustomDockableWindow(List[I]).DragMode then begin ++ Result := I; ++ Exit; ++ end; ++ Result := -1; ++ end; + + procedure GetSizes(Panel: TTBXDockablePanel; out Size, MinSize, MaxSize: Integer); + var + Sz: TPoint; + MinWidth, MinHeight, MaxWidth, MaxHeight: Integer; + begin +@@ -1305,16 +1364,20 @@ + + { Copy DockList to NewDockList, and ensure it is in correct ordering + according to DockRow/DockPos } + NewDockList := TList.Create; + NewDockList.Count := DockList.Count; + for I := 0 to NewDockList.Count - 1 do NewDockList[I] := DockList[I]; +- I := NewDockList.IndexOf(DragToolbar); ++ {I := NewDockList.IndexOf(DragToolbar); {vb-} ++ I := IndexOfDraggingToolbar(NewDockList); {vb+} + ListSortEx(NewDockList, CompareDockPos, nil); +- DragIndex := NewDockList.IndexOf(DragToolbar); +- if (I <> -1) and DragSplitting then ++ {DragIndex := NewDockList.IndexOf(DragToolbar); {vb-} ++ DragIndex := IndexOfDraggingToolbar(NewDockList); {vb+} ++ {if (I <> -1) and DragSplitting then {vb-} ++ if (I <> -1) and ++ TTBCustomDockableWindow(NewDockList[DragIndex]).DragSplitting then {vb+} + begin + { When splitting, don't allow the toolbar being dragged to change + positions in the dock list } + NewDockList.Move(DragIndex, I); + DragIndex := I; + end; +@@ -1345,18 +1408,18 @@ + begin + DragIndex := I; + Break; + end; + + { Count total sizes and set initial positions } +- DragIndexPos := 0; ++ {DragIndexPos := 0;} {vb-} + TotalSize := 0; TotalMinimumSize := 0; TotalMaximumSize := 0; + for I := 0 to Length(PosData) - 1 do + with PosData[I] do + begin +- if I = DragIndex then DragIndexPos := Panel.DockPos; ++ {if I = DragIndex then DragIndexPos := Panel.DockPos;} {vb-} + Pos := TotalSize; + Inc(TotalSize, Size); + Inc(TotalMinimumSize, MinSize); + Inc(TotalMaximumSize, MaxSize); + end; + +@@ -1815,19 +1878,19 @@ + end; + + //----------------------------------------------------------------------------// + + { TTBXDockablePanel } + +-procedure TTBXDockablePanel.AdjustClientRect(var Rect: TRect); ++procedure TTBXCustomDockablePanel.AdjustClientRect(var Rect: TRect); + begin + inherited AdjustClientRect(Rect); + if BorderSize <> 0 then InflateRect(Rect, -BorderSize, -BorderSize); + end; + +-procedure TTBXDockablePanel.BeginDockedSizing(HitTest: Integer); ++procedure TTBXCustomDockablePanel.BeginDockedSizing(HitTest: Integer); + var + OrigPos, OldPos: TPoint; + Msg: TMsg; + DockRect, DragRect, OrigDragRect, OldDragRect: TRect; + NCSizes: TPoint; + EdgeRect, OldEdgeRect: TRect; +@@ -1973,19 +2036,20 @@ + finally + if GetCapture = Handle then ReleaseCapture; + CommitResizing := DoEndDockedResizing(HitTest in [HTTOP, HTBOTTOM]); + if EraseEdgeRect then + begin + DrawDraggingOutline(ScreenDC, Rect(0, 0, 0, 0), OldEdgeRect); +- if CommitResizing then with OldDragRect do +- begin +- BlockSizeUpdate := True; +- if LeftRight then DockedWidth := Right - Left - NCSizes.X +- else DockedHeight := Bottom - Top - NCSizes.Y; +- BlockSizeUpdate := False; +- end; ++ if CommitResizing and not IsRectEmpty(OldDragRect) then ++ with OldDragRect do ++ begin ++ BlockSizeUpdate := True; ++ if LeftRight then DockedWidth := Right - Left - NCSizes.X ++ else DockedHeight := Bottom - Top - NCSizes.Y; ++ BlockSizeUpdate := False; ++ end; + end + else if not CommitResizing then + begin + BlockSizeUpdate := True; + BoundsRect := RectToClient(OrigDragRect); + BlockSizeUpdate := False; +@@ -1997,13 +2061,13 @@ + Form := GetParentForm(Self); + if (Form <> nil) and (Form.Designer <> nil) then Form.Designer.Modified; + end; + end; + end; + +-procedure TTBXDockablePanel.BeginSplitResizing(HitTest: Integer); ++procedure TTBXCustomDockablePanel.BeginSplitResizing(HitTest: Integer); + type + TPosRec = record + Panel: TTBXDockablePanel; + OrigPos, OrigSize, OrigWidth, Pos, Size, MinSize, MaxSize: Integer; + end; + var +@@ -2012,13 +2076,14 @@ + I: Integer; + LeftRight, Smooth, CommitResizing: Boolean; + DockSize, TotalSize, TotalMinSize, TotalMaxSize: Integer; + OrigCursorPos, OldCursorPos: TPoint; + Msg: TMsg; + EffectiveIndex: Integer; +- EffectivePanel: TTBXDockablePanel; ++ {EffectivePanel: TTBXDockablePanel;} {vb-} ++ EffectivePanel: TTBXCustomDockablePanel; {vb+} + PanelRect, DockRect, EdgeRect, OrigEdgeRect, OldEdgeRect: TRect; + EdgePosition: TTBDockPosition; + ScreenDC: HDC; + EraseEdgeRect: Boolean; + Form: TCustomForm; + Delta: Integer; +@@ -2339,13 +2404,13 @@ + Form := GetParentForm(Self); + if (Form <> nil) and (Form.Designer <> nil) then Form.Designer.Modified; + end; + end; + end; + +-function TTBXDockablePanel.CalcNCSizes: TPoint; ++function TTBXCustomDockablePanel.CalcNCSizes: TPoint; + begin + if not Docked then + begin + Result.X := 0; + Result.Y := 0; + end +@@ -2356,13 +2421,13 @@ + if ShowCaptionWhenDocked then + if IsVertCaption then Inc(Result.X, GetSystemMetrics(SM_CYSMCAPTION)) + else Inc(Result.Y, GetSystemMetrics(SM_CYSMCAPTION)); + end; + end; + +-function TTBXDockablePanel.CalcSize(ADock: TTBDock): TPoint; ++function TTBXCustomDockablePanel.CalcSize(ADock: TTBDock): TPoint; + begin + if Assigned(ADock) then + begin + if ADock.Position in [dpLeft, dpRight] then + begin + Result.X := FDockedWidth; +@@ -2395,18 +2460,18 @@ + + Result.X := FFloatingWidth; + Result.Y := FFloatingHeight; + end; + end; + +-function TTBXDockablePanel.CanAutoSize(var NewWidth, NewHeight: Integer): Boolean; ++function TTBXCustomDockablePanel.CanAutoSize(var NewWidth, NewHeight: Integer): Boolean; + begin + Result := True; + end; + +-function TTBXDockablePanel.CanDockTo(ADock: TTBDock): Boolean; ++function TTBXCustomDockablePanel.CanDockTo(ADock: TTBDock): Boolean; + begin + Result := inherited CanDockTo(ADock); + if Result then + begin + if ADock is TTBXMultiDock then + begin +@@ -2416,13 +2481,13 @@ + begin + Result := dkStandardDock in SupportedDocks;; + end; + end; + end; + +-function TTBXDockablePanel.CanSplitResize(EdgePosition: TTBDockPosition): Boolean; ++function TTBXCustomDockablePanel.CanSplitResize(EdgePosition: TTBDockPosition): Boolean; + var + Dock: TDockAccess; + begin + Result := Docked and (CurrentDock is TTBXMultiDock) and HandleAllocated; + if not Result then Exit; + Dock := TDockAccess(CurrentDock); +@@ -2444,60 +2509,64 @@ + else + Result := False; + end; + end; + end; + +-procedure TTBXDockablePanel.CMColorChanged(var Message: TMessage); ++procedure TTBXCustomDockablePanel.CMColorChanged(var Message: TMessage); + begin + UpdateEffectiveColor; + Brush.Color := Color; + if Docked and HandleAllocated then + begin + RedrawWindow(Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or + RDW_ERASE or RDW_UPDATENOW or RDW_ALLCHILDREN); + end; + Invalidate; + UpdateChildColors; + end; + +-procedure TTBXDockablePanel.CMControlChange(var Message: TCMControlChange); ++procedure TTBXCustomDockablePanel.CMControlChange(var Message: TCMControlChange); + begin + inherited; + if Message.Inserting and (Color = clNone) then + Message.Control.Perform(CM_PARENTCOLORCHANGED, 1, EffectiveColor); + end; + +-procedure TTBXDockablePanel.CMTextChanged(var Message: TMessage); ++procedure TTBXCustomDockablePanel.CMTextChanged(var Message: TMessage); + begin + inherited; + if HandleAllocated then + begin + if Docked then RedrawWindow(Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE) + else RedrawWindow(TTBXFloatingWindowParent(Parent).Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE); + end; + end; + +-procedure TTBXDockablePanel.ConstrainedResize(var MinWidth, MinHeight, MaxWidth, MaxHeight: Integer); ++procedure TTBXCustomDockablePanel.ConstrainedResize(var MinWidth, MinHeight, MaxWidth, MaxHeight: Integer); + var + Sz: TPoint; + begin + Sz := CalcNCSizes; + if MinClientWidth > 0 then MinWidth := MinClientWidth + Sz.X; + if MinClientHeight > 0 then MinHeight := MinClientHeight + Sz.Y; + if MaxClientWidth > 0 then MaxWidth := MaxClientWidth + Sz.X; + if MaxClientHeight > 0 then MaxHeight := MaxClientHeight + Sz.Y; + end; + +-constructor TTBXDockablePanel.Create(AOwner: TComponent); ++constructor TTBXCustomDockablePanel.Create(AOwner: TComponent); + begin + inherited; + FMinClientWidth := 32; + FMinClientHeight := 32; + FDockedWidth := 128; + FDockedHeight := 128; ++ FHorzResizeCursor := crSizeWE; {vb+} ++ FHorzSplitCursor := crHSplit; {vb+} ++ FVertResizeCursor := crSizeNS; {vb+} ++ FVertSplitCursor := crVSplit; {vb+} + CloseButtonWhenDocked := True; + DblClickUndock := False; + FShowCaptionWhenDocked := True; + FSmoothDockedResize := True; + BlockSizeUpdate := True; + SetBounds(Left, Top, 128, 128); +@@ -2505,36 +2574,36 @@ + FullSize := True; + Color := clNone; + AddThemeNotification(Self); + SupportedDocks := [dkStandardDock, dkMultiDock]; + end; + +-destructor TTBXDockablePanel.Destroy; ++destructor TTBXCustomDockablePanel.Destroy; + begin + RemoveThemeNotification(Self); + inherited; + end; + +-function TTBXDockablePanel.DoArrange(CanMoveControls: Boolean; ++function TTBXCustomDockablePanel.DoArrange(CanMoveControls: Boolean; + PreviousDockType: TTBDockType; NewFloating: Boolean; NewDock: TTBDock): TPoint; + begin + Result := CalcSize(NewDock); + end; + +-function TTBXDockablePanel.DoBeginDockedResizing(Vertical: Boolean): Boolean; ++function TTBXCustomDockablePanel.DoBeginDockedResizing(Vertical: Boolean): Boolean; + var + Sz: Integer; + begin + Result := True; + if Vertical then Sz := Height else Sz := Width; + if Assigned(FOnDockedResizing) then FOnDockedResizing(Self, Vertical, Sz, rsBeginResizing, Result); + if Result then + if Vertical then Height := Sz else Width := Sz; + end; + +-function TTBXDockablePanel.DoDockedResizing(Vertical: Boolean; var NewSize: Integer): Boolean; ++function TTBXCustomDockablePanel.DoDockedResizing(Vertical: Boolean; var NewSize: Integer): Boolean; + const + MIN_PARENT_CLIENT_SIZE = 32; + var + NCSizes: TPoint; + CW, CH: Integer; + DockParent: TWinControl; +@@ -2564,25 +2633,25 @@ + NewSize := CH + NCSizes.Y; + end; + Result := True; + if Assigned(FOnDockedResizing) then FOnDockedResizing(Self, Vertical, NewSize, rsResizing, Result); + end; + +-function TTBXDockablePanel.DoEndDockedResizing(Vertical: Boolean): Boolean; ++function TTBXCustomDockablePanel.DoEndDockedResizing(Vertical: Boolean): Boolean; + var + Sz: Integer; + begin + Result := True; + if Vertical then Sz := Height else Sz := Width; + if Assigned(FOnDockedResizing) then + FOnDockedResizing(Self, Vertical, Sz, rsEndResizing, Result); + if Result then + if Vertical then Height := Sz else Width := Sz; + end; + +-procedure TTBXDockablePanel.DrawNCArea(const DrawToDC: Boolean; ++procedure TTBXCustomDockablePanel.DrawNCArea(const DrawToDC: Boolean; + const ADC: HDC; const Clip: HRGN); + var + DC: HDC; + R, CR: TRect; + ACanvas: TCanvas; + Sz: Integer; +@@ -2628,18 +2697,18 @@ + end; + finally + if not DrawToDC then ReleaseDC(Handle, DC); + end; + end; + +-procedure TTBXDockablePanel.GetBaseSize(var ASize: TPoint); ++procedure TTBXCustomDockablePanel.GetBaseSize(var ASize: TPoint); + begin + ASize := CalcSize(CurrentDock); + end; + +-function TTBXDockablePanel.GetDockedCloseButtonRect(LeftRight: Boolean): TRect; ++function TTBXCustomDockablePanel.GetDockedCloseButtonRect(LeftRight: Boolean): TRect; + var + X, Y, Z: Integer; + begin + Z := GetSystemMetrics(SM_CYSMCAPTION) - 1; + if LeftRight or not IsVertCaption then + begin +@@ -2651,13 +2720,13 @@ + X := DockedBorderSize; + Y := ClientHeight + DockedBorderSize - Z; + end; + Result := Bounds(X, Y, Z, Z); + end; + +-procedure TTBXDockablePanel.GetDockPanelInfo(out DockPanelInfo: TTBXDockPanelInfo); ++procedure TTBXCustomDockablePanel.GetDockPanelInfo(out DockPanelInfo: TTBXDockPanelInfo); + begin + FillChar(DockPanelInfo, SizeOf(DockPanelInfo), 0); + DockPanelInfo.WindowHandle := WindowHandle; + DockPanelInfo.ViewType := GetViewType; + if CurrentDock <> nil then DockPanelInfo.IsVertical := not IsVertCaption; + DockPanelInfo.AllowDrag := CurrentDock.AllowDrag; +@@ -2672,105 +2741,105 @@ + DockPanelInfo.CloseButtonState := CDBS_VISIBLE; + if CloseButtonDown then DockPanelInfo.CloseButtonState := DockPanelInfo.CloseButtonState or CDBS_PRESSED; + if CloseButtonHover then DockPanelInfo.CloseButtonState := DockPanelInfo.CloseButtonState or CDBS_HOT; + end; + end; + +-function TTBXDockablePanel.GetFloatingBorderSize: TPoint; ++function TTBXCustomDockablePanel.GetFloatingBorderSize: TPoint; + begin + CurrentTheme.GetViewBorder(GetViewType or DPVT_FLOATING, Result); + end; + +-function TTBXDockablePanel.GetFloatingWindowParentClass: TTBFloatingWindowParentClass; ++function TTBXCustomDockablePanel.GetFloatingWindowParentClass: TTBFloatingWindowParentClass; + begin + Result := TTBXFloatingWindowParent; + end; + +-procedure TTBXDockablePanel.GetMinMaxSize(var AMinClientWidth, AMinClientHeight, ++procedure TTBXCustomDockablePanel.GetMinMaxSize(var AMinClientWidth, AMinClientHeight, + AMaxClientWidth, AMaxClientHeight: Integer); + begin + AMinClientWidth := FMinClientWidth; + AMinClientHeight := FMinClientHeight; + AMaxClientWidth := FMaxClientWidth; + AMaxClientHeight := FMaxClientHeight; + end; + +-function TTBXDockablePanel.GetViewType: Integer; ++function TTBXCustomDockablePanel.GetViewType: Integer; + begin + Result := DPVT_NORMAL; + if Floating then Result := Result or DPVT_FLOATING; + if Resizable then Result := Result or DPVT_RESIZABLE; + end; + +-function TTBXDockablePanel.IsVertCaption: Boolean; ++function TTBXCustomDockablePanel.IsVertCaption: Boolean; + begin + case CaptionRotation of + dpcrAlwaysHorz: Result := False; + dpcrAlwaysVert: Result := Docked; + else // dpcrAuto: + Result := Docked and (CurrentDock.Position in [dpTop, dpBottom]); + end; + end; + +-procedure TTBXDockablePanel.Loaded; ++procedure TTBXCustomDockablePanel.Loaded; + begin + inherited; + UpdateChildColors; + end; + +-procedure TTBXDockablePanel.Paint; ++procedure TTBXCustomDockablePanel.Paint; + begin + if csDesigning in ComponentState then with Canvas do + begin + Pen.Style := psDot; + Pen.Color := clBtnShadow; + Brush.Style := bsClear; + with ClientRect do Rectangle(Left, Top, Right, Bottom); + Pen.Style := psSolid; + end; + end; + +-procedure TTBXDockablePanel.ReadPositionData(const Data: TTBReadPositionData); ++procedure TTBXCustomDockablePanel.ReadPositionData(const Data: TTBReadPositionData); + begin + with Data do + begin + FDockedWidth := ReadIntProc(Name, rvDockedWidth, FDockedWidth, ExtraData); + FDockedHeight := ReadIntProc(Name, rvDockedHeight, FDockedHeight, ExtraData); + FFloatingWidth := ReadIntProc(Name, rvFloatingWidth, FFloatingWidth, ExtraData); + FFloatingHeight := ReadIntProc(Name, rvFloatingHeight, FFloatingHeight, ExtraData); + FSplitWidth := ReadIntProc(Name, rvSplitWidth, FSplitWidth, ExtraData); + FSplitHeight := ReadIntProc(Name, rvSplitHeight, FSplitHeight, ExtraData); + end; + end; + +-procedure TTBXDockablePanel.SetBorderSize(Value: Integer); ++procedure TTBXCustomDockablePanel.SetBorderSize(Value: Integer); + begin + if FBorderSize <> Value then + begin + FBorderSize := Value; + Realign; + end; + end; + +-procedure TTBXDockablePanel.SetBounds(ALeft, ATop, AWidth, AHeight: Integer); ++procedure TTBXCustomDockablePanel.SetBounds(ALeft, ATop, AWidth, AHeight: Integer); + begin + inherited SetBounds(ALeft, ATop, AWidth, AHeight); + end; + +-procedure TTBXDockablePanel.SetCaptionRotation(Value: TDPCaptionRotation); ++procedure TTBXCustomDockablePanel.SetCaptionRotation(Value: TDPCaptionRotation); + begin + if FCaptionRotation <> Value then + begin + FCaptionRotation := Value; + if Docked and HandleAllocated then + SetWindowPos(Handle, 0, 0, 0, 0, 0, SWP_FRAMECHANGED or + SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE or SWP_NOZORDER); + end; + end; + +-procedure TTBXDockablePanel.SetDockedHeight(Value: Integer); ++procedure TTBXCustomDockablePanel.SetDockedHeight(Value: Integer); + begin + if Value < MinClientHeight then Value := MinClientHeight; + if Value <> FDockedHeight then + begin + FDockedHeight := Value; + if Docked and (CurrentDock.Position in [dpTop, dpBottom]) then +@@ -2779,13 +2848,13 @@ + Height := Value + CalcNCSizes.Y; + BlockSizeUpdate := False; + end; + end; + end; + +-procedure TTBXDockablePanel.SetDockedWidth(Value: Integer); ++procedure TTBXCustomDockablePanel.SetDockedWidth(Value: Integer); + begin + if Value < MinClientWidth then Value := MinClientWidth; + if Value <> FDockedWidth then + begin + FDockedWidth := Value; + if Docked and (CurrentDock.Position in [dpLeft, dpRight]) then +@@ -2794,13 +2863,13 @@ + Width := Value + CalcNCSizes.X; + BlockSizeUpdate := False; + end; + end; + end; + +-procedure TTBXDockablePanel.SetFloatingHeight(Value: Integer); ++procedure TTBXCustomDockablePanel.SetFloatingHeight(Value: Integer); + begin + { FloatingHeight (and floating width) can be set to 0 while panel is docked. + This will force to restore floating dimensions from docked size } + if Value < 0 then Value := 0; + if not Docked and (Value < MinClientHeight) then Value := MinClientHeight; + if Value <> FFloatingHeight then +@@ -2812,13 +2881,13 @@ + Height := Value + CalcNCSizes.Y; + BlockSizeUpdate := False; + end; + end; + end; + +-procedure TTBXDockablePanel.SetFloatingWidth(Value: Integer); ++procedure TTBXCustomDockablePanel.SetFloatingWidth(Value: Integer); + begin + { See comment for TTBXDockablePanel.SetFloatingHeight } + if Value < 0 then Value := 0; + if not Docked and (Value < MinClientWidth) then Value := MinClientWidth; + if Value <> FFloatingWidth then + begin +@@ -2829,32 +2898,32 @@ + Width := Value + CalcNCSizes.X; + BlockSizeUpdate := False; + end; + end; + end; + +-procedure TTBXDockablePanel.SetMinClientHeight(Value: Integer); ++procedure TTBXCustomDockablePanel.SetMinClientHeight(Value: Integer); + begin + if Value < 8 then Value := 8; + FMinClientHeight := Value; + end; + +-procedure TTBXDockablePanel.SetMinClientWidth(Value: Integer); ++procedure TTBXCustomDockablePanel.SetMinClientWidth(Value: Integer); + begin + if Value < 8 then Value := 8; + FMinClientWidth := Value; + end; + +-procedure TTBXDockablePanel.SetParent(AParent: TWinControl); ++procedure TTBXCustomDockablePanel.SetParent(AParent: TWinControl); + begin + inherited; + if AParent is TTBXFloatingWindowParent then + TTBXFloatingWindowParent(AParent).SnapDistance := SnapDistance; + end; + +-procedure TTBXDockablePanel.SetShowCaptionWhenDocked(Value: Boolean); ++procedure TTBXCustomDockablePanel.SetShowCaptionWhenDocked(Value: Boolean); + begin + if FShowCaptionWhenDocked <> Value then + begin + FShowCaptionWhenDocked := Value; + if Docked then + begin +@@ -2862,43 +2931,43 @@ + SetWindowPos(Handle, 0, 0, 0, 0, 0, SWP_FRAMECHANGED or + SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE or SWP_NOZORDER); + end; + end; + end; + +-procedure TTBXDockablePanel.SetSnapDistance(Value: Integer); ++procedure TTBXCustomDockablePanel.SetSnapDistance(Value: Integer); + begin + if Value < 0 then Value := 0; + FSnapDistance := Value; + if (Parent <> nil) and (Parent is TTBXFloatingWindowParent) then + TTBXFloatingWindowParent(Parent).SnapDistance := Value; + end; + +-procedure TTBXDockablePanel.SetSplitHeight(Value: Integer); ++procedure TTBXCustomDockablePanel.SetSplitHeight(Value: Integer); + begin + if Value < 0 then Value := 0; + if FSplitHeight <> Value then + begin + FSplitHeight := Value; + if Docked and (CurrentDock.Position in [dpLeft, dpRight]) and + (CurrentDock is TTBXMultiDock) then CurrentDock.ArrangeToolbars; + end; + end; + +-procedure TTBXDockablePanel.SetSplitWidth(Value: Integer); ++procedure TTBXCustomDockablePanel.SetSplitWidth(Value: Integer); + begin + if Value < 0 then Value := 0; + if FSplitWidth <> Value then + begin + FSplitWidth := Value; + if Docked and (CurrentDock.Position in [dpTop, dpBottom]) and + (CurrentDock is TTBXMultiDock) then CurrentDock.ArrangeToolbars; + end; + end; + +-procedure TTBXDockablePanel.SizeChanging(const AWidth, AHeight: Integer); ++procedure TTBXCustomDockablePanel.SizeChanging(const AWidth, AHeight: Integer); + begin + if not BlockSizeUpdate then + begin + if Docked and (CurrentDock.Position in [dpLeft, dpRight]) then + FDockedWidth := AWidth - CalcNCSizes.X + else if Floating then +@@ -2908,24 +2977,24 @@ + FDockedHeight := AHeight - CalcNCSizes.Y + else if Floating then + FFloatingHeight := AHeight - CalcNCSizes.Y; + end; + end; + +-procedure TTBXDockablePanel.TBMGetEffectiveColor(var Message: TMessage); ++procedure TTBXCustomDockablePanel.TBMGetEffectiveColor(var Message: TMessage); + begin + Message.WParam := EffectiveColor; + Message.Result := 1; + end; + +-procedure TTBXDockablePanel.TBMGetViewType(var Message: TMessage); ++procedure TTBXCustomDockablePanel.TBMGetViewType(var Message: TMessage); + begin + Message.Result := GetViewType; + end; + +-procedure TTBXDockablePanel.TBMThemeChange(var Message: TMessage); ++procedure TTBXCustomDockablePanel.TBMThemeChange(var Message: TMessage); + var + M: TMessage; + begin + case Message.WParam of + TSC_BEFOREVIEWCHANGE: BeginUpdate; + TSC_AFTERVIEWCHANGE: +@@ -2947,53 +3016,53 @@ + M.Result := 0; + Broadcast(M); + end; + end; + end; + +-procedure TTBXDockablePanel.UpdateChildColors; ++procedure TTBXCustomDockablePanel.UpdateChildColors; + var + M: TMessage; + begin + M.Msg := CM_PARENTCOLORCHANGED; + M.WParam := 1; + M.LParam := EffectiveColor; + M.Result := 0; + Broadcast(M); + end; + +-procedure TTBXDockablePanel.UpdateEffectiveColor; ++procedure TTBXCustomDockablePanel.UpdateEffectiveColor; + begin + if Color = clNone then FEffectiveColor := CurrentTheme.GetViewColor(GetViewType) + else FEffectiveColor := Color; + end; + +-procedure TTBXDockablePanel.WMEraseBkgnd(var Message: TWMEraseBkgnd); ++procedure TTBXCustomDockablePanel.WMEraseBkgnd(var Message: TWMEraseBkgnd); + var + BRUSH: HBRUSH; + begin + BRUSH := CreateSolidBrush(ColorToRGB(EffectiveColor)); + FillRect(Message.DC, Clientrect, BRUSH); + DeleteObject(BRUSH); + Message.Result := 1; + end; + +-procedure TTBXDockablePanel.WMNCCalcSize(var Message: TWMNCCalcSize); ++procedure TTBXCustomDockablePanel.WMNCCalcSize(var Message: TWMNCCalcSize); + begin + Message.Result := 0; + if Docked then + with Message.CalcSize_Params^ do + begin + InflateRect(rgrc[0], -DockedBorderSize, -DockedBorderSize); + if ShowCaptionWhenDocked then + if IsVertCaption then Inc(rgrc[0].Left, GetSystemMetrics(SM_CYSMCAPTION)) + else Inc(rgrc[0].Top, GetSystemMetrics(SM_CYSMCAPTION)) + end; + end; + +-procedure TTBXDockablePanel.WMNCHitTest(var Message: TWMNCHitTest); ++procedure TTBXCustomDockablePanel.WMNCHitTest(var Message: TWMNCHitTest); + const + CResizeMargin = 2; + var + P: TPoint; + R: TRect; + Sz: Integer; +@@ -3072,13 +3141,13 @@ + end; + end; + end + else inherited; + end; + +-procedure TTBXDockablePanel.WMNCLButtonDown(var Message: TWMNCLButtonDown); ++procedure TTBXCustomDockablePanel.WMNCLButtonDown(var Message: TWMNCLButtonDown); + var + OldCursor: HCURSOR; + begin + if Message.HitTest in [HTLEFT..HTBOTTOM] then BeginDockedSizing(Message.HitTest) + else if Message.HitTest in [HT_TBX_SPLITRESIZELEFT..HT_TBX_SPLITRESIZEBOTTOM] then BeginSplitResizing(Message.HitTest) + else +@@ -3093,42 +3162,66 @@ + end; + end + else inherited; + end; + end; + +-procedure TTBXDockablePanel.WMSetCursor(var Message: TWMSetCursor); ++procedure TTBXCustomDockablePanel.WMSetCursor(var Message: TWMSetCursor); ++var Cur: TCursor; {vb+} + begin +- if Docked and CurrentDock.AllowDrag and +- (Message.CursorWnd = WindowHandle) and +- (Smallint(Message.HitTest) = HT_TB2k_Border) and +- ShowCaptionWhenDocked then +- begin +- SetCursor(LoadCursor(0, IDC_ARROW)); +- Message.Result := 1; +- Exit; +- end +- else if Docked and CurrentDock.AllowDrag and (Message.CursorWnd = WindowHandle) then +- begin +- if (Message.HitTest = HT_TBX_SPLITRESIZELEFT) or (Message.HitTest = HT_TBX_SPLITRESIZERIGHT) then +- begin +- SetCursor(LoadCursor(0, IDC_SIZEWE)); +- Message.Result := 1; +- Exit; +- end +- else if (Message.HitTest = HT_TBX_SPLITRESIZETOP) or (Message.HitTest = HT_TBX_SPLITRESIZEBOTTOM) then ++ {if Docked and CurrentDock.AllowDrag and ++ (Message.CursorWnd = WindowHandle) and ++ (Smallint(Message.HitTest) = HT_TB2k_Border) and ++ ShowCaptionWhenDocked then ++ begin ++ SetCursor(LoadCursor(0, IDC_ARROW)); ++ Message.Result := 1; ++ Exit; ++ end ++ else if Docked and CurrentDock.AllowDrag and (Message.CursorWnd = WindowHandle) then ++ begin ++ if (Message.HitTest = HT_TBX_SPLITRESIZELEFT) or (Message.HitTest = HT_TBX_SPLITRESIZERIGHT) then ++ begin ++ SetCursor(LoadCursor(0, IDC_SIZEWE)); ++ Message.Result := 1; ++ Exit; ++ end ++ else if (Message.HitTest = HT_TBX_SPLITRESIZETOP) or (Message.HitTest = HT_TBX_SPLITRESIZEBOTTOM) then ++ begin ++ SetCursor(LoadCursor(0, IDC_SIZENS)); ++ Message.Result := 1; ++ Exit; ++ end; ++ end; } {vb-} ++ if Docked and CurrentDock.AllowDrag and ++ (Message.CursorWnd = WindowHandle) then ++ begin ++ Cur := crNone; ++ case Message.HitTest of ++ HTLEFT, HTRIGHT: ++ Cur := HorzResizeCursor; ++ HTTOP, HTBOTTOM: ++ Cur := VertResizeCursor; ++ HT_TBX_SPLITRESIZELEFT, HT_TBX_SPLITRESIZERIGHT: ++ Cur := HorzSplitCursor; ++ HT_TBX_SPLITRESIZETOP, HT_TBX_SPLITRESIZEBOTTOM: ++ Cur := VertSplitCursor; ++ HT_TB2k_Border: ++ if ShowCaptionWhenDocked then Cur := crArrow; ++ end; ++ if Cur <> crNone then + begin +- SetCursor(LoadCursor(0, IDC_SIZENS)); ++ SetCursor(Screen.Cursors[Cur]); + Message.Result := 1; + Exit; + end; + end; + inherited; + end; + +-procedure TTBXDockablePanel.WMWindowPosChanged(var Message: TWMWindowPosChanged); ++procedure TTBXCustomDockablePanel.WMWindowPosChanged(var Message: TWMWindowPosChanged); + begin + inherited; + if (Message.WindowPos^.flags and SWP_NOSIZE) = 0 then + begin + Realign; + Update; +@@ -3137,13 +3230,13 @@ + begin + UpdateEffectiveColor; + UpdateChildColors; + end; + end; + +-procedure TTBXDockablePanel.WritePositionData(const Data: TTBWritePositionData); ++procedure TTBXCustomDockablePanel.WritePositionData(const Data: TTBWritePositionData); + begin + with Data do + begin + WriteIntProc(Name, rvDockedWidth, FDockedWidth, ExtraData); + WriteIntProc(Name, rvDockedHeight, FDockedHeight, ExtraData); + WriteIntProc(Name, rvFloatingWidth, FFloatingWidth, ExtraData); +@@ -3214,13 +3307,13 @@ + AdjustHeight; + end; + + constructor TTBXTextObject.Create(AOwner: TComponent); + begin + inherited; +- ControlStyle := ControlStyle + [csSetCaption] - [csDoubleClicks]; ++ ControlStyle := ControlStyle + [csSetCaption, csDoubleClicks]; + FMargins := TTBXControlMargins.Create; + FMargins.OnChange := MarginsChangeHandler; + FShowAccelChar := True; + PaintOptions := [cpoDoubleBuffered]; + AutoSize := True; + Width := 100; +--- TBXExtItems.pas 2004-05-25 22:02:56.000000000 +-0400 ++++ TBXExtItems.pas 2005-08-11 13:41:06.000000000 +-0400 +@@ -645,13 +645,14 @@ + begin + Edit.Text := S2; + Edit.SelStart := Length(S); + Edit.SelLength := Length(S2) - Length(S); + S := S2; + end; +- if S <> FLastEditChange then ++ {if S <> FLastEditChange then} {vb-} ++ if AnsiCompareText(S, FLastEditChange) <> 0 then {vb+} + begin + DoChange(S); // note, Edit.Text may be different from Self.Text + FLastEditChange := S; + end; + finally + FIsChanging := False; +@@ -1121,13 +1122,16 @@ + function TTBXDropDownItemViewer.HandleEditMessage(var Message: TMessage): Boolean; + begin + if Message.Msg = WM_KEYDOWN then + begin + if TWMKeyDown(Message).CharCode = VK_F4 then + begin +- TTBViewAccess(View).OpenChildPopup(True); ++ {TTBViewAccess(View).OpenChildPopup(True);} {vb-} ++ if (View.OpenViewer = Self) // WasAlreadyOpen {vb+} ++ then View.CloseChildPopups ++ else View.OpenChildPopup(True); + Result := True; + Exit; + end; + end; + + Result := inherited HandleEditMessage(Message); +@@ -1399,21 +1403,23 @@ + begin + if (Message.Msg = WM_KEYDOWN) then with TTBXComboBoxItem(Item) do + begin + case Message.wParam of + VK_UP: + begin +- ItemIndex := ItemIndex - 1; ++ if ItemIndex > 0 then {vb+} ++ ItemIndex := ItemIndex- 1; + EditControl.Text := Text; + EditControl.SelectAll; + Result := True; + end; + + VK_DOWN: + begin +- ItemIndex := ItemIndex + 1; ++ if ItemIndex < Strings.Count- 1 then {vb+} ++ ItemIndex := ItemIndex+ 1; + EditControl.Text := Text; + EditControl.SelectAll; + Result := True; + end; + else + Result := inherited HandleEditMessage(Message); +--- TBXLists.pas 2004-02-21 02:07:54.000000000 +-0400 ++++ TBXLists.pas 2005-08-07 00:27:10.000000000 +-0400 +@@ -188,12 +188,14 @@ + procedure MouseMove(X, Y: Integer); override; + procedure MouseUp(X, Y: Integer; MouseWasDownOnMenu: Boolean); override; + procedure MouseWheel(WheelDelta: Integer; X, Y: Integer); override; + procedure Paint(const Canvas: TCanvas; const ClientAreaRect: TRect; IsHoverItem, IsPushed, UseDisabledShadow: Boolean); override; + procedure UpdateItems; + property HoverIndex: Integer read FHoverIndex write FHoverIndex; ++ property Offset: Integer read FOffset; {vb+} ++ property VisibleItems: Integer read FVisibleItems; {vb+} + public + constructor Create(AView: TTBView; AItem: TTBCustomItem; AGroupLevel: Integer); override; + destructor Destroy; override; + end; + + { TTBXStringList } +--- TBXOfficeXPTheme.pas 2004-05-25 22:02:56.000000000 +-0400 ++++ TBXOfficeXPTheme.pas 2005-08-05 17:41:38.000000000 +-0400 +@@ -11,12 +11,14 @@ + {$I TB2Ver.inc} + {$I TBX.inc} + + uses + Windows, Messages, Graphics, TBXThemes, TBXDefaultTheme, ImgList; + ++{$DEFINE ALTERNATIVE_DISABLED_STYLE} // remove the asterisk to change appearance of disabled images ++ + type + TItemPart = (ipBody, ipText, ipFrame); + TBtnItemState = (bisNormal, bisDisabled, bisSelected, bisPressed, bisHot, + bisDisabledHot, bisSelectedHot, bisPopupParent); + TMenuItemState = (misNormal, misDisabled, misHot, misDisabledHot); + TWinFramePart = (wfpBorder, wfpCaption, wfpCaptionText); +@@ -361,19 +363,29 @@ + Brush.Style := bsSolid; + end; + end; + + procedure TTBXOfficeXPTheme.PaintCheckMark(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); + var ++ DC: HDC; + X, Y: Integer; ++ C: TColor; + begin +- X := (ARect.Left + ARect.Right) div 2 - 2; ++ DC := Canvas.Handle; ++ X := (ARect.Left + ARect.Right) div 2 - 1; + Y := (ARect.Top + ARect.Bottom) div 2 + 1; +- Canvas.Pen.Color := GetBtnColor(ItemInfo, ipText); +- Canvas.Polyline([Point(X-2, Y-2), Point(X, Y), Point(X+4, Y-4), +- Point(X+4, Y-3), Point(X, Y+1), Point(X-2, Y-1), Point(X-2, Y-2)]); ++ C := GetBtnColor(ItemInfo, ipText); ++ if ItemInfo.ItemOptions and IO_RADIO > 0 then ++ begin ++ RoundRectEx(DC, X-2, Y-4, X+4, Y+2, 2, 2, ++ MixColors(C, ToolbarColor, 200), clNone); ++ RoundRectEx(DC, X-2, Y-4, X+4, Y+2, 6, 6, C, C); ++ end ++ else ++ PolylineEx(DC, [Point(X-2, Y-2), Point(X, Y), Point(X+4, Y-4), ++ Point(X+4, Y-3), Point(X, Y+1), Point(X-2, Y-1), Point(X-2, Y-2)], C); + end; + + procedure TTBXOfficeXPTheme.PaintChevron(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); + const + Pattern: array[Boolean, 0..15] of Byte = ( + ($CC, 0, $66, 0, $33, 0, $66, 0, $CC, 0, 0, 0, 0, 0, 0, 0), +--- TBXReg.pas 2004-05-25 22:02:56.000000000 +-0400 ++++ TBXReg.pas 2004-12-16 20:22:26.000000000 +-0400 +@@ -432,12 +432,13 @@ + {$ENDIF} + + + RegisterComponentEditor(TTBXToolbar, TTBXItemsEditor); + RegisterComponentEditor(TTBXPopupMenu, TTBXItemsEditor); + RegisterPropertyEditor(TypeInfo(string), TTBXCustomItem, 'Caption', TMLStringProperty); ++ RegisterPropertyEditor(TypeInfo(string), TTBXCustomItem, 'Hint', TMLStringProperty); + RegisterPropertyEditor(TypeInfo(string), TTBXLabelItem, 'Caption', TCaptionProperty); + RegisterPropertyEditor(TypeInfo(string), TTBToolbar, 'ChevronHint', TMLStringProperty); + RegisterPropertyEditor(TypeInfo(string), TTBXToolbar, 'ChevronHint', TMLStringProperty); + RegisterPropertyEditor(TypeInfo(string), TTBXSwitcher, 'Theme', TThemeProperty); + {$IFDEF JR_D5} + RegisterPropertyEditor(TypeInfo(TImageIndex), TTBXCustomLink, 'ImageIndex', TTBXLinkImageIndexPropertyEditor); +--- TBXStrEdit.pas 2004-02-21 02:07:54.000000000 +-0400 ++++ TBXStrEdit.pas 2005-08-12 10:11:16.000000000 +-0400 +@@ -29,15 +29,15 @@ + procedure TStrEditDlg.ArrangeControls; + var + R, B: TRect; + W, H: Integer; + begin + R := ClientRect; +- InflateRect(R, -16, -16); ++ InflateRect(R, -6, -6); + B := R; +- W := 60; H := 23; ++ W := 70; H := 23; + B.Left := B.Right - W; + B.Top := B.Bottom - H; + Cancel.BoundsRect := B; + B.Right := B.Left - 4; + B.Left := B.Right - W; + OK.BoundsRect := B; +@@ -46,33 +46,38 @@ + end; + + constructor TStrEditDlg.Create(AOwner: TComponent); + begin + inherited CreateNew(AOwner); + AutoScroll := False; ++ Constraints.MinHeight := 200; ++ Constraints.MinWidth := 300; + Scaled := False; + Position := poScreenCenter; + Memo := TMemo.Create(Self); + with Memo do + begin + ScrollBars := ssBoth; + OnKeyDown := MemoKeyDown; ++ Parent := Self; + end; + OK := TButton.Create(Self); + with OK do + begin + Caption := 'OK'; + Default := True; + ModalResult := mrOk; ++ Parent := Self; + end; + Cancel := TButton.Create(Self); + with Cancel do + begin + Cancel := True; + Caption := 'Cancel'; + ModalResult := mrCancel; ++ Parent := Self; + end; + end; + + procedure TStrEditDlg.MemoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); + begin + if Key = VK_ESCAPE then Cancel.Click; +--- TBXThemes.pas 2004-05-25 22:02:56.000000000 +-0400 ++++ TBXThemes.pas 2004-12-17 08:47:16.000000000 +-0400 +@@ -100,12 +100,13 @@ + const + IO_TOOLBARSTYLE = $01; + IO_SUBMENUITEM = $04; + IO_COMBO = $08; + IO_DESIGNING = $10; + IO_APPACTIVE = $20; // True when Application.Active = True ++ IO_RADIO = $40; + + { Drag handle styles } + const + DHS_DOUBLE = 0; + DHS_NONE = 1; + DHS_SINGLE = 2; +--- TBXUtils.pas 2004-04-01 03:22:58.000000000 +-0400 ++++ TBXUtils.pas 2005-08-14 04:51:58.000000000 +-0400 +@@ -21,12 +21,15 @@ + function EscapeAmpersandsW(const S: WideString): WideString; + function FindAccelCharW(const S: WideString): WideChar; + function StripAccelCharsW(const S: WideString): WideString; + function StripTrailingPunctuationW(const S: WideString): WideString; + {$ENDIF} + ++{$IFNDEF JR_D6} ++function CheckWin32Version(AMajor, AMinor: Integer = 0): Boolean; {vb+} ++{$ENDIF} + procedure GetRGB(C: TColor; out R, G, B: Integer); + function MixColors(C1, C2: TColor; W1: Integer): TColor; + function SameColors(C1, C2: TColor): Boolean; + function Lighten(C: TColor; Amount: Integer): TColor; + function NearestLighten(C: TColor; Amount: Integer): TColor; + function NearestMixedColor(C1, C2: TColor; W1: Integer): TColor; +@@ -47,12 +50,14 @@ + function CreateDitheredBrush(C1, C2: TColor): HBrush; + function FillRectEx(DC: HDC; const Rect: TRect; Color: TColor): Boolean; {$IFDEF COMPATIBLE_GFX}overload;{$ENDIF} + function FrameRectEx(DC: HDC; var Rect: TRect; Color: TColor; Adjust: Boolean): Boolean; {$IFDEF COMPATIBLE_GFX}overload;{$ENDIF} + procedure DrawLineEx(DC: HDC; X1, Y1, X2, Y2: Integer; Color: TColor); {$IFDEF COMPATIBLE_GFX}overload;{$ENDIF} + function PolyLineEx(DC: HDC; const Points: array of TPoint; Color: TColor): Boolean; + procedure PolygonEx(DC: HDC; const Points: array of TPoint; OutlineColor, FillColor: TColor); ++procedure RoundRectEx(DC: HDC; Left, Top, Right, Bottom: Integer; EllipseWidth, EllipseHeight, OutlineColor, FillColor: TColor); overload; {vb+} ++procedure RoundRectEx(DC: HDC; const R: TRect; EllipseWidth, EllipseHeight, OutlineColor, FillColor: TColor); overload; {vb+} + procedure DitherRect(DC: HDC; const R: TRect; C1, C2: TColor); {$IFDEF COMPATIBLE_GFX}overload;{$ENDIF} + procedure Frame3D(DC: HDC; var Rect: TRect; TopColor, BottomColor: TColor; Adjust: Boolean); {$IFDEF COMPATIBLE_GFX}overload;{$ENDIF} + procedure DrawDraggingOutline(DC: HDC; const NewRect, OldRect: TRect); + + { Gradients } + type +@@ -393,13 +398,19 @@ + else if (L > 3) and (Result[L - 2] = '.') and (Result[L - 1] = '.') and + (Result[L] = '.') then SetLength(Result, L - 3); + end; + + {$ENDIF} + +- ++{$IFNDEF JR_D6} ++function CheckWin32Version(AMajor, AMinor: Integer = 0): Boolean; {vb+} ++begin ++ Result := (Win32MajorVersion > AMajor) or ++ ((Win32MajorVersion = AMajor) and (Win32MinorVersion >= AMinor)); ++end; ++{$ENDIF} + + type + PPoints = ^TPoints; + TPoints = array [0..0] of TPoint; + + const +@@ -541,13 +552,13 @@ + begin + i1 := ColorDistance(AColor, $000000); + i2 := ColorDistance(ABkgndColor, $000000); + Threshold := GetAdjustedThreshold(i2, Threshold); + + if i1 > i2 then DoInvert := i2 < 442 - Threshold +- else DoInvert := i2 < Threshold; ++ else DoInvert := i2 < Threshold; + + x := (ABkgndColor and $FF) * WeightR; + y := (ABkgndColor shr 8 and $FF) * WeightG; + z := (ABkgndColor shr 16) * WeightB; + + r := (AColor and $FF) * WeightR; +@@ -728,27 +739,31 @@ + begin + if Color = clNone then + begin + LB.lbStyle := BS_HOLLOW; + Result := CreateBrushIndirect(LB); + end +- else if Color < 0 then Result := GetSysColorBrush(Color and $000000FF) +- else Result := CreateSolidBrush(Color); ++ {else if Color < 0 then Result := GetSysColorBrush(Color and $000000FF)} {vb-} ++ else begin {vb+} ++ if Color < 0 then Color := GetSysColor(Color and $000000FF); ++ Result := CreateSolidBrush(Color); ++ end; + end; + + function FillRectEx(DC: HDC; const Rect: TRect; Color: TColor): Boolean; + var + Brush: HBRUSH; + begin + Result := Color <> clNone; + if Result then + begin + if Color < 0 then Brush := GetSysColorBrush(Color and $000000FF) + else Brush := CreateSolidBrush(Color); + Windows.FillRect(DC, Rect, Brush); +- DeleteObject(Brush); ++ {DeleteObject(Brush);} {vb-} ++ if Color >= 0 then DeleteObject(Brush); {vb+} + end; + end; + + function FrameRectEx(DC: HDC; var Rect: TRect; Color: TColor; Adjust: Boolean): Boolean; + var + Brush: HBRUSH; +@@ -756,13 +771,14 @@ + Result := Color <> clNone; + if Result then + begin + if Color < 0 then Brush := GetSysColorBrush(Color and $000000FF) + else Brush := CreateSolidBrush(Color); + Windows.FrameRect(DC, Rect, Brush); +- DeleteObject(Brush); ++ {DeleteObject(Brush);} {vb-} ++ if Color >= 0 then DeleteObject(Brush); {vb+} + end; + if Adjust then with Rect do + begin + Inc(Left); Dec(Right); + Inc(Top); Dec(Bottom); + end; +@@ -810,12 +826,38 @@ + SelectObject(DC, OldBrush); + SelectObject(DC, OldPen); + DeleteObject(Brush); + DeleteObject(Pen); + end; + ++procedure RoundRectEx(DC: HDC; Left, Top, Right, Bottom: Integer; ++ EllipseWidth, EllipseHeight, OutlineColor, FillColor: TColor); {vb+} ++var ++ OldBrush, Brush: HBrush; ++ OldPen, Pen: HPen; ++begin ++ if (OutlineColor = clNone) and (FillColor = clNone) then Exit; ++ Pen := CreatePenEx(OutlineColor); ++ Brush := CreateBrushEx(FillColor); ++ OldPen := SelectObject(DC, Pen); ++ OldBrush := SelectObject(DC, Brush); ++ Windows.RoundRect(DC, Left, Top, Right, Bottom, EllipseWidth, EllipseHeight); ++ SelectObject(DC, OldBrush); ++ SelectObject(DC, OldPen); ++ DeleteObject(Brush); ++ DeleteObject(Pen); ++end; ++ ++procedure RoundRectEx(DC: HDC; const R: TRect; EllipseWidth, EllipseHeight, ++ OutlineColor, FillColor: TColor); {vb+} ++begin ++ with R do ++ RoundRectEx(DC, Left, Top, Right, Bottom, EllipseWidth, ++ EllipseHeight, OutlineColor, FillColor); ++end; ++ + function CreateDitheredBrush(C1, C2: TColor): HBrush; + var + B: TBitmap; + begin + B := AllocPatternBitmap(C1, C2); + B.HandleType := bmDDB; +@@ -949,26 +991,25 @@ + POP EDI + POP ESI + end; + + procedure DrawTBXIcon(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; HiContrast: Boolean); +-const +- CWeirdColor = $00203241; ++{const ++ CWeirdColor = $00203241;} {vb -} + var + ImageWidth, ImageHeight: Integer; + I, J: Integer; + Src, Dst: PColor; + S, C: TColor; + begin + if not HiContrast then + begin + ImageList.Draw(Canvas, R.Left, R.Top, ImageIndex); + Exit; + end; +- + ImageWidth := R.Right - R.Left; + ImageHeight := R.Bottom - R.Top; + with ImageList do + begin + if Width < ImageWidth then ImageWidth := Width; + if Height < ImageHeight then ImageHeight := Height; +@@ -978,27 +1019,33 @@ + StockBitmap1.Height := ImageHeight; + StockBitmap2.Width := ImageWidth; + StockBitmap2.Height := ImageHeight; + + BitBlt(StockBitmap1.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, + Canvas.Handle, R.Left, R.Top, SRCCOPY); +- for J := 0 to ImageHeight - 1 do +- FillLongWord(StockBitmap2.ScanLine[J]^, ImageWidth, CWeirdColor); ++ {for J := 0 to ImageHeight - 1 do ++ FillLongWord(StockBitmap2.ScanLine[J]^, ImageWidth, CWeirdColor);} {vb -} ++ BitBlt(StockBitmap2.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, ++ Canvas.Handle, R.Left, R.Top, SRCCOPY); {vb +} + ImageList.Draw(StockBitmap2.Canvas, 0, 0, ImageIndex); + + for J := 0 to ImageHeight - 1 do + begin + Src := StockBitmap2.ScanLine[J]; + Dst := StockBitmap1.ScanLine[J]; + for I := 0 to ImageWidth - 1 do + begin +- S := Src^ and $00FFFFFF; +- if S <> CWeirdColor then ++ {S := Src^ and $00FFFFFF;} {vb -} ++ S := Src^; {vb +} ++ {if S <> CWeirdColor then} {vb -} ++ if S <> Dst^ then {vb +} + begin +- C := (S and $FF0000) shr 16 * 76 + (S and $00FF00) shr 8 * 150 + +- (S and $0000FF) * 29; ++ {C := (S and $FF0000) shr 16 * 76 + (S and $00FF00) shr 8 * 150 + ++ (S and $0000FF) * 29;} {vb -} ++ C := (S and $00FF0000) shr 16 * 76 + (S and $0000FF00) shr 8 * 150 + ++ (S and $000000FF) * 29; {vb +} + if C > $FD00 then S := $000000 + else if C < $6400 then S := $FFFFFF; + Dst^ := Lighten(S, 32); + end; + Inc(Src); + Inc(Dst); +@@ -1007,14 +1054,14 @@ + BitBlt(Canvas.Handle, R.Left, R.Top, ImageWidth, ImageHeight, + StockBitmap1.Canvas.Handle, 0, 0, SRCCOPY); + end; + + procedure BlendTBXIcon(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; Opacity: Byte); +-const +- CWeirdColor = $00203241; ++{const ++ CWeirdColor = $00203241;} {vb -} + var + ImageWidth, ImageHeight: Integer; + I, J: Integer; + Src, Dst: ^Cardinal; + S, C, CBRB, CBG: Cardinal; + Wt1, Wt2: Cardinal; +@@ -1033,14 +1080,16 @@ + StockBitmap1.Height := ImageHeight; + StockBitmap2.Width := ImageWidth; + StockBitmap2.Height := ImageHeight; + + BitBlt(StockBitmap1.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, + Canvas.Handle, R.Left, R.Top, SRCCOPY); ++ {BitBlt(StockBitmap2.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, ++ StockBitmap1.Canvas.Handle, 0, 0, SRCCOPY);} {vb -} + BitBlt(StockBitmap2.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, +- StockBitmap1.Canvas.Handle, 0, 0, SRCCOPY); ++ Canvas.Handle, R.Left, R.Top, SRCCOPY); {vb +} + ImageList.Draw(StockBitmap2.Canvas, 0, 0, ImageIndex, True); + + for J := 0 to ImageHeight - 1 do + begin + Src := StockBitmap2.ScanLine[J]; + Dst := StockBitmap1.ScanLine[J]; +@@ -1048,31 +1097,35 @@ + begin + S := Src^; + if S <> Dst^ then + begin + CBRB := (Dst^ and $00FF00FF) * Wt1; + CBG := (Dst^ and $0000FF00) * Wt1; +- C := ((S and $FF00FF) * Wt2 + CBRB) and $FF00FF00 + ((S and $00FF00) * Wt2 + CBG) and $00FF0000; ++ {C := ((S and $FF00FF) * Wt2 + CBRB) and $FF00FF00 + ++ ((S and $00FF00) * Wt2 + CBG) and $00FF0000;} {vb -} ++ C := ((S and $00FF00FF) * Wt2 + CBRB) and $FF00FF00 + ++ ((S and $0000FF00) * Wt2 + CBG) and $00FF0000; {vb +} + Dst^ := C shr 8; + end; + Inc(Src); + Inc(Dst); + end; + end; + BitBlt(Canvas.Handle, R.Left, R.Top, ImageWidth, ImageHeight, + StockBitmap1.Canvas.Handle, 0, 0, SRCCOPY); + end; + + procedure HighlightTBXIcon(Canvas: TCanvas; const R: TRect; + ImageList: TCustomImageList; ImageIndex: Integer; HighlightColor: TColor; Amount: Byte); +-const +- CWeirdColor = $00203241; ++{const ++ CWeirdColor = $00203241;} {vb -} + var + ImageWidth, ImageHeight: Integer; + I, J: Integer; +- Src, Dst: PColor; ++ {Src, Dst: PColor;} {vb -} ++ Src, Dst: ^Cardinal; {vb +} + S, C: Cardinal; + CBRB, CBG: Cardinal; + W1, W2: Cardinal; + begin + ImageWidth := R.Right - R.Left; + ImageHeight := R.Bottom - R.Top; +@@ -1086,14 +1139,16 @@ + StockBitmap1.Height := ImageHeight; + StockBitmap2.Width := ImageWidth; + StockBitmap2.Height := ImageHeight; + + BitBlt(StockBitmap1.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, + Canvas.Handle, R.Left, R.Top, SRCCOPY); +- for J := 0 to ImageHeight - 1 do +- FillLongWord(StockBitmap2.ScanLine[J]^, ImageWidth, CWeirdColor); ++ {for J := 0 to ImageHeight - 1 do ++ FillLongWord(StockBitmap2.ScanLine[J]^, ImageWidth, CWeirdColor);} {vb -} ++ BitBlt(StockBitmap2.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, ++ Canvas.Handle, R.Left, R.Top, SRCCOPY); {vb +} + ImageList.Draw(StockBitmap2.Canvas, 0, 0, ImageIndex); + + W2 := Amount; + W1 := 255 - W2; + HighlightColor := GetBGR(ColorToRGB(HighlightColor)); + CBRB := (Cardinal(HighlightColor) and $00FF00FF) * W1; +@@ -1102,16 +1157,21 @@ + for J := 0 to ImageHeight - 1 do + begin + Src := StockBitmap2.ScanLine[J]; + Dst := StockBitmap1.ScanLine[J]; + for I := 0 to ImageWidth - 1 do + begin +- S := Src^ and $00FFFFFF; +- if S <> CWeirdColor then ++ {S := Src^ and $00FFFFFF;} {vb -} ++ S := Src^; {vb +} ++ {if S <> CWeirdColor then} {vb -} ++ if S <> Dst^ then {vb +} + begin +- C := ((S and $FF00FF) * W2 + CBRB) and $FF00FF00 + ((S and $00FF00) * W2 + CBG) and $00FF0000; ++ {C := ((S and $FF00FF) * W2 + CBRB) and $FF00FF00 + ++ ((S and $00FF00) * W2 + CBG) and $00FF0000;} {vb -} ++ C := ((S and $00FF00FF) * W2 + CBRB) and $FF00FF00 + ++ ((S and $0000FF00) * W2 + CBG) and $00FF0000; {vb +} + Dst^ := C shr 8; + end; + Inc(Src); + Inc(Dst); + end; + end; +@@ -1144,14 +1204,16 @@ + StockBitmap1.Height := ImageHeight; + StockBitmap2.Width := ImageWidth; + StockBitmap2.Height := ImageHeight; + + BitBlt(StockBitmap1.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, + Canvas.Handle, R.Left, R.Top, SRCCOPY); ++ {BitBlt(StockBitmap2.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, ++ StockBitmap1.Canvas.Handle, 0, 0, SRCCOPY);} {vb -} + BitBlt(StockBitmap2.Canvas.Handle, 0, 0, ImageWidth, ImageHeight, +- StockBitmap1.Canvas.Handle, 0, 0, SRCCOPY); ++ Canvas.Handle, R.Left, R.Top, SRCCOPY); {vb +} + ImageList.Draw(StockBitmap2.Canvas, 0, 0, ImageIndex, True); + + for J := 0 to ImageHeight - 1 do + begin + Src := StockBitmap2.ScanLine[J]; + Dst := StockBitmap1.ScanLine[J]; +@@ -1159,14 +1221,16 @@ + begin + S := Src^; + if S <> Dst^ then + begin + CBRB := Dst^ and $00FF00FF; + CBG := Dst^ and $0000FF00; +- C := ((S and $FF0000) shr 16 * 29 + (S and $00FF00) shr 8 * 150 + +- (S and $0000FF) * 76) shr 8; ++ {C := ((S and $FF0000) shr 16 * 29 + (S and $00FF00) shr 8 * 150 + ++ (S and $0000FF) * 76) shr 8;} {vb -} ++ C := ((S and $00FF0000) shr 16 * 29 + (S and $0000FF00) shr 8 * 150 + ++ (S and $000000FF) * 76) shr 8; {vb +} + C := C div D_DIV[Density] + D_ADD[Density]; + Dst^ := ((CBRB * C and $FF00FF00) or (CBG * C and $00FF0000)) shr 8; + end; + Inc(Src); + Inc(Dst); + end; +@@ -1938,13 +2002,13 @@ + Size, I, Start, Finish: Integer; + GradIndex: Integer; + R, CR: TRect; + Brush: HBRUSH; + begin + if not RectVisible(DC, ARect) then Exit; +- ++ + ClrTopLeft := ColorToRGB(ClrTopLeft); + ClrBottomRight := ColorToRGB(ClrBottomRight); + if @GradientFill <> nil then + begin + { Use msimg32.dll } + with V[0] do +@@ -2085,18 +2149,24 @@ + NextCacheEntry: Integer = 0; + + procedure ClearCacheItem(var CacheItem: TThreadCacheItem); + var + I: Integer; + begin +- for I := NUM_TEMPLATES - 1 downto 0 do +- begin +- CacheItem.BaseColor := $FFFFFFFF; +- CacheItem.Roughness := -1; +- if CacheItem.Bitmaps[I] <> 0 then DeleteObject(CacheItem.Bitmaps[I]); +- CacheItem.Bitmaps[I] := 0; ++ with CacheItem do ++ begin ++ BaseColor := $FFFFFFFF; ++ Roughness := -1; ++ for I := NUM_TEMPLATES - 1 downto 0 do ++ begin ++ if Bitmaps[I] <> 0 then ++ begin ++ DeleteObject(Bitmaps[I]); ++ Bitmaps[I] := 0; ++ end; ++ end; + end; + end; + + procedure ResetBrushedFillCache; + var + I: Integer; +@@ -2235,29 +2305,25 @@ + DeleteDC(CacheDC); + + RestoreDC(DC, -1); + end; + + var +- hUser, hMSImg: HModule; ++ hMSImg: HModule; + + initialization +- +-hUser := LoadLibrary('user32.dll'); +-hMSImg := LoadLibrary('msimg32.dll'); +-@UpdateLayeredWindow := GetProcAddress(hUser, 'UpdateLayeredWindow'); +-@AlphaBlend := GetProcAddress(hMSImg, 'AlphaBlend'); +-@GradientFill := GetProcAddress(hMSImg, 'GradientFill'); +- +-InitializeStock; +-InitializeBrushedFill; +-ResetBrushedFillCache; +- ++ @UpdateLayeredWindow := GetProcAddress( ++ GetModuleHandle('user32.dll'), 'UpdateLayeredWindow'); ++ hMSImg := LoadLibrary('msimg32.dll'); ++ if hMSImg <> 0 then ++ begin ++ @AlphaBlend := GetProcAddress(hMSImg, 'AlphaBlend'); ++ @GradientFill := GetProcAddress(hMSImg, 'GradientFill'); ++ end; ++ InitializeStock; ++ InitializeBrushedFill; ++ ResetBrushedFillCache; + finalization +- +-FinalizeBrushedFill; +-FinalizeStock; +- +-FreeLibrary(hMSImg); +-FreeLibrary(hUser); +- ++ FinalizeBrushedFill; ++ FinalizeStock; ++ if hMSImg <> 0 then FreeLibrary(hMSImg); + end. +--- TBXOffice2003Theme.pas 2005-02-14 12:06:12.000000000 +-0400 ++++ TBXOffice2003Theme.pas 2005-08-12 12:33:40.000000000 +-0400 +@@ -19,13 +19,13 @@ + // I advise you to get it from http://pngdelphi.sourceforge.net + // after downloading, install it and TPNGImageList component from PNGImgList.pas + // uncomment next string if you have TPNGImage and TPNGImageList installed + //{$DEFINE PNGIMAGELIST} + + // uncomment next string if you want to see highlighted icons +-//{$DEFINE HIGHLIGHTTOOLBARICONS} ++{$DEFINE HIGHLIGHTTOOLBARICONS} + + uses + Windows, Messages, Graphics, TBXThemes, ImgList, TBXUxThemes + {$IFDEF PNGIMAGELIST}, PNGImgList{$ENDIF}; + + type +@@ -414,13 +414,13 @@ + Result := BtnBodyColors[B, False] + else + Result := BtnItemColors[B, ItemPart]; + if Embedded and (Result = clNone) then + begin + if ItemPart = ipBody then Result := EmbeddedColor; +- if ItemPart = ipFrame then Result := EmbeddedFrameColor;; ++ if ItemPart = ipFrame then Result := EmbeddedFrameColor; + end; + end; + end; + end; + + function TTBXOffice2003Theme.GetItemColor(const ItemInfo: TTBXItemInfo): TColor; +@@ -550,19 +550,29 @@ + Brush.Style := bsSolid; + end; + end; + + procedure TTBXOffice2003Theme.PaintCheckMark(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); + var ++ DC: HDC; + X, Y: Integer; ++ C: TColor; + begin +- X := (ARect.Left + ARect.Right) div 2 - 2; ++ DC := Canvas.Handle; ++ X := (ARect.Left + ARect.Right) div 2 - 1; + Y := (ARect.Top + ARect.Bottom) div 2 + 1; +- Canvas.Pen.Color := GetBtnColor(ItemInfo, ipText); +- Canvas.Polyline([Point(X - 2, Y - 2), Point(X, Y), Point(X + 4, Y - 4), +- Point(X + 4, Y - 3), Point(X, Y + 1), Point(X - 2, Y - 1), Point(X - 2, Y - 2)]); ++ C := GetBtnColor(ItemInfo, ipText); ++ if ItemInfo.ItemOptions and IO_RADIO > 0 then ++ begin ++ RoundRectEx(DC, X-2, Y-4, X+4, Y+2, 2, 2, ++ MixColors(C, ToolbarColor1, 200), clNone); ++ RoundRectEx(DC, X-2, Y-4, X+4, Y+2, 6, 6, C, C); ++ end ++ else ++ PolylineEx(DC, [Point(X-2, Y-2), Point(X, Y), Point(X+4, Y-4), ++ Point(X+4, Y-3), Point(X, Y+1), Point(X-2, Y-1), Point(X-2, Y-2)], C); + end; + + procedure TTBXOffice2003Theme.PaintChevron(Canvas: TCanvas; ARect: TRect; const ItemInfo: TTBXItemInfo); + const + Pattern: array[Boolean, 0..15] of Byte = ( + ($CC, 0, $66, 0, $33, 0, $66, 0, $CC, 0, 0, 0, 0, 0, 0, 0), diff --git a/official/2.1.6+2.1.beta1/TBX/license.txt b/official/2.1.6+2.1.beta1/TBX/license.txt new file mode 100644 index 0000000..372ab01 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/license.txt @@ -0,0 +1,47 @@ +LICENSE + +Copyright © 2001-2003 Alex A. Denisov. All rights reserved. + +This notice is only applicable to TBX package; it does not apply +to Toolbar2000 package, where the separate license is provided. + +TBX is distributed as freeware. You are free to use it in any +kind of application as well as redistribute source code in the +original form, provided the following conditions are met: + +- All redistributions of source code must be in the original form, + they must include all the original files, including but not + limited to original documentation, license agreement, copyright + notice, and web site address. + +- Redistribution of TBX package or any part of TBX code in modified + form is allowed only with express written permission from the + author (Alex A. Denisov). + +- You are not allowed to make modifications to TBX documentation. + You may only redistribute the documentation with original + unmodified package. + +- If TBX is used in your software in the compiled form, an + acknowledgement in product documentation and/or in the About box + is required. Only registered users are allowed to omit the + acknowledgement. + +- The origin of this software must not be misrepresented; you must + not claim your authorship. + +If you do not agree to all of the above terms, you are not +permitted to use this package. + +This software is provided 'as-is', without warranty of any kind, +either expressed or implied. In no event shall the author be held +liable for any damages arising from the use of this software. + +Alex A. Denisov + +alex@g32.org + +http://g32.org + + + diff --git a/official/2.1.6+2.1.beta1/TBX/patch.bat b/official/2.1.6+2.1.beta1/TBX/patch.bat new file mode 100644 index 0000000..7a5a5af --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/patch.bat @@ -0,0 +1,3 @@ +@if not %2 == "" %2 +@if not %3 == "" cd %3 +patch -p0 --backup --batch < %1 \ No newline at end of file diff --git a/official/2.1.6+2.1.beta1/TBX/patch.exe b/official/2.1.6+2.1.beta1/TBX/patch.exe new file mode 100644 index 0000000000000000000000000000000000000000..cc0bdb0c81615163035ad8d9b0a088fd87d84b57 GIT binary patch literal 59904 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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/TBX/readme.txt b/official/2.1.6+2.1.beta1/TBX/readme.txt new file mode 100644 index 0000000..f96f2cf --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/readme.txt @@ -0,0 +1 @@ +See TBX.chm file for installation and usage instructions. \ No newline at end of file diff --git a/official/2.1.6+2.1.beta1/TBX/registration.txt b/official/2.1.6+2.1.beta1/TBX/registration.txt new file mode 100644 index 0000000..b83d9e5 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/registration.txt @@ -0,0 +1,26 @@ +REGISTRATION AND DONATIONS + +The TBX package is a freeware product and you can use it for any +kind of applications provided the license conditions are satisfied. +Registration is required only if you don't want to include the +acknowledgement. The price of the license is US$100 for a single +user and US$200 per site. Proceed to [https://order.kagi.com/?GRH] +for registartion. + +As long as you include an acknowledgement, you can use the TBX +package free of charge even for commercial and shareware applications. +However, if you wish to express your appreciation for the time I +spend on developing, documenting and supporting it, I do accept and +appreciate donations. + +You can make your donation at [https://order.kagi.com/?GRH]. +The base amount is US$20, but if you would like to donate more, +feel free to order multiple copies of the "TBX donation" product. + +Thank you for your support. + +Alex A. Denisov +alex@g32.org +http://g32.org + + diff --git a/official/2.1.6+2.1.beta1/TBX/rmkThemes.pas b/official/2.1.6+2.1.beta1/TBX/rmkThemes.pas new file mode 100644 index 0000000..84a7776 --- /dev/null +++ b/official/2.1.6+2.1.beta1/TBX/rmkThemes.pas @@ -0,0 +1,550 @@ +unit rmkThemes; + +interface + +uses + Windows, Messages, Graphics, Types, TBXUtils; + +type + TGradDir = (tgLeftRight, tgTopBottom); + +procedure ButtonFrame(Canvas: TCanvas; R: TRect; RL, RR: Integer; c1, c2, c3: + TColor); +procedure SmartFrame(Canvas: TCanvas; R: TRect; RL, RR: Integer; c1, c2: TColor); +procedure GradientGlass(const Canvas: TCanvas; const ARect: TRect; + const Aqua:Boolean; const Direction: TGradDir); Overload; +procedure GradientGlass(const Canvas: TCanvas; const ARect: TRect; + const Aqua, Dark: Boolean; const Direction: TGradDir); Overload; +procedure OLDGradientFill(const Canvas: TCanvas; const ARect: TRect; + const StartColor, EndColor: TColor; const Direction: TGradDir); + +// --- +{ LOW LEVEL } +function GradientFillWinEnabled: Boolean; +function GradientFillWin(DC: HDC; PVertex: Pointer; NumVertex: Cardinal; + PMesh: Pointer; NumMesh, Mode: Cardinal): BOOL; +{ HIGH LEVEL } +procedure GradientFill(DC: HDC; const ARect: TRect; + StartColor, EndColor: TColor; Direction: TGradDir); overload; +procedure GradientFill(Canvas: TCanvas; const ARect: TRect; + StartColor, EndColor: TColor; Direction: TGradDir); overload; + +{ Redeclare TRIVERTEX } +type + {$EXTERNALSYM COLOR16} + COLOR16 = Word; { in Delphi Windows.pas wrong declared as Shortint } + + PTriVertex = ^TTriVertex; + {$EXTERNALSYM _TRIVERTEX} + _TRIVERTEX = packed record + x : Longint; + y : Longint; + Red : COLOR16; + Green : COLOR16; + Blue : COLOR16; + Alpha : COLOR16; + end; + TTriVertex = _TRIVERTEX; + {$EXTERNALSYM TRIVERTEX} + TRIVERTEX = _TRIVERTEX; +// --- + + +implementation + +// --- +type + TGradientFillWin = function(DC: HDC; PVertex: Pointer; NumVertex: ULONG; + Mesh: Pointer; NumMesh, Mode: ULONG): BOOL; stdcall; + TGradientFill = procedure(DC: HDC; const ARect: TRect; + StartColor, EndColor: TColor; Direction: TGradDir); +var + InitDone : Boolean = False; + MSImg32Module : THandle; + GradFillWinProc : TGradientFillWin; + GradFillProc : TGradientFill; +// ---- + +procedure ButtonFrame(Canvas: TCanvas; R: TRect; RL, RR: Integer; c1, c2, c3: + TColor); +var + Color: TColor; +begin + with Canvas, R do + begin + Color := Pen.Color; + Pen.Color := c1; + Dec(Right); + Dec(Bottom); + PolyLine([ + Point(Left + RL, Top), + Point(Right - RR, Top), + Point(Right, Top + RR), + Point(Right, Bottom - RR), + Point(Right - RR, Bottom), + Point(Left + RL, Bottom), + Point(Left, Bottom - RL), + Point(Left, Top + RL), + Point(Left + RL, Top) + ]); + + if c2 <> clNone then + begin + Pen.Color := c2; + PolyLine([ + Point(Right, Top + RR), + Point(Right, Bottom - RR), + Point(Right - RR, Bottom), + Point(Left + RL - 1, Bottom) + ]); + end; + + Pen.Color := c3; + if RR > 0 then + begin + Inc(Right); + MoveTo(Right - RR, Top); + LineTo(Right, Top + RR); + MoveTo(Right - RR, Bottom); + LineTo(Right, Bottom - RR); + Dec(Right); + end; + + if RL > 0 then + begin + Dec(Left); + MoveTo(Left + RL, Top); + LineTo(Left, Top + RL); + MoveTo(Left + RL, Bottom); + LineTo(Left, Bottom - RL); + Inc(Left); + end; + + Inc(Right); + Inc(Bottom); + Pen.Color := Color; + end; +end; + +procedure SmartFrame(Canvas: TCanvas; R: TRect; RL, RR: Integer; c1, c2: TColor); +var + Color: TColor; +begin + with Canvas, R do + begin + Color := Pen.Color; + Pen.Color := c1; + Dec(Right); + Dec(Bottom); + PolyLine([ + Point(Left + RL, Top), + Point(Right - RR, Top), + Point(Right, Top + RR), + Point(Right, Bottom - RR), + Point(Right - RR, Bottom), + Point(Left + RL, Bottom), + Point(Left, Bottom - RL), + Point(Left, Top + RL), + Point(Left + RL, Top) + ]); + if c2 <> clNone then + begin + Pen.Color := c2; + PolyLine([ + Point(Right, Top + RR), + Point(Right, Bottom - RR), + Point(Right - RR, Bottom), + Point(Left + RL - 1, Bottom) + ]); + end; + + Pen.Color := Blend(Pixels[Left, Top], c1, 60); + if RL > 0 then + begin + Dec(Left); + MoveTo(Left + RL, Top); + LineTo(Left, Top + RL); + MoveTo(Left + RL, Bottom); + LineTo(Left, Bottom - RL); + Inc(Left); + end; + + if c2 <> clNone then + Pen.Color := Blend(Pixels[Right, Bottom], c2, 60); + if RR > 0 then + begin + Inc(Right); + MoveTo(Right - RR, Top); + LineTo(Right, Top + RR); + MoveTo(Right - RR, Bottom); + LineTo(Right, Bottom - RR); + Dec(Right); + end; + + Inc(Right); + Inc(Bottom); + Pen.Color := Color; + end; +end; + +procedure GradientGlass(const Canvas: TCanvas; const ARect: TRect; + const Aqua, Dark: Boolean; const Direction: TGradDir); +var + GSize: Integer; + rc1, rc2, gc1, gc2, bc1, bc2, rc3, gc3, bc3, rc4, gc4, bc4, + r, g, b, y1, Counter, i, d1, d2, d3: Integer; + + Brush: HBrush; +begin + if Aqua then + begin + if Dark then + begin + rc1 := $e0; rc2 := $70; rc3 := $60; rc4 := $A0; + gc1 := $e8; gc2 := $A0; gc3 := $D0; gc4 := $EF; + bc1 := $EF; bc2 := $D0; bc3 := $E0; bc4 := $EF; + end else + begin + rc1 := $f0; rc2 := $80; rc3 := $70; rc4 := $B0; + gc1 := $f8; gc2 := $B0; gc3 := $E8; gc4 := $FF; + bc1 := $FF; bc2 := $E0; bc3 := $F0; bc4 := $FF; + end; + end else + begin + rc1 := $F8; rc2 := $d8; rc3 := $f0; rc4 := $F8; + gc1 := $F8; gc2 := $d8; gc3 := $f0; gc4 := $F8; + bc1 := $F8; bc2 := $d8; bc3 := $f0; bc4 := $F8; + end; + + if Direction = tGTopBottom then + begin + GSize := (ARect.Bottom - ARect.Top) - 1; + y1 := GSize div 3; + if y1 = 0 then y1:= 1; + d1 := y1; + d2 := y1 + y1; + for i := 0 to y1 do + begin + r := rc1 + (((rc2 - rc1) * (i)) div y1); + g := gc1 + (((gc2 - gc1) * (i)) div y1); + b := bc1 + (((bc2 - bc1) * (i)) div y1); + if r < 0 then r := 0 else if r > 255 then r := 255; + if g < 0 then g := 0 else if g > 255 then g := 255; + if b < 0 then b := 0 else if b > 255 then b := 255; + Brush := CreateSolidBrush( + RGB(r, g, b)); + Windows.FillRect(Canvas.Handle, Rect(ARect.Left, ARect.Top + i, ARect.Right, ARect.Top + i + 1), Brush); + DeleteObject(Brush); + end; + + for i := y1 to d2 do + begin + r := rc2 + (((rc3 - rc2) * (i - d1)) div y1); + g := gc2 + (((gc3 - gc2) * (i - d1)) div y1); + b := bc2 + (((bc3 - bc2) * (i - d1)) div y1); + if r < 0 then r := 0 else if r > 255 then r := 255; + if g < 0 then g := 0 else if g > 255 then g := 255; + if b < 0 then b := 0 else if b > 255 then b := 255; + Brush := CreateSolidBrush( + RGB(r, g, b)); + Windows.FillRect(Canvas.Handle, Rect(ARect.Left, ARect.Top + i, ARect.Right, ARect.Top + i + 1), Brush); + DeleteObject(Brush); + end; + + for i := d2 to GSize do + begin + r := rc3 + (((rc4 - rc3) * (i - d2)) div y1); + g := gc3 + (((gc4 - gc3) * (i - d2)) div y1); + b := bc3 + (((bc4 - bc3) * (i - d2)) div y1); + if r < 0 then r := 0 else if r > 255 then r := 255; + if g < 0 then g := 0 else if g > 255 then g := 255; + if b < 0 then b := 0 else if b > 255 then b := 255; + Brush := CreateSolidBrush( + RGB(r, g, b)); + Windows.FillRect(Canvas.Handle, Rect(ARect.Left, ARect.Top + i, ARect.Right, ARect.Top + i + 1), Brush); + DeleteObject(Brush); + end; + end else + begin + GSize := (ARect.Right - ARect.Left) - 1; + y1 := GSize div 3; + if y1 = 0 then y1:= 1; + d1 := y1; + d2 := y1 + y1; + for i := 0 to y1 do + begin + r := rc1 + (((rc2 - rc1) * (i)) div y1); + g := gc1 + (((gc2 - gc1) * (i)) div y1); + b := bc1 + (((bc2 - bc1) * (i)) div y1); + if r < 0 then r := 0 else if r > 255 then r := 255; + if g < 0 then g := 0 else if g > 255 then g := 255; + if b < 0 then b := 0 else if b > 255 then b := 255; + Brush := CreateSolidBrush( + RGB(r, g, b)); + Windows.FillRect(Canvas.Handle, Rect(ARect.Left + i, ARect.Top, ARect.Left + i + 1, ARect.Bottom), Brush); + DeleteObject(Brush); + end; + for i := y1 to d2 do + begin + r := rc2 + (((rc3 - rc2) * (i - d1)) div y1); + g := gc2 + (((gc3 - gc2) * (i - d1)) div y1); + b := bc2 + (((bc3 - bc2) * (i - d1)) div y1); + if r < 0 then r := 0 else if r > 255 then r := 255; + if g < 0 then g := 0 else if g > 255 then g := 255; + if b < 0 then b := 0 else if b > 255 then b := 255; + Brush := CreateSolidBrush( + RGB(r, g, b)); + Windows.FillRect(Canvas.Handle, Rect(ARect.Left + i, ARect.Top, ARect.Left + i + 1, ARect.Bottom), Brush); + DeleteObject(Brush); + end; + for i := d2 to GSize do + begin + r := rc3 + (((rc4 - rc3) * (i - d2)) div y1); + g := gc3 + (((gc4 - gc3) * (i - d2)) div y1); + b := bc3 + (((bc4 - bc3) * (i - d2)) div y1); + if r < 0 then r := 0 else if r > 255 then r := 255; + if g < 0 then g := 0 else if g > 255 then g := 255; + if b < 0 then b := 0 else if b > 255 then b := 255; + Brush := CreateSolidBrush( + RGB(r, g, b)); + Windows.FillRect(Canvas.Handle, Rect(ARect.Left + i, ARect.Top, ARect.Left + i + 1, ARect.Bottom), Brush); + DeleteObject(Brush); + end; + end; +end; + +procedure GradientGlass(const Canvas: TCanvas; const ARect: TRect; + const Aqua: Boolean; const Direction: TGradDir); +begin + GradientGlass(Canvas, Arect, Aqua, False, Direction); +end; + +procedure OLDGradientFill(const Canvas: TCanvas; const ARect: TRect; + const StartColor, EndColor: TColor; + const Direction: TGradDir); +var + rc1, rc2, gc1, gc2, bc1, bc2, Counter, GSize: Integer; + Brush: HBrush; +begin + rc1 := GetRValue(ColorToRGB(StartColor)); + gc1 := GetGValue(ColorToRGB(StartColor)); + bc1 := GetBValue(ColorToRGB(StartColor)); + rc2 := GetRValue(ColorToRGB(EndColor)); + gc2 := GetGValue(ColorToRGB(EndColor)); + bc2 := GetBValue(ColorToRGB(EndColor)); + + if Direction = tGTopBottom then + begin + GSize := (ARect.Bottom - ARect.Top) - 1; + if GSize = 0 then GSize:= 1; + for Counter := 0 to GSize do + begin + Brush := CreateSolidBrush( + RGB( + Byte(rc1 + (((rc2 - rc1) * (Counter)) div GSize)), + Byte(gc1 + (((gc2 - gc1) * (Counter)) div GSize)), + Byte(bc1 + (((bc2 - bc1) * (Counter)) div GSize))) + ); + Windows.FillRect(Canvas.Handle, Rect(ARect.Left, + ARect.Top, + ARect.Right, + ARect.Bottom - Counter), Brush); + DeleteObject(Brush); + end; + end else + begin + GSize := (ARect.Right - ARect.Left) - 1; + if GSize = 0 then GSize:= 1; + for Counter := 0 to GSize do + begin + Brush := CreateSolidBrush( + RGB(Byte(rc1 + (((rc2 - rc1) * (Counter)) div GSize)), + Byte(gc1 + (((gc2 - gc1) * (Counter)) div GSize)), + Byte(bc1 + (((bc2 - bc1) * (Counter)) div GSize)))); + Windows.FillRect(Canvas.Handle, Rect(ARect.Left, ARect.Top, ARect.Right - Counter, ARect.Bottom), Brush); + DeleteObject(Brush); + end; + end; +end; + + +// Code belowe is from Vladimir Bochkarev + +(******************************************************************************) +procedure + InitializeGradientFill; forward; +(******************************************************************************) +{ GradientFillWin } +(******************************************************************************) +function GradFillWinInitProc(DC: HDC; PVertex: Pointer; NumVertex: ULONG; + Mesh: Pointer; NumMesh, Mode: ULONG): BOOL; stdcall; +begin + InitializeGradientFill; + Result := GradFillWinProc(DC, PVertex, NumVertex, Mesh, NumMesh, Mode); +end; +(******************************************************************************) +function GradFillWinNone(DC: HDC; PVertex: Pointer; NumVertex: ULONG; + Mesh: Pointer; NumMesh, Mode: ULONG): BOOL; stdcall; +begin + Result := False; +end; +(******************************************************************************) +function GradientFillWin(DC: HDC; PVertex: Pointer; NumVertex: Cardinal; + PMesh: Pointer; NumMesh, Mode: Cardinal): BOOL; +begin + Result := GradFillWinProc(DC, PVertex, NumVertex, PMesh, NumMesh, Mode); +end; +(******************************************************************************) +function GradientFillWinEnabled: Boolean; +begin + if not InitDone then InitializeGradientFill; + Result := @GradFillWinProc <> @GradFillWinNone; +end; +(******************************************************************************) +{ GradientFill } +(******************************************************************************) +procedure GradFillInitProc(DC: HDC; const ARect: TRect; + StartColor, EndColor: TColor; Direction: TGradDir); +begin + InitializeGradientFill; + GradFillProc(DC, ARect, StartColor, EndColor, Direction); +end; +(*****************************************************************************) +procedure GradFillInt(DC: HDC; const ARect: TRect; + StartColor, EndColor: TColor; Direction: TGradDir); +var + FillRect : TRect; + RS, GS, BS : TColor; + RE, GE, BE : TColor; + LineCount : Integer; + CurLine : Integer; + //---------------------------------------------------------------------------- + procedure InternalFillRect; + var Brush: HBRUSH; + begin + Brush := CreateSolidBrush( + RGB((RS+ (((RE- RS)* CurLine) div LineCount)), + (GS+ (((GE- GS)* CurLine) div LineCount)), + (BS+ (((BE- BS)* CurLine) div LineCount)))); + Windows.FillRect(DC, FillRect, Brush); + DeleteObject(Brush); + end; + //---------------------------------------------------------------------------- +begin + FillRect := ARect; + if StartColor < 0 then + StartColor := Integer(GetSysColor(StartColor and $000000FF)); + if EndColor < 0 then + EndColor := Integer(GetSysColor(EndColor and $000000FF)); + RS := GetRValue(Cardinal(StartColor)); + GS := GetGValue(Cardinal(StartColor)); + BS := GetBValue(Cardinal(StartColor)); + RE := GetRValue(Cardinal(EndColor)); + GE := GetGValue(Cardinal(EndColor)); + BE := GetBValue(Cardinal(EndColor)); + if Direction = tgLeftRight then + begin + FillRect.Right := FillRect.Left+ 1; + LineCount := ARect.Right- ARect.Left; + for CurLine := 1 to LineCount do + begin + InternalFillRect; + Inc(FillRect.Left); + Inc(FillRect.Right); + end; + end + else begin + FillRect.Bottom := FillRect.Top+ 1; + LineCount := ARect.Bottom- ARect.Top; + for CurLine := 1 to LineCount do + begin + InternalFillRect; + Inc(FillRect.Top); + Inc(FillRect.Bottom); + end; + end; +end; +(******************************************************************************) +procedure GradFillWin(DC: HDC; const ARect: TRect; + StartColor, EndColor: TColor; Direction: TGradDir); +var + Vertexs: array[0..1] of TTriVertex; + //---------------------------------------------------------------------------- + procedure SetVertex(Index, AX, AY, AColor: TColor); + begin + with Vertexs[Index] do + begin + X := AX; + Y := AY; + Red := (AColor and $000000FF) shl 8; + Green := (AColor and $0000FF00); + Blue := (AColor and $00FF0000) shr 8; + Alpha := 0; + end; + end; + //---------------------------------------------------------------------------- +var + GRect : TGradientRect; + Mode : Cardinal; +begin + if StartColor < 0 then + StartColor := Integer(GetSysColor(StartColor and $000000FF)); + if EndColor < 0 then + EndColor := Integer(GetSysColor(EndColor and $000000FF)); + SetVertex(0, ARect.Left, ARect.Top, StartColor); + SetVertex(1, ARect.Right, ARect.Bottom, EndColor); + with GRect do + begin + UpperLeft := 0; + LowerRight := 1; + end; + if Direction = tgLeftRight + then Mode := GRADIENT_FILL_RECT_H + else Mode := GRADIENT_FILL_RECT_V; + GradientFillWin(DC, @Vertexs, 2, @GRect, 1, Mode); +end; +(******************************************************************************) + +procedure GradientFill(DC: HDC; const ARect: TRect; + StartColor, EndColor: TColor; Direction: TGradDir); +begin + GradFillProc(DC, ARect, StartColor, EndColor, Direction); +end; + +(******************************************************************************) +procedure GradientFill(Canvas: TCanvas; const ARect: TRect; + StartColor, EndColor: TColor; Direction: TGradDir); +begin + GradientFill(Canvas.Handle, ARect, EndColor, StartColor, Direction); +end; + +{ Initializations } +(******************************************************************************) +procedure InitializeGradientFill; +begin + if InitDone then Exit; + MSImg32Module := LoadLibrary('msimg32.dll'); + if MSImg32Module <> 0 + then GradFillWinProc := GetProcAddress(MSImg32Module, 'GradientFill') + else GradFillWinProc := nil; + if @GradFillWinProc = nil then + begin + GradFillWinProc := GradFillWinNone; + GradFillProc := GradFillInt; + end + else GradFillProc := GradFillWin; + InitDone := True; +end; +(******************************************************************************) +procedure UninitializeGradientFill; +begin + if MSImg32Module <> 0 then FreeLibrary(MSImg32Module); +end; +(******************************************************************************) +initialization + GradFillWinProc := GradFillWinInitProc; + GradFillProc := GradFillInitProc; +finalization + UninitializeGradientFill; +(******************************************************************************) +end. diff --git a/official/2.1.6+2.1.beta1/TBX/tbx_glyphs.res b/official/2.1.6+2.1.beta1/TBX/tbx_glyphs.res new file mode 100644 index 0000000000000000000000000000000000000000..06e6e86d9626ad798af82d69f03faafd3bbb7494 GIT binary patch literal 256 zcmZQzU|>)H;{X347|28c8-P3mApZZKi6Ml+i6Mf)oxz78k|BV>gCQ8I(m(*AMFYrm z0Ai33BM^c>1DM1l{(~&V3FJTUACN!5V;~^Fe?Y*2EkOWiq<{nS0We*_*Z`vCFF^S6 Y7a;O10z3xt9~cPv;Zst0NM^5t^fc4 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/tb2k.chm b/official/2.1.6+2.1.beta1/tb2k.chm new file mode 100644 index 0000000000000000000000000000000000000000..e6e1eb0d2754ccc19f6bcd173e73f073e924cc6f GIT binary patch literal 79536 zcmeFZbxz@N{`(2^er}ECDnNn)00=KYo@E}>h}kfJ+!4b4 zQ^fzv_?P~#1O3ki@aeBs8R5^)_+RboFQ@NE4eMW>KZgJbWhMDv66N<3>X+CF$nto|bhqI(}e&=E-p ztBVUO0!36K=l(HN7JSd(9fG7IQc_lwkQGw`idZ)YM0r3kAS?RoxO>pv-`WT z11RDz6)6*UH#9nvhFf;jM9v}bi8=0H9I@;ONnpv0v zg`~SUVEql4nK(OJ*qS*x8#p?f7&Fk?+nNCd&kF|w{ckiF|I}C&30C>vXfXY$v4t6H z{lC#*{!`<}hjc;Yzw>Z1a6_ z@K@j{Z$H)F1OEcmENqSK-2OC~^t*wBn0De*sbk2767Dj(uY}CK| zMs_y#cD8@kgtHBhe~@UTE&Si0seuEn`MWeYl`&Z!^Ka>YErUN4{HncTq(AJDv<28;NQ#p zR{;M;4!>}R-x>IAegBa`4`sB-@AUs-@6U3XH!SfY`pvJZg_DJ$g|&sVyRw~`nYGD( zG8o_w)ko&!{Pkc_vNtd?p_4VR`Q!En0C1E4E?0V=+54T5PDV-SeZe`JI60XZ|NSTd z6krCHNK*gbQhzV&U%>#D*cAUq{r8M)C2URY0EQ5B|3_tIM*~|YQ#(f+x?gu!05_@L z{{s^bHc=r)b`EBG8V+G51{wwi;rE^(BO47py#T!s2ZIQQ5Sx(K`@Qu2{$y)p@@oda z9{U#mFNaVxaWZjMHZZg{0r-7Te-HTY@h=1aGVm`0|1$6|1OLBc00M#&Jp02dm=V}0 zs3hnph&;#;Fcokp5IRsafEOSOzKo6jKZ-oI&0EYJ-!}~}0UFLfAYmWi|__fI(t*I{b zYxMW|_x{GO@h=?W{Um=s|F)4t{!7F6UHIFPjQ!_8lH<=7>96NBRPvu=;GI9)U%NC= z08l_5$&nx=02LrEE`YCU;^<^yXN%8F%f?L0&PLDpjuZc}SMtl|SG>QoQa8_5C`cIi zd-$F;BH*v@jsLtG0YKh`e|?2yq^GCH7dNrCf1e8&z}b+|>fISE;P-d`ci&Kef8GuO z;P0`qmfp}|-rHXX?E9XMGLe$Z(Tf_$udsxFNdNop&fmK?|5N+R! z1U9G9v(+HGO(OZYSJ9T?ZET>zOkdyTu!<22cNB9i$rlv{bGwU+?)!UyesG1oFaQ9D z(C*=Sam$(Ubbj8MeM9^dZ}5D7*W5qz`D9D3lKm$VhJS?;H~?jv(t^^ zA~P+swRLYi)3McX%<-G?NTiKmaxYoUEsQF3MI2-(zHl!9iPImLum>22A3!jzV1R=s zfHQ0^SQ3qW$a^i-C#03{Grz3;v33J=dBys){)`13Xa(IxL*{Jhu_*3Kr`SVzUa#?6 z`E$yI=lPPROwQn8zb|osJ~xO}S0;GnW1Gy+!NsO%fGEgE1l_a#pT0`DR}Qed1W52@ zdpUc=+MDX1vY%$K`8x(pA4%nWK1LZ3MdsTd+FxK$yVIwe#RT6csYklooW<~39lo07 z?*}fQ<0o;glR@12G0OMl1^gV39U?}C`*2C+Y_@ayMwc4mr6aEXh9OOR3cvFRAD~8i z#=e;>MQc#vX57IW+v>Y>n$YqghZp~Y`r)17sP7vE_6p~4w8JI0guBqPVlZ&cq(GN? z06ojrS_A*pCa=>aUnc%GnP<=GE(|8=5j&MPcp|`RhlY9@h(T0{+g|>hDH3NvGgo6k zVSyi2=b=V>VueOxpC6Qoc?UhfLf=X5f*=E@MHnxvlKi5_E(Udymzi`vvVn}#*9{%Q zSKm1YDis?hR{anzP!(KUoclvMT-ysZw*(Z913T9I*a`RmfH`Qpv$HVkTMd|OQb6b% zcrO{yn?Um@W)v4S$dS=}Pqf`J@)SS4{!;blU58X$e|elxegu%r*V)<5g`(0Lk0N|d zT-g}z>DBwFGd?$@W1AYV_zOdj`fu$lk+0rA9T?@*1iIVZRM7J+K(n+~7F`q>MP zx#I@h^G#X78IE3q+>II2Zg*Flx|vH{=vcpD5jR1T`3wibm~M8Nsn!HTW!n(C0RY1f zyeE>OPlCKbJLuBIJS%Igh9o$7A@O`A)$~z;3%=odRut>D5)VrP0k`IsTq6+;KIs~4 zOF65Ydm9gb9t*EnF2qv!}NagIniwv*!x1!T- zK3d=?24f>M4#9H>Asor^8K-I`;9r@CgQsi2kDm^dqjd z#>c?s+->s@GdxY_n2WXK^h_3M1hCk!`xT)qy@sPm_Z80%nW8<`KFUm%FY#5_=2;zSx_ z4^TfSW6MW^i|~H(ryQbyh?}$JjY}65qDPReZ>0`uB8qM-U6+;Fl!T8`+L6>)mBd*u5t0#nQVE{0{>-v-ar`JQcQ$t#0E8Y`?ax3 z#DM|#!$M;{)Gx3gC{AI=Fu0U{r@Jhi#OaKM2L5B9Dar(R<#6}tdW@yaus#qfJP54Q zv)^DNd0YIUA6b}Wi7M^4ZMjxE;=Ftl<&4R9zS!5ahYudwV~(rvcEq|wu%`x`DL&x0 z^lgp?1SvAA3vD)02SGz{aVj-_6viS9P~a2K{Ya1yEl%Hd+P_@T=Mt#X*;YOM6x+ja z6}o-fg3Ps(BkpGnLDYk+9f*2nz_7?{bUTK%%KPwBClyONWPo~?t0)}j|> zCG4g$V2uNRPJfc#j1Xuj1~^xvlV2vLTC-r%)sBTYf5RvcbRkE*bRzsBoeF5^)hy(h zag0E^nTCiO7)s^5?Ii@4QKgueJL&r*$=O&}&yM773-WPL!p4Yyl*!?{O2pPH|KA^1HW4FslZYY2Vc6%&!$aVCnZ<35FPTy09*}UM8$&_12 z{wiLyOhEl*IdV?sMqa@V>PxJjM)uW58ALXVX(q09&#-*1+W@GLI)ygFXK`mFJ?`dk1SiUH87uwwq=R-1bb2Vf3|hZRzL6xB!#`9YQhs>Xb|g?u})q@1)DhwJy@r-l1G*GDMyI8iKb}AXM#e zKYublvDwHU_7@*2d|XeGz2St*B3fIn*1m@C_mxCUUfL|>#Vi%Hw!l!uH)Ebzou|(A zTuj5E>|uTqgn7;m>IC`$4Kh?yY>Z4N&a>-vT3h>#X_c0&o5 zqSI3+NC3^AMMaFvnpxV+o}w>0CsZmqfe=g^kjV(Cm?E&p+!FCYhXl{*D_XXEYa4`$ z8ly-5i;{k+Fw?YRXO!?2uv*F7_i*AO@*s9L zFcSWn>u>I=u8$n@X13UY@yZU_XLKu@+o+097POFcl-HOq}svD~A3H0iyspn@tr208ODBnNg z+weMdLZM?|wSQcKxKPPLl*ErCSURs8#P>Af2-gO6+F&?4JqNA|-i#zT2A?Mjr9(7( zQX;ni_$W#m&w%YE5~GMj4qmLsE5+B5A``G#-&k#gGmxCq(w1?G{xg@U zL9HR`iCl)d;2XXL4tY8~{~E19cm2srtv{vkTvzsUrpEywYqkFLGkz;U%o0U*qOfRO z1Hfop?X}p+yxSfgk9W3KY?`M)&x`RzpDObUICQG`a4Cu!XfKP`;z%2B++2sbUP zs=mzXJe=62;f`ZSHakUOmoeidZzfR)=S#{uDwUv4uPd@w}UV-B;5N?)&{OY9dvJHn$;%rz;6}9dm-itV1cc3p!8svcPzVfmLN@@85 zdssvFEL9zV{S@rm2Tf#HD5_$TF^jeJX~9d_Id11PFjN|$3MIZWq-NMEj3E{527`G! z`BYvcCs(oQ(ui_zapIJ$J~GjmyAYxUb@TJ7u-p&Wx}pwv2?WOPx!~5yCY^rjA?gS0 zdxAwm9K~Og*obUc&z(A)eY;mqgvaHEI@nuJ1T57 z`^u}(zqyK3uVb#@NFUoaSKVpIB1dp`!z~-GE>>)?t+X$BWiuz636qyi6vi?k)^XU7 zU);AVGdR|{w?R1B9E?OYJ8CO5JfT1%W;O$#nU25VnjDI71$=>hskD7+toN;9t}kfJ zF%E6l+Dr}wqe9#p-{}SwHEvH05e>9Pr00;C!|#kIF7e0gP!q^U+AHl$c-GgfB6UU7 z%S4XN6t#%g9YLCZWk*p^073{^e6{{rJKE>HC~O$Vo?b92hlmMj1dreoCnYycX3EwX zh*-S=amg^RGT+gFT^`-YRmG>_tjQXFJISC(hR>QAVE+^*08}u1okKN5+<99uGf0qW-jCCl9v~$wKS$fn2tvY5 z)uuw~0xJP7=-dx^KWSVZz>r(*>2H)*EBdYl!Z@s55j z&m zu{?wiN95pv`i*0nH<78dY|A@TI@kVe0|I<3J@RF4rx-ERryV60~BBH?sIvjk6SMfoyMhW#g#5(sh55ECN>z4(g+;2FV~ zo_Boo3t7^4r+O;-k{&u(Zzfsn4z3#`SZ!W!U7z;_RF!4u1L0^0f_ulu~N=H&lX~`AsPwHruc(1XfmbU(UZX~t&eU?{wQb)P$_1dNH zD;I+|>Yc3yw0-T~;%E$waYS4F$i0n|6N?04RHLJ8+6ik9=aB~2Syfu}lTYHd<2hHWpX-BQ zl#+g~L#_8RLSLUyX-Xg@TQ)rAR$wT%Z56q%xW_XjpY6=&!*$bR8Azwl>et^@LZ+DjWWK$ZOjDpnQp9Kmu$ zH$jRc{>_}L&|>Z8$;g2#miibh;`0g)<{W-1dgNpWp^iM|ErTr%=QKE?OH$p7Tx}|w zby1=Oi|#aPZp%<22b2vT=Wr)>D#E(Lv*TN9j?ld}T<^RO|K3ifW0fUH>OHcFk)y+m z?`5lqeV_N7Fv|k**UviN(H0uMnVFxip0ZRw(ygx*2|KN5E$@)|Oh5Zwvhf@PK&n~- zEhN^M4dCbcUE(`=uWUn(tI50`Nf$bv%z5y9?Ugs`F?|{`F4Aztk~0Ool*qoFpiLbh zxhnCr?HnS_e~VX+ri;zCT&#!+Zi^cl;s0(xAjwgE(+=O#TglpDn2xpK#0Jq!z)8~j z0=k2#mF-=)1)>gmX0&uE$YC9_^fsYygy~uiiAXrssNsMLX`Joy6`J{l>zgt{JIQOX zyX837H<2X1fUFD`*WK@5s4H~>Q#|M%EVJ3m@iKQ_T6YqwJ5fWpnt?!i4T#4;Z9^i9 z-NqrjD&DNVJcNEUkBG{vBDP3rcem&lFpnWrU*&(sxa+}SBrVBZMP&8>Fc{dQIvPS+ z@Efr66zs%o6;SG=Z$E;TBx++e%}0M{y1(wMm)Zzv9wUr-ATyP0t=L(YqJVIHqLml5 z%|Ir+AI|?7Vp8>uRhxSAR#o=e70$v@2oeRGGIp+y_;?QkQJ)xS!)()P`F-!k$_{Y%`?8b;40&)y&h-2%%`MP56&Nxa7%&{my-(!&G0MXWRPJozJ{(!tbLz>3C_ z={qwz6idmokQ6x8H)!9(9DjYrpg#4~7AB0ceyX!x-sIVuZ2H3ay@B&kdw$&5nM0@T zQv8XPxI1eDZ}gw8-PluuD#hG5LXe4+o6Zqbzwe; zx41sKLg>ibTiPT{JxKM=R^Ue*n84B@)*bDl?z+OHpPR*^G6luM^>t`M53GKkScMhl z3@{*ziw{RA|Jo*S%5=vPx4Xr83LZJX5QiP9pw89c@gHYBzoLo2QbHdyV*%=fio#v0d)aNz9 zR4vy(NWbzn&r?QA58L>*U2r(|v#z9q=ueyp_^vWjY)%&Fd{)sq+W^b!N!|sI_q4wm zm~XV=R^2va->bLDRpVNSEHkP)?Ew^FWIHlkrCt&H891QlcDZXH1NY~jeud2Qg7h;; zSfJ1&@c9a_)u|Nh7~80+4pyV+wK*KSOoTTYZ(GatXkO@TBaG$g`32Ip}su2|TRX$QA`H$m%Z`6@CbteZ9xus{O5*gf$0 zpKjSAOCxw^ksXc6W&K>*K$OKixcmJqKD(SzJTW|b(dy2X!VrUtPQ{0^yR~UjiqmU( zz7}L(&brhSSa;zGx3WPI#1kV{Hc^;)wojE@)=>hX&SB}f&y@1+NJLe5WIF7+hhml1 z)Ib5xlUtokW)3x#L$xa$J{MZ)0pphOP9zzl7!3H#8aedV!x}plv*#7%8OfigSME4e zxt~!^t6W)zy1p*cay6W!f1CYbsYO0j>@=;6p}duo5zh-NSl^@pF_y9vCm`H*5kFVl zx?f$&9>4U`aM*nA(lyLf_W4q0=oqf=2ak_raK*B|lUtWJ(J;sqYvX}S=hp2((u+(vpIX2{&sUXrRi3uU`@6=qwU+Tvggyvj?2{@CD;hY#*!^Xen2w+L3jn+!z{}W<;CW413+Kz6CeBR2>fz zDG^Y#p;0pNgotg|y!9%7AreilKsBK5*`R}@y@=Rpfn%f+j&=$qRtCD!#EVXQK}5ND zP!%8Dx|EOXc%ezyuG;Jc0@Oit(vWlRjhz**ZZ0LkT>G4b_5Ev@t{`D2tK3q$nCoN9gGJ&ddV@r7vo>yK@_`s*g* zUjIucG!xBu__LAwOcH4y7N%#lECEdAhyWSxaej=?u}dbk+6sf=xWpwf!!sH-wuoqP zxicK@qtmB@Hr(EZpRYK*mNuARPdyujdBj2JQr)7Yc}^gecRg%9cJZzS59&TYLq<0r z+s5fDyLHkmuGM;7(9V@K9yBz4yI8KToLB5TVA~Us)5spe-o6*vg@&Fpoq>qRY5z$^ zh*NSqL?H|7CKI&h|Hy9R%I3BaB}t2rW!;Zt)MP4BC<06BwN%|SC$?hV)MVZGl99oq z

        hBf-nqaXedNAHUeH%Ic=WZrWMFh)W#28VhL$9?r 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%0DRV#dxv= z<5zmVs!rhffPWH!ez<~H8j+11IeJFfC>+%y9Sy2pZqWPw0Ps`{`n-z-y;?QUoIdb2 zRYs?o@AIwGImk)lLfv<(d%i8Wcy>!u+S0oVI~6nTG2fyp{;PJo@D+Xum4`b$Z%kmV za7|!W`z}SZjZTw8hW6tKGkk*r52-`w7rECHVrZxNrPH~35YyJgTc=E*11E$S=UC`wrz_Hn(WmZND5 zdOv}$u=vQ44T~qOpU=`rK-6xcorGT|`9t>(%B$XlE)(j=yTNK%oUwJX4n2P4% z-A43C9kL7%nwd8AhYwrZBix|*<@Z?zT^FF}8eVJrJAA7>u*$}*Ad1cL>>+Aw4wBt& ze(ed3`GRW2bSULeM~UO3Am}>KWptfh7&v=8u6ZxnSCQqr^YUX(@Re3i6fa(}ak26~ z*ECb_GCgl$*@s+qXGm{7Gty?ypgQzJqED#8V@3MaRsDr_3?apld-$Hr0y)ZE;`r_o z!uMmD7n2VEv1(!K8z}p-bRCchKZYsq1nR)RyxntqA>IQPZk41xO(8k3&uVy4)O;VL zz$0uiIKN`ZmU70#rjaAoJ1*~L#bmm8Hz&aSbo1IyrRwi_Dhx> zg#GoXU-kS;BREj-GUM$^U{4iuiCmrwWlCH&2P>BW)g+5(z zpvK+*^3a`F#&l)GJQQEcjyg;khtS zf*v2qZwnkM>xR87FMEY3TE~Zz5_gog+{eNLB5dQGU#j`IPtWLBevl^(>g9x95m{xG z@?`D2wOcyJIcM)9VA z_G2*W`NGRG?=2-F(Q0OjcOIV<-po>K9hrmq0JJjoYm8!3V|p*x6pnJH6YW7V<5c`Ph|2{8LVyR88t43Um#G@#O1fm_YC@^B3OP<6AqJ1S zG2)40je)~n-VJ70bN)^WVk+lT4(9uBo!YX#+(xniDSbh7<#8U)UNADF&IqL4LLxuS zgA|$*tUWvlrsa_hoTis%d771at`%z)E~W9Ie?kd02{i>kb;KPj^@&{Af#}w;OB{ROzmPS+O8g)4PMI=sdO+jY$RaSZG+%P~l3c zaPZ|j<~m~BRVNc4a@g6~S9X6@p;91p&*uk5&0DKB5|coV14kbx%vZJwJK)zem?!Wk zmKw164?orYr&uxr84uswe_D7miL?(t{&uPo~7Wo`t?P;)g#vwhf4= zhx_lgn^DiXEk6gE(bSUibogIC`NtkV;0%5v?(48lr})Wx2zWK>@S18OD0X6-+R53@ zka&FTLJzPu$juch=#3x>|HddpgE>;^aeILmeVBO|`gWzJPe1r_U_y!K>B`Mu6VfY` zoKNH>Zoc#aS0`D2-FJz}b`+-A^U2_1HelKj@1A-9No&$0TjHo6ucP-zva86+4{P{x z#P2FfU>xw^bU8Qcd}DgPsJBEXmAOU|4(6`P@pYDSCX|-}d`MUw%dF0<>suV`88ZA7 zx6)$}6BoXpRtju9ee9IaD*fg=85NwYWP@ng#S60f5#N0FOMlocfel6+42c9d z=f4Vn18+@CJ+GX3=vtjs{IE0>QwZFcYNR;K4h+{bB7S3N^t1iBIQi)4JrB#FyO4AX_n4|4+FZvhV)P`p90~r*+td1sNOa=Ot0Y5HLS?RaXVPMeDe9%JY za|~8AhdduRfw745bwny~#`9WnsphjPGoiWpIl^yOA(b(orEIxAeym$Srq$jzx3aDd z29~z7UKw&}{3$==TIv58Cg{=!y;@%D1dS%OIhcIM>Apz7?5n|+3~d)&BNBi3>%5A` zrBRxuyL$Y!&4dINLS?dr0m~Ak^9cu@HU>#-oHf^>*!(5Y03^UjgqQIFX|+7G1VIf> zI}IvH(LQkJKDygVF8NB?|HiC18$eXqOnM~(P~71sfJ6ug1pt_sCe)4u>O$>5vc`jgZjzsG^r?VK?!~jO+;!)?r z7+N2y421?99P^Y4A1-Xr8+O(rZZM&GOZLH3Y$ASbrs-v5#?)4+uI@ z84z$#pSc|hv>(h92(O@D5(1e|7;WT617Ja8KLZA1BlLMPtJ$lK#v6?>W5hAsEJ$LD z%~Fg#^Bx8ylt7ZkW|K7>@tTkSF91J4z`sP#AXW0%)Qki3dPW{7K!Jov0JCv{1@Ytx z<`E)FsVGdqBf32R5L`99lg1+fl61t6=>cN$Er&%P!>E)b2{eEJcV_lSMv_lOG9ikl zEsPGa5R^?xiEm1DP9ynrHz-j_-YGAIV3fj5s$Q$*JY)=wU%GhbEB04tTw(|a9;!xV zNWv?&^DiOmti_Ys{n7GKp(^O<)hCMz;QoXs8NSCt)OGmPsKDX{HMT=m0#X&jcpQmO zLo)7-P^*dz&eQ%upBn@c7-?jn-6Me`5+HbA=A@rd0m=wlH3&5bTb!y*M1hz=ghcn$ zo>@(REE052zU5us02hmI$3^}O=6?}IA5qW&hbEGD9f-%Kfu*f^$Polmb|6}Pxj=Nf zAN}2c5PZUF(or~x7$F4aMo(nJOqb_6hs7B9iApAq>3DEtEFox$TAL*UrE3QN4zx*! zDc;;v7*t}~Y4flePu@7W?6l6DGm70w0yQ=!Y&AAOz>U%lQDsy83Sz)UGCJtzEQbe9 zFWQFCc{GXk%}c-t_{8;G0OxrBUUyW4@whH8?*2;($cf$Lrm z0Vo`0q&)Fnf%FJ6;$`7zFnm2{D77>ml)2!1i-4f65*_pBr=U7+n1LBoqSLMrZhVHw z)RaJ2@x+NT0wp809KVvUdAvZQrZ5sc0UG7DXjBlo6Mvu?f6=2NYB*)@6F_`ow2PO2Jb55Z zX-{Qk1oLyevJ(Qw-atmuDj9imBU>@waf~Uu7@0|^WX>VH$RC_& zif$PK6rMb+RU`}1r~tsfNhG41T)rE+OtGNCGUq`j`-FGD`R$o73HTId7DbP-rjQni z%7)%hGeFg=w=z8Zpdc*}*qLr|Z_FpZo?MeV?`)VzbsVdi6+}FB{CRu!&->ANtuTvT zh&-h`z35HC`=UU5!V&X7v}fIWw=jfUD2f3Bqv&i1GQnf9Far8KjmF5%NK4MbMa48} zn}-%zxu_SaRYN3K(THK2;Fe#anA(<|7IkgM%ku5|G(76VJg&5*aEBiaz5d#9tu@Re zFB3~vHdHUI5y(eZh~SLgr37ldAvquoGLsUERQEbz_Z~xKnMnXMyrnGz6C)y{5>kN) zgVK%ap;o>UjP@qv)mw?o6*I|9{nk2zfF`qnwv!`|Yn2&a=Q%C&qCtk&9QjV#OH%*U z-EI!fHD2ags;;W5-#T6-biI#fpgsVsMtxi?*L)$wsy|;E4OwtQt{Rk0QQq>fLz=WD z1n59SBeYg#yyrdQI7;mAiUwiRFLhM+V+jIPNyRqoP%m|k*##S_ zbsnHAwS>}4!q%GB-)&Tm%Waerb%{WalyWEO49xCz0VwKn50)AMTgw;Rf7x;nsuow! zpM&OFWL5e7jkllWSPB;3D^r~A&_Ih)r^B9+9QIPQLS`tJ3|LMI=nqUVXK0=sdrX0~ z5C@Insu(CZV{M-~`B+6HXmDAa&uciU;}cM1ahx#B~%qO1;_N3I#dLP6>_6(qG4ShMEHG(xjFq|$wg zG^FIBw}KRVC?8}i!VCE9mZP>JVzV~W)8bIxG4wUz=dJoryL7WTe{ zyW{f<*Gp!C?HNJ@xLmT8VOP1Q?c1?qFq2?85Q!$LRYkZ?V?2YpgRThY%yg10IE}Ni z)2mUM+ilzJ6tb|X9MA-XpIT|Y4IB#JeS6a2!XqzCm+o+gWZqky!ixlb)!6#hL}Cq^ zhG?Ma5ZCaJx=RRTB+UM1qPhUJ8~TBAwK3n4fFfQ=wMDG)ie#nZ$&Nb2>q8c8O3eT2 zm&(|SYXQ#$<-2Cc!;4AZPyZbop5+D-6#PAPAj>C|M5yBByxQ-j9rQ4~VzF<<-@Mu2 zQYKikc0%F=U%PpQp=w)5@Cj&Ifiq1Z(u=+a zG-0w@oUGxwYCpQPjBT1N$Q0024@&0UYW))B4Gl)KZ~|j&Cs@%ymYVklW(O)lyv-U? zpW3$)9I?SI);DP*Zd+CryzOXTo~SauZBi#SAq?ev*cvJoAc7eA%k#C#joiG_0cV@J zDprp^nrBZ7pYvOV+tr2pnyPu&_BRpVG%53~Xc7pqOVNiyZ$W&g0b{!3-=h?B+G1bz zW5nw*)ObS=CjyquSW&7+obUW(m{moug_VK zHyzG@q}BB{U?n8*jU|Fd)M|rv9irR}9>TZ7`yR@p!Y0|^P-AP zQ~e({!36VSrU|~_?f`>VY~>iyVTjEMC9u+QAK@?D(j)HApiC0TSz}nYv_LL$hA;L> zOJI$mxDQDoIWBnlmsY4#ZPldgdgTj25W)ig59U(*umdzL94xnaMKi5Yi4W_JVdL_C zJM_t4N?2J60Q$`yz3WjoC5hBOA77tH5|7+InTeoHq`u%7%B&`}^jtu8yLyt;=_!z` z&L&fL=c3pvphv-D=*CLzrYbCHAD{}U)Al`##Kh2=-&O2eBRHCJ;AuWItu1ykq#tp` zwjJOa=a3)#y@>|s?E%H#cr@RZb>w#p`KpQ63)EG%V0$zEA7t9jYo%T6vvCR@JqCYzk})Y!;Kgtq1tccCY( z$=EDOIk!$Zd)}@?Zpf90pF$w$P64MeFU(uUJ7=g+ZrkZkwIM7}RH!klilf`M64s-8 zGxAE@<;$lc1gi_k%QyLS&Kl52y)oKkIeEhA&tehzs;*3sSDhtT6;vZjilo7iV~O+w zcpQk72?aR?1@d)G?d~dy1diWUr|qq=lg1q*8}m}@X-**S_&|8d1oz3tiiB>nUL@!$ zC9@FQ0da_0e^`RGTnJI}AvinK38AMmO(s0+I>xv~b`fHVt>|3P+ywTO==NH8i0e2m zywW|)>TzSk^@CD-u3iU#jAy6hOWek#IZC^?3W6RexC@zAJ#iD86ZLBKuibD5LNQvE zVX;)ml<$e^cf(6Elra}WurbKYMgx>WPF3IyF~qpoj!B`^VyDBW9h?7jG`Ljvjx+`8 z?diD?aqf301z?$(H+*A1^s}W~=3G|vk6Sy$cB@XuladLwu1gs%A_C!5-}E_eo@EA& zr^{o9h9Fd(t3$-V?x@NHnsd<&+8R~4PEUK;sy;S!4huKWo?v0y#xAm9?VDhbA6J_X zPIEU{iCJGAwb5PUvpC9qGI6Rc>YyONta*5-Ow_lncc%@i8T|pJvQrV%IJS0=5T7@& zBkv1@O(moJBf#Ai=eDaua}FMukx`~lyPF4G16^muxFP zn(|)JfvY(Bx*op`i!__o4Z4Hoh#rSjabSLQ4IHoUgxA+~K7M8}*;W*$chtfq%gJk% z0GU%?JQMVUhdZq%x=eu=snpG(HUKgHQxMz8T2r_Dcd;!VQU33%2i1=l)!(x12F3zYkIAA@OkLs3mU%{or+`Hy~Z z6JbXiJe-AK20HcngCy+1I`TRDPYBBkdd9^7W*0E2h4C@=b`R5ontGz zyBI%AdY8#Kur9ASjW$WfqE=)(48w15E{T|ub+a!iQ0F;W2(xFvKB+ae0ZkwHh`vPc zPc&l`m9e|}U%3MfF)(Z96}yi!MY&uWVjCW>xCn+Ch%HMjyzxMrkNmy|Djw#&NE&d% zKkvY*)d~qBL$K8Q?487-jNb}RvGj5+tvj-HkgwD|D!ScW#pa%d(3%1j3zWReV}o%L zf-0j#CbCdC9W%f=SZT)Cf9NUtXNPMwT9fxRr4(FU8H)(xsc^H!M&)ZMju}}OlR8qo zq+u)*-3+*t#z)5JTHOvn=1G-)v6ilS>}k7uLfJcvKjkGw*aF_O6j|c` zuc67*NKCwOd7X5_DnziABx`pcV2Hu*1^IQV%bYf(bnUJ{#CF46+W=$RWZ<(tSMgGl zlgaXne>DD7UzvAzlFmj$dG))R6!RImCX48Dtc6)in4a~TGG*T18mztcUS~eftoTQK zf8W>vy-T%DINx|9$4#&uUVBV|5ovmziBWI<%P{5}yX!fPdN=Ts1BcPv{Q zw_~f&f3c9EE@k65eP(SpmUXY69rTJsBHtr-;vFtZ`?*`Kh-mq}yZmm6cns4*?^b{! zL&e;7b9}Z2_X2%~-y@xScC;HyY!#oA%%!k`Ubf3>nY`VQxXZ|WB4o=!7eu|51-8G? zzkcD^^{?|nFPv~qExl_KPmzPi_*|y?jBivBNJL4^!Y+{)FL9RF?u?5;f?W^Z^|=yU zC7f-+`2Q5+RiujFq}#T=ZD1*UiJO1}BvMy<4Wq%XpG-)bg9Qj~@#HN#dPrj1?OvZi z9@(O9O#&CaWBg|BnV$C}xeVUUpTEO(upG0IaZ%=h)6V0A&Nytw-@}Gh@#wvP=8q@b z9w7RXzB3o^T7QUG~1VUI{6?L5_Aex~6DNCMfmzj9A&DL`L@?&7t@)5nSyGlRmf8yp_zX5y#Vb zND;Ne&okX3xBwWeTBn!?r`!;tDNm)R_8jrGanG%ns1=LP`&+B(q3kg(F4#@=#`lF8 zkb5B8-BFD(X}KP2GmX84bJweIeoRkit)s#*?T@sU-?2zKRP~n+dp6RBU;~z~8@d-p z=3iMk8|smJF^tPwGUSKHM@}PSq{nTC4B@TSbQwik0Qw*cYHjd90B1z8HI#?z+7`e` zV6kUF1u7IPioG&*olCa$9xeg!>NZ@e`%WwBOLdET^Ch)Sgqg=wXAxH znP${@K3K)Pb5ivjE3(B#+x$c^Yx!B({(P8`g}cL~bTW0C<;_>ZMbpAa)nLUE^VewG z(8I%es$mM+N`W-v@EFhq$5!)Yj^5^eX0Z5pbnAh4<{o=vK zb5qMk=cF6**M-P_$_}N-<^I#B2ed-cS;Tlx*Mfq%-{l+{+BGVlGPEVL*$15+wZq1+ z#COrpIvCj24E*y}(Xh&aYp%ZTso0760s`cx$fVcmomF&P^_?$*<~iE%k%jobe5Yh@ zJDuv4_u9KxP2UqZDd$vbOHOkH?FXFq< zx0(BPxV=y4x73>&geDQ8?OTvbxQet+dMDk5xotWzzwgXZ-=Q!tPjv8owqwnHK#n_$ zDG%aNMRxn^m2yMJX_dJy(Z zC;?i2d|qefUZ$ox4(wSmb1AO8IgIhz7&PV>bTjMuW-6)nJo~?40wk7cf0Ar^vh2!E z>E|Mg{biz;*2ZfSmSxYoDML(@E-JzAp3EjnV;V>ugOKcL!H+h zxiCK>OYu&is#D}CKvVo{R?#z{%9sTVDC6;&Gvh$(6H351Y z6p`8$yl@}J=NtZVALE}QqhHicG>GsMYtO#dBLaRLuI5dv67OyP76OcjtS6}(=Pe)? zJjF^cy(KJC(Z-B5p=_a|kVCIwwzfat#ka4$K^?5f!KD7ONTQ2nJrJC~jjcZtpBOvq z6f@UIm*m7T0{;5TK`$5Bo%7E{uYFe#^OkznS?$HkVBimn7^3MFt+LD2PIn{Gv=-pq z&w896CJC6$l@+_TjhY-mZh=*y9F#_~SBm-q>Kh8{Y;Iu?SRT1h@|a~lq1UuoZzE|t zyti(V=Xo}~J!0YdpJPp!T1>#JC1q)0K5zl=XgFfjhXFK zS8XI#EEwLC;8W=`V!+A)>*mx_^ZU4FDjPeSBSfQOcXslz97%6?Uku)gCozYf<;36k zZ?>Re0TpXb=g$~gh4OknRTE%U=M?eH9U86sSkJ!=CfBbl5z=9fd)%6Z?Vq!iFbWv| zP>j;Mdh4a5@>O|u#R`XC-sF#~0(rEA)GA3&Y$Gx%ykPSL#AyN5@gETMQR+9Bm@ZKT zby$c^JYdV0FU&H(5w3E3GU`9Zn`iILnuEx)o%CbD>BHdGP3Cg(cBy21Yu?E-f3l!C zfh@1BD+{>$TVGfGLyb8}pBvHnM32@kyh)>epPBB10Zx!SZocTZ|Lz*CzXlmY##PP9 z1YRjUhi!bMerqXqi6<9`JjsV_j&EYV6ge^d=%^5 zIN5BwQ{F@C_KYfnpampZhtJf1e$kW**x=kJ5pK;%fpGgEZ_(-7!1Z&#vGZzm>&cC` zSC2FPi^AB)S6p&?wWk!fL#GLynfBOsr~_qb{Mm{h_=5S7H;&QB7G$w6 z#LlpbBaqX4`2=SoH8CeXunDJE^#W`9=+NeT%^5jCxV>R{ZS*8r_Cc~cxB2y9>dQU* z%-SG>uQ~8MKh)rQ&#Lch<#G0;5XGNHRDJ1P`kkU zFIoS7Mb>AYNZW!bShb^Hjukdk306VRSDJmHTc;~e?y6|+m4Md~GXPk(mxSU51^oQG zEnv`26L98;FgtYb6X3{)!~VL?JKdKz?afb|h3-RO-R2i!>JR+=2A_m|`85Av8Amfm z|4lGie(H`bVQraBZ(xOt35EG{7>*N?dxxNd3bI+n4ZgAiaDsP3uY{p%Z*uJScqKdx zg^+H;-mcHKe#ekpx>XbLs>~JDQ)Hs-&6I-L^umZ#Zr*lsVIC$!W4$;K;4OzY0B>6; zb>+O5BYVb}_(dvH_4r8oll-pvznK^S%Pc2YF{<@Pu;;tpl@scaTO?Jna=&(24Bd3Hd0{tZBeG9SYXw-voVi2;_a}F_#K*@i z8|Zam-C6l;bMI_(U^M&9Y>uPvmhcA>%1fWGcn$vg7)Tcbd%w=nX^P~?yjDSW@VDVnP5&M zlJNZ?c&r#dL4}DUh|ofIx@UgiIWQo<_+RA4Du|RYypgw9_ebJ0d`4PkF2U@G>Nl~Cwxrs~vx!9& zzXFRmjcnPUSFFHn+&DY7o7y1T@w_&upU9BHJ8&lXk%Ui$&(qpQ8kF+bAo4e(swfo^ zSYA@badc1ERWoiWjQR&!`KVyuSr{#PxI5m<2s$}rQo+EAV3o!Nwkato^piqTa*Nw; zPt&Z{KsbvDWP0E%{+;2+Ph%S10_VJb?co3PXiZ{l-_t-HU`pvrek-rjacVMjci#3> zfod;ez75nwmt_QEE$!TrTB##>kuXZQkuFg$nodOe$C3jLHajAIx+;aHDi?~(c0Q|Q zRz87aO*R0Dj8c731xY~AY)P#39_i%o;jB>0X4eFpmuJA#fVep#I;YLVw=^O+D=uj~ z&2CY9F9}zd*p?~QG~up#i4WRN^JEzv0JNpv5kFv~-0F=5`fs*vp5yjUYGT&6oStXG z!LKN+xn2LufJ5{un239_^3)dHSCSJ$Q-FQ|@m|4Ch`e)Jaw?3sx|gADl9Jy}U;jg7 zOlR%iNs4{9yY>zlP2_RhmmanK$%Eb+-lt^sOQMId)$Uz0#DaT`ORu%M6HJ#9gYKO> z_KyAr0W%?ejS9pB30>X+vqsR8@zVQ+tO|$(=T|<`=@>@p)M`;&E<0UcRFbc!!+Sp# z2ns`nZ{%aXDV#U-=wRf*SjRPACMHLKlgEs#PEb;E3?KsLgHTQ|i2{C)h`%Ph$TR)U zGM>Jn*vA^u;3v)r<$RR47Y&OpAP(~W13xFa4w^89FUGshXI4zc3Nv^xR|swx&S9O9 zf#S(=!*?NRNVH{~B#UuXIX&TZcND_Vfo&2+{f4P0M!7kD5dSR)HU;lGn;ruTa2-$n zF9#_e>*odLr_Ov&G-4L<0$_g4PQ>Xh@*3xU6VTQr+6zwZnTj^+^eizQdCH;>Pj*1m z-w%P+zb+hJZ_nkQt<0TK(K7O7S1@;yHUyxSeY6EQ|GVfEE5nud< z=`S35tl4X9kH+z*Z*Q`G0`a|yXRDSlECcWRG!G=v&g}J{xd1$}NWX}?nh9PMX9pdy zYrt3Vi&2@3-NT#c7?j$QS3KCith)>N{DL$ zHn=HppCRcq$Q88rPPy(J9{Sw(j8a3nh0s~3o0H0VOeofj17PEduo|LNzye@@ps023 zolJNdwXe3XCfk)RV5L0!@3`d|cl!zatG9zwk`K`hNFOM6t2K_W19JL?c7PZAzZK9{ zGVTjj0qU;Nr@sl#O7!)IIShO4g>7Vgl~#{eQR<`+5V|)Dc!IaZr9KT4hpR=^)C{{V z&otPjlz*N}Z@+(bBy_PPd+cu9U;39p7L2C=XrxHNMG^wL{?X6AM(Y{Q;@^kz%)Ye8 zuxUTB>23VMSHaMob!QjS&br}A;zfgyVnU%U0*Byr%A}L(l7X*dLFC75`__Z<`=5tf zA9dQ1xzE4vW=6qG52~s|@BF4H*DHz=<6I z4FC{ONS+`fAfPfm+Y)AH3D5Z!3jUa`B zC91zDM3n&n01*pOQBf38l(tQ^ncdZ$5LMC0K7i-zy8j{V{A5XHv=p7XyQE)UB}uxN zrAw+4DV##XKKXbL9pGCcaw?;_*eF+P0-=-@mu?(SCCOlVfjF%^`lv!wR4F z7k_?_mo2}l&i^Cce=03VDEv!@w7$(r=4L*oh%W{UFz_)KQ<)8)AP1`a{kHLX+yZhD zr+piW`sMhx{db;1tPGn|r~7<`7T@qJc4#4t)OgI$b#h<)pOhGYz);$ZC=J?%hG2u# z6o-ey@Km{D@xVdrO!WdG7p_8-A*@!9A`!z^ED^F{7z;IWL7XWkOK7(uC5g$jVlFYQ z%VcDt!s`oVg~Ip?o5H3-b_+!qy}46N@GR{O?G$Yoge~x5)^0+PY{frbTR3(vlD5$* zocs7pJUe4)I2MexwOn72$S7PeGs@+a4KuSBn2nAzv>2HVk2JLzWe4JM3Yv{HeEZ>m{&El)=#J!O>1?O>Zax{PU;Hh2XDXz6A_3|0>j0M$7qZM2Fc2g zgk@$(NrZ)GXG$g6Y&6=Evte9qbf~b#xhW~ovF!~iO7Zb6S!$Z?ex5lq+MsAEigr7$ zXH~Kti@vaKx98DW7Vew0w}r}0m*%^4j;3{9uif|Q8f@o{gzUI*Di(I&=g(aBq=^2v z!tgu0&x2P6q)6b zZG6r?PlG@iwC(ESv^JeO7PW7yt3{)YZr0r>RQE2k(a!vRq=om6#c`LL%`ENfVO9o0zQzG^KhAC__bCp!?7C8hV*r+DiZbBSJ3O{>a0#b+wkm~A^yJAZn`8({#_CO`t)L0SfNd`2 zi)@?#bf)mw-;N+xke(gq;Uv|nCe|Tm<)kZWc!|_WQ-W4msq9Kjbn^Hz{;CHIUgDjBTupfn^m@8$5RF*uLFt2tNVD(VawX%%WcXy!n1{zP5dZ zIBT}+&aRc%u}yH_s0R0Su`6MrLyZWY@`vV&%>z1-Lw=g{9mY-&%xAQ44qJFjhcPS8~w#sl>44*O}oh)}@8){Q>Jf1wx%5 zjIgh?bV@)4z-b0=DwIRU5e_M>6nQwtLB94qX zcVh(UKy+kefN!>Tka{EVMz*t+pm{hjXx$VS^&xcp1xAV2M|@!q zX8QExI)^-pw>%dG#X}#y-QPsp8(D9zlh4#_73c}4ojIhz?TQ#sQ~>5pNE#FNl_?5N z9^st??5%b0rrRzjr8&8HI&CvHeU1Qwlh@|jPw|Hb7|SDz{d4<^h)}EQ6Juf?bOV4S zTC|l&z^MfvazE`?P16}D65Z)c?&cq!_hg&YInIKf80_2-{5FLUJ*I6&MAEbczc7Z- zzB@7yrHDQO)~5lw&)op!k7;AYy0Y#=BrOFbrcQO6(q4PwC3_eeMA$on#n4w#&IJJ6 zu0R5E`@$l!8`!#l>}D<>btK+BnHA3fvt6!2DF=5fq|cZH2C<#}DAPHM9`7=w29t(_ zXAdozm_)@;!2yz_6K(Oee0T`9gal#F<@AUyReMwQQ+4_1&kpGKbIaP6Zb<%~mKF`7Nfi zeEZS;%_TFYl|^`~9F7r^K6AJd0mTV^PpT;|O)E7THPZ|nlc4yu7vwG*KHUdyIC^md zq~oPvt<*_)#bSMgj=}ABJ^(d5uuAotxK1;!=<<8G|}*xgekb z>IprrnCbWtLgmEjA9@~;|7vq#00I!)8C)ux$ROY2GOWC~33LSZN>d*$lne)TlFw3_ zq9A7gD1&3OL5yq$`hj!?;jA-$IXYyd^Xla?g@+r|hhEII92^D_p|&7=Jpe@Q1_RIp zBiEdIP*NV?NuYGQT*JLzzUtk=Q|S_o7UUo~?SWc|ZZ?&wT{Z1(M2uU!Eh%crrC*}9{=0~Od@>h&Ts?-C2&eAML4Er*jtvFt6cjbL zse)c-Yr}=XC&AJ0+X2mFVD#K1Yi@diL`8pjo;m*lssWC-A3lA89HDX>8P)D>2QFr{ zp+b>?Su~%L^T83Ea~gh$Dc>@)A75?ak+e?mv4^4njPWYOe%$n?qQwl+^ao$vc4M%K zs#`-ry))$H=G@NT4hGaX37b&RHIch|$YxURfb3);RPyQ}Lap5IAsO3*xr@vZ>T%c^ zwp<$|Fl9yJF#Sb0*FVjt-;~hK;NKvlY7WBLbwa?e%(rK44~w1I7>c5CX(F=Y zY0L`N4Nyh6Rb^u3ysPLal;g-bGb*%-nXaSGL)MRwm3eMWBHxW#5QmQk=Szok&Qq^@ z*ptaDNw_*>?9_~Dog!|6x@zq)XOv1ZaZD5j2Xo+n%}E<)6x^Rg>WQPZiNm}tNJ2qI zqNy@WrT(l6f5t^yxs9S0002%5T%? z^*(U^Z$E!+O}1(mg4?WXDjVxdSB3HO5jVp6_zeS%OxMRlH=8s&Xa(do+as-V!-SS{^PK@0<|5W&d>-r`|1SzC)&2#YRJ?oDyZ?JLG@C4}z+ z{aTwqAMs8BY^RcRHDlhTPv{d})i4U$o%Kh@47g6gSL<7#SHXm3Ha5EFr*`~3tj>SM zxhZBTh^|*1RBFtjAZ#X1MxS>d&t*MRAXQRYSftxDk;o&AqOijGC-d6OU9Ps(lVU?z z>0Cc$vyQSa*}B>Ek-lskBw8SPt{Kk}??iIJKx8m#Gy{j2eeHGxT*@`hgKqO8xuuzi z)4GgF%V2E;JL|e_14*$LVdR5w=~iwamC>dlQSZP;;f@faKjgUrq1hzSc>V>SlMydlc z@YL$soZP>_kvAKrf}K7Wi`WI%KQyY9D`55G*tOq|87XvQFf6)2=x61#j(EQ%jcW4G zpJv1pjHf~HmkY&f7#afM5Z6UH@+I;2hE$Y2V_S0O3;b2zJ~s`sm26N3p5B7wA4rm4 zOjU#Or!6$@=JfICOUuY@_F=$DBI1Dv?m)PEkSkPe6ju;!q=----BfJ0xg_!rXjjGP zet|~VHSx!+y#<`Kd4Pbji@Tn8DL&NzF%iUqP2&^aM+R3xXSm_5ApP`a0hC1+7nCV- zeQk6ypE{m+cQcY`C|@^#bG^kp2;-R6Smmg0vbVj%Zkmp(PEnW}4KG0iu#ydyD**FOWR`fZ<4+j-+c(%`F1cOr2C~Z;? zP8W>bmYX|{F=Eea_djXCaOWquu;I}swqU@QO&fw6kr0IdGBWa23}@sN$o0t$;zZ^( z_<yN|(LpY}vPw8Mww?zq7HlGJYOx$TvbnaZ+d?K^HjM1b}(ltz8fe9egWBVbQf$u}qG5$jGbys;Sr2o2Ocop#W{*VnE@GtbC;|}{P85-t1X6+9 z&lxIIHaXhde6|v{fG!5WeXnaW_Pu2#N4Nx?x^sm21jV$#`C|Yi-evy+y~#WA9Bcjfxi{Q0sc`Q6YwmYcJla!ZE)a{i8dG*(DGKv zLC@1^Ip&)iw`b8#V*^0;O2u!v2XiN<<0>+|zD4WJx54SR0Q_xaJQ3!Z@aJ_H@mFO? zP322jj4)L5>;?g6EyJ)~oXw2;iPY8+FBH zzaEYO_Qr0;0%?7|L(*bpvocpQB^g(@&nu(1>4*5_v^y5l@lyQHPQLDX;tpw?Qk;NE zXs{?qQuor76Yp*pA1m0K3yrC^O90tUs9zu`XxeI^D(bZ97Fpl@1wALm%IR!7CwiLz z>kb7&y#-!q(lLUFq$~AD1()N)nH3l~ht({_yV{oY7L!}zn?kXyV|U7j4}&x5#(6?I0TK7TJ;gnkuxgA4B0)l5ZRym zCYd>kbJ#+@@*JjvFOOP38)iHxIkQ-o4Nq9G>D0i`NoX*3pmUh-Y`wX)MU6vI`G(U9 zrWV@>w(BbPg-5VnHNHS9+dCReS?9Ce%bI<<AzHXK0-wL+-KVx%V3k}Ny_F8puZXY+RFV{-fQdh$tvsA4Q`=A*&d{ zu}h2l)=bMFC^z))4!{V{;6>-R-g=ZG0#8N!8NXBAHYjS;jOVt)CFQv3u_WRoYTc-Y zZ681fV&we7m7w7qjilRPWXr2w*mC6PMfDiCe)qFRDco;7QfRtCLM%UbcL2R5dSI_^ zl|w0aqeNr-ej?5Ld(mQjN6E=ha?QNG9n&SaBJ zjPF`2{yA*W^$_Z|ed&oLiMc|{tGt$cEVO7@AY*BWy$Z=Y9)x7%~QjjiI55Fsn=)xB8`4?p) zQR=OdzJ9AVxsx4}irSTrP*E(&-bk^_El5Or&y5HMO0^J9(JgfG1HLd$TUW8dfFj~h z38uhCFyP5FN$N5I5D{v4$Abbj8J^^$3xeTl4WjqZ*T+gd)`B%}*`aA0vg?hSipGn- zQ#unU+_*>{?!9PiCG`|bxh9sDHdAuhOZ-yNDlQh!qLo^lF%enfov%mNU^Q*?ih;@* z`vhz?Cufs1HZljty$cZ#gL2m>y|hKbcm=8bA0FF*)iarMyh&20iq8H}{9bTQ_kBFX z_y7FLuLCOKGAG_s+bvAp0 zpYr#B!18+N08`9jHseXMRqb9igI}-6k6|jl;zcI0IB=~s>B@6DG>Ea&Q+D~1kP9zV z9?t3A0g%`-h-}q7E%F%if*%k7Gqq9)F1gE)(5o$@lrFICs8lSolQm7djiRl3iUBFB z<=&R*4FiiY$2PBo`EW52#S%VcAr=NfhLkk1CQ2^ne1Pqym|uw&DNd_9;h0R5k^nBv zz$s=$QE|l;&|HE^Ry+R>A5XkwCRO|7ZZA*uc=j5q$Nu)-Mz2%ap)I9sI7SjoN2{| z=$RdO=C&E!9kF%Q=wE`D>mQIvCY&qHymf^t?ePN9sYyEx`DAJHBael1R!HI(;w}dH zK|PLKig;j9%gDrMV-m!m;&K=V*{4c*3YMe;9B3$+Cr_KVa;3HF9oY2D>AKL~`8bf- zj83r1{8`1TOmys}nbm!voe~s7UHL1@ZvLudkB)Yye(P1BVurtu%3oI7m34huevMBU ztaD_LqQ5=|*&fG^B2nFAbVD?J@-4=@+~s(k7K~iGC@&w$(_$WdmZ0gOT=9ORFr$Us z4w8w{vN7$gpi}soAS2N>`t@OV8Omb8oETfN#i|Yevs#Byi*K&kTS4Rz9j-SpSHlR# z45F+`9JDY!Z9}MDDEi3$!6a$h!hkK1lG2f>My{S;ci61gf>|geu%P~hLB4!wA7GuE~4kZ zM63$97E=a0s2;HjRBFqh7b)Jp{>XytgtLOo-l1K;g%c$j_OD0fn8{@}DM2~xU;-(P z7;c@|40Ezdl`acUnom7f(@!cOp9R%fFJf+0TXI=t*ai~57J!aw`wcdRlxjpLyYu2) zD!3ZXkpp;f5^_3fkD-vBRqAQ2XJK&1bV;>#poZ=C~+d3 zhlHrolv1iiVdjm4K=eLzzxG`ysu#^FlklR__y)q|c*-hPbpnxTeDzm$Ll%`WcL)o) zU9sf9_NT-3O*~06^db0Oh>;|4^$tQ(+WL(eY?1B6k8s*oi6!aeb4D##(#4=n3j7ZK z`>J}6%Li4S<6us)!6Xg&BJ(#|lm;0gxELD;dtVVNK!%%(s^mein9g86=u`|VqD|o! zT)c^0yH*)Y#tS~WBHh?&4X$TmI}j6*J2pdJBk?+G>`?#o_?SAKBD(_9OSG8^)K?u$Sx_mGaVijL5`1 ziZefJj}XUo|0d~uvq8)lY!fe@IkNk_mqPpI?X!bnzbq_aVv1pG{_%~kY1eCf-qaAO z@Vc*qG90U&n#Xqc>?;Yc#XtD-w->{pbnS3V50OdgN_8CR_%lL9`1^XSI7;BsvR=HN zB|$D>R6x!8hDu(I{VgoG6Wla#Pw~=dh{n#q6%fXo3vf+KbWmuRw>uEtifc7?q@>ys%d)MJ%^1{GR#v4`y{$PWutR2Qu6yTDSwi;c zG1g34rz?BNxl5^x%{~V!nuvww=AWWzU3^%O2+9rCc1!6IQ9x^t)&aaL4;$Qns>A)P7GfPON@A7$f=)8VaTbPNudqo#7aE z3{ibNim^@m%CT0Zv+N) z4Yeu!8-`}!mdqN^G+c-jYs_XluugcPg+9VovPKO@9fdrMDj~0iiP=@~7Vqv)eJ~Q49=TfXnF@B5x+c zlKu>ro3{b%D|mhdsKK%+*-LYbV6O}h%8c9ERZy_kADle~t?SoEea~%qGrpg^u!vH0 z7=$^5z`@*=x62b&1w41TUhknEDFPzdxpJ>I7G6n-Qw7%+t>Zj^gYOdwlGLr@CH%O( zE;cj6Pgyw%6d(ofBSo^X5BZo`VD=fH!_ zAca%qO)@zY)eWm!Hk6DAcs$Ib)0&FCsxHR&X!Eq&e(D`IL<|$Z94%YuVtPs{r@NCF zdL2UC;jAuTKhqfzv`m#D*Z}kKb1bB>4K*Ga3))7#4IV`ZE9IyL#Di)@)DH>g5_h!b zN{#BQi6<^%2o~|eNlnV?N6Hj0_B>^z!l4~+=y|!m_F_kJz zn4GJ#9pJ^zVyI@48v}FdOy*QQCknbq?wu4=biry(?>TjJF32U;#BeRPnz^JZX&YmR zc;@WzG2vF!A&qpjaf{G6)|rltoC0IGM%w5zX{SuXuoKhPh^OmDS4Ew-0M?3A-Q~-e z)#OgboKVs_xzi;PC&U>ocqTJ4UWvtZSB}NurrjQxzx96BW65$UUtJPR9*}PFX6B6!i;|i(U3-nz|FsIlC(})obw&Zstny5Gu#~VG_T|uZ5xWT@TficXm?JXSz9^Rml@U$T15`l`rsETBrP;-4609LN z)Q1lJC!kg}!Lx?SXKsqYS650ZHPrYy+z#gIsz?@S!+^C5=6bO;YEv&aO8j6j)4{d5 zaV{9e!$#3#DMR8k)RGl&*eRio2=70nbjP>YhDh@2eq0q~U zirQh;)T^l*6%=mnHbTl&*dOk2GaM)ToPj)RP)zkVe!vw^d;=O;Vq!FtA&$OqA+7ZA zQpif2;4AoPp@jZA`++CU$dMgDT@tKY*ijsDfQM5tJxb1PupQ~yG-aknn7h;9H|c6^ z>SE+3_^=&fgk-wNl5Bnpxt$AarBvjGyrh!?l!i^ike-F_yY!Kl4yJpkYFIf7T8re? zIutypdDM*`*`++7oS8xbB!&Of<0SXOwd*9ZcDt)#G^PrCiMON?vPtZBX9TvHv6D8!(>)sp_7eY^^S$c2%^$rA>( zHB)+~(f%1fHQkQMyiFXy)6#SPTxi+Y_y`g9I%rpo$Ms@h-DdIM^6u_l>^R@whF_NW zS;6IZiSt?8O4QsQGyr5!cNBundwZeEARO^N>0tte)y+`^r|xR(U4fM#qjzi54%xz2 z>TC^mYW7Y&8XI8o8a@mp>%`Lw*f>}pMe$^d@m{QW=A^mTe_#E zSSW+VT|JVP_z$BTHN(t*0{xO&`)61)^+*oZTu@+^3i%Scp>p)e+o9%I^R>8oh?pLzNHpU8!yLwWLk zrk(;sQ$QH^z8D8FXxcO&I=pNA3(C(It?rtp*SfQtYw7hlr!K9)*k?lGV+GZV?; zBD_Jz7AX0+kE~be{{Mdm9w&dl(F}1nP8r-ug5wp#M;6kzRbV7Tv@RnW^jGxS`-^%6 z{F$b*_{@@1u+WesC6bY-;&n` zATCNr7R_qqDA!oIZyh(D6FiL~lchr~ZR*ilb&WxpKI7ddTzji=e6{qibFXlQRZHd>Jm&a!W+(If#@3;mG&^6=2!_x1OojW}Xor z5*cB1)YDHgBse2!2(=`s+WdH8g`(23s>(XTQ4xb8LE+#aP6+!)!q9NYm0(y)uhOP; z<`;QD9k1T&NM6;~54rH>o#sB}@ptyma^8ke=cP<{yFz!|q7GGTaI}wPIMjAD(2Ud= zwuc!-<@%;*qmv$UMf*JlCmH)=ofSuP5#Dl;YfAA4SXb7i4E7x{mnz3!UgOLRu_|Y* z>;=tii{;mrjPK$z;=9UjM?Uj5!LEK&5U{{z3@(WJcA z^jaB1aR#kSRAQ)JX;7WTxGgJ$^e^ND+uTh+)@&U$%Wy~(QatQTE18$i7Yl=P=wT+znKmRo0A8y-8V5;XI> z`N!#2LTR5UEMNj>jd+Chw?Hf=G6=8dGS<9YPs#r>^}KmlAU`J@S$O_b_qKsg<0dUG z<%nhYn%S|L_=PGch)rEUMH&7NZLBy)Sl5QVRCWwDC|UM{P`NXntB#t zj8NS#3gM^KG9Tb`q7xV`8c~8fVn@qJ7rWKZHmg=p`T1oHM(T@GQ)=R_mV;ly zm+-3AQ(>HQUK1MRO*OeqWx`r5c`(aS@SUanj3L1Ttl)wXqk)N1(u1lInj(rl#)sIp zFqt!^)jKma=tmd7-WGy^xg{ITg-5F$@^18~5nv}J#xuAZBzxxYN)|+gLp3D>*GCFM zgS(vr=iMqm9^F4Mm97x0%(y3%xSrTZNklBhIt+$#p-M5qrAliM!)DusEy1}yv!TUg zWi`+pX+0GkA_jkU!2dl>-izjh@&?yeC<@`;j2J$m%;sgxX` zik_I`x6ad$a-)hY{aU)2s2|U){?gLMf56S9pij}HkfcNeX~M++i~pL8R80T;DIb^z|32hoSG^pAYIopA~2=PKAp+GUAN&> zT%7(q5~Qrpr>I~e`G87Csg&p6{@=B4`Xow|d}Zr@vKs%+SS8ISTSTU1Rf}zyn@Ly!`Kwhft0vZ}dMA zH+IaYR~tXTi5|wNW&?U11B~-hKL3d~kbM2^W`9hLn(5}yE6MpbK{0#q3l zJ??y}`4?PYEz0D-4Vk}B=O@VJ`Ni=-U&$CT=F2C}1m=!QIp!bz5?3Kq3tuPRK-&6Z zZu%Wkj@Li%yLumO`M2`r6@OjodHPvYC&2nXm^$$v;}fEJ)C=VAwEPoMxT5t#6up;w z_$}rVwm^K>>z_I>>%XM?d1Yi@|2-)icD2W=K)&ksBPS!v7v-#d7rp{jzlJUr_FriK zFj;l|>IC&&eDqZTqF5e_C`g+;LR4>L8o*n|HpuJ})X zG!<9tS0iv_eQrfDytV!5Kl59q!%LYzRz^7bj=yJOMc9x0=6T$1vY3ZIpJWfv+5QHn zFqrJR_4Pw_dHEjwOCmm?`hOMo_9(2id^}w5@Xt*al9(H)UjGDcA(toV8~2T?zNISH zrwVrMeleHl@$@k(R;u~u%SSH4M4x@zkJlT~0J8GmzqU&7 zXKhn!aDMqOrt8oP-$(GB!zx^2{8}S9cEaqs+Wje_Yp>rUVYTFK1#mthpTNKA(+~oX zS_SzCwaimeKVgp0ch1Xt+WC4Z;uG=*w0*8G753#xkq&B@v({!6rr~?$ zu$4%eoW#@9E3m&GB)Xn1*UC!k~{O6gj6VoDw z{(CL&cO{1x^bFR1wtGrn8B3Ql%lB_xtFaR}bX9w(&ohz3X-7Ule|SN_&g*fP)XKI-t_@?&m>qQpM5(@#P1UicTi1WT!W zFAuc)CU4(Qox|v4505w<=;gfl7sG%u&puNZ#E8RIBB8S{NMc zQ*%e4?5*J#Px1Wm{>-16v)Hwb2Lb)M?H)e&{eMY$K=jo6Ywj8LYUGrXR_aMSWqt$!@C@u}MQ2>JA_t_^d$S9nzL&tI-j{g{{NtSUZp zCinB7iE)J*_CBdQb!4;dKYlw@p%*<-ecvW$Kz7@w_V-e1<$sTLdFS_KH$CrSm$FCp zy&jhYsmRXlepK!MoI4q5YvsW5Czt-W;yE!-)uh(aUU(PZoE5Nf?2%Iy<-M=}dQ|Si z%d)*U^NH7-q3gQ0Re6+BdVKrm{*SC_ox&}XbnWN=N#zYpB*ka1TzyYuXfFN{7su}w z{`mb3<%m%KZRkqh0C_^fAIFDCx`906bOPYHX>PB7QK{74sI{a?jBN*n#OtFXKZ z3S)p9&*z}@>D22j1XKH8FRy){_O8Zjd#?lTy{US+eQ5`=mkAy5?7kAG>H_URdv%v8 z@zRg=nVEyupJ3;cAT0fs?)L*roIF-vURSDLyPIP7{3!9p%UOm9eBgcZ*5_FROM3#c z-~6F3m6NVUyA3xzYkKauGg|B6Py5E+OD*HS2+Pn>#C;AAi6f{h>{EM{exUz=z2t*m zChooblZNa6r@!ZRhj*&N{#s`xvh-SOJylF+>5Si0-uZ2@-oAH0=pLbbQf`EM@An9> zt(FcmIN7NTOKw0~U?+2lx+4p*)wjTh1=^2^(~ZCv~F){}nF zPs+=TAmOj7TE+SNypQ=WU$0M-F#P^_NiU3VYhGCMlt1;2vhJTe0I9++cD9SB z=>nUCTH4<#dw;5;ukA10K?`m6{AbcTp=}Tj>#b;uTwp!7GAzj3?)qs0U*B(4q&Pj? zJs}B5{@C?>sV}Sm^y%DA0bB9A(**qMPSI0^?|xNz?IQNgI{8x}z@9%G9pL+S?>Kem zV{g%Z!gjD5TX6M!X0_$)Gd&q#+P$di0m^0Le&6pK%sKX>7@+3ne*2Dh)&0E>;MhZ7 zEiVJ?fobJ_d8-DUpL@k_NB0d*dci%v0^4*F_8Oh!v-_`(((cH$fsHb*+_^iJ`4ss` zzX#8UzN>Y!PdUTS(B$Y+$SL{7>&Eo|DJ(<(XSQU@$6zZvqiDY`5Dw+~%zvYZqR_K~ zfGs_9_dea3*p2QR<8f;JUy8Gr7cn6%{l2`DyBqy<+|K~C-85Vu=^=O40)}~?<#T^a zvf$2t>(Um|lakK~160d2^4+Cs-X7L3nF1b!$aY)*_b~{k=FNVYhpinOm1=&|`2p^~qm$}lyX_Y?p}jW9N9bOWDc*k=?wBdJygtU*)p>Qepm}FZ zVVbAyL;)pgpIOwD{+;mPoi>#Ny3XDKEd0W}trxrG1MVd*zWw>|OX^?gGYJUcf7f)B zxNoVGy3$k8+7F-I^fLTMO76RoXu*7_eY>wg$nccU{yN{~ZDW-ktsH^pzlb4nUK4qJ zfw+U;nNJ$5YMS50YR{{J^NGGKQ(0@7c}@CyuKm*&)+p%zF{9Q8|0^X0?yp1oK)KZj z@@eysd3c#$(Q&XB2;_O@1?G7He*nM(5a8Yb05OJmBme+k0N($3_qa|%Gc}GOi5bWMxJNZSf5&&g zemvQe5vq@P3!B)*7!~zZ5ZZuX27y`uQZjPdE@K6DQ`emLG$R?x) zdH-#pT;L7i-8R0TEoIKrpWcRjAy7lVEH-GbNF%z4e)%?QZ}*Slf5AKaz)_guUhpUX zO(>JQr-HbgYa*iA$N63+o?$HPSprph5y%7}HuP~OeKV=L3 zzo{qrLoXPC-*Des%Bss|bm|jCmHX{2+x=ES-f+#}b*vnnt%R0WIY8wdMj_hzP7?Ie;&SumFn^3s@9bK%&r;eE;?^q7v;w_-rpC zmp>oja{3`I#}N_;5mbaCA_x&gs3JsA5r~K)L=mBg5JE*EB8m`1gdsu*6@-W?LJ<*! z2qIJwBB%&NL=hs0P(+BKBHKmYf?R|gh!;c)D1v|i<`8knTtY5z3Wou3`T?N1bL{-K z+(?&!h`@8*x|wtC%?^lBPCGFu-PbOsW4d>3guXcoJ_Dd5t8uyOC8yF5G{9s=Wh`DxRGw|M{C z7bNWPCg6bAuP*I)mo!C}C-a`(yhsH7E42SN?Iwd@;Sex;aH_#zK{{|EO+Y1{o*2IX zYAjf77kk@aF=^vr0h%yj&A#`$@6+DGLSx|tOT&hHM%dR*eO08Nu;@31i^PaPKx%Jx zfl+9}RY>_(QN%)Z;;&j_G#m*W8MTPJ@Yi0;k53@7uZd(Vlq*(^8?@ew1&iMaYF!<4 z*I+BmSa)WCx?gR-hTq!fA{X;uQFv`oQ2EEm9pjB z+epyQ>V;>8&Nw5XVJ{2%myqVhEH`2nPBLfbaQMKWIeE|<5P=QW{9L;?f6$@MpBV-l z_|Kh~nkiU5ZB_~CcKCD|Bm?jAz}*hMZl7`M*XYkXHlZKdp*(FCjb+O;^bdZ2g4w(N z?9>ZA8VSCU2FS^m{$6Q9@@urAqKSwa=Y* zoQ=Ev!G%{J;kniMxy~9?FLy`s-3}$EefoaP`wSuL>LK(U-NX+&JBc56cdb9&yX(&v zuVjvTEuK=sMtSqGKi<9g&#M>x(ZiGf!TAP1e801gUoY*`w^#df^>6W)V^v+>3Hbn$bXdHu;3)_)3n#y@*7^JCb&`y4*a z|6Yyb9r5^QpY(n#ED>aFhLwNK@4TC48H{^E#a=%C`=|SuFsP2#QU89_$381(4Ak-T zsCpqUhz#(*m=Hjr^Vy%qNFaTEhVzU6$pqSu{k zy!Gzi5Kr=o_W`bsVYRpdI70i}j2aHTh1lW7XXpvGCM!oybysxH$33pQa+D&P1A4JKRdeW^uEEYN-FTIoTUt{X@t4<@lI|up z&$bqKgHWILX)!4uf}J}RzvtG-`gkbH86d9e++&Sdy5ooxMl_q}Q0@*l%+~(nm`;F2 zvERits9e|D9Yb*|gEVtUTchRH>|%+nl#6VyW3LG-d1gvknTC=i3nMEmF`M<)ws-dX zm;KCfUZ_c3T`lhw6!pbJoXSbV>opX%C<|=kYk0`28%~bn9JLbVXjv(_lxJ1M;#3uB zm>Jg6{nn2LJ*!)Gzl*6lMe5h$i+9?4abQnyU;klZj!?yFdt6ieTCE%CKD`E2!oOH{ z4P~YoKvFn6aN3RKS&lYG56oihKp(IS@!z3lQP%?2k;EF zvu^M($E7tI)&tBA&^*K~Y&Hk|mhD^HjK%J?AmJsRImd(bAGM0&tG4+JacfofQ22E2LvxLWzD)ThOZ6;24#O$otP< zw5@@OW`q>s>ual}(3)u{cMi*@iX%d*SKG$c2}9KrqLQSv+-ak*o2oKjtedef&;4If zTh=ycIT!Q(%x}*Etq_~D>BU|w*k$1CZqF*33(elf^7f!&S3=89sne+ft4_m~k&wgN zQs=)gZ=pb8fo;{=FGNFy60yXHXSi+zeEK~>x{rCj09DkPaWG8{v!ABXHCbL^*Oz+> z26DEzsgBb)hfc5xkxl(5Xy)_KbQ7(Gg{&gBP_0fK@+#-Kq@ugi_e6aA`mRH$*o$Th zP*P=}V^~xbjTsI)c*aJG8G5f;Zz!M#RxF&_8n1*@R4Ok6w!)Y4|ALISTQJj2R#Q^C zIp2M&S%__ysYzGHiPV;)ljlmAao5bDXtfn#JeqSB+s7i?t~6HnVJjtaw2q^P!|mzs zpm>G%w+wl`W31?n%A~XhPMp6wL$K5`M-+86w9N&`=w&|Kjs0l*Dg4G>cd)i&bZic+j{;bJ=?uznVGDv|MxM7JZmFDZf+OQgz zbCeBC8iRCO0J5(_t-(MUTvx6H7SYS84xP-eePP1HTYJzZJ7lr|N*!>~3 zkoZ_ zv#{^20F$xMckgA@X>@|hH(Epdt6?u3oiWk?<%VI z@~vW15&YFG`!e?w93nQAu$y8~8sFi7!-I&&f0DnrUF56ipLC4t$0k#`AGKs?# z#GVwq3mmF!r~4L-EN2(k*Q@g9uIoFeUUc2L$38q7#NB@*IHqP*3~DwgWoa#CusH41 z>IxP5s^g}$mu!!gOyHr+z4Qhj1vDoT$Bxtv&RC4%tGiDy8XXH^t7|e_a|-@Wh&_3) zP`0TV-CToXrpzf_vpbX0n5_gG+V|w62G#OqxMb*;zUdK39($mUAl}!(Z zUVc`-r1>t)bsM%eVcqVm(>4#5+CV2j^Ko2StGninmlmu*4N=yU;;8Zs$)DA?sk}|A zvNc$@(y7SPSXP&986OR}_UTCa!rA*{xU9Pl^s?&&J9U=3{DP+h#fH@bw^2u3FzA6K z4Gil~I8qHz{}KdVtQq9TZil;mda2D|)b6L3y0$h#iO+oQ6sqq8FEHNBs?$?U6qy#J zUJbk$bJ-ILG<%KvY|dJ2o|E&nNW`zg#Y5c|EmcEZhza zb?%9gvCjcYGCb8hseD1!U2A())V6@6)tYY26K`CrhQiqu*f)kt>lVe+Ey7av=8^ju z1-!O>$0sf$+9V&qL^6(WfF{pow5Fw<G-Xso$W}bCd<82t0`P4JzU~Uv{^v$*;O)aI7A>_k}jJJ zoS56M;YwvzDVf(^9x0{lO&OkBk>eP__&Ss>?DzE$5|0xJQlkn z>&P9wm5eJ!izl+zu zddmu5ANxHbT9?oNu<0}(JpN^+QZ>dC|D{rEY;TVd!7sP@uP=rE?|Af_gmUuYd9beo z#+v zG8#COYGp*pNNB8$@p*_=j{Buf`(-LaDkh+_jb$0Lv{s|e)%1XGyyGAztYnj& z$t$^1BWSy`k7|2$%C4m%&;1$4nesM3Xu{Ld@-lL#71PeOg~gEgKLA>NkU(35X* z*v_)r{e4{_E7{7`&#DAvTanj2b|%(mh0&JPn*02H<0X`4dCT#-MD!{BQmk+&uj*L+(#@W_ZVU#3n*s8$mTpE(-r?6M;@K-*K%@Ss|whVMx z2KxvjzOH?wY>9cyn|WKAtBj<2)PGoZfj`3E(UC1|JGg`}nQp94VGEkIH6Gm;*J!Hqy&&s#Cg_o`S?V-PxB>_qvq4yEbl*C~D4a@_P zG?Y%TlrdxyQm&l+o0lA%KRiq$K$1q75S>v33(qL&U{3g@f6-sOOmfq z9LeEQgJtk#G2?1;YdjjSj~%h<(Zm39^E`3)P02qn`dXPOW&d)q>$I0p2Kbo0CCFo}MuD;2Q^53U%fiLTyw>Y-xB<~{! z!H|-9)YXr_6Ff=%sXDGwBT#WCLj`?JIiK^&iqc(VKq$KOSeoJ$q~^-+{!nkXOiTT zW9(#0!?{;`0F~4+CCy;lF!9B&GKXqADM>rlwrtB8x|=lqC)|3ou>Yivi)G86jA}@q5fpy(En&4@Ny||Ob-tj}zdKJmimz=R?#8)`7RF%n1> zB9x^|&(axtJP#hI30=d8r;!duq)&hK_W%8l`kpVp$mcy?&;>@RLrMr_dW4fM{tS_y z(pE=F8ah>3UmIsc5R>l^NS;g3+u4k)`pFxNGqDYl;q=MFulx3B;&nZmf=PUI9=x)^eAnF;lq3d$bJ&A{nUmukS!Gq-{f$*$b^k{k1olo=(+@sf9*U#~$Ved0YT zNpEy90};|C4s^HqM;;F54dCJLz)PgZ1f$8_XCwP zTcm$A7W*IbumlbySyzY0EEiATK+l-=3X~PdBF8}VG?pNVjsTE$30P(@x%$K|1^NE(VBQZiIb&l?Qc32 zB##KUvh+4W9waNL$n>Z7($~Lz{ie3}lSe?#qe)&Sqm7#@awkr)|D0FXdx!eX_3)_6 zl+BJM$nsEpf+^2gDH?1XzGxKynW;8F5&!@I00004FvZ_$k`<~~>V zc{M&{&I-ous@lOWs z&(!m66ubVLbccoUalN(4aEVseU!UEs23WFw#{=sudDLoYnvm2O$*I{vOC5f%n^l8i zNWfe6$Ij`mBu-W4#SAEkTakG1kiaimQ`$)uqaQhmW%Erf65717Ar|^*MXlzU10c20 zO{i#`qXPsR&m)FO&py5rwN*GHh@-Dli3`!}buYAq_R9hU`~6LdsOp;~ z`6?o6tkLV#Dms6a1SuTiB?AlqU#c4NqNr6N+2dqpT~?4xpD)^dBWpFav_+O1B?lo8 zu(l7c>=Z)X9;0?_8wtLmM@5O>DIVgzFII=#*Io4^jh81FH-W30{z6!vjF48N?f9`4 zs~#VVph%a-yX0ly;CmB=SEd2doykbSSt*iXgfCkS!DS>&dn&ss`aPKcbC}BXrTid zGg4T1@_qb?lpBxi1a08pXL%(HdLitYXo` zYB{k22u3Rf``Y!5WwXETeNu?m>yRSCn~SvbCBQ(Ej<1MD+~*}3EfOgEsfZ)cr+c!&%YI^5YV!ie(K z{Ok_ctmAlZLv%Eg37bfxqLU%R>DIDgAculp7e+P_-LZg43st8DcELoeL2=n;m*vKX z^%L!OCL7%-_ITklDjPvf9)9hN2GaM}z1Ut?O<2%zX@LikG36w}Y|N1XWGYm!g7mS% zsD`7c{}_Sk@k?JyCH%g$!}@=x@4S6qjigb_(4nr4nYK>m!J<0{CLq;u)kErc(8j|N z#kGpW=oHCEumRO8Qj=DFQkHEVXp5w}*?E!F0_6AstB0#fe1amUDIrJTrB@p#Yem{- zT2GzA*t}5m5Xh&IhX9%c;(h2m@3g*gSosIM407hUUP?odb&Mls%4=V7J z(0mL|e?F^yb0dVs*z~I{bY`h-{PBjlTI8a=Dv{>ZVq|Syw|H+90yfDxD6C0w4cIm5 zC}Q3{wN5o&f(TC{!@ly%04$xG8B`T#1}m_N_*D!*p^S$)CY zpXW)B*(t%1pJ^F*h<|@tTenoeRJmN_vDJik@Oil$i+7fw7GBHrRk(|;KhB*xcqxj z46T?g9&}Qgnu0SF(Itk>1D1gGCF`-wd{eOL`D`^=u0F{GCD{w594M0uL>P6WTJh~f zD;LEAb4jQaR%LX+$yguNDTHT6?3$!j=rZf^%JXm$ov?zIqK6CwC1H zwrPEff1aixu~J?7C4fb01qw)!T=y+9)~tLltSjLYcj5k9kOzk@r@zS!ZoEEZ<-pXz|rt&Z#HJNe;hiCW6tzz&puB zCxkmISRR#4q20-t2oKZWFBmcv%~Ez-oeYqt z);Ap~Tuc~dot!)jELNV!gjo{>RNIcQl=)qEynK_tL_LBcGf`0&HIaaQ^nQ)3m;7(mlocfxH}us!YueGR>-Z|>1X)U0JTX*JeelN}lL;DWYVK2c#L zsqq&@iv=sm7guIfEG+T2FGKb>@d3S(<`nN=hD8epA20o@p-|W0=XM z)QXndwSnPMhs%>Ez0?3nH4FB@yx{@?LFbCkZZWt3gYQ)>v@<%%=oQNJY1(}QsBnPf z3tzzfsco;q{?BHB#;fHykTZj~H8jrCmNc}L+TjS{^fE0!j#D(FM69M}NH%wg)k@KC zP$`^j$ZTrNx&ooAg0 z@ZhZb<8fB(ARS0I-eSel?4?tQmJ=o}4m!Q2pES0~bck`G>cq%dv_=LcIgdEs zj!=v|w$ZcrGMXhvj#S|ZoiapZLa*!(`<@#N52~UQ^obQR);wt z7dOoYO=mN)cSpqBV7Kiu{OQYcZpW#K&lZQ|QwsHGEu4{^owA|`8Tf>JKQ*1R2aB7l zf#-fOa%!I8odW5GetaL4=nW}+U&pj|&wt|@Je~PoYq-=b@KEZD9>w-Zk2W~ynV--7 z&ppWDHRrgxnOHRsQ$dZV{s${c&h9+17)ax2_>{l>Tff!4g`q*63ll2kHLcViYPN|% zj?*= z{%r7?%0%NvkKgX=Le~@e?9vc5gywc0aIaK8giiUbL9QW3^+@<4{a@Dx3k8$+POa&Y z-hW?){@DX8=aC*O!)0P0<>alcKT?vx%i1C+bhbUv@?2>Xlg?!8U4q(nX(BXNLvq}& zh8Mjnk!z5U+BPg_U}E}q%k-U@^gb;(K8*UiE(q`s3>>u)=eJH_P+~X2>`oa=Z2Q!^ zeK^7OQWNTjO<2TO@!aDM)`79qxZu9;0GlcvVW-F_@BgL>r6g5 zR1?m3akrrd(45evfY6l}iIn0{`$a<$4mUU$6zYm6`-@g6&eaaDyDqL+`=f0L#-}-u zaV0E7TnM?D;P!aylkJdF9vbJvm-*<$M%Jm>Ut{Ug0?ZuiN93WkO#mN&9VmUuM4k z`?b$A_<8yo3`M=tH}12qcz(cM^n3oiW3J-}a)3);s4pka_DZhF4|3E7 zr&69j?!Xjo>34aD5o~+pa!i{1$6~K-aen8&j-fy1zOBEJXRG#3($P&k0+!3h<-`Zj z-g||sigI+CJrSENvxS1QRnV8@(QmIw{SJYFWb6|B4h#Fmo22g`3|XxalcyR!l+JQ) ziQhSOkJ2+^b88Au#BcRQP{2xG0sjzwsC4C1thhT*|6m?>SK~AJelhMv{5Vh({Dr0T zho6goM)PdNzPa(n~M#Y0pEzpxBQ-kC%=n z0VLv=8Ty~8F=F|sR&fS~yx32_EOHN>6<_O56Ou8i1u6@0-WN5&bc9M94!fz9#cGBN z#%5!HD85Q#;=@_+Ld#Y38mHscV=-7;5AQL|cP}r3DSgPA3=S`#0gbuKm8qkPUo7p9 zqc5sd0hw1NN*V<$eT=F&HmJh@Xc6_1G^`F8!eBsM3B zp?9OtveyO7*=s&Y%jy=HrTR8B)9NauX3bhB1n3@;)WvjDM}tk^8ve^!C^2xSB0E;B zi2+kgB@q?RjjScGxfSn`YHrmlwc5+j5Yllg9(uX*-VY>Nu1EH+L53Bommwl5FPYWM z=%dwk&E6LKyHD*%8nBWiw>bJc2t*qf7E-~66nSU|y*vSU;`#eo^HrzhCRiqnusOQZ zEI6i1CepB#1}vdT(>~RxH57oQbkF7L3cx+v!Dy)!Bt5~3>$-s2bQYVK6=(zFFro`I z3FG<-Lw=JYws5{W2UShho-9lWUm7-wmh^n95A@bGHYkvm!RU<{RCa#Sg5>Xtm+gL= zvSE4&X#sJG+1Y*7CBwoP5lfLAg%>r@Xv0Oz2d92~H6Z;~iRCEVCJzH)$&M^qLb*n{ zh)NqE1WA9#Z++x|{un5Uvo*DP}C1m5Z);enleN1nU`}4=xA) z1wM)NCy5%m-rQxoh-KC~}c0|ZnS)CvQwqC7J6Kx z+UUIjkU5jb?bOB~TBa3r9ZyElT1AuJ$qS(61){G2s8#P-0$vF2iWx5BF-B?V>wT&a zFnkKr^lH1XUCg3~WzL$FW?xy!V-0X}^SrP9l|hJIB(SCS9q%yGS26zS6%^V;L;7=M z$K%IaH+R#C7!NFC1zNeR-1x%%Q?jp8no+6Q_%!vW_%YZNE^UBK z5__0J($-g%_SR%AhF!lVpV}KWE)h18%5Rd2YB`{Ok>?llNKgb{C$%g zBZa>K@%Txj}^kU(d4QQq@7XZHy;bqKXG`actxb>B_=iX1{Pr)=MHDlilomQX-aG_C{9% z5yuz@dr;XO7e9rY=T1GL8$MH0jMVu>87sJOzAEbvHF7XuXp%Oohk35-qEwJ-oV5Yl zGV}%s=$#k<88fOC=BZ1XtYGl=q+i`^WxKkl3CHJB?of_1Sf-O&GYPCMKdI*xAgNrB zcu0YY*umWC;{-4`p1n+0VP&#DZlvIxV25{F>RLJoF{-XYa8|erJ#$LbK#B9Str=ZZ zCu$c;W~3p7=5^xoHINYl^)?ObiXaM*;`uDAx6L+gvR!2wT#v+AYeO4`)^p({P z{<;HI;r>WG*3_kPitQt1Y@Isq)bO8IR5eTgR#g3K2<3y9dbD0ebQNE($PWfNRT zuQv(R(6?l+G%Ugl&3vnQK>X+yj2r$HuRMUyZW_saU6)%ws~jGHc!GhVk(Pkc?KCkI zd~N32T_`8Rb>M`~%$rEnUc-67l7zmrUP%P#b$rFEn5ELw(Ow{xqu-t?kSHb@0!0$k ziYzQC$P|>7lb8&_QqES^luCdAOVa5i=k=19R>X(j%#5`QLOjMV5?C?s8@LG7Cu8tJ z#f;YpvX50F@878j>~)1R_r6|2%^uscCk_9 zj5GtZU*v{T-_+`aK`yki68Tq;MS9w1TBqLbj|OB-*0qLGW2C)na?~hJT51*f`jk;g z1nMHlHjlabVO)M+C!wx?8u`7YGJ+e^Wna`ToqsJRnrOK{r9PP9r88- z-W1h*iLoymOhT%(l-QVB1Ly$Yw5MoYmRR;dmWgoPK+i_0K0B_yuF||ziiX^sjw*r$ zUoj}7fAYHBX*e4UIcilEG}bG7=o3aCV?h8UC%N%;8o}WmV}a9LB%!fZMJb7t0Fy(X zMn#`VF?St(-*$XX=U^<f`sa6u@($g9{@KR}^_Gc-wQ<-4}ic)HzGKC{+BjL&`kE~hg;j@6B zOa3NoZxza=sZh6u(3am`(peQ2woXdv@BNQ7 zXnpDdiV@-LTs0pw*)GH}MS9*zR@xgdo(PMw{|cmbkY0`H61RPc+siN@#{>hjuY!ZT z^#9wyFH8(ENK+@+j*>xX+Fs-A z5B!ItR6>HqqPh8QXG2#5ySaB)l zM{&oEcl5M}Y?y4REz7pB&~YrSt$IpLi7}rq)8{7M;wU~1n#niB^f{0>;yD0U7Dqi+ z5NpNp%2#2mVl5r+ZI6a?;ABUf*+i+a@K5UKQ4qiw89-r@_aq~G>lCS>s-CnSd_+-X zzfJoUk<;YYY&}H%mUSyx%j<5*I zv**U3E?bB#(XaSCruK789~*{qimQ>qeP1V;Yz6zZ#tS10BaM@Is4=jr9_#X*f#wkc z%a`yOK!UZg`?dQw>YWo+N}$pK=-t?{_k-VfSPjbOwS19t!Tb;Y>8NxzYgnT*Do=E?Qmfd! z*o=-ggLY8)DaT7WQV(C1)j4#Z2pGv}3=W+c2=4@DJ|JFMd zzsT-#{8L2KZG>iUtot|AKtcUvUS@+y=OYnF(!Bw6f9)KSRD?;6{$fTDtKaS2+g%N6 zZ2uPfZ^UoOGyXsQ(Vbc?z1i_qOpE@z^W&9UT*oAgE=TmH4)r5hm~<>F3)Oo3-?o7? zazKVVd%V#)>LyF5>9)t3OBu+?wcKGC={)e=F%jeMfa2{NNj`;`T*21%e*30Dx;XoaqD|g%z z&q~^lb8{>wE!l$7*MOa}t=v%t|Df4fx67`$6Bj>Q3)=rp&r07-eh;35;d1y-(^>%Y z14`DQ0^kV>Z)Dr}0XKWlL*M^)V2_lJ{Qo8rqc%P9a%W9)CKT6n0ZU{()_I16u!~;~ zoV>c^Ll5Z|HGs4FXEWOnm}9(|*L=eEO4UP$$_;!D@EV_s%8Ljro`>j~Is4bN+#ktzZd+gYH7(^V_;{62(Y1M_4F+9vL(Vn~_|`}L*0R;j=55T{ z&_Vey3un+C?TeF_TJ0vCMoS}Mzk<~`NJ`}C}EmreB?hpp~WHnkkYqyq&dWbApY5*6;@OZ- zad~HS4*c6f)V$8b`+*22UHIzA=2M@ZKERDQe!uoOoWw!-G@!UHnMnM1(P7$)w&ZtC zZrr@o;h$oOIlNAFSm%<%A6ml!5BML4Uj5e|DJEFaib%A=zP`3zl0T6xfW%FnGv`#PuwKxU)y`+L7_q3>mxC{M;7&f~9};xMZD#aI2yLIGsZ9kLp3$+P!-5ieN? z9`tvsvv#PoaEUX1gO}o;xca2+jySV$ojx5Nd*SzdCE500^>5bzI^V8<(j31YlWWdC zJF$jlu3KycFyI??biYuJ=+?#C{#*-eu1Kce{VX;g*ITKu9D z=y^EV4T+c^JMs6B;oE*Yo2QE)~98^>ouyog zU$&QhT7bNo8+`K6Ft#lKU>uGpO# z`@1Sv*=^@A=|-z?#hi=G4)D<$gVGnz`KOmtzYY>qQIT^wg5fnZA?!R)p%6qkUJoaG zve^B%ZnvURH#lwAIn=<>v;PBJucjO)V7Ghq;B2}Bl>l=9MQi*Ii~s$QL?@qWq3qkQ ze46tQU!c*KhiNY=P_^d-v$m%HpNs#g36p*~;iji*(acWGffCNvUzD}i91@f?0U1tO zGM{NkQY3UPQU{0+XNCYkOz;AbVQ&B=000000{}+=S-@+eMo1VY2$?0;NJ#liLK}f? z1B`%X(;_LTQVW=cA~r%(5fY=Zj77OguZ0OuUdD*RKmjHVNn-(@{|2v31+PY}OIyNeexQ36tX2z%MH+rhL`x6A*e4h#( z+FD_uojU?>+a;h^qzmRZThj822zK254&$!lYqD&+q-=A9QvrqSf zsLB~AZDln;q?senliOes$dQ#gNq--^zFw;*8MP-x0)>}xl8m$>K$=-Z8mEPI{~kHL zy0HNrdvkGw-!xaCTeU3Y03}E6i7OvkvIsd2NS#VsK#A&eH2Gouc`YvUr}`++`dNnV z=sB^b*J-9YupCc~K$U(LwX*4WJODJj4}j8i=1$r)vM`lWhT(|S+Z6y=wv3GUIcFto}l*k!4WrO~8ZJbvFMxOT(ErnyJate&^;oRd(&enldtkeP zW~GwjvbDL18soUa|B_=2zd^$U5tNrWr?hZH&O^x*9pYh(Y+k-IEY5GeCKpNF#l0*3 zUS!zV*@#;w=g($>T;$Oc4VYDp6x ztB7mtp>`22wg7JuR3Y5~e%2x@r5q2=Q7FWW&>9_XV~I+|^LWS@!`1nX>FCuLoejDr z6S_=cxXuo`1?X4nJTVO#0nK>-QhyN)wJid$s5(H*l@sF3j6pO~(MZIIytmHelk_W+ zj!~@(+SzAuUu2r$HURz|yn*tHrDbnWn($=`+Pb~#fMq$qvr`Uiwpq3rJ>XzvIk*l} z{pJ0g_kD&`wcU#WgR~2tUm4(3?A8nN`q_C^7J5q4?d;$>rK)C&R*%-Mu%cPFYe3It z{Q{^0!8!R(3t4Fks!~;AS?V#s_IWkTmvRcLP8YIDs=3*?X9s(>-RBSkT-?jGc5`CC z?{bxy$l126YSt=7E2%+Ba}~gY#DoIh*V#$PS`b8SU&rDqFkMt@PD>pFUfpWD46YWD zcZigF1_?x4l?{G)##-X2QMNmkXu$lmmrPwHo-Lpts1!fx623}U< zTft~OvRw-IR>Zr`m9fY~iS0P9%jFJT-4?B(ZgyMjQq1Aswa1=D6TBv&VeoKdT6TgY&4{JF{p8lPnct+4YDf1 z>%A5P6T>=ZJb$YR7K!XRpI{#H(%?lIyp{=fZ4v4>R^*2;XM!3gyBMm0vd2>ZjR_oR z41hXzYm{w@UTlCQzWVId_!SR>NpNOF0d5bk-2fwmrJ_0ZhkaptVgqU`xVmr~wfiGG zz?x_Z7lzVstKWK1*2wMkEGHFy30*1 zxzFQ;a%reYMEk3N9Xw&{O6qEIRWYuLv!eo2J}RUn3oGr`*2vT+jfW*e&aqRcf?e8p z_B>S}j;O$f4dP$`-fcm{s=eXKGNVMm5d$0>ldB-bK^2k&UvQ%SdtU4M30s3h86T zg}!Y9btF!E5&#{TWiQ;O@FgL;x9Yt4VUuX14?cIx|+zv*u}# z#)Va>tuP!}R*Q~rk~ZBCTK|r?Wb+DZ9LD(d6$DVV8(fr_BawCT~i?AFTqm~UvG|`opyshhEs%UQX|xo^jx|f&?d3- zht*l|J+MlvxDrN$$;`D=ufVt`u<0s?E?yd%JPh77bi>|b4O8_#dahLq_BC71cvKC- z+QHrqHRz`8NpWG{um-gyhSg;Qh|=+ST%l2nWhTqWy)0|ttXo?P9wfPGKbjmw-u+Jc z>Qs6+Y6-JUH1S`+;bf1c-3pPNx4Bidg|*8MHI{(;SiSp21t(4(Mqzyi+*&CrSMJ z|2Y#01Xwl>xFNr!-K*|>jP|m8GGX~(HEVX`aQVxDQ+UE`t=1`2suPwnb1aJ5+guy5KGVwye1X#c`Czf zmKZ-XqACUDj=813Wh@#O;yh(1a`IDnXLLWy!Sk%|eVwbAE7Yg`a{yEZ)LW`1vhRX`#b?}W6WP9uw2HquxX+OC!=v}VlB09Dzob}-1-8>WET z$L8%JS7?IYS7c%+Va&RGS{4IKTQi(Fby)wJe%tR@(;wov9qQr3yUl#rMQY>rz&MJU zA|_o*^5{$FgH0yV@2K94B&13TDQbap_69Y;=N;rf2<$U9_-rCsHpS^6@2r+exZYqp zj2#K;>xz`dnD6>6b=Av?-EYRZ#uQCxOEiL6sz|*YF5dlJ!fK9S2Enw{ibH1th0$?? zCwF-z(!d+3C)vL9BpCo^9jYj@K-TP={b3Wpa-J+*0FGO@e26h{gNeh*9Vh~E8s~yg z5gQHDOJ>vUFWg8y9<9j*+tVHcAix0B__MCO5Ke6Ed3urN1mLFK&Zrov=AT1hNc!ho z=lEq8KQ*-%;B4~15dj}BO!w|Z`_B&wua<;zLd1}H>fa`18s2|tCQ~0G0Won2W?6CAa1eFKz(S_hZMEY4LA7^ZGOU%I9Za{V>hL zhVZR&n)BoS-@KLh-2u+b_@~y)ik~<=4^98SFSGyNbQt`v*3c|WgLB{5#}E7V!apdr zez-|r)Hj*wpgW2o0nLQMT|M16gIg5T-=cGd{cvn3=5~guK7Xt^OX$sHg2~)m&*qt~ zsMY;dnX}u4sm*s%6-$~7o8|6@=xd+5KcbxQvM-eM{Sa3+E$)6gnem?g9;WkoXw(Zu>uiH}Usm=4U+;|x=8`ieF5OcQT<@toi1DtdG$GJ5vkyHW}F z0foC3%5CY|Y}5#`YPk!f2j?Uj`DRl@bLg7SKU1^)3qHBqo_3^_A17bxCZM+wLF8w& z_h)qzNA$e!o-+o>K5rDLf-yqdoPOtdPecz;tHdGAB9!10V~*vIU1zXV0nKA{Y2cYz zXiR{vt!Vx@&Q6;4&pWhK4vot{>Kk5x{_{U~79TLzLO}wE&^r$3m7<(kD}Q&5N1KHi zH(H!>Gx5Dul=Q?4RB=Bz{7MOb*C_liu@x?PmnsM~opsI3N^j2xP4}&3kRQ;lJ;L=r3zzy07NAV4&{KJXB ziSDGAbgF~L3CQQ-`l|kAcRl33hi((6n!tx6`w5gDO>ExFx1$ysm zIuj^&hPuOHm{dO%>sk%Z?q5<6xSS|L$na^Ut)L0iDfa)Lh>PXOAo=|_^%y^|4h1>( z-t0SPF*@VZ@Us|`IORx1$FZ*I5mVw6y2PzaaVm};a2&2 zNTHPcZ=?Ri+(uSt>gS%?c`C~^pnu`JH~JrY96?AAAF)bp^)srtgra7BW!?Fw5`t~* zY4Jo;VPfmtuNo9I3rG8UizT17K2H#A@+}lGh(ZrrI~6{Tma~dq?Kd<>=yEfjRR1j5 zS`+<|dkoGmT>*(Q*yR*RHU~eSbO*|sN8`k1=Gsr44V=tPc*N*`GjUH8$d?52`QaOK z$kRHyivM1kKe3;(&*L|(#2bF%cLMV(FS$W{iP><9y}^A?nv;(|YE*go-sHrmxa+2$ z8y6=IEsmbs<HJ<#ZU0F$=3i9H62*CD$4kEv{l||pOtS0z zlpfB}6%&;|cwZhc0-QR345f<;_)H@M^oJjg_3QCYQ&laf_P<%WPLIDqh4cAFaGG3? z%H^)_H}^#`tr!LBn?Wih((1I0ETN7QjoA6?Tq!2_e3juP+ru64)!`q_x+`%nDwI6nsc0`u{? zgj91rhoT$6#5q6tQc;|Hw8u|&_KFJ6pF@~K8NJ^7Op52yaX4NIPj06Jek&c>Y3Pwt z*QWq}R~aaf`Xg8iET3aDkN3|M@SwdO?`?EN_UYO7`@KqyoR20W@BIqu&sF`PxVm19 zfB9jl{A)&o#ivZM1;qVucyK*4pDUaie>`itd9>!2t{42nr~-%e+R(pULxUw8ISTCg zen|_yre}Xj$HDdgrz8HgPJI1aip8J!8zc6_->a0ea`St+NV4boq~P`M?cQ(aiS+lI zeIaX#pTpEalXBCC4yI|!pOS4gbD!Nu9t-Ra zwIHXwjs$=KCmqIl*0*PQD75V{u!NCtPz_*g#vhKnO#?8oCT+f<>V~my(8CvS^1uL$ z;Y8zt==Z2#nrJ)XTL6H2XbW{;{y)xaRsBHaP6VJ}u-;N6YzF(S5F2$$z(7fBqaSPu z9?3kEH0ekolJ#wfS{S|){781Vc@S$+fRbn;@-u3tW7wy>+hu{YJ~%G3T4NN9#FW0V zM8ubmsgCW`d)hAsAWfSdnh$|V=)w}O`;fV=!NPp)sKg_tm)>_$gfbTyGV84)K&BKP zoN>B>B&5Z4w!7$vIQ!_+b;)eHzU+uBs54e2Z_qSNOW0&QYgsE81-_d)aIuHbuOnrL z#>%9&4_l1LX0*|I3g&~Phy;&uU9a}YJve>Oz!hk$Mj69Zci+!t)wFz|ky!PQesz$7 zd6J@@i^+t-aR;}0vsTR#Eaz28IS?(cb>jpz_o zY3U{sj`sm^K}sAk*<7~)6uO?5lVX27XqF$-x$=a3tbNcm4073w!1&`Y7fvIr#(@wj zEpKNz`*;j2CVFdXNsZD*{BjrPse&=ZCXfJH(v74Q z^TldISA|r`@nSs}#YP@R+oa{;GulPajH<9N;s(Ivp~3q9cPkpNxc(O@$(l`;fvffD7Er0J9 zs{qdJ6Z>U%Iwq1bo3DV?YvExWW`sxoCKSy&#c|RUx?AnIK`oJKwsdLN(H%JrPh}3I z9ATncR6TU|qx(n$wms3_DPm})|Ix0oOZLcs{YEbv~Vt2{|7QJ7=3MZEg0BY8kRKsz~Yz!X@2I?!~%N--%PM^_)O$*cfgL1hNuWP{X&*|P1|hDkSEJL-h%56l68fi7$)sCKGXl=q2&;4-n+H-#gX>lkp*(+1y!j>5YFN)vI(h-CE{UiEg1ZiF-qc1Lp@O*^UJmQ~mfTAV#lBw2VrupzE+t0+ zWGFQI$R2Z}bhW4g9U1oIJg=;sXGj!N3DrfA2wZh7do#+kj0Y__KKz&RZwEkw{0;EkB2`$lsD`J!$hgZHt~V@y7P4J^^^3qU z!Ty*ca)rn4i(1<+*-Mu%4l`X4_Vl_{XNQQoFR*Uvy4xAvG-5a=B#OW8GfYxf1!3C26mGU4Mf&qw{HgaUsqc5DPvB->LBD`A&hkutfoG- zfcs)phicciYiWK3>0+F3>=HrNiAE%m2JBfZ@}vtzkieuCAvbgg;f z#xg;B(<7(N>1z$+u_}ldxCRqWDFiDjwM0Z-6(nnAX9@*j!a5uQf_N&yY7}iTdlz9U z7n=y$Dp5pj8BkU6kAfe;!HKG;TSN0J=)kz^*9l~3*&~g{l(J~d;$w`KSie`VgrQg( zK+JI2iG>+L4!x1SXj<225{k5_Csge^ee`*3nZ~Qv1w?0oHXcc+7O5&N%*yyoBoQ_S zgSNMy@Lo!T;y8+hsvPRRiqC!<$5;xJMm~uMGDdXA!KOB9Pv>6Ime+QRu#&})mkK{Q zUjicxdo5sMSJ$z+zkFiP^ommCBGB$mmkvWY9f!PUw* z5JFLF6+3=DeSUdNoFoycJqqb(?>9AtqUSOJ}*WKTc0-8|7_@ z9DLI+eVsj@D0@RgDyUkO^~ieogZN}@84PKVLK^L&X?h`rqRQfs;Tg}yxlzz_R0`R0 zuLp&YpILKsA01YG4pao@#r5Q=NSUUn#&jVFxt6Y+zANY0ds#^!+4gKv9)_MkwC5Vn zWlxyLCcQ+Yh9Xcgv^TT$;LEKS&oN+Jh{S|U^XWRIbee(m64wv0k5N)LUM5i23Kg!j z(9|>Nr~pZ#a4OX|cOp8a;doTaEYt($QDz$0se*$~nwxRzc3@6tfU;O=o~u7sqw+$X zf59$X0@v8)f-F({KY+1oDEN&~0ZW98y`N-kCocg4EfbhzwM;!P?Kh~M(wIX$L0Dlg zS}c!Ol4x63jn2mJC`Xk(p06X($fdBbNGp#nEUOdF1OS`hQIv-|>+QprrT5jx+p-!7 zV{pK#7_VWm+vt_VZh*=%YiID8RH;s;p_UUb!GC*Fbvg|+4f8ilqb$1JG5Xh;KmcBiVheS**Si3w#XYjazm!Hns90$M4~|TZtDy zWgBa~Wo_=a%WnireDSP1tVs8qvgN7;Re>^0@4dAkm&!r*Cc7#(7`}kZx5)0Vd2v?o z^{!+3?gsGT5%>g^&~Im&=hZtIh^YXg=E%S%00000$N&mJ;BAN*$`TWVfe=ZAmE@U5 zWr-LNW&lwV=OU`SDxL|VbZEG{JE|&_$!qRJkpYrA=}*;C@5{}IQ4IlDS=oV+64XhL zAty;=rr9S4pC9EBfX@j4M8VL#X)G$(eu^LK*=bkOIBUcS#j>~EHfBsA7Gf8JL$?_d zfgv`xlodedV2~#Z(R@+-p4m_SC_tc@H~`WKVyLR1Bm~+sZk=8-ckhg^044wcCIC}J zFjal-l9RI`pPQnZLp2-Xsli|$jnI_;C!2&q{035tRs`;?ZxEzje8xy&WF$s!so!cI z3EQ55+%2!i6gm?gA}eSB#J+``-R2`t5CM%w%i8SFp$I<{Kk^$oZVE<0;mEKcA@O_a zCp;KewJl?C6uf%~RjCMhgMABndLoTQR@-Xyk=_2$u9?{!F0&&B@2G~Z9x1y!B+{q2 z>T6p5Kt#!kzZJrwLR4w}mLFk#Uk72Kdy{}Y2i@<2HTKy6FolIW5U-6Y{DzhT2Z-$C zU=d%%!l+`HX2elkBA2lH^+kM zh+AZA4?VK-;|DTD==ee)773yuA^TEJ76lm3N~2-Bn7tjUcK{i88?iwmR_>uO98>)@y$^O5Y#7L~`ku6(ymt@TAu zR{n4h1LP0d7%iIZ<`HrtJvim@@*OaUu-$G>Lm)C#^WaIDaX+@X9vQWNZkkMB05((f zZ`&R}GqS>zc$Dc@u4f%k(=ma=p6G;0Ej?-g)+ik#7-~OQM)S5r+ zvOU{QJ6`Zq7=~t?FZQ$f?_@VF0KmH}q^c+!`@sv(hw=*d!K{ zyM;SVv26U0Euj<|22D_(WoIAWT@R}Jr1|l^44AU`F-^KLB*OT3o4{-`hJ@FNYg&O? zkoT&%Bmd3yjSc1-+&(#U2eN05U%v+^MOcRk7~A$S;Vwc5#6mUhnYZc{R*yw|Zhma8 zhm@#by7}`QtZs9SpUUZNp6?}kAok;9kse{AhW!C-xzXC|6p#ou|JcZO!PUo#jD3H@ zph)6$iUYxktNZ7N8Sm2I7ko0PWIaAZ#uS-+O?-!(=500eVZvy=FQpmLt5ESD%=QzS z8?1QyJxBdRlJAVOmw)@Qjm=h;V>YB#_}5I(J4Gmp%uztYCDJL{5Q-g;$x!dP1JOR# zg|ynT1F?^^myZF$7(M5q%BKv}s$eyEez#oISh5TB^v4SF=OE@rXtdGs!U|QqdM6!C z=a}JlzGaSh#2p0BQ98YK69%8AOz6}mYMNOMqlHotMEIk2XjGWZF2S!48TCF?Xd5wx zf5DtS)`@ngRnAQ|WfrZ?DEhb=#^U_UgV#4uBG!PvnD`1~^Y>8+iDu1@O5?J@GNhat z$MgSl!rh4Zlj_yYltrWMWyVNT-T@A3wFNEzuPv#Wt!7xW#_bv-n+9UG&MKRqL{h7Pk&`lt5O>Lv{Ywm9bUPXu4`@cckgM}e=ytS`; zY}KE9#*5&0)PLUYFGfcgv8?+bAw|92=|6>M~AOxxZaKybHg_M&F@9J}~yiL%QYqU)7BHKf?GP8>VwOBl4rF8Fv0R+zC^S8o%DZ zG4*oKhKI&%ARdg(p)OR}z;+LK*t+>qU*3U>Idp8hECuY}fZ!N#P$PIFMTLm8|Dk>d z3$LJNiZ9r499jEBTIdyHDSb(EXltX8q z^LAz-t=f!IvH#6=o=CP)g#ejU+(zv^w|_ORk1h6FmiExHD@!mR7uxo zV9!nq=D5F)a`spgKC9)d)vs0@S)g7yp!4J@>$c6s{8%&qoaw|aJ*i(_up+rB*R^eb zaAni`lKOo;W}$HnS=!~|WW^NRUd-^;JxR6&`#i`yha#72rGnjqLVK%Q76ZK*DnwFPn@ec zy9lMsy42X#7v{K{M@|nmiY;H5E8Er1>X*fo->8dDyH)t)LTsCSOsaYZeHsqi%pQhT z(rs@Qx09VDqB}3fOZxy{W48nG^K@xTYzmAWtC%B6ziKpR9|+cn^M%?D*X0{G;HRah zl$p4VLnUYbScuS9Nxqf)5yh zhOk-TDFalu1F*ad2Ov}6Y9BTYD7}CQaQ)(e;;n3ZWcwE(-<>Z0)y+a$$;{GGe$s+v z_q>rc$tz+Ug&X*ZN+o9`#_h|{K@1F7wTcd$F`~`806vp|De^iA;4ejx%f~XTM;cqq zWuh5c&1u@d#Y2pj>8#!sY7V=Y2MfEK=UX8BUL(49lkx_7k{a83~vY=~1O$Q9vr_Ag6;>OE>Pt^k1&D^VXfeXXjft4Wn zE`aSd?$;2CaU&*3@1;5S_reJzwOAXoNR^90)zf881C@cvF)0#~giuj>=}n^(#^Z|% z*)OS7uNARs>BJmHomr0ijA9GQo8yuIKZUnF8|Xv7QzQNx(OHTjG}yG#u>?t+kW<7~ z8kvfnU8W(>%3-iftEvW45n^^BqLn4DnU?YMD?1-Wjv)tH@>4OfIyC!ALw!uz4SvzH zG;><@uiL(>e!j$-_JX|~;O?;>1kCv7b7#yjfBj*9z0VE#;zdJB9w(~g-1wWjcuZaL zZMd!+TOb&lUa(~zIP6AgU1?4ohf7F@u~1!6eY!3l_oO`z2DKU}G_j^)xiG_S4$d!` zD>8|4sajgb;BM1!G&FMCmyLP5;|cPnccoIi@BR|{nDXT=vj>ohB`aTqOK-6#z;9Px z^b@SSSjE)iw_39|?Ccl`F!j6vq$9xG&zyi;Q|;f2Cfz?YZbeSF{tij!`c%~V zoB0RKpanRXhc8tPq&npV^bJeD01S<9VCyn%oJ6hRi0_mSfV}V@hI0Bv^U&<(EXJH( zD43f`$`ESx3wK(M@4*Z>Uz*H#@cTvzR?h9hfZhV$@ry-YhZU8?Ei*h#yF*tGjho6^ z!RQr-bg^g(;Y_S2o)EKCG^0wEUjhp(QU@iyKcdIQn_tP44y%$&Z>$3g(+Tmuz&&>6 z8z@P942*0qv@TqoPd0s9`78oT-?L|(y5k*oR-ahDDKEUNDl0y3 zNq_G81dQcL>AJXv0Y115U#~~FX(sYIpE>36wT;?#WyX3`m|U=mG4BfnP;Mwa&!ky} zi8q$jZ0bj$qwX~9l`GZ_hmTs*Q~lJKDxZ2-NdZttG4JZ1=Q`Mt3G&3|cJyl%I2AZ8>ivC-8+-v7!?pGF`)%x&u2uBBFcXF>|Ammr@uJ+2^ zF%Yba+)9D2dyba&0XuV+m{jHtd#`!TgRS>^5$7pnIRJb*&UDvoCsw|$aPBW09Hz{` zJwBc}*z+Cn7+h#_ui?S|ud}wAmaX8kHg_FAm$kbZyArskY6XBV%`mHq?dP8ogEhYv zkJa^o7b{Cz9>IHn6WX|U16NMh@-y|X{oFypZ?5zcpp9(IANRw33$*gZX5AFkdWL=l zzLxxf5eQ%KqECJ}ODh7Lr!ulyREpnUO|xL%#=Ctox0np%0)3RJiuqeAJ{rCerO;KQ zik?RMB2+FFx%Fjujm-Qqay)`_;d4h}Tt~iC(_Ax!!N*nyT<4WDYeF3R= zG+WI!YWhL%G%R*9O=vkYuDxurhFE#(W@>4)9^J21(ZOf{yA}n6>Fy%HW3y?WCZnXNeqc=pTsB3-H{tp-)s&u8B+nUH~Y839|ibipM{9&|iT?F*M4pVXGU z@K@EPueM&AfJN=&gCdRLrOl6deiX^jFIyyQ00%HgQz#CndXD5>HV#y3hD>d+DEr;I z2Q#Kusjya=7sl+Q;PC6N)i)J1Bwl3aYNk`J)mE-P9#+Dlf}gAn$kwS&=C&*4iK7!b zFJ$GVtE*VX2V!ZuqOPmUOqQr#r%wSrEF+6B(Qn#b1Wbt5RNMLr%~Nn=q^GT@S_+T+ zOPnJu(X?S_C!!mogAK(vrQejek--4y@!ozP;Cyaafn53Sqccs9mHM!evA?Ca84nGq zss;vK2C;Flm+0MY7YisN*(f&HHA^Lm;f30&Oh(ROSG`%3;Hw|YGpj5!;JULIDWzel z*h;td@qx<*sDN1xHkK=>E=AeU2YXLJns`m;03K9zCbp5|n5{uvwVm!A zk5rE;>^?ZlZO0Q@5SZui-26hdNw ze5sm6nb+yE$Q04Q^Ig)h^CoVh_QmKp(-&=N5?5)>o0gs2s@KrD)qMSJnv`o$Pu!r^ z-p)FWcgnC!*RqzFAv&tvOuQ-9)JVr{V6S1z)}ol*yD#AX_#H@vCwl4LkQbOh>OHyO z*B6rbK!ApL`+hvJFHKm$?id|w}Q>mN_ka8+02 zaioj-v&_~9rM`@6aWt$xR;`1&T9E*pQ#Ny`D(-bZbUHU4&o$$h=M+dB$aaHHZWR^q zSL$k?CY+}e+#bh*Hskb4NTNqjv4dEcpq6CZ&k0&ulnV% zULzQ7z-egq{+H_gV~;yW_|$M2%R{+B+8(Efl>P%d5|5qTelW9#ZsEOq3CYW8Xk-Wx zoZ0lE?QF(9i1g6M+bk+^-`kZEGt?N{)*l*|)3=Shf22y!ZSe(N4|a^xAlLRenvhe| z>;gx<&4pA`5KgkEYa62U3ID?m2!rumxjd~-gCRZ1Zc*-0m>6h+IB%%|qL@61st515 z%D3qft}_c*pU)%*WZsY}mRdoz3O(+e5}zPRXA9M?o{fc3Be8jOvqn~X>3$4KP7c5i#V_vr%C>Q5`*-^An)!bVN< zeL)Izf>_uNUtI`5lpN1~lA8YPW757GIU2J=DZ6Y-lab~M=@wLY>5Ys6yKaPKw?Noe zk0Ef8t9lf`7C3t(#N$H`B=SFA=irEuk{M+@nrqAGXRP9|V!C$hWlY)ldk}Jjd+x?l z?GE2AXkSQpBIFOW&ebx)8GU17h0pJVYblRDu|` zBbK5PHcc+J--R4r{Bnn!HVZ{j*?`@C7D%cBJC-RS5Ks0AC%$or1^!ch@H+SoIhoiA z1mQ8%C6N(7HpqS`m_nKDAh;N}0SudotN5`0ip(lbMA?9@P48h$z0kNxzJ8g~5OZ0%(J zB*^SQTnLfO>>KZ+N2KbuCtlzzs(u`Uui3b{$sk%-Rs5{8AthXTbi-_^&)uMh!sYpXt+|5ku`K}jI;!zOVr zM9lkgq0Pefp)%_=!tkh$EgCd+_8=j!ckybjS?Rp$S_mQE102ANM&n4PvgUt)-sFj$ zL8#r=Z;bKz7eJcBx`os-VEfO7g|+JtG_dlWT6yT3Z`hV#VIz5vn_7s-wea?$#Nq%x z5eknLLJ%tRD9&B{nKF1{vcWq}<+jRUB=uAqwT7yW?c(aRxZHrU)iXT5tb&<{_ZEoZ z&JQ;UW(s`^4}EHs*N@#H49 zw2;YBaS;T%nUFOo+1#q7M@Cm8Vk+5D9$4kKS%x>v+*3ZJh6cTK;Da#63Uy(F1=!<$5uiHZ zfDs37vu5qmKa?!SY`D+D+|gG?A&V&#y=wkNdcFKdOO#~(XLddqiH4$88pbu)thYm!R+562Ii5S)Tjt(HO0;0+K@VTjnblp#GyP?CQ&pM=S#$_8Vr&D_4 z{jGkYr$u3(_Ku#}bc_uLm^+^4yZQ04XBztvKB%K%l6b#g;IF}0ya5NZfKPhe_!`z) zGqcZM28>?O9u9{z?-i6KJCKh^D9BaSkV(>#UxJQ^h2E=ZzbWZ&AONnK^xGQ0mOaSm zg%~W+L%0o$z7&3~Z#fM1{P&M3+@05wbL|kyN^Y=^79M?e&3(vFa5$c$e{;B>0;cHP zJ(={so<}e{cuyQ+mwJZoJ;f>P858Z;#AcLF+pnq|o{_ZZK%{zDmiRrBq|g)WTaLdJ zQHm6ceOW6)I%Y1)HRqyncc0?6o|0LWg@oL0n_}8PuWAfkgAa*^+ADww{&q4d(9}sl zAk1&$RGMf|=NU~aU~Mohu_~)G(Kn2AxbwhmHm~V`1CHZH*pX|Aq`TVuIjSBUB|P*M zaQ&!izLt7IDYpX$4%|P85xN1XY8Qx9B3UmIxuB%7OSo4a26s-;$j)|3EuEiHrE_WdQ=9mc|L& zh{OtzC45Fmv#^{Xjs`+DC;BDS6`)JslmLJVxKdPrNEk z2u@WlRk(+1cjBIeIz*s}o9AH@k_ku4WPGUQbua`XKThs>gO*Z8@AQYOyqdbF7LpTA zCyB25^&=m!Ork7TiEQqm0`k&2vHK3WV~NguY&Sop{+D(~!}w!hNlB*v>ojJve=F=9 z`{};;CI>7rS4!K?{}&BQ1gpG!k&{Y?b9U@x_F>ivX7bhSVO_W-a66KTS?z%iB9i2 zcF~Q8k^RGZC5v~_=lDHt`h={yvnEJP^cml3G^gri)U{1mjN)K`z# zHwI9Gwtuz@xV1m*-H)|Y#Yibv3Lsn7+vg!vV=9^6+V!}9b{`r3(17cFQBa>e7$B}O zDQ0$Y|IqzV%7?oo->TU2-UXrgXzro22=zRsctY--tGdHQS@RF~0t{$;;nJUvwD>3A z1*{{rS(4-{tiHM+pH08DW@jCcnzy!j6m*X+t@;9{Y-8ZOIW2DSK!~Or5Ab-8HF$tD+uMNyhroew;2byy M4uJ#Uz&UUL@MugPn*aa+ literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/whatsnew.htm b/official/2.1.6+2.1.beta1/whatsnew.htm new file mode 100644 index 0000000..b893476 --- /dev/null +++ b/official/2.1.6+2.1.beta1/whatsnew.htm @@ -0,0 +1,361 @@ + + + Toolbar2000 Revision History + + + + + + + + + + + +
        Toolbar2000
        +Revision History
        +
        + +

        2.1.6 (2005-07-30)

        +
          +
        • The captions of floating toolbars are now grayed when their parent forms are inactive (e.g., when a modal dialog is up). +
        • Replaced various global "var"s with "threadvar"s to improve thread safety when Toolbar2000 is used in a browser-embedded ActiveForm. (Note that this can never be 100% safe because the VCL itself has some thread safety issues.) +
        • Fix: When running on an Athlon 64 CPU with the Cool'n'Quiet feature enabled, menus animated at approximately half the expected speed when the CPU utilization was low. (Previously, it used QueryPerformanceCounter to time the animation, but with Cool'n'Quiet enabled, the rate at which the performance counter increments actually varies depending on the current CPU clock frequency. Now it uses GetTickCount instead.) +
        • Fix: In the Delphi 2005 IDE, toolbar editor forms could fall behind the IDE's main form. +
        • Fix: When an EXE contained a Toolbar2000 menu bar, and a modal Delphi form hosted in a DLL was currently active, pressing Alt would open the menu bar in the EXE even though the form containing the menu bar was disabled/inactive. +
        • Fix: Fixed MSAA bug reported in "Accessibility issue with Window-Eyes" thread on newsgroup 2005-06-21. +
        • Internal tweaks and trivial fixes. +
        + +

        2.1.5 (2004-12-13)

        +
          +
        • Packages for Delphi 2005 are now included. +
        • Added new RadioItem property to TTBCustomItem and descendants. Like the property of the same name on TMenuItem, it causes the item to display a circle instead of a check mark when the item is checked and no other image has been specified. +
        • Like standard menus, it now prevents other applications from stealing the focus while a menu is open. This should make it fully compatible with Tweak UI's X-Mouse option. +
        • If the application displays a modal dialog of its own while a menu is open, the menu will now be hidden. +
        • TTBCustomDockableWindow and descendants: Made Canvas a public property. +
        • Fix "ImageIndex on toolbutton incorrectly overriden by action's imageindex" issue reported on newsgroup 2004-09-02 by Anthony Egerton.
          +(Note: The problem described in the thread isn't Toolbar2000 specific. Standard menus and controls will continue to exhibit the same problem.) +
        • TMainMenu/TPopupMenu converter: Now additionally transfers the AutoCheck, GroupIndex, and RadioItem properties. +
        • Internal tweaks. +
        + +

        2.1.4 (2004-02-28)

        +
          +
        • Toolbar2000 may now alternatively, at your option, be used and/or distributed under the terms of the GNU General Public License. Please see the updated LICENSE.txt file for more information on the two licensing options.
          +Note that if you choose the GPL license option, your application as a whole must also be licensed under the GPL. Therefore, you cannot choose the GPL license option if your application is proprietary/closed-source. +
        • Reworded point 5 of the Toolbar2000 License for clarity. +
        • Added new ChevronPriorityForNewItems property to TTBToolbar. +
        + +

        2.1.3 (2003-11-23)

        +
          +
        • Added new tboNoAutoHint value to the Options property. When set, the automatic hint generation feature (introduced in 2.1.1) will be disabled. +
        • On Windows NT/2000/XP, use SetWindowsHookExW instead of SetWindowsHookEx to work around apparent OS bug reported on the newsgroup by George Kyrou 2003-09-23. +
        • Tweak to HookProc in TB2Toolbar.pas to avoid ANSI/Unicode character set issue with hooks on Windows NT/2000/XP. +
        • Fix: When a TTBEditItem was focused, it didn't inherit the font settings from the parent toolbar. +
        + +

        2.1.2 (2003-08-10)

        +
          +
        • It's now possible to nest "group" items such as TTBGroupItem. Previously, placing one group item inside another did not work. +
        • Tweaked the automatic hint generation introduced in the last version: It now will not generate hints for submenu items unless the submenu item has the DropdownCombo property set to True or the submenu item has no visible caption. +
        • TTBControlItem is no longer explicitly registered. There is a slim chance that this change may affect you if your application initially used one of the very early Toolbar2000 betas. In those early betas, Toolbar2000 did not assign to the Name property of TTBControlItem components it created. If you have unnamed TTBControlItem components on your forms, you must now assign them names, otherwise you might receive a "class not found" error message when running your application. +
        • Fix: TTBEditItem would lose the focus when Alt+[keypad digit] was pressed. +
        • Internal tweaks. +
        + +

        2.1.1-beta (2003-07-13)

        +
          +
        • Now automatically supplies short hints for items with no short hint assigned to the Hint property. The hint is derived from the item's caption, with accelerator keys and any trailing colon or ellipsis stripped. +
        • Shortcut text is now displayed in the hints of items that don't have associated Actions. +
        • Fix: In TTBMRUList, "&" characters in filenames weren't escaped when assigning item captions. +
        • MSAA-related tweaks: +
            +
          • Escape any "&" characters when assigning text to chevron item's Caption property. +
          • Work around bug in Delphi/C++Builder 4's ShortCutToText function. +
          +
        • Internal tweaks. +
        + +

        2.1.0-beta (2003-07-05)

        +
          +
        • Microsoft Active Accessibility support for Toolbar2000's menus and toolbars. This exclusive feature will make your application's user interface more accessible to users who rely on screen readers. For more details, see the MSAA Support topic in the help file. +
        • When new items are inserted programmatically at run-time, they are now placed at the top of the "priority list" instead of at the bottom. This means that new items will now be the last to move onto the chevron menu when all items can't fit on the toolbar. +
        • On popup menus, accelerator keys are now properly hidden if the last input came from the mouse. +
        • On TTBMDIButtonsItem, the biMinimize setting of BorderIcons on MDI child forms is now respected. +
        • As a performance optimization, the default image base of the Delphi design and run-time packages have been changed from $400000 to $3F800000 and $3FC00000 respectively.
          +(The C++Builder packages remain at $400000 due to a design flaw in the C++Builder linker: it strips the image's relocation table whenever the base address is changed from $400000. DLLs must have relocation tables in order to load properly in all cases.) +
        • Fix: When a top-level DropdownCombo=True submenu item is selected using Alt+[accelerator key] the item is now clicked instead of opened. +
        • Fix: When F1 was pressed on a menu item and Toolbar2000 handled it, a WM_HELP message would still reach the parent form. +
        • Fix: A focused TTBEditItem would lose the focus when Alt+Shift was pressed. +
        • Many internal changes, most of them necessary for supporting MSAA as cleanly as possible. +
        + +
        + +

        2.0.16 (2003-03-28)

        +
          +
        • Added new tboSameWidth value to the Options property. When set along with tboImageAboveCaption on two or more items on the same view, the items will be stretched as necessary so that they all have the width in pixels. +
        • Added ChevronMoveItems property to TTBToolbar. Normally, when an item on a toolbar's chevron popup menu is clicked, the clicked item will move into the visible area of the toolbar in place of the least recently clicked item. Setting this property to False will disable that behavior. +
        • TTBCustomItem.Click now checks the Enabled property before calling any event handlers, like TMenuItem.Click does. +
        • TTBPopupMenu.Popup now sets the PopupPoint property. +
        • Published OnContextPopup event properties on TTBDock, TTBToolbar, and TTBToolWindow. +
        • Fixed issues with Russian characters as accelerator keys on Windows NT/2000/XP. +
        • Internal tweaks and trivial fixes. +
        + +

        2.0.15 (2002-09-29)

        +
          +
        • Packages for Delphi 7 are now included. +
        • Revised the Toolbar2000 License Agreement. +
        • TTBMRUList: Added new Remove method.
          +TTBMRUListStrings: IndexOf method now uses AnsiCompareFileName instead of AnsiCompareText. +
        • Fix: The issue reported in the "Problem with tb2k in Com Server/ActiveX" thread on the newsgroup has been fixed. +
        • Internal tweaks and trivial fixes. +
        + +

        2.0.14 (2002-05-10)

        +
          +
        • Added new tboNoRotation value to Options property. When set, the item and its caption will not be rotated 270 degrees when docked vertically. +
        • Added Move Up and Move Down commands to the design-time editor to make it easier to move items. +
        • Chevron popup windows now wrap if they are too wide to fit on the screen. +
        • A toolbar's LastDock property is no longer updated when the toolbar is dragged over but not dropped on a dock. +
        • When arranging toolbars on a dock, row numbers that contain only invisible or undocked toolbars are no longer removed. This way, when the toolbars are shown/docked again, they stay on their row. This was how Toolbar97 worked. +
        • A toolbar's DockRow and DockPos properties got updated if you dragged the toolbar over a dock but didn't drop it on the dock. Now it restores the original DockRow and DockPos settings when a toolbar is not dropped on a dock. +
        • Fix: When arranging toolbars on a dock, there was a case where LimitToOneRow wasn't being checked. +
        • Internal tweaks. +
        + +

        2.0.13 (2002-04-06)

        +
          +
        • New item class: TTBVisibilityToggleItem. This item class controls the Visible property of a control, such as a TTBToolbar. +
        • On menus, it now uses clGrayText to draw disabled text when the menu background color doesn't equal clBtnFace. (That is how standard menus work.) +
        • On vertically docked toolbars, it now uses a vertical font if one is available so that Asian characters aren't drawn sideways. +
        • Now, if at design time you double click a TTBToolbar or TTBPopupMenu that has its LinkSubitems property assigned, it asks if you want to edit the item specified by LinkSubitems instead. +
        • TTBEditItem: The outermost border is now transparent when the item is not selected. +
        • In the functions that load toolbar positions, it now compares the dock names with case insensitivity. +
        • Added new demo project file for C++Builder 6 - DemoBCB6 - because DemoBCB doesn't seem to compile under C++Builder 6. +
        • Internal tweaks. +
        + +

        2.0.12 (2002-03-06)

        +
          +
        • Menus now display scroll arrows when they are too tall to fit on the screen. +
        • Packages for C++Builder 6 are now included. +
        • Minor tweaks and documentation updates. +
        + +

        2.0.11 (2002-02-23)

        +
          +
        • Fix: The new Stretch property introduced in 2.0.10 had some bugs. +
        + +

        2.0.10 (2002-02-13)

        +
          +
        • Added new Stretch property to TTBToolWindow and TTBToolbar. When True, the toolbar, when docked, will stretch to fill any unused space on the row. +
        • On TTBToolbar, chevrons now display a "More Buttons" hint, like Office 2000. The hint text can be customized by changing the new ChevronHint property, or globally by changing STBChevronItemMoreButtonsHint in TB2Consts.pas. +
        • The OnMove event of TTBToolbar/TTBToolWindow now gets fired when the bar is floating also. +
        • Fix: TTBPopupMenu.OnPopup was being called twice when the popup was displayed - once with the TTBPopupMenu as the Sender, and once with the internal TTBRootItem as the Sender. Now, it's called only once with the TTBPopupMenu as the Sender. +
        • Fix: TTBEditItem: Fixed double-click issue ("TB2k Strange Behaviour"). +
        • Internal tweaks. +
        + +

        2.0.9 (2002-01-11)

        +
          +
        • Added new TTBImageList component. It is an enhanced version of the standard TImageList component, designed for use with the Toolbar2000 components. It adds the ability to use special images for different item states (hot, disabled, checked). It also adds the ability to load the images from a bitmap instead of using TImageList's normal streaming mechanism, which has problems with older COMCTL32.DLL versions. +
        • Added new OnSelect property to TTBCustomItem and descendants. This event lets you trap when the mouse enters or leaves an item. +
        • Added new CharCase and OnBeginEdit properties to TTBEditItem. +
        • Added C++Builder version of the Demo project - DemoBCB. +
        • Minor tweaks and fixes. +
        + +

        2.0.8 (2001-12-27)

        +
          +
        • Now supports "flat" menu borders on Windows XP. +
        • The background of a selected menu item's image is now filled with clBtnFace. This seems to look better with Windows XP's white menus. +
        • Made chevron popups colored clBtnFace instead of clMenu. This seems to look better on Windows XP with themes enabled. +
        • Fix: Fixed "stack overflow" problem that may have occurred if you had a floating TTBToolWindow and pressed Alt on the keyboard. +
        • Fix: On Delphi 6 the ActionComponent property of an action now gets set properly when the action is fired from a TB2k item. +
        • Removed some Windows NT 3.51 support code since NT 3.51 is now officially unsupported. +
        + +

        2.0.7 (2001-12-19)

        +
          +
        • Menus now display drop-shadows on Windows XP if they are enabled in the Display Properties. +
        • When a menu is up, keystrokes will no longer get processed by an IME if one was active.
          +Note: The ImmGetVirtualKey function is used, which is not available on Windows NT 3.51. Therefore, NT 3.51 is now officially unsupported. (It never was officially supported anyway.) +
        • TTBToolbar: Added new published FloatingWidth property. +
        • Fix: Accessing menu bars on non-main forms with the keyboard should now work. +
        • Minor fixes. +
        + +

        2.0.6 (2001-11-14)

        +
          +
        • When a shortcut key is pressed, it now sends OnPopup/OnClick events to the selected item's parents so that they can update the Enabled state of the item if needed. +
        • The OnPopup event of TTBPopupMenu is now fired when one of its items' shortcut keys is pressed. +
        • TTBPopupMenu now processes shortcuts. +
        • Added OnUpdate event to TTBMDIWindowItem. +
        • Minor fixes. +
        + +

        2.0.5 (2001-10-09)

        +
          +
        • Toolbars that are neither docked nor floating can now wrap or display a chevron (ShrinkMode is no longer ignored). For it to work, you must do at least one of the following: set AutoResize to False, set Align to one of [alTop, alBottom, alClient], or add [akLeft, akRight] to Anchors (which is now a published property). +
        • TTBToolWindow: Published the Align and Anchors properties. +
        • Now allows F1 to be handled while the mouse button is down (an odd quirk of standard menus). +
        • Now always streams out the Width & Height properties of a toolbar that is neither docked nor floating. Needed to properly support anchored toolbars. +
        • Fix: Fixed a GDI resource leak in TB2Item that occurred on Windows 9x/Me due to an undocumented difference/bug in the way SaveDC works. +
        • Fix: Fixed resource leak with TTBMDIHandler: it was trying to free an icon handle with DeleteObject instead of DestroyIcon. +
        • Fix: Made TTBPopupWindow a TCustomControl descendant instead of a TForm descendant. This resolves the issue with the Application window's taskbar button reappearing after the program initially hid it. +
        • Fix: When destroying a toolbar on a dock that had another toolbar on the same dock linked to one of the destroying toolbar's subitems, an AV may have occurred. +
        • Fix: Fixed problem in TTBView.GivePriority. +
        + +

        2.0.4 (2001-09-30)

        +
          +
        • Added new tboImageAboveCaption value to Options property. When set, the item's caption will be displayed underneath its image, making for an Internet Explorer-like appearance. +
        • Added Options property to TTBPopupMenu. +
        • Fix: It was possible to "click" disabled top-level items by pressing Alt+[accelchar]. +
        • Fix: Shortcut keys now work on toolbars that are on frames. +
        • Fixed issue with TActiveForms: OnClick events were always executed in the context of the first thread. +
        • Minor tweaks. +
        + +

        2.0.3 (2001-09-13)

        +
          +
        • Added AutoCheck property to TTBCustomItem and descendants. +
        • Added Prefix property to TTBMRUList. +
        • Added Enabled property to TTBMDIWindowItem. +
        • Published GroupIndex property on TTBSubmenuItem and TTBEditItem. +
        • TTBView's Selected property is now writable. +
        • Fix: Sealed minor memory leak that occurred when when a TTBMDIHandler component was created, or when the LinkSubItems property of a toolbar was changed. +
        • Fix: Modifying a TTBBackground's bitmap after a dock that used the background was destroyed may have caused an AV. +
        • Fix: Alt+- didn't work unless the two keys were pressed simultaneously. +
        • Fix: Shortcuts didn't work if TTBToolbar.LinkSubitems was set. +
        • Fix: MDI buttons didn't show when FullSize=False and ShrinkMode=tbsmWrap. +
        • Fix: Unwrapped floating toolbars were a pixel too high. +
        • Fix: Hopefully fixed Delphi 6 AV with design-time editor again. +
        + +

        2.0.2 (2001-08-19)

        +
          +
        • Added new component: TTBMDIHandler, which adds the MDI system menu and minimize/restore/close buttons to a menu bar. See the documentation for details. +
        • Added new item type: TTBMDIWindowItem, which expands to a list of available MDI child windows at run-time. This is intended to be placed at the end of an MDI application's Window menu, following a separator. +
        • The design-time menu converter can now convert TPopupMenu's too. +
        • The Alignment property of TTBPopupMenu is now respected. Also added optional Alignment parameter to the TTBCustomItem.Popup method. +
        • Added TTBCustomItem.Clear method. +
        • Now respects the system's "menu drop alignment" setting when dropping down menus. +
        • Pressing Home or End on a toolbar or menu now moves the selection to the first or last item. +
        • Fix: TTBToolWindow's that had their FullSize properties set to True weren't the correct size when undocked. +
        • Fix: Now doesn't attempt to draw or invalidate TTBControlItem's. Fixes issue with Transparent=True TLabel's. +
        • Fix: Now doesn't display the size-all cursor on DragHandle=dhNone toolbars. +
        • Fix: The keyboard shortcuts for Cut/Copy/Paste in the design-time editor now work again. +
        • Some minor internal tweaks. +
        + +

        2.0.1 (2001-08-04)

        +
          +
        • Added slide/fade animation support. It is enabled automatically if the user has menu animation enabled in Windows. +
        • On vertical toolbars, the tboDropdownArrow arrows are now drawn rotated and below the text. +
        • Fix: When you have ProcessShortCuts=True toolbars on multiple forms, it now first looks for shortcuts on the active form's toolbars, and then the main form's toolbars. Previously, it looked on all forms' toolbars. +
        • Fix: It wasn't loading item icons correctly after design-time code was moved to the tb2kdsgn package. +
        • Fix: Setting EditOptions on TTBEditAction had no effect. +
        • Some minor internal tweaks. +
        + +

        2.0.0 (2001-07-21)

        +
          +
        • Revised the Toolbar2000 License Agreement. +
        • Moved design-time units to separate tb2kdsgn_* packages so that tb2k_* may now be used as run-time packages. +
        • Tweaked the component icons. +
        + +
        + +

        Beta Releases

        + +

        2.0-BETA6 (2001-07-18)

        +
          +
        • TTBMRUList: Added AddFullPath and HidePathExtension properties. Both are True by default. See documentation for details. +
        • TTBMRUList: Added OnChange event. +
        • Typing or pressing Enter on the design-time editor's tree view now activates the Object Inspector. +
        • Fix: On Delphi 6, the ShortCut property of TTBCustomItem was showing up like an Integer property in Object Inspector, thanks to some change Borland made. Workaround added. +
        • Fix: Removed call in design-time editor that appeared to cause AV's in certain cases. +
        + +

        2.0-BETA5 (2001-07-09)

        +
          +
        • Now works around the Windows 2000 problem of delaying on the first PlaySound call by not calling PlaySound at all if there is no sound associated with the event. +
        • Added LoadFromIni, LoadFromRegIni, SaveToIni, SaveToRegIni methods to TTBMRUList. +
        • Updated documentation; added an index. +
        • Updated demo project. +
        • Fix: The change to the Click handling in 2.0-BETA4 broke exception handling. +
        • Fix: The OnResize event was never fired. +
        • A few very minor fixes and tweaks. +
        + +

        2.0-BETA4 (2001-07-01)

        +
          +
        • Added UpdateActions property to TTBToolbar. Setting it to False can decrease CPU utilization. See the documentation for details. +
        • Now, as with standard menus, when an item is clicked it posts a message to the queue so that the Click handler gets called when control returns to the message loop. This fixes the problem with modal forms not correctly getting the focus when an item is selected from a menu with the keyboard. +
        • Fixed potential AV problem when Escape was pressed. +
        • Improvements to design-time editor: +
            +
          • There's now an empty item at the end of the item list, similar to Delphi's menu editor. You can't (currently) type on this item item, but you can select it and press Insert to add a new item to the end. +
          • You can now hold down Shift while pressing Insert or clicking one of the New buttons to add an item to the end instead of inserting it before the currently selected item. +
          • Added keyboard shortcuts for New Subitem and New Separator. +
          • Now selects root item when list view is focused and no item is selected. +
          • After deleting the items, it now selects the item with the focus. +
          +
        + +

        2.0-BETA3 (2001-06-25)

        +
          +
        • Context help (F1) is now supported on menu items. +
        • Added a GroupIndex property to TTBCustomItem due to popular demand. See documentation for details on how it works. +
        • Added a new ImageIndex property editor which is fully compatible with Delphi 6. +
        • It now substitutes Arial for MS Sans Serif & Microsoft Sans Serif when drawing vertical text, instead of letting Windows pick a font. +
        • Remarked out code in TTBDock.ArrangeToolbars that was there to work around a VCL alignment bug*, because it had some undesirable side effects. Now, if you want to avoid the bug, you need to right-click your alClient-aligned controls in the form designer and select "Send to Back." +
          * The VCL alignment bug: if a control is taller or wider than the client height or width of its parent, alClient-aligned controls may appear on top of the control, instead of being hidden from view. +
        • Fix: When toolbars are dragged across a dock that has a background bitmap, they should no longer flicker. +
        • Fix: The menu converter now transfers the Tag property. +
        • Fix: The toolbar-dragging changes in 2.0-BETA2 broke the splitter. +
        • Fix: Work around an annoying Windows or VCL bug. (If you close all MDI child windows, the MDI client window gets the focus, and when it has the focus, pressing Alt+[char] doesn't send a WM_SYSCOMMAND message to the form for some reason.) +
        • Fix: In the design-time item editor, when a new item is created while the tree view has the focus, it now sets the focus to the list view so that the item becomes selected in Object Inspector. +
        • Fix: On TTBDock, LimitToOneRow=True didn't actually limit to one row while dragging. +
        • Various other minor tweaks and fixes. +
        + +

        2.0-BETA2 (2001-06-18)

        +
          +
        • Delphi 6 is now supported. There is one limitation however: the ImageIndex property editor used by TTBCustomItem descendants had to be disabled because TComponentImageIndexPropertyEditor is gone in Delphi 6! Therefore, on Delphi 6, the dropdown lists of ImageIndex properties may not work correctly, at least for now. +
        • Text on vertical toolbars is now drawn vertically! +
        • Vastly improved the code that handles toolbar dragging. Previously, when you dragged a SmoothDrag=True docked toolbar over other docked toolbars, the toolbar may not have ended up on the row you were expecting. This was because the old code - ported from Toolbar97 - was not designed with smooth dragging in mind. Now it should function almost exactly like Office 2000. +
        • TTBEditItem (and friends): Removed DisplayAsButton property; replaced with EditOptions property. Now, by default, edits on toolbars will automatically change into buttons when the toolbar is docked vertically. Add tboUseEditWhenVertical to EditOptions to disable this. +
        • On wrapped toolbars, menus now pop out to the side which obscures the least amount of items, like Office 2000. +
        • Up/Down/Left/Right arrow keys on vertical toolbars now work like Office 2000. +
        • Fix: Hints on chevron popup's items didn't include shortcuts. +
        • Fix: Deleting an item from a TTBMRUList via Items.Delete() did not refresh the keyboard shortcuts. +
        • Fix: Fixed "Run-time creation of items and chevron" problem reported by Francois Rivierre. +
        • Some very minor tweaks. +
        + +

        2.0-BETA1 (2001-06-12)

        +
          +
        • Updated the Toolbar2000 License Agreement. +
        • You can now display the version of Toolbar2000 by right-clicking a toolbar and selecting "Version". +
        • Added an improved Demo project. +
        • Made the margins of menu items a bit more like Office and standard menus. +
        • Now includes size of a font's external leading when calculating an menu item's height. +
        • Added workaround an apparent NT 4.0 & 2000 bug that was causing the right side of floating toolbars' non-client area to be painted incorrectly if the toolbar's width was greater than the screen width. +
        • Various tweaks to the display of disabled toolbar & menu items. +
        + +
        + + +

        Copyright © 1998-2005 Jordan Russell. All rights reserved.
        +For conditions of distribution and use, see LICENSE.txt. + +

        s-@ef|z2Ot&(2A`iSj1T<7(?*N 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%0AnF><~dbG0b5Q7DTjO^ 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

    t9$S%lk>hND*;(;vn{zOFI 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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/TB2MDI.res b/official/2.1.6+2.1.beta1/Lib/D7/TB2MDI.res new file mode 100644 index 0000000000000000000000000000000000000000..4a6203581a390a61c4fb08e5e23f5205e7b9749e GIT binary patch literal 712 zcmcJJI}QRd3`7S+k&+`&QX)>UAR$Bn4N!0cj*&9Q+M9(pn`8k2C8PK=9y_)qEwG%6 zk-p(Rl{zXpPj%5&Yn^q&j@s#@s}5uv?P2F}ZZ#iMElE4frHN*Ez@Og{C7xm|0Z)oW z^?i@vBOP)H_;Pnv`Zr=o$y>NbB2P7#n@0H&u@taYuQVx?KKP(J0{4d@k;k9&CcyeI uSpE3_prU(EaO02prvKRA4*0mg{$CdGJv)4$_mz8Ug9~U4rmwu!{~R9{E(V(b literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/TB2MRU.dcu b/official/2.1.6+2.1.beta1/Lib/D7/TB2MRU.dcu new file mode 100644 index 0000000000000000000000000000000000000000..296f026c6f662a1aca8579ed643c65ba44d871f0 GIT binary patch literal 12437 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 CKmMoy literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/TB2Reg.dcu b/official/2.1.6+2.1.beta1/Lib/D7/TB2Reg.dcu new file mode 100644 index 0000000000000000000000000000000000000000..e57c8be68392ff484331f8cd7b21dc62951f0d66 GIT binary patch literal 10212 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 Q74XVEL1VJf0@R84zb;Ea;{X5v literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/TB2ResCursors.res b/official/2.1.6+2.1.beta1/Lib/D7/TB2ResCursors.res new file mode 100644 index 0000000000000000000000000000000000000000..e09ab15dfffb5b8fcb12fc48ac835711927ab2a5 GIT binary patch literal 1304 zcmds$Jx;_h5QU#(ln7~yAV8u(kTP^BD3LY`K`SJFBv=l>4YD?lyHNT zDY6W25?kyd6c7px6MY_!J+d7?4*(=Yq=nrj+c$pRFoyvxi&s~CQV5HbK|*q3_%-HS z8+^2)8~wyAla$ag;M&Rqc_tO%Qs#}+E-vX`fXydh?~#52q|OhS=Z$CRwt6a3IZBZ^ zsb9$ru?`HS#*{EN?bsdr-=Q0C@E|!68Q>g;C~%1p#yG(Q$2h|gt~qjr3%1^}*!R>2 zyyY}$S5buwmURl6&h;q;H)L_)A`= z5tS-BRO;3!_@t3O?!IeDHCn$1)~L-^25jFp-ZHiv|EC%i3mO%ypi`oi^!s|Ucn1ZG Bgx~-G literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D7/TB2ToolWindow.dcu b/official/2.1.6+2.1.beta1/Lib/D7/TB2ToolWindow.dcu new file mode 100644 index 0000000000000000000000000000000000000000..eb5690871b227a6e892342907648bdb40f9bcb5d GIT binary patch literal 12689 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

  • >k7~^IT)G^4w*0-4lDSy6@ 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

    ukRlxrXT%=Y%yE zS7Ut15$LFCV~iv-0{v$JefsIA+5XiL=w3j@_?|@t(Xj~g^om^v;mjCbnxIo_g<8^q<^)U2Y69{hrM4u`)Cgfas=}WJ}4EvKKpt}f!0c1u%U!++FXl(?P z3aTD}Hbp?O#2%p5FbEq3o#ZhP{J=NZs=A8Ghojrg_{tlz9fRjRb+wQ9lkdbIkZ2Hn z=!K-!70nNuAOWL`838NtSJat(!>|YOP4y-W<7W6QPi;-3A)oZXchI&kSh{dFs)856 z1h4hR-|Hbgsoy=#^tTiY8q!P9l;NGvjgN-MVrXg5U=osJorJu)HvG-0Njfdc3eOqQtZx)-1aGogNrmAr5t~_B8GL9Cjqyi(i{4{w zz#^KFT}W4Yf0(5h!ARG&75L*i_|!bALau`6y_;)WX*_@66n;1_lX@S{qwND({vUV& zmy*^D5E)6USTMLv?*+tIuHiIwDIjKgdbRwO?F)#)*7BLfBhg3xza{7^_1!wtLlU!v zq$N5&{%_kU9kLBdn(cMXrqX{MyQgiJ^qK$)h)vUUd}!a+BfT00bZR<2kZ;=~b#kM> z*XR#wML)`;}%pqv2~rHQNvX!zkx9+ix}7Wes14tJzXevQY9-icsoNI#GJ%OdTKE zhe}JJl4je-=jaE}J^&SmP!2#%g8v^^bB>Pe2rA8kN*dIigUR*c+enw#zL8-2IMe1s z>*^xg@4dF`nJ~B)Un;svkc@x?({&UUImR<>n%6e2*=&5i?JIfkixSMWX1)+E zu|Xe(m|rlav93OF_Xi7NrmMQ+Q5CNko~6au($pN;aG<1<%3Y=5HS%c6y zHW*@yeF;4}@Hi^1*H3}s6l9-9IR*KDvip|9O{Olh0gUp4KXsW6ftZ%rD4r)##!zCx zwimE$ZJv&gUO}(<(97`QpLy|BG7B*fFTM%Ja%H$^HeW@qoWoa4^5{?VWb$Houzm#s zu3+HTP_BTh56*K_D77eCP}+E^jt{Cp zY8s?!w)f`fW70H!YZA9fc|18ycgb!&MJ~~^8Ip?enpD^XD^l@YScQ8~MvRe;{6;t3C}WNs!W@XR8?;A;FEZQiKKy4}Z9nbKb?1`SalX zExi<6ySbN#c!FN97Gl`Y_yOLOr0n8QdOn}7CZWXZUFsSjGkG5`M9JfcQj*@MdiA~P zQoh2=XG-a|KJ_`6axF$ao%81tIWJT4^i!&syyx7ue{k}ZGiU}csVZNcz*i;ke~jmO zZhcH$h_CER;h{ zE~m=zBz?@jL66mzW7*CE?|5DY-gA=Bw45nLTgl&fhQISQJzFF3aU2HFK?>PkydFm3mzJ_lp;0ZlBXQ|cmG_d}Z7Hl!uk&PwF3PQEG$O$1f1&Sd}-;7(3H zpwWVJy7*Jm?X%^qWjqy8)6L!TG&Pf}s>U_GN_BD>&(*4%bDpWmd=aqsBXk(JB)$f0 zohs)ucqU(>>9UvWvKwu;oWQ5aahe*2+=_S%{!SgV$%x!4*PUKG-Ll4=nj8Iq0VG*{ z3h^)r|7P)cz6vFt&vM4`RkByU1HV_uUIfTYaDfE(O7NP8zrwJQFLKB6m5_QXq@>9U zc_wy z;%C7&x56&ze2IW*XlwF3$WBn_!x}oMz!{cJms8~>7^53ePeWUUZHUhtdH!2`e%zbt z!Z_HCX8u;pI&|j=&KZ0)U#PC*OQHKTo;l6Sm&lxNP?vxkEF!0(#6h+ja~sbeROJu( z4EG1>tT_2D=d;j%A^d~G3h2bAVYE7=su*hmsN+9|QQS_*ONNJ$++_Sqg`7DUGkgMb zM59D5z}>nE>&AoQG@b;l(_yVRw9?^?>-b824Mv^LmqH)-0`NMIm*w*q_^-7D(mW1y z;IC(+)o1czy9tSKQtQQJEeZ< zm^>&sW%g1zp1RC_+%12F$z#%we?2I#N;%w9bq<2%Mw z`N*MI2#A;2p%3syVygVwku0i5PzugHys>a?9 zNg-vKYc?iqOgc`}K}PIXPpL)D3TM8nh^XH=-UI41l^ySqV(s+=diR|J0L@X^J3FNg zt&>3Sy-TK;r?Pi_5zko$9toUf z;el1P438O{W#fURox^bvAhQB~K^_%eTL1vZ8?K1cRF#$UxoVF(LLOVe z7pQwsb-J0K&$chKXWR4bTO5Oq5lQ#5dOlN~t!AlR_8$9D`)T`#v{ky`v8tHAnwLeFNZ1#8tdY<>YyXmd6eKGbQl0U zNn_o7i<+&?jJZJYonT`Fb1a7t$6Jxe&35u4^&qY6oqR6Q?BWC&Av5m8;Rg^nIqwG~ zS!TQNCDNS)+XL4>1sE1d4?m_VoLKGQGwlj?_%W%M7uoxWu9p*VL`vms4~}4f^zmN4 z06JiO^zxIAQ;xX=-HQNG0O%Yq>*Lw>KKmZ6SDWqdJ5D$gi1l9N)ZbznRr*owawy0Q z#-x6ZFW#g6{hTO9qGBa+DHo0A0E;iTz%9pE_wjnd?1M4;fJv9x z0N?2t#ZEdV4e|xfF2WAN(AR)n$k{$FLh&H)l6FZxxm4aI_bNk*L&aqkErvnF^ji6V zTy8IbZr2>yP9G-vR!BO)_Y$uIe2{0u5e>PwVHq@~l?Fwat#!T(O%FW6J?)hcb;D2BY;%SQMf7;AxJpW^@w zdJ1w@#Id718`OL3XYH5l<=S+|QKv)9(kKt9qsU~&q!WCXnnSa60@6a5O)T_Lj_a#w z@@YuF!V9D}sa@)k4oHfe=*DH5%Fg0+oFn~=27Lhs<`gMI+9GvGdl1?Oq(Ny^;!ZZk zi(>pSefnPgX_`A~j?zwHllJJ-y`!}56scEFL{*cSL+XveR}!gmEXL}`?HRTQm$Xd6 zw-2fEbd0_oFl-gEQnu7hu$iz&2rw+bM5$iy#Mv6q6ltc^4>@>|Y^HQl7nUULvcM`^ z>XJg3xjmS>=|nsmithw*oD*MU)fHpY%k*RJZ4FR%fm9H4ie_wqG*|M0WSYw6N+;a0 z-fc}lXGpa%mk6B!%5tC)i55s>1jz!j4G`=_8IsFgMsk)xd_Gjgev~Ekx<;iLDqAL9 zi|GXHR+VK-S7Pc>O-9I)aFfSb0UijErFbAjmf?XASuUNXa8@hr#f2Gm-z}02vAW28 zT9VzYO-gakc4xb5-CNvkZhWf^q7Ejl0$5dM?U*}!B@QADCMh2<7`y}XG(_5U!z{6` z(-e2Rq)~!|q;6?0APB+O4GFRnhU)?Z(KsZ<5~p3#PN@eF1m>O6Nuue2Y4ZU=jNT;` z5zQVrO(LXC(^wBCqu1qfXA`^^Q=kAI?__(VEY}uS$aT#1EICQ9l;L*p@1fQwEpwL> zai0L5rYPSl4UnLIY&U0N0|b2RJ47=8zw3u+M6`aX)ZI%|`{0SAph5&2faPG^LFo+^ zhgB-|#GH&#bQ{DDxkg=z=QIVd15!3rLWCLubsA^Gc+BB!1dn+#J1ULo%f!N=8ZIkk zc1%(rG98NrB!~_t@W8@8iAN@9r|?+9*=gyLgs-7dZNkIyuhktSe02c{BpSs?^)`VhvgG8mYloYy-f68nYy*9P0przEl6^#iVr&& ztCzO`mP+e=i#%J&SL&5+CFGdxYNy7G4Do1#MA!ss_T2@GOF%E{#H&Eq?mGr zRqdrIcAj#MIkym%CpF`XzF~+){Qy*Mw<;Z0rAv_E)!4!l z7#7HmVO$}rvWpC7pY#0n9;%#{_YmT&d_nG`HeUC;F?%m5aZR=c#pR!E7q}d!U$2H>mdF-MjW(YlO3b+m_ zCzVTRC`RLyas>^Cg0sMga!eTo_LSm-*N#ae$_2GlQ*go?la47i`xg3sYX~<)_aJ+U zh>ukuBN0i{bgDSi3^kGXJCH&xQ*+dr*mls!R(<#;c~oOTkfqMHs@d3~QnA}7g1E~W zaw@_}s5PWI>>+25(}9RMCd~wPfr3$8kupe5ky@cYFtolc4}lGu#HI$`(6@o_y-SP?0&qNcT#- zW71rEj@IL#nC5rZI|rPx*vbg1;7SL3CMeTs0NM5t?Syt(+b5VM+<$$LR47O0(_=qi zRJ$=XLnNZyzD2vrko^SdJs^_v3-*&%gR-Af z3f=*`Phid>b-H9fP1r&ENs&pNH5#WxqI8Lv@+-vCrn$6hR%MLTQ#1!)3Vqq-Vw(o{ zfro1;n#-!hQe`F}!m$=06YN7SXhSYo;B1T88M7}Yk@_CK`~SK=lSmh6+4x%@W@R>V z2$ls%j`jdqFGpKM^PHo#;fS%t+2*vxB*rYD{=--+(7!-rfE`+v3Ud{qQGtZ8Lt93C zO0_L$V09ww*81AL~l)|o^62eBx@BcvVB>K*w6326l? z_Oe~t9`M<#4QPXiihf5C#tGn{HliIxDoRs(NxPzr;p?NxeYH*WIITTMkF&^Bmm+Rl z(Plc1InfiEQA~<;Om`$YW+KM=9a|h#MCx)>(<9cgnI6*}578shQAdxNjs|+9I5Nqh zGVm?hv-PvCGE&mBb%(H*)^QSc3PEP zgu3SFA+y??vCiqvJ&|g!3hz{$iI{*C=WMK@UcpdtzV|p54=t*G0Z4K76Td{Q%Q-+( zzRcNyIN0Y*iP=ZYmN|DhXT}T?Nw#yZ^MFyg;2a{^+0H&{`!K~>Vr}}I!}M1Z3Y^EB zC$QJwTbY#dO8sTc3@Jiz@Aa#8RaLl|-tzl6zxjQe|gMZ%m3+ znT-q-kRHJ18r40ht|1lo#AK5Qo@0mU`jLsAjkyprT~E=M={`FqbO4~4qM1)U_r+Yp z!KA>bUO~0U4o4Y8MbTY)tUg^Y#g|jD0{~F31w=R;L)+LdT>D^+a-nJkG04a1$Zu6@sZsz)JynWOX(P&F z=4~f{U&n!r06X4;Tvs%(?{bA)4yytZ12Uax>SGeA-Q((Y&9o}B39;<2I!{`a@6#Bw-9Mv%o9{mAKIJ~^-a^E# z5O9u{-5ZHi2szY8f?vj&XYMvqo@MnkkY*}M-@rug=S(9hW zca6_QS%8uy2WS$O!BE+<%yVQ}UWUIak&Tjrk}t2sJBwKXt{V!#vq%mUCT!xR@*=Ga zFYT4%<-1b(+3_-za+G>Q))vTWgRFMQ+5#DEDD5bn@+L29VqJ0)3&}}xm;B&(2xX_d zkl|;K>}0+2%47_sPoAOn$xn(vFyOg^5iWb^SHrAhNHYzE4S4hm>?}SV?#8BNc||*D(DW!7p}Hd1?;Gjwy@OQ_3RkgtEwaT6tDJq0Hsu zr|H)*rJj#pP?~6@my|ShOi9zOC~3}1%I5JaC^nTo;K3BUr`Lgf(}hK-sNQi0iVGzc zU-L3u4J5bIr8TZkz9Q7E%jwzr!siK)}A1_rmX&76XIs<3C z8Cr!}Jzl0hGG1?}vju$Hz_%Uhw5iXGx1(%PyZCsQx@jQ>+pQ+6AvIa+Ro zvg_(jyUusnb$KVKci9uhd+eF|9{XBtkA3TS$R0pDFy3p&OQKDz&mO1lwa01w_Bdys zebM+{lmQa35NE7ZY|^RnpgmPRfWZveS5kn&y|#Q5j7QM~)d{<%p0JmUpR@;>FaxLU zE7Vi=71~+*3g=n-`teitx5iJ~&y0`Rv78s;^@=1_(eRE_ZOyoX604De#ZA}NsWY{8 z+H~#f<1j~VZO69xONlE(c)B}7N_NFaZVhu z#(gOHC_WB$;5MMQ zXnEspDD61<0NkPJYNw`ao!WQDJD^O6z+QPLz`O9~j$PV}@txX|@g5Byl<_vD?a|WJ zJ}n)GwRGnmZT)zk_U-Xr?e{2qWoNHetDrVlL+z|auo!~r1oIHgGd^HQ-KSv^G)#hq RNdWsHEtx?qr{ApN{{bAK@Pz;X literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D10/TBXUtils.dcu b/official/2.1.6+2.1.beta1/Lib/D10/TBXUtils.dcu new file mode 100644 index 0000000000000000000000000000000000000000..7cf6b556d034b1fd339cf91a597998762455042d GIT binary patch literal 64333 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 z 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 literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D10/TBX_MDI.res b/official/2.1.6+2.1.beta1/Lib/D10/TBX_MDI.res new file mode 100644 index 0000000000000000000000000000000000000000..eb371ed713ee654b7c9b3c135c3d99439ec4e492 GIT binary patch literal 712 zcmchRu?@mN3`IYPA|)eGQZhn7LWlyIfCL*bhRckV&5q}Das-KpF4o!p=WqL4k~Vls z;lM9@Ev1@DN=w~z&_j)$_(exub=MiR*NIwFTC=mlj$PF?RkolXx`k^Y~}~ gz@rljCgulzLcbhG25nCjxc~qF literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D10/rmkThemes.dcu b/official/2.1.6+2.1.beta1/Lib/D10/rmkThemes.dcu new file mode 100644 index 0000000000000000000000000000000000000000..205de5d82e773a0ff2f252c92b8bea0dcd79c463 GIT binary patch literal 13522 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 NBs;>MV(cih{sp^v0b&3E literal 0 HcmV?d00001 diff --git a/official/2.1.6+2.1.beta1/Lib/D10/tbx_d10.bpl b/official/2.1.6+2.1.beta1/Lib/D10/tbx_d10.bpl new file mode 100644 index 0000000000000000000000000000000000000000..2ec6b59c183917defa1f04f8a1d71bb1deb99f91 GIT binary patch literal 446976 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